function e(e){null!=e&&(location.hash="",location.hash=e)}function t(e,...t){"verbose"===ct&&console.log("%c"+e,"background-color: #7fdbff",...t)}function n(e,...t){console.warn("%c"+e,"background-color: #ff851b",...t)}function r(e,...t){console.error("%c"+e,"background-color: #ff4136; color: white",...t)}function o(e){return!e||"object"!=typeof e}async function a(e){if(e){var t="";for(const n of pt(e)){if(!/^__noname_\d+$/.test(n)){if(ft[n])continue;ft[n]=!0}t+=e[n]+" "}if(""!=t.trim()){const e=document.createElement("div");e.innerHTML=t;const n=dt(e.children);await(async e=>{let t=[];for(let o of e){let e=!1;if("script"==o.tagName.toLowerCase()){let n=o,r=document.createElement("script");if(n.src&&(r.src=n.src,e=!0),n.type&&(r.type=n.type),n.text&&(r.text=n.text),o.id&&(r.id=o.id),"module"==r.type&&!r.src){let e=vt.length;r.text+="\n;dotvvm.resourceLoader.notifyModuleLoaded("+e+");";let n=new Promise(((t,n)=>{vt[e]=t}));t.push(n)}o=r}else if("link"==o.tagName.toLowerCase()){var n=o,r=document.createElement("link");n.href&&(r.href=n.href),n.rel&&(r.rel=n.rel),n.type&&(r.type=n.type),o=r}const a=s(o);document.head.appendChild(o),e&&await a,await Promise.all(t)}})(n)}}}function s(e){return new Promise((t=>{e.addEventListener("load",(()=>t())),e.addEventListener("error",(()=>{n("resource-loader","Error loading resource",e),t()}))}))}function i(e){var t=jt[e];if(!t)throw Error(`Cannot find type metadata for '${e}'!`);return t}function l(e){const t=i(e);if("object"!==t.type)throw`Cannot convert object to an enum type ${e}!`;return t}function u(){return pt(jt)}function c(e){jt={...jt,...e}}function d(e,t=!1){const n=e.match("^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(\\.[0-9]{1,7})$");if(n){const e=new Date(parseInt(n[1],10),parseInt(n[2],10)-1,parseInt(n[3],10),parseInt(n[4],10),parseInt(n[5],10),parseInt(n[6],10),n.length>7?parseInt(n[7].substring(1,4),10):0);return t&&e.setMinutes(e.getMinutes()-e.getTimezoneOffset()),e}return null}function p(e){const t=e.match("^(-?)([0-9]+\\.)?([0-9]+):([0-9]{2}):([0-9]{2})(\\.[0-9]{3,7})?$");return t?(t[1]?-1:1)*(36e5*(24*(t[2]?parseInt(t[2],10):0)+parseInt(t[3],10))+6e4*parseInt(t[4],10)+1e3*parseInt(t[5],10)+(t[6]?parseInt(t[6].substring(1,4),10):0)):null}function f(e,t){for(e+="";t>e.length;)e="0"+e;return e}function v(e,t=!0){if(null==e)return null;if("string"==typeof e)return null==d(e)&&n("coercer",`Date ${e} is invalid.`),e;let r=new Date(e.getTime());return t?r.setMinutes(e.getMinutes()+e.getTimezoneOffset()):r=e,`${f(r.getFullYear(),4)}-${f(r.getMonth()+1,2)}-${f(r.getDate(),2)}T${f(r.getHours(),2)}:${f(r.getMinutes(),2)}:${f(r.getSeconds(),2)}.${f(r.getMilliseconds(),3)}0000`}function m(e){let t;if(null===e)return null;if("string"==typeof e){const r=p(e);if(null===r)return n("coercer",`TimeSpan ${e} is invalid.`),null;t=r}else t=e;const r=0>t?"-":"";t=Math.abs(t);const o=t/1e3/3600|0,a=t/1e3/60|0,s=t/1e3|0,i=t%1e3|0,l=f(o%24,2),u=f(a%60,2),c=f(s%60,2),d=0!==i?"."+f(i,3)+"0000":"";return 24>o?`${r}${l}:${u}:${c}${d}`:`${r}${o/24|0}.${l}:${u}:${c}${d}`}function h(e){return Array.isArray(e)?ko.observableArray(e):ko.observable(e)}function y(e){return ko.isObservable(e)&&"removeAll"in e}function b(e,t,n=!1){if(ko.isObservable(e))throw Error("Parameter viewModel should not be an observable. Maybe you forget to invoke the observable you are passing as a viewModel parameter.");return ko.isObservable(t)&&"setState"in t?(t.setState(F(e)),t[Vt](t.state),t):o(e)?((e,t)=>ko.isObservable(t)?(t(e),t):e)(e,t):e instanceof Date?((e,t)=>(e=v(e),ko.isObservable(t)?(t(e),t):e))(e,t):e instanceof Array?((e,t,n=!1)=>(y(t)&&null!=t()&&t().length===e.length?((e,t,n)=>{const r=t();for(let t=0;e.length>t;t++){const o=ko.unwrap(r[t]),a=b(ko.unwrap(e[t]),o,n);o!==a&&(ko.isObservable(r[t])?r[t]()!==a&&(r[t]=w(r[t]),r[t](a)):r[t]=h(a))}})(e,t,n):t=((e,t,n)=>{const r=[];for(let t=0;e.length>t;t++)r.push(h(b(ko.unwrap(e[t]),{},n)));return ko.isObservable(t)?(t=w(t))(r):t=r,t})(e,t,n),t))(e,t,n):((e,t,n)=>{let r,a=ko.unwrap(t),s=ko.unwrap(e.$type);!s&&a&&(s=ko.unwrap(a.$type)),o(a)&&(a={}),s&&(r=l(s),ko.isObservable(a.$type)?a.$type(s):a.$type=ko.observable(s));for(const t of pt(e)){if(k(t))continue;void 0===a[t]&&(a[t]=ko.observable());const o=e[t];if(void 0===o)continue;if(!ko.isObservable(o)&&"function"==typeof o)continue;const s=null==r?void 0:r.properties[t];!n&&s&&"no"==s.update||g(o,a,t,n,s)}return ko.isObservable(t)?a!==t()&&t(a):t=a,t})(e,t,n)}function g(e,t,n,r,o){const a=b(ko.unwrap(e),t[n],r);if(ko.isObservable(a)?a()!==t[n]()&&(t[n]=w(t[n]),t[n](a())):t[n]=h(a),o&&o.clientExtenders&&ko.isObservable(t[n]))for(let e=0;o.clientExtenders.length>e;e++){const r={},a=o.clientExtenders[e];r[a.name]=a.parameter,t[n].extend(r)}}function w(e){if(!ko.isObservable(e))throw Error("Trying to extend a non-observable to an observable array.");return y(e)||(ko.utils.extend(e,ko.observableArray.fn),e=e.extend({trackArrayChanges:!0})),e}function k(e){return"$type"==e}function C(){const e=window.dotvvm_Globalize;if(!e)throw Error("Resource 'globalize' is not included (symbol 'dotvvm_Globalize' could not be found).\nIt is usually included automatically when needed, but sometime it's not possible, so you will have to include it in your page using '<dot:RequiredResource Name=\"globalize\" />'");return e}function $(e,...t){return e.replace(/\{([1-9]?[0-9]+)(:[^}]+)?\}/g,((e,n,r)=>{const o=t[parseInt(n,10)];return r?O(r=r.substring(1),o):o}))}function O(e,t){if(null==(t=ko.unwrap(t))||""===t)return"";if("string"==typeof t&&null==(t=d(t)))throw Error(`Could not parse ${t} as a date`);return e||(e="G"),C().format(t,e,X())}function E(e){return C().parseFloat(e,10,X())}function S(e,t,n){return C().parseDate(e,t,X(),n)}function x(e,t,n){let r=!1;if("string"==typeof e){if(""===e)return;if(isNaN(e=+e))return;r=!0}else if("number"!=typeof e)return;if(Math.trunc(e)!==e&&(e=Math.trunc(e),r=!0),!isNaN(e)&&e>=t&&n>=e)return{value:e,wasCoerced:r}}function M(e){let t=!1;if("string"==typeof e){if(isNaN(e=+e))return;t=!0}else if("number"!=typeof e)return;if(!isNaN(e))return{value:e,wasCoerced:t}}function A(e,t,n){const r=(()=>{var r,o;if(n===e&&void 0!==e)return{value:e};if(e&&(t=null!==(r=e.$type)&&void 0!==r?r:t),Array.isArray(t))return T(e,t[0],n);if("object"==typeof t){if("nullable"===t.type)return((e,t,n)=>null===e?{value:null}:void 0===e||""===e?{value:null,wasCoerced:!0}:A(e,t,n))(e,t.inner,n);if("dynamic"===t.type)return j(e,n)}else if("string"==typeof t){if(t in Rt)return((e,t)=>Rt[t].tryCoerce(e)||ut.generic(e,t))(e,t);if((o=i(t))&&"object"===o.type)return P(e,t,o,n);if(o&&"enum"===o.type)return((e,t)=>{let n=!1;if("string"==typeof e&&""!==e){const t=+e;isNaN(t)||(e=t,n=!0)}if("string"==typeof e){if(t.isFlags){const r=e.split(","),o=[];let a=!1;for(let e=0;r.length>e;e++){const s=r[e].trim();if(s.length!==r[e].length&&(n=!0,r[e]=s),!(r[e]in t.values))return new ut(`Cannot cast '${r[e]}' to type 'Enum(${pt(t.values).join(",")})'.`);o.includes(r[e])||(o.length&&t.values[o[o.length-1]]>t.values[r[e]]&&(a=!0),0===t.values[r[e]]&&r.length>1?n=!0:o.push(r[e]))}return a&&(o.sort(((e,n)=>t.values[e]-t.values[n])),n=!0),n?{value:e=o.join(","),wasCoerced:n}:{value:e}}if(e in t.values)return{value:e}}if("number"==typeof e){if(t.isFlags){if(!e){const r=pt(t.values).filter((e=>0===t.values[e]));return r.length?{value:r[0],wasCoerced:!0}:{value:e,wasCoerced:n}}{let n=0|e,r="";for(const e of pt(t.values).reverse())0!==t.values[e]&&(n&t.values[e])===t.values[e]&&(n-=t.values[e],""!==r&&(r=","+r),r=e+r);if(!n)return{value:r,wasCoerced:!0}}}else{const n=pt(t.values).filter((n=>t.values[n]===e));if(n.length)return{value:n[0],wasCoerced:!0}}return{value:0|e,wasCoerced:n}}return new ut(`Cannot cast '${e}' to type 'Enum(${pt(t.values).join(",")})'.`)})(e,o)}return new ut(`Unsupported type metadata ${JSON.stringify(t)}!`)})();return r instanceof ut?r:Object.freeze(r)}function I(e,t,n){const r=A(e,t,n);if(r.isError)throw r;return r.value}function T(e,t,n){if(null===e)return{value:null};if(void 0===e)return{value:null,wasCoerced:!0};if(Array.isArray(e)){n=Array.isArray(n)?n:[];let r=!1;const o=[];for(let a=0;e.length>a;a++){const s=R("#"+a,(()=>A(e[a],t,n[a])));if(s.isError)return s;s.wasCoerced&&(r=!0),o.push(s.value)}return r?{value:o,wasCoerced:!0}:{value:e}}return new ut(`Value '${JSON.stringify(e)}' is not an array of type '${JSON.stringify(t)}'.`)}function P(e,t,n,r){if(null===e)return{value:null};if(void 0===e)return{value:null,wasCoerced:!0};if("object"==typeof e){r&&r.$type===t||(r={});let o=!1,a={};for(let t of pt(n.properties)){if("$type"===t)continue;const s=R(t,(()=>A(e[t],n.properties[t].type,r[t])));if(s.isError)return s;s.wasCoerced&&(o=!0,a[t]=s.value)}return"$type"in e||(a.$type=t,o=!0),o?{value:{...e,...a},wasCoerced:!0}:{value:e}}return new ut(`Value ${e} was expected to be object`)}function j(e,t){if(void 0===e)return{value:null,wasCoerced:!0};if(Array.isArray(e))return T(e,{type:"dynamic"},t);if(e instanceof Date)e=v(e,!1);else if(e&&"object"==typeof e){let n=e.$type;if("string"==typeof n)return P(e,n,l(n),t);let r=!1,o={};for(let n of pt(e)){const a=R(n,(()=>j(e[n],t&&t[n])));if(a.isError)return a;a.wasCoerced&&(r=!0,o[n]=a.value)}if(r)return{value:{...e,...o},wasCoerced:!0}}return{value:e}}function R(e,t){const n=t();return n.isError&&n.prependPathFragment(e),n}function D(e,t={}){for(const n of pt(e.updatedControls)){const e=it(n);if(e){const r=ko.contextFor(e),o=e.nextSibling,a=e.parentNode;ko.removeNode(e),t[n]={control:e,nextSibling:o,parent:a,dataContext:r}}}return t}function N(e){e.viewModelCacheId?W(e.viewModelCacheId,e.viewModel):J();const n=D(e);var r;r=e.viewModel,G().setState(r),D(e,n),G().doUpdateNow(),((e,n)=>{for(const r of pt(e.updatedControls)){const o=n[r];if(o){const a=document.createElement(n[r].parent.tagName||"div");if(a.innerHTML=e.updatedControls[r],a.childElementCount>1)throw Error("Postback.Update control can not render more than one element");const s=a.firstElementChild;if(null==s.id)throw Error("Postback.Update control always has to render id attribute.");s.id!==n[r].control.id&&t("postback",`Postback.Update control changed id from '${n[r].control.id}' to '${s.id}'`),a.removeChild(s),o.nextSibling?o.parent.insertBefore(s,o.nextSibling):o.parent.appendChild(s),Promise.resolve().then((()=>ko.applyBindings(o.dataContext,s)))}}})(e,n)}function V(e,t){if(e instanceof Array&&t instanceof Array)return t.map(((t,n)=>V(e[n],t)));if(e instanceof Array||t instanceof Array)return t;if("object"==typeof e&&"object"==typeof t&&e&&t){e={...e};for(const n of pt(t))e[n]=V(e[n],t[n]);return e}return t}function U(e,t){if(e instanceof Array&&t instanceof Array){const n=t.map(((t,n)=>U(e[n],t)));return e.length===t.length&&n.every(((n,r)=>n===Dt||e[r]===t[r]))?Dt:n}if(e instanceof Array||t instanceof Array)return t;if("object"==typeof e&&"object"==typeof t&&e&&t){let n=Dt;for(const r in t){const o=U(e[r],t[r]);o!==Dt&&e[r]!==t[r]?(n===Dt&&(n={}),n[r]=o):"$"===r[0]&&(n==Dt&&(n={}),n[r]=t[r])}return n}return e===t?"object"==typeof e?Dt:e:t}function F(e){if(o(e=ko.unwrap(e)))return e;if(e instanceof Date)return e;if(e instanceof Array)return e.map(F);const t={};for(const n of pt(e)){const r=ko.unwrap(e[n]);"function"!=typeof r&&(t[n]=F(r))}return t}function H(e,t,r){function a(e){if(u)return{newValue:e,notifySubscribers:!1};d=!0;try{const n=this[Ut];this[Ut]=void 0;const o=F(e),a=c[Nt],s=I(o,t||{type:"dynamic"},a);return r((e=>s)),{newValue:i(s,a,!0).newContents,notifySubscribers:n}}catch(t){throw this[Ut]=t,(e=>{e.valueHasMutated&&e.valueHasMutated()})(this),n("state-manager",`Can not update observable to ${e}:`,t),t}}function s(e){const t=c[Nt];if(e===t)return;const n=d;d=!1,c[Ut]=void 0,c[Nt]=e;const r=i(e,t,n);if(r&&"newContents"in r)try{u=!0,c(r.newContents)}finally{u=!1}}function i(e,a,s){let i;const u=c.peek();if(o(e)||e instanceof Date)i=e;else if(e instanceof Array){w(c);const o=!s&&u instanceof Array&&u.length==e.length;if(o)i=u;else{i=u instanceof Array?u.slice(0,e.length):[];for(let o=0;e.length>o;o++){if(i[o]&&i[o][Vt])continue;i[o]&&n("state-manager","Replacing old knockout observable with a new one, just because it is not created by DotVVM. Please do not assign objects into the knockout tree directly. The object is ",F(i[o]));const a=o;i[o]=H(e[o],Array.isArray(t)?t[0]:void 0,(e=>r((t=>{if(null==t||a>=t.length)return t;const n=e(t[a]),r=dt(t);return r[a]=n,Object.freeze(r)}))))}}for(let t=0;i.length>t;t++)i[t][Vt](e[t]);if(o)return}else{if(!s&&u&&u[Vt]&&a.$type&&a.$type===e.$type)return void u[Vt](e);i=((e,t,n)=>{const r=e.$type||t;let o;!r||r.hasOwnProperty("type")&&"dynamic"===r.type||(o=l(r));const a=new Set;o&&pt(o.properties).forEach((e=>a.add(e)));const s=pt(e).filter((e=>!a.has(e)));return new zt(e,n,r,o,s)})(e,t,r)}return{newContents:i}}let u=!1;const c=e instanceof Array?ko.observableArray([],a):ko.observable(null,a);let d=!1;return c[Vt]=s,s(e),Object.defineProperty(c,"state",{get(){let e;return r((t=>(e=t,t))),e},configurable:!1}),Object.defineProperty(c,"patchState",{get:()=>e=>{r((t=>V(t,e)))},configurable:!1}),Object.defineProperty(c,"setState",{get:()=>e=>{r((t=>e))},configurable:!1}),Object.defineProperty(c,"updater",{get:()=>r,configurable:!1}),c}function _(){if(!Wt)throw Error("DotVVM is not initialized.");return Wt}function B(){return _().u}function L(){return _().v.stateObservable}function z(){return _().p}function q(){return G().state}function W(e,t){_().m=e,_().u=t}function J(){delete _().m,delete _().u}function X(){return _().h}function G(){return _().v}function K(e){return e.length>0&&"/"!=e.substring(0,1)?"/"+e:e}async function Z(e,t,n,r){const o=new Headers;return o.append("Content-Type","application/json"),o.append("X-DotVVM-PostBack","true"),((e,t)=>{if(t)for(const n of pt(t))e.append(n,t[n])})(o,r),await(async(e,t)=>{let n;try{n=await fetch(e,t)}catch(e){throw new lt({type:"network",err:e})}const r=n.status>=400,o=n.headers.get("content-type")&&n.headers.get("content-type").match(/^application\/json/);if(r||!o)throw new lt({type:"serverError",status:n.status,responseObject:o?await n.json():null,response:n});return{result:await n.json(),response:n}})(e,{body:t,headers:o,method:"POST",signal:n})}async function Y(e){const t=q();let r=t.$csrfToken;if(null==r){let a;try{const t=K(((o=_().g||"").length>0&&"/"==o.substring(o.length-1)&&(o=o.substring(0,o.length-1)),o+K("___dotvvm-create-csrf-token___")));a=await fetch(t,{signal:e})}catch(e){throw n("postback","CSRF token fetch failed."),new lt({type:"network",err:e})}if(200!=a.status)throw n("postback","CSRF token fetch failed. HTTP status: "+a.statusText),new lt({type:"csrfToken"});r=await a.text(),G().setState({...t,$csrfToken:r})}var o;return r}async function Q(e,n=0,r=(()=>{})){var o;try{return await e()}catch(a){if(a instanceof lt&&"serverError"===a.reason.type&&"invalidCsrfToken"===(null===(o=a.reason.responseObject)||void 0===o?void 0:o.action)&&(t("postback","Resending postback due to invalid CSRF token."),G().update((e=>({...e,$csrfToken:void 0}))),3>n))return await Q(e,n+1);throw r(),a}}async function ee(e,t,n,r=!1){null!=t.replace&&(r=t.replace||r);const o=t.url,a={...e,url:o,replace:r,serverResponseObject:t,response:n};return kt.trigger(a),await((e,t,n)=>t?(location.replace(e),Promise.resolve()):((e=>{Xt||(Xt=document.createElement("a"),Xt.style.display="none",document.body.appendChild(Xt)),Xt.href=e,Xt.click()})(e),Promise.resolve()))(o,r),a}function te(){return++We}function ne(e){return-1>=e}function re(e,t){let n;return n=e&&e.$data?Function("$context","with($context) { with ($data) { return "+t+"; } }")(e):Function("$context","var $data=$context; with($context) { return "+t+"; }")(e),n&&n.$data&&(n=n.$data),n}function oe(e,t,n){const o=ae(e);y(o)?o[t].apply(o,n):r("evaluator",`Cannot execute '${t}' function on ko.computed because the expression '${e}' does not return an observable array.`)}function ae(e){return Gt(e())}function se(e){return null==e||"string"==typeof e&&""===e.trim()}function ie(e){return e.dotvvmMetadata}function le(){for(;Zt.length>0;)Zt[Zt.length-1].detach()}function ue(e="default"){return en[e]||(en[e]={queue:[],noRunning:0}),en[e]}function ce(e,t={}){return de(F(e),{...t})}function de(e,t={}){if(t.pathOnly&&t.path&&0===t.path.length&&(t.pathOnly=!1),o(e))return null!=e?e:null;if("function"==typeof e)return null;if(o(e))return null!=e?e:null;if(e instanceof Array){if(t.pathOnly&&t.path){const n=parseInt(t.path.pop(),10),r=Array(n+1);return r[n]=de(e[n],t),t.path.push(""+n),r}return e.map((e=>de(e,t)))}if(e instanceof Date)return t.restApiTarget?e:v(e);const n=t.path&&t.path.pop(),r=ko.unwrap(e.$type);let a;r&&(a=l(r));const s={};for(const r of pt(e)){const o=e[r];if(t.pathOnly&&r!==n)continue;if(t.ignoreSpecialProperties&&"$"===r[0])continue;if(!t.serializeAll&&"$validationErrors"===r)continue;if("function"==typeof o)continue;const i=null==a?void 0:a.properties[r];if(!t.serializeAll&&i&&"no"==i.post);else if(!t.serializeAll&&i&&"pathOnly"==i.post&&t.pathMatcher){let e=t.path||pe(o,t.pathMatcher);e&&(s[r]=de(o,0===e.length?t:{ignoreSpecialProperties:t.ignoreSpecialProperties,serializeAll:t.serializeAll,path:e,pathOnly:!0}))}else s[r]=de(o,t)}return n&&t.path&&t.path.push(n),s}function pe(e,t){if(t(e))return[];if(!o(e))for(const n of pt(e)){const r=pe(e[n],t);if(r)return r.push(n),r}return null}function fe(e){if(e.abortSignal&&e.abortSignal.aborted)throw new lt({type:"abort",options:e})}async function ve(t,n,r,o,s,i){tn=t.postbackId;const l={...t,cancel:!1};if(bt.trigger(l),l.cancel)throw new lt({type:"event"});return await Q((async()=>{await Y(t.abortSignal),((e,t)=>{for(let n=t.length-1;n>=0;n--)t[n].indexOf("[$index]")>=0&&(t[n]=t[n].replace("[$index]",`[${e.$index()}]`)),t[n].indexOf("[$indexPath]")>=0&&(t[n]=t[n].replace("[$indexPath]",`[${e.$indexPath.map((e=>e())).join("]/[")}]`)),e=e.$parentContext})(s,n);const l=de(q(),{pathMatcher:e=>s&&e==s.$data[Nt]}),d={currentPath:n,command:r,controlUniqueId:o,validationTargetPath:t.validationTargetPath,renderedResources:pt(ft),commandArgs:i,knownTypeMetadata:u()};B()?(d.viewModelDiff=U(B(),l),d.viewModelCacheId=_().m):d.viewModel=l;const p=z();let f=await Z(p,JSON.stringify(d),t.abortSignal);return"viewModelNotCached"==f.result.action&&(J(),delete d.viewModelCacheId,delete d.viewModelCache,d.viewModel=l,f=await Z(p,JSON.stringify(d),t.abortSignal)),Ot.trigger({...t,response:f.response,serverResponseObject:f.result}),async()=>{try{return await(async(t,n,r,o,s,i)=>{if(Et.trigger({...t,response:i,serverResponseObject:s}),((e,t)=>{!e.viewModel&&e.viewModelDiff&&(e.viewModel=V(t,e.viewModelDiff))})(s,r),await a(s.resources),ne(t.postbackId))throw"Postbacks are disabled";fe(t);let l=!1;if("successfulCommand"==s.action)c(s.typeMetadata),s.viewModel=V(q(),s.viewModel),N(s),St.trigger({...t,response:i,serverResponseObject:s}),l=!0;else{if("redirect"==s.action)return await ee(t,s,i),{...t,response:i,serverResponseObject:s,commandResult:s.commandResult,wasInterrupted:!1};if("validationErrors"==s.action)throw((e,t,n,r)=>{Ce(r,(()=>{le();const r=re(e,t);if(r)for(const e of n.modelState){const t=e.propertyPath,n=t?re(ko.unwrap(r),t):r;Yt.attach(e.errorMessage,n)}}))})(n,t.validationTargetPath,s,t),new lt({type:"validation",response:i,responseObject:s})}if(e(s.resultIdFragment),l)return{...t,response:i,serverResponseObject:s,commandResult:s.commandResult,wasInterrupted:!1};throw new lt({type:"serverError",response:i,responseObject:s})})(t,s,l,0,f.result,f.response)}catch(e){if(e instanceof lt)throw e;throw new lt({type:"commit",args:{...t,serverResponseObject:f.result,response:f.response,handled:!1,error:e}})}}}))}function me(e,t,n){(e=>{ue(e).noRunning++,Qt(Qt()+1)})(n);const r=async()=>{await Promise.resolve(),(e=>{ue(e).noRunning--,Qt(Qt()-1)})(n),(e=>{const t=ue(e);if(t.queue.length>0){const e=t.queue.shift();Promise.resolve().then(e)}})(n)};return e.then((e=>async()=>{try{if((e=>{const t=e.postbackId;return("staticCommand"==e.commandType||tn==t)&&!ne(t)})(t))return await e();throw new lt({type:"commit"})}finally{r()}}),(e=>(r(),Promise.reject(e))))}function he(e){return{name:"timeout",before:["setIsPostbackRunning"],execute:async(t,n)=>(await new Promise(((t,n)=>window.setTimeout(t,e))),await t())}}function ye(e){if(ko.isObservable(e)&&(e=ko.unwrap(e)),!e||"object"!=typeof e)return;const t=ko.unwrap(e.$type);let n;t&&(n=l(t));for(const t of pt(e)){if("$"==t[0])continue;const r=e[t];if(!ko.isObservable(r))continue;const o=r(),a=null==n?void 0:n.properties[t];(null==a?void 0:a.validationRules)&&ge(e,r,o,a.validationRules),be(0,r,o,(null==a?void 0:a.type)||{type:"dynamic"})}}function be(e,t,n,r){const o=t[Ut];if(o&&o.isError&&Yt.attach(o.message,t),Array.isArray(r)){if(!n)return;let e=0;for(const t of n)be(0,t,ko.unwrap(t),r[0]),e++}else if("string"==typeof r)r in Rt||ye(n);else if("object"==typeof r&&"dynamic"===r.type)if(Array.isArray(n)){let e=0;for(const t of n)be(0,t,ko.unwrap(t),{type:"dynamic"}),e++}else if(n&&"object"==typeof n)if(n.$type)ye(n);else for(const e of pt(n))be(0,ko.unwrap(n[e]),n[e],{type:"dynamic"})}function ge(e,t,n,r){for(const o of r)Kt[o.ruleName].isValid(n,{valueToValidate:n,parentViewModel:e,parameters:o.parameters},t)||Yt.attach(o.errorMessage,t)}function we(e,t,n,r=!0){if(!e)return[];let a=[];if(n&&ko.isObservable(e)&&"validationErrors"in e&&(a=a.concat(e.validationErrors)),!r)return a;const s=ko.unwrap(e);if(o(s))return a;if(Array.isArray(s)){for(const e of s)a=a.concat(we(e,t,!0,t));return a}for(const e of pt(s)){if("$"==e[0])continue;const n=s[e];ko.isObservable(n)&&(a=a.concat(we(n,t,!0,t)))}return a}function ke(e,t,n){var r;const o=(r=Gt(r=t),ko.isObservable(r)&&r.validationErrors||[]).map((e=>e.errorMessage));for(const t of pt(n))pn[t](e,o,n[t])}function Ce(e,t){const n=Zt.length;t(),0==n&&0==Zt.length||fn.trigger({...e,allErrors:Zt})}function $e(e,t){const n=(e,t)=>!1===t.enabled?null:(e=>{const t=cn[e];if(t)return t;throw Error(`Could not find postback handler of name '${e}'.`)})(e)(t);return t.map((t=>{if("string"==typeof t)return n(t,{});if((r=t)&&"function"==typeof r.execute)return t;if(t instanceof Array){const[r,o]=t;return n(r,"function"==typeof o?o(e,e.$data):o)}return n(t.name,t.options&&t.options(e));var r})).filter((e=>null!=e))}function Oe(e,t,n){Ct.trigger(t);let r=!1;const o=(e=>{const t=(()=>{const t={};for(const n of e)null!=n.name&&(t[n.name]=n);return e=>"string"==typeof e?t[e]:e})(),n=e.map(((e,n)=>(e.k=n,{handler:e,deps:(e.after||[]).map(t)})));for(const r of e)if(r.before)for(const e of r.before.map(t))e&&n[e.k].deps.push(r);const r=[],o=new Uint8Array(n.length),a=e=>{switch(o[e]){case 0:break;case 1:throw Error("Cyclic PostbackHandler dependency found.");case 2:return;default:throw Error("")}if(1==o[e])return;o[e]=1;const{handler:t,deps:s}=n[e];for(const e of s)a(e.k);o[e]=2,r.push(t)};for(let e=0;n.length>e;e++)a(e);return r})(n);return function n(a){if(ne(t.postbackId))throw new lt({type:"gate"});return fe(t),a==o.length?(n=>{if(r)throw Error("The same postback can't run twice.");return r=!0,$t.trigger(t),e(n)})(t):o[a].execute((()=>n(a+1)),t)}(0)}function Ee(e){return["network","serverError"].includes(e.reason.type)}function Se(e){return e.reason?"commit"==e.reason.type&&e.reason.args?e.reason.args.serverResponseObject:"network"==e.reason.type?e.reason.err:"serverError"==e.reason.type?e.reason.responseObject:null:null}function xe(e,t){return!ko.isObservable(e[t])&&"function"==typeof e[t]}function Me(e,t=null){const r=ko.pureComputed({read:()=>ko.unwrap(e()),write(r){const o=e();ko.isObservable(o)?o(r):n("binding-handler","Attempted to write to readonly property"+(t?" "+t:"")+".")}});return r.wrappedProperty=e,Object.defineProperty(r,"state",{get(){var t;const n=e()||{};return null!==(t=n.state)&&void 0!==t?t:F(n)},configurable:!1,enumerable:!1}),r}function Ae(e){return e instanceof HTMLTableElement?e:Ae(e.parentElement)}function Ie(e,t){if(null==e)throw Error("Parameter name has to have a value");if(null==t)throw Error("Parameter moduleObject has to have a value");bn[e]||(bn[e]=new wn(e,t))}function Te(e,t,n){if(null==n)throw Error("rootElement has to have a value");const r=Re(e);if(((e,t,n)=>{ko.utils.domNodeDisposal.addDisposeCallback(n,(function r(){((e,t,n)=>{const r=((e,t)=>{const n=je(e,t);if(!n)throw Error("Module "+t+"has not been initialized for view "+e+", or the view has been disposed");return n})(e,t),o=r.elements.indexOf(n);if(0>o)throw Error(`Cannot dispose module on a root element ${e}. It has already been disposed.`);r.elements.splice(o,1),r.elements.length||(((e,t,...n)=>{e&&"function"==typeof e[t]&&e[t](...n)})(r.module,"$dispose",r),"string"!=typeof e)||delete Re(t).contexts[e]})(e,t,n),ko.utils.domNodeDisposal.removeDisposeCallback(n,r)}))})(t,e,n),"string"==typeof t&&r.contexts[t]){const e=r.contexts[t];return e.elements.push(n),e}if(!("default"in r.module)||"function"!=typeof r.module.default)throw Error(`The module ${e} referenced in the @js directive must have a default export that is a function.`);const o=ko.contextFor(n),a=new kn(e,[n],o&&o.$control?{...o.$control}:{}),s=((e,...t)=>e(...t))(r.module.default,a);return a.module=s,Object.freeze(a),"string"==typeof t&&(r.contexts[t]=a),a}function Pe(e,t,n,r){for(const r of pt(bn)){const o=je(e,r);o&&o.registerNamedCommand(t,n)}((e,t,n)=>{ko.utils.domNodeDisposal.addDisposeCallback(n,(function r(){((e,t)=>{for(const r of pt(bn)){var n=je(e,r);n&&n.unregisterNamedCommand(t)}})(e,t),ko.utils.domNodeDisposal.removeDisposeCallback(n,r)}))})(e,t,r)}function je(e,t){if("string"==typeof e)return Re(t).contexts[e];{let n=e[gn];if(n)return n[t];{let n=ko.contextFor(e);for(;n&&!("$viewModules"in n);)n=n.$parentContext;return n.$viewModules&&n.$viewModules[t]}}}function Re(e){if(null==e)throw Error("name has to have a value");const t=bn[e];if(!t)throw Error("Could not find module "+e+". Module is not registered, or has been disposed.");return t}function De(e){e in $n?$n[e].notifySubscribers():$n[e]=ko.observable(0)}function Ne(e){return $n[e]||($n[e]=ko.observable(0))}function Ve(e){let t=i(e);if("enum"!==t.type)throw Error("Expected enum, but received object");return t}function Ue(e,t,n){return!e||2>e.length?e:e.map(((e,t)=>({item:e,index:t}))).sort(((e,r)=>n(ko.unwrap(t(e.item)),ko.unwrap(t(r.item)))||e.index-r.index)).map((({item:e})=>e))}function Fe(e,t){let n=null!==e?i(e):null;if(null!==n&&"enum"===n.type){let e=n;return(n,r)=>En("number"==typeof n?n:e.values[n],"number"==typeof r?r:e.values[r],t)}return(e,n)=>En(e,n,t)}function He(e,t){for(let n=0;e.length>n;n++){let r=ko.unwrap(e[n]);if(ko.unwrap(r.Key)==t)return n}return null}function _e(e,t,n){return n.endsWith("IgnoreCase")?{haystack:e.toUpperCase(),needle:t.toUpperCase()}:{haystack:e,needle:t}}var Be,Le,ze,qe,We,Je,Xe,Ge,Ke,Ze,Ye,Qe,et,tt,nt,rt,ot,at,st;const it=e=>document.querySelector(`[data-dotvvm-id='${e}']`);class lt{constructor(e){this.reason=e}toString(){return"PostbackRejectionError("+JSON.stringify(this.reason,null,"   ")+")"}}class ut{constructor(e,t=""){this.message=e,this.path=t,this.isError=!0,this.wasCoerced=!1}get value(){throw this}static generic(e,t){return new ut(`Cannot coerce '${e}' to type '${t}'.`)}prependPathFragment(e){this.path=e+(this.path?"/":"")+this.path}}const ct=(Be=window.localStorage.getItem("dotvvm-loglevel"))?"normal"===Be||"verbose"===Be?Be:(n("log","Invalid value of 'dotvvm-loglevel' config value! Supported values: 'normal', 'verbose'"),"normal"):"normal",dt=Array.from,pt=Object.keys,ft={},vt=[];class mt{constructor(e,t=!1){this.name=e,this.t=t,this.handlers=[],this.history=[]}subscribe(e){if(this.handlers.push(new Pt(e,!1)),this.t)for(const t of this.history)e(t)}subscribeOnce(e){this.handlers.push(new Pt(e,!0))}unsubscribe(e){for(let t=0;this.handlers.length>t;t++)if(this.handlers[t].handler===e)return void this.handlers.splice(t,1)}trigger(e){for(let t=0;this.handlers.length>t;t++)this.handlers[t].handler(e),this.handlers[t].isOneTime&&(this.handlers.splice(t,1),t--);this.t&&this.history.push(e)}}const ht=new mt("dotvvm.events.init",!0),yt=new mt("dotvvm.events.initCompleted",!0),bt=new mt("dotvvm.events.beforePostback"),gt=new mt("dotvvm.events.afterPostback"),wt=new mt("dotvvm.events.error"),kt=new mt("dotvvm.events.redirect"),Ct=new mt("dotvvm.events.postbackHandlersStarted"),$t=new mt("dotvvm.events.postbackHandlersCompleted"),Ot=new mt("dotvvm.events.postbackResponseReceived"),Et=new mt("dotvvm.events.postbackCommitInvoked"),St=new mt("dotvvm.events.postbackViewModelUpdated"),xt=new mt("dotvvm.events.postbackRejected"),Mt=new mt("dotvvm.events.staticCommandMethodInvoking"),At=new mt("dotvvm.events.staticCommandMethodInvoked"),It=new mt("dotvvm.events.staticCommandMethodInvoked"),Tt=new mt("dotvvm.events.newState");class Pt{constructor(e,t){this.handler=e,this.isOneTime=t}}Le=Object.freeze({__proto__:null,DotvvmEvent:mt,init:ht,initCompleted:yt,beforePostback:bt,afterPostback:gt,error:wt,redirect:kt,postbackHandlersStarted:Ct,postbackHandlersCompleted:$t,postbackResponseReceived:Ot,postbackCommitInvoked:Et,postbackViewModelUpdated:St,postbackRejected:xt,staticCommandMethodInvoking:Mt,staticCommandMethodInvoked:At,staticCommandMethodFailed:It,newState:Tt});let jt={};ze=Object.freeze({__proto__:null,format:$,formatString:O,parseNumber:E,parseDate:S,parseDotvvmDate:d,bindingDateToString(e,t="G"){if(!e)return"";const n=()=>O(t,e);if(ko.isWriteableObservable(e)){const r="string"==typeof(()=>{const t=ko.unwrap(e);return"string"==typeof t?d(t):t})()?t=>e(t&&v(t,!1)):e;return ko.pureComputed({read:n,write:e=>r(S(e,t)||S(e,""))})}return ko.pureComputed(n)},bindingNumberToString(e,t="G"){if(null==e)return"";const n=()=>O(t,e);return ko.isWriteableObservable(e)?ko.pureComputed({read:n,write(t){const n=E(t);e(null==t||null!=n&&!isNaN(n)?n:null)}}):ko.pureComputed(n)}});const Rt={Boolean:{tryCoerce:e=>"boolean"==typeof e?{value:e}:"true"===e||"True"===e||"false"===e||"False"===e?{value:!0,wasCoerced:!0}:"number"==typeof e?{value:!!e,wasCoerced:!0}:void 0},Byte:{tryCoerce:e=>x(e,0,255)},SByte:{tryCoerce:e=>x(e,-128,127)},Int16:{tryCoerce:e=>x(e,-32768,32767)},UInt16:{tryCoerce:e=>x(e,0,65535)},Int32:{tryCoerce:e=>x(e,-2147483648,2147483647)},UInt32:{tryCoerce:e=>x(e,0,4294967295)},Int64:{tryCoerce:e=>x(e,-0x8000000000000000,0x8000000000000000)},UInt64:{tryCoerce:e=>x(e,0,0x10000000000000000)},Single:{tryCoerce:M},Double:{tryCoerce:M},Decimal:{tryCoerce:M},String:{tryCoerce(e){let t=!1;if(null===e)t=!1;else if("number"==typeof e)e=O("n",e),t=!0;else if(e instanceof Date)e=O("g",e),t=!0;else if("boolean"==typeof e)e=e?"true":"false",t=!0;else if(void 0===e)e=null,t=!0;else if("string"!=typeof e)return;return{value:e,wasCoerced:t}}},Char:{tryCoerce:e=>"number"!=typeof e||(0|e)!==e||0>e||e>65535?"string"==typeof e?1===e.length?{value:e}:e.length>1?{value:e.substring(0,1),wasCoerced:!0}:void 0:void 0:{value:String.fromCharCode(e),wasCoerced:!0}},Guid:{tryCoerce(e){if("string"==typeof e)return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(e)?{value:e}:void 0}},DateTime:{tryCoerce(e){if("string"==typeof e){if(d(e))return{value:e};e=S(e,"")}if(e instanceof Date)return{value:v(e,!1),wasCoerced:!0}}},TimeSpan:{tryCoerce(e){if("string"==typeof e){const t=p(e);if(null!==t)return{value:m(t)}}if("number"==typeof e)return{value:m(e),wasCoerced:!0}}},DateTimeOffset:{tryCoerce(e){if("string"==typeof e&&(e=>{const t=e.match("^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(\\.[0-9]{1,7})?(Z|[+-]([0-9]{1,2}):([0-9]{2}))$");if(t){const e="Z"===t[8]?0:("-"===t[8]?-1:1)*(60*parseInt(t[9],10)+parseInt(t[10],10));return new Date(parseInt(t[1],10),parseInt(t[2],10)-1,parseInt(t[3],10),parseInt(t[4],10),parseInt(t[5],10)+e,parseInt(t[6],10),t[7]?parseInt(t[7].substring(1,4),10):0)}return null})(e))return{value:e}}}},Dt={},Nt=Symbol("currentState"),Vt=Symbol("notify"),Ut=Symbol("lastSetError"),Ft=Symbol("internalPropCache"),Ht=Symbol("update"),_t=Symbol("updateProperty");let Bt=!1;class Lt{constructor(e,t){this.stateUpdateEvent=t,this.o=!1,this.i=0,this.startTime=null,this.l=I(e,e.$type||{type:"dynamic"}),this.stateObservable=H(e,e.$type,(e=>this.update(e))),this.dispatchUpdate()}get state(){return this.l}get isDirty(){return this.o}dispatchUpdate(){this.o||(this.o=!0,this.i=window.requestAnimationFrame(this.rerender.bind(this)))}doUpdateNow(){null!==this.i&&window.cancelAnimationFrame(this.i),this.rerender(performance.now())}rerender(e){null===this.startTime&&(this.startTime=e),performance.now(),this.o=!1,this.stateUpdateEvent.trigger(this.l),Bt=!0,ko.delaySync.pause();try{this.stateObservable[Vt](this.l)}finally{Bt=!1,ko.delaySync.resume()}}setState(e){if(null==e)throw Error("State can't be null or undefined.");if(e===this.l)return e;const t=I(e,e.$type||this.l.$type,this.l);return this.dispatchUpdate(),this.l=t}patchState(e){return this.setState(V(this.l,e))}update(e){return this.setState(e(this.l))}}class zt{constructor(e,t,r,o,a){this[qe]={},this[Nt]=e,this[Ht]=t;for(const e of pt((null==o?void 0:o.properties)||{}).concat(a))this[Ft][e]=null,Object.defineProperty(this,e,{enumerable:!0,configurable:!1,get(){var t;const a=this[Ft][e];if(a)return a;const s=H(this[Nt][e],null===(t=null==o?void 0:o.properties[e])||void 0===t?void 0:t.type,(t=>this[_t](e,t))),i=void 0===r||r.hasOwnProperty("type")&&"dynamic"===r.type;if(o&&e in o.properties){const t=o.properties[e].clientExtenders;if(t)for(const e of t)ko.extenders[e.name](s,e.parameter)}else i||0===e.indexOf("$")||n("state-manager",`Unknown property '${e}' set on an object of type ${r}.`);return this[Ft][e]=s,s}});Object.seal(this)}[Vt](e){console.assert(e),this[Nt]=e;const t=this[Ft];for(const n of pt(t)){const r=t[n];r&&r[Vt](e[n])}}[(qe=Ft,_t)](e,t){this[Ht]((n=>{if(null==n)return n;const r=t(n[e]);return n[e]===r?n:Object.freeze({...n,[e]:r})}))}}let qt,Wt=null;const Jt=()=>document.getElementById("__dot_viewmodel_root");let Xt;We=0;const Gt=e=>ko.isComputed(e)&&"wrappedProperty"in e?e.wrappedProperty():e,Kt={required:{isValid:e=>!se(e)},regularExpression:{isValid(e,t){const[n]=t.parameters;return se(e)||RegExp(n).test(e)}},intrange:{isValid(e,t){const[n,r]=t.parameters;return e%1==0&&e>=n&&r>=e}},range:{isValid(e,t){const[n,r]=t.parameters;return e>=n&&r>=e}},emailAddress:{isValid(e){if("string"!=typeof e)return!0;let t=!1;for(let n=0;e.length>n;n++)if("@"==e[n]){if(t||0==n||n==e.length-1)return!1;t=!0}return t}},notnull:{isValid:e=>null!=e},enforceClientFormat:{isValid(e,t,n){const[r,o,a]=t.parameters;let s=!0;r||null!=e||(s=!1),o||""!==e||(s=!1),!a&&se(e)&&(s=!1);const i=ie(n);if(i)for(const e of i)e.elementValidationState||(s=!1);return s}}},Zt=[];class Yt{constructor(e,t){this.errorMessage=e,this.validatedObservable=t}static attach(e,t){if(!e)throw Error(`String "${e}" is not a valid ValidationError message.`);if(!t)throw Error(`ValidationError cannot be attached to "${t}".`);(t=Gt(t)).hasOwnProperty("validationErrors")||(t.validationErrors=[]);const n=new Yt(e,t);return t.validationErrors.push(n),Zt.push(n),n}detach(){const e=this.validatedObservable.validationErrors,t=e.indexOf(this);e.splice(t,1);const n=Zt.indexOf(this);Zt.splice(n,1)}}const Qt=ko.observable(0),en={};let tn,nn=0;const rn=ko.observable(!1),on={name:"suppressOnDisabledElement",before:["setIsPostbackRunning","concurrency-default","concurrency-queue","concurrency-deny"],execute(e,t){return(n=t.sender)&&["A","INPUT","BUTTON"].indexOf(n.tagName)>-1&&n.hasAttribute("disabled")?Promise.reject(new lt({type:"handler",handlerName:"suppressOnDisabledElement",message:"PostBack is prohibited on disabled element"})):e();var n}},an={name:"setIsPostbackRunning",async execute(e){rn(!0),nn++;try{return await e()}finally{rn(!!--nn)}}};class sn{constructor(e){this.message=e}async execute(e,t){if(window.confirm(this.message))return await e();throw{type:"handler",handler:this,message:"The postback was not confirmed"}}}class ln{constructor(e){this.suppress=e}async execute(e,t){if(this.suppress)throw{type:"handler",handler:this,message:"The postback was suppressed"};return await e()}}const un=he(0),cn={confirm:e=>new sn(e.message),suppress:e=>new ln(e.suppress),timeout:e=>e.time?he(e.time):un,"concurrency-default":e=>({name:"concurrency-default",before:["setIsPostbackRunning"],execute:(t,n)=>me(t(),n,e.q||"default")}),"concurrency-deny":e=>({name:"concurrency-deny",before:["setIsPostbackRunning"],execute(t,n){const r=e.q||"default";return ue(r).noRunning>0?Promise.reject(new lt({type:"handler",handlerName:"concurrency-deny",message:"A postback is already running"})):me(t(),n,r)}}),"concurrency-queue":e=>({name:"concurrency-queue",before:["setIsPostbackRunning"],execute(t,n){const r=e.q||"default",o=()=>me(t(),n,r);return ue(r).noRunning>0?new Promise((e=>{ue(r).queue.push((()=>e(o())))})):o()}}),suppressOnUpdating:e=>({name:"suppressOnUpdating",before:["setIsPostbackRunning","concurrency-default","concurrency-queue","concurrency-deny"],execute:(e,t)=>Bt?Promise.reject(new lt({type:"handler",handlerName:"suppressOnUpdating",message:"ViewModel is updating, so it's probably false onchange event"})):e()})},dn=cn["concurrency-default"]({}),pn={hideWhenValid(e,t){e.style.display=t.length>0?"":"none"},invalidCssClass(e,t,n){const r=n.split(/\s+/);for(const n of r)t.length>0?e.classList.add(n):e.classList.remove(n)},setToolTipText(e,t){e.title=t.length>0?t.join(" "):""},showErrorMessageText(e,t){e[e.innerText?"innerText":"textContent"]=t.join(" ")}},fn=new mt("dotvvm.validation.events.validationErrorsChanged"),vn={rules:Kt,errors:Zt,events:{validationErrorsChanged:fn}},mn=e=>({name:"validate",execute(t,n){if(e){n.validationTargetPath=e;const t=re(ko.contextFor(n.sender),e);if(Ce(n,(()=>{le(),ye(t)})),Zt.length>0)return r("validation","Validation failed: postback aborted; errors: ",Zt),Promise.reject(new lt({type:"handler",handlerName:"validation",message:"Validation failed"}))}return t()}}),hn=[on,an],yn=[];Je={"dotvvm-textbox-text":{init(e,t,n){const r=t(),o=(null==n?void 0:n.get("valueUpdate"))||"change",a={element:e,dataType:e.getAttribute("data-dotvvm-value-type")||"",format:e.getAttribute("data-dotvvm-format")||"",domNodeDisposal:!1,elementValidationState:!0};let s=[];ko.isObservable(r)&&(r.dotvvmMetadata?r.dotvvmMetadata.push(a):r.dotvvmMetadata=[a],s=r.dotvvmMetadata),setTimeout((()=>{ko.utils.domNodeDisposal.addDisposeCallback(e,(()=>{for(const t of s)if(t.element===e){s.splice(s.indexOf(t),1);break}}))}),0),e.addEventListener(o,(()=>{const n=t();if(!ko.isObservable(n))return;let r,o,s;if("datetime"===a.dataType){let t=n();null!=t&&(t=d(t)),r=S(e.value,a.format,t)||S(e.value,"",t),o=null==r,s=o?null:v(r,!1)}else"number"===a.dataType?(r=E(e.value),o=null===r||isNaN(r),s=o?null:r):s=e.value;null==s&&null!==e.value&&""!==e.value?(e.setAttribute("data-invalid-value",e.value),e.setAttribute("data-dotvvm-value-type-valid","false"),a.elementValidationState=!1):(e.removeAttribute("data-invalid-value"),e.setAttribute("data-dotvvm-value-type-valid","true"),a.elementValidationState=!0);const i=e.value;try{n.peek()===s?(n.valueHasMutated?n.valueHasMutated():n.notifySubscribers(),a.elementValidationState&&(n[Ut]=void 0)):n(s)}catch(t){a.elementValidationState=!1,e.setAttribute("data-invalid-value",e.value),e.setAttribute("data-dotvvm-value-type-valid","false"),e.value=i}}))},update(e,t){const n=t();let r=ko.unwrap(n);const o=e.getAttribute("data-dotvvm-format");o&&(r=O(o,r));const a=e.getAttribute("data-invalid-value");if(null!=a)e.removeAttribute("data-invalid-value"),r=a;else{const t=n&&ie(n);if(t)for(const n of t)n.element==e&&(n.elementValidationState=!0,e.setAttribute("data-dotvvm-value-type-valid","true"),e.removeAttribute("data-invalid-value"))}e.value=null==r?"":r}}},Xe={"dotvvm-textbox-select-all-on-focus":{init(e){e.$selectAllOnFocusHandler=()=>{e.select()}},update(e,t){!0===ko.unwrap(t())?e.addEventListener("focus",e.$selectAllOnFocusHandler):e.removeEventListener("focus",e.$selectAllOnFocusHandler)}}},ko.virtualElements.allowedBindings["dotvvm-SSR-foreach"]=!0,ko.virtualElements.allowedBindings["dotvvm-SSR-item"]=!0,Ge={"dotvvm-SSR-foreach":{init(e,t,n,r,o){if(!o)throw Error();let a,s=!0;return ko.computed((()=>{const n=t().data;ko.unwrap(n),s&&ko.computedContext.getDependenciesCount()&&(a=ko.utils.cloneNodes(ko.virtualElements.childNodes(e),!0)),null!=n?(s||ko.virtualElements.setDomNodeChildren(e,ko.utils.cloneNodes(a)),ko.applyBindingsToDescendants(o.extend({$foreachCollectionSymbol:n}),e)):ko.virtualElements.emptyNode(e),s=!1}),null,{disposeWhenNodeIsRemoved:e}),{controlsDescendantBindings:!0}}},"dotvvm-SSR-item":{init(e,t,n,r,o){if(!o)throw Error();const a=o.$foreachCollectionSymbol;if(!a)throw Error();const s=o.createChildContext((()=>ko.unwrap((ko.unwrap(a)||[])[t()]))).extend({$index:ko.pureComputed(t)});return ko.applyBindingsToDescendants(s,e),{controlsDescendantBindings:!0}},update(e){e.seenUpdate&&r("binding-handler","The dotvvm-SSR-item binding did not expect to see an update."),e.seenUpdate=1}}},ko.virtualElements.allowedBindings["dotvvm-with-control-properties"]=!0,Ke={"dotvvm-with-control-properties":{init(e,t,n,r,o){if(!o)throw Error();const a=t();for(const e of pt(a))if(xe(a,e)){const t=a[e];a[e]=Me((()=>t))}else a[e]=Me((()=>{const n=t()[e];return ko.isObservable(n)?n:b(n)}),`'${e}' at '${""+t}'`);const s=o.extend({$control:a});return ko.applyBindingsToDescendants(s,e),{controlsDescendantBindings:!0}}}},Ze={"dotvvm-table-columnvisible":{init(e,t){let n="",r=!0;if(!(e instanceof HTMLTableCellElement))return;const o=Ae(e),a=o.rows.item(0);if(!a)throw Error("Table with dotvvm-table-columnvisible binding must not be empty.");const s=dt(a.cells).indexOf(e);e.dotvvmChangeVisibility=e=>{if(r!=e){r=e;for(let t=0;o.rows.length>t;t++){const r=o.rows.item(t).cells[s].style;e?r.display=n:(n=r.display||"",r.display="none")}}}},update(e,t){e.dotvvmChangeVisibility(ko.unwrap(t()))}}},Ye={"dotvvm-enable":{update(e,t){const n=ko.unwrap(t());n&&e.disabled?(e.disabled=!1,e.removeAttribute("disabled")):n||e.disabled||(e.disabled=!0,e.setAttribute("disabled","disabled"))}}},Qe={"dotvvm-checkbox-updateAfterPostback":{init(e,t,n){gt.subscribe((e=>{const t=n();if(t["dotvvm-checked-pointer"]){const e=t[t["dotvvm-checked-pointer"]];ko.isObservable(e)&&(e.valueHasMutated?e.valueHasMutated():e.notifySubscribers())}}))}},"dotvvm-checked-pointer":{init(){}},"dotvvm-CheckState":{init(e,t,n,r,o){ko.getBindingHandler("checked").init(e,t,n,r,o)},update(e,t){const n=ko.unwrap(t());e.indeterminate=null==n}},"dotvvm-checkedItems":{after:ko.bindingHandlers.checked.after,init:ko.bindingHandlers.checked.init,options:ko.bindingHandlers.checked.options,update(e,t){const n=t();if(!Array.isArray(ko.unwrap(n)))throw Error("The value of a `checkedItems` binding must be an array (i.e. not null nor undefined).")}}},et={"dotvvm-UpdateProgress-Visible":{init(e,t,n,r,o){e.style.display="none";const a=e.getAttribute("data-delay"),s=(e.getAttribute("data-included-queues")||"").split(",").filter((e=>e.length>0)),i=(e.getAttribute("data-excluded-queues")||"").split(",").filter((e=>e.length>0));let l,u=!1;Qt.subscribe((()=>{let t=!1;if(0===s.length){for(const e of pt(en))if(0>i.indexOf(e)&&en[e].noRunning>0){t=!0;break}}else t=s.some((e=>en[e]&&en[e].noRunning>0));t?u||(u=!0,null==a?e.style.display="":l=setTimeout((()=>{e.style.display=""}),+a)):(u=!1,clearTimeout(l),e.style.display="none")}))}}},ko.virtualElements.allowedBindings["dotvvm-gridviewdataset"]=!0,nt={"dotvvm-gridviewdataset":{init:(tt=(e,t,n)=>e.extend({$gridViewDataSetHelper:{...t,isInEditMode(e){let t=this.dataSet.RowEditOptions().PrimaryKeyPropertyName();return t=this.mapping[t]||t,this.dataSet.RowEditOptions().EditRowId()===e.$data[t]()}}}),(e,t,n,r,o)=>{if(!o)throw Error();var a,s=!0;return ko.computed((()=>{var n=t();ko.unwrap(n),s&&ko.computedContext.getDependenciesCount()&&(a=ko.utils.cloneNodes(ko.virtualElements.childNodes(e),!0)),s||ko.virtualElements.setDomNodeChildren(e,ko.utils.cloneNodes(a)),ko.applyBindingsToDescendants(tt(o,n),e),s=!1}),null,{disposeWhenNodeIsRemoved:e}),{controlsDescendantBindings:!0}})}};const bn={},gn=Symbol("viewModules");class wn{constructor(e,t){this.name=e,this.module=t,this.contexts={}}}class kn{constructor(e,t,n){this.moduleName=e,this.elements=t,this.properties=n,this.namedCommands={},this.registerNamedCommand=(e,t)=>{if(this.namedCommands[e])throw Error(`A named command is already registered under the name: ${e}. The conflict occured in: ${this.moduleName}.`);this.namedCommands[e]=(...e)=>t.apply(this,e.map(F))},this.unregisterNamedCommand=e=>{e in this.namedCommands&&delete this.namedCommands[e]}}}ko.virtualElements.allowedBindings["dotvvm-with-view-modules"]=!0,rt={"dotvvm-with-view-modules":{init(e,t,n,r,o){if(!o)throw Error();const a=t(),s={};for(const t of a.modules)s[t]=Te(t,a.viewIdOrElement,e);"string"!=typeof a.viewIdOrElement&&(e[gn]=s);const i=o.extend({$viewModules:s});return ko.applyBindingsToDescendants(i,e),{controlsDescendantBindings:!0}}}},ko.virtualElements.allowedBindings["dotvvm-named-command"]=!0;const Cn={...Je,...Ge,...Ke,...Xe,...Ze,...Ye,...Qe,...et,...nt,...rt,"dotvvm-named-command":{init(e,t,n,r,o){const a=t();return Pe(a.viewIdOrElement,a.name,a.command,e),{controlsDescendantBindings:!1}}},"dotvvm-FileUpload":{init(e,t,n,r,o){function a(t,n,r){dotvvm.fileUpload.reportProgress(e,t,n,r)}var s=ko.unwrap(t());e.addEventListener("change",(()=>{var t,n,r;if(e.files&&e.files.length){if((t=XMLHttpRequest?new XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP")).open("POST",s.url,!0),t.setRequestHeader("X-DotVVM-AsyncUpload","true"),t.upload.onprogress=e=>{e.lengthComputable&&a(!0,Math.round(100*e.loaded/e.total),"")},t.onload=()=>{200==t.status?(a(!1,100,JSON.parse(t.responseText)),e.value=""):a(!1,0,"Upload failed.")},n=new FormData,e.files.length>1)for(r=0;e.files.length>r;r++)n.append("upload[]",e.files[r]);else e.files.length>0&&n.append("upload",e.files[0]);t.send(n)}}))}}},$n={},On={},En=(e,t,n)=>{let r=t>e?-1:e==t?0:1;return n?r:-1*r};if(ot=Object.freeze({__proto__:null,add(e,t){let n=[...e.state,t];e.setState(n)},addOrUpdate(e,t,n,r){let o=Array.from(e.state),a=!1;for(let e=0;o.length>e;e++)n(o[e])&&(a=!0,o[e]=r(o[e]));a||o.push(t),e.setState(o)},addRange(e,t){let n=Array.from(e.state);for(let e=0;t.length>e;e++)n.push(ko.unwrap(t[e]));e.setState(n)},clear(e){e.setState([])},distinct:e=>Array.from(new Set(e.map(ko.unwrap))),firstOrDefault(e,t){for(const n of e){const e=ko.unwrap(n);if(t(e))return e}return null},insert(e,t,n){let r=Array.from(e.state);r.splice(t,0,n),e.setState(r)},insertRange(e,t,n){let r=Array.from(e.state);r.splice(t,0,...n.map((e=>ko.unwrap(e)))),e.setState(r)},lastOrDefault(e,t){for(let n=e.length-1;n>=0;n--){const r=ko.unwrap(e[n]);if(t(r))return r}return null},max(e,t,n){if(0===e.length){if(n)throw Error("Source is empty! Max operation cannot be performed.");return null}let r=t(e[0]);for(let n=1;e.length>n;n++){let o=t(e[n]);o>r&&(r=o)}return r},min(e,t,n){if(0===e.length){if(n)throw Error("Source is empty! Min operation cannot be performed.");return null}let r=t(e[0]);for(let n=1;e.length>n;n++){let o=t(e[n]);r>o&&(r=o)}return r},orderBy:(e,t,n)=>Ue(e,t,Fe(n,!0)),orderByDesc:(e,t,n)=>Ue(e,t,Fe(n,!1)),removeAll(e,t){let n=Array.from(e.state);for(let e=0;n.length>e;e++)t(n[e])&&(n.splice(e,1),e--);e.setState(n)},removeAt(e,t){let n=Array.from(e.state);n.splice(t,1),e.setState(n)},removeFirst(e,t){let n=Array.from(e.state);for(let e=0;n.length>e;e++)if(t(n[e])){n.splice(e,1);break}e.setState(n)},removeLast(e,t){let n=Array.from(e.state);for(let e=n.length-1;e>=0;e--)if(t(n[e])){n.splice(e,1);break}e.setState(n)},removeRange(e,t,n){let r=Array.from(e.state);r.splice(t,n),e.setState(r)},reverse(e){let t=Array.from(e.state);t.reverse(),e.setState(t)},setItem(e,t,n){let r=Array.from(e.state);if(0>t||t>=r.length)throw Error("Index out of range!");r[t]=n,e.setState(r)}}),at=Object.freeze({__proto__:null,clear(e){e.setState([])},containsKey:(e,t)=>null!==He(e,t),getItem(e,t){const n=He(e,t);if(null===n)throw Error('Provided key "'+t+'" is not present in the dictionary!');return ko.unwrap(e[n]).Value},remove(e,t){let n=[...e.state];const r=He(n,t);return null!==r&&(n.splice(r,1),e.setState(n),!0)},setItem(e,t,n){const r=[...e.state],o=He(r,t);null!==o?(r[o]={Key:r[o].Key,Value:n},e.setState(r)):(r.push({Key:t,Value:n}),e.setState(r))}}),st=Object.freeze({__proto__:null,contains(e,t,n){const r=_e(e,t,n);return r.haystack.includes(r.needle)},endsWith(e,t,n){const r=_e(e,t,n);return r.haystack.endsWith(r.needle)},startsWith(e,t,n){const r=_e(e,t,n);return r.haystack.startsWith(r.needle)},indexOf(e,t,n,r){const o=_e(e,n,r);return o.haystack.indexOf(o.needle,t)},lastIndexOf(e,t,n,r){const o=_e(e,n,r);return o.haystack.indexOf(o.needle,t)},split(e,t,n){let r=e.split(t);return"RemoveEmptyEntries"===n&&(r=r.filter((e=>e))),r},join:(e,t)=>e.map(ko.unwrap).join(t),format:(e,t)=>$(e,...t),trimStart:(e,t)=>(t=null!=t?t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"\\s",e.replace(RegExp("^"+t+"*"),"")),trimEnd:(e,t)=>(t=null!=t?t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"\\s",e.replace(RegExp(t+"*$"),"")),padStart:(e,t,n)=>t>e.length?(null==n&&(n=" "),Array(t-e.length+1).join(n)+e):e,padEnd:(e,t,n)=>t>e.length?(null==n&&(n=" "),e+Array(t-e.length+1).join(n)):e}),window.dotvvm)throw Error("DotVVM is already loaded!");const Sn={getCulture:X,evaluator:{getDataSourceItems(e){const t=ko.unwrap(e);return null==t?[]:ko.unwrap(t.Items||t)},wrapObservable(e,t){let n=ko.pureComputed({read:()=>ko.unwrap(ae(e)),write:t=>((e,t)=>{const n=ae(e);ko.isWriteableObservable(n)?n(t):r("evaluator",`Cannot write a value to ko.computed because the expression '${e}' does not return a writable observable.`)})(e,t)});if(t){for(const t of["push","pop","unshift","shift","reverse","sort","splice","slice","replace","indexOf","remove","removeAll"])n[t]=(...n)=>oe(e,t,n);n=n.extend({trackArrayChanges:!0})}return n.extend({notify:"always"})}},fileUpload:{reportProgress(e,t,n,r){const o=e.parentElement,a=ko.dataFor(o.firstChild);if("string"==typeof r)a.Error(r);else if("result"in r){a.Error(""),c(r.typeMetadata);for(let e=0;r.result.length>e;e++)a.Files.push((s=b(r.result[e]),ko.isObservable(s)?s:ko.observable(s)));(o.attributes["data-dotvvm-upload-completed"]||{value:null}).value&&Function(o.attributes["data-dotvvm-upload-completed"].value).call(o)}var s;a.Progress(n),a.IsBusy(t)},showUploadDialog(e){e.parentElement.parentElement.querySelector("input[type=file]").click()}},api:{invoke(e,t,r,o,a,s,i){function l(e){let t=f.promise;if(f.isLoading||(f.isLoading=!0,t=(()=>{try{return{type:"result",result:Promise.resolve(ko.ignoreDependencies(c)).then((e=>{e&&(e=h.setState({data:F(b(e)),$type:m}).data);for(const e of a(u))De(e);return e}),(e=>n("rest-api",e)))}}catch(e){return n("rest-api",e),{type:"error",error:e}}})(),f.promise=t),"error"!=t.type)return t.result.then((e=>f.isLoading=!1),(e=>{f.isLoading=!1,n("rest-api",e)})),t.result;if(f.isLoading=!1,e)throw t.error}const u=ko.ignoreDependencies(r),c=()=>e[t].apply(e,u),d=t+":"+i(u),p=s?s.apiCachedValues||(s.apiCachedValues={}):On,f=p[d]||(p[d]={}),v=null==f.stateManager,m={type:"dynamic"};if(null==f.stateManager){const e=new mt("apiObject.newState");f.stateManager=new Lt({data:null,$type:m},e)}const h=f.stateManager;v&&l(),ko.computed((()=>o(u).map((e=>"string"==typeof e?Ne(e)():e())))).subscribe((e=>l()));const y=ko.pureComputed((()=>h.stateObservable().data()));return y.refreshValue=l,y},refreshOn:(e,t)=>("function"!=typeof e.refreshValue&&r("rest-api","The object is not refreshable."),t.subscribe((()=>{"function"!=typeof e.refreshValue&&r("rest-api","The object is not refreshable."),e.refreshValue()})),e)},eventHub:{get:Ne,notify:De},globalize:ze,postBackHandlers:cn,postbackHandlers:cn,buildUrlSuffix(e,t){const n=e.indexOf("#");let r=-1!=n?e.substring(0,n):e;const o=-1!=n?e.substring(n):"";for(const e of pt(t)){if(!e)continue;const n=ko.unwrap(t[e]);null!=n&&(r+=(-1!=r.indexOf("?")?"&":"?")+`${encodeURIComponent(e)}=${encodeURIComponent(n)}`)}return r+o},buildRouteUrl(e,t){const n=(e="/"+e).replace(/(\/?[^\/{]*)\{([^\}]+)\}/g,((e,n,r)=>{if(!r)return"";const o=ko.unwrap(t[r]);return null==o?"":n+encodeURIComponent(o)}));return 0===n.indexOf("/")?n.substring(1):n},async staticCommandPostback(e,t,n,r){var o,a;let s,i;try{if(await Q((async()=>{const e=await Y(r.abortSignal);s={args:n.map((e=>ce(e))),command:t,$csrfToken:e,knownTypeMetadata:u()}})),Mt.trigger({...r,methodId:t,methodArgs:n}),i=await Z(z(),JSON.stringify(s),r.abortSignal,{"X-PostbackType":"StaticCommand"}),"action"in i.result){if("redirect"==i.result.action)return void await ee(r,i.result,i.response);throw Error("Invalid action "+i.result.action)}return c(i.result.typeMetadata),At.trigger({...r,methodId:t,methodArgs:n,serverResponseObject:i.result,result:i.result.result,response:i.response}),i.result.result}catch(e){throw It.trigger({...r,methodId:t,methodArgs:n,error:e,result:null===(o=e.reason)||void 0===o?void 0:o.responseObject,response:null===(a=e.reason)||void 0===a?void 0:a.response}),e}},async applyPostbackHandlers(e,t,n,o=[],a=ko.contextFor(t),s=a.$root,i){var l,u;const c=t=>((e,t)=>Promise.resolve(e).then((n=>"function"==typeof n?e:()=>Promise.resolve({...t,commandResult:n,wasInterrupted:!1}))))(e(t),t),d={postbackId:te(),commandType:"staticCommand",sender:t,args:o,viewModel:a.$data,abortSignal:i},p=$e(a,hn.concat(n||[]).concat(yn));try{const e=await Oe(c,d,p);return await e(...o)}catch(e){if(i&&i.aborted&&(e=new lt({type:"abort",options:d})),e instanceof lt){if(Ee(e)){const t=Se(e),n={...d,serverResponseObject:t,response:null===(l=e.reason)||void 0===l?void 0:l.response,error:e,handled:!1};if(wt.trigger(n),n.handled)return{...d,serverResponseObject:t,response:null===(u=e.reason)||void 0===u?void 0:u.response,error:e};r("static-command","StaticCommand failed",n)}}else r("static-command","Unexpected exception during static command.",e);throw e}},validation:vn,async postBack(e,t,n,o,a,s,i,l){var u,c,d;const p=$e(a=a||ko.contextFor(e),hn.concat(s||[]).concat(yn));0==p.filter((e=>e.name&&0==e.name.indexOf("concurrency-"))).length&&p.push(dn);const f={postbackId:te(),sender:e,args:ko.toJS(i)||[],viewModel:a.$data,commandType:"postback",abortSignal:l},v=e=>ve(e,t,n,o,a,f.args);try{const e=await Oe(v,f,p),t=await e();return gt.trigger(t),t}catch(e){if(l&&l.aborted&&(e=new lt({type:"abort",options:f})),e instanceof lt){const t=(e=>["event","handler","abort"].includes(e.reason.type))(e),n=Se(e);if(t){const t={...f,error:e};xt.trigger(t)}const o={...f,serverResponseObject:n,wasInterrupted:t,commandResult:null,response:null===(u=e.reason)||void 0===u?void 0:u.response,error:e};if(gt.trigger(o),Ee(e)){const t={...f,serverResponseObject:n,response:null===(c=e.reason)||void 0===c?void 0:c.response,error:e,handled:!1};if(wt.trigger(t),t.handled)return{...f,serverResponseObject:n,response:null===(d=e.reason)||void 0===d?void 0:d.response,error:e};r("postback","Postback failed",t)}}else r("postback","Unexpected exception during postback.",e);throw e}},init(t){(t=>{if(Wt)throw Error("DotVVM is already loaded");const n=qt=JSON.parse(Jt().value);(e=>{if(e)for(const t of e)ft[t]=!0})(n.renderedResources),e(n.resultIdFragment),jt=n.typeMetadata||{};const r=new Lt(n.viewModel,Tt);Wt={h:t,p:n.url,g:n.virtualDirectory,v:r},n.viewModelCacheId&&W(n.viewModelCacheId,n.viewModel),ht.trigger({viewModel:r.state}),window.addEventListener("beforeunload",(e=>{(()=>{const e=q(),t={...qt,viewModel:e};Jt().value=JSON.stringify(t)})()}))})(t),(()=>{for(const e of pt(Cn))ko.bindingHandlers[e]=Cn[e]})(),cn.validate=e=>mn(e.path),cn["validate-root"]=()=>mn("dotvvm.viewModelObservables['root']"),cn["validate-this"]=()=>mn("$data"),ko.bindingHandlers["dotvvm-validation"]={init(e,t,n){fn.subscribe((r=>{ke(e,t(),n.get("dotvvm-validationOptions"))}))},update(e,t,n){ke(e,t(),n.get("dotvvm-validationOptions"))}},ko.bindingHandlers["dotvvm-validationSummary"]={init(e,t){const n=t();fn.subscribe((t=>{e.innerHTML="";const r=we(n.target,n.includeErrorsFromChildren,n.includeErrorsFromTarget);for(const t of r){const n=document.createElement("li");n.innerText=t.errorMessage,e.appendChild(n)}n.hideWhenValid&&(e.style.display=r.length>0?"":"none")}))}},ko.applyBindings(L(),document.documentElement),yt.trigger({})},isPostbackRunning:rn,events:Le,viewModels:{root:{get viewModel(){return G().stateObservable()}}},get state(){return q()},patchState(e){G().patchState(e)},viewModelObservables:{get root(){return L()}},serialization:{serialize:ce,serializeDate:v,parseDate:d,deserialize:b},metadata:{getTypeId:e=>ko.unwrap(e.$type),getTypeMetadata:e=>i(e),getEnumMetadata:Ve,getEnumValue(e,t){let n=Ve(t);return"string"==typeof e?n.values[e]:e}},viewModules:{registerOne:Ie,init:Te,call(e,t,n){if(null==t)throw Error("commandName has to have a value");const r=[];for(let n of pt(bn)){const o=je(e,n);o&&o.module&&t in o.module&&"function"==typeof o.module[t]&&r.push({moduleName:n,context:o})}if(!r.length)throw Error(`Command ${t} could not be found in any of the imported modules in view ${e}.`);if(r.length>1)throw Error(`Conflict: There were multiple commands named ${t} the in imported modules in view ${e}. Check modules: ${r.map((e=>e.moduleName)).join(", ")}.`);try{return r[0].context.module[t](...n.map((e=>ce(e))))}catch(e){throw Error(`While executing command ${t}(${n.map((e=>JSON.stringify(ce(e))))}), an error occurred. ${e}`)}},registerMany(e){for(const t of pt(e))Ie(t,e[t])}},resourceLoader:{notifyModuleLoaded(e){vt[e](void 0),delete vt[e]}},log:{logError:r,logWarning:n,logInfo(e,...t){console.log("%c"+e,"background-color: #f0f0f0",...t)},logInfoVerbose:t,logPostBackScriptError(e){e instanceof lt||r("postback","Uncaught error returned from promise!",e)},level:ct},translations:{array:ot,dictionary:at,string:st}};window.dotvvm=Sn;export default Sn;
//# sourceMappingURL=dotvvm-root.js.map
