{"version":3,"sources":["init.js","core/polyfills.js","core/clone.js","core/equal.js","core/api.js","core/events.js","core/fileUtils.js","appConnect.js","cordova.js","core/signal.js","core/signalProxy.js","core/scope.js","core/dom.js","core/parser.js","core/BaseComponent.js","core/pathToRegexp.js","core/hjson.js","core/flow.js","components/app.js","components/form.js","components/formElement.js","components/textarea.js","components/input.js","components/inputFile.js","components/inputFileMultiple.js","components/button.js","components/radio.js","components/radioGroup.js","components/checkbox.js","components/checkboxGroup.js","components/select.js","components/selectMultiple.js","components/value.js","components/repeat.js","components/repeatItem.js","components/fetch.js","components/serverconnect.js","components/serverconnectForm.js","components/if.js","components/datetime.js","components/apiAction.js","components/apiForm.js","components/array.js","components/group.js","components/flow.js","components/toggle.js","components/formData.js","attributes/bind.js","attributes/on.js","attributes/repeat.js","attributes/class.js","attributes/hide.js","attributes/show.js","attributes/html.js","attributes/text.js","attributes/style.js","formatters/global.js","actions/core.js","actions/collections.js","actions/console.js"],"names":["window","dmx","version","versions","config","mapping","form","input","textarea","select","noop","isset","v","undefined","array","a","Array","from","reIgnoreElement","rePrefixed","reExpression","reExpressionReplace","reToggleAttribute","reDashAlpha","reUppercase","__components","Object","create","__attributes","before","mounted","__formatters","boolean","global","string","number","object","any","__adapters","__actions","__startup","Set","Element","prototype","closest","s","i","matches","this","document","ownerDocument","querySelectorAll","el","length","item","parentElement","NodeList","forEach","queueMicrotask","callback","Promise","resolve","then","catch","e","setTimeout","Node","defineProperty","get","contains","toggleAttribute","name","force","hasAttribute","removeAttribute","setAttribute","toString","hasOwnProperty","reFlags","reTypedType","eq","value","other","assocIndexOf","key","getMapData","data","type","map","Hash","entries","index","clear","entry","set","__data__","size","delete","result","has","HASH_UNDEFINED","ListCache","pop","splice","push","MapCache","hash","Map","Stack","pairs","LARGE_ARRAY_SIZE","getType","call","slice","isArray","isObject","cloneArrayBuffer","arrayBuffer","constructor","byteLength","Uint8Array","cloneTypedArray","typedArray","buffer","byteOffset","initType","imageData","regexp","dataView","Ctor","source","exec","lastIndex","width","height","clone","stack","stacked","subValue","add","test","isTypedArray","props","keys","iteratee","arrayEach","objValue","assignValue","equalArrays","arrLength","arrValue","othValue","equal","equalDeep","objIsArr","othIsArr","objType","othType","isSameType","String","equalByType","objProps","objLength","objCtor","othCtor","equalObjects","createClass","proto","parent","Cls","apply","arguments","assign","ready","fn","readyState","addEventListener","once","Config","Component","parentComponent","extends","BaseComponent","initialData","attributes","methods","events","node","Attribute","hook","Formatter","Formatters","formatters","Adapter","Action","action","Actions","actions","Startup","promise","debounce","delay","handle","cb","clearTimeout","cancelAnimationFrame","requestAnimationFrame","throttle","args","db","keyCodes","bs","tab","enter","esc","space","left","up","right","down","backspace","pause","capslock","escape","pageup","pagedown","end","home","arrowleft","arrowup","arrowright","arrowdown","insert","numlock","scrolllock","semicolon","comma","minus","period","slash","backquote","bracketleft","backslash","bracketright","quote","numpad0","numpad1","numpad2","numpad3","numpad4","numpad5","numpad6","numpad7","numpad8","numpad9","numpadmultiply","numpadadd","numpadsubstract","numpaddivide","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","digit0","digit1","digit2","digit3","digit4","digit5","digit6","digit7","digit8","digit9","keya","keyb","keyc","keyd","keye","keyf","keyg","keyh","keyi","keyj","keyk","keyl","keym","keyn","keyo","keyp","keyq","keyr","keyt","keyu","keyv","keyw","keyx","keyy","keyz","eventListener","target","eventType","handler","modifiers","timeout","listener","event","self","currentTarget","ctrl","ctrlKey","alt","altKey","shift","shiftKey","meta","metaKey","originalEvent","nsp","includes","MouseEvent","button","parseInt","button0","button1","button2","button3","button4","KeyboardEvent","keyVal","which","stop","stopPropagation","prevent","preventDefault","$data","pageX","pageY","x","clientX","y","clientY","WheelEvent","deltaX","deltaY","deltaZ","deltaMode","PointerEvent","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","TouchEvent","touchMap","touch","identifier","screenX","screenY","touches","changedTouches","targetTouches","rotation","scale","location","repeat","code","Dom7","nodeType","replace","capture","off","jQuery","passive","removeEventListener","fileUtils","fileReader","file","readAs","reject","reader","FileReader","onload","onerror","error","blobToArrayBuffer","blob","blobToBinaryString","blobToDataURL","blobToBase64String","dataURL","substring","indexOf","arrayBufferToBlob","Blob","binaryStringToBlob","binary","bytes","c","charCodeAt","dataURLToBlob","parseDataURL","base64StringToBlob","base64String","atob","match","mediaType","base64","split","parseMediaType","subtype","suffix","parameters","reduce","obj","param","_wr","orig","history","rv","Event","toLowerCase","dispatchEvent","pushState","replaceState","onpopstate","state","title","documentElement","style","visibility","all","app","Error","root","querySelector","App","err","console","extend","extended","deep","merge","prop","parseDate","struct","offset","n","Date","k","UTC","d","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","setHours","setMinutes","setSeconds","setMilliseconds","hashCode","o","str","JSON","stringify","Math","abs","randomizer","seed","repeatItems","items","l","$key","$index","$value","escapeRegExp","val","validate","tagName","elements","dirty","checkValidity","validateReset","queue","task","context","nextTick","postMessage","requestUpdate","warn","protocol","is","batches","batch","prev","Signal","_","toJSON","valueOf","computedSignal","Computed","f","super","$","r","Reactive","peek","defaults","async","equals","outerEffect","computed","options","empty","dispose","FX","run","Effect","m","sync","effect","unique","isNew","skip","effects","signal","signalProxy","signals","b","Proxy","receiver","Reflect","startsWith","ok","deleteProperty","Scope","random","del","DataScope","selector","len","addClass","className","classList","removeClass","remove","toggleClass","toggle","hasClass","attr","attrs","getAttribute","removeAttr","css","getComputedStyle","getPropertyValue","setProperty","each","append","children","j","appendChild","appendTo","detach","parentNode","removeChild","innerHTML","dom","id","getElementById","query","elem","createElement","walk","hasChildNodes","child","childNodes","getAttributes","attribute","specified","substr","argument","part","pos","fullName","oldNode","newNode","replaceChild","_CACHE","_OPERATORS","_ESCAPE_CHARS","_EXPRESSIONS","pow","_RESERVED","scope","__dmxScope__","_SUPPORTED_TYPES","lexer","expression","token","start","ch","ch2","ch3","tokens","op","read","isQuote","readString","isDigid","readNumber","isAlpha","readIdent","testRegexp","readRegexp","isWhitespace","chars","isAlphaNum","isExpOperator","hex","fromCharCode","exponent","next","BigInt","Decimal","RegExp","parse","trim","endsWith","parseExpression","expect","doParse","consume","exp","parseLogicalAnd","parseLogicalOr","parseConditional","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseEquality","parseRelational","parseBitwiseShift","parseMultiplicative","parseAddictive","parseUnary","parsePrimary","arr","parseMember","parseCall","parseIndex","func","argsFn","indexFn","method","bind","$node","listeners","__disposables","__childDisposables","updatedProps","updateRequested","isInitialized","isDestroyed","oldValue","alwaysUpdate","$initialData","$parseAttributes","init","render","$customAttributes","dmxComponent","dmxRendered","tag","destroy","$parse","find","found","beforeUpdate","update","updated","beforeDestroy","destroyed","CustomEvent","defaultPrevented","$createChild","component","$addChild","debug","$removeChild","toUpperCase","__inChild","$parseTextNode","nodeValue","parts","fragment","createDocumentFragment","textNode","createTextNode","$watch","findIndex","isComponent","__WAPPLER__","$update","idents","opts","attrName","default","Boolean","Number","isFinite","enum","Function","$event","$originalEvent","performUpdate","$type","$addBinding","$destroy","$destroyChildren","ignoreParents","pathToRegexp","compile","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","join","res","path","defaultDelimiter","delimiter","whitelist","pathEscaped","escaped","group","modifier","optional","pattern","prefix","escapeGroup","escapeString","encode","encodeURIComponent","segment","TypeError","flags","sensitive","strict","concat","route","endToken","isEndDelimited","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","Hjson","text","at","escapee","t","isPunctuatorChar","col","line","charAt","offs","allowML","exitCh","mlString","uffff","triple","indent","skipIndent","keyname","white","tryParseNumber","stopAtNext","leadingZeros","testLeading","errorClosingHint","search","report","possibleErr","hint","withoutBraces","isEol","chf","tfnns","checkTrailing","rootValue","Flow","_execStep","output","flow","_exec","_each","curr","steps","step","timerName","now","time","disabled","timeEnd","load","dispatchLoad","_parseQuery","querystring","p","decodeURIComponent","base","content","decodeURI","pathname","novalidate","submit","direct","_submit","reset","_reset","_validate","invalid","_submitHandler","_resetHandler","noValidate","grecaptcha","_formSubmit","cancelable","_focusFirstInvalid","_formReset","HTMLFormElement","elm","validity","valid","focus","_parseJsonForm","element","parseSteps","setValue","checked","selectedOptions","opt","org","re","reNumeric","p1","last","nextType","current","focused","validationMessage","_setValue","_focus","disable","_disable","changed","_inputHandler","_changeHandler","_invalidHandler","_focusHandler","_blurHandler","defaultValue","_form","activeElement","imageMaxWidth","imageMaxHeight","imageType","imageQuality","_imageTypes","png","jpeg","webp","_imageExtensions","_updateData","files","_resizeImage","blobUrl","URL","createObjectURL","img","Image","src","revokeObjectURL","ratio","needResize","newType","canvas","ctx","getContext","drawImage","toBlob","container","DataTransfer","newName","newFile","File","date","lastModified","lastModifiedDate","toISOString","dataUrl","_dataUrl","_resizeImages","loading","check","triggerEvent","_select","unchecked","defaultChecked","bubbles","radios","_mutationObserver","MutationObserver","mutationList","mutation","attributeName","_updateValue","addedNodes","ELEMENT_NODE","checkbox","observe","subtree","childList","attributeFilter","disconnect","_radios","radio","filter","_checkboxes","selectedIndex","selectedValue","selectedText","optiontext","optionvalue","setSelectedIndex","_options","_updatingOptions","_renderOptions","option","selected","defaultSelected","textContent","_getValue","rerender","prevItems","childKeys","$template","firstChild","_rerender","_clear","RepeatItem","nextPos","_clone","aStart","bStart","aEnd","bEnd","outer","_moveChild","_insertChild","_removeChild","aLength","bLength","aNullable","sources","fill","moved","synced","keyIndex","seq","_lis","toParse","cloneNode","$nodes","u","il","insertBefore","status","links","paging","headers","executing","uploading","processing","downloading","uploadProgress","position","percent","total","downloadProgress","lastError","message","response","url","params","dataType","noload","cache","ttl","credentials","abort","_abort","reload","_fetch","_resetData","done","unauthorized","forbidden","success","upload","ProgressEvent","download","_statusEvents","_loadHandler","_abortHandler","_errorHandler","_timeoutHandler","_downloadProgressHandler","_progressHandler","_uploadProgressHandler","_xhr","XMLHttpRequest","clearData","qs","_url","WebviewProxy","convertProxyUrl","created","FormData","open","setRequestHeader","header","withCredentials","serverconnect","csrf_token","send","_done","responseText","_parseHeaders","statusText","arrHeaders","getAllResponseHeaders","_parseLinkHeaders","linkHeader","link","linkUrl","acc","info","rel","_parsePaging","page","pages","first","countHeader","loaded","lengthComputable","ceil","sockets","Socket","_refresh","_event","_socket","on","connected","emit","autosubmit","postData","_extendNode","dmxExtraData","dmxExtraElements","_send","setMessage","condition","show","hide","_shown","_template","_show","_hide","template","datetime","interval","utc","_tick","_timeout","_animationFrame","_datetime","pad","year","getUTCFullYear","getFullYear","month","getUTCMonth","getMonth","day","getUTCDate","getDate","hours","getUTCHours","getHours","minutes","getUTCMinutes","getMinutes","seconds","getUTCSeconds","getSeconds","dateString","tz","count","newItem","_splice","_count","addUniq","_indexOf","insertAfter","replaceAt","removeAt","reverse","_reverse","sort","_sort","running","preload","autorun","throwError","_run","runSub","_runSub","_load","_flow","_parse","_destroyed","fetch","_runFlow","$param","uncheck","_formdataHandler","formData","_appendData","isToggle","nodeName","dmxOn","comment","createComment","fast","dmxClass","dmxHide","initial","display","priority","getPropertyPriority","dmxShow","dmxHtml","html","dmxText","innerText","dmxStyle","important","json","log","subflow","wait","lower","upper","floating","rnd","floor","round","confirm","else","prompt","alert","parentScope","parentOutput","$name","$number","$oddeven","outputFields","field","if","conditions","when","cases","while","loop","switch","case","tryCatch","try","runJS","function","setGlobal","setSession","sessionStorage","setItem","getSession","getItem","removeSession","removeItem","setStorage","localStorage","getStorage","removeStorage","body","xhr","onabort","ontimeout","collection","overwrite","row","column","columns","keep","newRow","rename","toFill","rows","startAt","desc","collection1","collection2","matchAll","l2","row2","hasMatch","label","groupEnd"],"mappings":";;;;;;AAAAA,OAAAC,IAAA,CAEAC,QAAA,SACAC,SAAA,CAAA,EAGAC,OAAA,CACAC,QAAA,CACAC,KAAA,OACA,oEAAA,SACA,oBAAA,QACA,uBAAA,WACA,6BAAA,sBACA,mBAAA,aACAC,MAAA,QACAC,SAAA,WACA,mBAAA,kBACAC,OAAA,SACA,kBAAA,iBACA,eAAA,gBAIAC,KAAA,OACAC,MAAAC,QAAAC,IAAAD,EACAE,MAAAC,GAAA,MAAAA,EAAAC,MAAAC,KAAAF,GAAA,GAGAG,gBAAA,oBACAC,WAAA,SACAC,aAAA,gBACAC,oBAAA,iBACAC,kBAAA,gJACAC,YAAA,YACAC,YAAA,SAGAC,aAAAC,OAAAC,OAAA,MACAC,aAAA,CACAC,OAAAH,OAAAC,OAAA,MACAG,QAAAJ,OAAAC,OAAA,OAEAI,aAAA,CACAC,QAAAN,OAAAC,OAAA,MACAM,OAAAP,OAAAC,OAAA,MACAO,OAAAR,OAAAC,OAAA,MACAQ,OAAAT,OAAAC,OAAA,MACAS,OAAAV,OAAAC,OAAA,MACAb,MAAAY,OAAAC,OAAA,MACAU,IAAAX,OAAAC,OAAA,OAEAW,WAAAZ,OAAAC,OAAA,MACAY,UAAAb,OAAAC,OAAA,MACAa,UAAA,IAAAC,KCjDAzC,OAAA0C,WAAA,YAAAA,QAAAC,aACAD,QAAAC,UAAAC,QAAA,SAAAC,GACA,IACAC,EADAC,GAAAC,KAAAC,UAAAD,KAAAE,eAAAC,iBAAAN,GAEAO,EAAAJ,KACA,GAEA,IADAF,EAAAC,EAAAM,SACAP,GAAA,GAAAC,EAAAO,KAAAR,KAAAM,WACAN,EAAA,IAAAM,EAAAA,EAAAG,gBACA,OAAAH,CACA,GAIApD,OAAAwD,YAAA,YAAAA,SAAAb,aACAa,SAAAb,UAAAc,QAAAzC,MAAA2B,UAAAc,SAIA,mBAAAzD,OAAA0D,iBACA1D,OAAA0D,eAAA,SAAAC,GACAC,QAAAC,UAAAC,KAAAH,GAAAI,OAAAC,GAAAC,YAAA,KAAA,MAAAD,MACA,GAIAhE,OAAAkE,QAAA,gBAAAA,KAAAvB,YACAjB,OAAAyC,eAAAD,KAAAvB,UAAA,cAAA,CACAyB,IAAA,WAAA,OAAAnB,SAAAoB,SAAArB,KAAA,IAKAhD,OAAA0C,WAAA,oBAAAA,QAAAC,aACAD,QAAAC,UAAA2B,gBAAA,SAAAC,EAAAC,GACAxB,KAAAyB,aAAAF,IACA,IAAAC,GAAAxB,KAAA0B,gBAAAH,IAEA,IAAAC,GAAAxB,KAAA2B,aAAAJ,EAAA,GAEA,GC5CA,WAIA,IAEAK,EAAAlD,OAAAiB,UAAAiC,SACAC,EAAAnD,OAAAiB,UAAAkC,eAEAC,EAAA,OACAC,EAAA,iEAEAC,EAAA,SAAAC,EAAAC,GACA,OAAAD,IAAAC,GAAAD,GAAAA,GAAAC,GAAAA,CACA,EAEAC,EAAA,SAAArE,EAAAsE,GAEA,IADA,IAAA/B,EAAAvC,EAAAuC,OACAA,KACA,GAAA2B,EAAAlE,EAAAuC,GAAA,GAAA+B,GACA,OAAA/B,EAGA,OAAA,CACA,EASAgC,EAAA,SAAAC,EAAAF,GACA,OANA,WADAG,SADAN,EAQAG,KANA,UAAAG,GAAA,UAAAA,GAAA,WAAAA,EACA,cAAAN,EACA,OAAAA,GAKAK,EAAA,iBAAAF,EAAA,SAAA,QACAE,EAAAE,IAVA,IAAAP,EACAM,CAUA,EAEAE,EAAA,SAAAC,GACA,IAAAC,GAAA,EACAtC,EAAA,MAAAqC,EAAA,EAAAA,EAAArC,OAGA,IADAL,KAAA4C,UACAD,EAAAtC,GAAA,CACA,IAAAwC,EAAAH,EAAAC,GACA3C,KAAA8C,IAAAD,EAAA,GAAAA,EAAA,GACA,CACA,EAEAJ,EAAA9C,UAAA,CACAiD,MAAA,WACA5C,KAAA+C,SAAArE,OAAAC,OAAA,MACAqB,KAAAgD,KAAA,CACA,EAEAC,OAAA,SAAAb,GACA,IAAAc,EAAAlD,KAAAmD,IAAAf,WAAApC,KAAA+C,SAAAX,GAEA,OADApC,KAAAgD,MAAAE,EAAA,EAAA,EACAA,CACA,EAEA9B,IAAA,SAAAgB,GACA,IAAAc,EAAAlD,KAAA+C,SAAAX,GACA,OAAAc,IAAAE,oBAAAvF,EAAAqF,CACA,EAEAC,IAAA,SAAAf,GACA,YAAAvE,IAAAmC,KAAA+C,SAAAX,EACA,EAEAU,IAAA,SAAAV,EAAAH,GAGA,OAFAjC,KAAAgD,MAAAhD,KAAAmD,IAAAf,GAAA,EAAA,EACApC,KAAA+C,SAAAX,QAAAvE,IAAAoE,EAAAmB,eAAAnB,EACAjC,IACA,GAGA,IAAAqD,EAAA,SAAAX,GACA,IAAAC,GAAA,EACAtC,EAAA,MAAAqC,EAAA,EAAAA,EAAArC,OAEA,IADAL,KAAA4C,UACAD,EAAAtC,GAAA,CACA,IAAAwC,EAAAH,EAAAC,GACA3C,KAAA8C,IAAAD,EAAA,GAAAA,EAAA,GACA,CACA,EAEAQ,EAAA1D,UAAA,CACAiD,MAAA,WACA5C,KAAA+C,SAAA,GACA/C,KAAAgD,KAAA,CACA,EAEAC,OAAA,SAAAb,GACA,IAAAE,EAAAtC,KAAA+C,SACAJ,EAAAR,EAAAG,EAAAF,GACA,QAAAO,EAAA,KAIAA,GADAL,EAAAjC,OAAA,EAEAiC,EAAAgB,MAEAhB,EAAAiB,OAAAZ,EAAA,KAEA3C,KAAAgD,MACA,EACA,EAEA5B,IAAA,SAAAgB,GACA,IAAAE,EAAAtC,KAAA+C,SACAJ,EAAAR,EAAAG,EAAAF,GACA,OAAAO,EAAA,OAAA9E,EAAAyE,EAAAK,GAAA,EACA,EAEAQ,IAAA,SAAAf,GACA,OAAAD,EAAAnC,KAAA+C,SAAAX,IAAA,CACA,EAEAU,IAAA,SAAAV,EAAAH,GACA,IAAAK,EAAAtC,KAAA+C,SACAJ,EAAAR,EAAAG,EAAAF,GAOA,OANAO,EAAA,KACA3C,KAAAgD,KACAV,EAAAkB,KAAA,CAAApB,EAAAH,KAEAK,EAAAK,GAAA,GAAAV,EAEAjC,IACA,GAGA,IAAAyD,EAAA,SAAAf,GACA,IAAAC,GAAA,EACAtC,EAAA,MAAAqC,EAAA,EAAAA,EAAArC,OAEA,IADAL,KAAA4C,UACAD,EAAAtC,GAAA,CACA,IAAAwC,EAAAH,EAAAC,GACA3C,KAAA8C,IAAAD,EAAA,GAAAA,EAAA,GACA,CACA,EAEAY,EAAA9D,UAAA,CACAiD,MAAA,WACA5C,KAAAgD,KAAA,EACAhD,KAAA+C,SAAA,CACAW,KAAA,IAAAjB,EACAD,IAAA,IAAAmB,IACAzE,OAAA,IAAAuD,EAEA,EAEAQ,OAAA,SAAAb,GACA,IAAAc,EAAAb,EAAArC,KAAA+C,SAAAX,GAAA,OAAAA,GAEA,OADApC,KAAAgD,MAAAE,EAAA,EAAA,EACAA,CACA,EAEA9B,IAAA,SAAAgB,GACA,OAAAC,EAAArC,KAAA+C,SAAAX,GAAAhB,IAAAgB,EACA,EAEAe,IAAA,SAAAf,GACA,OAAAC,EAAArC,KAAA+C,SAAAX,GAAAe,IAAAf,EACA,EAEAU,IAAA,SAAAV,EAAAH,GACA,IAAAK,EAAAD,EAAArC,KAAA+C,SAAAX,GACAY,EAAAV,EAAAU,KAGA,OAFAV,EAAAQ,IAAAV,EAAAH,GACAjC,KAAAgD,MAAAV,EAAAU,MAAAA,EAAA,EAAA,EACAhD,IACA,GAGA,IAAA4D,EAAA,SAAAlB,GACA,IAAAJ,EAAAtC,KAAA+C,SAAA,IAAAM,EAAAX,GACA1C,KAAAgD,KAAAV,EAAAU,IACA,EAEAY,EAAAjE,UAAA,CACAiD,MAAA,WACA5C,KAAA+C,SAAA,IAAAM,EACArD,KAAAgD,KAAA,CACA,EAEAC,OAAA,SAAAb,GACA,IAAAE,EAAAtC,KAAA+C,SACAG,EAAAZ,EAAA,OAAAF,GAEA,OADApC,KAAAgD,KAAAV,EAAAU,KACAE,CACA,EAEA9B,IAAA,SAAAgB,GACA,OAAApC,KAAA+C,SAAA3B,IAAAgB,EACA,EAEAe,IAAA,SAAAf,GACA,OAAApC,KAAA+C,SAAAI,IAAAf,EACA,EAEAU,IAAA,SAAAV,EAAAH,GACA,IAAAK,EAAAtC,KAAA+C,SACA,GAAAT,aAAAe,EAAA,CACA,IAAAQ,EAAAvB,EAAAS,SACA,GAAAc,EAAAxD,OAAAyD,IAGA,OAFAD,EAAAL,KAAA,CAAApB,EAAAH,IACAjC,KAAAgD,OAAAV,EAAAU,KACAhD,KAEAsC,EAAAtC,KAAA+C,SAAA,IAAAU,EAAAI,EACA,CAGA,OAFAvB,EAAAQ,IAAAV,EAAAH,GACAjC,KAAAgD,KAAAV,EAAAU,KACAhD,IACA,GAGA,IAWA+D,EAAA,SAAA9B,GACA,OAAAL,EAAAoC,KAAA/B,GAAAgC,MAAA,GAAA,EACA,EAEAC,EAAA,SAAAjC,GACA,OAAAjE,MAAAkG,QAAAjC,EACA,EAEAkC,EAAA,SAAAlC,GACA,OAAA,MAAAA,GAAA,iBAAAA,CACA,EAqBAmC,EAAA,SAAAC,GACA,IAAAnB,EAAA,IAAAmB,EAAAC,YAAAD,EAAAE,YAEA,OADA,IAAAC,WAAAtB,GAAAJ,IAAA,IAAA0B,WAAAH,IACAnB,CACA,EAOAuB,EAAA,SAAAC,GACA,IAAAC,EAAAP,EAAAM,EAAAC,QACA,OAAA,IAAAD,EAAAJ,YAAAK,EAAAD,EAAAE,WAAAF,EAAArE,OACA,EAiBAwE,EAAA,SAAAzF,EAAAmD,GACA,IAVAuC,EACAxC,EAPAyC,EACA7B,EAXA8B,EACAL,EAyBAM,EAAA7F,EAAAkF,YAEA,OAAA/B,GACA,IAAA,cACA,OAAA6B,IAEA,IAAA,UACA,IAAA,OACA,OAAA,IAAAa,GAAA7F,GAEA,IAAA,WACA,OApCAuF,EAAAP,GADAY,EAqCA5F,GApCAuF,QACA,IAAAK,EAAAV,YAAAK,EAAAK,EAAAJ,WAAAI,EAAAT,YAqCA,IAAA,eACA,IAAA,eACA,IAAA,YACA,IAAA,aACA,IAAA,aACA,IAAA,aACA,IAAA,oBACA,IAAA,cACA,IAAA,cACA,OAAAE,EAAArF,GAEA,IAAA,MACA,IAAA,MACA,OAAA,IAAA6F,EAEA,IAAA,SACA,IAAA,SACA,OAAA,IAAAA,EAAA7F,GAEA,IAAA,SACA,OAhDA8D,EAAA,IADA6B,EAiDA3F,GAhDAkF,YAAAS,EAAAG,OAAApD,EAAAqD,KAAAJ,KACAK,UAAAL,EAAAK,UACAlC,EAgDA,IAAA,YACA,OA7CAZ,EAAAmC,GADAK,EA8CA1F,GA7CAkD,MACA,IAAAwC,EAAAR,YAAAhC,EAAAwC,EAAAO,MAAAP,EAAAQ,QA8CA,EAEAC,EAAA,SAAAtD,EAAAG,EAAAhD,EAAAoG,GACA,IAAAtC,EAEA,IAAAiB,EAAAlC,GACA,OAAAA,EAGA,IApDAnE,EAoDAyE,EAAAwB,EAAA9B,GAGAiB,EADAgB,EAAAjC,GArDA,IADAnE,EAuDAmE,GAtDAqC,YAAAxG,EAAAuC,QAwDA,UAAAkC,EACA,CAAA,EAEAsC,EAAA5C,EAAAM,GAMA,IAAAkD,GAFAD,EAAAA,GAAA,IAAA5B,GAEAxC,IAAAa,GACA,GAAAwD,EACA,OAAAA,EAIA,GAFAD,EAAA1C,IAAAb,EAAAiB,GAEA,OAAAX,EAKA,OAJAN,EAAAxB,SAAA,SAAAiF,EAAAtD,GACAc,EAAAJ,IAAAV,EAAAmD,EAAAG,EAAAtD,EAAAH,EAAAuD,GACA,IAEAtC,EAGA,GAAA,OAAAX,EAKA,OAJAN,EAAAxB,SAAA,SAAAiF,GACAxC,EAAAyC,IAAAJ,EAAAG,EAAAA,EAAAzD,EAAAuD,GACA,IAEAtC,EAGA,GAtIA,SAAAjB,GACA,OAAAkC,EAAAlC,IAAAF,EAAA6D,KAAA7B,EAAA9B,GACA,CAoIA4D,CAAA5D,GACA,OAAAiB,EAGA,IAAA4C,EAAA5B,EAAAjC,QAAApE,EAAAa,OAAAqH,KAAArH,OAAAuD,IASA,OA1KA,SAAAnE,EAAAkI,GAGA,IAFA,IAAArD,GAAA,EACAtC,EAAAvC,EAAAuC,SACAsC,EAAAtC,IACA,IAAA2F,EAAAlI,EAAA6E,GAAAA,EAAA7E,KAKA,CAyJAmI,CAAAH,GAAA7D,GAAA,SAAAyD,EAAAtD,GACA0D,IAEAJ,EAAAzD,EADAG,EAAAsD,IAzIA,SAAAtG,EAAAgD,EAAAH,GAEA,GAAA,aAAAG,EAAA,CAEA,IAAA8D,EAAA9G,EAAAgD,GAEAP,EAAAmC,KAAA5E,EAAAgD,IAAAJ,EAAAkE,EAAAjE,UAIApE,IAAAoE,GAAAG,KAAAhD,KAFAA,EAAAgD,GAAAH,EANA,CAWA,CA+HAkE,CAAAjD,EAAAd,EAAAmD,EAAAG,EAAAtD,EAAAH,EAAAuD,GACA,IAEAtC,CACA,EAEAjG,IAAAsI,MAAAA,CAEA,CA1YA,GCAA,WAIA,IAAA1D,EAAAnD,OAAAiB,UAAAkC,eAEAE,EAAA,iEAMAgC,EAAA,SAAA9B,GACA,OAAAL,SAAAoC,KAAA/B,GAAAgC,MAAA,GAAA,EACA,EAEAE,EAAA,SAAAlC,GACA,MAAA,iBAAAA,GAAA,OAAAA,CACA,EAuDAmE,EAAA,SAAAtI,EAAAoE,GACA,IAAAmE,EAAAvI,EAAAuC,OAGA,GAAAgG,GAFAnE,EAAA7B,OAGA,OAAA,EAKA,IAFA,IAAAsC,GAAA,IAEAA,EAAA0D,GAAA,CACA,IAAAC,EAAAxI,EAAA6E,GACA4D,EAAArE,EAAAS,GAEA,GAAA2D,IAAAC,IAAAC,EAAAF,EAAAC,GACA,OAAA,CAEA,CAEA,OAAA,CACA,EAiDAE,EAAA,SAAArH,EAAA8C,GACA,IA3HAD,EA2HAyE,EAAA1I,MAAAkG,QAAA9E,GACAuH,EAAA3I,MAAAkG,QAAAhC,GACA0E,EAAAF,EAAA,QAAA3C,EAAA3E,GACAyH,EAAAF,EAAA,QAAA5C,EAAA7B,GAGA4E,EAAAF,GAAAC,EAEA,OAAAC,KAJA,UAAAF,GAKAF,GAnIAvC,EADAlC,EAoIA7C,IAnIA2C,EAAA6D,KAAA7B,EAAA9B,IAoIAmE,EAAAhH,EAAA8C,GA/GA,SAAA9C,EAAA8C,EAAAK,GACA,OAAAA,GACA,IAAA,WACA,GAAAnD,EAAAmF,YAAArC,EAAAqC,YAAAnF,EAAAwF,YAAA1C,EAAA0C,WACA,OAAA,EAEAxF,EAAAA,EAAAuF,OACAzC,EAAAA,EAAAyC,OAEA,IAAA,cACA,QAAAvF,EAAAmF,YAAArC,EAAAqC,aAAAiC,EAAA,IAAAhC,WAAApF,GAAA,IAAAoF,WAAAtC,KAKA,IAAA,UACA,IAAA,OACA,IAAA,SACA,OApDA,SAAAD,EAAAC,GACA,OAAAD,IAAAC,GAAAD,GAAAA,GAAAC,GAAAA,CACA,CAkDAF,EAAA5C,GAAA8C,GAEA,IAAA,SACA,IAAA,SACA,OAAA9C,GAAA2H,OAAA7E,GAEA,IAAA,MACA,IAAA,MACA,OAAA9C,EAAA4D,MAAAd,EAAAc,MACAoD,EAAApI,MAAAC,KAAAmB,GAAApB,MAAAC,KAAAiE,IAEA,CAmFA8E,CAAA5H,EAAA8C,EAAA0E,KAGAE,GA9DA,SAAA1H,EAAA8C,GACA,IAAA+E,EAAAvI,OAAAqH,KAAA3G,GACA8H,EAAAD,EAAA5G,OAIA,GAAA6G,GAHAxI,OAAAqH,KAAA7D,GACA7B,OAGA,OAAA,EAKA,IAFA,IAAA+B,EAAAO,EAAAuE,EAEAvE,KAEA,GADAP,EAAA6E,EAAAtE,IACAd,EAAAmC,KAAA9B,EAAAE,GACA,OAAA,EAMA,IAFA,IAAAc,GAAA,IAEAP,EAAAuE,GAAA,CAEA,IAAAhB,EAAA9G,EADAgD,EAAA6E,EAAAtE,IAEA4D,EAAArE,EAAAE,GAEA,GAAA8D,IAAAK,IAAAC,EAAAN,EAAAK,GAAA,CACArD,GAAA,EACA,KACA,CACA,CAEA,GAAAA,EAAA,CACA,IAAAiE,EAAA/H,EAAAkF,YACA8C,EAAAlF,EAAAoC,YAEA6C,GAAAC,KACA,gBAAAhI,MAAA,gBAAA8C,IACA,mBAAAiF,GAAAA,aAAAA,GACA,mBAAAC,GAAAA,aAAAA,IACAlE,GAAA,EAEA,CAEA,OAAAA,CACA,CAqBAmE,CAAAjI,EAAA8C,EACA,EAEAsE,EAAA,SAAAvE,EAAAC,GACA,OAAAD,IAAAC,IAGA,MAAAD,GAAA,MAAAC,IAAAiC,EAAAlC,KAAAkC,EAAAjC,GACAD,GAAAA,GAAAC,GAAAA,EAEAuE,EAAAxE,EAAAC,GACA,EAEAjF,IAAAuJ,MAAAA,CAEA,CAhLA,GCCAvJ,IAAAqK,YAAA,CAAAC,EAAAC,KACA,MAAAC,EAAA,WACAF,EAAAjD,aACAiD,EAAAjD,YAAAoD,MAAA1H,KAAA2H,UAEA,EAUA,OARAH,GAAAA,EAAA7H,YACA8H,EAAA9H,UAAAjB,OAAAC,OAAA6I,EAAA7H,YAGAjB,OAAAkJ,OAAAH,EAAA9H,UAAA4H,GAEAE,EAAA9H,UAAA2E,YAAAmD,EAEAA,CAAA,EAGAxK,IAAA4K,MAAAC,IACA,YAAA7H,SAAA8H,WACA9H,SAAA+H,iBAAA,oBAAA,KAAAF,GAAA,GAAA,CAAAG,MAAA,IAEAH,GACA,EAIA7K,IAAAiL,OAAA9K,IACAsB,OAAAkJ,OAAA3K,IAAAG,OAAAA,EAAA,EAIAH,IAAAkL,UAAA,CAAA5G,EAAAgG,KACA,GAAAA,EAAA,CACA,MAAAa,EAAAb,EAAAc,QAAApL,IAAAkL,UAAAZ,EAAAc,SAAApL,IAAAqL,cAEA,mBAAAf,EAAAgB,cACAhB,EAAAgB,YAAA7J,OAAAkJ,OAAA,CAAA,EAAAQ,EAAAzI,UAAA4I,YAAAhB,EAAAgB,cAEAhB,EAAAiB,WAAA9J,OAAAkJ,OAAA,CAAA,EAAAQ,EAAAzI,UAAA6I,WAAAjB,EAAAiB,YACAjB,EAAAkB,QAAA/J,OAAAkJ,OAAA,CAAA,EAAAQ,EAAAzI,UAAA8I,QAAAlB,EAAAkB,SACAlB,EAAAmB,OAAAhK,OAAAkJ,OAAA,CAAA,EAAAQ,EAAAzI,UAAA+I,OAAAnB,EAAAmB,QAEAnB,EAAA1F,eAAA,iBACA0F,EAAAjD,YAAA,SAAAqE,EAAAnB,GACAY,EAAApE,KAAAhE,KAAA2I,EAAAnB,EACA,GAGAD,EAAAhF,KAAAhB,EAEA,MAAA4G,EAAAlL,IAAAqK,YAAAC,EAAAa,GACAD,EAAAE,QAAAd,EAAAc,QAEApL,IAAAwB,aAAA8C,GAAA4G,CACA,CAEA,OAAAlL,IAAAwB,aAAA8C,EAAA,EAIAtE,IAAA2L,UAAA,CAAArH,EAAAsH,EAAAf,KACA7K,IAAA2B,aAAAiK,GAAAtH,GAAAuG,CAAA,EAIA7K,IAAA6L,UAAA,CAAAvG,EAAAhB,EAAAuG,KACA7K,IAAA8B,aAAAwD,GAAAhB,GAAAuG,CAAA,EAEA7K,IAAA8L,WAAA,CAAAxG,EAAAyG,KACA,IAAA,MAAAzH,KAAAyH,EACA/L,IAAA6L,UAAAvG,EAAAhB,EAAAyH,EAAAzH,GACA,EAIAtE,IAAAgM,QAAA,CAAA1G,EAAAhB,EAAAuG,KACAA,IAAA7K,IAAAqC,WAAAiD,GAAAhB,GAAAuG,GACA7K,IAAAqC,WAAAiD,GAAAhB,IAIAtE,IAAAiM,OAAA,CAAA3H,EAAA4H,KACAlM,IAAAsC,UAAAgC,GAAA4H,CAAA,EAEAlM,IAAAmM,QAAAC,IACA,IAAA,MAAA9H,KAAA8H,EACApM,IAAAiM,OAAA3H,EAAA8H,EAAA9H,GACA,EAIAtE,IAAAqM,QAAAC,IACAtM,IAAAuC,UAAAmG,IAAA4D,EAAA,EC9FAtM,IAAAuM,SAAA,CAAA1B,EAAA2B,KACA,IAAAC,EAEA,OAAA,WACA,MAAAC,EAAA,KACA7B,EAAAJ,MAAA1H,KAAA2H,UAAA,EAGA8B,GACAG,aAAAF,GACAA,EAAAzI,WAAA0I,EAAAF,KAEAI,qBAAAH,GACAA,EAAAI,sBAAAH,GAEA,CAAA,EAGA1M,IAAA8M,SAAA,CAAAjC,EAAA2B,KACA,IAAAO,EAAAD,GAAA,EAEA,OAAA,WAGA,GAFAC,EAAAhM,MAAAC,KAAA0J,YAEAoC,EAAA,CACA,MAAAJ,EAAA,KACAI,GAAA,EACAC,GAAAlC,EAAAJ,MAAA1H,KAAAgK,EAAA,EAGAlC,EAAAJ,MAAA1H,KAAAgK,GAEAA,OAAAnM,EACAkM,GAAA,EAEAN,EACAxI,WAAAgJ,GAAAR,GAEAK,sBAAAH,EAEA,CACA,CAAA,EAGA1M,IAAAiN,SAAA,CACAC,GAAA,EACAC,IAAA,EACAC,MAAA,GACAC,IAAA,GACAC,MAAA,GACAC,KAAA,GACAC,GAAA,GACAC,MAAA,GACAC,KAAA,GACA1H,OAAA,GAEA2H,UAAA,EACAC,MAAA,GACAC,SAAA,GACAC,OAAA,GACAC,OAAA,GACAC,SAAA,GACAC,IAAA,GACAC,KAAA,GACAC,UAAA,GACAC,QAAA,GACAC,WAAA,GACAC,UAAA,GACAC,OAAA,GACAC,QAAA,IACAC,WAAA,IACAC,UAAA,IACAnF,MAAA,IACAoF,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,MAAA,IACAC,UAAA,IACAC,YAAA,IACAC,UAAA,IACAC,aAAA,IACAC,MAAA,IAEAC,QAAA,GACAC,QAAA,GACAC,QAAA,GACAC,QAAA,GACAC,QAAA,IACAC,QAAA,IACAC,QAAA,IACAC,QAAA,IACAC,QAAA,IACAC,QAAA,IACAC,eAAA,IACAC,UAAA,IACAC,gBAAA,IACAC,aAAA,IAEAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IAEAC,OAAA,GACAC,OAAA,GACAC,OAAA,GACAC,OAAA,GACAC,OAAA,GACAC,OAAA,GACAC,OAAA,GACAC,OAAA,GACAC,OAAA,GACAC,OAAA,GAEAC,KAAA,CAAA,GAAA,IACAC,KAAA,CAAA,GAAA,IACAC,KAAA,CAAA,GAAA,IACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACA3J,KAAA,CAAA,GAAA,KACA4J,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,KACAC,KAAA,CAAA,GAAA,MAGAhT,IAAAiT,cAAA,SAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAAxG,EAEA,MAAAyG,EAAA,SAAAC,GACA,KAAAH,EAAAI,MAAAD,EAAAN,SAAAM,EAAAE,kBACAL,EAAAM,MAAAH,EAAAI,YACAP,EAAAQ,KAAAL,EAAAM,WACAT,EAAAU,OAAAP,EAAAQ,aACAX,EAAAY,MAAAT,EAAAU,aAEAV,EAAAW,eAAAX,GAAAY,KAAA3S,OAAAqH,KAAAuK,GAAAgB,UAAAb,EAAAW,eAAAX,GAAAY,MAAA,CAIA,IAAAZ,EAAAW,eAAAX,aAAAc,WAAA,CACA,GAAA,MAAAjB,EAAAkB,QAAAf,EAAAe,SAAAC,SAAAnB,EAAAkB,OAAA,KAAA,GAAA,OACA,GAAAlB,EAAAoB,SAAA,GAAAjB,EAAAe,OAAA,OACA,GAAAlB,EAAAqB,SAAA,GAAAlB,EAAAe,OAAA,OACA,GAAAlB,EAAAsB,SAAA,GAAAnB,EAAAe,OAAA,OACA,GAAAlB,EAAAuB,SAAA,GAAApB,EAAAe,OAAA,OACA,GAAAlB,EAAAwB,SAAA,GAAArB,EAAAe,OAAA,MACA,CAEA,IAAAf,EAAAW,eAAAX,aAAAsB,cAAA,CACA,IAAAhM,EAAA,GAEArH,OAAAqH,KAAAuK,GAAA7P,SAAA,SAAA2B,GACA,IAAA4P,EAAAP,SAAArP,EAAA,IAEA4P,EACAjM,EAAAvC,KAAAwO,GACA/U,IAAAiN,SAAA9H,IACA2D,EAAAvC,KAAAvG,IAAAiN,SAAA9H,GAEA,IAEA,IAAA,IAAAtC,EAAA,EAAAA,EAAAiG,EAAA1F,OAAAP,IACA,GAAA9B,MAAAkG,QAAA6B,EAAAjG,KACA,IAAAiG,EAAAjG,GAAAwR,SAAAb,EAAAwB,OAAA,YACA,GAAAxB,EAAAwB,QAAAlM,EAAAjG,GAAA,MAEA,CAyCA,GAvCAwQ,EAAA4B,MAAAzB,EAAA0B,kBACA7B,EAAA8B,SAAA3B,EAAA4B,iBAEA5B,EAAAW,gBAAAX,EAAAA,EAAAW,eAEAX,EAAA6B,QAAA7B,EAAA6B,MAAA,CAAA,GAEA7B,aAAAc,aACAd,EAAA6B,MAAAvB,OAAAN,EAAAM,OACAN,EAAA6B,MAAAzB,QAAAJ,EAAAI,QACAJ,EAAA6B,MAAAnB,QAAAV,EAAAU,QACAV,EAAA6B,MAAArB,SAAAR,EAAAQ,SACAR,EAAA6B,MAAAC,MAAA9B,EAAA8B,MACA9B,EAAA6B,MAAAE,MAAA/B,EAAA+B,MACA/B,EAAA6B,MAAAG,EAAAhC,EAAAgC,GAAAhC,EAAAiC,QACAjC,EAAA6B,MAAAK,EAAAlC,EAAAkC,GAAAlC,EAAAmC,QACAnC,EAAA6B,MAAAd,OAAAf,EAAAe,QAGAf,aAAAoC,aACApC,EAAA6B,MAAAQ,OAAArC,EAAAqC,OACArC,EAAA6B,MAAAS,OAAAtC,EAAAsC,OACAtC,EAAA6B,MAAAU,OAAAvC,EAAAuC,OACAvC,EAAA6B,MAAAW,UAAAxC,EAAAwC,WAGAjW,OAAAkW,cAAAzC,aAAAyC,eACAzC,EAAA6B,MAAAa,UAAA1C,EAAA0C,UACA1C,EAAA6B,MAAAjN,MAAAoL,EAAApL,MACAoL,EAAA6B,MAAAhN,OAAAmL,EAAAnL,OACAmL,EAAA6B,MAAAc,SAAA3C,EAAA2C,SACA3C,EAAA6B,MAAAe,mBAAA5C,EAAA4C,mBACA5C,EAAA6B,MAAAgB,MAAA7C,EAAA6C,MACA7C,EAAA6B,MAAAiB,MAAA9C,EAAA8C,MACA9C,EAAA6B,MAAAkB,MAAA/C,EAAA+C,MACA/C,EAAA6B,MAAAmB,YAAAhD,EAAAgD,YACAhD,EAAA6B,MAAAoB,UAAAjD,EAAAiD,WAGA1W,OAAA2W,YAAAlD,aAAAkD,WAAA,CACA,MAAAC,EAAAC,IAAA,CACAC,WAAAD,EAAAC,WACAC,QAAAF,EAAAE,QACAC,QAAAH,EAAAG,QACAtB,QAAAmB,EAAAnB,QACAE,QAAAiB,EAAAjB,QACAL,MAAAsB,EAAAtB,MACAC,MAAAqB,EAAArB,QAGA/B,EAAA6B,MAAAvB,OAAAN,EAAAM,OACAN,EAAA6B,MAAAzB,QAAAJ,EAAAI,QACAJ,EAAA6B,MAAAnB,QAAAV,EAAAU,QACAV,EAAA6B,MAAArB,SAAAR,EAAAQ,SACAR,EAAA6B,MAAA2B,QAAAjW,MAAAC,KAAAwS,EAAAwD,SAAAzR,IAAAoR,GACAnD,EAAA6B,MAAA4B,eAAAlW,MAAAC,KAAAwS,EAAAyD,gBAAA1R,IAAAoR,GACAnD,EAAA6B,MAAA6B,cAAAnW,MAAAC,KAAAwS,EAAA0D,eAAA3R,IAAAoR,GACAnD,EAAA6B,MAAA8B,SAAA3D,EAAA2D,SACA3D,EAAA6B,MAAA+B,MAAA5D,EAAA4D,KACA,CAaA,GAXA5D,aAAAsB,gBACAtB,EAAA6B,MAAAvB,OAAAN,EAAAM,OACAN,EAAA6B,MAAAzB,QAAAJ,EAAAI,QACAJ,EAAA6B,MAAAnB,QAAAV,EAAAU,QACAV,EAAA6B,MAAArB,SAAAR,EAAAQ,SACAR,EAAA6B,MAAAgC,SAAA7D,EAAA6D,SACA7D,EAAA6B,MAAAiC,OAAA9D,EAAA8D,OACA9D,EAAA6B,MAAAkC,KAAA/D,EAAA+D,KACA/D,EAAA6B,MAAAlQ,IAAAqO,EAAArO,KAGAkO,EAAA9G,SACAI,aAAA2G,GACAA,EAAAtP,YAAA,KACAoP,EAAA3I,MAAA1H,KAAA2H,UAAA,GACA8J,SAAAnB,EAAA9G,SAAA,KAAA,OACA,KAAA8G,EAAAvG,SASA,OAAAsG,EAAA3I,MAAA1H,KAAA2H,WARAoC,IACAA,GAAA,EACAsG,EAAA3I,MAAA1H,KAAA2H,WACA1G,YAAA,KACA8I,GAAA,IACA0H,SAAAnB,EAAAvG,SAAA,KAAA,GAIA,CAtHA,CAuHA,EAIA,OAFAuG,EAAAA,GAAA,CAAA,EAEAtT,OAAAyX,MAAA,IAAAtE,EAAAuE,UACAD,KAAAtE,GAAAG,EAAArI,KAAA,OAAA,MAAAmI,EAAAuE,QAAA,KAAA,KAAAnE,IAAAF,EAAAsE,SACA,IAAAH,KAAAtE,GAAA0E,IAAAzE,EAAAuE,QAAA,KAAA,KAAAnE,IAAAF,EAAAsE,UACA5X,OAAA8X,SAAAxE,EAAAsE,SACAE,OAAA3E,GAAAG,EAAArI,KAAA,MAAA,MAAAmI,EAAAuE,QAAA,KAAA,KAAAnE,GACA,IAAAsE,OAAA3E,GAAA0E,IAAAzE,EAAAuE,QAAA,KAAA,KAAAnE,KAEAL,EAAAnI,iBAAAoI,EAAAuE,QAAA,KAAA,KAAAnE,EAAA,CACAoE,UAAAtE,EAAAsE,QACA3M,OAAAqI,EAAArI,KACA8M,UAAAzE,EAAAyE,UAEA,IAAA5E,EAAA6E,oBAAA5E,EAAAuE,QAAA,KAAA,KAAAnE,IAAAF,EAAAsE,SAEA,EC3SA3X,IAAAgY,UAAA,CAEAC,WAAA,CAAAC,EAAAC,IACA,IAAAxU,SAAA,CAAAC,EAAAwU,KACA,MAAAC,EAAA,IAAAC,WACAD,EAAAE,OAAA,IAAA3U,EAAAyU,EAAApS,QACAoS,EAAAG,QAAA,IAAAJ,EAAAC,EAAAI,OACAJ,EAAAF,GAAAD,EAAA,IAIAQ,kBAAA,SAAAC,GACA,OAAA3Y,IAAAgY,UAAAC,WAAAU,EAAA,oBACA,EAEAC,mBAAA,SAAAD,GACA,OAAA3Y,IAAAgY,UAAAC,WAAAU,EAAA,qBACA,EAEAE,cAAA,SAAAF,GACA,OAAA3Y,IAAAgY,UAAAC,WAAAU,EAAA,gBACA,EAEAG,mBAAA,SAAAH,GACA,OAAA3Y,IAAAgY,UAAAC,WAAAU,EAAA,iBAAA9U,MAAAkV,GACAA,EAAAC,UAAAD,EAAAE,QAAA,KAAA,IAEA,EAEAC,kBAAA,SAAA9R,EAAA9B,GACA,OAAA3B,QAAAC,QAAA,IAAAuV,KAAA,CAAA/R,GAAA,CAAA9B,SACA,EAEA8T,mBAAA,SAAAC,EAAA/T,GACA,MAAAgU,EAAA/R,WAAAvG,KAAAqY,GAAAE,GAAAA,EAAAC,WAAA,KACA,OAAA7V,QAAAC,QAAA,IAAAuV,KAAA,CAAAG,GAAA,CAAAhU,SACA,EAEAmU,cAAA,SAAAV,GACA,MAAA1T,KAAAA,EAAAC,KAAAA,GAAAtF,IAAAgY,UAAA0B,aAAAX,GACA,OAAA/Y,IAAAgY,UAAA2B,mBAAAtU,EAAAC,EACA,EAEAqU,mBAAA,SAAAC,EAAAtU,GACA,MAAA+T,EAAAtZ,OAAA8Z,KAAAD,GACA,OAAA5Z,IAAAgY,UAAAoB,mBAAAC,EAAA/T,EACA,EAEAoU,aAAA,SAAAX,GACA,MAAAe,EAAAf,EAAAe,MAAA,+BACA,MAAA,CACAC,UAAAD,EAAA,GACAE,SAAAF,EAAA,GACAzU,KAAAyU,EAAA,GACAxU,KAAAwU,EAAA,GAAAG,MAAA,KAAA,GAEA,EAEAC,eAAA,SAAAH,GACA,MAAAD,EAAAC,EAAAD,MAAA,+CACA,MAAA,CACAxU,KAAAwU,EAAA,GACAK,QAAAL,EAAA,GACAM,OAAAN,EAAA,GACAO,WAAAP,EAAA,GAAAA,EAAA,GAAAG,MAAA,KAAAK,QAAA,CAAAC,EAAAC,KACA,MAAArV,EAAAH,GAAAwV,EAAAP,MAAA,KAEA,OADAM,EAAApV,GAAAH,EACAuV,CAAA,GACA,CAAA,GAAA,CAAA,EAEA,GCpEA,CACA,MAAAE,EAAA,SAAAnV,GACA,MAAAoV,EAAAC,QAAArV,GAEA,OAAA,WACA,MAAAsV,EAAAF,EAAAjQ,MAAA1H,KAAA2H,WACA3G,EAAA,IAAA8W,MAAAvV,EAAAwV,eAGA,OAFA/W,EAAA2G,UAAAA,UACA3K,OAAAgb,cAAAhX,GACA6W,CACA,CACA,EAEAD,QAAAK,UAAAP,EAAA,aACAE,QAAAM,aAAAR,EAAA,eACA,CAEA1a,OAAAmb,WAAA,SAAAnX,GACAA,EAAAoX,OAAApX,EAAAoX,MAAAC,QACApY,SAAAoY,MAAArX,EAAAoX,MAAAC,MAEA,EAEApY,SAAAqY,gBAAAC,MAAAC,WAAA,SAEAvb,IAAA4K,OAAA,KAEAjH,QAAA6X,IAAAxb,IAAAuC,WAGAsB,MAAA,KACA,GAAA7D,IAAAyb,IACA,MAAAC,MAAA,wBAGAf,QAAAM,aAAA,CAAAG,MAAApY,SAAAoY,OAAA,IAEA,MAAAO,EAAA3Y,SAAA4Y,cAAA,kEAEA,IAAAD,EACA,MAAAD,MAAA,uBAGA,MAAAG,EAAA7b,IAAAkL,UAAA,OAEAlL,IAAAyb,IAAA,IAAAI,EAAAF,EAAA3b,IAAAgC,QAEAgB,SAAAqY,gBAAAC,MAAAC,WAAA,EAAA,IACAzX,OAAAgY,IAEAC,QAAAtD,MAAAqD,GACA9Y,SAAAqY,gBAAAC,MAAAC,WAAA,EAAA,GACA,IAGAvb,IAAAgc,OAAA,WAEA,IAAAC,EAAA,CAAA,EACAC,GAAA,EACArZ,EAAA,EACAO,EAAAsH,UAAAtH,OAGA,qBAAA3B,OAAAiB,UAAAiC,SAAAoC,KAAA2D,UAAA,MACAwR,EAAAxR,UAAA,GACA7H,KAuBA,IAnBA,IAAAsZ,EAAA,SAAA5B,GACA,IAAA,IAAA6B,KAAA7B,EAEA,aAAA6B,GAEA3a,OAAAiB,UAAAkC,eAAAmC,KAAAwT,EAAA6B,KAEAF,GAAA,oBAAAza,OAAAiB,UAAAiC,SAAAoC,KAAAwT,EAAA6B,IACAH,EAAAG,GAAApc,IAAAgc,QAAA,EAAAC,EAAAG,GAAA7B,EAAA6B,IAEA,MAAA7B,EAAA6B,KACAH,EAAAG,GAAA7B,EAAA6B,IAKA,EAGAvZ,EAAAO,EAAAP,IAAA,CAEAsZ,EADAzR,UAAA7H,GAEA,CAEA,OAAAoZ,CACA,EAEAjc,IAAAqc,UAAA,SAAA9B,GACA,GAAA,iBAAAA,EAAA,CACA,IAAA+B,EAAAC,EAAA,EAAAC,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,IAEA,GAAA,OAAAjC,EAAAO,cACA,OAAA,IAAA2B,KAGA,GAAAH,EAAA,wIAAApU,KAAAqS,GAAA,CACA,IAAA,IAAAmC,EAAA7Z,EAAA,EAAA6Z,EAAAF,EAAA3Z,KAAAA,EACAyZ,EAAAI,IAAAJ,EAAAI,IAAA,EAMA,OAHAJ,EAAA,KAAAA,EAAA,IAAA,GAAA,EACAA,EAAA,IAAAA,EAAA,IAAA,OAEA1b,IAAA0b,EAAA,GACA,IAAAG,KAAAH,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAEA,MAAAA,EAAA,SAAA1b,IAAA0b,EAAA,KACAC,EAAA,GAAAD,EAAA,IAAAA,EAAA,IACA,MAAAA,EAAA,KAAAC,EAAA,EAAAA,IAGA,IAAAE,KAAAA,KAAAE,IAAAL,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAC,EAAAD,EAAA,GAAAA,EAAA,KAEA,CAAA,GAAAA,EAAA,mFAAApU,KAAAqS,GAAA,CACA,IAAAqC,EAAA,IAAAH,KAYA,MAXA,MAAAH,EAAA,IACAM,EAAAC,aAAAP,EAAA,IAAA,GACAM,EAAAE,eAAAR,EAAA,IAAA,GACAM,EAAAG,eAAAT,EAAA,IAAA,GACAM,EAAAI,oBAAAV,EAAA,IAAA,KAEAM,EAAAK,UAAAX,EAAA,IAAA,GACAM,EAAAM,YAAAZ,EAAA,IAAA,GACAM,EAAAO,YAAAb,EAAA,IAAA,GACAM,EAAAQ,iBAAAd,EAAA,IAAA,IAEAM,CACA,CAEA,OAAA,IAAAH,KAAAlC,EACA,CAAA,MAAA,iBAAAA,EACA,IAAAkC,KAAA,IAAAlC,GAEA,IAAAkC,KAAA,GAEA,EAEAzc,IAAAqd,SAAA,SAAAC,GACA,GAAA,MAAAA,EAAA,OAAA,EACA,IACAza,EADA0a,EAAAC,KAAAC,UAAAH,GACA7W,EAAA,EACA,IAAA5D,EAAA,EAAAA,EAAA0a,EAAAna,OAAAP,IACA4D,GAAAA,GAAA,GAAAA,EAAA8W,EAAA/D,WAAA3W,GACA4D,GAAAA,EAEA,OAAAiX,KAAAC,IAAAlX,EACA,EAEAzG,IAAA4d,WAAA,SAAAC,GAEA,OADAA,GAAAA,GAAA,EACA,WAEA,OADAA,GAAA,KAAAA,EAAA,OAAA,QACA,MACA,CACA,EAEA7d,IAAA8d,YAAA,SAAAxG,GACA,MAAAyG,EAAA,GAEA,GAAAzG,EACA,GAAA,iBAAAA,EACA,GAAAvW,MAAAkG,QAAAqQ,GACA,IAAA,IAAAzU,EAAA,EAAAmb,EAAA1G,EAAAlU,OAAAP,EAAAmb,EAAAnb,IAAA,CACA,MAAAQ,EAAArD,IAAAsI,MAAAgP,EAAAzU,IACAkb,EAAAxX,KAAA9E,OAAAkJ,OAAA,CAAA,EAAAtH,EAAA,CACA4a,KAAApb,EACAqb,OAAArb,EACAsb,OAAA9a,IAEA,KACA,CACA,IAAAR,EAAA,EACA,IAAA,MAAAsC,KAAAmS,EACA,GAAAA,EAAA1S,eAAAO,GAAA,CACA,MAAA9B,EAAArD,IAAAsI,MAAAgP,EAAAnS,IACA4Y,EAAAxX,KAAA9E,OAAAkJ,OAAA,CAAA,EAAAtH,EAAA,CACA4a,KAAA9Y,EACA+Y,OAAArb,EACAsb,OAAA9a,KAEAR,GACA,CAEA,MACA,GAAA,iBAAAyU,EACA,IAAA,IAAAkF,EAAA,EAAAA,EAAAlF,EAAAkF,IACAuB,EAAAxX,KAAA,CACA0X,KAAAnU,OAAA0S,GACA0B,OAAA1B,EACA2B,OAAA3B,EAAA,IAMA,OAAAuB,CACA,EAEA/d,IAAAoe,aAAA,SAAAC,GAEA,OAAAA,EAAA3G,QAAA,sBAAA,OACA,EAEA1X,IAAAse,SAAA,SAAA5S,GAKA,MAJA,QAAAA,EAAA6S,SACAxd,MAAAC,KAAA0K,EAAA8S,UAAAhb,SAAAkI,GAAAA,EAAA+S,OAAA,IAGA/S,EAAAgT,eACA,EAEA1e,IAAA2e,cAAA,SAAAjT,GAEA,EAEA,MACA,MAAAkT,EAAA,GAEA7e,OAAAgL,iBAAA,WAAAyI,IACA,GAAAA,EAAAvL,SAAAlI,QAAA,gBAAAyT,EAAAnO,MAAAuZ,EAAAxb,OAEA,IADAoQ,EAAA0B,kBACA0J,EAAAxb,QAAA,CACA,MAAAyb,EAAAD,EAAA7K,QACA8K,EAAAhU,GAAA9D,KAAA8X,EAAAC,QACA,CACA,IACA,GAEA9e,IAAA+e,SAAA,CAAAlU,EAAAiU,KACAF,EAAArY,KAAA,CAAAsE,KAAAiU,YACA/e,OAAAif,YAAA,cAAA,IAAA,CAEA,EAjBA,GAmBAhf,IAAAif,cAAA,WACAlD,QAAAmD,KAAA,mCACA,ECrPA,QAAAlc,SAAAqU,SAAA8H,UACAnf,IAAAqM,QAAA,IAAA1I,SAAAC,GAAAZ,SAAA+H,iBAAA,cAAAnH,MCHA;;AAGA,MAAAwb,GAAAA,GAAA3d,OAEA,IAAA4d,EAkBArf,IAAAsf,MAVA5b,IACA,MAAA6b,EAAAF,EACAA,EAAAE,GAAA,GACA,IAEA,GADA7b,KACA6b,EACA,IAAA,MAAAva,MAAAA,KAAAqa,GACA,CACA,QAAAA,EAAAE,CAAA,GASA,MAAAC,EACAnY,YAAArC,GACAjC,KAAA0c,EAAAza,CACA,CAGA0a,SAAA,OAAA3c,KAAAiC,KAAA,CAGAL,WAAA,OAAAmF,OAAA/G,KAAAiC,MAAA,CAGA2a,UAAA,OAAA5c,KAAAiC,KAAA,EAIA,IAAA4a,EAFA5f,IAAAwf,OAAAA,EAOA,MAAAK,UAAAL,EAKA5c,EAOAyE,YAAAoY,EAAA9e,EAAA2c,EAAAwC,GACAC,MAAAN,GACA1c,KAAA+c,EAAAA,EACA/c,KAAAid,GAAA,EACAjd,KAAAkd,EAAA,IAAAzd,IACAO,KAAAH,EAAA,IAAAsd,EAAAvf,EAAA2c,EACA,CACA6C,OAAA,OAAApd,KAAAH,EAAAud,MAAA,CACAnb,YACA,GAAAjC,KAAAid,EAAA,CACA,MAAAT,EAAAK,EACAA,EAAA7c,KACA,IAAAA,KAAAH,EAAAoC,MAAAjC,KAAA0c,EAAA1c,KAAAH,EAAA6c,EAAA,CACA,QACA1c,KAAAid,GAAA,EACAJ,EAAAL,CACA,CACA,CACA,OAAAxc,KAAAH,EAAAoC,KACA,EAGA,MAAAob,EAAA,CAAAC,OAAA,EAAAC,QAAA,GAWA,IAAAC,EAFAvgB,IAAAwgB,SAFA,CAAA3V,EAAA7F,EAAAyb,EAAAL,IACA,IAAAP,EAAAhV,EAAA7F,EAAAyb,GAAA,GAIA,MAAAC,EAAA,GACAjgB,EAAA,OACAkgB,EAAA,EAAA/d,QACA,mBAAAA,EAAA6c,IACA7c,EAAA6c,EAAA7c,EAAA6c,IAAA,EAGA,MAAAmB,UAAAf,EACAxY,YAAAoY,EAAA9e,EAAA2c,GACAyC,MAAAN,EAAA9e,EAAA2c,GAAA,GACAva,KAAAgB,EAAA2c,CACA,CACAG,MAGA,OAFA9d,KAAAid,GAAA,EACAjd,KAAAiC,MACAjC,IACA,CACAkS,OACAlS,KAAA0c,EAAAhf,EACA,IAAA,MAAAmC,KAAAG,KAAAkd,EAEArd,EAAA2W,EAAAvT,OAAAjD,MAEAA,KAAAkd,EAAAta,QACA5C,KAAAH,EAAA2W,EAAA5T,OACA,EAEA3F,IAAA4gB,GAAAA,EAEA,MAAAE,UAAAF,EACAvZ,YAAAoY,EAAA9e,EAAA2c,GACAyC,MAAAN,EAAA9e,EAAA2c,GACAva,KAAAF,EAAA,EACAE,KAAAjC,IAAAwc,EAAA+C,MACAtd,KAAAge,GAAA,EACAhe,KAAAgB,EAAA,EAEA,CACAiB,YACAjC,KAAAjC,EAAAiC,KAAAsd,QAAAtd,KAAAie,MACA,CACAX,QACAtd,KAAAge,IACAhe,KAAAge,GAAA,EACAtd,gBAAA,KACAV,KAAAge,GAAA,EACAhe,KAAAie,MAAA,IAGA,CACAA,OACA,MAAAzB,EAAAgB,GACAA,EAAAxd,MAAAF,EAAA,EACA8d,EAAA5d,MACAgd,MAAA/a,MACAub,EAAAhB,CACA,CACAtK,OACA8K,MAAA9K,OACA0L,EAAA5d,MACA,IAAA,MAAAke,KAAAle,KAAAgB,EAAAuC,OAAA,GACA2a,EAAAhM,MACA,EAEAjV,IAAA8gB,OAAAA,EA+BA9gB,IAAAihB,OAtBA,CAAAvd,EAAAsB,EAAAyb,EAAAL,KACA,IAAAc,EACA,GAAAX,EAAA,CACA,MAAA1d,EAAAA,EAAAkB,EAAAA,GAAAwc,EACAY,EAAAte,IAAAkB,EAAAX,QAOA+d,GAAApd,EAAAlB,GAAA4c,IAAA/b,KACAyd,GAAApd,EAAAlB,GAAAoS,OACAlR,EAAAlB,GAAA,IAAAie,EAAApd,EAAAsB,EAAAyb,GAAAI,OAEAK,EAAAnd,EAAAlB,GACA0d,EAAA1d,GACA,MAEAqe,EAAA,IAAAJ,EAAApd,EAAAsB,EAAAyb,GAAAI,MACA,MAAA,KAAAK,EAAAjM,MAAA,CAAA,EAIA,MAAAmM,EAAA,KAAA,EAKA,MAAAlB,UAAAV,EACAnY,YAAAoY,GAAAa,OAAAA,IACAP,MAAAN,GACA1c,KAAAwW,EAAA,IAAA/W,IACAO,KAAAH,GAAA,IAAA0d,EAAAlB,EAAAkB,GAAAc,CACA,CAKAjB,OAAA,OAAApd,KAAA0c,CAAA,CAEAza,YAKA,OAJA4a,IACA7c,KAAAwW,EAAA7Q,IAAAkX,GACAA,EAAAK,EAAAvX,IAAA3F,OAEAA,KAAA0c,CACA,CACAza,UAAAya,GACA,MAAAF,EAAAxc,KAAA0c,EACA,IAAA1c,KAAAH,EAAAG,KAAA0c,EAAAA,EAAAF,IACAxc,KAAAwW,EAAAxT,KAAA,CACA,MAAAsb,EAAA,GACA9Y,EAAA,CAAAxF,MACA,IAAA,MAAAue,KAAA/Y,EACA,IAAA,MAAAiY,KAAAc,EAAA/H,EACA,IAAAiH,EAAAR,GAAAQ,EAAAP,EAAA/Z,IAAAob,GAGA,GAFAd,EAAAP,EAAAta,QACA6a,EAAAR,GAAA,EACAQ,EAAAV,EAAA,CACAuB,EAAA9a,KAAAia,GACA,MAAAjY,EAAA,CAAAiY,GACA,IAAA,MAAAjH,KAAAhR,EACA,IAAA,MAAA0Y,KAAA1H,EAAAxV,EACAkd,EAAAhB,EAAAta,QACAsb,EAAAjB,GAAA,EACAzX,EAAAhC,KAAA0a,EAGA,MAEA1Y,EAAAhC,KAAAia,EAAA5d,GAIA,IAAA,MAAAqe,KAAAI,EACAhC,EAAAA,EAAA9Y,KAAA0a,GAAAA,EAAAjc,KACA,CAEA,EASAhF,IAAAshB,OADA,CAAAtc,EAAAyb,EAAAL,IAAA,IAAAF,EAAAlb,EAAAyb,EAmBA,EApRA,GCAAzgB,IAAAuhB,YAAA,SAAAjE,EAAA,CAAA,GACA,MAAAkE,EAAA,IAAA9a,IACA4Z,EAAA,CAAAxf,EAAA2gB,IACAzhB,IAAAuJ,MAAAzI,EAAA2gB,GAGA,OAAA,IAAAC,MAAApE,EAAA,CACApX,IAAA,CAAAgN,EAAAkJ,KAEA,EAGAjY,IAAA+O,EAAAkJ,EAAAuF,GACA,MAAA3c,EAAA4c,QAAAzd,IAAA+O,EAAAkJ,EAAAuF,GAEA,MAAA,mBAAA3c,GAAA,iBAAAoX,GAAAA,EAAAyF,WAAA,KAEA7c,GAGAwc,EAAAtb,IAAAkW,IACAoF,EAAA3b,IAAAuW,EAAApc,IAAAshB,OAAAtc,EAAA,CAAAsb,YAGAkB,EAAArd,IAAAiY,GAAApX,MACA,EAEAa,IAAAqN,EAAAkJ,EAAApX,EAAA2c,GACA,MAAAG,EAAAF,QAAA/b,IAAAqN,EAAAkJ,EAAApX,EAAA2c,GAQA,OANAG,GACAN,EAAAtb,IAAAkW,KACAoF,EAAArd,IAAAiY,GAAApX,MAAAA,GAIA8c,CACA,EAEAC,eAAA7O,EAAAkJ,GACA,MAAA0F,EAAAF,QAAAG,eAAA7O,EAAAkJ,GAMA,OAJA0F,GAAAN,EAAAtb,IAAAkW,KACAoF,EAAArd,IAAAiY,GAAApX,WAAApE,GAGAkhB,CACA,GAEA,ECjDA,MAEA,MAAAE,EAEA3a,YAAAiE,EAAA,CAAA,EAAAf,EAAA,MACA,iBAAAe,IACAA,EAAA,CAAA6S,OAAA7S,IAGAvI,KAAAsC,KAAArF,IAAAuhB,cACA9f,OAAAkJ,OAAA5H,KAAAsC,KAAAiG,GACAvI,KAAAwH,OAAAA,EACAxH,KAAA8a,KAAAH,KAAAuE,QACA,CAEA9d,IAAAG,GACA,YAAA1D,IAAAmC,KAAAsC,KAAAf,GACAvB,KAAAsC,KAAAf,GAGAvB,KAAAwH,OACA,UAAAjG,EACAvB,KAAAwH,OAAAlF,KAGAtC,KAAAwH,OAAApG,IAAAG,QALA,CASA,CAEAuB,IAAAvB,EAAAU,GACA,iBAAAV,EACAtE,IAAAsf,OAAA,KACA,IAAA,IAAAlD,KAAA9X,EACAA,EAAAM,eAAAwX,IACArZ,KAAA8C,IAAAuW,EAAA9X,EAAA8X,GAEA,IAGArZ,KAAAsC,KAAAf,GAAAU,CAEA,CAEAkd,IAAA5d,UACAvB,KAAAsC,KAAAf,EACA,EAIAtE,IAAAgC,OAAA,IAAAggB,EACAhiB,IAAAmiB,UAAA,SAAA9c,EAAAkF,GACA,OAAA,IAAAyX,EAAA3c,EAAAkF,GAAAvK,IAAAgC,OACA,CAEA,EAxDA,GCAA,WAEA,IAAAge,EAAA,SAAAoC,GACA,KAAArf,gBAAAid,GACA,OAAA,IAAAA,EAAAoC,GAEA,GAAAA,aAAApC,EACA,OAAAoC,EAEA,IAAAA,EAAA,OAAArf,KACA,IAAAsf,EAAAD,EAAAhf,OACA,GAAAgf,EAAA3K,SACA1U,KAAA,GAAAqf,EACArf,KAAAK,OAAA,MACA,IAAA,iBAAAgf,EACA,OAAApC,EAAAhd,SAAAE,iBAAAkf,IACA,GAAAC,EACA,IAAA,IAAAxf,EAAA,EAAAA,EAAAwf,EAAAxf,IACAuf,EAAAvf,IAAAuf,EAAAvf,GAAA4U,WACA1U,KAAAA,KAAAK,QAAAgf,EAAAvf,GACAE,KAAAK,SAGA,CACA,OAAAL,IACA,EAEAid,EAAAtd,UAAA,CACA2E,YAAA2Y,EACA5c,OAAA,EAEAkf,SAAA,SAAAC,GACA,IAAA,IAAA1f,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACAE,KAAAF,GAAA2f,UAAA9Z,IAAA6Z,GAEA,OAAAxf,IACA,EAEA0f,YAAA,SAAAF,GACA,IAAA,IAAA1f,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACAE,KAAAF,GAAA2f,UAAAE,OAAAH,GAEA,OAAAxf,IACA,EAEA4f,YAAA,SAAAJ,GACA,IAAA,IAAA1f,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACAE,KAAAF,GAAA2f,UAAAI,OAAAL,GAEA,OAAAxf,IACA,EAEA8f,SAAA,SAAAN,GACA,QAAAxf,KAAA,IACAA,KAAA,GAAAyf,UAAApe,SAAAme,EACA,EAEAO,KAAA,SAAAC,EAAA/d,GACA,GAAA,IAAA0F,UAAAtH,QAAA,iBAAA2f,EACA,OAAAhgB,KAAA,IAAAA,KAAA,GAAAigB,aAAAD,GAEA,IAAA,IAAAlgB,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACA,GAAA,IAAA6H,UAAAtH,OACAL,KAAAF,GAAA6B,aAAAqe,EAAA/d,QAEA,IAAA,IAAA8d,KAAAC,EACAA,EAAAne,eAAAke,IACA/f,KAAAF,GAAA6B,aAAAoe,EAAAC,EAAAD,IAMA,OAAA/f,IACA,EAEAkgB,WAAA,SAAAH,GACA,IAAA,IAAAjgB,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACAE,KAAAF,GAAA4B,gBAAAqe,GAEA,OAAA/f,IACA,EAEAqZ,KAAA,SAAAvT,EAAA7D,GACA,GAAA,IAAA0F,UAAAtH,QAAA,iBAAAyF,EACA,OAAA9F,KAAA,IAAAA,KAAA,GAAA8F,GAEA,IAAA,IAAAhG,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACA,GAAA,IAAA6H,UAAAtH,OACAL,KAAAF,GAAAgG,GAAA7D,OAEA,IAAA,IAAAoX,KAAAvT,EACAA,EAAAjE,eAAAwX,KACArZ,KAAAF,GAAAuZ,GAAAvT,EAAAuT,IAMA,OAAArZ,IACA,EAEAmgB,IAAA,SAAAra,EAAA7D,GACA,GAAA,IAAA0F,UAAAtH,QAAA,iBAAAyF,EACA,OAAA9F,KAAA,IAAAhD,OAAAojB,iBAAApgB,KAAA,GAAA,MAAAqgB,iBAAAva,GAEA,IAAA,IAAAhG,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACA,GAAA,IAAA6H,UAAAtH,OACAL,KAAAF,GAAAyY,MAAA+H,YAAAxa,EAAA7D,QAEA,IAAA,IAAAoX,KAAAvT,EACAA,EAAAjE,eAAAwX,IACArZ,KAAAF,GAAAyY,MAAA+H,YAAAjH,EAAAvT,EAAAuT,IAMA,OAAArZ,IACA,EAEAugB,KAAA,SAAA5f,EAAAob,GACA,IAAApb,EAAA,OAAAX,KACA,IAAA,IAAAF,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACA,IAAA,IAAAa,EAAAqD,KAAA+X,GAAA/b,KAAAF,GAAAA,EAAAE,KAAAF,IACA,OAAAE,KAGA,OAAAA,IACA,EAEAwgB,OAAA,WACA,IAAA,IAAA1gB,EAAA,EAAAA,EAAA6H,UAAAtH,OAAAP,IAGA,IAFA,IAAA2gB,EAAAxD,EAAAtV,UAAA7H,IAEA4gB,EAAA,EAAAA,EAAAD,EAAApgB,OAAAqgB,IACA1gB,KAAA,GAAA2gB,YAAAF,EAAAC,IAGA,OAAA1gB,IACA,EAEA4gB,SAAA,SAAApZ,GAEA,OADAyV,EAAAzV,GAAAgZ,OAAAxgB,MACAA,IACA,EAEA6gB,OAAA,WACA,IAAA,IAAA/gB,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACAE,KAAAF,GAAAghB,YACA9gB,KAAAF,GAAAghB,WAAAC,YAAA/gB,KAAAF,IAGA,OAAAE,IACA,EAEA2d,MAAA,WACA,IAAA,IAAA7d,EAAA,EAAAA,EAAAE,KAAAK,OAAAP,IACAE,KAAAF,GAAAkhB,UAAA,GAEA,OAAAhhB,IACA,GAGA/C,IAAAgkB,IAAA,CAEA7f,IAAA,SAAA8f,GACA,OAAAjE,EAAAhd,SAAAkhB,eAAAD,GACA,EAEAzjB,OAAA,SAAA2jB,GACA,OAAAnE,EAAAmE,EACA,EAEAziB,OAAA,SAAA6c,GACA,IAAA6F,EAAAphB,SAAAqhB,cAAA9F,GACA,OAAAyB,EAAAoE,EACA,EAEAhgB,SAAA,SAAAsH,GACA,OAAA1I,SAAAqY,gBAAAjX,SAAAsH,EACA,EAEA4Y,KAAA,SAAA5Y,EAAAb,EAAAiU,GACA,GAAApT,EAAA,CACA,IAAA,IAAAb,EAAA9D,KAAA+X,EAAApT,GAEA,OACA,GAAAA,EAAA6Y,gBACA,IAAA,MAAAC,KAAAzjB,MAAAC,KAAA0K,EAAA+Y,YACAzkB,IAAAgkB,IAAAM,KAAAE,EAAA3Z,EAAAiU,EAGA,CACA,EAEA4F,cAAA,SAAAhZ,GACA,IAAAH,EAAA,GAEA,GAAA,GAAAG,EAAA+L,SACA,IAAA,IAAA5U,EAAA,EAAAA,EAAA6I,EAAAH,WAAAnI,OAAAP,IAAA,CACA,IAAA8hB,EAAAjZ,EAAAH,WAAA1I,GAEA,GAAA8hB,GAAAA,EAAAC,WAAA5kB,IAAAkB,WAAAyH,KAAAgc,EAAArgB,MAAA,CACA,IAAAA,EAAAqgB,EAAArgB,KAAAugB,OAAA,GACAC,EAAA,KACAzR,EAAA,CAAA,EAEA/O,EAAA2V,MAAA,KAAAzW,SAAA,SAAAuhB,EAAAliB,GACA,GAAA,IAAAA,EACAyB,EAAAygB,MACA,CACA,IAAAC,EAAAD,EAAA9L,QAAA,KACA+L,EAAA,EACA3R,EAAA0R,EAAAF,OAAA,EAAAG,IAAAD,EAAAF,OAAAG,EAAA,GAEA3R,EAAA0R,IAAA,CAEA,CACA,IAEA,IAAAC,EAAA1gB,EAAA2U,QAAA,KACA+L,EAAA,IACAF,EAAAxgB,EAAAugB,OAAAG,EAAA,GACA1gB,EAAAA,EAAAugB,OAAA,EAAAG,IAGAzZ,EAAAhF,KAAA,CACAjC,KAAAA,EACA2gB,SAAAN,EAAArgB,KACAU,MAAA2f,EAAA3f,MACA8f,SAAAA,EACAzR,UAAAA,GAEA,CACA,CAGA,OAAA9H,CACA,EAEAmX,OAAA,SAAAhX,GACA3K,MAAAkG,QAAAyE,GACAA,EAAAlI,SAAA,SAAAkI,GACA1L,IAAAgkB,IAAAtB,OAAAhX,EACA,IAEAA,EAAAgX,QAEA,EAEAhL,QAAA,SAAAwN,EAAAC,GACAD,EAAArB,YACAqB,EAAArB,WAAAuB,aAAAD,EAAAD,EAEA,EAIA,CAnQA,GCAAllB,IAAAqlB,OAAA,IAAA3e,IAEA1G,IAAAslB,WAAA,IAAA5e,IAAA,CACA,CAAA,IAAA,WACA,CAAA,IAAA,WACA,CAAA,IAAA,aACA,CAAA,IAAA,aACA,CAAA,IAAA,WACA,CAAA,IAAA,WACA,CAAA,IAAA,UACA,CAAA,IAAA,SACA,CAAA,IAAA,QACA,CAAA,IAAA,SACA,CAAA,IAAA,YAEA,CAAA,IAAA,aACA,CAAA,IAAA,aACA,CAAA,IAAA,kBACA,CAAA,IAAA,kBACA,CAAA,IAAA,kBAEA,CAAA,MAAA,YACA,CAAA,MAAA,YACA,CAAA,KAAA,YACA,CAAA,KAAA,YACA,CAAA,IAAA,cACA,CAAA,IAAA,cACA,CAAA,KAAA,cACA,CAAA,KAAA,cACA,CAAA,KAAA,cAEA,CAAA,KAAA,eACA,CAAA,KAAA,cACA,CAAA,IAAA,eAEA,CAAA,IAAA,eACA,CAAA,IAAA,cACA,CAAA,IAAA,eACA,CAAA,IAAA,eACA,CAAA,KAAA,iBACA,CAAA,KAAA,iBACA,CAAA,MAAA,mBAGA1G,IAAAulB,cAAA,IAAA7e,IAAA,CACA,CAAA,IAAA,MACA,CAAA,IAAA,MACA,CAAA,IAAA,MACA,CAAA,IAAA,MACA,CAAA,IAAA,MACA,CAAA,IAAA,MACA,CAAA,IAAA,MACA,CAAA,IAAA,KACA,CAAA,IAAA,KACA,CAAA,IAAA,OAGA1G,IAAAwlB,aAAA,IAAA9e,IAAA,CACA,CAAA,KAAA,CAAA5F,EAAA2gB,IAAA/D,KAAA+H,IAAA3kB,IAAA2gB,MACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA,OAAA3gB,EAAAA,KAAA2gB,IAAA3gB,GACA,CAAA,KAAA,CAAAA,EAAA2gB,IAAA3gB,MAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,EAAAlI,IAAAzY,IAAA2gB,IAAAlI,KACA,CAAA,IAAA,CAAAzY,EAAA2gB,KAAA3gB,EAAAA,IAAA2gB,EAAAA,IAAA,MAAA3gB,EAAA2gB,EAAA,MAAAA,EAAA3gB,EAAAA,EAAA2gB,IACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,MAAA,CAAA3gB,EAAA2gB,IAAA3gB,MAAA2gB,KACA,CAAA,MAAA,CAAA3gB,EAAA2gB,IAAA3gB,MAAA2gB,KACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA3gB,KAAA2gB,KACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA3gB,KAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA3gB,KAAA2gB,KACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA3gB,KAAA2gB,KACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA3gB,KAAA2gB,KACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA3gB,KAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,IAAA,CAAA3gB,EAAA2gB,IAAA3gB,IAAA2gB,KACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA3gB,KAAA2gB,KACA,CAAA,KAAA,CAAA3gB,EAAA2gB,IAAA3gB,KAAA2gB,KACA,CAAA,MAAA,CAAA3gB,EAAA2gB,IAAA3gB,MAAA2gB,KACA,CAAA,IAAA3gB,IAAAA,KACA,CAAA,IAAAA,IAAAA,OAGAd,IAAA0lB,UAAA,IAAAhf,IAAA,CACA,CAAA,OAAAif,GAAA,IAAAA,EAAAtgB,MACA,CAAA,OAAA,IAAA,KAAA,GACA,CAAA,QAAA,IAAA,KAAA,GACA,CAAA,OAAA,IAAA,IAAA,MACA,CAAA,YAAA,IAAA,KAAA,GACA,CAAA,IAAA,IAAA,KAAA,CAAAugB,cAAA,OAGA5lB,IAAA6lB,iBAAA,IAAAnf,IAAA,CACA,CAAA,UAAA,WACA,CAAA,OAAA,QACA,CAAA,YAAA,aACA,CAAA,SAAA,UACA,CAAA,SAAA,UACA,CAAA,UAAA,UACA,CAAA,SAAA,UACA,CAAA,OAAA,QACA,CAAA,SAAA,UACA,CAAA,OAAA,QACA,CAAA,OAAA,QACA,CAAA,WAAA,YACA,CAAA,cAAA,eACA,CAAA,cAAA,eACA,CAAA,YAAA,aACA,CAAA,QAAA,SACA,CAAA,SAAA,UACA,CAAA,MAAA,OACA,CAAA,MAAA,OACA,CAAA,WAAA,SACA,CAAA,YAAA,SACA,CAAA,aAAA,SACA,CAAA,oBAAA,SACA,CAAA,aAAA,SACA,CAAA,cAAA,SACA,CAAA,aAAA,SACA,CAAA,cAAA,SACA,CAAA,eAAA,SACA,CAAA,eAAA,SACA,CAAA,gBAAA,SACA,CAAA,iBAAA,WAGA1G,IAAA8G,QAAA,SAAAyT,GACA,OAAAva,IAAA6lB,iBAAA1hB,IAAA1C,OAAAiB,UAAAiC,SAAAoC,KAAAwT,GAAAvT,MAAA,GAAA,GACA,EAEAhH,IAAA8lB,MAAA,SAAAC,GACA,GAAA/lB,IAAAqlB,OAAAnf,IAAA6f,GACA,OAAA/lB,IAAAqlB,OAAAlhB,IAAA4hB,GAGA,IAAAC,EAAA1hB,EAAA2hB,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,GAAA3gB,EAAA,EAAA4gB,GAAA,EAEA,KAAA5gB,EAAAqgB,EAAA3iB,QAAA,CAKA,GAJA6iB,EAAAvgB,EAEAwgB,EAAAK,IAEAC,EAAAN,GACA5hB,EAAA,SACA0hB,EAAAS,EAAAP,GACAI,GAAA,OACA,IAAAI,EAAAR,IAAA9G,EAAA,MAAAe,KAAAuG,EAAAvG,OAAAmG,EACAhiB,EAAA,SACA0hB,EAAAW,IACAL,GAAA,OACA,GAAAM,EAAAV,IAAAI,EACAhiB,EAAA,QACA0hB,EAAAa,IACAzH,EAAA,OACA9a,EAAA,UAEAgiB,GAAA,OACA,GAAAlH,EAAA,MAAAkH,IAAA,KAAAN,GAAA,KAAAA,GAAA,KAAAA,GAAA,KAAAA,IAAAc,IACAxiB,EAAA,SACA0hB,EAAAe,IACAT,GAAA,MACA,IAAAU,EAAAd,GAAA,CACAxgB,IACA,QACA,CAAA,IAAA0gB,EAAAG,EAAA,KAAAvmB,IAAAslB,WAAApf,IAAAkgB,GACA9hB,EAAAtE,IAAAslB,WAAAnhB,IAAAiiB,GACAJ,EAAAI,EACAE,GAAA,EACA5gB,GAAA,OACA,IAAAygB,EAAAI,EAAA,KAAAvmB,IAAAslB,WAAApf,IAAAigB,GACA7hB,EAAAtE,IAAAslB,WAAAnhB,IAAAgiB,GACAH,EAAAG,EACAG,GAAA,EACA5gB,GAAA,MACA,KAAA1F,IAAAslB,WAAApf,IAAAggB,GAMA,MAAA,IAAAxK,MAAA,qBAAAwK,eAAAxgB,oBAAAqgB,KALAzhB,EAAAtE,IAAAslB,WAAAnhB,IAAA+hB,GACAF,EAAAE,EACAI,GAAA,EACA5gB,GAGA,EAEA2gB,EAAA9f,KAAA,CAAAjC,OAAAoB,MAAAugB,EAAAjhB,MAAAghB,GACA,CAIA,OAFAhmB,IAAAqlB,OAAAxf,IAAAkgB,EAAAM,GAEAA,EAEA,SAAAE,EAAA/J,GACA,OAAAA,EAAA,EAAAuJ,EAAA/e,MAAAtB,EAAAA,EAAA8W,GAAAuJ,EAAArgB,EACA,CAEA,SAAAya,EAAA3D,EAAA,GACA,OAAA9W,EAAA8W,EAAAuJ,EAAA3iB,QAAA2iB,EAAArgB,EAAA8W,EACA,CAEA,SAAA4C,EAAA6H,GACA,OAAAA,EAAA5S,SAAA6R,EACA,CAEA,SAAAM,EAAAN,GACA,MAAA,KAAAA,GAAA,KAAAA,GAAA,KAAAA,CACA,CAEA,SAAAQ,EAAAR,GACA,OAAAA,GAAA,KAAAA,GAAA,GACA,CAEA,SAAAU,EAAAV,GACA,OAAAA,GAAA,KAAAA,GAAA,KAAAA,GAAA,KAAAA,GAAA,KAAA,MAAAA,GAAA,MAAAA,CACA,CAEA,SAAAgB,EAAAhB,GACA,OAAAU,EAAAV,IAAAQ,EAAAR,EACA,CAEA,SAAAc,EAAAd,GACA,MAAA,KAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,KAAAA,CACA,CAEA,SAAAiB,EAAAjB,GACA,MAAA,KAAAA,GAAA,KAAAA,GAAAQ,EAAAR,EACA,CAEA,SAAAO,EAAAtX,GACA,IAAArB,GAAA,EAAA7H,EAAA,GAIA,IAFAP,IAEAA,EAAAqgB,EAAA3iB,QAAA,CAGA,GAFA8iB,EAAAK,IAEAzY,EAAA,CACA,GAAA,KAAAoY,EAAA,CACAxgB,IACA,MAAA0hB,EAAAb,EAAA,GACA,IAAAa,EAAAtN,MAAA,eACA,MAAA,IAAA4B,MAAA,8BAAA0L,eAAA1hB,oBAAAqgB,KAEA9f,GAAA6D,OAAAud,aAAA7S,SAAA4S,EAAA,KACA1hB,GAAA,CACA,MACAO,GAAAjG,IAAAulB,cAAArf,IAAAggB,GAAAlmB,IAAAulB,cAAAphB,IAAA+hB,GAAAA,EAGApY,GAAA,CACA,MAAA,GAAA,MAAAoY,EACApY,GAAA,MACA,IAAAoY,GAAA/W,EAKA,OAJAzJ,IACA,KAAAyJ,IACAlJ,EAAA,KAAAA,EAAA,MAEAA,EAEAA,GAAAigB,CACA,CAEAxgB,GACA,CAEA,MAAA,IAAAgW,MAAA,sCAAAqK,IACA,CAEA,SAAAY,IACA,IAAA1gB,EAAA,GAAAqhB,GAAA,EAEA,KAAA5hB,EAAAqgB,EAAA3iB,QAGA,GAFA8iB,EAAAK,IAEAnH,EAAA,MAAAe,KAAAuG,EAAAvG,KACAza,QADA,CAKA,GAAA0Z,EAAA,MAAAe,KAAAuG,EAAAvG,MAAAuG,EAAAR,GACAjgB,GAAAigB,MACA,CACA,MAAAqB,EAAApH,IAEA,GAAAf,EAAA,OAAA+H,EAAAI,GACAthB,GAAA,IACAqhB,GAAA,MACA,MAAAH,EAAAjB,IAAAqB,GAAAb,EAAAa,IAAAD,GAGA,KAAAH,EAAAjB,IAAAqB,GAAAb,EAAAa,KAAAD,EAGA,MAFA,MAAA,IAAA5L,MAAA,mCAAAqK,IAGA,CANA9f,GAAAigB,EACAoB,GAAA,CAKA,CACA,CAEA5hB,GApBA,CAuBA,GAAA,KAAA6gB,IAEA,OADA7gB,IACA8hB,OAAAvhB,GAGA,GAAA,KAAAsgB,IAAA,CAEA,GADA7gB,IACA3F,OAAA0nB,QACA,OAAA,IAAAA,QAAAxhB,GAEA8V,QAAAmD,KAAA,qDAEA,CAEA,OAAAjZ,CACA,CAEA,SAAA4gB,IACA,IAAA5gB,EAAA,GAEA,KAAAP,EAAAqgB,EAAA3iB,SACA8iB,EAAAK,IAEAW,EAAAhB,KACAjgB,GAAAigB,EAKAxgB,IAGA,OAAAO,CACA,CAEA,SAAA8gB,IACA,IAAA9gB,EAAA,GAAAoN,EAAA,GAAAvF,GAAA,EAIA,IAFApI,IAEAA,EAAAqgB,EAAA3iB,QAAA,CAGA,GAFA8iB,EAAAK,IAEAzY,EACAA,GAAA,OACA,GAAA,MAAAoY,EACApY,GAAA,OACA,GAAA,KAAAoY,EAAA,CAGA,IAFAxgB,IAEA,MAAA2O,SAAA6R,EAAAK,MACAlT,GAAA6S,EACAxgB,IAGA,OAAA,IAAAgiB,OAAAzhB,EAAAoN,EACA,CAEApN,GAAAigB,EACAxgB,GACA,CAEA,MAAA,IAAAgW,MAAA,sCAAAqK,IACA,CAEA,SAAAe,IACA,IAAAjkB,EAAA6C,EAAAoc,GAAA,EAEA,IACAiF,GACA,CAAA,MAAAhjB,GACA+d,GAAA,CACA,CAKA,OAHApc,EAAA7C,EACAqjB,EAAA,IAEApE,CACA,CACA,EAEA9hB,IAAA2nB,MAAA,SAAA5B,EAAAJ,EAAA3lB,IAAAyb,KAGA,IAFAsK,EAAAA,EAAA6B,QAEAvT,SAAA,MAAA,CACA,IAAA0R,EAAAlE,WAAA,QAAAkE,EAAA8B,SAAA,OAAA9B,EAAA/e,MAAA,GAAAqN,SAAA,MAGA,OAAA0R,EAAArO,QAAA,cAAA,CAAA+H,EAAAsG,KACA,MAAA9f,EAAAjG,IAAA2nB,MAAA5B,EAAAJ,GACA,OAAA,MAAA1f,EAAA,GAAAA,CAAA,IAJA8f,EAAAA,EAAA/e,MAAA,GAAA,EAOA,CAEA,IAAA+e,EAAA,OAEA,IAAAM,EAAAvH,EAAA7Y,EAEA,IACAogB,EAAAtlB,MAAAC,KAAAhB,IAAA8lB,MAAAC,IACA9f,EAwDA,WACA,MAAAnF,EAAA,GAEA,OAKA,GAJAulB,EAAAjjB,OAAA,KAAA+c,EAAA,YAAAA,EAAA,cAAAA,EAAA,YAAAA,EAAA,UAAAA,EAAA,UACArf,EAAAyF,KAAAuhB,MAGAC,EAAA,WAAAA,EAAA,QACA,OAAA,GAAAjnB,EAAAsC,OAAAtC,EAAA,GAAA2gB,KAIA,SAAAA,IACA,IAAAxb,EAEA,IAAA,IAAApD,EAAA,EAAAA,EAAA/B,EAAAsC,OAAAP,IAAA,CACA,MAAAkB,EAAAjD,EAAA+B,GACAkB,IAAAkC,EAAAlC,IACA,CAEA,OAAAkC,CACA,CACA,CA/EA+hB,EACA,CAAA,MAAAjkB,GACAgY,QAAAtD,MAAA,4BAAAsN,EAAAhiB,EACA,CAEA,OAAAkC,EAEA,SAAAsgB,IACA,GAAA,IAAAF,EAAAjjB,OACA,MAAA,IAAAsY,MAAA,iCAAAqK,KAGA,OAAAM,EAAA,EACA,CAEA,SAAAlG,EAAApc,GACA,GAAAsiB,EAAAjjB,OAAA,EAAA,CACA,MAAA4iB,EAAAK,EAAA,GAEA,IAAAtiB,GAAAiiB,EAAA1hB,MAAAP,EACA,OAAAiiB,CAEA,CAEA,OAAA,CACA,CAEA,SAAA+B,EAAAhkB,GACA,MAAAiiB,EAAA7F,EAAApc,GAEA,QAAAiiB,IACAK,EAAAtS,QACAiS,EAIA,CAEA,SAAAiC,EAAAlkB,GACA,IAAAgkB,EAAAhkB,GACA,MAAA,IAAA2X,MAAA,YAAA3X,cAAAsiB,EAAA,GAAA3gB,wBAAAqgB,IAEA,CAEA,SAAAlb,EAAAqd,GACA,MAAAnb,EAAAhM,MAAA2B,UAAAsE,MAAAD,KAAA2D,UAAA,GAEA,MAAA,IACA1K,IAAAwlB,aAAAtf,IAAAgiB,GACAloB,IAAAwlB,aAAArhB,IAAA+jB,GAAAzd,MAAAkb,EAAA5Y,GAGAmb,CAEA,CA2BA,SAAAJ,IACA,OAGA,WACA,MAAAhnB,EAaA,WACA,IAAAA,EAAAqnB,IAEA,KAAAJ,EAAA,eAAA,CAEAjnB,EAAA+J,EAAA,KAAA/J,EADAqnB,IAEA,CAEA,OAAArnB,CACA,CAtBAsnB,GAEA,GAAAL,EAAA,YAAA,CACA,MAAAtG,EAAAqG,IACAG,EAAA,SAGA,OAAApd,EAAA,IAAA/J,EAAA2gB,EAFAqG,IAGA,CAEA,OAAAhnB,CACA,CAfAunB,EACA,CA2BA,SAAAF,IACA,IAAArnB,EAAAwnB,IAEA,KAAAP,EAAA,gBAAA,CAEAjnB,EAAA+J,EAAA,KAAA/J,EADAwnB,IAEA,CAEA,OAAAxnB,CACA,CAEA,SAAAwnB,IACA,IAAAxnB,EAAAynB,IAEA,KAAAR,EAAA,eAAA,CAEAjnB,EAAA+J,EAAA,IAAA/J,EADAynB,IAEA,CAEA,OAAAznB,CACA,CAEA,SAAAynB,IACA,IAAAznB,EAAA0nB,IAEA,KAAAT,EAAA,gBAAA,CAEAjnB,EAAA+J,EAAA,IAAA/J,EADA0nB,IAEA,CAEA,OAAA1nB,CACA,CAEA,SAAA0nB,IACA,IAAA1nB,EAAA2nB,IAEA,KAAAV,EAAA,gBAAA,CAEAjnB,EAAA+J,EAAA,IAAA/J,EADA2nB,IAEA,CAEA,OAAA3nB,CACA,CAEA,SAAA2nB,IACA,IAAAhH,EAAA3gB,EAAA4nB,IAEA,GAAAjH,EAAAsG,EAAA,YAAA,CACA,MAAAxO,EAAAkP,IACA3nB,EAAA+J,EAAA4W,EAAAzc,MAAAlE,EAAAyY,EACA,CAEA,OAAAzY,CACA,CAEA,SAAA4nB,IACA,IAAAjH,EAAA3gB,EAAA6nB,IAEA,GAAAlH,EAAAsG,EAAA,cAAA,CACA,MAAAxO,EAAAmP,IACA5nB,EAAA+J,EAAA4W,EAAAzc,MAAAlE,EAAAyY,EACA,CAEA,OAAAzY,CACA,CAEA,SAAA6nB,IACA,IAAAlH,EAAA3gB,EAUA,WACA,IAAA2gB,EAAA3gB,EAAA8nB,IAEA,KAAAnH,EAAAsG,EAAA,cAAA,CACA,MAAAxO,EAAAqP,IACA9nB,EAAA+J,EAAA4W,EAAAzc,MAAAlE,EAAAyY,EACA,CAEA,OAAAzY,CACA,CAnBA+nB,GAEA,GAAApH,EAAAsG,EAAA,iBAAA,CACA,MAAAxO,EAAAoP,IACA7nB,EAAA+J,EAAA4W,EAAAzc,MAAAlE,EAAAyY,EACA,CAEA,OAAAzY,CACA,CAaA,SAAA8nB,IACA,IAAAnH,EAAA3gB,EAAAgoB,IAEA,KAAArH,EAAAsG,EAAA,mBAAA,CACA,MAAAxO,EAAAuP,IACAhoB,EAAA+J,EAAA4W,EAAAzc,MAAAlE,EAAAyY,EACA,CAEA,OAAAzY,CACA,CAEA,SAAAgoB,IACA,IAAAhoB,EAEA,OAAAA,EAAAinB,EAAA,cACA,KAAAjnB,EAAAkE,MACA+jB,IAEAle,EAAA/J,EAAAkE,OAAA,IAAA,GAAA+jB,MAEAjoB,EAAAinB,EAAA,kBAEAjnB,EAAAinB,EAAA,gBADAld,EAAA/J,EAAAkE,MAAA8jB,KAIAC,GAEA,CAEA,SAAAA,IACA,IAAA9iB,EAAAshB,EAEA,GAAAQ,EAAA,WACA9hB,EAAA6hB,IACAG,EAAA,gBACA,GAAAF,EAAA,WAAA,CACA,MAAAxN,EAAA,CAAA,EAEA,GAAA,WAAAgM,IAAAjiB,KACA,EAAA,CACA,MAAAa,EAAA4iB,IAAA/iB,MACAijB,EAAA,SACA1N,EAAApV,GAAA2iB,KACA,OAAAC,EAAA,UAGA9hB,EAAA4E,EAAA0P,GAEA0N,EAAA,UACA,MAAA,GAAAF,EAAA,aAAA,CACA,MAAAiB,EAAA,GAEA,GAAA,aAAAzC,IAAAjiB,KACA,GACA0kB,EAAAziB,KAAAuhB,aACAC,EAAA,UAGA9hB,EAAA4E,EAAAme,GAEAf,EAAA,YACA,MAAA,GAAAF,EAAA,UACA9hB,EAAAka,IAAA8I,EAAApe,EAAA8a,EAAAtgB,OAAAwF,EAAA8a,EAAAtgB,UACA,CACA,MAAA2gB,EAAA+B,IAEA,IAAA,IAAA/B,EACA,MAAA,IAAAtK,MAAA,iCAAAqK,KAIA9f,EADA,SAAA+f,EAAA1hB,KACAtE,IAAA0lB,UAAAxf,IAAA8f,EAAAhhB,OAAAhF,IAAA0lB,UAAAvhB,IAAA6hB,EAAAhhB,MAAAhF,CAAA2lB,GAAA,IAAAA,EAAAxhB,IAAA6hB,EAAAhhB,OACA,UAAAghB,EAAA1hB,KACAuG,EAAA7K,IAAA8B,aAAAE,OAAAgkB,EAAAhhB,QAAA,MACA+W,QAAAmD,KAAA,WAAA8G,EAAAhhB,mCAAA+gB,IAEA,IAGA,IAAAC,EAAAhhB,KAEA,CAEA,KAAAuiB,EAAAQ,EAAA,YAAAA,EAAA,cAAAA,EAAA,WACA,GAAA,KAAAR,EAAAviB,MACAiB,EAAAijB,EAAAjjB,EAAA6Y,QACA,GAAA,KAAAyI,EAAAviB,MACA8Z,EAAA7Y,EACAA,EAAAkjB,EAAAljB,OACA,IAAA,KAAAshB,EAAAviB,MAIA,MAAA,IAAA0W,MAAA,qBAAA6L,EAAAviB,mBAAAuiB,EAAA7hB,wBAAAqgB,KAHAjH,EAAA7Y,EACAA,EAAAgjB,EAAAhjB,EAGA,CAKA,OAFA6Y,EAAA,KAEA7Y,CACA,CAEA,SAAAijB,EAAAE,EAAAtK,GACA,MAAAuK,EAAA,GAEA,GAAA,WAAA9C,IAAAjiB,KACA,GACA+kB,EAAA9iB,KAAAuhB,WACAC,EAAA,UAKA,OAFAE,EAAA,WAEA,KACA,IAAAlb,EAAA,GAEA+R,GACA/R,EAAAxG,KAAAuY,KAGA,IAAA,IAAAgB,KAAAuJ,EACAtc,EAAAxG,KAAAuZ,KAGA,IACA,OAAAsJ,KAAAppB,IAAAS,MAAAgK,MAAAkb,EAAA5Y,EACA,CAAA,MAAAhJ,GAEA,YADAgY,QAAAmD,KAAA,wBAAAkK,IAAA9kB,uBAAAyhB,IAAAhiB,EAEA,EAEA,CAEA,SAAAolB,EAAAhnB,GACA,MAAAmnB,EAAAxB,IAIA,OAFAG,EAAA,aAEA,KACA,MAAA1N,EAAApY,IACAuD,EAAA4jB,IAEA,GAAA,iBAAA/O,GAAA,MAAAA,EAIA,OAAAA,EAAAqL,aACAD,EAAAxhB,IAAAuB,GAGA,OAAA1F,IAAA8G,QAAAyT,GACAA,EAAApW,IAAAuB,GAGA6U,EAAA7U,EAAA,CAEA,CAEA,SAAAujB,EAAA9mB,GACA,MAAA6jB,EAAA+B,IAEA,MAAA,KACA,MAAAxN,EAAApY,IACAmD,EAAAtF,IAAA8G,QAAAyT,GAEA,GAAA,UAAAyL,EAAA1hB,KAAA,CACA,MAAAilB,EAAA,KAAAvD,EAAAhhB,MAEA,MAAA,OAAAM,GAAA,mBAAAiV,EAAApW,IAAAolB,GACAhP,EAAApW,IAAAolB,GAAAC,KAAAjP,GAGA,UAAAjV,GAAA,mBAAAiV,EAAAgP,GACAhP,EAAAgP,GAGAvpB,IAAA8B,aAAAwD,IAAAtF,IAAA8B,aAAAwD,GAAA0gB,EAAAhhB,OACAhF,IAAA8B,aAAAwD,GAAA0gB,EAAAhhB,OAGAhF,IAAA8B,aAAA,KAAA9B,IAAA8B,aAAA,IAAAkkB,EAAAhhB,OACAhF,IAAA8B,aAAA,IAAAkkB,EAAAhhB,OAGA,KACA,MAAAuV,GACAwB,QAAAmD,KAAA,WAAA8G,EAAAhhB,mCAAA+gB,IAEA,CAEA,CAEA,OAAAxL,GAAAA,EAAAqL,aACAD,EAAAxhB,IAAA6hB,EAAAhhB,OAGA,OAAAM,EACAiV,EAAApW,IAAA6hB,EAAAhhB,OAGAuV,GAAA,iBAAAA,GAAAyL,EAAAhhB,SAAAuV,EAAAA,EAAAyL,EAAAhhB,YAAApE,CAAA,CAEA,CACA,ECpyBAZ,IAAAqL,cAAArL,IAAAqK,YAAA,CACAhD,YAAA,SAAAqE,EAAAnB,GACAxH,KAAA0mB,MAAA/d,EACA3I,KAAAwH,OAAAA,EACAxH,KAAAygB,SAAA,GACAzgB,KAAA2mB,UAAA,CAAA,EAEA3mB,KAAA4mB,cAAA,GACA5mB,KAAA6mB,mBAAA,GAEA7mB,KAAA8mB,aAAA,IAAAnjB,IACA3D,KAAA+mB,iBAAA,EAEA/mB,KAAAgnB,eAAA,EACAhnB,KAAAinB,aAAA,EAEAjnB,KAAA8F,MAAA,IAAA6Y,MACA,CAAA,EACA,CACA7b,IAAA,CAAAqN,EAAAkJ,EAAApX,EAAA2c,KACA,MAAAsI,EAAArI,QAAAzd,IAAA+O,EAAAkJ,EAAAuF,GACAG,EAAAF,QAAA/b,IAAAqN,EAAAkJ,EAAApX,EAAA2c,GAQA,OANAG,GAAA/e,KAAAgnB,gBACAhnB,KAAAwI,WAAA6Q,IAAArZ,KAAAwI,WAAA6Q,GAAA8N,eAAAlqB,IAAAuJ,MAAA0gB,EAAAjlB,KACAjC,KAAAkc,cAAA7C,EAAA6N,GAIAnI,CAAA,IAKA/e,KAAAsC,KAAArF,IAAAuhB,cACAxe,KAAA8a,KAAAH,KAAAuE,SAEAlf,KAAAuB,KACAoH,EAAAsX,aAAA,OACAtX,EAAAsX,aAAA,SACAjgB,KAAAuC,MAAAvC,KAAAuC,KAAAwV,cAAApD,QAAA,QAAA,KACA,GACA3U,KAAAuB,KAAAvB,KAAAuB,KAAAoT,QAAA,SAAA,IAEA,IACA3U,KAAAonB,eACApnB,KAAAqnB,iBAAA1e,GACA3I,KAAAsnB,KAAA3e,IACA,IAAA3I,KAAAunB,QACAvnB,KAAAunB,OAAA5e,GAEA3I,KAAA0mB,QACA1mB,KAAAwnB,kBAAA,UAAAxnB,KAAA0mB,OACA1mB,KAAA0mB,MAAAe,aAAAznB,KACAA,KAAA0mB,MAAAgB,aAAA,GAEA1nB,KAAAgnB,eAAA,CACA,CAAA,MAAAhmB,GACAgY,QAAAtD,MAAA1U,EACA,CACA,EAEA2mB,IAAA,KACApf,YAAA,CAAA,EACAC,WAAA,CAAA,EACAC,QAAA,CAAA,EACAC,OAAA,CACAkf,QAAA9P,OAGAyP,OAAA,SAAA5e,GACA3I,KAAA0mB,OACA1mB,KAAA6nB,QAEA,EAEAjD,MAAA,SAAA5B,GACA,OAAA/lB,IAAA2nB,MAAA5B,EAAAhjB,KACA,EAGA8nB,KAAA,SAAAvmB,GACA,GAAAvB,KAAAuB,MAAAA,EAAA,OAAAvB,KAEA,IAAA,IAAAF,EAAA,EAAAA,EAAAE,KAAAygB,SAAApgB,OAAAP,IAAA,CACA,IAAAioB,EAAA/nB,KAAAygB,SAAA3gB,GAAAgoB,KAAAvmB,GACA,GAAAwmB,EAAA,OAAAA,CACA,CAEA,OAAA,IACA,EAEAT,KAAArqB,IAAAS,KAEAsqB,aAAA/qB,IAAAS,KACAuqB,OAAAhrB,IAAAS,KACAwqB,QAAAjrB,IAAAS,KAEAyqB,cAAAlrB,IAAAS,KACAkqB,QAAA3qB,IAAAS,KACA0qB,UAAAnrB,IAAAS,KAEAsK,iBAAA,SAAAzF,EAAA5B,GACA4B,KAAAvC,KAAA2mB,YACA3mB,KAAA2mB,UAAApkB,GAAA,IAAA9C,KAEAO,KAAA2mB,UAAApkB,GAAAoD,IAAAhF,EACA,EAEAqU,oBAAA,SAAAzS,EAAA5B,GACA4B,KAAAvC,KAAA2mB,WACA3mB,KAAA2mB,UAAApkB,GAAAU,OAAAtC,EACA,EAEAqX,cAAA,SAAAvH,EAAA3K,EAAAxD,EAAA+O,GACA,IAAArR,KAAAinB,YAAA,CAEA,GAAA,iBAAAxW,EAEAA,EAAA,IADAzQ,KAAA0I,OAAA+H,IAAA4X,aACA5X,EAAA3K,GAGA,KAAA2K,EAAAlO,QAAAvC,KAAA2mB,WAAA,OAAA,EAEAlW,EAAAY,IAAAA,EACAZ,EAAAN,OAAAnQ,KACAyQ,EAAA6B,MAAAhQ,GAAA,CAAA,EACA,IAAA,IAAAkO,KAAAxQ,KAAA2mB,UAAAlW,EAAAlO,OACA,IAAAiO,EAAAxM,KAAAhE,KAAAyQ,IACAA,EAAA4B,iBAIA,OAAA5B,EAAA6X,gBAlBA,CAmBA,EAEAC,aAAA,SAAAhnB,EAAAoH,GACA,IACA6f,EAAA,IAAArgB,EADAlL,IAAAwB,aAAA8C,IACAoH,EAAA3I,MACAA,KAAAyoB,UAAAD,EAAAA,EAAAjnB,KACA,EAEAknB,UAAA,SAAAhH,EAAAlgB,GACAvB,KAAAygB,SAAAjd,KAAAie,GACAlgB,IACAvB,KAAAsC,KAAAf,IAAAtE,IAAAyrB,OACA1P,QAAAmD,KAAA,mBAAA5a,EAAA,0CAGAvB,KAAA8C,IAAAvB,EAAAkgB,EAAAnf,MAEA,EAEAqmB,aAAA,SAAAlH,GAEAzhB,KAAAygB,SAAAnP,SAAAmQ,IACAzhB,KAAAygB,SAAAld,OAAAvD,KAAAygB,SAAAvK,QAAAuL,GAAA,GAGAA,EAAAlgB,MAAAvB,KAAAsC,KAAAmf,EAAAlgB,OACAvB,KAAAmf,IAAAsC,EAAAlgB,KAEA,EAEAimB,kBAAA,SAAA3e,EAAAF,EAAAH,GAEAA,IAAAA,EAAAvL,IAAAgkB,IAAAU,cAAAhZ,IAEAH,EAAA/H,SAAAsf,IACA,GAAApX,GAAA3I,KAAA0mB,MAAA,CACA,GAAA,QAAA3G,EAAAxe,MAAAvB,KAAAwI,YALA3I,EAKAkgB,EAAAgC,SALAliB,EAAA8U,QAAA,OAAAlC,GAAAA,EAAA,GAAAmW,kBAMA,OAGA,GAAA,MAAA7I,EAAAxe,MAAAvB,KAAA0I,OAAAqX,EAAAgC,UACA,MAEA,CAZA,IAAAliB,EAcA,GAAA5C,IAAA2B,aAAAiK,GAAAkX,EAAAxe,MAAA,CACAvB,KAAA6oB,UAAAlgB,GAAA3I,KAAA0mB,MACA,MAAA9I,EAAA3gB,IAAA2B,aAAAiK,GAAAkX,EAAAxe,MAAAyC,KAAAhE,KAAA2I,EAAAoX,GACAnC,GACA5d,KAAAA,KAAA6oB,UAAA,qBAAA,iBAAArlB,KAAAoa,EAEA,KAGA5d,KAAA6oB,UAAA,IACA,EAEAC,eAAAngB,GACA,GAAA,IAAAA,EAAA+L,UAEAzX,IAAAmB,aAAAwH,KAAA+C,EAAAogB,WAAA,CACA,MAAAC,EAAArgB,EAAAogB,UACApU,QAAA1X,IAAAoB,qBAAA,CAAAqe,EAAAsG,IACA,YAAAA,eAEA9L,MAAA,aAEA+R,EAAAhpB,SAAAipB,yBACAF,EAAAvoB,SAAA,CAAAuhB,EAAAliB,KACA,MAAAqpB,EAAAlpB,SAAAmpB,eAAApH,GACAiH,EAAAtI,YAAAwI,GAEArpB,EAAA,GACAE,KAAAqpB,OAAArH,GAAA/f,IACAknB,EAAAJ,UAAA9mB,CAAA,GAEA,IAGA0G,EAAAmY,WAAAuB,aAAA4G,EAAAtgB,EACA,CACA,EAEAkf,OAAA,SAAAlf,GAGA,GAFAA,EAAAA,GAAA3I,KAAA0mB,MAIA,OAAA,IAAA/d,EAAA+L,SACA1U,KAAA8oB,eAAAngB,QAGA,IAAAA,EAAA+L,WAEAzX,IAAAG,OAAAC,SACAqB,OAAAqH,KAAA9I,IAAAG,OAAAC,SAAAoD,SAAA+B,IACAvF,IAAAa,MAAA6K,EAAAxI,iBAAAqC,IAAA/B,SAAAkI,IACAA,EAAAlH,aAAA,OACAkH,EAAAhH,aAAA,KAAA,OAAA1E,IAAAG,OAAAC,QAAAmF,GACA,GACA,IAIAvF,IAAAgkB,IAAAM,KACA5Y,GACA,SAAAA,GACA,GAAAA,GAAA3I,KAAA0mB,MAAA,CAMA,GAAA,IAAA/d,EAAA+L,SAAA,CACA,IAAA8G,EAAA7S,EAAA6S,QAAAzD,cACAvP,EAAAvL,IAAAgkB,IAAAU,cAAAhZ,GAMA,GAJAA,EAAAlH,aAAA,QACA+Z,EAAA7S,EAAAsX,aAAA,OAGAhjB,IAAAiB,gBAAA0H,KAAA4V,GAEA,OAAA,EAKA,GAFAxb,KAAAwnB,kBAAA,SAAA7e,EAAAH,IAEA,IADAA,EAAA8gB,WAAAvJ,GAAA,WAAAA,EAAAxe,OACA,OAAA,EAEA,GAAAtE,IAAAkB,WAAAyH,KAAA4V,GAGA,OAFAA,EAAAA,EAAA7G,QAAA,SAAA,OAEA1X,IAAAwB,cACAkK,EAAA4gB,aAAA,EACA5gB,EAAA+e,YAEA1qB,OAAAwsB,aAIA7gB,EAAA8e,cAAA9e,EAAA8e,aAAAI,SAEA5qB,IAAAiB,gBAAA0H,KAAA+C,EAAA6S,UACA7S,EAAA8e,aAAAI,UARA7nB,KAAAuoB,aAAA/M,EAAA7S,IAYA,QAEAqQ,QAAAmD,KAAA,4BAAAX,GAKAxb,KAAAwnB,kBAAA,UAAA7e,EAAAH,EACA,CAGA,IAAAG,EAAA+L,UACA1U,KAAA8oB,eAAAngB,EAlDA,CAoDA,GACA3I,OAEA,EAEAypB,QAAA,SAAAC,GACA1Q,QAAAmD,KAAA,mCACA,EAEAkL,iBAAA,SAAA1e,GAGA,IAAA,MAAApH,KAAAvB,KAAAwI,WAAA,CACA,MAAAmhB,EAAA3pB,KAAAwI,WAAAjH,GACAqoB,EAAAroB,EAJAoT,QAAA,UAAA6B,GAAA,IAAAA,EAAAuB,gBAMA,IAAA9V,EAAAhF,IAAAsI,MAAAokB,EAAAE,SAGA,GAAAlhB,EAAAlH,aAAAmoB,GAAA,CACA,GAAAD,EAAApnB,OAAAunB,QACA7nB,EAAA,UAAA0G,EAAAsX,aAAA2J,OACA,CAUA,GATA3nB,EAAA0G,EAAAsX,aAAA2J,GAEAD,EAAApnB,OAAAwnB,QAEA9nB,GAAA+nB,SAAAD,OAAA9nB,MACAA,EAAA8nB,OAAA9nB,IAIA0nB,EAAApnB,OAAA7D,QAAAirB,EAAApnB,OAAAvE,MACA,IACAiE,EAAAwY,KAAAmK,MAAA3iB,EACA,CAAA,MAAA8W,GACAC,QAAAmD,KAAA,uDAAAla,EACA,CAGA0nB,EAAAM,OAAAN,EAAAM,KAAA3Y,SAAArP,KACAA,EAAAhF,IAAAsI,MAAAokB,EAAAE,UAGAF,EAAApO,WAAAoO,EAAApO,SAAAtZ,KACAA,EAAAhF,IAAAsI,MAAAokB,EAAAE,SAEA,CAEA7pB,KAAA8F,MAAAvE,GAAAU,CAEA,CAGA,GAAA0G,EAAAlH,aAAA,YAAAmoB,GAAA,CACA,MAAA5G,EAAAra,EAAAsX,aAAA,YAAA2J,GAEA5pB,KAAAqpB,OAAArG,GAAA/gB,SACApE,IAAAoE,EACAA,EAAAhF,IAAAsI,MAAAokB,EAAAE,SACAF,EAAApnB,OAAAunB,QACA7nB,IAAAA,GAEA,MAAAA,IACA0nB,EAAApnB,OAAAwnB,SACA,iBAAA9nB,EAEAA,EADAA,GAAA+nB,SAAAD,OAAA9nB,IACA8nB,OAAA9nB,GAEAhF,IAAAsI,MAAAokB,EAAAE,SAEA,iBAAA5nB,GAAA+nB,SAAAD,OAAA9nB,MACAA,EAAAhF,IAAAsI,MAAAokB,EAAAE,WAIAF,EAAApnB,OAAAwE,SACA9E,EAAA8E,OAAA9E,IAGA0nB,EAAApnB,OAAA7D,QAAA,iBAAAuD,IACAA,EAAAhF,IAAAsI,MAAAokB,EAAAE,UAGAF,EAAApnB,OAAAvE,QACAiE,EAAAjE,MAAAC,KAAAgE,KAIA0nB,EAAAM,OAAAN,EAAAM,KAAA3Y,SAAArP,KACAA,EAAAhF,IAAAsI,MAAAokB,EAAAE,UAGAF,EAAApO,WAAAoO,EAAApO,SAAAtZ,KACAA,EAAAhF,IAAAsI,MAAAokB,EAAAE,WAIA7pB,KAAA8F,MAAAvE,GAAAU,CAAA,GAEA,MACAjC,KAAA8F,MAAAvE,GAAAU,CAEA,CAEA,IAAA,MAAAwO,KAAAzQ,KAAA0I,OACAC,EAAAlH,aAAA,KAAAgP,IACAzQ,KAAA4mB,cAAApjB,KAAAvG,IAAAiT,cAAAlQ,KAAAyQ,EAAAyZ,SAAA,QAAAvhB,EAAAsX,aAAA,KAAAxP,IAAA,CAAA,IAIAxT,IAAAgkB,IAAAU,cAAAhZ,GAAAlI,SAAAsf,IACA,MAAAA,EAAAxe,MAAAvB,KAAA0I,OAAAqX,EAAAgC,WACA/hB,KAAA4mB,cAAApjB,KAAAvG,IAAAiT,cACAlQ,KACA+f,EAAAgC,UACAtR,IACAA,EAAAW,gBACAX,EAAAA,EAAAW,eAGAnU,IAAA2nB,MACA7E,EAAA9d,MACAhF,IAAAmiB,UACA,CACA+K,OAAA1Z,EAAA6B,MACA8X,eAAA3Z,GAEAzQ,SAMA+f,EAAAzP,WAEA,GAEA,EAEA4L,cAAA,SAAA7C,EAAA6N,GAEAlnB,KAAAqqB,gBAEArqB,KAAA8mB,aAAA3jB,IAAAkW,IACArZ,KAAA8mB,aAAAhkB,IAAAuW,EAAA6N,GAGAlnB,KAAA+mB,iBAGA9pB,IAAA+e,UAAA,KAEAhc,KAAAinB,cACAjnB,KAAA+mB,iBAAA,EACA/mB,KAAAqqB,cAAArqB,KAAA8mB,cACA9mB,KAAA8mB,aAAAlkB,QAAA,IAIA5C,KAAA+mB,iBAAA,EACA,EAEAK,aAAA,WACA1oB,OAAAkJ,OACA5H,KAAAsC,KACA,CAAAgoB,MAAAtqB,KAAAuC,MACA,mBAAAvC,KAAAuI,YAAAvI,KAAAuI,cAAAvI,KAAAuI,aAGA7J,OAAAqH,KAAA/F,KAAAyI,SAAAhI,SAAA,SAAA+lB,GACA,IAAA9V,EAAA1Q,KACAA,KAAAsC,KAAA,KAAAkkB,GAAA,WACA,OAAA9V,EAAAjI,QAAA+d,GAAA9e,MAAAgJ,EAAA1S,MAAA2B,UAAAsE,MAAAD,KAAA2D,UAAA,GACA,CACA,GAAA3H,KACA,EAGAuqB,YAAA,SAAAvH,EAAArZ,GACA3J,KAAAqpB,OAAArG,EAAArZ,EACA,EAEA0f,OAAA,SAAArG,EAAArZ,GACA,MAAA0P,EAAArZ,KAAA6oB,UAAA,qBAAA,gBACA7oB,KAAAqZ,KAAArZ,KAAAqZ,GAAA,IACA,IAAAiO,GAAA,EAEAtnB,KAAAqZ,GAAA7V,KACAvG,IAAAihB,QAAA,KACA,GAAAoJ,EACA3d,EAAA3F,KAAAhE,KAAAA,KAAA4kB,MAAA5B,IACAsE,GAAA,MACA,CACA,MAAArlB,EAAAjC,KAAA4kB,MAAA5B,GACAtiB,gBAAA,IAAAiJ,EAAA3F,KAAAhE,KAAAiC,IACA,KAGA,EAEAuoB,SAAA,WACAxqB,KAAAgY,cAAA,WACAhY,KAAAmoB,gBACAnoB,KAAA4nB,UACA5nB,KAAAinB,aAAA,EACAjnB,KAAAwH,QAAAxH,KAAAwH,OAAAmhB,cACA3oB,KAAAwH,OAAAmhB,aAAA3oB,MAEAA,KAAAyqB,mBACAzqB,KAAA4mB,cAAAnmB,SAAAmd,GAAAA,MACA5d,KAAA4mB,cAAA,GACA5mB,KAAA0mB,QACA1mB,KAAA0mB,MAAAe,aAAA,KACAznB,KAAA0mB,MAAA,MAEA1mB,KAAAwH,OAAA,KACAxH,KAAAsC,KAAA,CAAA,EACAtC,KAAAooB,WACA,EAEAqC,iBAAA,WACAzsB,MAAAC,KAAA+B,KAAAygB,UAAAhgB,SAAAghB,IACAA,EAAA+I,UAAA,IAEAxqB,KAAAygB,SAAA,GAEAzgB,KAAA6mB,mBAAApmB,SAAAmd,GAAAA,MACA5d,KAAA6mB,mBAAA,EACA,EAEAzlB,IAAA,SAAAG,EAAAmpB,GACA,YAAA7sB,IAAAmC,KAAAsC,KAAAf,GACAvB,KAAAsC,KAAAf,GAGAvB,KAAAwH,SAAA,IAAAkjB,EACA,UAAAnpB,EACAvB,KAAAwH,OAAAlF,KAGAtC,KAAAwH,OAAApG,IAAAG,QALA,CASA,EAEAoE,IAAA,SAAApE,EAAAU,GACAjC,KAAAsC,KAAAf,GACAvD,MAAAkG,QAAAlE,KAAAsC,KAAAf,IACAvB,KAAAsC,KAAAf,GAAAiC,KAAAvB,GAEAjC,KAAAsC,KAAAf,GAAA,CAAAvB,KAAAsC,KAAAf,GAAAU,GAGAjC,KAAA8C,IAAAvB,EAAAU,EAEA,EAEAa,IAAA,SAAAvB,EAAAU,GACA,iBAAAV,EACAtE,IAAAsf,OAAA,KACA,IAAA,IAAAlD,KAAA9X,EACAA,EAAAM,eAAAwX,IACArZ,KAAA8C,IAAAuW,EAAA9X,EAAA8X,GAEA,IAGArZ,KAAAsC,KAAAf,GAAAU,CAEA,EAEAkd,IAAA,SAAA5d,UACAvB,KAAAsC,KAAAf,EACA,IC3jBA,WAKAtE,IAAA0tB,aAAAA,EACA1tB,IAAA0tB,aAAA/F,MAAAA,EACA3nB,IAAA0tB,aAAAC,QAiHA,SAAApQ,EAAAkD,GACA,OAAAmN,EAAAjG,EAAApK,EAAAkD,GACA,EAlHAzgB,IAAA0tB,aAAAE,iBAAAA,EACA5tB,IAAA0tB,aAAAG,eAAAA,EAKA,IAAAC,EAAA,IAOAC,EAAA,IAAArG,OAAA,CAGA,UAMA,uFACAsG,KAAA,KAAA,KASA,SAAArG,EAAApK,EAAAkD,GAUA,IATA,IAOAwN,EAPA5H,EAAA,GACAlhB,EAAA,EACAO,EAAA,EACAwoB,EAAA,GACAC,EAAA1N,GAAAA,EAAA2N,WAAAN,EACAO,EAAA5N,GAAAA,EAAA4N,gBAAAztB,EACA0tB,GAAA,EAGA,QAAAL,EAAAF,EAAA7lB,KAAAqV,KAAA,CACA,IAAAwD,EAAAkN,EAAA,GACAM,EAAAN,EAAA,GACA1R,EAAA0R,EAAAvoB,MAKA,GAJAwoB,GAAA3Q,EAAAvW,MAAAtB,EAAA6W,GACA7W,EAAA6W,EAAAwE,EAAA3d,OAGAmrB,EACAL,GAAAK,EAAA,GACAD,GAAA,MAFA,CAMA,IAAA/O,EAAA,GACAjb,EAAA2pB,EAAA,GACAtW,EAAAsW,EAAA,GACAO,EAAAP,EAAA,GACAQ,EAAAR,EAAA,GAEA,IAAAK,GAAAJ,EAAA9qB,OAAA,CACA,IAAAsZ,EAAAwR,EAAA9qB,OAAA,EACAmW,EAAA2U,EAAAxR,KACA2R,GAAAA,EAAApV,QAAAM,IAAA,KAGAgG,EAAAhG,EACA2U,EAAAA,EAAAlnB,MAAA,EAAA0V,GAEA,CAGAwR,IACA7H,EAAA9f,KAAA2nB,GACAA,EAAA,GACAI,GAAA,GAGA,IAAAhX,EAAA,MAAAmX,GAAA,MAAAA,EACAC,EAAA,MAAAD,GAAA,MAAAA,EACAE,EAAAhX,GAAA6W,EACAJ,EAAA7O,GAAA4O,EAEA9H,EAAA9f,KAAA,CACAjC,KAAAA,GAAAa,IACAypB,OAAArP,EACA6O,UAAAA,EACAM,SAAAA,EACApX,OAAAA,EACAqX,QAAAA,EACAE,EAAAF,GACA,KAAAG,EAAAV,IAAAD,EAAAC,EAAAA,EAAAD,GAAA,OAvCA,CAyCA,CAOA,OAJAD,GAAAxoB,EAAA6X,EAAAna,SACAijB,EAAA9f,KAAA2nB,EAAA3Q,EAAAsH,OAAAnf,IAGA2gB,CACA,CAgBA,SAAAuH,EAAAvH,GAKA,IAHA,IAAAvjB,EAAA,IAAA/B,MAAAslB,EAAAjjB,QAGAP,EAAA,EAAAA,EAAAwjB,EAAAjjB,OAAAP,IACA,iBAAAwjB,EAAAxjB,KACAC,EAAAD,GAAA,IAAA6kB,OAAA,OAAArB,EAAAxjB,GAAA8rB,QAAA,OAIA,OAAA,SAAAtpB,EAAAob,GAIA,IAHA,IAAAyN,EAAA,GACAa,EAAAtO,GAAAA,EAAAsO,QAAAC,mBAEAnsB,EAAA,EAAAA,EAAAwjB,EAAAjjB,OAAAP,IAAA,CACA,IAAAmjB,EAAAK,EAAAxjB,GAEA,GAAA,iBAAAmjB,EAAA,CAKA,IACAiJ,EADAjqB,EAAAK,EAAAA,EAAA2gB,EAAA1hB,WAAA1D,EAGA,GAAAG,MAAAkG,QAAAjC,GAAA,CACA,IAAAghB,EAAA1O,OACA,MAAA,IAAA4X,UAAA,aAAAlJ,EAAA1hB,KAAA,kCAGA,GAAA,IAAAU,EAAA5B,OAAA,CACA,GAAA4iB,EAAA0I,SAAA,SAEA,MAAA,IAAAQ,UAAA,aAAAlJ,EAAA1hB,KAAA,oBACA,CAEA,IAAA,IAAAmf,EAAA,EAAAA,EAAAze,EAAA5B,OAAAqgB,IAAA,CAGA,GAFAwL,EAAAF,EAAA/pB,EAAAye,GAAAuC,IAEAljB,EAAAD,GAAA8F,KAAAsmB,GACA,MAAA,IAAAC,UAAA,iBAAAlJ,EAAA1hB,KAAA,eAAA0hB,EAAA2I,QAAA,KAGAT,IAAA,IAAAzK,EAAAuC,EAAA4I,OAAA5I,EAAAoI,WAAAa,CACA,CAGA,MAEA,GAAA,iBAAAjqB,GAAA,iBAAAA,GAAA,kBAAAA,GAWA,IAAAghB,EAAA0I,SAEA,MAAA,IAAAQ,UAAA,aAAAlJ,EAAA1hB,KAAA,YAAA0hB,EAAA1O,OAAA,WAAA,iBAbA,CAGA,GAFA2X,EAAAF,EAAAjlB,OAAA9E,GAAAghB,IAEAljB,EAAAD,GAAA8F,KAAAsmB,GACA,MAAA,IAAAC,UAAA,aAAAlJ,EAAA1hB,KAAA,eAAA0hB,EAAA2I,QAAA,eAAAM,EAAA,KAGAf,GAAAlI,EAAA4I,OAAAK,CAEA,CAtCA,MAFAf,GAAAlI,CA6CA,CAEA,OAAAkI,CACA,CACA,CAQA,SAAAY,EAAAvR,GACA,OAAAA,EAAA7F,QAAA,4BAAA,OACA,CAQA,SAAAmX,EAAAL,GACA,OAAAA,EAAA9W,QAAA,eAAA,OACA,CAQA,SAAAyX,EAAA1O,GACA,OAAAA,GAAAA,EAAA2O,UAAA,GAAA,GACA,CAqEA,SAAAvB,EAAAxH,EAAAvd,EAAA2X,GAWA,IARA,IAAA4O,GAFA5O,EAAAA,GAAA,CAAA,GAEA4O,OACApJ,GAAA,IAAAxF,EAAAwF,MACAhY,GAAA,IAAAwS,EAAAxS,IACAmgB,EAAA3N,EAAA2N,WAAAN,EACAjG,EAAA,GAAAyH,OAAA7O,EAAAoH,UAAA,IAAAtiB,IAAAupB,GAAAQ,OAAA,KAAAtB,KAAA,KACAuB,EAAAtJ,EAAA,IAAA,GAGApjB,EAAA,EAAAA,EAAAwjB,EAAAjjB,OAAAP,IAAA,CACA,IAAAmjB,EAAAK,EAAAxjB,GAEA,GAAA,iBAAAmjB,EACAuJ,GAAAT,EAAA9I,OACA,CACA,IAAArO,EAAAqO,EAAA1O,OACA,MAAA0O,EAAA2I,QAAA,OAAAG,EAAA9I,EAAAoI,WAAA,MAAApI,EAAA2I,QAAA,MACA3I,EAAA2I,QAEA7lB,GAAAA,EAAAvC,KAAAyf,GAEAA,EAAA0I,SACA1I,EAAA4I,OAGAW,GAAA,MAAAT,EAAA9I,EAAA4I,QAAA,IAAAjX,EAAA,MAFA4X,GAAA,IAAA5X,EAAA,KAKA4X,GAAAT,EAAA9I,EAAA4I,QAAA,IAAAjX,EAAA,GAEA,CACA,CAEA,GAAA1J,EACAohB,IAAAE,GAAA,MAAAT,EAAAV,GAAA,MAEAmB,GAAA,MAAA1H,EAAA,IAAA,MAAAA,EAAA,QACA,CACA,IAAA2H,EAAAnJ,EAAAA,EAAAjjB,OAAA,GACAqsB,EAAA,iBAAAD,EACAA,EAAAA,EAAApsB,OAAA,KAAAgrB,OACAxtB,IAAA4uB,EAEAH,IAAAE,GAAA,MAAAT,EAAAV,GAAA,MAAAvG,EAAA,OACA4H,IAAAF,GAAA,MAAAT,EAAAV,GAAA,IAAAvG,EAAA,IACA,CAEA,OAAA,IAAAH,OAAA6H,EAAAJ,EAAA1O,GACA,CAcA,SAAAiN,EAAAQ,EAAAplB,EAAA2X,GACA,OAAAyN,aAAAxG,OA7HA,SAAAwG,EAAAplB,GACA,IAAAA,EAAA,OAAAolB,EAGA,IAAAwB,EAAAxB,EAAAjmB,OAAA6R,MAAA,aAEA,GAAA4V,EACA,IAAA,IAAA7sB,EAAA,EAAAA,EAAA6sB,EAAAtsB,OAAAP,IACAiG,EAAAvC,KAAA,CACAjC,KAAAzB,EACA+rB,OAAA,KACAR,UAAA,KACAM,UAAA,EACApX,QAAA,EACAqX,QAAA,OAKA,OAAAT,CACA,CA0GAyB,CAAAzB,EAAAplB,GAGA/H,MAAAkG,QAAAinB,GAnGA,SAAAA,EAAAplB,EAAA2X,GAGA,IAFA,IAAAsL,EAAA,GAEAlpB,EAAA,EAAAA,EAAAqrB,EAAA9qB,OAAAP,IACAkpB,EAAAxlB,KAAAmnB,EAAAQ,EAAArrB,GAAAiG,EAAA2X,GAAAxY,QAGA,OAAA,IAAAyf,OAAA,MAAAqE,EAAAiC,KAAA,KAAA,IAAAmB,EAAA1O,GACA,CA4FAmP,CAAA,EAAA9mB,EAAA2X,GAlFA,SAAAyN,EAAAplB,EAAA2X,GACA,OAAAoN,EAAAlG,EAAAuG,EAAAzN,GAAA3X,EAAA2X,EACA,CAmFAoP,CAAA,EAAA/mB,EAAA2X,EACA,CAEA,CAlXA,GCAA1gB,OAAA+vB,QACA/vB,OAAA+vB,MAAA,CAAA,EAEAA,MAAAnI,MAAA,SAAA1f,GAGA,IAAA8nB,EACAC,EACA9J,EACA+J,EAAA,CACA,IAAA,IACA,IAAA,IACA,KAAA,KACA,IAAA,IACAxO,EAAA,KACA3B,EAAA,KACAtD,EAAA,KACAyD,EAAA,KACAiQ,EAAA,MAQA,SAAAC,EAAA5W,GACA,MAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,GAAA,MAAAA,CACA,CAGA,SAAAd,EAAAsI,GACA,IAAAle,EAAAutB,EAAA,EAAAC,EAAA,EACA,IAAAxtB,EAAAmtB,EAAA,EAAAntB,EAAA,GAAA,OAAAktB,EAAAltB,GAAAA,IAAAutB,KACA,KAAAvtB,EAAA,EAAAA,IAAA,OAAAktB,EAAAltB,IAAAwtB,IACA,MAAA,IAAA3U,MAAAqF,EAAA,YAAAsP,EAAA,IAAAD,EAAA,OAAAL,EAAAlL,OAAAmL,EAAAI,EAAA,IAAA,OACA,CAEA,SAAA7I,IAIA,OAFArB,EAAA6J,EAAAO,OAAAN,GACAA,IACA9J,CACA,CAEA,SAAA/F,EAAAoQ,GAEA,OAAAR,EAAAO,OAAAN,EAAAO,EACA,CAEA,SAAAtuB,EAAAuuB,GAOA,IAJA,IAAAvuB,EAAA,GAGAwuB,EAAAvK,EACAqB,KAAA,CACA,GAAArB,IAAAuK,EAEA,OADAlJ,IACAiJ,GAAA,MAAAC,GAAA,MAAAvK,GAAA,IAAAjkB,EAAAmB,QAEAmkB,IACAmJ,KACAzuB,EAEA,GAAA,OAAAikB,EAEA,GADAqB,IACA,MAAArB,EAAA,CAEA,IADA,IAAAyK,EAAA,EACA9tB,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA0kB,IACA,IAAAH,EAAA7N,EAAA2M,EAAA1M,WAAA,GACA0M,GAAA,KAAAA,GAAA,IAAAkB,EAAA7N,EAAA,GACA2M,GAAA,KAAAA,GAAA,IAAAkB,EAAA7N,EAAA,GAAA,GACA2M,GAAA,KAAAA,GAAA,IAAAkB,EAAA7N,EAAA,GAAA,GACAd,EAAA,gBAAAyN,GACAyK,EAAA,GAAAA,EAAAvJ,CACA,CACAnlB,GAAA6H,OAAAud,aAAAsJ,EACA,KAAA,IAAA,iBAAAV,EAAA/J,GAEA,MADAjkB,GAAAguB,EAAA/J,EACA,KACA,OAAAA,GAAA,OAAAA,EACAzN,EAAA,iCAEAxW,GAAAikB,CAEA,CACAzN,EAAA,aACA,CAEA,SAAAiY,IAMA,IAJA,IAAAzuB,EAAA,GAAA2uB,EAAA,EAGAC,EAAA,IACA,CACA,IAAAtX,EAAA4G,GAAA0Q,EAAA,GACA,IAAAtX,GAAA,OAAAA,EAAA,MACAsX,GACA,CAEA,SAAAC,IAEA,IADA,IAAA1P,EAAAyP,EACA3K,GAAAA,GAAA,KAAA,OAAAA,GAAA9E,KAAA,GAAAmG,GACA,CAGA,KAAArB,GAAAA,GAAA,KAAA,OAAAA,GAAAqB,IAIA,IAHA,OAAArB,IAAAqB,IAAAuJ,OAGA,CACA,GAAA5K,EAEA,IAAA,MAAAA,EAAA,CAGA,GAFA0K,IACArJ,IACA,IAAAqJ,EAEA,MADA,OAAA3uB,EAAA+E,OAAA,KAAA/E,EAAAA,EAAA+E,MAAA,GAAA,IACA/E,EACA,QACA,CACA,KAAA2uB,EAAA,GACA3uB,GAAA,IACA2uB,GAEA,MAbAnY,EAAA,wBAcA,OAAAyN,GACAjkB,GAAA,KACAslB,IACAuJ,MAEA,OAAA5K,IAAAjkB,GAAAikB,GACAqB,IAEA,CACA,CAEA,SAAAwJ,IAIA,GAAA,MAAA7K,GAAA,MAAAA,EAAA,OAAAjkB,GAAA,GAGA,IADA,IAAAqC,EAAA,GAAA2hB,EAAA+J,EAAA1iB,GAAA,IACA,CACA,GAAA,MAAA4Y,EAGA,OAFA5hB,EACAgJ,GAAA,GAAAA,IAAAhJ,EAAAlB,SAAA4sB,EAAA/J,EAAA3Y,EAAAmL,EAAA,8DADAA,EAAA,gEAEAnU,EACA4hB,GAAA,IACAA,EACA5Y,EAAA,IAAAA,EAAAhJ,EAAAlB,QADAqV,EAAA,8DAEA0X,EAAAjK,GACAzN,EAAA,UAAAyN,EAAA,mHAEA5hB,GAAA4hB,EAEAqB,GACA,CACA,CAEA,SAAAyJ,IACA,KAAA9K,GAAA,CAEA,KAAAA,GAAAA,GAAA,KAAAqB,IAEA,GAAA,MAAArB,GAAA,MAAAA,GAAA,MAAA/F,EAAA,GACA,KAAA+F,GAAA,OAAAA,GAAAqB,QACA,IAAA,MAAArB,GAAA,MAAA/F,EAAA,GAIA,MAFA,IADAoH,IAAAA,IACArB,IAAA,MAAAA,GAAA,MAAA/F,EAAA,KAAAoH,IACArB,IAAAqB,IAAAA,IACA,CACA,CACA,CAyCA,SAAA0J,EAAAlB,EAAAmB,GAGA,IAAAhvB,EAEAgkB,EAFAjkB,EAAA,GAAAkvB,EAAA,EAAAC,GAAA,EACApB,EAAA,EAEA,SAAAzI,IAGA,OAFArB,EAAA6J,EAAAO,OAAAN,GACAA,IACA9J,CACA,CAOA,IALAqB,IACA,MAAArB,IACAjkB,EAAA,IACAslB,KAEArB,GAAA,KAAAA,GAAA,KACAkL,IACA,KAAAlL,EAAAiL,IACAC,GAAA,GAEAnvB,GAAAikB,EACAqB,IAGA,GADA6J,GAAAD,IACA,MAAAjL,EAEA,IADAjkB,GAAA,IACAslB,KAAArB,GAAA,KAAAA,GAAA,KACAjkB,GAAAikB,EAEA,GAAA,MAAAA,GAAA,MAAAA,EAOA,IANAjkB,GAAAikB,EACAqB,IACA,MAAArB,GAAA,MAAAA,IACAjkB,GAAAikB,EACAqB,KAEArB,GAAA,KAAAA,GAAA,KACAjkB,GAAAikB,EACAqB,IAKA,KAAArB,GAAAA,GAAA,KAAAqB,IASA,OAPA2J,IAEA,MAAAhL,GAAA,MAAAA,GAAA,MAAAA,GACA,MAAAA,IAAA,MAAAA,GAAA,MAAA6J,EAAAC,IAAA,MAAAD,EAAAC,MAAA9J,EAAA,IAGAhkB,GAAAD,EACAikB,GAAAiL,IAAApE,SAAA7qB,QAAA,EACAA,CACA,CAEA,SAAAmvB,EAAArsB,GACA,SAAAssB,EAAAtsB,EAAAkhB,GACA,IAAArjB,EAAA6Z,EAAAtZ,EAAA6qB,EACA,cAAAjpB,GACA,IAAA,SACAA,EAAAiU,QAAAiN,IAAA,IAAA+H,EAAAjpB,GACA,MACA,IAAA,SACA,GAAA,mBAAAvD,OAAAiB,UAAAiC,SAAA8F,MAAAzF,GACA,IAAAnC,EAAA,EAAAO,EAAA4B,EAAA5B,OAAAP,EAAAO,EAAAP,IACAorB,EAAAqD,EAAAtsB,EAAAnC,GAAAqjB,IAAA+H,OAGA,IAAAvR,KAAA1X,EACAvD,OAAAiB,UAAAkC,eAAAmC,KAAA/B,EAAA0X,KACAuR,EAAAqD,EAAAtsB,EAAA0X,GAAAwJ,IAAA+H,GAIA,OAAAA,CACA,CAEA,SAAAsD,EAAArL,GACA,IAAAsL,EAAAF,EAAAtsB,EAAAkhB,GACA,OAAAsL,EACA,UAAAtL,EAAA,yDACAsL,EADA,iEAGA,EACA,CAEA,OAAAD,EAAA,MAAAA,EAAA,IACA,CAEA,SAAA1wB,IAIA,IAAAA,EAAA,GACA,IAGA,GAFA0mB,IACAyJ,IACA,MAAA9K,EAEA,OADAqB,IACA1mB,EAGA,KAAAqlB,GAAA,CAMA,GALArlB,EAAA0F,KAAAvB,KACAgsB,IAGA,MAAA9K,IAAAqB,IAAAyJ,KACA,MAAA9K,EAEA,OADAqB,IACA1mB,EAEAmwB,GACA,CAEAvY,EAAA,oDACA,CAAA,MAAA1U,GAEA,MADAA,EAAA0tB,KAAA1tB,EAAA0tB,MAAAJ,EAAAxwB,GACAkD,CACA,CACA,CAEA,SAAA5B,EAAAuvB,GAGA,IAAAvsB,EAAA,GAAAhD,EAAA,CAAA,EAEA,IAOA,GANAuvB,GAEAnK,IAGAyJ,IACA,MAAA9K,IAAAwL,EAEA,OADAnK,IACAplB,EAEA,KAAA+jB,GAAA,CAWA,GAVA/gB,EAAA4rB,IACAC,IACA,MAAA9K,GAAAzN,EAAA,4BAAAyN,EAAA,KACAqB,IAEAplB,EAAAgD,GAAAH,IACAgsB,IAGA,MAAA9K,IAAAqB,IAAAyJ,KACA,MAAA9K,IAAAwL,EAEA,OADAnK,IACAplB,EAEA6uB,GACA,CAEA,GAAAU,EAAA,OAAAvvB,EACAsW,EAAA,qDACA,CAAA,MAAA1U,GAEA,MADAA,EAAA0tB,KAAA1tB,EAAA0tB,MAAAJ,EAAAlvB,GACA4B,CACA,CACA,CAEA,SAAAiB,IAIA,OADAgsB,IACA9K,GACA,IAAA,IAAA,OAAA/jB,IACA,IAAA,IAAA,OAAAtB,IACA,IAAA,IACA,IAAA,IAAA,OAAAoB,GAAA,GACA,QAAA,OAvNA,WAGA,IAAA+C,EAAAkhB,EAIA,IAHAiK,EAAAjK,IACAzN,EAAA,iCAAAyN,EAAA,6DAEA,CACAqB,IAEA,IAAAoK,EAAA,OAAAzL,GAAA,OAAAA,GAAA,KAAAA,EACA,GAAAyL,GACA,MAAAzL,GAAA,MAAAA,GAAA,MAAAA,GACA,MAAAA,GACA,MAAAA,IAAA,MAAA/F,EAAA,IAAA,MAAAA,EAAA,IACA,CAIA,IAAAyR,EAAA5sB,EAAA,GACA,OAAA4sB,GACA,IAAA,IAAA,GAAA,UAAA5sB,EAAA4iB,OAAA,OAAA,EAAA,MACA,IAAA,IAAA,GAAA,SAAA5iB,EAAA4iB,OAAA,OAAA,KAAA,MACA,IAAA,IAAA,GAAA,SAAA5iB,EAAA4iB,OAAA,OAAA,EAAA,MACA,QACA,GAAA,MAAAgK,GAAAA,GAAA,KAAAA,GAAA,IAAA,CACA,IAAApV,EAAAyU,EAAAjsB,GACA,QAAApE,IAAA4b,EAAA,OAAAA,CACA,EAEA,GAAAmV,EAEA,OAAA3sB,EAAA4iB,MAEA,CACA5iB,GAAAkhB,CACA,CACA,CAkLA2L,GAEA,CAEA,SAAAC,EAAAnxB,GAGA,OAFAqwB,IACA9K,GAAAzN,EAAA,2CACA9X,CACA,CAWA,GAAA,iBAAAsH,EAAA,MAAA,IAAAyT,MAAA,0BAGA,OAFAqU,EAAA9nB,EAzYA+nB,EAAA,EACA9J,EAAA,IA8XA,WAEA,OADA8K,IACA9K,GACA,IAAA,IAAA,OAAA4L,EAAA3vB,KACA,IAAA,IAAA,OAAA2vB,EAAAjxB,KACA,QAAA,OAAAixB,EAAA9sB,KAEA,CAKA+sB,EACA,GClaA/xB,IAAAgyB,KAAAhyB,IAAAqK,YAAA,CACAhD,YAAA,SAAAkD,GACA,KAAAxH,gBAAA/C,IAAAgyB,MACA,OAAA,IAAAhyB,IAAAgyB,KAAAznB,GAGAxK,OAAA4D,SACAoY,QAAAmD,KAAA,qDAGAnc,KAAAkvB,UAAAlvB,KAAAkvB,UAAAzI,KAAAzmB,MAEAA,KAAA4iB,MAAA,IAAA3lB,IAAAmiB,UAAA,CAAA,EAAA5X,GACAxH,KAAAmvB,OAAA,CAAA,CACA,EAEArR,IAAA,SAAAsR,GAGA,OAFApvB,KAAAmvB,OAAA,CAAA,EAEAnvB,KAAAqvB,MAAAD,EAAAjqB,MAAAiqB,GAAAtuB,MAAA,KACA7D,IAAAyrB,OACA1P,QAAA0P,MAAA,WAAA1oB,KAAAmvB,QAEAnvB,KAAAmvB,SAEA,EAEAG,MAAA,SAAArJ,EAAAne,GACA,OAAAlH,QAAAC,QAAAolB,GAAAnlB,MAAAmlB,IACAA,EAAAjoB,MAAAkG,QAAA+hB,GAAAA,EAAA,CAAAA,IAGA1O,QAAA,CAAAiF,EAAA+S,EAAAzvB,IACA0c,EAAA1b,MAAA,IACAgH,EAAAynB,EAAAzvB,EAAAmmB,EAAA5lB,QAAAS,MAAAoC,IACAA,IACA+iB,EAAAnmB,GAAAoD,EACA,OAGAtC,QAAAC,WACAC,MAAA,IACAmlB,KAGA,EAEAoJ,MAAA,SAAAD,GACA,GAAAA,EAAAI,MAAA,CACA,IAAAjmB,EAAAvJ,KAAAsvB,MAAAF,EAAAI,MAAAxvB,KAAAkvB,WAQA,OANAE,EAAAruB,OACAwI,EAAAxI,OAAAgY,GACA/Y,KAAAsvB,MAAAF,EAAAruB,MAAA2P,KAAAwe,aAIA3lB,CACA,CAEA,OAAAvJ,KAAAsvB,MAAAF,EAAApvB,KAAAkvB,UACA,EAEAA,UAAA,SAAAO,GACA,IAAA,IAAAluB,KAAAkuB,EAAA,CACA,GAAAA,EAAA5tB,eAAAN,IAAAtE,IAAAsC,UAAAgC,GAAA,CACA,MAAA4H,EAAAlM,IAAAsC,UAAAgC,GAAAklB,KAAAzmB,MACA0d,EAAA+R,EAAAluB,GACAmuB,EAAAnuB,EAAAmY,KAAAiW,MAOA,OALA1yB,IAAAyrB,QACA1P,QAAA0P,MAAA,cAAAnnB,EAAAmc,GACA1E,QAAA4W,KAAAF,IAGAhS,EAAAmS,SACAjvB,QAAAC,UAGAD,QAAAC,QAAAsI,EAAAuU,IAAA5c,MAAAquB,IACAlyB,IAAAyrB,QACA1P,QAAA0P,MAAA,uBAAAnnB,EAAAmc,GACA1E,QAAA8W,QAAAJ,IAGAhS,EAAAnc,OACAtE,IAAAyrB,OACA1P,QAAA0P,MAAA,WAAAhL,EAAAnc,KAAA4tB,GAGAnvB,KAAA4iB,MAAA9f,IAAA4a,EAAAnc,KAAA4tB,GAEAzR,EAAAyR,SACAlyB,IAAAyrB,OACA1P,QAAA0P,MAAA,aAAAhL,EAAAnc,KAAA4tB,GAEAnvB,KAAAmvB,OAAAzR,EAAAnc,MAAA4tB,GAEA,GAEA,CACA,MAAA,IAAAxW,MAAA,UAAApX,EAAA,kBAEA,CACA,EAEAqjB,MAAA,SAAA3iB,GACA,GAAA,MAAAA,EAAA,OAAAA,EAIA,GAAA,iBAFAA,EAAAA,EAAA2a,WAEA,CACA,IAAApF,EAAAvV,EAAAgC,MAAA,GAAA,CAAA,EAEA,IAAA,IAAA7B,KAAAH,EACAA,EAAAJ,eAAAO,KACAoV,EAAApV,GAAApC,KAAA4kB,MAAA3iB,EAAAG,GAAApC,KAAA4iB,QAIA,OAAApL,CACA,CAEA,MAAA,iBAAAvV,IAAA,GAAAA,EAAAiU,QAAA,MACAjZ,IAAA2nB,MAAA3iB,EAAAjC,KAAA4iB,OAGA3gB,CACA,IAGAhF,IAAAgyB,KAAAnR,IAAA,SAAAsR,EAAA9sB,GAEA,OADA,IAAArF,IAAAgyB,KAAA3sB,GACAwb,IAAAsR,EACA,ECtIAnyB,IAAAkL,UAAA,MAAA,CAEAI,YAAA,CACA6Y,MAAA,CAAA,GAGA1Y,OAAA,CACAb,MAAAiQ,MACAiY,KAAAjY,OAGAwP,OACAtnB,KAAAgwB,aAAAhwB,KAAAgY,cAAAyO,KAAAzmB,KAAA,QACAA,KAAAiwB,YAAAjwB,KAAAiwB,YAAAxJ,KAAAzmB,MAGAhD,OAAAgL,iBAAA,OAAAhI,KAAAgwB,aAAA,CAAA/nB,MAAA,IACAjL,OAAAgL,iBAAA,OAAAhI,KAAAiwB,aACAjzB,OAAAgL,iBAAA,WAAAhI,KAAAiwB,aACAjzB,OAAAgL,iBAAA,YAAAhI,KAAAiwB,aACAjzB,OAAAgL,iBAAA,eAAAhI,KAAAiwB,aAEAjwB,KAAAiwB,cAEAvvB,gBAAA,IAAAV,KAAAgY,cAAA,UACA,EAEA4P,UACA5qB,OAAAgY,oBAAA,OAAAhV,KAAAgwB,cACAhzB,OAAAgY,oBAAA,OAAAhV,KAAAiwB,aACAjzB,OAAAgY,oBAAA,WAAAhV,KAAAiwB,aACAjzB,OAAAgY,oBAAA,YAAAhV,KAAAiwB,aACAjzB,OAAAgY,oBAAA,eAAAhV,KAAAiwB,YACA,EAEAA,cACA,IAAAC,EAAA,GAEAlzB,OAAAsX,SAAAia,OACA2B,EAAAlzB,OAAAsX,SAAAia,OAAAtqB,MAAA,GACAjH,OAAAsX,SAAA5Q,KAAAwS,QAAA,OACAga,EAAAlzB,OAAAsX,SAAA5Q,KAAAO,MACAjH,OAAAsX,SAAA5Q,KAAAwS,QAAA,KAAA,GAEAga,EAAAha,QAAA,KAAA,IACAga,EAAAA,EAAAjsB,MAAA,EAAAisB,EAAAha,QAAA,QAIA,IAAAkL,EAAA8O,EAAAhZ,MAAA,KAAAK,QAAA,SAAA6J,EAAAY,GACA,IAAAmO,EAAAnO,EAAArN,QAAA,MAAA,KAAAuC,MAAA,KAIA,OAHAiZ,EAAA,KACA/O,EAAAgP,mBAAAD,EAAA,KAAAC,mBAAAD,EAAA,IAAA,KAEA/O,CACA,GAAA,CAAA,GAEAiP,EAAApwB,SAAA4Y,cAAA,wBACA2T,EAAAvsB,SAAA4Y,cAAA,yBACA,GAAA2T,GAAAA,EAAA8D,QAAA,CACA,IAAAvqB,EAAA,GACAolB,EAAAqB,EAAA8D,QAEAD,GAAAA,EAAAC,UACAnF,EAAAkF,EAAAC,QAAA3b,QAAA,MAAA,IAAAwW,GAGA,IACApU,EADA9Z,IAAA0tB,aAAAQ,EAAAplB,EAAA,CAAAmF,KAAA,IACA/F,KAAAorB,UAAAvzB,OAAAsX,SAAAkc,WAEAzZ,GACAhR,EAAAtF,SAAA,SAAA2B,EAAAO,GACAye,EAAAhf,EAAAb,MAAAwV,EAAApU,EAAA,EACA,GAEA,CAEA3C,KAAA8C,IAAA,QAAAse,EACA,IC9EAnkB,IAAAkL,UAAA,OAAA,CAEAK,WAAA,CACAioB,WAAA,CACAluB,KAAAunB,QACAD,SAAA,IAIAphB,QAAA,CACAioB,OAAAC,GACA3wB,KAAA4wB,QAAAD,EACA,EAEAE,QACA7wB,KAAA8wB,QACA,EAEAvV,WACAvb,KAAA+wB,WACA,GAGAroB,OAAA,CACAsoB,QAAAlZ,MACA4Y,OAAA5Y,OAGAwP,KAAA3e,GACA3I,KAAAixB,eAAAjxB,KAAAixB,eAAAxK,KAAAzmB,MACAA,KAAAkxB,cAAAlxB,KAAAkxB,cAAAzK,KAAAzmB,MAEA2I,EAAAwoB,YAAA,EACAxoB,EAAAX,iBAAA,SAAAhI,KAAAixB,gBACAtoB,EAAAX,iBAAA,QAAAhI,KAAAkxB,cACA,EAEAtJ,UACA5nB,KAAA0mB,MAAA1R,oBAAA,SAAAhV,KAAAixB,gBACAjxB,KAAA0mB,MAAA1R,oBAAA,QAAAhV,KAAAkxB,cACA,EAEAD,eAAAxgB,GACAA,EAAA4B,iBACArS,KAAA4wB,SACA,EAEAM,cAAAzgB,GAEAxT,IAAA2e,eAAA3e,IAAA2e,cAAA5b,KAAA0mB,OACA1pB,OAAAo0B,YAAApxB,KAAA0mB,MAAA7N,cAAA,iBACAuY,WAAAP,OAEA,EAEAD,QAAAD,GACA,GAAAA,EACA,OAAA3wB,KAAAqxB,cAGArxB,KAAA8F,MAAA2qB,YAAAzwB,KAAA+wB,YACA/wB,KAAAgY,cAAA,SAAA,CAAAsZ,YAAA,KACAtxB,KAAAqxB,eAGArxB,KAAAgY,cAAA,WACAhY,KAAAuxB,qBAEA,EAEAT,SACA9wB,KAAAwxB,YACA,EAEAT,YACA,OAAA9zB,IAAAse,SAAAte,IAAAse,SAAAvb,KAAA0mB,QACA1oB,MAAAC,KAAA+B,KAAA0mB,MAAAjL,UAAAhb,SAAAkI,GAAAA,EAAA+S,OAAA,IACA1b,KAAA0mB,MAAA/K,gBACA,EAEA0V,cACAI,gBAAA9xB,UAAA+wB,OAAA1sB,KAAAhE,KAAA0mB,MACA,EAEA8K,aACAC,gBAAA9xB,UAAAkxB,MAAA7sB,KAAAhE,KAAA0mB,MACA,EAEA6K,qBACA,MAAAG,EAAA1zB,MAAAC,KAAA+B,KAAA0mB,MAAAjL,UAAAqM,MAAA4J,IAAAA,EAAAC,SAAAC,QACAF,GAAAA,EAAAG,OACA,EAEAC,iBACA,MAAA5uB,EAAA,CAAA,EAEA,IAAA,MAAA6uB,KAAA/xB,KAAA0mB,MAAAjL,SACA,GAAAsW,EAAAxwB,OAAAwwB,EAAAlC,SAAA,CACA,MAAAL,EAAAwC,EAAAD,EAAAxwB,KAAAoT,QAAA,QAAA,KACA,IAAAoH,EAAA7Y,EAEA,IAAA,MAAAusB,KAAAD,EAAA,CACA,MAAAjtB,EAAAwvB,EAAAxvB,KAEA,UAAAA,EACAwvB,EAAA9vB,QACA8Z,EAAAkW,EACAlW,EACA0T,EACA1T,EAAA0T,EAAArtB,MACA2vB,EAAA9vB,QAGA,SAAAM,GAAA,YAAAA,EACAwvB,EAAA9R,aAAA,SACA8R,EAAAG,UACAnW,EAAAkW,EACAlW,EACA0T,EACA1T,EAAA0T,EAAArtB,KACA2vB,EAAA9vB,QAIA8Z,EAAAkW,EACAlW,EACA0T,EACA1T,EAAA0T,EAAArtB,KACA2vB,EAAAG,SAIAnW,EAAAkW,EACAlW,EACA0T,EACA1T,EAAA0T,EAAArtB,KAJA,mBAAAG,EAKAvE,MAAAC,KAAA8zB,EAAAI,iBAAA3vB,KAAA4vB,GAAAA,EAAAnwB,QAGA8vB,EAAA9vB,MAEA,CACA,CAGA,OAAAiB,EAEA,SAAA8uB,EAAAzwB,GACA,MAAAiuB,EAAA,GACA6C,EAAA9wB,EACA+wB,EAAA,gBACAC,EAAA,QAOA,KALAhxB,EAAAA,EAAAoT,QAAA,aAAA,CAAAqJ,EAAAwU,KACAhD,EAAAhsB,KAAA,CAAAjB,KAAA,SAAAH,IAAAowB,IACA,OAKA,OADAhD,EAAA,GAAAiD,MAAA,EACAjD,EAGA,KAAAjuB,GAAA,CACA,IAAA+wB,EAAA1sB,KAAArE,GAgBA,MAAA,CAAAgB,KAAA,SAAAH,IAAAiwB,EAAAI,MAAA,GAfAlxB,EAAAA,EAAAoT,QAAA2d,GAAA,CAAAtU,EAAAwU,KACAA,EAEAD,EAAA3sB,KAAA4sB,GACAhD,EAAAhsB,KAAA,CAAAjB,KAAA,QAAAH,KAAAowB,IAEAhD,EAAAhsB,KAAA,CAAAjB,KAAA,SAAAH,IAAAowB,IAJAhD,EAAAA,EAAAnvB,OAAA,GAAAmgB,QAAA,EAOA,KAOA,CAEA,IAAA,IAAA1gB,EAAA,EAAA2Z,EAAA+V,EAAAnvB,OAAAP,EAAA2Z,EAAA3Z,IAAA,CACA,MAAA2vB,EAAAD,EAAA1vB,GAEAA,EAAA,EAAA2Z,EAAAgW,EAAAiD,SAAAlD,EAAA1vB,EAAA,GAAAyC,KACAktB,EAAAgD,MAAA,CACA,CAEA,OAAAjD,CACA,CAEA,SAAAyC,EAAAlW,EAAA0T,EAAAkD,EAAA1wB,GACA,GAAAwtB,EAAAgD,KAAA,CACA,QAAA50B,IAAA80B,EACA5W,EAAA0T,EAAArtB,KAAAqtB,EAAAjP,OAAA,CAAAve,GAAAA,OACA,GAAAjE,MAAAkG,QAAAyuB,GACA5W,EAAA0T,EAAArtB,KAAAoB,KAAAvB,OACA,IAAA,iBAAA0wB,EACA,OAAAV,EACAU,EACA,CAAApwB,KAAA,SAAAH,IAAA,GAAAqwB,MAAA,GACAE,EAAA,IACA1wB,GAGA8Z,EAAA0T,EAAArtB,KAAA,CAAAuwB,EAAA1wB,EACA,CAEA,OAAA8Z,CACA,CAEA,QAAAle,IAAA80B,EACA,OAAA5W,EAAA0T,EAAArtB,KAAA,SAAAqtB,EAAAiD,SAAA,GAAA,CAAA,EACA,GAAA10B,MAAAkG,QAAAyuB,GAAA,CACA,GAAA,SAAAlD,EAAAiD,SAAA,OAAAC,EACA,MAAAnb,EAAA,CAAA,EACA,IAAA,IAAA1X,EAAA,EAAA2Z,EAAAkZ,EAAAtyB,OAAAP,EAAA2Z,EAAA3Z,SACAjC,IAAA80B,EAAA7yB,KAAA0X,EAAA1X,GAAA6yB,EAAA7yB,IAEA,OAAAic,EAAA0T,EAAArtB,KAAAoV,CACA,CAAA,MAAA,iBAAAmb,EACA5W,EAAA0T,EAAArtB,KAGA2Z,EAAA0T,EAAArtB,KAAA,CAAA,GAAAuwB,EACA,CACA,ICpOA11B,IAAAkL,UAAA,eAAA,CAEAI,YAAA,CACAsnB,UAAA,EACA+C,SAAA,EACA5B,SAAA,EACA6B,kBAAA,GACA5wB,MAAA,IAGAuG,WAAA,CACAvG,MAAA,CACAM,KAAAwE,OACA8iB,QAAA,GACA1C,cAAA,GAGA0I,SAAA,CACAttB,KAAAunB,QACAD,SAAA,IAIAphB,QAAA,CACAwpB,SAAAhwB,GACAjC,KAAA8yB,UAAA7wB,EACA,EAEA4vB,QACA7xB,KAAA+yB,QACA,EAEAC,QAAAA,GACAhzB,KAAAizB,SAAAD,EACA,EAEAzX,WACAvb,KAAA+wB,WACA,GAGAroB,OAAA,CACAwf,QAAApQ,MACAob,QAAApb,OAGAwP,KAAA3e,GACA3I,KAAAmzB,cAAAnzB,KAAAmzB,cAAA1M,KAAAzmB,MACAA,KAAAozB,eAAApzB,KAAAozB,eAAA3M,KAAAzmB,MACAA,KAAAqzB,gBAAArzB,KAAAqzB,gBAAA5M,KAAAzmB,MACAA,KAAAkxB,cAAAlxB,KAAAkxB,cAAAzK,KAAAzmB,MACAA,KAAAszB,cAAAtzB,KAAAszB,cAAA7M,KAAAzmB,MACAA,KAAAuzB,aAAAvzB,KAAAuzB,aAAA9M,KAAAzmB,MAEA2I,EAAA1G,MAAAjC,KAAA8F,MAAA7D,OAAA,GACA0G,EAAA6qB,aAAA7qB,EAAA1G,MAEA0G,EAAAX,iBAAA,QAAAhI,KAAAmzB,eACAxqB,EAAAX,iBAAA,SAAAhI,KAAAozB,gBACAzqB,EAAAX,iBAAA,UAAAhI,KAAAqzB,iBACA1qB,EAAAX,iBAAA,QAAAhI,KAAAszB,eACA3qB,EAAAX,iBAAA,OAAAhI,KAAAuzB,cAEA5qB,EAAArL,OACA0C,KAAAyzB,MAAA9qB,EAAArL,KACA0C,KAAAyzB,MAAAzrB,iBAAA,QAAAhI,KAAAkxB,gBAGAlxB,KAAA8F,MAAA+pB,UACA7vB,KAAAizB,SAAAjzB,KAAA8F,MAAA+pB,UAGA7vB,KAAA8C,IAAA,QAAA9C,KAAA8F,MAAA7D,OACAjC,KAAA0mB,QAAAzmB,SAAAyzB,eACA1zB,KAAA8C,IAAA,WAAA,EAEA,EAEA8kB,UACA5nB,KAAA0mB,MAAA1R,oBAAA,QAAAhV,KAAAmzB,eACAnzB,KAAA0mB,MAAA1R,oBAAA,SAAAhV,KAAAozB,gBACApzB,KAAA0mB,MAAA1R,oBAAA,UAAAhV,KAAAqzB,iBACArzB,KAAA0mB,MAAA1R,oBAAA,QAAAhV,KAAAszB,eACAtzB,KAAA0mB,MAAA1R,oBAAA,OAAAhV,KAAAuzB,cACAvzB,KAAAyzB,QACAzzB,KAAAyzB,MAAAze,oBAAA,QAAAhV,KAAAkxB,eACAlxB,KAAAyzB,MAAA,KAEA,EAEApJ,cAAAvD,GACAA,EAAA3jB,IAAA,UACAnD,KAAA8yB,UAAA9yB,KAAA8F,MAAA7D,OAAA,GAGA6kB,EAAA3jB,IAAA,aACAnD,KAAAizB,SAAAjzB,KAAA8F,MAAA+pB,SAEA,EAEAiD,UAAA7wB,EAAAuxB,GACAxzB,KAAA0mB,MAAAzkB,MAAAA,GAAA,GACAuxB,IAAAxzB,KAAA0mB,MAAA8M,aAAAvxB,GAAA,IACAjC,KAAA8C,IAAA,QAAAb,GACAhF,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,YACA,EAEA+a,SACA/yB,KAAA0mB,MAAAmL,OACA,EAEAoB,SAAAD,GACAhzB,KAAA0mB,MAAAmJ,SAAAmD,EACAhzB,KAAA8C,IAAA,WAAA9C,KAAA0mB,MAAAmJ,SACA,EAEAkB,YACA9zB,IAAAse,SAAAvb,KAAA0mB,OAEA1mB,KAAA0mB,MAAAhL,OACA1b,KAAA8C,IAAA,CACAkuB,SAAAhxB,KAAA0mB,MAAAiL,SAAAC,MACAiB,kBAAA7yB,KAAA0mB,MAAAmM,mBAGA,EAEAM,cAAA1iB,GACAzQ,KAAA0mB,MAAAhL,OAAA1b,KAAA+wB,YAEA9zB,IAAA+e,UAAA,KACAhc,KAAA0mB,OACA1mB,KAAAsC,KAAAL,QAAAjC,KAAA0mB,MAAAzkB,QACAjC,KAAA8C,IAAA,QAAA9C,KAAA0mB,MAAAzkB,OACAwO,GAAAzQ,KAAAgY,cAAA,WACA/a,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aACA,GAEA,EAEAob,eAAA3iB,GACAzQ,KAAA0mB,MAAAhL,OAAA1b,KAAA+wB,YAEA9zB,IAAA+e,UAAA,KACAhc,KAAA0mB,OACA1mB,KAAAsC,KAAAL,QAAAjC,KAAA0mB,MAAAzkB,QACAjC,KAAA8C,IAAA,QAAA9C,KAAA0mB,MAAAzkB,OACAwO,GAAAzQ,KAAAgY,cAAA,WACA/a,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aACA,GAEA,EAEAqb,gBAAA5iB,GACAzQ,KAAA8C,IAAA,CACAkuB,SAAAhxB,KAAA0mB,MAAAiL,SAAAC,MACAiB,kBAAA7yB,KAAA0mB,MAAAmM,mBAEA,EAEA3B,cAAAzgB,GACAzQ,KAAA0mB,QACA1mB,KAAA0mB,MAAAhL,OAAA,EACA1b,KAAA8C,IAAA,CACAkuB,SAAA,EACA6B,kBAAA,KAEA7yB,KAAAozB,eAAA3iB,GACA,EAEA6iB,cAAA7iB,GACAzQ,KAAA8C,IAAA,WAAA,EACA,EAEAywB,aAAA9iB,GACAzQ,KAAA8C,IAAA,WAAA,EACA,IChLA7F,IAAAkL,UAAA,WAAA,CAEAE,QAAA,eAEAif,KAAA3e,GACA,IAAA3I,KAAA8F,MAAA7D,MAAA,CACA,MAAAA,EAAAjC,KAAA0mB,MAAAzkB,MACAjC,KAAA8F,MAAA7D,MAAAA,EAAAqP,SAAA,MAAAtR,KAAA4kB,MAAA3iB,GAAAA,CACA,CAEAhF,IAAAkL,UAAA,gBAAAxI,UAAA2nB,KAAAtjB,KAAAhE,KAAA2I,EACA,ICXA1L,IAAAkL,UAAA,QAAA,CAAAE,QAAA,iBCAApL,IAAAkL,UAAA,aAAA,CAEAE,QAAA,eAEAG,WAAA,CACAmrB,cAAA,CACApxB,KAAAwnB,OACAF,QAAA,MAGA+J,eAAA,CACArxB,KAAAwnB,OACAF,QAAA,MAGAgK,UAAA,CACAtxB,KAAAwE,OACA8iB,QAAA,KACAI,KAAA,CAAA,MAAA,OAAA,SAGA6J,aAAA,CACAvxB,KAAAwnB,OACAF,QAAA,OAIAthB,YAAA,CACA4M,KAAA,MAGA4e,YAAA,CACAC,IAAA,YACAC,KAAA,aACAC,KAAA,aACA,YAAA,YACA,aAAA,aACA,aAAA,cAGAC,iBAAA,CACA,YAAA,MACA,aAAA,MACA,aAAA,QAGArB,UAAA7wB,GACA+W,QAAAmD,KAAA,qCACA,EAEAiX,eAAA3iB,GACAxT,IAAAkL,UAAA,gBAAAxI,UAAAyzB,eAAApvB,KAAAhE,KAAAyQ,GAEAzQ,KAAAo0B,cAEAp0B,KAAA0mB,MAAA2N,MAAAh0B,SAAAL,KAAA8F,MAAA6tB,eAAA3zB,KAAA8F,MAAA8tB,gBAAA5zB,KAAA8F,MAAA+tB,YACA7zB,KAAAs0B,cAEA,EAEAA,eACA,MAAAnf,EAAAnV,KAAA0mB,MAAA2N,MAAA,GAEA,GAAAlf,GAAAA,EAAA5S,KAAAuc,WAAA,UAAA,CACA,MAAAyV,EAAAC,IAAAC,gBAAAtf,GACAuf,EAAA,IAAAC,MACAD,EAAAE,IAAAL,EACAG,EAAAjf,QAAA,IAAA+e,IAAAK,gBAAAN,GACAG,EAAAlf,OAAA,KACAgf,IAAAK,gBAAAN,GAEA,MAAAZ,cAAAA,EAAAC,eAAAA,EAAAC,UAAAA,EAAAC,aAAAA,GAAA9zB,KAAA8F,MAEA,IAAAT,EAAAqvB,EAAArvB,MACAC,EAAAovB,EAAApvB,OACAwvB,EAAAzvB,EAAAC,EACAyvB,GAAA,EAEApB,GAAAtuB,EAAAsuB,IACAtuB,EAAAsuB,EACAruB,KAAAD,EAAAyvB,GACAC,GAAA,GAGAnB,GAAAtuB,EAAAsuB,IACAtuB,EAAAsuB,EACAvuB,KAAAC,EAAAwvB,GACAC,GAAA,GAGA,MAAAC,EAAAnB,EAAA7zB,KAAA+zB,YAAAF,GAAA1e,EAAA5S,KAEA,GAAAyyB,IAAA7f,EAAA5S,MAAAwyB,EAAA,CACA,MAAAE,EAAAh1B,SAAAqhB,cAAA,UACA4T,EAAAD,EAAAE,WAAA,MAEAF,EAAA5vB,MAAAA,EACA4vB,EAAA3vB,OAAAA,EAEA4vB,EAAAE,UAAAV,EAAA,EAAA,EAAArvB,EAAAC,GAEA2vB,EAAAI,QAAAzf,IACA,GAAA,MAAAA,EACA,OAAAoD,QAAAtD,MAAA,2BAEA,MAAA4f,EAAA,IAAAC,aACAC,EAAArgB,EAAA5T,KAAAoT,QAAA,SAAA,IAAA3U,KAAAm0B,iBAAAve,EAAArT,OACAkzB,EAAA,IAAAC,KAAA,CAAA9f,GAAA4f,EAAA,CAAAjzB,KAAAqT,EAAArT,OACA+yB,EAAAta,MAAArV,IAAA8vB,GACAz1B,KAAA0mB,MAAA2N,MAAAiB,EAAAjB,MACAr0B,KAAAo0B,aAAA,GACAY,EAAAlB,EAAAA,EAAA,SAAAj2B,EACA,EAEA,CACA,EAEAu2B,cACA,IAAA9xB,EAAA,KAEA,GAAAtC,KAAA0mB,MAAA2N,MAAAh0B,OAAA,CACA,MAAAqQ,EAAA1Q,KACAmV,EAAAnV,KAAA0mB,MAAA2N,MAAA,GAEA/xB,EAAA,CACAqzB,MAAAxgB,EAAAygB,aAAA,IAAAlc,KAAAvE,EAAAygB,cAAAzgB,EAAA0gB,kBAAAC,cACAv0B,KAAA4T,EAAA5T,KACAyB,KAAAmS,EAAAnS,KACAT,KAAA4S,EAAA5S,KACAwzB,cAUA,OATA5gB,EAAA6gB,UACA/4B,IAAAgY,UAAAa,cAAAX,GAAArU,MAAAi1B,IACA5gB,EAAA6gB,SAAAD,EACArlB,EAAA5N,IAAA,OAAApE,OAAAkJ,OAAA,CAAA,EAAAtF,EAAA,CAAAyzB,YAAA,IACAh1B,OAAA2U,IACAsD,QAAAtD,MAAAA,EAAA,IAIA,IACA,EAEA,CAEA1V,KAAA8C,IAAA,OAAAR,EACA,ICjJArF,IAAAkL,UAAA,sBAAA,CAEAE,QAAA,eAEAG,WAAA,CACAmrB,cAAA,CACApxB,KAAAwnB,OACAF,QAAA,MAGA+J,eAAA,CACArxB,KAAAwnB,OACAF,QAAA,MAGAgK,UAAA,CACAtxB,KAAAwE,OACA8iB,QAAA,KACAI,KAAA,CAAA,MAAA,OAAA,SAGA6J,aAAA,CACAvxB,KAAAwnB,OACAF,QAAA,OAIAthB,YAAA,CACA8rB,MAAA,IAGAN,YAAA,CACAC,IAAA,YACAC,KAAA,aACAC,KAAA,aACA,YAAA,YACA,aAAA,aACA,aAAA,cAGAC,iBAAA,CACA,YAAA,MACA,aAAA,MACA,aAAA,QAGArB,UAAA7wB,GACA+W,QAAAmD,KAAA,qCACA,EAEAiX,eAAA3iB,GACAxT,IAAAkL,UAAA,gBAAAxI,UAAAyzB,eAAApvB,KAAAhE,KAAAyQ,GAEAzQ,KAAAo0B,cAEAp0B,KAAA0mB,MAAA2N,MAAAh0B,SAAAL,KAAA8F,MAAA6tB,eAAA3zB,KAAA8F,MAAA8tB,gBAAA5zB,KAAA8F,MAAA+tB,YACA7zB,KAAAi2B,eAEA,EAEAA,gBACA,MAAA5B,EAAAr2B,MAAAC,KAAA+B,KAAA0mB,MAAA2N,OAEAzzB,QAAA6X,IAAA4b,EAAA7xB,KAAA2S,GACA,IAAAvU,SAAAC,IACA,IAAAsU,EAAA5S,KAAAuc,WAAA,UAEA,YADAje,EAAAsU,GAIA,MAAAof,EAAAC,IAAAC,gBAAAtf,GACAuf,EAAA,IAAAC,MACAD,EAAAE,IAAAL,EACAG,EAAAjf,QAAA,IAAA+e,IAAAK,gBAAAN,GACAG,EAAAlf,OAAA,KACAgf,IAAAK,gBAAAN,GAEA,MAAAZ,cAAAA,EAAAC,eAAAA,EAAAC,UAAAA,EAAAC,aAAAA,GAAA9zB,KAAA8F,MAEA,IAAAT,EAAAqvB,EAAArvB,MACAC,EAAAovB,EAAApvB,OACAwvB,EAAAzvB,EAAAC,EACAyvB,GAAA,EAEApB,GAAAtuB,EAAAsuB,IACAtuB,EAAAsuB,EACAruB,KAAAD,EAAAyvB,GACAC,GAAA,GAGAnB,GAAAtuB,EAAAsuB,IACAtuB,EAAAsuB,EACAvuB,KAAAC,EAAAwvB,GACAC,GAAA,GAGA,MAAAC,EAAAnB,EAAA7zB,KAAA+zB,YAAAF,GAAA1e,EAAA5S,KAEA,GAAAyyB,IAAA7f,EAAA5S,MAAAwyB,EAAA,CACA,MAAAE,EAAAh1B,SAAAqhB,cAAA,UACA4T,EAAAD,EAAAE,WAAA,MAEAF,EAAA5vB,MAAAA,EACA4vB,EAAA3vB,OAAAA,EAEA4vB,EAAAE,UAAAV,EAAA,EAAA,EAAArvB,EAAAC,GAEA2vB,EAAAI,QAAAzf,IACA,GAAA,MAAAA,EACA,OAAAoD,QAAAtD,MAAA,2BAEA,MAAA8f,EAAArgB,EAAA5T,KAAAoT,QAAA,SAAA,IAAA3U,KAAAm0B,iBAAAve,EAAArT,OACAkzB,EAAA,IAAAC,KAAA,CAAA9f,GAAA4f,EAAA,CAAAjzB,KAAAqT,EAAArT,OACA1B,EAAA40B,EAAA,GACAT,EAAAlB,EAAAA,EAAA,SAAAj2B,EACA,MACAgD,EAAAsU,EACA,CACA,OAEArU,MAAAuzB,IACA,MAAAiB,EAAA,IAAAC,aACA,IAAA,IAAApgB,KAAAkf,EACAiB,EAAAta,MAAArV,IAAAwP,GAEAnV,KAAA0mB,MAAA2N,MAAAiB,EAAAjB,MACAr0B,KAAAo0B,aAAA,GAEA,EAEAA,cACA,IAAAC,EAAA,GAEA,GAAAr0B,KAAA0mB,MAAA2N,MAAAh0B,OAAA,CACA,MAAAqQ,EAAA1Q,KAEAq0B,EAAAr2B,MAAAC,KAAA+B,KAAA0mB,MAAA2N,OAAA7xB,KAAA,CAAA2S,EAAAxS,KACA,CACAgzB,MAAAxgB,EAAAygB,aAAA,IAAAlc,KAAAvE,EAAAygB,cAAAzgB,EAAA0gB,kBAAAC,cACAv0B,KAAA4T,EAAA5T,KACAyB,KAAAmS,EAAAnS,KACAT,KAAA4S,EAAA5S,KACAwzB,cAaA,OAZA5gB,EAAA6gB,WACAE,SAAA,EACAj5B,IAAAgY,UAAAa,cAAAX,GAAArU,MAAAi1B,IACA5gB,EAAA6gB,SAAAD,EACA1B,EAAAp3B,IAAAsI,MAAA8uB,GACAA,EAAA1xB,GAAAozB,QAAAA,EACArlB,EAAA5N,IAAA,QAAAuxB,EAAA,IACAtzB,OAAA2U,IACAsD,QAAAtD,MAAAA,EAAA,KAIA,IACA,KAKA,CAEA1V,KAAA8C,IAAA,QAAAuxB,EACA,ICpKAp3B,IAAAkL,UAAA,SAAA,CAEAE,QAAA,eAEAG,WAAA,CACAjG,KAAA,CACAA,KAAAwE,OACA8iB,QAAA,SACAI,KAAA,CAAA,SAAA,QAAA,YAIA3C,KAAA3e,GACA1L,IAAAkL,UAAA,gBAAAxI,UAAA2nB,KAAAtjB,KAAAhE,KAAA2I,GAEAA,EAAApG,KAAAvC,KAAA8F,MAAAvD,IACA,IChBAtF,IAAAkL,UAAA,QAAA,CAEAE,QAAA,eAEAE,YAAA,CACA2pB,SAAA,GAGA1pB,WAAA,CACA0pB,QAAA,CACA3vB,KAAAunB,QACAD,SAAA,EACA1C,cAAA,IAIA1e,QAAA,CACAhL,OAAA04B,EAAAC,GACAp2B,KAAAq2B,QAAAF,GACAC,GACAn5B,IAAA+e,UAAA,KACAhc,KAAAgY,cAAA,WACAhY,KAAAgY,cAAAhY,KAAA0mB,MAAAwL,QAAA,UAAA,YAAA,GAGA,GAGAxpB,OAAA,CACAwpB,QAAApa,MACAwe,UAAAxe,OAGAwP,KAAA3e,GACA1L,IAAAkL,UAAA,gBAAAxI,UAAA2nB,KAAAtjB,KAAAhE,KAAA2I,GAEAA,EAAApG,KAAA,QACAoG,EAAAupB,QAAAlyB,KAAA8F,MAAAosB,QACAvpB,EAAA4tB,eAAAv2B,KAAA8F,MAAAosB,QAEAlyB,KAAA8F,MAAAosB,SACAlyB,KAAA8C,IAAA,WAAA,EAEA,EAEAunB,cAAAvD,GACA7pB,IAAAkL,UAAA,gBAAAxI,UAAA0qB,cAAArmB,KAAAhE,KAAA8mB,GAEAA,EAAA3jB,IAAA,YACAnD,KAAA0mB,MAAAwL,SAAAlyB,KAAA8F,MAAAosB,UACAlyB,KAAA0mB,MAAA6P,eAAAv2B,KAAA8F,MAAAosB,QACAlyB,KAAA0mB,MAAAwL,QAAAlyB,KAAA8F,MAAAosB,QACAlyB,KAAA8C,IAAA,UAAA9C,KAAA8F,MAAAosB,SACAlyB,KAAA0mB,MAAA1O,cAAA,IAAAF,MAAA,QAAA,CAAA0e,SAAA,KACAv5B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,cAIA8O,EAAA3jB,IAAA,WACAnD,KAAA0mB,MAAAzkB,MAAAjC,KAAA8F,MAAA7D,MACAjC,KAAA0mB,MAAA1O,cAAA,IAAAF,MAAA,SAAA,CAAA0e,SAAA,KAEA,EAEAH,QAAAF,GACAn2B,KAAA0mB,MAAAwL,SAAA,IAAAiE,EACAn2B,KAAA8C,IAAA,UAAA9C,KAAA0mB,MAAAwL,SACAj1B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,YACA,EAEAob,eAAA3iB,GACAzQ,KAAA0mB,MAAAhL,OAAA1b,KAAA+wB,YAGA9zB,IAAA+e,UAAA,KACA,GAAAhc,KAAA0mB,QACA1mB,KAAA8C,IAAA,UAAA9C,KAAA0mB,MAAAwL,SACAlyB,KAAAgY,cAAA,WACAhY,KAAAgY,cAAAhY,KAAA0mB,MAAAwL,QAAA,UAAA,aACAj1B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAGAhY,KAAA0mB,MAAAwL,SAAA,CACA,MAAAuE,EAAAx2B,SAAAE,iBAAA,2BAAAH,KAAA0mB,MAAAnlB,UACA,IAAA,MAAA8f,KAAAoV,EACApV,GAAArhB,KAAA0mB,OAAArF,EAAA/jB,MAAA0C,KAAA0mB,MAAAppB,MACA,SAAA+jB,EAAA9e,MAAA8e,EAAA9f,MAAAvB,KAAA0mB,MAAAnlB,MACA8f,EAAArJ,cAAA,IAAAF,MAAA,SAAA,CAAA0e,SAAA,IAGA,IAEA,IC5FAv5B,IAAAkL,UAAA,cAAA,CAEAI,YAAA,CACAtG,MAAA,MAGAuG,WAAA,CACAvG,MAAA,CACAM,KAAAwE,OACA8iB,QAAA,KACA1C,cAAA,IAIA1e,QAAA,CACAwpB,SAAAhwB,GACAjC,KAAA8yB,UAAA7wB,EACA,GAGAyG,OAAA,CACAwf,QAAApQ,OAGAwP,KAAA3e,GACA3I,KAAAozB,eAAApzB,KAAAozB,eAAA3M,KAAAzmB,MAEA2I,EAAAX,iBAAA,SAAAhI,KAAAozB,gBACAzqB,EAAAX,iBAAA,QAAAhI,KAAAozB,eACA,EAEA7L,OAAA5e,GACA3I,KAAA6nB,SAEA7nB,KAAA8yB,UAAA9yB,KAAA8F,MAAA7D,OAAA,GAEAjC,KAAA02B,kBAAA,IAAAC,kBAAAC,IACA,IAAA30B,EAAAjC,KAAA8F,MAAA7D,MACA,MAAAA,IAAAA,EAAA,IACAA,EAAAA,EAAAL,WAEA,IAAA,IAAAi1B,KAAAD,EAAA,CACA,cAAAC,EAAAt0B,MAAA,SAAAs0B,EAAAC,eACA,UAAAD,EAAA1mB,OAAAqL,SAAA,UAAAqb,EAAA1mB,OAAA5N,OACAs0B,EAAA1mB,OAAA+hB,QAAA2E,EAAA1mB,OAAAlO,OAAAA,EACA40B,EAAA1mB,OAAAomB,eAAAM,EAAA1mB,OAAA+hB,QACA2E,EAAA1mB,OAAA6H,cAAA,IAAAF,MAAA,SAAA,CAAA0e,SAAA,KACA1sB,uBAAA,KACA9J,KAAA+2B,cAAA,KAKA,IAAA,IAAApuB,KAAAkuB,EAAAG,WACAruB,EAAA+L,WAAAxT,KAAA+1B,cAEAntB,uBAAA,KACA,UAAAnB,EAAA6S,SAAA,UAAA7S,EAAApG,MACAoG,EAAAupB,QAAAvpB,EAAA1G,OAAAA,EACA0G,EAAA4tB,eAAA5tB,EAAAupB,SAEAvpB,EAAAxI,iBAAA,qBAAAM,SAAAy2B,IACAA,EAAAhF,QAAAvpB,EAAA1G,OAAAA,EACAi1B,EAAAX,eAAAW,EAAAhF,OAAA,IAIApoB,uBAAA,KACA9J,KAAA+2B,cAAA,GACA,GAGA,KAGA/2B,KAAA02B,kBAAAS,QAAAxuB,EAAA,CAAAyuB,SAAA,EAAAC,WAAA,EAAA7uB,YAAA,EAAA8uB,gBAAA,CAAA,UACA,EAEA1P,UACA5nB,KAAA02B,kBAAAa,aACAv3B,KAAA0mB,MAAA1R,oBAAA,SAAAhV,KAAAozB,gBACApzB,KAAA0mB,MAAA1R,oBAAA,QAAAhV,KAAAozB,eACA,EAEA/I,cAAAvD,GACAA,EAAA3jB,IAAA,UACAnD,KAAA8yB,UAAA9yB,KAAA8F,MAAA7D,OAAA,EAEA,EAEA6wB,UAAA7wB,EAAAuxB,GACA,MAAAvxB,IACAA,EAAAA,EAAAL,WAEA5B,KAAAw3B,UAAA/2B,SAAAg3B,IACAA,EAAAvF,QAAAuF,EAAAx1B,OAAAA,EACAuxB,IAAAiE,EAAAlB,eAAAkB,EAAAvF,SACAuF,EAAAzf,cAAA,IAAAF,MAAA,SAAA,CAAA0e,SAAA,IAAA,IAGAx2B,KAAA+2B,eAEA,EAEAA,eACA,MAAA90B,EAAAjC,KAAAw3B,UAAAE,QAAAD,IAAAA,EAAA5H,UAAA4H,EAAAvF,UAAA1vB,KAAAi1B,GAAAA,EAAAx1B,QAEAhF,IAAAuJ,MAAAxG,KAAAsC,KAAAL,MAAAA,EAAA,MACAjC,KAAA8C,IAAA,QAAAb,EAAA,IAAA,MACAhF,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAEA,EAEAwf,UACA,OAAAx5B,MAAAC,KAAA+B,KAAA0mB,MAAAvmB,iBAAA,qBACA,EAEAizB,eAAA3iB,GACAzQ,KAAA+2B,cACA,ICvHA95B,IAAAkL,UAAA,WAAA,CAEAE,QAAA,eAEAE,YAAA,CACA2pB,SAAA,GAGA1pB,WAAA,CACA0pB,QAAA,CACA3vB,KAAAunB,QACAD,SAAA,EACA1C,cAAA,IAIA1e,QAAA,CACAhL,OAAA04B,EAAAC,GACAp2B,KAAAq2B,QAAAF,GACAC,GACAn5B,IAAA+e,UAAA,KACAhc,KAAAgY,cAAA,WACAhY,KAAAgY,cAAAhY,KAAA0mB,MAAAwL,QAAA,UAAA,YAAA,GAGA,GAGAxpB,OAAA,CACAwpB,QAAApa,MACAwe,UAAAxe,OAGAwP,KAAA3e,GACA1L,IAAAkL,UAAA,gBAAAxI,UAAA2nB,KAAAtjB,KAAAhE,KAAA2I,GAEAA,EAAApG,KAAA,WACAoG,EAAAupB,QAAAlyB,KAAA8F,MAAAosB,QACAvpB,EAAA4tB,eAAAv2B,KAAA8F,MAAAosB,QAEAlyB,KAAA8F,MAAAosB,SACAlyB,KAAA8C,IAAA,WAAA,EAEA,EAEAunB,cAAAvD,GACA7pB,IAAAkL,UAAA,gBAAAxI,UAAA0qB,cAAArmB,KAAAhE,KAAA8mB,GAEAA,EAAA3jB,IAAA,YACAnD,KAAA0mB,MAAAwL,SAAAlyB,KAAA8F,MAAAosB,UACAlyB,KAAA0mB,MAAA6P,eAAAv2B,KAAA8F,MAAAosB,QACAlyB,KAAA0mB,MAAAwL,QAAAlyB,KAAA8F,MAAAosB,QACAlyB,KAAA8C,IAAA,UAAA9C,KAAA8F,MAAAosB,SACAlyB,KAAA0mB,MAAA1O,cAAA,IAAAF,MAAA,WAAA,CAAA0e,SAAA,KACAv5B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAGA,EAEAqe,QAAAF,GACAn2B,KAAA0mB,MAAAwL,SAAA,IAAAiE,EACAn2B,KAAA8C,IAAA,UAAA9C,KAAA0mB,MAAAwL,SACAj1B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,YACA,EAEAob,eAAA3iB,GACAzQ,KAAA0mB,MAAAhL,OAAA1b,KAAA+wB,YAEA9zB,IAAA+e,UAAA,KACAhc,KAAA0mB,QACA1mB,KAAA8C,IAAA,UAAA9C,KAAA0mB,MAAAwL,SACAlyB,KAAAgY,cAAA,WACA,SAAAvH,EAAAlO,MACAvC,KAAAgY,cAAAhY,KAAA0mB,MAAAwL,QAAA,UAAA,aAEAj1B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAAA,GAEA,IC7EA/a,IAAAkL,UAAA,iBAAA,CAEAI,YAAA,CACAtG,MAAA,IAGAuG,WAAA,CACAvG,MAAA,CACAM,KAAAvE,MACA6rB,QAAA,GACA1C,cAAA,IAIA1e,QAAA,CACAwpB,SAAAhwB,GACAjC,KAAA8yB,UAAA7wB,EACA,GAGAyG,OAAA,CACAwf,QAAApQ,OAGAwP,KAAA3e,GACA3I,KAAAozB,eAAApzB,KAAAozB,eAAA3M,KAAAzmB,MAEA2I,EAAAX,iBAAA,SAAAhI,KAAAozB,gBACAzqB,EAAAX,iBAAA,WAAAhI,KAAAozB,eACA,EAEA7L,OAAA5e,GACA3I,KAAA6nB,SAEA7nB,KAAA8yB,UAAA9yB,KAAA8F,MAAA7D,OAAA,GAEAjC,KAAA02B,kBAAA,IAAAC,kBAAAC,IACA,IAAA30B,EAAAjC,KAAA8F,MAAA7D,MACA,MAAAA,IAAAA,EAAA,IACAjE,MAAAkG,QAAAjC,KAAAA,EAAA,CAAAA,IACAA,EAAAA,EAAAO,KAAA5E,GAAAA,EAAAgE,aAEA,IAAA,IAAAi1B,KAAAD,EACA,IAAA,IAAAjuB,KAAAkuB,EAAAG,WACAruB,EAAA+L,WAAAxT,KAAA+1B,cAEAntB,uBAAA,KACA,UAAAnB,EAAA6S,SAAA,aAAA7S,EAAApG,MACAoG,EAAAupB,QAAAjwB,EAAAqP,SAAA3I,EAAA1G,OACA0G,EAAA4tB,eAAA5tB,EAAAupB,SAEAvpB,EAAAxI,iBAAA,wBAAAM,SAAAy2B,IACAA,EAAAhF,QAAAjwB,EAAAqP,SAAA4lB,EAAAj1B,OACAi1B,EAAAX,eAAAW,EAAAhF,OAAA,IAIApoB,uBAAA,KACA9J,KAAA+2B,cAAA,GACA,GAGA,IAGA/2B,KAAA02B,kBAAAS,QAAAxuB,EAAA,CAAAyuB,SAAA,EAAAC,WAAA,GACA,EAEAzP,UACA5nB,KAAA02B,kBAAAa,aACAv3B,KAAA0mB,MAAA1R,oBAAA,SAAAhV,KAAAozB,gBACApzB,KAAA0mB,MAAA1R,oBAAA,WAAAhV,KAAAozB,eACA,EAEA/I,cAAAvD,GACAA,EAAA3jB,IAAA,UACAnD,KAAA8yB,UAAA9yB,KAAA8F,MAAA7D,OAAA,EAEA,EAEA6wB,UAAA7wB,EAAAuxB,GACA,MAAAvxB,IAAAA,EAAA,IACAjE,MAAAkG,QAAAjC,KAAAA,EAAA,CAAAA,IACAA,EAAAA,EAAAO,KAAA5E,GAAAA,EAAAgE,aAEA5B,KAAA23B,cAAAl3B,SAAAy2B,IACAA,EAAAhF,QAAAjwB,EAAAqP,SAAA4lB,EAAAj1B,OACAuxB,IAAA0D,EAAAX,eAAAW,EAAAhF,QAAA,IAGAlyB,KAAA+2B,cACA,EAEAA,eACA,MAAA90B,EAAAjC,KAAA23B,cAAAD,QAAAR,IAAAA,EAAArH,UAAAqH,EAAAhF,UAAA1vB,KAAA00B,GAAAA,EAAAj1B,QAEAhF,IAAAuJ,MAAAxG,KAAAsC,KAAAL,MAAAA,KACAjC,KAAA8C,IAAA,QAAAb,GACAhF,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAEA,EAEA2f,cACA,OAAA35B,MAAAC,KAAA+B,KAAA0mB,MAAAvmB,iBAAA,wBACA,EAEAizB,eAAA3iB,GACAzQ,KAAA+2B,cACA,IC5GA95B,IAAAkL,UAAA,SAAA,CAEAE,QAAA,eAEAE,YAAA,CACAqvB,eAAA,EACAC,cAAA,GACAC,aAAA,IAGAtvB,WAAA,CACAkV,QAAA,CACAnb,KAAA,CAAAvE,MAAAU,OAAAqrB,QACAF,QAAA,MAGAkO,WAAA,CACAx1B,KAAAwE,OACA8iB,QAAA,UAGAmO,YAAA,CACAz1B,KAAAwE,OACA8iB,QAAA,WAIAphB,QAAA,CACAwvB,iBAAAt1B,GACA3C,KAAA0mB,MAAAkR,cAAAj1B,EACA3C,KAAA+2B,cACA,GAGAzP,KAAA3e,GACA3I,KAAAk4B,SAAA,GAEAl4B,KAAA8F,MAAA7D,QACAjC,KAAA8F,MAAA7D,MAAAjC,KAAA0mB,MAAAzkB,MACAjC,KAAA+2B,gBAGA/2B,KAAA02B,kBAAA,IAAAC,kBAAA54B,IACAiC,KAAAm4B,kBACAn4B,KAAA+2B,cACA,IAEA/2B,KAAA02B,kBAAAS,QAAAn3B,KAAA0mB,MAAA,CAAA0Q,SAAA,EAAAC,WAAA,IAEAp6B,IAAAkL,UAAA,gBAAAxI,UAAA2nB,KAAAtjB,KAAAhE,KAAA2I,EACA,EAEA4e,OAAA5e,GACA3I,KAAA6nB,SACA7nB,KAAAo4B,iBACA,IAAAn2B,EAAAjC,KAAA8F,MAAA7D,MACA,MAAAA,IAAAA,EAAA,IACAjE,MAAAC,KAAA+B,KAAA0mB,MAAAhJ,SAAAjd,SAAA43B,IACAA,EAAA/2B,gBAAA,WAAA+2B,EAAAp2B,OAAAA,GACAo2B,EAAAC,SAAAD,EAAAp2B,OAAAA,EACAo2B,EAAAE,gBAAAF,EAAAC,QAAA,IAEAt4B,KAAA+2B,cACA,EAEAnP,UACA5nB,KAAA02B,kBAAAa,aACAt6B,IAAAkL,UAAA,gBAAAxI,UAAAioB,QAAA5jB,KAAAhE,KACA,EAEAqqB,cAAAvD,GACA7pB,IAAAkL,UAAA,gBAAAxI,UAAA0qB,cAAArmB,KAAAhE,KAAA8mB,IAEAA,EAAA3jB,IAAA,YAAA2jB,EAAA3jB,IAAA,eAAA2jB,EAAA3jB,IAAA,iBACAnD,KAAAo4B,gBAEA,EAEAtF,UAAA7wB,EAAAuxB,GAKA,GAJA,MAAAvxB,IAAAA,EAAA,IACAA,EAAAA,EAAAL,WAGA4xB,EACAx1B,MAAAC,KAAA+B,KAAA0mB,MAAAhJ,SAAAjd,SAAA43B,IACAA,EAAA/2B,gBAAA,WAAA+2B,EAAAp2B,OAAAA,GACAo2B,EAAAE,gBAAAF,EAAAC,QAAA,QAEA,CACA,MAAAV,EAAA55B,MAAAC,KAAA+B,KAAA0mB,MAAAhJ,SAAA4L,WAAA+O,GAAAA,EAAAp2B,OAAAA,IACAjC,KAAA0mB,MAAAkR,cAAAA,CACA,CAEA53B,KAAA+2B,eACA95B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,YACA,EAEA+e,eACA,MAAAa,EAAA53B,KAAA0mB,MAAAkR,cACAU,EAAAt4B,KAAA0mB,MAAAhJ,QAAAka,IAAA,CAAA31B,MAAA,GAAA+qB,KAAA,IAEAhtB,KAAA8C,IAAA,CACA80B,cAAAA,EACAC,cAAAS,EAAAr2B,MACA61B,aAAAQ,EAAAtL,KACA/qB,MAAAq2B,EAAAr2B,OAEA,EAEAm2B,iBACAp4B,KAAAk4B,SAAAz3B,SAAA43B,GAAAA,EAAA1Y,WACA3f,KAAAk4B,SAAA,GAEAl4B,KAAA8F,MAAA4X,UACA1d,KAAAm4B,kBAAA,EACAl7B,IAAA8d,YAAA/a,KAAA8F,MAAA4X,SAAAjd,SAAA43B,IACA,MAAA1vB,EAAA1I,SAAAqhB,cAAA,UACA3Y,EAAA1G,MAAAhF,IAAA2nB,MAAA5kB,KAAA8F,MAAAkyB,YAAA/6B,IAAAmiB,UAAAiZ,EAAAr4B,OACA2I,EAAA6vB,YAAAv7B,IAAA2nB,MAAA5kB,KAAA8F,MAAAiyB,WAAA96B,IAAAmiB,UAAAiZ,EAAAr4B,OACA2I,EAAA1G,OAAAjC,KAAA8F,MAAA7D,QAAA0G,EAAA2vB,UAAA,GACA3vB,EAAA4vB,gBAAA5vB,EAAA2vB,SACAt4B,KAAA0mB,MAAAlG,OAAA7X,GACA3I,KAAAk4B,SAAA10B,KAAAmF,EAAA,IAEA3I,KAAAm4B,kBAAA,GAGAn4B,KAAA+2B,cACA,EAEA5D,cAAA1iB,GAEA,EAEA2iB,eAAA3iB,GACAzQ,KAAA0mB,MAAAhL,OACA1b,KAAA+wB,YAGA9zB,IAAA+e,UAAA,KACAhc,KAAAsC,KAAAs1B,gBAAA53B,KAAA0mB,MAAAkR,gBACA53B,KAAA+2B,eACA/2B,KAAAgY,cAAA,WACA/a,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aACA,GAEA,IClJA/a,IAAAkL,UAAA,kBAAA,CAEAE,QAAA,SAEAE,YAAA,CACAtG,MAAA,IAGAuG,WAAA,CACAvG,MAAA,CACAM,KAAAvE,MACA6rB,QAAA,KACA1C,cAAA,IAIAkD,cAAAvD,GACA7pB,IAAAkL,UAAA,UAAAxI,UAAA0qB,cAAArmB,KAAAhE,KAAA8mB,GAEAA,EAAA3jB,IAAA,UACAnD,KAAA8yB,UAAA9yB,KAAA8F,MAAA7D,OAAA,EAEA,EAEA6wB,UAAA7wB,EAAAuxB,GACA,MAAAvxB,IAAAA,EAAA,IACAjE,MAAAkG,QAAAjC,KAAAA,EAAA,CAAAA,IACAA,EAAAA,EAAAO,KAAA5E,GAAAA,EAAAgE,aAEA5D,MAAAC,KAAA+B,KAAA0mB,MAAAhJ,SAAAjd,SAAA43B,IACA,MAAAC,EAAAr2B,EAAAqP,SAAA+mB,EAAAp2B,OACAuxB,GACA6E,EAAA/2B,gBAAA,WAAAg3B,GACAD,EAAAE,gBAAAF,EAAAC,UAEAD,EAAAC,SAAAA,CACA,IAGAt4B,KAAA+2B,eACA95B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,YACA,EAEAygB,YACA,OAAAz6B,MAAAC,KAAA+B,KAAA0mB,MAAAyL,iBAAA3vB,KAAA61B,GAAAA,EAAAp2B,OACA,EAEA80B,eACA,MAAA90B,EAAAjC,KAAAy4B,YAEAx7B,IAAAsf,OAAA,KACAtf,IAAAkL,UAAA,UAAAxI,UAAAo3B,aAAA/yB,KAAAhE,MACAA,KAAA8C,IAAA,QAAAb,EAAA,GAEA,EAEAmxB,eAAA3iB,GACAzQ,KAAA0mB,MAAAhL,OAAA1b,KAAA+wB,YAEA9zB,IAAA+e,UAAA,KACAhc,KAAAsC,KAAAs1B,gBAAA53B,KAAA0mB,MAAAkR,eAAA36B,IAAAuJ,MAAAxG,KAAAsC,KAAAL,MAAAjC,KAAAy4B,eACAz4B,KAAA+2B,eACA/2B,KAAAgY,cAAA,WACA/a,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aACA,GAEA,IClEA/a,IAAAkL,UAAA,QAAA,CAEAI,YAAA,CACAtG,MAAA,MAGAuG,WAAA,CACAvG,MAAA,CACA4nB,QAAA,OAIAphB,QAAA,CACAwpB,SAAAhwB,GACAjC,KAAAsC,KAAAL,QAAAA,IACAjC,KAAA8C,IAAA,QAAAb,GACAhF,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAEA,GAGAtP,OAAA,CACAwf,QAAApQ,OAGAyP,QAAA,EAEAD,KAAA3e,GACA3I,KAAA8C,IAAA,QAAA9C,KAAA8F,MAAA7D,MACA,EAEAooB,cAAAvD,GACAA,EAAA3jB,IAAA,WACAnD,KAAA8C,IAAA,QAAA9C,KAAA8F,MAAA7D,OACAhF,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAEA,ICpCA/a,IAAAkL,UAAA,SAAA,CAEAI,YAAA,CACAyS,MAAA,IAGAxS,WAAA,CACA+L,OAAA,CACAhS,KAAA,CAAAvE,MAAAU,OAAAqrB,QACAF,QAAA,MAGAznB,IAAA,CACAG,KAAAwE,OACA8iB,QAAA,IAGA6O,SAAA,CACAn2B,KAAAunB,QACAD,SAAA,IAIAnhB,OAAA,CACAuf,OAAAnQ,MACAoQ,QAAApQ,OAGAyP,QAAA,EAEAD,KAAA3e,GAIA,IAHA3I,KAAA24B,UAAA,GACA34B,KAAA44B,UAAA,IAAAj1B,IACA3D,KAAA64B,UAAA54B,SAAAipB,yBACAlpB,KAAA0mB,MAAAlF,iBACAxhB,KAAA64B,UAAAlY,YAAA3gB,KAAA0mB,MAAAoS,YAEA94B,KAAA8F,MAAAyO,QACAvU,KAAAqqB,cAAA,IAAA1mB,IAAA,CAAA,CAAA,cAAA9F,KAEA,EAEAwsB,cAAAvD,GAEA,GADAA,EAAA3jB,IAAA,SAAAnD,KAAA+4B,WAAA,GACAjS,EAAA3jB,IAAA,UAAA,CAEAnD,KAAAgY,cAAA,WAEAhY,KAAA8F,MAAA4yB,UAAA14B,KAAA+4B,aACA/4B,KAAA+4B,WAAA,EACA/4B,KAAAg5B,UAGA,IAAAC,EAAAh8B,IAAAkL,UAAA,eACAoM,EAAAtX,IAAAsI,MAAAvF,KAAA8F,MAAAyO,QACAyG,EAAA/d,IAAA8d,YAAAxG,GAEA,GAAAyG,EAAA3a,QACA,IACAL,KAAA8F,MAAA4yB,UACA14B,KAAA8F,MAAA1D,KACA4Y,EAAA,GAAAnZ,eAAA7B,KAAA8F,MAAA1D,MACApC,KAAA24B,UAAAt4B,OACA,CAEA,IAOAqgB,EAAAwY,EAPA92B,EAAApC,KAAA8F,MAAA1D,IACArE,EAAAiC,KAAA24B,UACAja,EAAA1e,KAAAm5B,OAAAne,GACAoe,EAAA,EACAC,EAAA,EACAC,EAAAv7B,EAAAsC,OAAA,EACAk5B,EAAA7a,EAAAre,OAAA,EAGAm5B,EAAA,OAAA,CAEA,KAAAz7B,EAAAq7B,GAAAh3B,KAAAsc,EAAA2a,GAAAj3B,IAIA,GAHApC,KAAA44B,UAAAx3B,IAAAsd,EAAA2a,GAAAj3B,IAAAU,IAAA4b,EAAA2a,IAEAA,MADAD,EAEAE,GAAAD,EAAAE,EACA,MAAAC,EAKA,KAAAz7B,EAAAu7B,GAAAl3B,KAAAsc,EAAA6a,GAAAn3B,IAIA,GAHApC,KAAA44B,UAAAx3B,IAAAsd,EAAA6a,GAAAn3B,IAAAU,IAAA4b,EAAA6a,IAEAA,IACAH,IAFAE,GAEAD,EAAAE,EACA,MAAAC,EAKA,GAAAz7B,EAAAu7B,GAAAl3B,KAAAsc,EAAA2a,GAAAj3B,GAAA,CAYA,GAAArE,EAAAq7B,GAAAh3B,KAAAsc,EAAA6a,GAAAn3B,GAYA,MANA,GALA82B,EAAAK,EAAA,EACAv5B,KAAA44B,UAAAx3B,IAAAsd,EAAA6a,GAAAn3B,IAAAU,IAAA4b,EAAA6a,IACAv5B,KAAAy5B,WAAA/a,EAAA6a,GAAAn3B,GAAAsc,EAAAwa,IAAAxa,EAAAwa,GAAA92B,IAEAm3B,MADAH,EAEAE,GAAAD,EAAAE,EACA,KAVA,MAJA,GAJAv5B,KAAA44B,UAAAx3B,IAAAsd,EAAA2a,GAAAj3B,IAAAU,IAAA4b,EAAA2a,IACAr5B,KAAAy5B,WAAA/a,EAAA2a,GAAAj3B,GAAArE,EAAAq7B,GAAAh3B,IAEAi3B,IACAD,IAFAE,GAEAD,EAAAE,EACA,KAmBA,CAEA,GAAAH,EAAAE,EAGA,IADAJ,EAAAK,EAAA,EACAF,GAAAE,GACAv5B,KAAA05B,aAAAhb,EAAA2a,KAAA3a,EAAAwa,IAAAxa,EAAAwa,GAAA92B,SAEA,GAAAi3B,EAAAE,EAEA,KAAAH,GAAAE,GACAt5B,KAAA25B,aAAA57B,EAAAq7B,KAAAh3B,QAEA,CACA,IAAAw3B,EAAAN,EAAAF,EAAA,EACAS,EAAAN,EAAAF,EAAA,EACAS,EAAA/7B,EACAg8B,EAAA,IAAA/7B,MAAA67B,GAAAG,MAAA,GAEAC,GAAA,EACAhY,EAAA,EACAiY,EAAA,EAEA,GAAAL,GAAA,GAAAD,EAAAC,GAAA,IACA,IAAA/5B,EAAAs5B,EAAAt5B,GAAAw5B,EAAAx5B,IACA,GAAAo6B,EAAAL,EACA,IAAAnZ,EAAA2Y,EAAA3Y,GAAA6Y,EAAA7Y,IACA,GAAA3iB,EAAA+B,GAAAsC,KAAAsc,EAAAgC,GAAAte,GAAA,CACA23B,EAAArZ,EAAA2Y,GAAAv5B,EAEAmiB,EAAAvB,EACAuZ,GAAA,EAEAhY,EAAAvB,EAGA1gB,KAAA44B,UAAAx3B,IAAAsd,EAAAgC,GAAAte,IAAAU,IAAA4b,EAAAgC,IAEAwZ,IACAJ,EAAAh6B,GAAA,KACA,KACA,MAIA,CACA,IAAAq6B,EAAA,CAAA,EAEA,IAAAr6B,EAAAu5B,EAAAv5B,GAAAy5B,EAAAz5B,IACAq6B,EAAAzb,EAAA5e,GAAAsC,IAAAtC,EAGA,IAAAA,EAAAs5B,EAAAt5B,GAAAw5B,EAAAx5B,IACAo6B,EAAAL,QAGAh8B,KAFA6iB,EAAAyZ,EAAAp8B,EAAA+B,GAAAsC,OAGA23B,EAAArZ,EAAA2Y,GAAAv5B,EAEAmiB,EAAAvB,EACAuZ,GAAA,EAEAhY,EAAAvB,EAGA1gB,KAAA44B,UAAAx3B,IAAAsd,EAAAgC,GAAAte,IAAAU,IAAA4b,EAAAgC,IAEAwZ,IACAJ,EAAAh6B,GAAA,KAIA,CAEA,GAAA85B,IAAA77B,EAAAsC,QAAA,IAAA65B,EAEA,IADAl6B,KAAAg5B,SACAK,EAAAQ,GACA75B,KAAA05B,aAAAhb,EAAA2a,KAAA,UAEA,CAEA,IADAv5B,EAAA85B,EAAAM,EACAp6B,EAAA,GACA,OAAAg6B,EAAAV,KACAp5B,KAAA25B,aAAA57B,EAAAq7B,GAAAh3B,IACAtC,KAEAs5B,IAGA,GAAAa,EAAA,CACA,IAAAG,EAAAp6B,KAAAq6B,KAAAN,GAEA,IADArZ,EAAA0Z,EAAA/5B,OAAA,EACAP,EAAA+5B,EAAA,EAAA/5B,GAAA,EAAAA,KACA,IAAAi6B,EAAAj6B,IAEAo5B,GADAjX,EAAAniB,EAAAu5B,GACA,EACAr5B,KAAA05B,aAAAhb,EAAAuD,GAAAvD,EAAAwa,IAAAxa,EAAAwa,GAAA92B,KAEAse,EAAA,GAAA5gB,IAAAs6B,EAAA1Z,IAEAwY,GADAjX,EAAAniB,EAAAu5B,GACA,EACAr5B,KAAAy5B,WAAA/a,EAAAuD,GAAA7f,GAAAsc,EAAAwa,IAAAxa,EAAAwa,GAAA92B,KAEAse,GAIA,MAAA,GAAAwZ,IAAAL,EACA,IAAA/5B,EAAA+5B,EAAA,EAAA/5B,GAAA,EAAAA,KACA,IAAAi6B,EAAAj6B,KAEAo5B,GADAjX,EAAAniB,EAAAu5B,GACA,EACAr5B,KAAA05B,aAAAhb,EAAAuD,GAAAvD,EAAAwa,IAAAxa,EAAAwa,GAAA92B,IAIA,CACA,CACA,MAqBA,GApBApC,KAAAygB,SAAApgB,OAAA2a,EAAA3a,QAEAL,KAAAygB,SAAAld,OAAAyX,EAAA3a,QAAAI,SAAAghB,IACAA,EAAA+I,UAAA,IAIAxqB,KAAAygB,SAAApgB,QAEAL,KAAAygB,SAAAhgB,SAAA,CAAAghB,EAAA3hB,KACA,IAAA,MAAAsC,KAAAqf,EAAAnf,KAEA0Y,EAAAlb,GAAAsC,WACAqf,EAAAnf,KAAAF,GAGAqf,EAAA3e,IAAAkY,EAAAlb,GAAA,IAIAkb,EAAA3a,OAAAL,KAAAygB,SAAApgB,OAAA,CAEA,MAAA4oB,EAAAhpB,SAAAipB,yBACAoR,EAAA,IAAA76B,IAEA,IAAA,IAAAK,EAAAE,KAAAygB,SAAApgB,OAAAP,EAAAkb,EAAA3a,OAAAP,IAAA,CACA,IAAA2hB,EAAA,IAAAwX,EACAj5B,KAAA64B,UAAA0B,WAAA,GACAv6B,KACAgb,EAAAlb,IAEA2hB,EAAA+Y,OAAA/5B,SAAAkI,IACAsgB,EAAAtI,YAAAhY,GAGA2xB,EAAA30B,IAAA8b,EAAA,IAEAzhB,KAAAygB,SAAAjd,KAAAie,EACA,CAEAzhB,KAAA0mB,MAAA/F,YAAAsI,GAEA,IAAA,MAAAxH,KAAA6Y,EACA7Y,EAAA+Y,OAAA/5B,SAAAkI,IACA8Y,EAAAoG,OAAAlf,EAAA,GAGA,OAGA3I,KAAAg5B,SAGA,GAAAh5B,KAAA8F,MAAA1D,IAAA,CACApC,KAAA24B,UAAA34B,KAAAm5B,OAAAne,GACA,IAAA,IAAAyG,KAAAzhB,KAAAygB,SACAzgB,KAAA44B,UAAA91B,IAAA2e,EAAAnf,KAAAtC,KAAA8F,MAAA1D,KAAAqf,EAEA,CAGAzhB,KAAA8C,IACA,QACA9C,KAAAygB,SAAAje,KAAAif,GAAAA,EAAAnf,QAGArF,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,YAtQA,CAuQA,EAEAqiB,KAAAt8B,GACA,IAGA08B,EAAA78B,EAHAuyB,EAAApyB,EAAAkG,MAAA,GACAf,EAAA,GACAA,EAAAM,KAAA,GAGA,IAAA,IAAA1D,EAAA,EAAA46B,EAAA38B,EAAAsC,OAAAP,EAAA46B,EAAA56B,IACA,IAAA,IAAA/B,EAAA+B,GAAA,CAIA,IAAA4gB,EAAAxd,EAAAA,EAAA7C,OAAA,GACA,GAAAtC,EAAA2iB,GAAA3iB,EAAA+B,GACAqwB,EAAArwB,GAAA4gB,EACAxd,EAAAM,KAAA1D,OAFA,CASA,IAHA26B,EAAA,EACA78B,EAAAsF,EAAA7C,OAAA,EAEAo6B,EAAA78B,GAAA,CACA,IAAA4Y,GAAAikB,EAAA78B,GAAA,EAAA,EACAG,EAAAmF,EAAAsT,IAAAzY,EAAA+B,GACA26B,EAAAjkB,EAAA,EAEA5Y,EAAA4Y,CAEA,CAEAzY,EAAA+B,GAAA/B,EAAAmF,EAAAu3B,MACAA,EAAA,IACAtK,EAAArwB,GAAAoD,EAAAu3B,EAAA,IAEAv3B,EAAAu3B,GAAA36B,EAlBA,CAPA,CAgCA,IAFAlC,EAAAsF,GADAu3B,EAAAv3B,EAAA7C,QACA,GAEAo6B,KAAA,GACAv3B,EAAAu3B,GAAA78B,EACAA,EAAAuyB,EAAAvyB,GAGA,OAAAsF,CACA,EAEA81B,SACAh5B,KAAA24B,UAAA,GACA34B,KAAA44B,UAAAh2B,QACA5C,KAAA0mB,MAAA1F,UAAA,GACAhhB,KAAAygB,SAAAld,OAAA,GAAA9C,SAAAghB,IACAA,EAAA+I,UAAA,GAEA,EAEAkP,aAAAp3B,EAAAzD,GACA,IACA4iB,EAAA,IADAxkB,IAAAkL,UAAA,eACA,CAAAnI,KAAA64B,UAAA0B,WAAA,GAAAv6B,KAAAsC,GAEAmf,EAAA+Y,OAAA/5B,SAAAkI,IACA9J,EAGAmB,KAAA44B,UAAAz1B,IAAAtE,GACAmB,KAAA0mB,MAAAiU,aAAAhyB,EAAA3I,KAAA44B,UAAAx3B,IAAAvC,GAAA27B,OAAA,IAEAxhB,QAAAmD,KACA,2CAAAtd,EAAA,KANAmB,KAAA0mB,MAAA/F,YAAAhY,GAWA8Y,EAAAoG,OAAAlf,EAAA,IAGA3I,KAAA44B,UAAA91B,IAAAR,EAAAtC,KAAA8F,MAAA1D,KAAAqf,GACAzhB,KAAAygB,SAAAjd,KAAAie,EACA,EAEAgY,WAAAr3B,EAAAvD,GACA,IAAA4iB,EAAAzhB,KAAA44B,UAAAx3B,IAAAgB,GAEAqf,EACAzhB,KAAA44B,UAAAz1B,IAAAtE,GACA4iB,EAAA+Y,OAAA/5B,SAAAkI,IACA3I,KAAA0mB,MAAAiU,aAAAhyB,EAAA3I,KAAA44B,UAAAx3B,IAAAvC,GAAA27B,OAAA,GAAA,IAGA/Y,EAAA+Y,OAAA/5B,SAAAkI,IACA3I,KAAA0mB,MAAA/F,YAAAhY,EAAA,IAIAqQ,QAAAmD,KAAA,yBAAA/Z,EAAA,cAEA,EAEAu3B,aAAAv3B,GACA,IAAAqf,EAAAzhB,KAAA44B,UAAAx3B,IAAAgB,GACAqf,GACAA,EAAA+I,WACAxqB,KAAAygB,SAAAld,OAAAvD,KAAAygB,SAAAvK,QAAAuL,GAAA,GACAzhB,KAAA44B,UAAA31B,OAAAb,IAEA4W,QAAAmD,KAAA,2BAAA/Z,EAAA,cAEA,EAEA+2B,OAAA5e,GACAtd,IAAAsI,MAAAgV,KCraAtd,IAAAkL,UAAA,cAAA,CAEA7D,YAAA,SAAA2kB,EAAAzhB,EAAAlF,EAAAf,GACAvB,KAAAwH,OAAAA,EACAxH,KAAAygB,SAAA,GACAzgB,KAAA2mB,UAAA,CAAA,EACA3mB,KAAA8F,MAAA,CAAA,EAEA9F,KAAA4mB,cAAA,GACA5mB,KAAA6mB,mBAAA,GAEA7mB,KAAA8mB,aAAA,IAAAnjB,IACA3D,KAAA+mB,iBAAA,EAEA/mB,KAAAgnB,eAAA,EACAhnB,KAAAinB,aAAA,EAEAjnB,KAAAsC,KAAArF,IAAAuhB,YAAAlc,GACAtC,KAAA8a,KAAAtT,EAAAsT,KAEA9a,KAAAuB,KAAAA,GAAA,aACAvB,KAAAw6B,OAAA,GACA,IAAA,IAAA16B,EAAA,EAAAA,EAAAmpB,EAAAvH,WAAArhB,OAAAP,IACAE,KAAAw6B,OAAAh3B,KAAAylB,EAAAvH,WAAA5hB,GAEA,EAEA8nB,UACA,IAAA,MAAAjf,KAAA3I,KAAAw6B,OACA,GAAAx6B,KAAAwH,QAAAxH,KAAAwH,OAAA1B,OAAA9F,KAAAwH,OAAA1B,MAAA1D,IAAA,CACA,MAAAqO,EAAA,IAAAqH,MAAA,SAAA,CAAAwZ,YAAA,IAEA3oB,EAAAqP,cAAAvH,IACAxT,IAAAgkB,IAAAtB,OAAAhX,EAEA,MACAA,EAAAgX,QAGA,ICvCA1iB,IAAAkL,UAAA,QAAA,CAEAI,YAAA,CACAqyB,OAAA,EACAt4B,KAAA,KACAu4B,MAAA,CAAA,EACAC,OAAA,CAAA,EACAC,QAAA,CAAA,EACA3iB,MAAA,CACA4iB,WAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,GAEAC,eAAA,CACAC,SAAA,EACAC,QAAA,EACAC,MAAA,GAEAC,iBAAA,CACAH,SAAA,EACAC,QAAA,EACAC,MAAA,GAEAE,UAAA,CACAb,OAAA,EACAc,QAAA,GACAC,SAAA,OAIAnzB,WAAA,CACA+H,QAAA,CACAhO,KAAAwnB,OACAF,QAAA,GAGArD,OAAA,CACAjkB,KAAAwE,OACA8iB,QAAA,OAGA+R,IAAA,CACAr5B,KAAAwE,OACA8iB,QAAA,IAGAgS,OAAA,CACAt5B,KAAA7D,OACAmrB,QAAA,CAAA,GAGAkR,QAAA,CACAx4B,KAAA7D,OACAmrB,QAAA,CAAA,GAGAvnB,KAAA,CACAC,KAAA7D,OACAmrB,QAAA,CAAA,GAGAiS,SAAA,CACAv5B,KAAAwE,OACA8iB,QAAA,OACAI,KAAA,CAAA,OAAA,OAAA,SAGA8R,OAAA,CACAx5B,KAAAunB,QACAD,SAAA,GAGAmS,MAAA,CACAz5B,KAAAwE,OACA8iB,QAAA,IAGAoS,IAAA,CAEA15B,KAAAwnB,OACAF,QAAA,OAGAqS,YAAA,CACA35B,KAAAunB,QACAD,SAAA,IAIAphB,QAAA,CACA0zB,QACAn8B,KAAAo8B,QACA,EAEArM,KAAA8L,EAAAQ,GACA,MAAA3e,EAAA,CAAA,EACAme,IAAAne,EAAAme,OAAAA,GACAQ,IAAA3e,EAAAue,IAAA,GACAj8B,KAAAs8B,OAAA5e,EACA,EAEAmT,QACA7wB,KAAAo8B,SACAp8B,KAAAu8B,YAAA,EACA,GAGA7zB,OAAA,CACAwa,MAAApL,MACA0kB,KAAA1kB,MACApC,MAAAoC,MACAkZ,QAAAlZ,MACA2kB,aAAA3kB,MACA4kB,UAAA5kB,MACAqkB,MAAArkB,MACA6kB,QAAA7kB,MACA8kB,OAAAC,cACAC,SAAAD,eAGAE,cAAA,CACA,IAAA,UACA,IAAA,UACA,IAAA,eACA,IAAA,aAGAxV,QAAA,EAEAD,KAAA3e,GACA3I,KAAAs8B,OAAAr/B,IAAAuM,SAAAxJ,KAAAs8B,OAAA7V,KAAAzmB,OAEAA,KAAAg9B,aAAAh9B,KAAAg9B,aAAAvW,KAAAzmB,MACAA,KAAAi9B,cAAAj9B,KAAAi9B,cAAAxW,KAAAzmB,MACAA,KAAAk9B,cAAAl9B,KAAAk9B,cAAAzW,KAAAzmB,MACAA,KAAAm9B,gBAAAn9B,KAAAm9B,gBAAA1W,KAAAzmB,MACAA,KAAAo9B,yBAAAp9B,KAAAq9B,iBAAA5W,KAAAzmB,KAAA,YACAA,KAAAs9B,uBAAAt9B,KAAAq9B,iBAAA5W,KAAAzmB,KAAA,UAEAA,KAAAu9B,KAAA,IAAAC,eACAx9B,KAAAu9B,KAAAv1B,iBAAA,OAAAhI,KAAAg9B,cACAh9B,KAAAu9B,KAAAv1B,iBAAA,QAAAhI,KAAAi9B,eACAj9B,KAAAu9B,KAAAv1B,iBAAA,QAAAhI,KAAAk9B,eACAl9B,KAAAu9B,KAAAv1B,iBAAA,UAAAhI,KAAAm9B,iBACAn9B,KAAAu9B,KAAAv1B,iBAAA,WAAAhI,KAAAo9B,0BACAp9B,KAAAu9B,KAAAX,OAAA50B,iBAAA,WAAAhI,KAAAs9B,yBAEAt9B,KAAA8F,MAAAi2B,QAAA/7B,KAAA8F,MAAA81B,KACA57B,KAAAs8B,QAEA,EAEA1U,UACA5nB,KAAAu9B,KAAAvoB,oBAAA,OAAAhV,KAAAg9B,cACAh9B,KAAAu9B,KAAAvoB,oBAAA,QAAAhV,KAAAi9B,eACAj9B,KAAAu9B,KAAAvoB,oBAAA,QAAAhV,KAAAk9B,eACAl9B,KAAAu9B,KAAAvoB,oBAAA,UAAAhV,KAAAm9B,iBACAn9B,KAAAu9B,KAAAvoB,oBAAA,WAAAhV,KAAAo9B,0BACAp9B,KAAAu9B,KAAAX,OAAA5nB,oBAAA,WAAAhV,KAAAs9B,wBACAt9B,KAAAu9B,KAAApB,QACAn8B,KAAAu9B,KAAA,IACA,EAEAlT,cAAAvD,IACA9mB,KAAA8F,MAAAi2B,QAAA/7B,KAAA8F,MAAA81B,MAEA9U,EAAA3jB,IAAA,QAAA2jB,EAAA3jB,IAAA,YACAnD,KAAAs8B,QAGA,EAGAjV,iBAAA1e,GACA1L,IAAAqL,cAAA3I,UAAA0nB,iBAAArjB,KAAAhE,KAAA2I,GAEA1L,IAAAgkB,IAAAU,cAAAhZ,GAAAlI,SAAA,EAAAc,OAAAwgB,WAAA9f,YACA8f,GAAA9f,GAAA,CAAA,QAAA,UAAAqP,SAAA/P,IACAvB,KAAAqpB,OAAApnB,GAAAA,IACAjC,KAAA8F,MAAAvE,EAAA,KAAA7C,OAAAkJ,OAAA,CAAA,EAAA5H,KAAA8F,MAAAvE,EAAA,KAAA,CAAAwgB,CAAAA,GAAA9f,GAAA,IAIA8f,GAAA9f,GAAA,QAAAV,GACAvB,KAAAqpB,OAAApnB,GAAAA,IACAjC,KAAA8F,MAAAxD,KAAA5D,OAAAkJ,OAAA,CAAA,EAAA5H,KAAA8F,MAAAxD,KAAA,CAAAyf,CAAAA,GAAA9f,GAAA,GAEA,GAEA,EAEAm6B,SACAp8B,KAAAu9B,MACAv9B,KAAAu9B,KAAApB,OAEA,EAEAI,WAAAkB,GACA,MAAAn7B,EAAA,CACAs4B,OAAA,EACAG,QAAA,CAAA,EACA3iB,MAAA,CACA4iB,WAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,GAEAC,eAAA,CACAC,SAAA,EACAE,MAAA,EACAD,QAAA,GAEAE,iBAAA,CACAH,SAAA,EACAE,MAAA,EACAD,QAAA,GAEAG,UAAA,CACAb,OAAA,EACAc,QAAA,GACAC,SAAA,OAIA8B,IACAn7B,EAAAA,KAAA,MAGAtC,KAAA8C,IAAAR,EACA,EAEAg6B,OAAA5e,GACA1d,KAAAo8B,SAEA1e,EAAAzgB,IAAAgc,QAAA,EAAAjZ,KAAA8F,MAAA4X,GAAA,CAAA,GAEA,IAAAggB,EAAAh/B,OAAAqH,KAAA2X,EAAAme,QACAnE,QAAAt1B,GAAA,MAAAsb,EAAAme,OAAAz5B,KACAI,KAAAJ,IACA,IAAAH,EAAAyb,EAAAme,OAAAz5B,GAIA,MAHA,iBAAAH,GAAAA,EAAA6c,WAAA,QACA7c,EAAAjC,KAAA4kB,MAAA3iB,IAEAgqB,mBAAA7pB,GAAA,IAAA6pB,mBAAAhqB,EAAA,IAEAgpB,KAAA,KAgBA,GAdAjrB,KAAAu8B,aACAv8B,KAAAgY,cAAA,SAEAhY,KAAA29B,KAAAjgB,EAAAke,IAEA8B,IACA19B,KAAA29B,OAAA39B,KAAA29B,KAAArsB,SAAA,KAAA,IAAA,KAAAosB,GAGA1gC,OAAA4gC,eAEA59B,KAAA29B,KAAA3gC,OAAA4gC,aAAAC,gBAAA79B,KAAA29B,OAGA39B,KAAA8F,MAAAk2B,MAAA,CACA,MAAAA,EAAAh8B,KAAA4kB,MAAA,GAAA5kB,KAAA8F,MAAAk2B,eAAAh8B,KAAA29B,UACA,GAAA3B,EAAA,CACA,KAAAtiB,KAAAiW,MAAAqM,EAAA8B,SAAA,IAAApgB,EAAAue,KAWA,OARAj8B,KAAA8C,IAAA,CACAi4B,QAAAiB,EAAAjB,SAAA,CAAA,EACAD,OAAAkB,EAAAlB,QAAA,CAAA,EACAD,MAAAmB,EAAAnB,OAAA,CAAA,EACAv4B,KAAA05B,EAAA15B,OAEAtC,KAAAgY,cAAA,gBACAhY,KAAAgY,cAAA,QATAhY,KAAA4kB,MAAA,GAAA5kB,KAAA8F,MAAAk2B,iBAAAh8B,KAAA29B,SAYA,CACA,CAEA39B,KAAA8C,IAAA,QAAA,CACAk4B,WAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,IAGA,IAAA74B,EAAA,KACAkkB,EAAAxmB,KAAA8F,MAAA0gB,OAAAoC,cAEA,QAAApC,IACA,SAAAxmB,KAAA8F,MAAAg2B,SACAx5B,EAAAtC,KAAA8F,MAAAxD,KAAAV,WACA,SAAA5B,KAAA8F,MAAAg2B,SACAx5B,EAAAmY,KAAAC,UAAA1a,KAAA8F,MAAAxD,MAEA,SAAAkkB,GACAlkB,EAAA,IAAAy7B,SAEAr/B,OAAAqH,KAAA/F,KAAA8F,MAAAxD,MAAA7B,SAAA2B,IACA,IAAAH,EAAAjC,KAAA8F,MAAAxD,KAAAF,GAEApE,MAAAkG,QAAAjC,IACA,QAAA+qB,KAAA/qB,KAAAG,GAAA,MACAH,EAAAxB,SAAA6a,GAAAhZ,EAAAke,OAAApe,EAAAkZ,MAEAhZ,EAAAQ,IAAAV,EAAAH,EACA,KAGAK,EAAAtC,KAAA8F,MAAAxD,KAAAV,YAKA5B,KAAAu9B,KAAAS,KAAAxX,EAAAxmB,KAAA29B,MACA39B,KAAAu9B,KAAAhtB,QAAA,IAAAmN,EAAAnN,QACA,SAAAvQ,KAAA8F,MAAAg2B,UAAA,SAAA97B,KAAA8F,MAAAg2B,UACA97B,KAAAu9B,KAAAU,iBAAA,eAAA,eAAAj+B,KAAA8F,MAAAg2B,UAEA,IAAA,MAAAoC,KAAAl+B,KAAA8F,MAAAi1B,QACA/6B,KAAAu9B,KAAAU,iBAAAC,EAAAl+B,KAAA8F,MAAAi1B,QAAAmD,IAOA,GALAl+B,KAAAu9B,KAAAU,iBAAA,SAAA,oBACAj+B,KAAA8F,MAAAo2B,cACAl8B,KAAAu9B,KAAAY,iBAAA,GAGAn+B,KAAAo+B,eAAA,QAAA5X,EAAA,CACA,MAAA6X,EAAAp+B,SAAA4Y,cAAA,2BACAwlB,GACAr+B,KAAAu9B,KAAAU,iBAAA,eAAAI,EAAA/N,QAEA,CAEA,IACAtwB,KAAAu9B,KAAAe,KAAAh8B,EACA,CAAA,MAAAyW,GACA/Y,KAAAu+B,MAAAxlB,EACA,CACA,EAEAwlB,MAAAxlB,GAGA,GAFA/Y,KAAAu8B,aAEAxjB,EASA,OARA/Y,KAAA8C,IAAA,YAAA,CACA83B,OAAA,EACAc,QAAA3iB,EAAA2iB,QACAC,SAAA,OAGA37B,KAAAgY,cAAA,cACAhY,KAAAgY,cAAA,QAIA,IAAA2jB,EAAA37B,KAAAu9B,KAAAiB,aAEA,IACA7C,EAAAlhB,KAAAmK,MAAA+W,EACA,CAAA,MAAA5iB,GACA,GAAA/Y,KAAAu9B,KAAA3C,OAAA,IASA,OARA56B,KAAA8C,IAAA,YAAA,CACA83B,OAAA,EACAc,QAAA,8BACAC,SAAAA,IAGA37B,KAAAgY,cAAA,cACAhY,KAAAgY,cAAA,OAGA,CAIA,GAFAhY,KAAAy+B,gBAEAz+B,KAAAu9B,KAAA3C,OAAA,IAYA,OAXA56B,KAAA8C,IAAA,CACA83B,OAAA56B,KAAAu9B,KAAA3C,OACAt4B,KAAAq5B,IAGA37B,KAAAgY,cAAA,WACAhY,KAAAgY,cAAA,aAEAhY,KAAA8F,MAAAk2B,OACAh8B,KAAA4kB,MAAA,GAAA5kB,KAAA8F,MAAAk2B,cAAAh8B,KAAA29B,iFAAAjkB,KAAAiW,aAKA3vB,KAAA8C,IAAA,CACA83B,OAAA56B,KAAAu9B,KAAA3C,OACAa,UAAA,CACAb,OAAA56B,KAAAu9B,KAAA3C,OACAc,QAAA17B,KAAAu9B,KAAAmB,WACA/C,SAAAA,KAIA37B,KAAAgY,cAAAhY,KAAA+8B,cAAA/8B,KAAAu9B,KAAA3C,SAAA,SACA56B,KAAAgY,cAAA,OACA,EAEAymB,gBACA,IACA,MACAE,EADA3+B,KAAAu9B,KAAAqB,wBACA/Z,OAAA3N,MAAA,WAEAlX,KAAA8C,IAAA,UAAA67B,EAAApnB,QAAA,CAAAwjB,EAAAzN,KACA,MAAAtE,EAAAsE,EAAApW,MAAA,MACA3V,EAAAynB,EAAAhY,QACA/O,EAAA+mB,EAAAiC,KAAA,MAIA,OAFA8P,EAAAx5B,GAAAU,EAEA84B,CAAA,GACA,CAAA,GACA,CAAA,MAAAhiB,GAEA,YADAC,QAAAmD,KAAA,iCAAApD,EAEA,CAEA/Y,KAAA6+B,mBACA,EAEAA,oBACA,IACA,MAAAC,EAAApgC,OAAAqH,KAAA/F,KAAAsC,KAAAy4B,SAAAjT,MAAAoW,GAAA,SAAAA,EAAAnmB,gBAEA+mB,GACA9+B,KAAA8C,IAAA,QAAA9C,KAAAsC,KAAAy4B,QAAA+D,GAAA5nB,MAAA,SAAA1U,KAAAu8B,IACA,IACA,MAAAhoB,EAAAgoB,EAAAhoB,MAAA,kBACAioB,EAAA,IAAAxK,IAAAzd,EAAA,IACAiS,EAAAjS,EAAA,GAAAG,MAAA,KACAwmB,EAAAsB,EAAAzQ,OAAAtqB,MAAA,GAAAiT,MAAA,KAAAK,QAAA,CAAA0nB,EAAAxsB,KACA,MAAA0d,EAAA1d,EAAAyE,MAAA,KAEA,OADAiZ,EAAA,KAAA8O,EAAA7O,mBAAAD,EAAA,KAAAC,mBAAAD,EAAA,IAAA,KACA8O,CAAA,GACA,CAAA,GAEA,IAAAC,EAAAlW,EAAA/kB,MAAA,GAAAsT,QAAA,CAAA0nB,EAAAjd,KACA,MAAAjL,EAAAiL,EAAAjL,MAAA,6BAEA,OADAA,IAAAkoB,EAAAloB,EAAA,IAAAA,EAAA,IACAkoB,CAAA,GACA,CAAA,GAKA,OAHAC,EAAAxgC,OAAAkJ,OAAA,CAAA,EAAA81B,EAAAwB,GACAA,EAAAtD,IAAAoD,EAAAp9B,WAEAs9B,CACA,CAAA,MAAAnmB,GAEA,OADAC,QAAAmD,KAAA,iCAAApD,GACA,IACA,MACA2e,QAAAjlB,GAAAA,GAAAA,EAAA0sB,MAAA5nB,QAAA,CAAA0nB,EAAAxsB,KACAA,EAAA0sB,IAAAjoB,MAAA,OAAAzW,SAAA0+B,GAAAF,EAAAE,GAAAzgC,OAAAkJ,OAAA6K,EAAA,CAAA0sB,UACAF,IACA,CAAA,EAEA,CAAA,MAAAlmB,GAEA,YADAC,QAAAmD,KAAA,4BAAApD,EAEA,CAEA/Y,KAAAo/B,cACA,EAEAA,eACA,IACA,MAAAtE,EAAA,CACAuE,KAAA,EACAC,MAAA,EACAtkB,MAAA,EACA7X,IAAA,CACAo8B,OAAA,EACA/iB,MAAA,EACAgI,MAAA,EACAiO,MAAA,KAIA8M,MAAAA,EAAA/iB,KAAAA,EAAAgI,KAAAA,EAAAiO,KAAAA,GAAAzyB,KAAAsC,KAAAu4B,MAEA,GAAAre,GAAAgI,EAAA,CACAiO,GAAAA,EAAA4M,KACAvE,EAAAwE,OAAA7M,EAAA4M,KACA7iB,GAAAA,EAAA6iB,OACAvE,EAAAwE,OAAA9iB,EAAA6iB,KAAA,GAGA,MAAAG,EAAA9gC,OAAAqH,KAAA/F,KAAAsC,KAAAy4B,SAAAjT,MAAAoW,GAEA,aADAA,EAAAA,EAAAnmB,gBACA,YAAAmmB,GAAA,kBAAAA,IAGAsB,IACA1E,EAAA9f,OAAAhb,KAAAsC,KAAAy4B,QAAAyE,IAGAhjB,GAAAA,EAAA6iB,KACAvE,EAAAuE,MAAA7iB,EAAA6iB,KAAA,EACA7a,GAAAA,EAAA6a,OACAvE,EAAAuE,MAAA7a,EAAA6a,KAAA,GAGAvE,EAAA33B,IAAA,CACAo8B,QAAAA,EACA/iB,OAAAA,EACAgI,OAAAA,EACAiO,OAAAA,EAEA,CAEAzyB,KAAA8C,IAAA,SAAAg4B,EACA,CAAA,MAAA/hB,GACAC,QAAAmD,KAAA,uBAAApD,EACA,CACA,EAEAikB,aAAAvsB,GACAzQ,KAAAu+B,OACA,EAEAtB,cAAAxsB,GACAzQ,KAAAu8B,aACAv8B,KAAAgY,cAAA,SACAhY,KAAAgY,cAAA,OACA,EAEAklB,cAAAzsB,GACAzQ,KAAAu+B,MAAA5lB,MAAA,qBACA,EAEAwkB,gBAAA1sB,GACAzQ,KAAAu+B,MAAA5lB,MAAA,qBACA,EAEA0kB,iBAAA96B,EAAAkO,GACAA,EAAAgvB,OAAAhvB,EAAAgvB,QAAAhvB,EAAA4qB,SAEA,MAAAC,EAAA7qB,EAAAivB,iBAAA/kB,KAAAglB,KAAA,IAAAlvB,EAAAgvB,OAAAhvB,EAAA8qB,OAAA,EAEAv7B,KAAA8C,IAAA,CACAsV,MAAA,CACA4iB,WAAA,EACAC,UAAA,WAAA14B,GAAA+4B,EAAA,IACAJ,WAAA,WAAA34B,GAAA,MAAA+4B,EACAH,YAAA,aAAA54B,GAEA,CAAAA,EAAA,YAAA,CACA84B,SAAA5qB,EAAAgvB,OACAlE,MAAA9qB,EAAA8qB,MACAD,QAAAA,KAIAt7B,KAAAgY,cAAAzV,EAAA,CACAm9B,iBAAAjvB,EAAAivB,iBACAD,OAAAhvB,EAAAgvB,OACAlE,MAAA9qB,EAAA8qB,OAEA,ICrjBAt+B,IAAAkL,UAAA,gBAAA,CAEAE,QAAA,QAEAG,WAAA,CACAo3B,QAAA,CACAr9B,KAAAunB,QACAD,SAAA,IAIAvC,KAAA3e,GACA3I,KAAAo+B,eAAA,EAEAp+B,KAAA8F,MAAA85B,SAAA3iC,IAAA4iC,SACA7/B,KAAA8/B,SAAA9/B,KAAA8/B,SAAArZ,KAAAzmB,MACAA,KAAA+/B,OAAA//B,KAAA8F,MAAA81B,IAAAjnB,QAAA,cAAA,IACA3U,KAAAggC,QAAA/iC,IAAA4iC,OAAA,QACA7/B,KAAAggC,QAAAC,GAAAjgC,KAAA+/B,OAAA//B,KAAA8/B,WAGA7iC,IAAAkL,UAAA,SAAAxI,UAAA2nB,KAAAtjB,KAAAhE,KAAA2I,EACA,EAEAif,UACA5nB,KAAAggC,SACAhgC,KAAAggC,QAAAnrB,IAAA7U,KAAA+/B,OAAA//B,KAAA8/B,UAGA7iC,IAAAkL,UAAA,SAAAxI,UAAAioB,QAAA5jB,KAAAhE,KACA,EAEAs8B,OAAA5e,GACA1d,KAAAggC,SAAAhgC,KAAAggC,QAAAE,UACAlgC,KAAA8/B,SAAApiB,GAAAA,EAAAme,QAEA5+B,IAAAkL,UAAA,SAAAxI,UAAA28B,OAAAt4B,KAAAhE,KAAA0d,EAEA,EAEAoiB,SAAAjE,GACAA,EAAA5+B,IAAAgc,QAAA,EAAA,CAAA,EAAAjZ,KAAA8F,MAAA+1B,OAAAA,GAAA,CAAA,GAEA77B,KAAAgY,cAAA,SACAhY,KAAA8C,IAAA,QAAA,CACAk4B,WAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,IAGAn7B,KAAAggC,QAAAG,KAAAngC,KAAA+/B,OAAAlE,GAAAF,IACA37B,KAAA8C,IAAA,CACA83B,OAAAe,EAAAf,OACAt4B,KAAAq5B,EAAAr5B,KACA8V,MAAA,CACA4iB,WAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,KAIAn7B,KAAAgY,cAAAhY,KAAA+8B,cAAApB,EAAAf,SAAA,SACA56B,KAAAgY,cAAA,OAAA,GAEA,IClEA/a,IAAAkL,UAAA,qBAAA,CAEAE,QAAA,OAEAE,YAAA,CACAqyB,OAAA,EACAt4B,KAAA,KACAy4B,QAAA,CAAA,EACA3iB,MAAA,CACA4iB,WAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,GAEAC,eAAA,CACAC,SAAA,EACAE,MAAA,EACAD,QAAA,GAEAE,iBAAA,CACAH,SAAA,EACAE,MAAA,EACAD,QAAA,GAEAG,UAAA,CACAb,OAAA,EACAc,QAAA,GACAC,SAAA,OAIAnzB,WAAA,CACA+H,QAAA,CACAhO,KAAAwnB,OACAF,QAAA,GAGAuW,WAAA,CACA79B,KAAAunB,QACAD,SAAA,GAGAgS,OAAA,CACAt5B,KAAA7D,OACAmrB,QAAA,CAAA,GAGAkR,QAAA,CACAx4B,KAAA7D,OACAmrB,QAAA,CAAA,GAGAwW,SAAA,CACA99B,KAAAwE,OACA8iB,QAAA,QAGAqS,YAAA,CACA35B,KAAAunB,QACAD,SAAA,IAIAphB,QAAA,CACA0zB,QACAn8B,KAAAo8B,QACA,EAEAvL,MAAA4M,GACAz9B,KAAA8wB,SAEA2M,IACAz9B,KAAAo8B,SACAp8B,KAAAu8B,YAAA,GAEA,GAGA7zB,OAAA,CACAwa,MAAApL,MACA0kB,KAAA1kB,MACApC,MAAAoC,MACA2kB,aAAA3kB,MACA4kB,UAAA5kB,MACAqkB,MAAArkB,MACA6kB,QAAA7kB,MACA8kB,OAAAC,cACAC,SAAAD,eAGAvV,KAAA3e,GACA1L,IAAAkL,UAAA,QAAAxI,UAAA2nB,KAAAtjB,KAAAhE,KAAA2I,GAEA3I,KAAAg9B,aAAAh9B,KAAAg9B,aAAAvW,KAAAzmB,MACAA,KAAAi9B,cAAAj9B,KAAAi9B,cAAAxW,KAAAzmB,MACAA,KAAAk9B,cAAAl9B,KAAAk9B,cAAAzW,KAAAzmB,MACAA,KAAAm9B,gBAAAn9B,KAAAm9B,gBAAA1W,KAAAzmB,MACAA,KAAAo9B,yBAAAp9B,KAAAq9B,iBAAA5W,KAAAzmB,KAAA,YACAA,KAAAs9B,uBAAAt9B,KAAAq9B,iBAAA5W,KAAAzmB,KAAA,UAEAA,KAAAu9B,KAAA,IAAAC,eACAx9B,KAAAu9B,KAAAv1B,iBAAA,OAAAhI,KAAAg9B,cACAh9B,KAAAu9B,KAAAv1B,iBAAA,QAAAhI,KAAAi9B,eACAj9B,KAAAu9B,KAAAv1B,iBAAA,QAAAhI,KAAAk9B,eACAl9B,KAAAu9B,KAAAv1B,iBAAA,UAAAhI,KAAAm9B,iBACAn9B,KAAAu9B,KAAAv1B,iBAAA,WAAAhI,KAAAo9B,0BACAp9B,KAAAu9B,KAAAX,OAAA50B,iBAAA,WAAAhI,KAAAs9B,wBAEAt9B,KAAAsgC,YAAA33B,GAEA3I,KAAA8F,MAAAs6B,YACAnjC,IAAA+e,UAAA,IAAAhc,KAAA4wB,WAEA,EAEAhJ,UACA3qB,IAAAkL,UAAA,QAAAxI,UAAAioB,QAAA5jB,KAAAhE,MAEAA,KAAAu9B,KAAAvoB,oBAAA,OAAAhV,KAAAg9B,cACAh9B,KAAAu9B,KAAAvoB,oBAAA,QAAAhV,KAAAi9B,eACAj9B,KAAAu9B,KAAAvoB,oBAAA,QAAAhV,KAAAk9B,eACAl9B,KAAAu9B,KAAAvoB,oBAAA,UAAAhV,KAAAm9B,iBACAn9B,KAAAu9B,KAAAvoB,oBAAA,WAAAhV,KAAAo9B,0BACAp9B,KAAAu9B,KAAAX,OAAA5nB,oBAAA,WAAAhV,KAAAs9B,wBACAt9B,KAAAu9B,KAAA,IACA,EAGAlW,iBAAA1e,GACA1L,IAAAqL,cAAA3I,UAAA0nB,iBAAArjB,KAAAhE,KAAA2I,GAEA1L,IAAAgkB,IAAAU,cAAAhZ,GAAAlI,SAAA,EAAAc,OAAAwgB,WAAA9f,YACA8f,GAAA9f,GAAA,CAAA,QAAA,UAAAqP,SAAA/P,IACAvB,KAAAqpB,OAAApnB,GAAAA,IACAjC,KAAA8F,MAAAvE,EAAA,KAAA7C,OAAAkJ,OAAA,CAAA,EAAA5H,KAAA8F,MAAAvE,EAAA,KAAA,CAAAwgB,CAAAA,GAAA9f,GAAA,GAEA,GAEA,EAEAq+B,YAAA33B,GACAA,EAAA43B,aAAA,CAAA,EACA53B,EAAA63B,iBAAA,EACA,EAEApE,SACAp8B,KAAAu9B,KAAApB,OACA,EAEAI,WAAAkB,GACA,MAAAn7B,EAAA,CACAs4B,OAAA,EACAG,QAAA,CAAA,EACA3iB,MAAA,CACA4iB,WAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,GAEAC,eAAA,CACAC,SAAA,EACAE,MAAA,EACAD,QAAA,GAEAE,iBAAA,CACAH,SAAA,EACAE,MAAA,EACAD,QAAA,GAEAG,UAAA,CACAb,OAAA,EACAc,QAAA,GACAC,SAAA,OAIA8B,IACAn7B,EAAAA,KAAA,MAGAtC,KAAA8C,IAAAR,EACA,EAEA+uB,cACArxB,KAAAygC,OACA,EAEAA,QAEAzgC,KAAAo8B,SAEA,MAAA5V,EAAAxmB,KAAA0mB,MAAAF,OAAAoC,cACAzf,EAAAnJ,KAAA0mB,MAAAvd,OAEA,IAAA7G,EAAA,KAEAo7B,EAAAh/B,OAAAqH,KAAA/F,KAAA8F,MAAA+1B,QACAnE,QAAAt1B,GAAA,MAAApC,KAAA8F,MAAA+1B,OAAAz5B,KACAI,KAAAJ,IACA,IAAAH,EAAAjC,KAAA8F,MAAA+1B,OAAAz5B,GAIA,MAHA,iBAAAH,GAAAA,EAAA6c,WAAA,QACA7c,EAAAjC,KAAA4kB,MAAA3iB,IAEAgqB,mBAAA7pB,GAAA,IAAA6pB,mBAAAhqB,EAAA,IAEAgpB,KAAA,KAEA,GAAA,QAAAzE,EACAkX,EAAAr9B,SAAAq9B,GAAA,KAEAA,GAAA1/B,MAAAC,KAAA+B,KAAA0mB,MAAAjL,UACAic,QAAA3F,IAAAA,EAAAlC,WAAA,UAAAkC,EAAAxvB,MAAA,aAAAwvB,EAAAxvB,MAAAwvB,EAAAG,WACA1vB,KAAAuvB,GAAA9F,mBAAA8F,EAAAxwB,MAAA,IAAA0qB,mBAAA8F,EAAA9vB,SACAgpB,KAAA,UACA,GAAA,SAAAjrB,KAAA8F,MAAAu6B,SACA/9B,EAAAtC,KAAA8xB,iBAEA9xB,KAAA0mB,MAAA6Z,cACA7hC,OAAAkJ,OAAAtF,EAAAtC,KAAA0mB,MAAA6Z,cAGAj+B,EAAAmY,KAAAC,UAAApY,QAIA,GAFAA,EAAA,IAAAy7B,SAAA/9B,KAAA0mB,OAEA1mB,KAAA0mB,MAAA6Z,aACA,IAAA,IAAAn+B,KAAApC,KAAA0mB,MAAA6Z,aAAA,CACA,IAAAt+B,EAAAjC,KAAA0mB,MAAA6Z,aAAAn+B,GAEApE,MAAAkG,QAAAjC,IACA,QAAA2D,KAAAxD,KAAAA,GAAA,MACAH,EAAAxB,SAAAwB,GAAAK,EAAAke,OAAApe,EAAAH,MAEAK,EAAAQ,IAAAV,EAAAH,EAEA,CAIAjC,KAAAu8B,aACAv8B,KAAAgY,cAAA,SAEAhY,KAAA8C,IAAA,QAAA,CACAk4B,WAAA,EACAC,WAAA,EACAC,YAAA,EACAC,aAAA,IAGA,IAAAS,EAAAzyB,EAEAu0B,IACA9B,IAAAA,EAAAtqB,SAAA,KAAA,IAAA,KAAAosB,GAGA1gC,OAAA4gC,eAEAhC,EAAA5+B,OAAA4gC,aAAAC,gBAAAjC,IAGA57B,KAAAu9B,KAAAS,KAAAxX,EAAAoV,GACA57B,KAAAu9B,KAAAhtB,QAAA,IAAAvQ,KAAA8F,MAAAyK,QACA,SAAAvQ,KAAA8F,MAAAu6B,UACArgC,KAAAu9B,KAAAU,iBAAA,eAAA,oBAEA,IAAA,MAAAC,KAAAl+B,KAAA8F,MAAAi1B,QACA/6B,KAAAu9B,KAAAU,iBAAAC,EAAAl+B,KAAA8F,MAAAi1B,QAAAmD,IAEAl+B,KAAAu9B,KAAAU,iBAAA,SAAA,oBACAj+B,KAAA8F,MAAAo2B,cACAl8B,KAAAu9B,KAAAY,iBAAA,GAGA,MAAAE,EAAAp+B,SAAA4Y,cAAA,2BACAwlB,GACAr+B,KAAAu9B,KAAAU,iBAAA,eAAAI,EAAA/N,SAGA,IACAtwB,KAAAu9B,KAAAe,KAAAh8B,EACA,CAAA,MAAAyW,GACA/Y,KAAAu+B,MAAAxlB,EACA,CACA,EAEAwlB,MAAAxlB,GAGA,GAFA/Y,KAAAu8B,aAEAxjB,EASA,OARA/Y,KAAA8C,IAAA,YAAA,CACA83B,OAAA,EACAc,QAAA3iB,EAAA2iB,QACAC,SAAA,OAGA37B,KAAAgY,cAAA,cACAhY,KAAAgY,cAAA,QAIA,IAAA2jB,EAAA37B,KAAAu9B,KAAAiB,aAEA,IACA7C,EAAAlhB,KAAAmK,MAAA+W,EACA,CAAA,MAAA5iB,GACA,GAAA/Y,KAAAu9B,KAAA3C,OAAA,IASA,OARA56B,KAAA8C,IAAA,YAAA,CACA83B,OAAA,EACAc,QAAA,8BACAC,SAAAA,IAGA37B,KAAAgY,cAAA,cACAhY,KAAAgY,cAAA,OAGA,CAEA,IACA,MACA2mB,EADA3+B,KAAAu9B,KAAAqB,wBACA/Z,OAAA3N,MAAA,WAEAlX,KAAA8C,IAAA,UAAA67B,EAAApnB,QAAA,CAAAwjB,EAAAzN,KACA,MAAAtE,EAAAsE,EAAApW,MAAA,MACA3V,EAAAynB,EAAAhY,QACA/O,EAAA+mB,EAAAiC,KAAA,MAIA,OAFA8P,EAAAx5B,GAAAU,EAEA84B,CAAA,GACA,CAAA,GACA,CAAA,MAAAhiB,GACAC,QAAAmD,KAAA,iCAAApD,EACA,CAQA,GALA9b,IAAA2e,eAAA3e,IAAA2e,cAAA5b,KAAA0mB,OACA1pB,OAAAo0B,YAAApxB,KAAA0mB,MAAA7N,cAAA,iBACAuY,WAAAP,QAGA7wB,KAAAu9B,KAAA3C,OAAA,IAQA,OAPA56B,KAAA8C,IAAA,CACA83B,OAAA56B,KAAAu9B,KAAA3C,OACAt4B,KAAAq5B,IAGA37B,KAAAgY,cAAA,gBACAhY,KAAAgY,cAAA,QAaA,GATAhY,KAAA8C,IAAA,CACA83B,OAAA56B,KAAAu9B,KAAA3C,OACAa,UAAA,CACAb,OAAA56B,KAAAu9B,KAAA3C,OACAc,QAAA17B,KAAAu9B,KAAAmB,WACA/C,SAAAA,KAIA,MAAA37B,KAAAu9B,KAAA3C,OAIA,GAHA56B,KAAAgY,cAAA,WAGA2jB,EAAAr+B,MAAAL,IAAAse,SAAAmlB,WACA,IAAA,MAAAn/B,KAAAo6B,EAAAr+B,KAAA,CACA,MAAAy0B,EAAA/xB,KAAA0mB,MAAA7N,cAAA,UAAAtX,OACA,GAAAwwB,EAAA,CACA,MAAA2J,EAAAC,EAAAr+B,KAAAiE,GACAtE,IAAAse,SAAAmlB,WAAA3O,EAAA2J,EACA,CACA,MACAz+B,IAAAyrB,OAEA1P,QAAAmD,KAAA,yCAAAwf,QAEA,MAAA37B,KAAAu9B,KAAA3C,OACA56B,KAAAgY,cAAA,gBACA,MAAAhY,KAAAu9B,KAAA3C,OACA56B,KAAAgY,cAAA,aAEAhY,KAAAgY,cAAA,SAGAhY,KAAAgY,cAAA,OACA,EAEAglB,aAAAvsB,GACAzQ,KAAAu+B,OACA,EAEAtB,cAAAxsB,GACAzQ,KAAAu8B,aACAv8B,KAAAgY,cAAA,SACAhY,KAAAgY,cAAA,OACA,EAEAklB,cAAAzsB,GACAzQ,KAAAu+B,MAAA5lB,MAAA,qBACA,EAEAwkB,gBAAA1sB,GACAzQ,KAAAu+B,MAAA5lB,MAAA,qBACA,EAEA0kB,iBAAA96B,EAAAkO,GACAA,EAAAgvB,OAAAhvB,EAAAgvB,QAAAhvB,EAAA4qB,SAEA,MAAAC,EAAA7qB,EAAAivB,iBAAA/kB,KAAAglB,KAAA,IAAAlvB,EAAAgvB,OAAAhvB,EAAA8qB,OAAA,EAEAv7B,KAAA8C,IAAA,CACAsV,MAAA,CACA4iB,WAAA,EACAC,UAAA,WAAA14B,GAAA+4B,EAAA,IACAJ,WAAA,WAAA34B,GAAA,MAAA+4B,EACAH,YAAA,aAAA54B,GAEA,CAAAA,EAAA,YAAA,CACA84B,SAAA5qB,EAAAgvB,OACAlE,MAAA9qB,EAAA8qB,MACAD,QAAAA,KAIAt7B,KAAAgY,cAAAzV,EAAA,CACAm9B,iBAAAjvB,EAAAivB,iBACAD,OAAAhvB,EAAAgvB,OACAlE,MAAA9qB,EAAA8qB,OAEA,IC9aAt+B,IAAAkL,UAAA,KAAA,CAEAK,WAAA,CACAm4B,UAAA,CACAp+B,KAAAunB,QACAD,SAAA,IAIAnhB,OAAA,CACAk4B,KAAA9oB,MACA+oB,KAAA/oB,OAGAwP,KAAA3e,GAIA,IAHA3I,KAAA8gC,QAAA,EACA9gC,KAAA+gC,UAAA9gC,SAAAipB,yBAEAvgB,EAAAmwB,YACA94B,KAAA+gC,UAAApgB,YAAAhY,EAAAmwB,WAEA,EAEAvR,OAAA5e,GACA3I,KAAA8F,MAAA66B,WACA3gC,KAAAghC,OAEA,EAEA3W,cAAAvD,GACA9mB,KAAA8F,MAAA66B,UAAA3gC,KAAAghC,QAAAhhC,KAAAihC,OACA,EAEArZ,UACA5nB,KAAA+gC,UAAA,IACA,EAEAC,QACA,GAAAhhC,KAAA8gC,OAAA,OAEA,MAAAI,EAAAlhC,KAAA+gC,UAAAxG,WAAA,GACAv6B,KAAA0mB,MAAA/F,YAAAugB,GACAlhC,KAAA6nB,SACA7nB,KAAAgY,cAAA,QACAhY,KAAA8gC,QAAA,CACA,EAEAG,QACAjhC,KAAA8gC,SAEA9gC,KAAAse,UACAte,KAAAse,QAAA7d,SAAAyd,GAAAA,MACAle,KAAAse,QAAA,MAGAtgB,MAAAC,KAAA+B,KAAA0mB,MAAAhF,YAAAjhB,SAAAkI,IACA,MAAA8H,EAAA,IAAAqH,MAAA,SAAA,CAAAwZ,YAAA,IACA3oB,EAAAqP,cAAAvH,IAAA9H,EAAAgX,QAAA,IAGA3f,KAAAyqB,mBACAzqB,KAAAgY,cAAA,QACAhY,KAAA8gC,QAAA,EACA,IC/DA7jC,IAAAkL,UAAA,WAAA,CAEAI,YAAA,CACA44B,SAAA,MAGA34B,WAAA,CACA44B,SAAA,CACA7+B,KAAAwE,OACA8iB,QAAA,UACAI,KAAA,CAAA,UAAA,UAAA,QAAA,SAGAoX,IAAA,CACA9+B,KAAAunB,QACAD,SAAA,IAIAvC,OACAtnB,KAAAshC,MAAAthC,KAAAshC,MAAA7a,KAAAzmB,MACAA,KAAAshC,OACA,EAEA1Z,UACA5nB,KAAAuhC,UAAA33B,aAAA5J,KAAAuhC,UACAvhC,KAAAwhC,iBAAA33B,qBAAA7J,KAAAwhC,gBACA,EAEAF,QAGA,OAFAthC,KAAA8C,IAAA,WAAA9C,KAAAyhC,aAEAzhC,KAAA8F,MAAAs7B,UACA,IAAA,UAAA,OAAAphC,KAAAuhC,SAAAtgC,WAAAjB,KAAAshC,MAAA,KACA,IAAA,UAAA,OAAAthC,KAAAuhC,SAAAtgC,WAAAjB,KAAAshC,MAAA,KACA,IAAA,QAAA,OAAAthC,KAAAuhC,SAAAtgC,WAAAjB,KAAAshC,MAAA,MACA,IAAA,OAAA,OAAAthC,KAAAuhC,SAAAtgC,WAAAjB,KAAAshC,MAAA,OACA,QAAA,OAAAthC,KAAAwhC,gBAAA13B,sBAAA9J,KAAAshC,OAEA,EAEAG,YACA,MAAA9R,EAAA,IAAAjW,KACAgoB,EAAA,CAAAjoB,EAAAI,KAAA,OAAAJ,GAAAxV,OAAA4V,GACAwnB,EAAArhC,KAAA8F,MAAAu7B,IAEAM,EAAAN,EAAA1R,EAAAiS,iBAAAjS,EAAAkS,cACAC,GAAAT,EAAA1R,EAAAoS,cAAApS,EAAAqS,YAAA,EACAC,EAAAZ,EAAA1R,EAAAuS,aAAAvS,EAAAwS,UACAC,EAAAf,EAAA1R,EAAA0S,cAAA1S,EAAA2S,WACAC,EAAAlB,EAAA1R,EAAA6S,gBAAA7S,EAAA8S,aACAC,EAAArB,EAAA1R,EAAAgT,gBAAAhT,EAAAiT,aAEAC,EAAAnB,EAAAC,EAAA,GAAA,IAAAD,EAAAI,EAAA,GAAA,IAAAJ,EAAAO,EAAA,GACAa,EAAAzB,EAAA,IAAA,GAEA,OAAArhC,KAAA8F,MAAAs7B,UACA,IAAA,OAAA,OAAAyB,EAAA,YAAAC,EACA,IAAA,QAAA,OAAAD,EAAA,IAAAnB,EAAAU,EAAA,GAAA,SAAAU,EACA,IAAA,UAAA,OAAAD,EAAA,IAAAnB,EAAAU,EAAA,GAAA,IAAAV,EAAAa,EAAA,GAAA,MAAAO,EAGA,OAAAD,EAAA,IAAAnB,EAAAU,EAAA,GAAA,IAAAV,EAAAa,EAAA,GAAA,IAAAb,EAAAgB,EAAA,GAAAI,CACA,IC/DA7lC,IAAAkL,UAAA,aAAA,CAAAE,QAAA,UCAApL,IAAAkL,UAAA,WAAA,CAAAE,QAAA,uBCAApL,IAAAkL,UAAA,QAAA,CAEAI,YAAA,CACAyS,MAAA,GACA+nB,MAAA,GAGAv6B,WAAA,CACAwS,MAAA,CACAzY,KAAAvE,MACA6rB,QAAA,KAIAnhB,OAAA,CACAwf,QAAApQ,OAGArP,QAAA,CACA9C,IAAAq9B,GACAhjC,KAAAijC,QAAAjjC,KAAAkjC,SAAA,EAAAF,EACA,EAEAG,QAAAH,IAEA,GAAAhjC,KAAAojC,SAAAJ,IACAhjC,KAAAijC,QAAAjjC,KAAAkjC,SAAA,EAAAF,EAEA,EAEAx3B,OAAA7I,EAAAqgC,GACAhjC,KAAAijC,QAAAtgC,EAAA,EAAAqgC,EACA,EAEArI,aAAAr6B,EAAA0iC,GACA,MAAArgC,EAAA3C,KAAAojC,SAAA9iC,IACA,GAAAqC,GACA3C,KAAAijC,QAAAtgC,EAAA,EAAAqgC,EAEA,EAEAK,YAAA/iC,EAAA0iC,GACA,MAAArgC,EAAA3C,KAAAojC,SAAA9iC,IACA,GAAAqC,GACA3C,KAAAijC,QAAAtgC,EAAA,EAAA,EAAAqgC,EAEA,EAEAruB,QAAArU,EAAA0iC,GACA,MAAArgC,EAAA3C,KAAAojC,SAAA9iC,IACA,GAAAqC,GACA3C,KAAAijC,QAAAtgC,EAAA,EAAAqgC,EAEA,EAEAM,UAAA3gC,EAAAqgC,GACAhjC,KAAAijC,QAAAtgC,EAAA,EAAAqgC,EACA,EAEArjB,OAAArf,GACA,MAAAqC,EAAA3C,KAAAojC,SAAA9iC,IACA,GAAAqC,GACA3C,KAAAijC,QAAAtgC,EAAA,EAEA,EAEA4gC,SAAA5gC,GACA3C,KAAAijC,QAAAtgC,EAAA,EACA,EAEA6gC,UACAxjC,KAAAyjC,UACA,EAEAC,OACA1jC,KAAA2jC,OACA,EAEAhmB,QACA3d,KAAAo0B,YAAA,GACA,GAGA7M,QAAA,EAEAD,OACA,MAAArB,EAAAhpB,IAAAa,MAAAkC,KAAA8F,MAAAkV,OAEAhb,KAAA8C,IAAA,CACAkY,MAAAiL,EACA8c,MAAA9c,EAAA5lB,QAEA,EAEAgqB,cAAAvD,GACAA,EAAA3jB,IAAA,UACAnD,KAAAo0B,YAAAn3B,IAAAa,MAAAkC,KAAA8F,MAAAkV,OAEA,EAEAkoB,SACA,OAAAljC,KAAAsC,KAAA0Y,MAAA3a,MACA,EAEA+iC,SAAA9iC,GACA,OAAAN,KAAAsC,KAAA0Y,MAAA9E,QAAA5V,EACA,EAEA2iC,QAAAtgC,EAAAgd,EAAArf,GACA,MAAA2lB,EAAAhpB,IAAAsI,MAAAvF,KAAAsC,KAAA0Y,YAEAnd,IAAAyC,EACA2lB,EAAA1iB,OAAAZ,EAAAgd,EAAArf,GAEA2lB,EAAA1iB,OAAAZ,EAAAgd,GAGA3f,KAAAo0B,YAAAnO,EACA,EAEAwd,WACA,MAAAxd,EAAAhpB,IAAAsI,MAAAvF,KAAAsC,KAAA0Y,OACAiL,EAAAud,UACAxjC,KAAAo0B,YAAAnO,EACA,EAEA0d,QACA,MAAA1d,EAAAhpB,IAAAsI,MAAAvF,KAAAsC,KAAA0Y,OACAiL,EAAAyd,OACA1jC,KAAAo0B,YAAAnO,EACA,EAEAmO,YAAAnO,GACAhpB,IAAAuJ,MAAAxG,KAAAsC,KAAA0Y,MAAAiL,KACAjmB,KAAA8C,IAAA,CACAkY,MAAAiL,EACA8c,MAAA9c,EAAA5lB,SAGApD,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAEA,IC7IA/a,IAAAkL,UAAA,QAAA,CAAA,GCAAlL,IAAAkL,UAAA,OAAA,CAEAI,YAAA,CACAjG,KAAA,KACAshC,SAAA,EACAnI,UAAA,MAGAjzB,WAAA,CACAosB,IAAA,CACAryB,KAAAwE,OACA8iB,QAAA,MAGAga,QAAA,CACAthC,KAAAunB,QACAD,SAAA,GAGAia,QAAA,CACAvhC,KAAAunB,QACAD,SAAA,GAGAgS,OAAA,CACAt5B,KAAA7D,OACAmrB,QAAA,CAAA,IAIAphB,QAAA,CACAqV,IAAArG,EAAAssB,GACA,OAAA/jC,KAAAgkC,KAAAvsB,EAAAssB,EACA,EAEAE,OAAAxsB,GACA,OAAAzX,KAAAkkC,QAAAzsB,EACA,GAGA/O,OAAA,CACAwa,MAAApL,MACA0kB,KAAA1kB,MACApC,MAAAoC,OAGAyP,QAAA,EAEAD,KAAA3e,GACA,GAAA3I,KAAA8F,MAAA8uB,KACA50B,KAAA8F,MAAA+9B,SAAA7jC,KAAA8F,MAAAg+B,UACA9jC,KAAAmkC,MAAAnkC,KAAA8F,MAAA8uB,IAAA50B,KAAA8F,MAAAg+B,SAAA/iC,MAAAiY,QAAAtD,YAGA,IACA1V,KAAAokC,MAAApkC,KAAAqkC,OAAA17B,EAAA6vB,aACAx4B,KAAA8F,MAAAg+B,SAAA9jC,KAAAgkC,MACA,CAAA,MAAAjrB,GACAC,QAAAtD,MAAAqD,EACA,CAEA,EAEA6O,UACA5nB,KAAAskC,YAAA,CACA,EAGAjd,iBAAA1e,GACA1L,IAAAqL,cAAA3I,UAAA0nB,iBAAArjB,KAAAhE,KAAA2I,GAEA1L,IAAAgkB,IAAAU,cAAAhZ,GAAAlI,SAAA,EAAAc,OAAAwgB,WAAA9f,YACA8f,GAAA9f,GAAA,SAAAV,GACAvB,KAAAqpB,OAAApnB,GAAAA,IACAjC,KAAA8F,MAAA+1B,OAAAn9B,OAAAkJ,OAAA,CAAA,EAAA5H,KAAA8F,MAAA+1B,OAAA,CAAA9Z,CAAAA,GAAA9f,GAAA,GAEA,GAEA,EAEAkiC,MAAAvI,EAAA9d,GACA,OAAAymB,MAAA3I,GAAA96B,MAAA66B,IACA,IAAAA,EAAA5c,IAAA4c,EAAAf,QAAA,IACA,MAAAjiB,MAAA,uBAAA3Y,KAAAuB,gBAAAo6B,EAAAf,UAAAe,EAAA+C,cAGA,OAAA/C,EAAA3O,MAAA,IACAlsB,MAAAksB,IACAhtB,KAAAokC,MAAApkC,KAAAqkC,OAAArX,GACAlP,GAAA9d,KAAAgkC,MAAA,GAEA,EAEAK,OAAA7pB,IACAxd,OAAA+vB,MAAAA,MAAAtS,MAAAmK,MAAApK,GAGA0pB,QAAAzsB,GACA,IAAAzX,KAAAokC,MAAA,CACA,GAAApkC,KAAA8F,MAAA8uB,IACA,OAAA50B,KAAAmkC,MAAAnkC,KAAA8F,MAAA8uB,KAAA9zB,MAAA,KACAd,KAAAwkC,SAAA/sB,EAAA,IAIA,MAAAkB,MAAA,UACA,CAEA,OAAA3Y,KAAAwkC,SAAA/sB,EACA,EAEAusB,KAAAvsB,EAAAssB,GACA,OAAA/jC,KAAAokC,MAWApkC,KAAAsC,KAAAshC,aACA5qB,QAAAkmB,KAAA,kBAAAl/B,KAAAuB,4CAIAvB,KAAA8C,IAAA,CACA8gC,SAAA,EACAnI,UAAA,OAGAz7B,KAAAgY,cAAA,SAEA/a,IAAAyrB,QACA1P,QAAA0P,MAAA,gBAAA1oB,KAAAuB,mBAAAkW,GACAuB,QAAA4W,KAAA,QAAA5vB,KAAAuB,SAEAvB,KAAAwkC,SAAA/sB,GAAA3W,MAAAwB,IACArF,IAAAyrB,QACA1P,QAAA0P,MAAA,QAAA1oB,KAAAuB,gBAAAe,GACA0W,QAAA8W,QAAA,QAAA9vB,KAAAuB,SAEAvB,KAAA8C,IAAA,CACA8gC,SAAA,EACAthC,KAAAA,IAGAtC,KAAAgY,cAAA,QAEA1V,KACAvB,OAAAgY,IAQA,GAPA/Y,KAAA8C,IAAA,CACA8gC,SAAA,EACAnI,UAAA1iB,GAAAA,EAAA2iB,UAGA17B,KAAAgY,cAAA,SAEA+rB,EACA,MAAAhrB,CACA,KAjDA/Y,KAAA8F,MAAA8uB,IACA50B,KAAAmkC,MAAAnkC,KAAA8F,MAAA8uB,KAAA9zB,MAAA,KACAd,KAAAgkC,KAAAvsB,EAAAssB,EAAA,IACAhjC,MAAAiY,QAAAtD,YAGAsD,QAAAmD,KAAA,QAAAnc,KAAAuB,mBA6CA,EAEAijC,SAAA/sB,GACA,OAAAxa,IAAAgyB,KAAAnR,IAAA9d,KAAAokC,MAAAnnC,IAAAmiB,UAAA,CACAqlB,OAAA/lC,OAAAkJ,OAAA,CAAA,EAAA5H,KAAA8F,MAAA+1B,OAAApkB,IACAzX,MACA,IC1KA/C,IAAAkL,UAAA,SAAA,CAEAI,YAAA,CACA2pB,SAAA,GAGA1pB,WAAA,CACA0pB,QAAA,CACA3vB,KAAAunB,QACAD,SAAA,IAIAphB,QAAA,CACA0tB,QACAn2B,KAAA8F,MAAAosB,SAAA,CACA,EAEAwS,UACA1kC,KAAA8F,MAAAosB,SAAA,CACA,EAEArS,SACA7f,KAAA8F,MAAAosB,SAAAlyB,KAAAsC,KAAA4vB,OACA,GAGAxpB,OAAA,CACAwf,QAAApQ,OAGAyP,QAAA,EAEAD,KAAA3e,GACA3I,KAAA8C,IAAA,UAAA9C,KAAA8F,MAAAosB,QACA,EAEA7H,cAAAvD,GACAA,EAAA3jB,IAAA,aACAnD,KAAA8C,IAAA,UAAA9C,KAAA8F,MAAAosB,SACAj1B,IAAA+e,UAAA,IAAAhc,KAAAgY,cAAA,aAEA,IC1CA/a,IAAAkL,UAAA,YAAA,CAEAK,WAAA,CACAjH,KAAA,CACAgB,KAAAwE,OACA8iB,QAAA,QAGAvnB,KAAA,CACAC,KAAA,CAAAvE,MAAAU,QACAmrB,QAAA,OAIAvC,KAAA3e,GACA3I,KAAA2kC,iBAAA3kC,KAAA2kC,iBAAAle,KAAAzmB,MACAA,KAAAyzB,MAAA9qB,EAAA/I,QAAA,QAEAI,KAAAyzB,OACAzzB,KAAAyzB,MAAAzrB,iBAAA,WAAAhI,KAAA2kC,iBAEA,EAEA/c,UACA5nB,KAAAyzB,OACAzzB,KAAAyzB,MAAAze,oBAAA,WAAAhV,KAAA2kC,iBAEA,EAEAA,iBAAAl0B,GACA,MAAAm0B,EAAAn0B,EAAAm0B,SACAtiC,EAAAtC,KAAA8F,MAAAxD,KAEAtC,KAAA6kC,YAAAD,EAAAtiC,EAAAtC,KAAA8F,MAAAvE,KACA,EAEAsjC,YAAAD,EAAAtiC,EAAAupB,EAAA,IACA,GAAA7tB,MAAAkG,QAAA5B,GACAA,EAAA7B,SAAA,CAAAwB,EAAAU,KACA3C,KAAA6kC,YAAAD,EAAA3iC,EAAA,GAAA4pB,KAAAlpB,KAAA,SAEA,GAAA,iBAAAL,EACA,IAAA,MAAAF,KAAAE,EACAtC,KAAA6kC,YAAAD,EAAAtiC,EAAAF,GAAA,GAAAypB,KAAAzpB,WAGAwiC,EAAApkB,OAAAqL,EAAAvpB,EAEA,IChDArF,IAAA2L,UAAA,OAAA,WAAA,SAAAD,EAAAoX,GACA,MAAAxe,EAAAwe,EAAAgC,SACA+iB,EAAA7nC,IAAAqB,kBAAAsH,KAAArE,GAEAvB,KAAAqpB,OAAAtJ,EAAA9d,OAAAA,IACA,GAAA6iC,EACAn8B,EAAArH,gBAAAC,IAAAU,OACA,CACA,GAAA,UAAAV,GAAA,iBAAAU,EACA,OAAAvD,OAAAkJ,OAAAe,EAAA4P,MAAAtW,GAGA,GAAA,MAAAA,EACA,OAAA0G,EAAAjH,gBAAAH,GAGAoH,EAAAhH,aAAAJ,EAAAU,GAEA,QAAAV,IACA,UAAAoH,EAAAo8B,UAAA,UAAAp8B,EAAAo8B,SACAp8B,EAAAonB,OACA,WAAApnB,EAAAo8B,UAAAp8B,EAAAmY,YACAnY,EAAAmY,WAAAiP,OAGA,IAEA,IC3BA9yB,IAAA2L,UAAA,KAAA,WAAA,SAAAD,EAAAoX,GASA,OARApX,EAAAq8B,QACAr8B,EAAAq8B,MAAA,CACAxc,UAAAxoB,OAIA2I,EAAAq8B,MAAAjlB,EAAAgC,WAAA,EAEA9kB,IAAAiT,cAAAvH,EAAAoX,EAAAgC,UAAA,SAAAtR,GAEAA,EAAAW,gBAAAX,EAAAA,EAAAW,eAOA,OALAnU,IAAA2nB,MAAA7E,EAAA9d,MAAAhF,IAAAmiB,UAAA,CACA+K,OAAA1Z,EAAA6B,MACA8X,eAAA3Z,GACA9H,EAAAq8B,MAAAxc,WAGA,GAAAzI,EAAAzP,UACA,ICpBArT,IAAA2L,UAAA,SAAA,UAAA,SAAAD,EAAAoX,GACA,MAAAklB,EAAAhlC,SAAAilC,cAAA,oBACAhE,EAAAjhC,SAAAipB,yBACA+P,EAAAh8B,IAAAkL,UAAA,eAEAQ,EAAAmY,WAAAuB,aAAA4iB,EAAAt8B,GACAA,EAAAjH,gBAAAqe,EAAAmC,UAEAgf,EAAA1gB,OAAA7X,GAEA,IAAA8X,EAAA,GAEAzgB,KAAAqpB,OAAAtJ,EAAA9d,OAAAsS,IACA,MAAAyG,EAAA/d,IAAA8d,YAAAxG,GAQA,GANAyG,EAAA3a,OAAA,MACA2Y,QAAAmD,KAAA,sDAEAnB,EAAA3a,OAAA,KAGA0f,EAAAzP,UAAA60B,MAWA,GAVA1kB,EAAApgB,OAAA2a,EAAA3a,QAEAogB,EAAAld,OAAAyX,EAAA3a,QAAAI,SAAAghB,GAAAA,EAAA+I,aAGA/J,EAAApgB,QAEAogB,EAAAhgB,SAAA,CAAAghB,EAAA3hB,IAAA2hB,EAAA3e,IAAAkY,EAAAlb,MAGAkb,EAAA3a,OAAAogB,EAAApgB,OAAA,CAEA,MAAA4oB,EAAAhpB,SAAAipB,yBACAoR,EAAA,IAAA76B,IAEAub,EAAA/W,MAAAwc,EAAApgB,QAAAI,SAAAH,IACA,MAAAmhB,EAAA,IAAAwX,EAAAiI,EAAA3G,WAAA,GAAAv6B,KAAAM,GAEA2oB,EAAAtI,YAAAc,EAAA+Y,OAAA,IAGAF,EAAA30B,IAAA8b,GAEAhB,EAAAjd,KAAAie,GACAzhB,KAAAyoB,UAAAhH,EAAA,IAGAwjB,EAAAnkB,WAAA6Z,aAAA1R,EAAAgc,GAEA,IAAA,MAAAxjB,KAAA6Y,EACA7Y,EAAAoG,OAAApG,EAAA+Y,OAAA,IAGAza,EAAAgC,UACA/hB,KAAA8C,IAAAid,EAAAgC,SAAA/G,EAEA,MACA,CACA,MAAAiO,EAAAhpB,SAAAipB,yBACAoR,EAAA,IAAA76B,IAEAghB,EAAAld,OAAA,GAAA9C,SAAAghB,GAAAA,EAAA+I,aAEA,IAAA,MAAAlqB,KAAA0a,EAAA,CACA,MAAAyG,EAAA,IAAAwX,EAAAiI,EAAA3G,WAAA,GAAAv6B,KAAAM,GAEA2oB,EAAAzI,OAAAiB,EAAA+Y,OAAA,IAGAF,EAAA30B,IAAA8b,GAEAhB,EAAAjd,KAAAie,GACAzhB,KAAAyoB,UAAAhH,EACA,CAEAwjB,EAAAnkB,WAAA6Z,aAAA1R,EAAAgc,GAEA,IAAA,MAAAxjB,KAAA6Y,EACA7Y,EAAAoG,OAAApG,EAAA+Y,OAAA,IAGAza,EAAAgC,UACA/hB,KAAA8C,IAAAid,EAAAgC,SAAA/G,EAEA,IAEA,ICxFA/d,IAAA2L,UAAA,QAAA,WAAA,SAAAD,EAAAoX,GACApX,EAAAy8B,WACAz8B,EAAAy8B,SAAA,CACA5c,UAAAxoB,OAIAA,KAAAqpB,OAAAtJ,EAAA9d,OAAA4d,IACAlX,EAAAy8B,SAAArlB,EAAAgC,UAAAlC,EACAlX,EAAA8W,UAAAI,EAAA,MAAA,UAAAE,EAAAgC,SAAA,GAEA,ICXA9kB,IAAA2L,UAAA,OAAA,WAAA,SAAAD,EAAAoX,GACApX,EAAA08B,UAEA18B,EAAA08B,QAAA,CACA7c,UAAAxoB,KACAslC,QAAA,CACAC,QAAA58B,EAAA4P,MAAA8H,iBAAA,WACAmlB,SAAA78B,EAAA4P,MAAAktB,oBAAA,YAEA5E,KAAA,MAGA7gC,KAAAqpB,OAAAtJ,EAAA9d,OAAA4+B,IACAl4B,EAAA08B,QAAAxE,KAAAA,EAEA,MAAAyE,QAAAA,GAAA38B,EAAA08B,QACAE,EAAA1E,EAAA,OAAAyE,EAAAC,QACAC,EAAA3E,EAAA,YAAAyE,EAAAE,SAEA78B,EAAA4P,MAAA+H,YAAA,UAAAilB,EAAAC,EAAA,IAEA,ICrBAvoC,IAAA2L,UAAA,OAAA,WAAA,SAAAD,EAAAoX,GACApX,EAAA+8B,UAEA/8B,EAAA+8B,QAAA,CACAld,UAAAxoB,KACAslC,QAAA,CACAC,QAAA58B,EAAA4P,MAAA8H,iBAAA,WACAmlB,SAAA78B,EAAA4P,MAAAktB,oBAAA,YAEA7E,KAAA,MAGA5gC,KAAAqpB,OAAAtJ,EAAA9d,OAAA2+B,IACAj4B,EAAA+8B,QAAA9E,KAAAA,EAEA,MAAA0E,QAAAA,GAAA38B,EAAA+8B,QACAH,EAAA3E,EAAA0E,EAAAC,QAAA,OACAC,EAAA5E,EAAA0E,EAAAE,SAAA,YAEA78B,EAAA4P,MAAA+H,YAAA,UAAAilB,EAAAC,EAAA,IAEA,ICrBAvoC,IAAA2L,UAAA,OAAA,WAAA,SAAAD,EAAAoX,GACApX,EAAAg9B,UAEAh9B,EAAAg9B,QAAA,CACAnd,UAAAxoB,MAGAA,KAAAqpB,OAAAtJ,EAAA9d,OAAA2jC,IACAj9B,EAAAqY,UAAA,MAAA4kB,EAAA7+B,OAAA6+B,GAAA,EAAA,IAEA,ICVA3oC,IAAA2L,UAAA,OAAA,WAAA,SAAAD,EAAAoX,GACApX,EAAAk9B,UAEAl9B,EAAAk9B,QAAA,CACArd,UAAAxoB,MAGAA,KAAAqpB,OAAAtJ,EAAA9d,OAAA+qB,IACArkB,EAAAm9B,UAAA,MAAA9Y,EAAAjmB,OAAAimB,GAAA,EAAA,IAEA,ICVA/vB,IAAA2L,UAAA,QAAA,WAAA,SAAAD,EAAAoX,GACApX,EAAAo9B,WACAp9B,EAAAo9B,SAAA,CACAvd,UAAAxoB,OAIA,MAAAgmC,EAAAjmB,EAAAzP,UAAA01B,UAAA,YAAA,GAEAhmC,KAAAqpB,OAAAtJ,EAAA9d,OAAAA,IACA0G,EAAAo9B,SAAAhmB,EAAAgC,UAAA9f,EACA,MAAAA,GACA0G,EAAA4P,MAAA+H,YAAAP,EAAAgC,SAAA9f,EAAA+jC,EACA,GAEA,ICfA/oC,IAAA8L,WAAA,SAAA,CAGAk9B,KAAA,SAAAzuB,GACA,OAAAiD,KAAAC,UAAAlD,EACA,EAGA0uB,IAAA,SAAA1uB,GAEA,OADAwB,QAAAktB,IAAA1uB,GACAA,CACA,EAGAsG,IAAA,SAAAsR,EAAA3X,GACA,IAAAmL,EAAA3lB,IAAAmiB,UAAA,CACAqlB,OAAAhtB,GACAzX,MAEA/C,IAAAgyB,KAAAnR,IAAAsR,EAAAxM,EACA,ICpBA3lB,IAAAmM,QAAA,CAEA+8B,QAAAzoB,GACA,MAAAyoB,EAAAnmC,KAAA4kB,MAAAlH,EAAA0R,MACA3X,EAAAzX,KAAA4kB,MAAAlH,EAAAjG,OAEA,OAAAzX,KAAA4kB,MAAAuhB,EAAA,WAAA1rB,KAAAC,UAAAjD,GAAA,IACA,EAEAwtB,QAAAvnB,GACAzgB,IAAAyrB,OACA1P,QAAA0P,MAAAhL,EAAAge,QAEA,EAEA0K,KAAA1oB,GACA,MAAAjU,EAAAzJ,KAAA4kB,MAAAlH,EAAAjU,OAEA,GAAA,iBAAAA,EACA,MAAA,IAAAkP,MAAA,uBAGA,OAAA,IAAA/X,SAAAC,IACAI,WAAAJ,EAAA4I,EAAA,GAEA,EAEAkmB,IAAAjS,IACA,IAAAhE,MAAAoc,cAGA5W,OAAAxB,GACA,IAAA2oB,EAAArmC,KAAA4kB,MAAAlH,EAAA2oB,OACAC,EAAAtmC,KAAA4kB,MAAAlH,EAAA4oB,OACAC,IAAAvmC,KAAA4kB,MAAAlH,EAAA6oB,UAEA,iBAAAF,GAAArc,SAAAqc,KACAA,EAAA,GAGA,iBAAAC,GAAAtc,SAAAsc,KACAA,EAAA,GAGA,IAAAE,EAAAH,EAAA1rB,KAAAuE,UAAAonB,EAAAD,GAMA,OAJAE,GAAA5rB,KAAA8rB,MAAAJ,IAAAA,GAAA1rB,KAAA8rB,MAAAH,IAAAA,IACAE,EAAA7rB,KAAA+rB,MAAAF,IAGAA,CACA,EAEAG,QAAAjpB,GACA,MAAAge,EAAA17B,KAAA4kB,MAAAlH,EAAAge,SAEA,GAAA,iBAAAA,EACA,MAAA,IAAA/iB,MAAA,4BAGA,MAAAzV,EAAAyjC,QAAAjL,GAEA,GAAAx4B,GACA,GAAAwa,EAAA5c,KACA,OAAAd,KAAAqvB,MAAA3R,EAAA5c,MAAAA,MAAA,IAAAoC,SAEA,GAAAwa,EAAAkpB,KACA,OAAA5mC,KAAAqvB,MAAA3R,EAAAkpB,MAAA9lC,MAAA,IAAAoC,IAGA,OAAAA,CACA,EAEA2jC,OAAAnpB,GACA,MAAAge,EAAA17B,KAAA4kB,MAAAlH,EAAAge,SAEA,GAAA,iBAAAA,EACA,MAAA,IAAA/iB,MAAA,2BAGA,OAAAkuB,OAAAnL,EACA,EAEAoL,MAAAppB,GACA,MAAAge,EAAA17B,KAAA4kB,MAAAlH,EAAAge,SAEA,GAAA,iBAAAA,EACA,MAAA,IAAA/iB,MAAA,0BAGA,OAAAmuB,MAAApL,EACA,EAEAnnB,OAAAmJ,GACA,IAAA1C,EAAA/d,IAAAsI,MAAAvF,KAAA4kB,MAAAlH,EAAAnJ,SAEA,IAAAyG,EAAA,OAEA,GAAA,kBAAAA,EACAA,EAAAA,EAAA,CAAA,GAAA,QACA,GAAA,iBAAAA,EACAA,EAAAA,EAAA9D,MAAA,gBACA,GAAA,iBAAA8D,EAAA,CAEA,IADA,IAAAiL,EAAA,GACAnmB,EAAA,EAAAA,EAAAkb,EAAAlb,IACAmmB,EAAAziB,KAAA1D,EAAA,GAEAkb,EAAAiL,CACA,CAEA,GAAA,iBAAAjL,EACA,MAAA,IAAArC,MAAA,kCAGA,MAAAouB,EAAA/mC,KAAA4iB,MACAokB,EAAAhnC,KAAAmvB,OACA,OAAAnvB,KAAAsvB,MAAAtU,GAAA,CAAA/Y,EAAAU,KACA3C,KAAA4iB,MAAA,IAAA3lB,IAAAmiB,UACA1gB,OAAAkJ,OACA,CACAwT,OAAAnZ,EACAkZ,OAAAxY,EACAskC,MAAAtkC,EACAuY,KAAAvY,EACAukC,QAAAvkC,EAAA,EACAwkC,SAAAxkC,EAAA,GAEAV,GAEA8kC,GAGA/mC,KAAAmvB,OAAA,CAAA,EAEAnxB,MAAAkG,QAAAwZ,EAAA0pB,eAAAnlC,aAAAvD,QACAgf,EAAA0pB,aAAA3mC,SAAA4mC,IACArnC,KAAAmvB,OAAAkY,GAAAplC,EAAAolC,EAAA,IAIArnC,KAAAqvB,MAAA3R,EAAAvY,MAAArE,MAAA,KACA,IAAAquB,EAAAnvB,KAAAmvB,OAGA,OAFAnvB,KAAA4iB,MAAAmkB,EACA/mC,KAAAmvB,OAAA6X,EACA7X,CAAA,MAGA,EAEAwR,UAAAjjB,GACA,MAAAxa,IAAAlD,KAAA4kB,MAAAlH,EAAA4pB,IAEA,GAAApkC,GACA,GAAAwa,EAAA5c,KACA,OAAAd,KAAAqvB,MAAA3R,EAAA5c,MAAAA,MAAA,IAAAoC,SAEA,GAAAwa,EAAAkpB,KACA,OAAA5mC,KAAAqvB,MAAA3R,EAAAkpB,MAAA9lC,MAAA,IAAAoC,IAGA,OAAAA,CACA,EAEAqkC,WAAA7pB,GACA,GAAA1f,MAAAkG,QAAAwZ,EAAA6pB,YACA,IAAA,IAAAznC,EAAA,EAAAA,EAAA4d,EAAA6pB,WAAAlnC,OAAAP,IAAA,CACA,MAAA6gC,EAAAjjB,EAAA6pB,WAAAznC,GAEA,GAAAE,KAAA4kB,MAAA+b,EAAA6G,MACA,OAAAxnC,KAAAqvB,MAAAsR,EAAA7/B,KAEA,CAEA,EAEArD,OAAAigB,GACA,MAAAsF,EAAAhjB,KAAA4kB,MAAAlH,EAAAsF,YAEA,GAAAhlB,MAAAkG,QAAAwZ,EAAA+pB,OACA,IAAA,IAAA3nC,EAAA,EAAAA,EAAA4d,EAAA+pB,MAAApnC,OAAAP,IAAA,CACA,MAAAQ,EAAAod,EAAA+pB,MAAA3nC,GAEA,GAAAE,KAAA4kB,MAAAtkB,EAAA2B,QAAA+gB,EACA,OAAAhjB,KAAAqvB,MAAA/uB,EAAA6E,KAEA,CAEA,EAEAsmB,MAAA/N,GACA,GAAAA,EAAAnc,KAAA,CACA,MAAAylC,EAAAhnC,KAAAmvB,OAGA,OAFAnvB,KAAAmvB,OAAA,CAAA,EAEAnvB,KAAAqvB,MAAA3R,EAAAvY,MAAArE,MAAA,KACA,IAAAquB,EAAAnvB,KAAAmvB,OAEA,OADAze,KAAAye,OAAA6X,EACA7X,CAAA,GAEA,CAEA,OAAAnvB,KAAAqvB,MAAA3R,EAAAvY,KACA,EAEAuiC,MAAAhqB,GACA,MAAAiqB,EAAA,IACA,IAAA/mC,SAAAC,IACA,IAAAb,KAAA4kB,MAAAlH,EAAAijB,WAAA,OAAA9/B,IACAb,KAAAqvB,MAAA3R,EAAAvY,MAAArE,KAAA6mC,GAAA7mC,KAAAD,EAAA,IAIA,OAAA8mC,GACA,EAEAC,OAAAlqB,GAcA,MAAAsF,EAAAhjB,KAAA4kB,MAAAlH,EAAAsF,YACA,IAAA,IAAAljB,EAAA,EAAAA,EAAA4d,EAAA+pB,MAAApnC,OAAAP,IACA,GAAAE,KAAA4kB,MAAAlH,EAAA+pB,MAAA3nC,GAAA+nC,QAAA7kB,EACA,OAAAhjB,KAAAqvB,MAAA3R,EAAA+pB,MAAA3nC,GAAAqF,MAGA,GAAAuY,EAAAmM,QACA,OAAA7pB,KAAAqvB,MAAA3R,EAAAmM,QAEA,EAEAie,SAAApqB,GACA,OAAA9c,QAAAC,QAAAb,KAAAqvB,MAAA3R,EAAAqqB,MAAAhnC,OAAA,IACAf,KAAAqvB,MAAA3R,EAAA3c,QAEA,EAEA+c,IAAAJ,GACA,IAAAA,EAAAvU,OACA,MAAA,IAAAwP,MAAA,uBAGA,OAAA3Y,KAAA4kB,MAAAlH,EAAAvU,OACA,EAEA6+B,MAAAtqB,GACA,IAAAA,EAAAuqB,SACA,MAAA,IAAAtvB,MAAA,2BAGA,MAAA0N,EAAArmB,KAAA4kB,MAAAlH,EAAAuqB,UACAj+B,EAAAhK,KAAA4kB,MAAAlH,EAAA1T,MAEA,OAAAhN,OAAAqpB,GAAA3e,MAAA,KAAAsC,EACA,EAEApC,OAAA8V,GACA,OAAA1d,KAAA4kB,MAAAlH,EAAAzb,MACA,EAEAimC,UAAAxqB,GACA,MAAAtb,EAAApC,KAAA4kB,MAAAlH,EAAAtb,KACAH,EAAAjC,KAAA4kB,MAAAlH,EAAAzb,OAEA,GAAA,iBAAAG,EACA,MAAA,IAAAuW,MAAA,mCAKA,OAFA1b,IAAAgC,OAAA6D,IAAAV,EAAAH,GAEAA,CACA,EAEAkmC,WAAAzqB,GACA,MAAAtb,EAAApC,KAAA4kB,MAAAlH,EAAAtb,KACAH,EAAAjC,KAAA4kB,MAAAlH,EAAAzb,OAEA,GAAA,iBAAAG,EACA,MAAA,IAAAuW,MAAA,oCAKA,OAFAyvB,eAAAC,QAAAjmC,EAAAqY,KAAAC,UAAAzY,IAEAA,CACA,EAEAqmC,WAAA5qB,GACA,MAAAtb,EAAApC,KAAA4kB,MAAAlH,EAAAtb,KAEA,GAAA,iBAAAA,EACA,MAAA,IAAAuW,MAAA,oCAGA,OAAA8B,KAAAmK,MAAAwjB,eAAAG,QAAAnmC,GACA,EAEAomC,cAAA9qB,GACA,MAAAtb,EAAApC,KAAA4kB,MAAAlH,EAAAtb,KAEA,GAAA,iBAAAA,EACA,MAAA,IAAAuW,MAAA,uCAKA,OAFAyvB,eAAAK,WAAArmC,IAEA,CACA,EAEAsmC,WAAAhrB,GACA,MAAAtb,EAAApC,KAAA4kB,MAAAlH,EAAAtb,KACAH,EAAAjC,KAAA4kB,MAAAlH,EAAAzb,OAEA,GAAA,iBAAAG,EACA,MAAA,IAAAuW,MAAA,oCAKA,OAFAgwB,aAAAN,QAAAjmC,EAAAqY,KAAAC,UAAAzY,IAEAA,CACA,EAEA2mC,WAAAlrB,GACA,MAAAtb,EAAApC,KAAA4kB,MAAAlH,EAAAtb,KAEA,GAAA,iBAAAA,EACA,MAAA,IAAAuW,MAAA,oCAGA,MAAA1W,EAAA0mC,aAAAJ,QAAAnmC,GAEA,OAAA,MAAAH,EACA,KAGAwY,KAAAmK,MAAA3iB,EACA,EAEA4mC,cAAAnrB,GACA,MAAAtb,EAAApC,KAAA4kB,MAAAlH,EAAAtb,KAEA,GAAA,iBAAAA,EACA,MAAA,IAAAuW,MAAA,uCAKA,OAFAgwB,aAAAF,WAAArmC,IAEA,CACA,EAEAmiC,MAAA7mB,GACA,IAAAke,EAAA57B,KAAA4kB,MAAAlH,EAAAke,KACApV,EAAAxmB,KAAA4kB,MAAAlH,EAAA8I,QACAjW,EAAAvQ,KAAA4kB,MAAAlH,EAAAnN,SACAurB,EAAA97B,KAAA4kB,MAAAlH,EAAAoe,UACAx5B,EAAAtC,KAAA4kB,MAAAlH,EAAApb,MACAu5B,EAAA77B,KAAA4kB,MAAAlH,EAAAme,QACAd,EAAA/6B,KAAA4kB,MAAAlH,EAAAqd,SACAmB,EAAAl8B,KAAA4kB,MAAAlH,EAAAwe,aACA4M,EAAA,KAEA,GAAA,iBAAAlN,EACA,MAAA,IAAAjjB,MAAA,sBAAAijB,GAoBA,GAjBA,CAAA,MAAA,OAAA,MAAA,UAAAtqB,SAAAkV,KAEAA,EAAA,OAGA,CAAA,OAAA,OAAA,QAAAlV,SAAAwqB,KACAA,EAAA,QAGA,iBAAAvrB,IACAA,EAAA,GAGAwqB,IACAA,EAAA,CAAA,GAGA,iBAAAc,EACA,IAAA,IAAApkB,KAAAokB,EACAA,EAAAh6B,eAAA4V,IAAA,MAAAokB,EAAApkB,KACAmkB,KACA,GAAAA,EAAA1lB,QAAA,KAAA,IAAA,KACAka,mBAAA3Y,GACA,IACA2Y,mBAAAyL,EAAApkB,KAKA,GAAA,OAAA+O,EACA,GAAA,QAAAsV,EACAf,EAAA,kBACAA,EAAA,gBAAA,oBAEA+N,EAAAxmC,EAAAV,gBACA,GAAA,QAAAk6B,EACAf,EAAA,kBACAA,EAAA,gBAAA,oBAEA+N,EAAAruB,KAAAC,UAAApY,QAEA,GAAA,QAAAkkB,GAGA,GAFAsiB,EAAA,IAAA/K,SAEA,iBAAAz7B,IAAAtE,MAAAkG,QAAA5B,GACA,IAAA,IAAAF,KAAAE,EACA,GAAAA,EAAAT,eAAAO,GAAA,CACA,IAAAH,EAAAK,EAAAF,GAEA,GAAApE,MAAAkG,QAAAjC,GAIA,IAAA,IAAAnC,IAHA,QAAA8F,KAAAxD,KACAA,GAAA,MAEAH,EACAA,EAAAJ,eAAA/B,IACAgpC,EAAAtoB,OAAApe,EAAAH,EAAAnC,SAIAgpC,EAAAhmC,IAAAV,EAAAH,EAEA,OAGAK,IACAy4B,EAAA,kBACAA,EAAA,gBAAA,oBAEA+N,EAAAxmC,EAAAV,YAKA,OAAA,IAAAhB,SAAA,CAAAC,EAAAwU,KACA,IAAA0zB,EAAA,IAAAvL,eAoCA,IAAA,IAAAU,KAlCA6K,EAAAtzB,QAAAJ,EACA0zB,EAAAC,QAAA3zB,EACA0zB,EAAAE,UAAA5zB,EACA0zB,EAAAvzB,OAAA,WACA,IAAAmmB,EAAAoN,EAAAvK,aACAzD,EAYAgO,EAAAnK,wBAXA/Z,OAAA3N,MAAA,WAEAK,QAAA,SAAAwjB,EAAAzN,GACA,IAAAtE,EAAAsE,EAAApW,MAAA,MACAgnB,EAAAlV,EAAAhY,QACA/O,EAAA+mB,EAAAiC,KAAA,MAIA,OAFA8P,EAAAmD,EAAAnmB,eAAA9V,EAEA84B,CACA,GAAA,CAAA,GAGA,qBAAAn1B,KAAAm1B,EAAA,mBACAY,EAAAlhB,KAAAmK,MAAA+W,IAGA96B,EAAA,CACA+5B,OAAAmO,EAAAnO,OACAG,QAAAA,EACAz4B,KAAAq5B,GAEA,EAEAoN,EAAA/K,KAAAxX,EAAAoV,GAEAmN,EAAAx4B,QAAA,IAAAA,EAEAwqB,EACAA,EAAAl5B,eAAAq8B,IACA6K,EAAA9K,iBAAAC,EAAAnD,EAAAmD,IAIAhC,IACA6M,EAAA5K,iBAAA,GAGA4K,EAAAzK,KAAAwK,EAAA,GAEA,IAIA7rC,IAAAsC,UAAA,SAAAtC,IAAAsC,UAAA,OACAtC,IAAAsC,UAAA,IAAAtC,IAAAsC,UAAA,MACAtC,IAAAsC,UAAA,YAAAtC,IAAAsC,UAAA,MACAtC,IAAAsC,UAAA,cAAAtC,IAAAsC,UAAA,MCtfAtC,IAAAmM,QAAA,CASA,yBAAA,SAAAsU,GACA,IAAAwrB,EAAAlpC,KAAA4kB,MAAAlH,EAAAwrB,YACAvjC,EAAA+X,EAAA/X,IACAwjC,IAAAnpC,KAAA4kB,MAAAlH,EAAAyrB,WAEA,IAAAD,EAAA7oC,OAAA,MAAA,GAIA,IAFA,IAAA8uB,EAAA,GAEArvB,EAAA,EAAAmb,EAAAiuB,EAAA7oC,OAAAP,EAAAmb,EAAAnb,IAAA,CACA,IAAAspC,EAAAnsC,IAAAsI,MAAA2jC,EAAAppC,IAEA,IAAA,IAAAupC,KAAA1jC,EACA,GAAAA,EAAA9D,eAAAwnC,GAAA,CACA,IAAAzmB,EAAA,IAAA3lB,IAAAmiB,UAAAgqB,EAAAppC,KAAA4iB,QAEAumB,GAAA,MAAAC,EAAAC,MACAD,EAAAC,GAAApsC,IAAA2nB,MAAAjf,EAAA0jC,GAAAzmB,GAEA,CAGAuM,EAAA3rB,KAAA4lC,EACA,CAEA,OAAAja,CACA,EAUA,4BAAA,SAAAzR,GACA,IAAAwrB,EAAAlpC,KAAA4kB,MAAAlH,EAAAwrB,YACAI,EAAAtpC,KAAA4kB,MAAAlH,EAAA4rB,SACAC,IAAAvpC,KAAA4kB,MAAAlH,EAAA6rB,MAEA,IAAAL,EAAA7oC,OAAA,MAAA,GAIA,IAFA,IAAA8uB,EAAA,GAEArvB,EAAA,EAAAmb,EAAAiuB,EAAA7oC,OAAAP,EAAAmb,EAAAnb,IAAA,CACA,IAAAspC,EAAAF,EAAAppC,GACA0pC,EAAA,CAAA,EAEA,IAAA,IAAAH,KAAAD,EACAA,EAAAvnC,eAAAwnC,KACAC,EAAAh4B,SAAA+3B,GACAE,IACAC,EAAAH,GAAApsC,IAAAsI,MAAA6jC,EAAAC,KAEAE,IACAC,EAAAH,GAAApsC,IAAAsI,MAAA6jC,EAAAC,MAKAla,EAAA3rB,KAAAgmC,EACA,CAEA,OAAAra,CACA,EASA,4BAAA,SAAAzR,GACA,IAAAwrB,EAAAlpC,KAAA4kB,MAAAlH,EAAAwrB,YACAO,EAAAzpC,KAAA4kB,MAAAlH,EAAA+rB,QAEA,IAAAP,EAAA7oC,OAAA,MAAA,GAIA,IAFA,IAAA8uB,EAAA,GAEArvB,EAAA,EAAAmb,EAAAiuB,EAAA7oC,OAAAP,EAAAmb,EAAAnb,IAAA,CACA,IAAAspC,EAAAF,EAAAppC,GACA0pC,EAAA,CAAA,EAEA,IAAA,IAAAH,KAAAD,EACAA,EAAAvnC,eAAAwnC,KACAG,EAAAC,EAAAJ,IAAAA,GAAApsC,IAAAsI,MAAA6jC,EAAAC,KAIAla,EAAA3rB,KAAAgmC,EACA,CAEA,OAAAra,CACA,EASA,uBAAA,SAAAzR,GACA,IAAAwrB,EAAAlpC,KAAA4kB,MAAAlH,EAAAwrB,YACAI,EAAAtpC,KAAA4kB,MAAAlH,EAAA4rB,SAEA,IAAAJ,EAAA7oC,OAAA,MAAA,GAKA,IAHA,IAAA8uB,EAAA,GACAua,EAAA,CAAA,EAEA5pC,EAAA,EAAAmb,EAAAquB,EAAAjpC,OAAAP,EAAAmb,EAAAnb,IACA4pC,EAAAJ,EAAAxpC,IAAA,KAGA,IAAAA,EAAA,EAAAmb,EAAAiuB,EAAA7oC,OAAAP,EAAAmb,EAAAnb,IAAA,CACA,IAAAspC,EAAAnsC,IAAAsI,MAAA2jC,EAAAppC,IAEA,IAAA,IAAAupC,KAAAK,EACAA,EAAA7nC,eAAAwnC,KACA,MAAAD,EAAAC,GACAD,EAAAC,GAAAK,EAAAL,GAEAK,EAAAL,GAAAD,EAAAC,IAKAla,EAAA3rB,KAAA4lC,EACA,CAEA,OAAAja,CACA,EASA,sBAAA,SAAAzR,GACA,IAAAwrB,EAAAlpC,KAAA4kB,MAAAlH,EAAAwrB,YACAS,EAAA3pC,KAAA4kB,MAAAlH,EAAAisB,MAEA,OAAA1sC,IAAAsI,MAAA2jC,GAAA3c,OAAAtvB,IAAAsI,MAAAokC,GACA,EAWA,4BAAA,SAAAjsB,GAQA,IAPA,IAAAwrB,EAAAlpC,KAAA4kB,MAAAlH,EAAAwrB,YACAG,EAAArpC,KAAA4kB,MAAAlH,EAAA2rB,QACAO,EAAA5pC,KAAA4kB,MAAAlH,EAAAksB,SACAC,IAAA7pC,KAAA4kB,MAAAlH,EAAAmsB,MAEA1a,EAAA,GAEArvB,EAAA,EAAAmb,EAAAiuB,EAAA7oC,OAAAP,EAAAmb,EAAAnb,IAAA,CACA,IAAAspC,EAAAnsC,IAAAsI,MAAA2jC,EAAAppC,IACAspC,EAAAC,GAAAQ,EAAA5uB,EAAA2uB,EAAA9pC,EAAA8pC,EAAA9pC,EACAqvB,EAAA3rB,KAAA4lC,EACA,CAEA,OAAAja,CACA,EAWA,kBAAA,SAAAzR,GAQA,IAPA,IAAAosB,EAAA9pC,KAAA4kB,MAAAlH,EAAAosB,aACAC,EAAA/pC,KAAA4kB,MAAAlH,EAAAqsB,aACAhqC,EAAAC,KAAA4kB,MAAAlH,EAAA3d,SACAiqC,IAAAhqC,KAAA4kB,MAAAlH,EAAAssB,UAEA7a,EAAA,GAEArvB,EAAA,EAAAmb,EAAA6uB,EAAAzpC,OAAAP,EAAAmb,EAAAnb,IAAA,CAGA,IAFA,IAAAspC,EAAAnsC,IAAAsI,MAAAukC,EAAAhqC,IAEA4gB,EAAA,EAAAupB,EAAAF,EAAA1pC,OAAAqgB,EAAAupB,EAAAvpB,IAAA,CACA,IAAAwpB,EAAAH,EAAArpB,GACAypB,GAAA,EAEA,IAAA,IAAApzB,KAAAhX,EACA,GAAAA,EAAA8B,eAAAkV,GACA,GAAAqyB,EAAAryB,IAAAmzB,EAAAnqC,EAAAgX,KAEA,GADAozB,GAAA,GACAH,EAAA,WACA,GAAAA,EAAA,CACAG,GAAA,EACA,KACA,CAIA,GAAAA,EAAA,CACA,IAAA,IAAAd,KAAAa,EACAA,EAAAroC,eAAAwnC,KAGAD,EAAAC,GAAApsC,IAAAsI,MAAA2kC,EAAAb,KAGA,KACA,CACA,CAEAla,EAAA3rB,KAAA4lC,EACA,CAEA,OAAAja,CACA,EAQA,wBAAA,SAAAzR,GAOA,IANA,IAAAwrB,EAAAlpC,KAAA4kB,MAAAlH,EAAAwrB,YAEAI,EAAA,GACAna,EAAA,GAGArvB,EAAA,EAAAmb,EAAAiuB,EAAA7oC,OAAAP,EAAAmb,EAAAnb,IACA,IAAA,IAAAupC,KAAAH,EAAAppC,GACAopC,EAAAppC,GAAA+B,eAAAwnC,KACA,GAAAC,EAAApzB,QAAAmzB,IACAC,EAAA9lC,KAAA6lC,GAMA,IAAAvpC,EAAA,EAAAmb,EAAAiuB,EAAA7oC,OAAAP,EAAAmb,EAAAnb,IAAA,CAGA,IAFA,IAAAspC,EAAA,CAAA,EAEA1oB,EAAA,EAAAupB,EAAAX,EAAAjpC,OAAAqgB,EAAAupB,EAAAvpB,IAAA,CACA2oB,EAAAC,EAAA5oB,GAAA,IACAze,EAAAhF,IAAAsI,MAAA2jC,EAAAG,IACAD,EAAAC,GAAA,MAAApnC,EAAAA,EAAA,IACA,CAEAktB,EAAA3rB,KAAA4lC,EACA,CAEA,OAAAja,CACA,ICpRAlyB,IAAAmM,QAAA,CAEA,cAAA,SAAAsU,GACA1E,QAAAktB,IAAAlmC,KAAA4kB,MAAAlH,EAAAge,SACA,EAEA,eAAA,SAAAhe,GACA1E,QAAAkmB,KAAAl/B,KAAA4kB,MAAAlH,EAAAge,SACA,EAEA,eAAA,SAAAhe,GACA1E,QAAAmD,KAAAnc,KAAA4kB,MAAAlH,EAAAge,SACA,EAEA,gBAAA,SAAAhe,GACA1E,QAAAtD,MAAA1V,KAAA4kB,MAAAlH,EAAAge,SACA,EAEA,gBAAA,SAAAhe,GACA1E,QAAA+pB,MAAA/iC,KAAA4kB,MAAAlH,EAAA0sB,OACA,EAEA,eAAA,SAAA1sB,GACA1E,QAAA4W,KAAA5vB,KAAA4kB,MAAAlH,EAAA0sB,OACA,EAEA,kBAAA,SAAA1sB,GACA1E,QAAA8W,QAAA9vB,KAAA4kB,MAAAlH,EAAA0sB,OACA,EAEA,gBAAA,SAAA1sB,GACA1E,QAAAyS,OACA,EAEA,mBAAA,SAAA/N,GACA1E,QAAAqxB,UACA,EAEA,gBAAA,SAAA3sB,GACA1E,QAAApW,OACA","file":"dmxAppConnect.js","sourcesContent":["window.dmx = {\r\n // Versions\r\n version: '2.0.19',\r\n versions: {},\r\n\r\n // Configuration Options\r\n config: {\r\n mapping: {\r\n 'form': 'form',\r\n 'button, input[type=button], input[type=submit], input[type=reset]': 'button',\r\n 'input[type=radio]': 'radio',\r\n 'input[type=checkbox]': 'checkbox',\r\n 'input[type=file][multiple]': 'input-file-multiple',\r\n 'input[type=file]': 'input-file',\r\n 'input': 'input',\r\n 'textarea': 'textarea',\r\n 'select[multiple]': 'select-multiple',\r\n 'select': 'select',\r\n '.checkbox-group': 'checkbox-group',\r\n '.radio-group': 'radio-group'\r\n },\r\n },\r\n\r\n noop: () => {},\r\n isset: (v) => v !== undefined,\r\n array: (a) => a != null ? Array.from(a) : [],\r\n\r\n // Global Regexp\r\n reIgnoreElement: /^(script|style)$/i,\r\n rePrefixed: /^dmx-/i,\r\n reExpression: /\\{\\{(.+?)\\}\\}/,\r\n reExpressionReplace: /\\{\\{(.+?)\\}\\}/g,\r\n reToggleAttribute: /^(checked|selected|disabled|required|hidden|async|autofocus|autoplay|default|defer|multiple|muted|novalidate|open|readonly|reversed|scoped)$/i,\r\n reDashAlpha: /-([a-z])/g,\r\n reUppercase: /[A-Z]/g,\r\n \r\n // Internal collections for registering components etc.\r\n __components: Object.create(null),\r\n __attributes: {\r\n before: Object.create(null),\r\n mounted: Object.create(null),\r\n },\r\n __formatters: {\r\n boolean: Object.create(null),\r\n global: Object.create(null),\r\n string: Object.create(null),\r\n number: Object.create(null),\r\n object: Object.create(null),\r\n array: Object.create(null),\r\n any: Object.create(null),\r\n },\r\n __adapters: Object.create(null),\r\n __actions: Object.create(null),\r\n __startup: new Set(),\r\n};\r\n","// Polyfills for older browsers\r\n// IE is not supported\r\n\r\n// https://caniuse.com/element-closest\r\nif (window.Element && !('closest' in Element.prototype)) {\r\n Element.prototype.closest = function (s) {\r\n let matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i,\r\n el = this;\r\n do {\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== el) {};\r\n } while ((i < 0) && (el = el.parentElement));\r\n return el;\r\n };\r\n}\r\n\r\n// https://caniuse.com/mdn-api_nodelist_foreach\r\nif (window.NodeList && !('forEach' in NodeList.prototype)) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n}\r\n\r\n// https://caniuse.com/mdn-api_queuemicrotask\r\nif (typeof window.queueMicrotask !== 'function') {\r\n window.queueMicrotask = function (callback) {\r\n Promise.resolve().then(callback).catch(e => setTimeout(() => { throw e }));\r\n }\r\n}\r\n\r\n// https://caniuse.com/mdn-api_node_isconnected\r\nif (window.Node && !('isConnected' in Node.prototype)) {\r\n Object.defineProperty(Node.prototype, 'isConnected', {\r\n get: function () { return document.contains(this) }\r\n });\r\n}\r\n\r\n// https://caniuse.com/mdn-api_element_toggleattribute\r\nif (window.Element && !('toggleAttribute' in Element.prototype)) {\r\n Element.prototype.toggleAttribute = function (name, force) {\r\n if (this.hasAttribute(name)) {\r\n if (force !== true) this.removeAttribute(name);\r\n } else {\r\n if (force !== false) this.setAttribute(name, '');\r\n }\r\n }\r\n}","(function() {\r\n\r\n // unsupported types: ImageBitmap\r\n\r\n var LARGE_ARRAY_SIZE = 200;\r\n\r\n var toString = Object.prototype.toString;\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reFlags = /\\w*$/;\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var assocIndexOf = function(array, key) {\r\n var length = array.length;\r\n while (length--) {\r\n if (eq(array[length][0], key)) {\r\n return length;\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n var isKeyable = function(value) {\r\n var type = typeof value;\r\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\r\n ? (value !== '__proto__')\r\n : (value === null);\r\n };\r\n\r\n var getMapData = function(data, key) {\r\n return isKeyable(key)\r\n ? data[typeof key == 'string' ? 'string' : 'hash']\r\n : data.map;\r\n };\r\n\r\n var Hash = function(entries) {\r\n var index = -1,\r\n length = entries == null ? 0 : entries.length;\r\n\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n }\r\n\r\n Hash.prototype = {\r\n clear: function() {\r\n this.__data__ = Object.create(null);\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var result = this.has(key) && delete this.__data__[key];\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n var result = this.__data__[key];\r\n return result === HASH_UNDEFINED ? undefined : result;\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__[key] !== undefined;\r\n },\r\n\r\n set: function(key, value) {\r\n this.size += this.has(key) ? 0 : 1;\r\n this.__data__[key] = value === undefined ? HASH_UNDEFINED : value;\r\n return this;\r\n }\r\n }\r\n\r\n var ListCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n ListCache.prototype = {\r\n clear: function() {\r\n this.__data__ = [];\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n return false;\r\n }\r\n var lastIndex = data.length - 1;\r\n if (index == lastIndex) {\r\n data.pop();\r\n } else {\r\n data.splice(index, 1);\r\n }\r\n --this.size;\r\n return true;\r\n },\r\n\r\n get: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n return index < 0 ? undefined : data[index][1];\r\n },\r\n\r\n has: function(key) {\r\n return assocIndexOf(this.__data__, key) > -1;\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n ++this.size;\r\n data.push([key, value]);\r\n } else {\r\n data[index][1] = value;\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n var MapCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n MapCache.prototype = {\r\n clear: function() {\r\n this.size = 0;\r\n this.__data__ = {\r\n 'hash': new Hash(),\r\n 'map': new Map(),\r\n 'string': new Hash()\r\n };\r\n },\r\n\r\n delete: function(key) {\r\n var result = getMapData(this.__data__, key)['delete'](key);\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return getMapData(this.__data__, key).get(key);\r\n },\r\n\r\n has: function(key) {\r\n return getMapData(this.__data__, key).has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = getMapData(this.__data__, key);\r\n var size = data.size;\r\n data.set(key, value);\r\n this.size += data.size == size ? 0 : 1;\r\n return this;\r\n }\r\n };\r\n\r\n var Stack = function(entries) {\r\n var data = this.__data__ = new ListCache(entries);\r\n this.size = data.size;\r\n };\r\n\r\n Stack.prototype = {\r\n clear: function() {\r\n this.__data__ = new ListCache();\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var result = data['delete'](key);\r\n this.size = data.size;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return this.__data__.get(key);\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__.has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n if (data instanceof ListCache) {\r\n var pairs = data.__data__;\r\n if (pairs.length < LARGE_ARRAY_SIZE - 1) {\r\n pairs.push([key, value]);\r\n this.size = ++data.size;\r\n return this;\r\n }\r\n data = this.__data__ = new MapCache(pairs);\r\n }\r\n data.set(key, value);\r\n this.size = data.size;\r\n return this;\r\n }\r\n };\r\n\r\n var arrayEach = function(array, iteratee) {\r\n var index = -1;\r\n var length = array.length;\r\n while (++index < length) {\r\n if (iteratee(array[index], index, array) === false) {\r\n break;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isArray = function(value) {\r\n return Array.isArray(value);\r\n };\r\n\r\n var isObject = function(value) {\r\n return value != null && typeof value == 'object'\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var assignValue = function(object, key, value) {\r\n // Prototype polution protection\r\n if (key == '__proto__') return;\r\n\r\n var objValue = object[key];\r\n\r\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value))) {\r\n //if (value !== 0 || (1 / value) === (1 / objValue)) {\r\n object[key] = value;\r\n //}\r\n } else if (value === undefined && !(key in object)) {\r\n object[key] = value;\r\n }\r\n };\r\n\r\n var cloneArrayBuffer = function(arrayBuffer) {\r\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\r\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\r\n return result;\r\n };\r\n\r\n var cloneDataView = function(dataView) {\r\n var buffer = cloneArrayBuffer(dataView.buffer);\r\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\r\n };\r\n\r\n var cloneTypedArray = function(typedArray) {\r\n var buffer = cloneArrayBuffer(typedArray.buffer);\r\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\r\n };\r\n\r\n var cloneRegExp = function(regexp) {\r\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\r\n result.lastIndex = regexp.lastIndex;\r\n return result;\r\n };\r\n\r\n var cloneImageData = function(imageData) {\r\n var data = cloneTypedArray(imageData.data);\r\n return new imageData.constructor(data, imageData.width, imageData.height);\r\n }\r\n\r\n var initArray = function(array) {\r\n return new array.constructor(array.length);\r\n };\r\n\r\n var initType = function(object, type) {\r\n var Ctor = object.constructor;\r\n\r\n switch (type) {\r\n case 'ArrayBuffer':\r\n return cloneArrayBuffer();\r\n \r\n case 'Boolean':\r\n case 'Date':\r\n return new Ctor(+object);\r\n\r\n case 'DataView':\r\n return cloneDataView(object);\r\n\r\n case 'Float32Array':\r\n case 'Float64Array':\r\n case 'Int8Array':\r\n case 'Int16Array':\r\n case 'Int32Array':\r\n case 'Uint8Array':\r\n case 'Uint8ClampedArray':\r\n case 'Uint16Array':\r\n case 'Uint32Array':\r\n return cloneTypedArray(object);\r\n\r\n case 'Map':\r\n case 'Set':\r\n return new Ctor();\r\n\r\n case 'Number':\r\n case 'String':\r\n return new Ctor(object);\r\n\r\n case 'RegExp':\r\n return cloneRegExp(object);\r\n\r\n case 'ImageData':\r\n return cloneImageData(object);\r\n }\r\n };\r\n\r\n var clone = function(value, key, object, stack) {\r\n var result;\r\n\r\n if (!isObject(value)) {\r\n return value;\r\n }\r\n \r\n var type = getType(value);\r\n\r\n if (isArray(value)) {\r\n result = initArray(value);\r\n } else {\r\n if (type == 'Object') {\r\n result = {};\r\n } else {\r\n result = initType(value, type);\r\n }\r\n } \r\n \r\n stack = stack || new Stack();\r\n\r\n var stacked = stack.get(value);\r\n if (stacked) {\r\n return stacked;\r\n }\r\n stack.set(value, result);\r\n\r\n if (type == 'Map') {\r\n value.forEach(function(subValue, key) {\r\n result.set(key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (type == 'Set') {\r\n value.forEach(function(subValue) {\r\n result.add(clone(subValue, subValue, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (isTypedArray(value)) {\r\n return result;\r\n }\r\n\r\n var props = isArray(value) ? undefined : Object.keys(Object(value));\r\n arrayEach(props || value, function(subValue, key) {\r\n if (props) {\r\n key = subValue;\r\n subValue = value[key];\r\n }\r\n assignValue(result, key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n };\r\n\r\n dmx.clone = clone;\r\n\r\n})();","(function() {\r\n\r\n // TODO: ImageData compare\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isObject = function(value) {\r\n return typeof value === 'object' && value !== null;\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var mapToArray = function(map) {\r\n var index = -1;\r\n var result = new Array(map.size);\r\n map.forEach(function(value, key) {\r\n result[++index] = [key, value];\r\n });\r\n return result;\r\n };\r\n\r\n var setToArray = function(set) {\r\n var index = -1;\r\n var result = new Array(set.size);\r\n set.forEach(function(value) {\r\n result[++index] = value;\r\n });\r\n return result;\r\n }\r\n\r\n var equalByType = function(object, other, type) {\r\n switch (type) {\r\n case 'DataView':\r\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\r\n return false;\r\n }\r\n object = object.buffer;\r\n other = other.buffer;\r\n\r\n case 'ArrayBuffer':\r\n if (object.byteLength != other.byteLength || !equal(new Uint8Array(object), new Uint8Array(other))) {\r\n return false;\r\n }\r\n return true;\r\n\r\n case 'Boolean':\r\n case 'Date':\r\n case 'Number':\r\n return eq(+object, +other);\r\n\r\n case 'RegExp':\r\n case 'String':\r\n return object == String(other);\r\n\r\n case 'Map':\r\n case 'Set':\r\n if (object.size != other.size) return false;\r\n return equalArrays(Array.from(object), Array.from(other));\r\n }\r\n };\r\n\r\n var equalArrays = function(array, other) {\r\n var arrLength = array.length;\r\n var othLength = other.length;\r\n\r\n if (arrLength != othLength) {\r\n return false;\r\n }\r\n\r\n var index = -1;\r\n\r\n while (++index < arrLength) {\r\n var arrValue = array[index];\r\n var othValue = other[index];\r\n\r\n if (!(arrValue === othValue || equal(arrValue, othValue))) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n var equalObjects = function(object, other) {\r\n var objProps = Object.keys(object);\r\n var objLength = objProps.length;\r\n var othProps = Object.keys(other);\r\n var othLength = othProps.length;\r\n\r\n if (objLength != othLength) {\r\n return false;\r\n }\r\n\r\n var key, index = objLength;\r\n \r\n while (index--) {\r\n key = objProps[index];\r\n if (!hasOwnProperty.call(other, key)) {\r\n return false;\r\n }\r\n }\r\n\r\n var result = true;\r\n\r\n while (++index < objLength) {\r\n key = objProps[index];\r\n var objValue = object[key];\r\n var othValue = other[key];\r\n\r\n if (!(objValue === othValue || equal(objValue, othValue))) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n\r\n if (result) {\r\n var objCtor = object.constructor;\r\n var othCtor = other.constructor;\r\n\r\n if (objCtor != othCtor &&\r\n ('constructor' in object && 'constructor' in other) &&\r\n !(typeof objCtor === 'function' && objCtor instanceof objCtor &&\r\n typeof othCtor === 'function' && othCtor instanceof othCtor)) {\r\n result = false;\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var equalDeep = function(object, other) {\r\n var objIsArr = Array.isArray(object);\r\n var othIsArr = Array.isArray(other);\r\n var objType = objIsArr ? 'Array' : getType(object);\r\n var othType = othIsArr ? 'Array' : getType(other);\r\n var objIsObj = objType == 'Object';\r\n var othIsObj = othType == 'Object';\r\n var isSameType = objType == othType;\r\n\r\n if (isSameType && !objIsObj) {\r\n return (objIsArr || isTypedArray(object))\r\n ? equalArrays(object, other)\r\n : equalByType(object, other, objType);\r\n }\r\n\r\n if (!isSameType) {\r\n return false;\r\n }\r\n\r\n return equalObjects(object, other);\r\n };\r\n\r\n var equal = function(value, other) {\r\n if (value === other) {\r\n return true;\r\n }\r\n if (value == null || other == null || (!isObject(value) && !isObject(other))) {\r\n return value !== value && other !== other;\r\n }\r\n return equalDeep(value, other);\r\n };\r\n\r\n dmx.equal = equal;\r\n\r\n})();","// Create Class\r\ndmx.createClass = (proto, parent) => {\r\n const Cls = function () {\r\n if (proto.constructor) {\r\n proto.constructor.apply(this, arguments);\r\n }\r\n };\r\n\r\n if (parent && parent.prototype) {\r\n Cls.prototype = Object.create(parent.prototype);\r\n }\r\n\r\n Object.assign(Cls.prototype, proto);\r\n\r\n Cls.prototype.constructor = Cls;\r\n\r\n return Cls;\r\n};\r\n\r\ndmx.ready = (fn) => {\r\n if (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', () => { fn() }, { once: true });\r\n } else {\r\n fn();\r\n }\r\n};\r\n\r\n// Config\r\ndmx.Config = (config) => {\r\n Object.assign(dmx.config, config)\r\n};\r\n\r\n// Create/get component\r\ndmx.Component = (name, proto) => {\r\n if (proto) {\r\n const parentComponent = proto.extends ? dmx.Component(proto.extends) : dmx.BaseComponent;\r\n \r\n if (typeof proto.initialData != 'function') {\r\n proto.initialData = Object.assign({}, parentComponent.prototype.initialData, proto.initialData);\r\n }\r\n proto.attributes = Object.assign({}, parentComponent.prototype.attributes, proto.attributes);\r\n proto.methods = Object.assign({}, parentComponent.prototype.methods, proto.methods);\r\n proto.events = Object.assign({}, parentComponent.prototype.events, proto.events);\r\n\r\n if (!proto.hasOwnProperty('constructor')) {\r\n proto.constructor = function(node, parent) {\r\n parentComponent.call(this, node, parent);\r\n }\r\n }\r\n\r\n proto.type = name;\r\n\r\n const Component = dmx.createClass(proto, parentComponent);\r\n Component.extends = proto.extends;\r\n\r\n dmx.__components[name] = Component;\r\n }\r\n\r\n return dmx.__components[name];\r\n};\r\n\r\n// Create attribute\r\ndmx.Attribute = (name, hook, fn) => {\r\n dmx.__attributes[hook][name] = fn;\r\n};\r\n\r\n// Create/get formatter(s)\r\ndmx.Formatter = (type, name, fn) => {\r\n dmx.__formatters[type][name] = fn;\r\n}\r\ndmx.Formatters = (type, formatters) => {\r\n for (const name in formatters) {\r\n dmx.Formatter(type, name, formatters[name]);\r\n }\r\n};\r\n\r\n// Create/get adapter\r\ndmx.Adapter = (type, name, fn) => {\r\n if (fn) dmx.__adapters[type][name] = fn;\r\n return dmx.__adapters[type][name];\r\n};\r\n\r\n// Create action(s)\r\ndmx.Action = (name, action) => {\r\n dmx.__actions[name] = action;\r\n};\r\ndmx.Actions = (actions) => {\r\n for (const name in actions) {\r\n dmx.Action(name, actions[name]);\r\n }\r\n};\r\n\r\n// Startup\r\ndmx.Startup = (promise) => {\r\n dmx.__startup.add(promise)\r\n};","dmx.debounce = (fn, delay) => {\r\n let handle;\r\n\r\n return function () {\r\n const cb = () => {\r\n fn.apply(this, arguments);\r\n };\r\n\r\n if (delay) {\r\n clearTimeout(handle);\r\n handle = setTimeout(cb, delay);\r\n } else {\r\n cancelAnimationFrame(handle);\r\n handle = requestAnimationFrame(cb);\r\n }\r\n };\r\n};\r\n\r\ndmx.throttle = (fn, delay) => {\r\n let throttle = false, args;\r\n\r\n return function () {\r\n args = Array.from(arguments);\r\n\r\n if (!throttle) {\r\n const cb = () => {\r\n throttle = false;\r\n if (args) fn.apply(this, args);\r\n };\r\n\r\n fn.apply(this, args);\r\n\r\n args = undefined;\r\n throttle = true;\r\n\r\n if (delay) {\r\n setTimeout(db, delay);\r\n } else {\r\n requestAnimationFrame(cb);\r\n }\r\n }\r\n };\r\n};\r\n\r\ndmx.keyCodes = {\r\n 'bs': 8,\r\n 'tab': 9,\r\n 'enter': 13,\r\n 'esc': 27,\r\n 'space': 32,\r\n 'left': 37,\r\n 'up': 38,\r\n 'right': 39,\r\n 'down': 40,\r\n 'delete': 46,\r\n\r\n 'backspace': 8,\r\n 'pause': 19,\r\n 'capslock': 20,\r\n 'escape': 27,\r\n 'pageup': 33,\r\n 'pagedown': 34,\r\n 'end': 35,\r\n 'home': 36,\r\n 'arrowleft': 37,\r\n 'arrowup': 38,\r\n 'arrowright': 39,\r\n 'arrowdown': 40,\r\n 'insert': 45,\r\n 'numlock': 144,\r\n 'scrolllock': 145,\r\n 'semicolon': 186,\r\n 'equal': 187,\r\n 'comma': 188,\r\n 'minus': 189,\r\n 'period': 190,\r\n 'slash': 191,\r\n 'backquote': 192,\r\n 'bracketleft': 219,\r\n 'backslash': 220,\r\n 'bracketright': 221,\r\n 'quote': 222,\r\n\r\n 'numpad0': 96,\r\n 'numpad1': 97,\r\n 'numpad2': 98,\r\n 'numpad3': 99,\r\n 'numpad4': 100,\r\n 'numpad5': 101,\r\n 'numpad6': 102,\r\n 'numpad7': 103,\r\n 'numpad8': 104,\r\n 'numpad9': 105,\r\n 'numpadmultiply': 106,\r\n 'numpadadd': 107,\r\n 'numpadsubstract': 109,\r\n 'numpaddivide': 111,\r\n\r\n 'f1': 112,\r\n 'f2': 113,\r\n 'f3': 114,\r\n 'f4': 115,\r\n 'f5': 116,\r\n 'f6': 117,\r\n 'f7': 118,\r\n 'f8': 119,\r\n 'f9': 120,\r\n 'f10': 121,\r\n 'f11': 122,\r\n 'f12': 123,\r\n\r\n 'digit0': 48,\r\n 'digit1': 49,\r\n 'digit2': 50,\r\n 'digit3': 51,\r\n 'digit4': 52,\r\n 'digit5': 53,\r\n 'digit6': 54,\r\n 'digit7': 55,\r\n 'digit8': 56,\r\n 'digit9': 57,\r\n\r\n 'keya': [65, 97],\r\n 'keyb': [66, 98],\r\n 'keyc': [67, 99],\r\n 'keyd': [68, 100],\r\n 'keye': [69, 101],\r\n 'keyf': [70, 102],\r\n 'keyg': [71, 103],\r\n 'keyh': [72, 104],\r\n 'keyi': [73, 105],\r\n 'keyj': [74, 106],\r\n 'keyk': [75, 107],\r\n 'keyl': [76, 108],\r\n 'keym': [77, 109],\r\n 'keyn': [78, 110],\r\n 'keyo': [79, 111],\r\n 'keyp': [80, 112],\r\n 'keyq': [81, 113],\r\n 'keyr': [82, 114],\r\n 'keys': [83, 115],\r\n 'keyt': [84, 116],\r\n 'keyu': [85, 117],\r\n 'keyv': [86, 118],\r\n 'keyw': [87, 119],\r\n 'keyx': [88, 120],\r\n 'keyy': [89, 121],\r\n 'keyz': [90, 122]\r\n};\r\n\r\ndmx.eventListener = function(target, eventType, handler, modifiers) {\r\n let timeout, throttle;\r\n \r\n const listener = function(event) {\r\n if (modifiers.self && event.target !== event.currentTarget) return;\r\n if (modifiers.ctrl && !event.ctrlKey) return;\r\n if (modifiers.alt && !event.altKey) return;\r\n if (modifiers.shift && !event.shiftKey) return;\r\n if (modifiers.meta && !event.metaKey) return;\r\n\r\n if ((event.originalEvent || event).nsp && !Object.keys(modifiers).includes((event.originalEvent || event).nsp)) {\r\n return;\r\n }\r\n\r\n if ((event.originalEvent || event) instanceof MouseEvent) {\r\n if (modifiers.button != null && event.button != (parseInt(modifiers.button, 10) || 0)) return;\r\n if (modifiers.button0 && event.button != 0) return;\r\n if (modifiers.button1 && event.button != 1) return;\r\n if (modifiers.button2 && event.button != 2) return;\r\n if (modifiers.button3 && event.button != 3) return;\r\n if (modifiers.button4 && event.button != 4) return;\r\n }\r\n\r\n if ((event.originalEvent || event) instanceof KeyboardEvent) {\r\n var keys = [];\r\n\r\n Object.keys(modifiers).forEach(function(key) {\r\n var keyVal = parseInt(key, 10);\r\n\r\n if (keyVal) {\r\n keys.push(keyVal);\r\n } else if (dmx.keyCodes[key]) {\r\n keys.push(dmx.keyCodes[key]);\r\n }\r\n });\r\n\r\n for (var i = 0; i < keys.length; i++) {\r\n if (Array.isArray(keys[i])) {\r\n if (!keys[i].includes(event.which)) return;\r\n } else if (event.which !== keys[i]) return;\r\n }\r\n }\r\n\r\n if (modifiers.stop) event.stopPropagation();\r\n if (modifiers.prevent) event.preventDefault();\r\n \r\n if (event.originalEvent) event = event.originalEvent;\r\n\r\n if (!event.$data) event.$data = {};\r\n\r\n if (event instanceof MouseEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.pageX = event.pageX;\r\n event.$data.pageY = event.pageY;\r\n event.$data.x = event.x || event.clientX;\r\n event.$data.y = event.y || event.clientY;\r\n event.$data.button = event.button;\r\n }\r\n\r\n if (event instanceof WheelEvent) {\r\n event.$data.deltaX = event.deltaX;\r\n event.$data.deltaY = event.deltaY;\r\n event.$data.deltaZ = event.deltaZ;\r\n event.$data.deltaMode = event.deltaMode;\r\n }\r\n\r\n if (window.PointerEvent && event instanceof PointerEvent) {\r\n event.$data.pointerId = event.pointerId;\r\n event.$data.width = event.width;\r\n event.$data.height = event.height;\r\n event.$data.pressure = event.pressure;\r\n event.$data.tangentialPressure = event.tangentialPressure;\r\n event.$data.tiltX = event.tiltX;\r\n event.$data.tiltY = event.tiltY;\r\n event.$data.twist = event.twist;\r\n event.$data.pointerType = event.pointerType;\r\n event.$data.isPrimary = event.isPrimary;\r\n }\r\n\r\n if (window.TouchEvent && event instanceof TouchEvent) {\r\n const touchMap = touch => ({\r\n identifier: touch.identifier,\r\n screenX: touch.screenX,\r\n screenY: touch.screenY,\r\n clientX: touch.clientX,\r\n clientY: touch.clientY,\r\n pageX: touch.pageX,\r\n pageY: touch.pageY\r\n });\r\n\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.touches = Array.from(event.touches).map(touchMap);\r\n event.$data.changedTouches = Array.from(event.changedTouches).map(touchMap);\r\n event.$data.targetTouches = Array.from(event.targetTouches).map(touchMap);\r\n event.$data.rotation = event.rotation;\r\n event.$data.scale = event.scale;\r\n }\r\n\r\n if (event instanceof KeyboardEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.location = event.location;\r\n event.$data.repeat = event.repeat;\r\n event.$data.code = event.code;\r\n event.$data.key = event.key;\r\n }\r\n\r\n if (modifiers.debounce) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n handler.apply(this, arguments);\r\n }, parseInt(modifiers.debounce, 10) || 0);\r\n } else if (modifiers.throttle) {\r\n if (!throttle) {\r\n throttle = true;\r\n handler.apply(this, arguments);\r\n setTimeout(() => {\r\n throttle = false\r\n }, parseInt(modifiers.throttle, 10) || 0);\r\n }\r\n } else {\r\n return handler.apply(this, arguments);\r\n }\r\n };\r\n\r\n modifiers = modifiers || {};\r\n\r\n if (window.Dom7 && target.nodeType === 1) {\r\n Dom7(target)[modifiers.once ? 'once' : 'on'](eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n return () => Dom7(target).off(eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n } else if (window.jQuery && !modifiers.capture) {\r\n jQuery(target)[modifiers.once ? 'one' : 'on'](eventType.replace(/-/g, '.'), listener);\r\n return () => jQuery(target).off(eventType.replace(/-/g, '.'), listener);\r\n } else {\r\n target.addEventListener(eventType.replace(/-/g, '.'), listener, {\r\n capture: !!modifiers.capture,\r\n once: !!modifiers.once,\r\n passive: !!modifiers.passive\r\n });\r\n return () => target.removeEventListener(eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n }\r\n};\r\n","dmx.fileUtils = {\r\n\r\n fileReader (file, readAs) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = () => reject(reader.error);\r\n reader[readAs](file);\r\n });\r\n },\r\n\r\n blobToArrayBuffer: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsArrayBuffer');\r\n },\r\n \r\n blobToBinaryString: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsBinaryString');\r\n },\r\n\r\n blobToDataURL: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsDataURL');\r\n },\r\n \r\n blobToBase64String: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsDataURL').then(dataURL =>\r\n dataURL.substring(dataURL.indexOf(',') + 1)\r\n );\r\n },\r\n\r\n arrayBufferToBlob: function(arrayBuffer, type) {\r\n return Promise.resolve(new Blob([arrayBuffer], { type }));\r\n },\r\n\r\n binaryStringToBlob: function(binary, type) {\r\n const bytes = Uint8Array.from(binary, c => c.charCodeAt(0));\r\n return Promise.resolve(new Blob([bytes], { type }));\r\n }, \r\n \r\n dataURLToBlob: function(dataURL) {\r\n const { data, type } = dmx.fileUtils.parseDataURL(dataURL);\r\n return dmx.fileUtils.base64StringToBlob(data, type);\r\n },\r\n\r\n base64StringToBlob: function(base64String, type) {\r\n const binary = window.atob(base64String);\r\n return dmx.fileUtils.binaryStringToBlob(binary, type);\r\n },\r\n\r\n parseDataURL: function(dataURL) {\r\n const match = dataURL.match(/^data:(.*?)(;base64)?,(.*)$/);\r\n return {\r\n mediaType: match[1],\r\n base64: !!match[2],\r\n data: match[3],\r\n type: match[1].split(';')[0],\r\n };\r\n },\r\n\r\n parseMediaType: function(mediaType) {\r\n const match = mediaType.match(/^([^/]+)\\/([^+;]+)(?:\\+([^;]+))?(?:;(.*))?$/);\r\n return {\r\n type: match[1],\r\n subtype: match[2],\r\n suffix: match[3],\r\n parameters: match[4] ? match[4].split(';').reduce((obj, param) => {\r\n const [key, value] = param.split('=');\r\n obj[key] = value;\r\n return obj;\r\n }, {}) : {},\r\n };\r\n },\r\n\r\n};\r\n\r\n\r\n","// Trigger event on pushState and replaceState\r\n// https://stackoverflow.com/questions/5129386/how-to-detect-when-history-pushstate-and-history-replacestate-are-used/25673911#25673911\r\n{\r\n const _wr = function(type) {\r\n const orig = history[type];\r\n\r\n return function() {\r\n const rv = orig.apply(this, arguments);\r\n const e = new Event(type.toLowerCase());\r\n e.arguments = arguments;\r\n window.dispatchEvent(e);\r\n return rv;\r\n };\r\n };\r\n\r\n history.pushState = _wr('pushState');\r\n history.replaceState = _wr('replaceState');\r\n}\r\n\r\nwindow.onpopstate = function(e) {\r\n if (e.state && e.state.title) {\r\n document.title = e.state.title;\r\n }\r\n};\r\n\r\ndocument.documentElement.style.visibility = 'hidden';\r\n\r\ndmx.ready(() => {\r\n // First execute all startup scripts that are registered\r\n const startup = Promise.all(dmx.__startup);\r\n\r\n // Now we can start App Connect\r\n startup.then(() => {\r\n if (dmx.app) {\r\n throw Error('App already running!');\r\n }\r\n\r\n history.replaceState({ title: document.title }, '');\r\n\r\n const root = document.querySelector(':root[dmx-app], [dmx-app], :root[is=\"dmx-app\"], [is=\"dmx-app\"]');\r\n\r\n if (!root) {\r\n throw Error('App root not found!');\r\n }\r\n\r\n const App = dmx.Component('app');\r\n\r\n dmx.app = new App(root, dmx.global);\r\n\r\n document.documentElement.style.visibility = '';\r\n }).catch((err) => {\r\n // Something went wrong, log error and show page\r\n console.error(err);\r\n document.documentElement.style.visibility = '';\r\n })\r\n});\r\n\r\ndmx.extend = function () {\r\n // Variables\r\n var extended = {};\r\n var deep = false;\r\n var i = 0;\r\n var length = arguments.length;\r\n\r\n // Check if a deep merge\r\n if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) {\r\n deep = arguments[0];\r\n i++;\r\n }\r\n\r\n // Merge the object into the extended object\r\n var merge = function (obj) {\r\n for ( var prop in obj ) {\r\n // Prototype polution protection\r\n if (prop == '__proto__') continue;\r\n\r\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\r\n // If deep merge and property is an object, merge properties\r\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\r\n extended[prop] = dmx.extend( true, extended[prop], obj[prop] );\r\n } else {\r\n if (obj[prop] != null) {\r\n extended[prop] = obj[prop];\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Loop through each object and conduct a merge\r\n for ( ; i < length; i++ ) {\r\n var obj = arguments[i];\r\n merge(obj);\r\n }\r\n\r\n return extended;\r\n};\r\n\r\ndmx.parseDate = function(obj) {\r\n if (typeof obj == 'string') {\r\n var d, struct, offset = 0, n = [1,4,5,6,7,10,11];\r\n\r\n if (obj.toLowerCase() == 'now') {\r\n return new Date();\r\n }\r\n\r\n if ((struct = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/.exec(obj))) {\r\n for (var i = 0, k; (k = n[i]); ++i) {\r\n struct[k] = +struct[k] || 0;\r\n }\r\n\r\n struct[2] = (+struct[2] || 1) - 1;\r\n struct[3] = +struct[3] || 1;\r\n\r\n if (struct[8] === undefined) {\r\n return new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);\r\n } else {\r\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\r\n offset = struct[10] * 60 + struct[11];\r\n if (struct[9] === '+') offset = 0 - offset;\r\n }\r\n\r\n return new Date(Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + offset, struct[6], struct[7]));\r\n }\r\n } else if ((struct = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?$/.exec(obj))) {\r\n var d = new Date();\r\n if (struct[5] === 'Z') {\r\n d.setUTCHours(+struct[1] || 0);\r\n d.setUTCMinutes(+struct[2] || 0);\r\n d.setUTCSeconds(+struct[3] || 0);\r\n d.setUTCMilliseconds(+struct[4] || 0);\r\n } else {\r\n d.setHours(+struct[1] || 0);\r\n d.setMinutes(+struct[2] || 0);\r\n d.setSeconds(+struct[3] || 0);\r\n d.setMilliseconds(+struct[4] || 0);\r\n }\r\n return d;\r\n }\r\n\r\n return new Date(obj);\r\n } else if (typeof obj == 'number') {\r\n return new Date(obj * 1000);\r\n } else {\r\n return new Date('');\r\n }\r\n};\r\n\r\ndmx.hashCode = function(o) {\r\n if (o == null) return 0;\r\n var str = JSON.stringify(o);\r\n var i, hash = 0;\r\n for (i = 0; i < str.length; i++) {\r\n hash = ((hash << 5) - hash) + str.charCodeAt(i);\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n};\r\n\r\ndmx.randomizer = function(seed) {\r\n seed = +seed || 0;\r\n return function() {\r\n seed = (seed * 9301 + 49297) % 233280;\r\n return seed / 233280;\r\n };\r\n};\r\n\r\ndmx.repeatItems = function(repeat) {\r\n const items = [];\r\n\r\n if (repeat) {\r\n if (typeof repeat == 'object') {\r\n if (Array.isArray(repeat)) {\r\n for (let i = 0, l = repeat.length; i < l; i++) {\r\n const item = dmx.clone(repeat[i]);\r\n items.push(Object.assign({}, item, {\r\n $key: i,\r\n $index: i,\r\n $value: item\r\n }));\r\n }\r\n } else {\r\n let i = 0;\r\n for (const key in repeat) {\r\n if (repeat.hasOwnProperty(key)) {\r\n const item = dmx.clone(repeat[key]);\r\n items.push(Object.assign({}, item, {\r\n $key: key,\r\n $index: i,\r\n $value: item\r\n }));\r\n i++;\r\n }\r\n }\r\n }\r\n } else if (typeof repeat == 'number') {\r\n for (let n = 0; n < repeat; n++) {\r\n items.push({\r\n $key: String(n),\r\n $index: n,\r\n $value: n + 1\r\n });\r\n }\r\n }\r\n }\r\n\r\n return items;\r\n};\r\n\r\ndmx.escapeRegExp = function(val) {\r\n // https://github.com/benjamingr/RegExp.escape\r\n return val.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n};\r\n\r\ndmx.validate = function(node) {\r\n if (node.tagName == 'FORM') {\r\n Array.from(node.elements).forEach(node => node.dirty = true);\r\n }\r\n\r\n return node.checkValidity();\r\n};\r\n\r\ndmx.validateReset = function(node) {\r\n // reset validation?\r\n};\r\n\r\n(() => {\r\n const queue = [];\r\n\r\n window.addEventListener('message', event => {\r\n if (event.source === window && event.data === 'dmxNextTick' && queue.length) {\r\n event.stopPropagation();\r\n while (queue.length) {\r\n const task = queue.shift();\r\n task.fn.call(task.context);\r\n };\r\n }\r\n }, true);\r\n\r\n dmx.nextTick = (fn, context) => {\r\n queue.push({ fn, context });\r\n window.postMessage('dmxNextTick', '*');\r\n }\r\n})();\r\n\r\ndmx.requestUpdate = function() {\r\n console.warn('dmx.requestUpdate is deprecated.');\r\n};\r\n","// cordova init\r\n\r\nif (document.location.protocol == 'app:') { // cordova detection by checking protocol\r\n dmx.Startup(new Promise(resolve => document.addEventListener('deviceready', resolve)));\r\n}","(() => {\r\n /*! (c) Andrea Giammarchi */\r\n \r\n const {is} = Object;\r\n \r\n let batches;\r\n \r\n /**\r\n * Execute a callback that will not side-effect until its top-most batch is\r\n * completed.\r\n * @param {() => void} callback a function that batches changes to be notified\r\n * through signals.\r\n */\r\n const batch = callback => {\r\n const prev = batches;\r\n batches = prev || [];\r\n try {\r\n callback();\r\n if (!prev)\r\n for (const {value} of batches);\r\n }\r\n finally { batches = prev }\r\n };\r\n dmx.batch = batch;\r\n \r\n /**\r\n * A signal with a value property also exposed via toJSON, toString and valueOf.\r\n * When created via computed, the `value` property is **readonly**.\r\n * @template T\r\n */\r\n class Signal {\r\n constructor(value) {\r\n this._ = value;\r\n }\r\n \r\n /** @returns {T} */\r\n toJSON() { return this.value }\r\n \r\n /** @returns {string} */\r\n toString() { return String(this.value) }\r\n \r\n /** @returns {T} */\r\n valueOf() { return this.value }\r\n }\r\n dmx.Signal = Signal\r\n \r\n let computedSignal;\r\n /**\r\n * @template T\r\n * @extends {Signal}\r\n */\r\n class Computed extends Signal {\r\n /**\r\n * @private\r\n * @type{Reactive}\r\n */\r\n s\r\n /**\r\n * @param {(v: T) => T} _ \r\n * @param {T} v \r\n * @param {{ equals?: Equals }} o\r\n * @param {boolean} f \r\n */\r\n constructor(_, v, o, f) {\r\n super(_);\r\n this.f = f; // is effect?\r\n this.$ = true; // should update (\"value for money\")\r\n this.r = new Set; // related signals\r\n this.s = new Reactive(v, o); // signal\r\n }\r\n peek() { return this.s.peek() }\r\n get value() {\r\n if (this.$) {\r\n const prev = computedSignal;\r\n computedSignal = this;\r\n try { this.s.value = this._(this.s._) }\r\n finally {\r\n this.$ = false;\r\n computedSignal = prev;\r\n }\r\n }\r\n return this.s.value;\r\n }\r\n }\r\n \r\n const defaults = {async: false, equals: true};\r\n \r\n /**\r\n * Returns a read-only Signal that is invoked only when any of the internally\r\n * used signals, as in within the callback, is unknown or updated.\r\n * @type {(fn: (v: T) => R, value?: V, options?: { equals?: Equals }) => ComputedSignal}\r\n */\r\n const computed = (fn, value, options = defaults) =>\r\n new Computed(fn, value, options, false);\r\n dmx.computed = computed;\r\n \r\n let outerEffect;\r\n const empty = [];\r\n const noop = () => {};\r\n const dispose = ({s}) => {\r\n if (typeof s._ === 'function')\r\n s._ = s._();\r\n };\r\n \r\n class FX extends Computed {\r\n constructor(_, v, o) {\r\n super(_, v, o, true);\r\n this.e = empty;\r\n }\r\n run() {\r\n this.$ = true;\r\n this.value;\r\n return this;\r\n }\r\n stop() {\r\n this._ = noop;\r\n for (const s of this.r) {\r\n // remove computed from related signals\r\n s.c.delete(this);\r\n }\r\n this.r.clear();\r\n this.s.c.clear();\r\n }\r\n }\r\n dmx.FX = FX\r\n \r\n class Effect extends FX {\r\n constructor(_, v, o) {\r\n super(_, v, o);\r\n this.i = 0; // index\r\n this.a = !!o.async; // async\r\n this.m = true; // microtask\r\n this.e = []; // effects\r\n // \"I am effects\" ^_^;;\r\n }\r\n get value() {\r\n this.a ? this.async() : this.sync();\r\n }\r\n async() {\r\n if (this.m) {\r\n this.m = false;\r\n queueMicrotask(() => {\r\n this.m = true;\r\n this.sync();\r\n });\r\n }\r\n }\r\n sync() {\r\n const prev = outerEffect;\r\n (outerEffect = this).i = 0;\r\n dispose(this);\r\n super.value;\r\n outerEffect = prev;\r\n }\r\n stop() {\r\n super.stop();\r\n dispose(this);\r\n for (const effect of this.e.splice(0))\r\n effect.stop();\r\n }\r\n }\r\n dmx.Effect = Effect\r\n \r\n /**\r\n * Invokes a function when any of its internal signals or computed values change.\r\n * \r\n * Returns a dispose callback.\r\n * @template T\r\n * @type {(fn: (v: T) => T, value?: T, options?: { async?: boolean }) => () => void}\r\n */\r\n const effect = (callback, value, options = defaults) => {\r\n let unique;\r\n if (outerEffect) {\r\n const {i, e} = outerEffect;\r\n const isNew = i === e.length;\r\n // bottleneck:\r\n // there's literally no way to optimize this path *unless* the callback is\r\n // already a known one. however, latter case is not really common code so\r\n // the question is: should I optimize this more than this? 'cause I don't\r\n // think the amount of code needed to understand if a callback is *likely*\r\n // the same as before makes any sense + correctness would be trashed.\r\n if (isNew || e[i]._ !== callback) {\r\n if (!isNew) e[i].stop();\r\n e[i] = new Effect(callback, value, options).run();\r\n }\r\n unique = e[i];\r\n outerEffect.i++;\r\n }\r\n else\r\n unique = new Effect(callback, value, options).run();\r\n return () => { unique.stop() };\r\n };\r\n dmx.effect = effect;\r\n \r\n const skip = () => false;\r\n /**\r\n * @template T\r\n * @extends {Signal}\r\n */\r\n class Reactive extends Signal {\r\n constructor(_, {equals}) {\r\n super(_)\r\n this.c = new Set; // computeds\r\n this.s = equals === true ? is : (equals || skip); // (don't) skip updates\r\n }\r\n /**\r\n * Allows to get signal.value without subscribing to updates in an effect\r\n * @returns {T}\r\n */\r\n peek() { return this._ }\r\n /** @returns {T} */\r\n get value() {\r\n if (computedSignal) {\r\n this.c.add(computedSignal);\r\n computedSignal.r.add(this);\r\n }\r\n return this._;\r\n }\r\n set value(_) {\r\n const prev = this._;\r\n if (!this.s((this._ = _), prev)) {\r\n if (this.c.size) {\r\n const effects = [];\r\n const stack = [this];\r\n for (const signal of stack) {\r\n for (const computed of signal.c) {\r\n if (!computed.$ && computed.r.has(signal)) {\r\n computed.r.clear();\r\n computed.$ = true;\r\n if (computed.f) {\r\n effects.push(computed);\r\n const stack = [computed];\r\n for (const c of stack) {\r\n for (const effect of c.e) {\r\n effect.r.clear();\r\n effect.$ = true;\r\n stack.push(effect);\r\n }\r\n }\r\n }\r\n else\r\n stack.push(computed.s);\r\n }\r\n }\r\n }\r\n for (const effect of effects)\r\n batches ? batches.push(effect) : effect.value;\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Returns a writable Signal that side-effects whenever its value gets updated.\r\n * @template T\r\n * @type {(initialValue: T, options?: { equals?: Equals }) => ReactiveSignal}\r\n */\r\n const signal = (value, options = defaults) => new Reactive(value, options);\r\n dmx.signal = signal;\r\n \r\n /**\r\n * @template [T=any]\r\n * @typedef {boolean | ((prev: T, next: T) => boolean)} Equals\r\n */\r\n \r\n /**\r\n * @public\r\n * @template T\r\n * @typedef {Omit, '_'|'s'|'c'>} ReactiveSignal\r\n */\r\n \r\n /**\r\n * @public\r\n * @template T\r\n * @typedef {Omit, '$'|'s'|'f'|'r'|'_'>} ComputedSignal\r\n */\r\n })();","dmx.signalProxy = function (o = {}) {\r\n const signals = new Map();\r\n const equals = (a, b) => {\r\n return dmx.equal(a, b);\r\n };\r\n\r\n return new Proxy(o, {\r\n has (target, prop) {\r\n // when checking for a prop, always return true\r\n return true;\r\n },\r\n\r\n get (target, prop, receiver) {\r\n const value = Reflect.get(target, prop, receiver);\r\n\r\n if (typeof value == 'function' || typeof prop != 'string' || prop.startsWith('_')) {\r\n // ignore private props\r\n return value;\r\n }\r\n\r\n if (!signals.has(prop)) {\r\n signals.set(prop, dmx.signal(value, { equals }));\r\n }\r\n\r\n return signals.get(prop).value;\r\n },\r\n\r\n set (target, prop, value, receiver) {\r\n const ok = Reflect.set(target, prop, value, receiver);\r\n\r\n if (ok) {\r\n if (signals.has(prop)) {\r\n signals.get(prop).value = value;\r\n }\r\n }\r\n\r\n return ok;\r\n },\r\n\r\n deleteProperty (target, prop) {\r\n const ok = Reflect.deleteProperty(target, prop);\r\n\r\n if (ok && signals.has(prop)) {\r\n signals.get(prop).value = undefined;\r\n }\r\n\r\n return ok;\r\n }\r\n });\r\n};","(() => {\r\n\r\n class Scope {\r\n\r\n constructor (initialData = {}, parent = null) {\r\n if (typeof initialData !== 'object') {\r\n initialData = { $value: initialData };\r\n }\r\n\r\n this.data = dmx.signalProxy();\r\n Object.assign(this.data, initialData);\r\n this.parent = parent;\r\n this.seed = Math.random();\r\n }\r\n\r\n get (name) {\r\n if (this.data[name] !== undefined) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n set (name, value) {\r\n if (typeof name === 'object') {\r\n dmx.batch(() => {\r\n for (var prop in name) {\r\n if (name.hasOwnProperty(prop)) {\r\n this.set(prop, name[prop]);\r\n }\r\n }\r\n });\r\n } else {\r\n this.data[name] = value;\r\n }\r\n }\r\n\r\n del (name) {\r\n delete this.data[name];\r\n }\r\n\r\n }\r\n\r\n dmx.global = new Scope();\r\n dmx.DataScope = function (data, parent) {\r\n return new Scope(data, parent || dmx.global);\r\n };\r\n\r\n})();","(function() {\r\n\r\n var $ = function(selector) {\r\n if (!(this instanceof $)) {\r\n return new $(selector);\r\n }\r\n if (selector instanceof $) {\r\n return selector;\r\n }\r\n if (!selector) return this;\r\n var len = selector.length;\r\n if (selector.nodeType) {\r\n this[0] = selector;\r\n this.length = 1;\r\n } else if (typeof selector == 'string') {\r\n return $(document.querySelectorAll(selector));\r\n } else if (len) {\r\n for (var i = 0; i < len; i++) {\r\n if (selector[i] && selector[i].nodeType) {\r\n this[this.length] = selector[i];\r\n this.length++;\r\n }\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n $.prototype = {\r\n constructor: $,\r\n length: 0,\r\n\r\n addClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.add(className);\r\n }\r\n return this;\r\n },\r\n\r\n removeClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.remove(className);\r\n }\r\n return this;\r\n },\r\n\r\n toggleClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.toggle(className);\r\n }\r\n return this;\r\n },\r\n\r\n hasClass: function(className) {\r\n if (!this[0]) return false;\r\n return this[0].classList.contains(className);\r\n },\r\n\r\n attr: function(attrs, value) {\r\n if (arguments.length === 1 && typeof attrs === 'string') {\r\n return this[0] && this[0].getAttribute(attrs);\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i].setAttribute(attrs, value);\r\n } else {\r\n for (var attr in attrs) {\r\n if (attrs.hasOwnProperty(attr)) {\r\n this[i].setAttribute(attr, attrs[attr]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n removeAttr: function(attr) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].removeAttribute(attr);\r\n }\r\n return this;\r\n },\r\n\r\n prop: function(props, value) {\r\n if (arguments.length === 1 && typeof props === 'string') {\r\n return this[0] && this[0][props];\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i][props] = value;\r\n } else {\r\n for (var prop in props) {\r\n if (props.hasOwnProperty(prop)) {\r\n this[i][prop] = props[prop];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n css: function(props, value) {\r\n if (arguments.length === 1 && typeof props === 'string') {\r\n return this[0] && window.getComputedStyle(this[0], null).getPropertyValue(props);\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i].style.setProperty(props, value);\r\n } else {\r\n for (var prop in props) {\r\n if (props.hasOwnProperty(prop)) {\r\n this[i].style.setProperty(prop, props[prop]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n each: function(callback, context) {\r\n if (!callback) return this;\r\n for (var i = 0; i < this.length; i++) {\r\n if (callback.call(context || this[i], i, this[i]) === false) {\r\n return this;\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n append: function() {\r\n for (var i = 0; i < arguments.length; i++) {\r\n var children = $(arguments[i]);\r\n\r\n for (var j = 0; j < children.length; j++) {\r\n this[0].appendChild(children[j]);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n appendTo: function(parent) {\r\n $(parent).append(this);\r\n return this;\r\n },\r\n\r\n detach: function() {\r\n for (var i = 0; i < this.length; i++) {\r\n if (this[i].parentNode) {\r\n this[i].parentNode.removeChild(this[i]);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n empty: function() {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].innerHTML = '';\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n dmx.dom = {\r\n\r\n get: function(id) {\r\n return $(document.getElementById(id));\r\n },\r\n\r\n select: function(query) {\r\n return $(query);\r\n },\r\n\r\n create: function(tagName) {\r\n var elem = document.createElement(tagName);\r\n return $(elem);\r\n },\r\n\r\n contains: function(node) {\r\n return document.documentElement.contains(node);\r\n },\r\n\r\n walk: function(node, fn, context) {\r\n if (node) {\r\n if (fn.call(context, node) === false) {\r\n // stop going deeper when callback returns false\r\n return;\r\n } else if (node.hasChildNodes()) {\r\n for (const child of Array.from(node.childNodes)) {\r\n dmx.dom.walk(child, fn, context);\r\n }\r\n }\r\n }\r\n },\r\n\r\n getAttributes: function(node) {\r\n var attributes = [];\r\n\r\n if (node.nodeType == 1) {\r\n for (var i = 0; i < node.attributes.length; i++) {\r\n var attribute = node.attributes[i];\r\n\r\n if (attribute && attribute.specified && dmx.rePrefixed.test(attribute.name)) {\r\n var name = attribute.name.substr(4);\r\n var argument = null;\r\n var modifiers = {};\r\n\r\n name.split('.').forEach(function(part, i) {\r\n if (i === 0) {\r\n name = part;\r\n } else {\r\n var pos = part.indexOf(':');\r\n if (pos > 0) {\r\n modifiers[part.substr(0, pos)] = part.substr(pos + 1);\r\n } else {\r\n modifiers[part] = true;\r\n }\r\n }\r\n });\r\n\r\n var pos = name.indexOf(':');\r\n if (pos > 0) {\r\n argument = name.substr(pos + 1);\r\n name = name.substr(0, pos);\r\n }\r\n\r\n attributes.push({\r\n name: name,\r\n fullName: attribute.name,\r\n value: attribute.value,\r\n argument: argument,\r\n modifiers: modifiers\r\n });\r\n }\r\n }\r\n }\r\n\r\n return attributes;\r\n },\r\n\r\n remove: function(node) {\r\n if (Array.isArray(node)) {\r\n node.forEach(function(node) {\r\n dmx.dom.remove(node);\r\n });\r\n } else {\r\n node.remove()\r\n }\r\n },\r\n\r\n replace: function(oldNode, newNode) {\r\n if (oldNode.parentNode) {\r\n oldNode.parentNode.replaceChild(newNode, oldNode);\r\n }\r\n }\r\n\r\n };\r\n\r\n})();\r\n","dmx._CACHE = new Map();\r\n\r\ndmx._OPERATORS = new Map([\r\n ['{', 'L_CURLY'],\r\n ['}', 'R_CURLY'],\r\n ['[', 'L_BRACKET'],\r\n [']', 'R_BRACKET'],\r\n ['(', 'L_PAREN'],\r\n [')', 'R_PAREN'],\r\n ['.', 'PERIOD'],\r\n [',', 'COMMA'],\r\n [';', 'SEMI'], // not used\r\n [':', 'COLON'],\r\n ['?', 'QUESTION'],\r\n // Arithmetic operators\r\n ['-', 'ADDICTIVE'],\r\n ['+', 'ADDICTIVE'],\r\n ['*', 'MULTIPLICATIVE'],\r\n ['/', 'MULTIPLICATIVE'],\r\n ['%', 'MULTIPLICATIVE'],\r\n // Comparison operators\r\n ['===', 'EQUALITY'],\r\n ['!==', 'EQUALITY'],\r\n ['==', 'EQUALITY'],\r\n ['!=', 'EQUALITY'],\r\n ['<', 'RELATIONAL'],\r\n ['>', 'RELATIONAL'],\r\n ['<=', 'RELATIONAL'],\r\n ['>=', 'RELATIONAL'],\r\n ['in', 'RELATIONAL'],\r\n // Logical operators\r\n ['&&', 'LOGICAL_AND'],\r\n ['||', 'LOGICAL_OR'],\r\n ['!', 'LOGICAL_NOT'],\r\n // Bitwise operators\r\n ['&', 'BITWISE_AND'],\r\n ['|', 'BITWISE_OR'],\r\n ['^', 'BITWISE_XOR'],\r\n ['~', 'BITWISE_NOT'],\r\n ['<<', 'BITWISE_SHIFT'],\r\n ['>>', 'BITWISE_SHIFT'],\r\n ['>>>', 'BITWISE_SHIFT'],\r\n]);\r\n\r\ndmx._ESCAPE_CHARS = new Map([\r\n ['n', '\\n'],\r\n ['r', '\\r'],\r\n ['t', '\\t'],\r\n ['b', '\\b'],\r\n ['f', '\\f'],\r\n ['v', '\\v'],\r\n ['0', '\\0'],\r\n [\"'\", \"'\"],\r\n ['`', '`'],\r\n ['\"', '\"'],\r\n]);\r\n\r\ndmx._EXPRESSIONS = new Map([\r\n ['**', (a, b) => Math.pow(a(), b())],\r\n ['??', (a, b) => (a = a(), a == null ? b() : a)],\r\n ['in', (a, b) => a() in b()],\r\n ['?', (a, b, c) => (a() ? b() : c())],\r\n ['+', (a, b) => (a = a(), b = b(), a == null ? b : b == null ? a : a + b)],\r\n ['-', (a, b) => a() - b()],\r\n ['*', (a, b) => a() * b()],\t\r\n ['/', (a, b) => a() / b()],\r\n ['%', (a, b) => a() % b()],\r\n ['===', (a, b) => a() === b()],\r\n ['!==', (a, b) => a() !== b()],\r\n ['==', (a, b) => a() == b()],\r\n ['!=', (a, b) => a() != b()],\r\n ['<', (a, b) => a() < b()],\r\n ['>', (a, b) => a() > b()],\r\n ['<=', (a, b) => a() <= b()],\r\n ['>=', (a, b) => a() >= b()],\r\n ['&&', (a, b) => a() && b()],\r\n ['||', (a, b) => a() || b()],\r\n ['&', (a, b) => a() & b()],\r\n ['|', (a, b) => a() | b()],\r\n ['^', (a, b) => a() ^ b()],\r\n ['<<', (a, b) => a() << b()],\r\n ['>>', (a, b) => a() >> b()],\r\n ['>>>', (a, b) => a() >>> b()],\r\n ['~', (a) => ~a()],\r\n ['!', (a) => !a()],\r\n]);\r\n\r\ndmx._RESERVED = new Map([\r\n ['this', (scope) => () => scope.data],\r\n ['true', () => () => true],\r\n ['false', () => () => false],\r\n ['null', () => () => null],\r\n ['undefined', () => () => undefined],\r\n ['_', () => () => ({ __dmxScope__: true })],\r\n]);\r\n\r\ndmx._SUPPORTED_TYPES = new Map([\r\n ['Boolean', 'boolean'],\r\n ['Null', 'null'],\r\n ['Undefined', 'undefined'],\r\n ['Number', 'number'],\r\n ['BigInt', 'number'],\r\n ['Decimal', 'number'], // requires Decimal.js\r\n ['String', 'string'],\r\n ['Date', 'date'],\r\n ['RegExp', 'regexp'],\r\n ['Blob', 'blob'],\r\n ['File', 'file'],\r\n ['FileList', 'filelist'],\r\n ['ArrayBuffer', 'arraybuffer'],\r\n ['ImageBitmap', 'imagebitmap'],\r\n ['ImageData', 'imagedata'],\r\n ['Array', 'array'],\r\n ['Object', 'object'],\r\n ['Map', 'map'],\r\n ['Set', 'set'],\r\n ['DataView', 'array'],\r\n ['Int8Array', 'array'],\r\n ['Uint8Array', 'array'],\r\n ['Uint8ClampedArray', 'array'],\r\n ['Int16Array', 'array'],\r\n ['Uint16Array', 'array'],\r\n ['Int32Array', 'array'],\r\n ['Uint32Array', 'array'],\r\n ['Float32Array', 'array'],\r\n ['Float64Array', 'array'],\r\n ['BigInt64Array', 'array'],\r\n ['BigUint64Array', 'array'],\r\n]);\r\n\r\ndmx.getType = function (obj) {\r\n return dmx._SUPPORTED_TYPES.get(Object.prototype.toString.call(obj).slice(8, -1));\r\n};\r\n\r\ndmx.lexer = function (expression) {\r\n if (dmx._CACHE.has(expression)) {\r\n return dmx._CACHE.get(expression);\r\n }\r\n\r\n let tokens = [], token, name, start, index = 0, op = true, ch, ch2, ch3;\r\n\r\n while (index < expression.length) {\r\n start = index;\r\n\r\n ch = read();\r\n\r\n if (isQuote(ch)) {\r\n name = 'STRING';\r\n token = readString(ch);\r\n op = false;\r\n } else if ((isDigid(ch) || (is('.') && peek() && isDigid(peek()))) && op) {\r\n name = 'NUMBER';\r\n token = readNumber();\r\n op = false;\r\n } else if (isAlpha(ch) && op) {\r\n name = 'IDENT';\r\n token = readIdent();\r\n if (is('(')) {\r\n name = 'METHOD';\r\n }\r\n op = false;\r\n } else if (is('/') && op && (token == '(' || token == ',' || token == '?' || token == ':') && testRegexp()) {\r\n name = 'REGEXP';\r\n token = readRegexp();\r\n op = false;\r\n } else if (isWhitespace(ch)) {\r\n index++;\r\n continue;\r\n } else if ((ch3 = read(3)) && dmx._OPERATORS.has(ch3)) {\r\n name = dmx._OPERATORS.get(ch3);\r\n token = ch3;\r\n op = true;\r\n index += 3;\r\n } else if ((ch2 = read(2)) && dmx._OPERATORS.has(ch2)) {\r\n name = dmx._OPERATORS.get(ch2);\r\n token = ch2;\r\n op = true;\r\n index += 2;\r\n } else if (dmx._OPERATORS.has(ch)) {\r\n name = dmx._OPERATORS.get(ch);\r\n token = ch;\r\n op = true;\r\n index++;\r\n } else {\r\n throw new Error(`Unexpected token \"${ch}\" at index ${index} in expression: ${expression}`);\r\n }\r\n\r\n tokens.push({ name, index: start, value: token });\r\n }\r\n\r\n dmx._CACHE.set(expression, tokens);\r\n\r\n return tokens;\r\n\r\n function read (n) {\r\n return n > 1 ? expression.slice(index, index + n) : expression[index];\r\n }\r\n\r\n function peek (n = 1) {\r\n return index + n < expression.length ? expression[index + n] : false;\r\n }\r\n\r\n function is (chars) {\r\n return chars.includes(ch);\r\n }\r\n\r\n function isQuote (ch) {\r\n return ch == '\"' || ch == \"'\" || ch == '`';\r\n }\r\n\r\n function isDigid (ch) {\r\n return ch >= '0' && ch <= '9';\r\n }\r\n\r\n function isAlpha (ch) {\r\n return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '_' || ch === '$';\r\n }\r\n\r\n function isAlphaNum (ch) {\r\n return isAlpha(ch) || isDigid(ch);\r\n }\r\n\r\n function isWhitespace (ch) {\r\n return ch == ' ' || ch == '\\r' || ch == '\\t' || ch == '\\n' || ch == '\\v' || ch == '\\u00A0';\r\n }\r\n\r\n function isExpOperator (ch) {\r\n return ch == '-' || ch == '+' || isDigid(ch);\r\n }\r\n\r\n function readString (quote) {\r\n let escape = false, result = '';\r\n\r\n index++;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (escape) {\r\n if (ch == 'u') {\r\n index++;\r\n const hex = read(4);\r\n if (!hex.match(/[\\da-f]{4}/i)) {\r\n throw new Error(`Invalid unicode escape [\\\\u${hex}] at index ${index} in expression: ${expression}`);\r\n }\r\n result += String.fromCharCode(parseInt(hex, 16));\r\n index += 4;\r\n } else {\r\n result += dmx._ESCAPE_CHARS.has(ch) ? dmx._ESCAPE_CHARS.get(ch) : ch;\r\n }\r\n\r\n escape = false;\r\n } else if (ch == '\\\\') {\r\n escape = true;\r\n } else if (ch == quote) {\r\n index++;\r\n if (quote == '`') {\r\n result = '{{' + result + '}}';\r\n }\r\n return result;\r\n } else {\r\n result += ch;\r\n }\r\n\r\n index++;\r\n }\r\n\r\n throw new Error(`Unterminated string in expression: ${expression}`);\r\n }\r\n\r\n function readNumber () {\r\n let result = '', exponent = false;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (is('_') && peek() && isDigid(peek())) {\r\n index++;\r\n continue;\r\n }\r\n\r\n if ((is('.') && peek() && isDigid(peek())) || isDigid(ch)) {\r\n result += ch;\r\n } else {\r\n const next = peek();\r\n\r\n if (is('eE') && isExpOperator(next)) {\r\n result += 'e';\r\n exponent = true;\r\n } else if (isExpOperator(ch) && next && isDigid(next) && exponent) {\r\n result += ch;\r\n exponent = false;\r\n } else if (isExpOperator(ch) && (!next || !isDigid(next)) && exponent) {\r\n throw new Error(`Invalid exponent in expression: ${expression}`);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n index++;\r\n }\r\n\r\n if (read() == 'n') {\r\n index++;\r\n return BigInt(result);\r\n }\r\n\r\n if (read() == 'm') {\r\n index++;\r\n if (window.Decimal) {\r\n return new Decimal(result);\r\n } else {\r\n console.warn('Decimal number in expression but library not found');\r\n }\r\n }\r\n\r\n return +result;\r\n }\r\n\r\n function readIdent () {\r\n let result = '';\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (isAlphaNum(ch)) {\r\n result += ch;\r\n } else {\r\n break;\r\n }\r\n\r\n index++;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function readRegexp () {\r\n let result = '', modifiers = '', escape = false;\r\n\r\n index++;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (escape) {\r\n escape = false;\r\n } else if (ch == '\\\\') {\r\n escape = true;\r\n } else if (ch == '/') {\r\n index++;\r\n\r\n while ('ign'.includes(ch = read())) {\r\n modifiers += ch;\r\n index++;\r\n }\r\n\r\n return new RegExp(result, modifiers);\r\n }\r\n\r\n result += ch;\r\n index++;\r\n }\r\n\r\n throw new Error(`Unterminated regexp in expression: ${expression}`);\r\n }\r\n\r\n function testRegexp () {\r\n let i = index, ok = true;\r\n\r\n try {\r\n readRegexp();\r\n } catch (e) {\r\n ok = false;\r\n }\r\n\r\n index = i;\r\n ch = '/';\r\n\r\n return ok;\r\n }\r\n};\r\n\r\ndmx.parse = function (expression, scope = dmx.app) {\r\n expression = expression.trim();\r\n\r\n if (expression.includes('{{')) {\r\n if (expression.startsWith('{{') && expression.endsWith('}}') && !expression.slice(2).includes('{{')) {\r\n expression = expression.slice(2, -2);\r\n } else {\r\n return expression.replace(/{{(.+?)}}/g, (_, expression) => {\r\n const result = dmx.parse(expression, scope);\r\n return result == null ? '' : result;\r\n });\r\n }\r\n }\r\n\r\n if (!expression) return undefined;\r\n\r\n let tokens, context, result;\r\n\r\n try {\r\n tokens = Array.from(dmx.lexer(expression));\r\n result = doParse();\r\n } catch (e) {\r\n console.error('Error parsing expression:', expression, e);\r\n }\r\n\r\n return result;\r\n\r\n function read () {\r\n if (tokens.length === 0) {\r\n throw new Error(`Unexpected end of expression: ${expression}`);\r\n }\r\n\r\n return tokens[0];\r\n }\r\n\r\n function peek (e) {\r\n if (tokens.length > 0) {\r\n const token = tokens[0];\r\n\r\n if (!e || token.name == e) {\r\n return token;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function expect (e) {\r\n const token = peek(e);\r\n\r\n if (token) {\r\n tokens.shift();\r\n return token;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function consume (e) {\r\n if (!expect(e)) {\r\n throw new Error(`Expected ${e} at index ${tokens[0].index} in expression: ${expression}`);\r\n }\r\n }\r\n\r\n function fn (exp) {\r\n const args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return () => {\r\n if (dmx._EXPRESSIONS.has(exp)) {\r\n return dmx._EXPRESSIONS.get(exp).apply(scope, args);\r\n }\r\n\r\n return exp;\r\n };\r\n }\r\n\r\n function doParse () {\r\n const a = [];\r\n\r\n while (true) {\r\n if (tokens.length > 0 && !(peek('R_PAREN') || peek('R_BRACKET') || peek('R_CURLY') || peek('COMMA') || peek('SEMI'))) {\r\n a.push(parseExpression());\r\n }\r\n\r\n if (!(expect('COMMA') || expect('SEMI'))) {\r\n return (a.length == 1 ? a[0] : b)();\r\n }\r\n }\r\n\r\n function b () {\r\n let result;\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n const e = a[i];\r\n if (e) result = e();\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n function parseExpression () {\r\n return parseConditional();\r\n }\r\n\r\n function parseConditional () {\r\n const a = parseLogicalOr();\r\n\r\n if (expect('QUESTION')) {\r\n const b = parseExpression();\r\n consume('COLON');\r\n const c = parseExpression();\r\n\r\n return fn('?', a, b, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseLogicalOr () {\r\n let a = parseLogicalAnd();\r\n\r\n while (expect('LOGICAL_OR')) {\r\n const b = parseLogicalAnd();\r\n a = fn('||', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseLogicalAnd () {\r\n let a = parseBitwiseOr();\r\n\r\n while (expect('LOGICAL_AND')) {\r\n const b = parseBitwiseOr();\r\n a = fn('&&', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseOr () {\r\n let a = parseBitwiseXor();\r\n\r\n while (expect('BITWISE_OR')) {\r\n const b = parseBitwiseXor();\r\n a = fn('|', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseXor () {\r\n let a = parseBitwiseAnd();\r\n\r\n while (expect('BITWISE_XOR')) {\r\n const b = parseBitwiseAnd();\r\n a = fn('^', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseAnd () {\r\n let a = parseEquality();\r\n\r\n while (expect('BITWISE_AND')) {\r\n const b = parseEquality();\r\n a = fn('&', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseEquality () {\r\n let a = parseRelational(), b;\r\n\r\n if ((b = expect('EQUALITY'))) {\r\n const c = parseEquality();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseRelational () {\r\n let a = parseBitwiseShift(), b;\r\n\r\n if ((b = expect('RELATIONAL'))) {\r\n const c = parseRelational();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseShift () {\r\n let a = parseAddictive(), b;\r\n\r\n if ((b = expect('BITWISE_SHIFT'))) {\r\n const c = parseBitwiseShift();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseAddictive () {\r\n let a = parseMultiplicative(), b;\r\n\r\n while ((b = expect('ADDICTIVE'))) {\r\n const c = parseMultiplicative();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseMultiplicative () {\r\n let a = parseUnary(), b;\r\n\r\n while ((b = expect('MULTIPLICATIVE'))) {\r\n const c = parseUnary();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseUnary () {\r\n let a;\r\n\r\n if ((a = expect('ADDICTIVE'))) {\r\n if (a.value == '+') {\r\n return parsePrimary();\r\n } else {\r\n return fn(a.value, () => 0, parsePrimary());\r\n }\r\n } else if ((a = expect('LOGICAL_NOT'))) {\r\n return fn(a.value, parseUnary());\r\n } else if ((a = expect('BITWISE_NOT'))) {\r\n return fn(a.value, parseUnary());\r\n } else {\r\n return parsePrimary();\r\n }\r\n }\r\n\r\n function parsePrimary () {\r\n let result, next;\r\n\r\n if (expect('L_PAREN')) {\r\n result = parseExpression();\r\n consume('R_PAREN');\r\n } else if (expect('L_CURLY')) {\r\n const obj = {};\r\n\r\n if (read().name != 'R_CURLY') {\r\n do {\r\n const key = expect().value;\r\n consume('COLON');\r\n obj[key] = parseExpression()();\r\n } while (expect('COMMA'));\r\n }\r\n\r\n result = fn(obj);\r\n\r\n consume('R_CURLY');\r\n } else if (expect('L_BRACKET')) {\r\n const arr = [];\r\n\r\n if (read().name != 'R_BRACKET') {\r\n do {\r\n arr.push(parseExpression()());\r\n } while (expect('COMMA'));\r\n }\r\n\r\n result = fn(arr);\r\n\r\n consume('R_BRACKET');\r\n } else if (expect('PERIOD')) {\r\n result = peek() ? parseMember(fn(scope.data)) : fn(scope.data);\r\n } else {\r\n const token = expect();\r\n\r\n if (token === false) {\r\n throw new Error(`Unexpected end of expression: ${expression}`);\r\n }\r\n\r\n if (token.name == 'IDENT') {\r\n result = dmx._RESERVED.has(token.value) ? dmx._RESERVED.get(token.value)(scope) : () => scope.get(token.value);\r\n } else if (token.name == 'METHOD') {\r\n result = fn(dmx.__formatters.global[token.value] || (() => {\r\n console.warn(`Method \"${token.value}\" not found in expression: ${expression}`);\r\n return undefined;\r\n })\r\n );\r\n } else {\r\n result = () => token.value;\r\n }\r\n }\r\n\r\n while ((next = expect('L_PAREN') || expect('L_BRACKET') || expect('PERIOD'))) {\r\n if (next.value == '(') {\r\n result = parseCall(result, context);\r\n } else if (next.value == '[') {\r\n context = result;\r\n result = parseIndex(result, context);\r\n } else if (next.value == '.') {\r\n context = result;\r\n result = parseMember(result, context);\r\n } else {\r\n throw new Error(`Unexpected token \"${next.value}\" at index ${next.index} in expression: ${expression}`);\r\n }\r\n }\r\n\r\n context = null;\r\n\r\n return result;\r\n }\r\n\r\n function parseCall (func, context) {\r\n const argsFn = [];\r\n\r\n if (read().name != 'R_PAREN') {\r\n do {\r\n argsFn.push(parseExpression());\r\n } while (expect('COMMA'));\r\n }\r\n\r\n consume('R_PAREN');\r\n\r\n return () => {\r\n let args = [];\r\n\r\n if (context) {\r\n args.push(context());\r\n }\r\n\r\n for (let f of argsFn) {\r\n args.push(f());\r\n }\r\n\r\n try {\r\n return (func() || dmx.noop).apply(scope, args);\r\n } catch (e) {\r\n console.warn(`Error calling method ${func().name} in expression: ${expression}`, e);\r\n return undefined;\r\n }\r\n };\r\n }\r\n\r\n function parseIndex (object) {\r\n const indexFn = parseExpression();\r\n\r\n consume('R_BRACKET');\r\n\r\n return () => {\r\n const obj = object();\r\n const index = indexFn();\r\n\r\n if (typeof obj != 'object' || obj == null) {\r\n return undefined;\r\n }\r\n\r\n if (obj.__dmxScope__) {\r\n return scope.get(index);\r\n }\r\n\r\n if (dmx.getType(obj) == 'map') {\r\n return obj.get(index);\r\n }\r\n\r\n return obj[index];\r\n };\r\n }\r\n\r\n function parseMember (object) {\r\n const token = expect();\r\n\r\n return () => {\r\n const obj = object();\r\n const type = dmx.getType(obj);\r\n\r\n if (token.name == 'METHOD') {\r\n const method = '__' + token.value;\r\n\r\n if (type == 'map' && typeof obj.get(method) == 'function') {\r\n return obj.get(method).bind(obj);\r\n }\r\n\r\n if (type == 'object' && typeof obj[method] == 'function') {\r\n return obj[method];\r\n }\r\n\r\n if (dmx.__formatters[type] && dmx.__formatters[type][token.value]) {\r\n return dmx.__formatters[type][token.value];\r\n }\r\n\r\n if (dmx.__formatters['any'] && dmx.__formatters['any'][token.value]) {\r\n return dmx.__formatters['any'][token.value];\r\n }\r\n\r\n return () => {\r\n if (obj != null) {\r\n console.warn(`Method \"${token.value}\" not found in expression: ${expression}`);\r\n }\r\n return undefined;\r\n };\r\n }\r\n\r\n if (obj && obj.__dmxScope__) {\r\n return scope.get(token.value);\r\n }\r\n\r\n if (type == 'map') {\r\n return obj.get(token.value);\r\n }\r\n\r\n return obj && typeof obj == 'object' && token.value in obj ? obj[token.value] : undefined;\r\n };\r\n }\r\n};","dmx.BaseComponent = dmx.createClass({\r\n constructor: function (node, parent) {\r\n this.$node = node;\r\n this.parent = parent;\r\n this.children = [];\r\n this.listeners = {};\r\n\r\n this.__disposables = [];\r\n this.__childDisposables = [];\r\n\r\n this.updatedProps = new Map();\r\n this.updateRequested = false;\r\n\r\n this.isInitialized = false;\r\n this.isDestroyed = false;\r\n\r\n this.props = new Proxy(\r\n {},\r\n {\r\n set: (target, prop, value, receiver) => {\r\n const oldValue = Reflect.get(target, prop, receiver);\r\n const ok = Reflect.set(target, prop, value, receiver);\r\n\r\n if (ok && this.isInitialized) {\r\n if ((this.attributes[prop] && this.attributes[prop].alwaysUpdate) || !dmx.equal(oldValue, value)) {\r\n this.requestUpdate(prop, oldValue);\r\n }\r\n }\r\n\r\n return ok;\r\n },\r\n }\r\n );\r\n\r\n this.data = dmx.signalProxy();\r\n this.seed = Math.random();\r\n\r\n this.name =\r\n node.getAttribute('id') ||\r\n node.getAttribute('name') ||\r\n (this.type && this.type.toLowerCase().replace(/^dmx-/, '')) ||\r\n '';\r\n this.name = this.name.replace(/[^\\w]/g, '');\r\n\r\n try {\r\n this.$initialData();\r\n this.$parseAttributes(node);\r\n this.init(node);\r\n if (this.render !== false) {\r\n this.render(node);\r\n }\r\n if (this.$node) {\r\n this.$customAttributes('mounted', this.$node);\r\n this.$node.dmxComponent = this;\r\n this.$node.dmxRendered = true;\r\n }\r\n this.isInitialized = true;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n tag: null,\r\n initialData: {},\r\n attributes: {},\r\n methods: {},\r\n events: {\r\n destroy: Event,\r\n },\r\n\r\n render: function (node) {\r\n if (this.$node) {\r\n this.$parse();\r\n }\r\n },\r\n\r\n parse: function (expression) {\r\n return dmx.parse(expression, this);\r\n },\r\n\r\n // find component based on name inside children\r\n find: function (name) {\r\n if (this.name == name) return this;\r\n\r\n for (var i = 0; i < this.children.length; i++) {\r\n var found = this.children[i].find(name);\r\n if (found) return found;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n init: dmx.noop,\r\n\r\n beforeUpdate: dmx.noop,\r\n update: dmx.noop,\r\n updated: dmx.noop,\r\n\r\n beforeDestroy: dmx.noop,\r\n destroy: dmx.noop,\r\n destroyed: dmx.noop,\r\n\r\n addEventListener: function (type, callback) {\r\n if (!(type in this.listeners)) {\r\n this.listeners[type] = new Set();\r\n }\r\n this.listeners[type].add(callback);\r\n },\r\n\r\n removeEventListener: function (type, callback) {\r\n if (!(type in this.listeners)) return;\r\n this.listeners[type].delete(callback);\r\n },\r\n\r\n dispatchEvent: function (event, props, data, nsp) {\r\n if (this.isDestroyed) return;\r\n\r\n if (typeof event == 'string') {\r\n var ComponentEvent = this.events[event] || CustomEvent;\r\n event = new ComponentEvent(event, props);\r\n }\r\n\r\n if (!(event.type in this.listeners)) return true;\r\n\r\n event.nsp = nsp;\r\n event.target = this;\r\n event.$data = data || {};\r\n for (let listener of this.listeners[event.type]) {\r\n if (listener.call(this, event) === false) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n return !event.defaultPrevented;\r\n },\r\n\r\n $createChild: function (name, node) {\r\n var Component = dmx.__components[name];\r\n var component = new Component(node, this);\r\n this.$addChild(component, component.name);\r\n },\r\n\r\n $addChild: function (child, name) {\r\n this.children.push(child);\r\n if (name) {\r\n if (this.data[name] && dmx.debug) {\r\n console.warn('Duplicate name \"' + name + '\" found, component not added to scope.');\r\n //return;\r\n }\r\n this.set(name, child.data);\r\n }\r\n },\r\n\r\n $removeChild: function (child) {\r\n // remove from children collection\r\n if (this.children.includes(child)) {\r\n this.children.splice(this.children.indexOf(child), 1);\r\n }\r\n // remove from data\r\n if (child.name && this.data[child.name]) {\r\n this.del(child.name);\r\n }\r\n },\r\n\r\n $customAttributes: function (hook, node, attributes) {\r\n const toCamelCase = (s) => s.replace(/-./g, (x) => x[1].toUpperCase());\r\n if (!attributes) attributes = dmx.dom.getAttributes(node);\r\n\r\n attributes.forEach((attr) => {\r\n if (node == this.$node) {\r\n if (attr.name == 'bind' && this.attributes[toCamelCase(attr.argument)]) {\r\n return;\r\n }\r\n\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n return;\r\n }\r\n }\r\n\r\n if (dmx.__attributes[hook][attr.name]) {\r\n this.__inChild = node != this.$node;\r\n const dispose = dmx.__attributes[hook][attr.name].call(this, node, attr);\r\n if (dispose) {\r\n this[this.__inChild ? '__childDisposables' : '__disposables'].push(dispose);\r\n }\r\n }\r\n });\r\n\r\n this.__inChild = null;\r\n },\r\n\r\n $parseTextNode(node) {\r\n if (node.nodeType !== 3) return;\r\n\r\n if (dmx.reExpression.test(node.nodeValue)) {\r\n const parts = node.nodeValue\r\n .replace(dmx.reExpressionReplace, (_, expression) => {\r\n return `##split##${expression}##split##`;\r\n })\r\n .split('##split##');\r\n\r\n const fragment = document.createDocumentFragment();\r\n parts.forEach((part, i) => {\r\n const textNode = document.createTextNode(part);\r\n fragment.appendChild(textNode);\r\n\r\n if (i % 2) {\r\n this.$watch(part, (value) => {\r\n textNode.nodeValue = value;\r\n });\r\n }\r\n });\r\n\r\n node.parentNode.replaceChild(fragment, node);\r\n }\r\n },\r\n\r\n $parse: function (node) {\r\n node = node || this.$node;\r\n\r\n if (!node) return;\r\n\r\n if (node.nodeType === 3) {\r\n return this.$parseTextNode(node);\r\n }\r\n\r\n if (node.nodeType !== 1) return;\r\n\r\n if (dmx.config.mapping) {\r\n Object.keys(dmx.config.mapping).forEach((map) => {\r\n dmx.array(node.querySelectorAll(map)).forEach((node) => {\r\n if (!node.hasAttribute('is')) {\r\n node.setAttribute('is', 'dmx-' + dmx.config.mapping[map]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n dmx.dom.walk(\r\n node,\r\n function (node) {\r\n if (node == this.$node) {\r\n // skip current node\r\n return;\r\n }\r\n\r\n // Element Node\r\n if (node.nodeType === 1) {\r\n var tagName = node.tagName.toLowerCase();\r\n var attributes = dmx.dom.getAttributes(node);\r\n\r\n if (node.hasAttribute('is')) {\r\n tagName = node.getAttribute('is');\r\n }\r\n\r\n if (dmx.reIgnoreElement.test(tagName)) {\r\n // ignore element\r\n return false;\r\n }\r\n\r\n this.$customAttributes('before', node, attributes);\r\n var idx = attributes.findIndex((attr) => attr.name === 'repeat');\r\n if (idx !== -1) return false;\r\n\r\n if (dmx.rePrefixed.test(tagName)) {\r\n tagName = tagName.replace(/^dmx-/i, '');\r\n\r\n if (tagName in dmx.__components) {\r\n node.isComponent = true;\r\n if (!node.dmxRendered) {\r\n this.$createChild(tagName, node);\r\n } else if (window.__WAPPLER__) {\r\n // This breaks some components in design view\r\n // causes flows to trigger constantly\r\n // components ofter have there own parsing and this breaks it\r\n if (node.dmxComponent && node.dmxComponent.$parse) {\r\n // for now ignode specific for flows with script tag\r\n if (!dmx.reIgnoreElement.test(node.tagName)) {\r\n node.dmxComponent.$parse();\r\n }\r\n }\r\n }\r\n return false;\r\n } else {\r\n console.warn('Unknown component found! ' + tagName);\r\n return;\r\n }\r\n }\r\n\r\n this.$customAttributes('mounted', node, attributes);\r\n }\r\n\r\n // Text Node\r\n if (node.nodeType === 3) {\r\n this.$parseTextNode(node);\r\n }\r\n },\r\n this\r\n );\r\n },\r\n\r\n $update: function (idents) {\r\n console.warn('Component.$update is deprecated.');\r\n },\r\n\r\n $parseAttributes: function (node) {\r\n const toKebabCase = (s) => s.replace(/[A-Z]/g, (c) => '-' + c.toLowerCase());\r\n\r\n for (const name in this.attributes) {\r\n const opts = this.attributes[name];\r\n const attrName = toKebabCase(name);\r\n\r\n let value = dmx.clone(opts.default);\r\n\r\n // static\r\n if (node.hasAttribute(attrName)) {\r\n if (opts.type === Boolean) {\r\n value = node.getAttribute(attrName) !== 'false';\r\n } else {\r\n value = node.getAttribute(attrName);\r\n\r\n if (opts.type === Number) {\r\n // Only set number is a valid number is given\r\n if (value && isFinite(Number(value))) {\r\n value = Number(value);\r\n }\r\n }\r\n\r\n if (opts.type === Object || opts.type === Array) {\r\n try {\r\n value = JSON.parse(value);\r\n } catch (err) {\r\n console.warn('Invalid attribute value, expected a JSON string got ' + value);\r\n }\r\n }\r\n\r\n if (opts.enum && !opts.enum.includes(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n this.props[name] = value;\r\n //opts.default = value;\r\n }\r\n\r\n // dynamic\r\n if (node.hasAttribute('dmx-bind:' + attrName)) {\r\n const expression = node.getAttribute('dmx-bind:' + attrName);\r\n\r\n this.$watch(expression, (value) => {\r\n if (value === undefined) {\r\n value = dmx.clone(opts.default);\r\n } else if (opts.type === Boolean) {\r\n value = !!value;\r\n } else {\r\n if (value != null) {\r\n if (opts.type === Number) {\r\n if (typeof value === 'string') {\r\n if (value && isFinite(Number(value))) {\r\n value = Number(value);\r\n } else {\r\n value = dmx.clone(opts.default);\r\n }\r\n } else if (typeof value !== 'number' || !isFinite(Number(value))) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n if (opts.type === String) {\r\n value = String(value);\r\n }\r\n\r\n if (opts.type === Object && typeof value !== 'object') {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.type === Array) {\r\n value = Array.from(value);\r\n }\r\n }\r\n\r\n if (opts.enum && !opts.enum.includes(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n this.props[name] = value;\r\n });\r\n } else {\r\n this.props[name] = value;\r\n }\r\n }\r\n\r\n for (const event in this.events) {\r\n if (node.hasAttribute('on' + event)) {\r\n this.__disposables.push(dmx.eventListener(this, event, Function('event', node.getAttribute('on' + event)), {}));\r\n }\r\n }\r\n\r\n dmx.dom.getAttributes(node).forEach((attr) => {\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n this.__disposables.push(dmx.eventListener(\r\n this,\r\n attr.argument,\r\n (event) => {\r\n if (event.originalEvent) {\r\n event = event.originalEvent;\r\n }\r\n\r\n var returnValue = dmx.parse(\r\n attr.value,\r\n dmx.DataScope(\r\n {\r\n $event: event.$data,\r\n $originalEvent: event,\r\n },\r\n this\r\n )\r\n );\r\n\r\n return returnValue;\r\n },\r\n attr.modifiers\r\n ));\r\n }\r\n });\r\n },\r\n\r\n requestUpdate: function (prop, oldValue) {\r\n //console.log(`request Update ${this.name} (${prop}: ${oldValue} => ${this.prop})`);\r\n if (!this.performUpdate) return;\r\n\r\n if (!this.updatedProps.has(prop)) {\r\n this.updatedProps.set(prop, oldValue);\r\n }\r\n\r\n if (!this.updateRequested) {\r\n //console.log('queue Microtask', this.name, this.updateRequested);\r\n //queueMicrotask(() => {\r\n dmx.nextTick(() => {\r\n //console.log('exec Microtask', this.name, this.updateRequested);\r\n if (this.isDestroyed) return;\r\n this.updateRequested = false;\r\n this.performUpdate(this.updatedProps);\r\n this.updatedProps.clear();\r\n });\r\n }\r\n\r\n this.updateRequested = true;\r\n },\r\n\r\n $initialData: function () {\r\n Object.assign(\r\n this.data,\r\n { $type: this.type },\r\n typeof this.initialData == 'function' ? this.initialData() : this.initialData\r\n );\r\n\r\n Object.keys(this.methods).forEach(function (method) {\r\n var self = this;\r\n this.data['__' + method] = function () {\r\n return self.methods[method].apply(self, Array.prototype.slice.call(arguments, 1));\r\n };\r\n }, this);\r\n },\r\n\r\n // alias for $watch\r\n $addBinding: function (expression, cb) {\r\n this.$watch(expression, cb);\r\n },\r\n\r\n $watch: function (expression, cb) {\r\n const prop = this.__inChild ? '__childDisposables' : '__disposables';\r\n if (!this[prop]) this[prop] = [];\r\n let init = true;\r\n\r\n this[prop].push(\r\n dmx.effect(() => {\r\n if (init) {\r\n cb.call(this, this.parse(expression));\r\n init = false;\r\n } else {\r\n const value = this.parse(expression);\r\n queueMicrotask(() => cb.call(this, value));\r\n }\r\n })\r\n );\r\n },\r\n\r\n $destroy: function () {\r\n this.dispatchEvent('destroy');\r\n this.beforeDestroy();\r\n this.destroy();\r\n this.isDestroyed = true;\r\n if (this.parent && this.parent.$removeChild) {\r\n this.parent.$removeChild(this);\r\n }\r\n this.$destroyChildren();\r\n this.__disposables.forEach((dispose) => dispose());\r\n this.__disposables = [];\r\n if (this.$node) {\r\n this.$node.dmxComponent = null;\r\n this.$node = null;\r\n }\r\n this.parent = null;\r\n this.data = {};\r\n this.destroyed();\r\n },\r\n\r\n $destroyChildren: function () {\r\n Array.from(this.children).forEach((child) => {\r\n child.$destroy();\r\n });\r\n this.children = [];\r\n\r\n this.__childDisposables.forEach((dispose) => dispose());\r\n this.__childDisposables = [];\r\n },\r\n\r\n get: function (name, ignoreParents) {\r\n if (this.data[name] !== undefined) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent && ignoreParents !== true) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return undefined;\r\n },\r\n\r\n add: function (name, value) {\r\n if (this.data[name]) {\r\n if (Array.isArray(this.data[name])) {\r\n this.data[name].push(value);\r\n } else {\r\n this.data[name] = [this.data[name], value];\r\n }\r\n } else {\r\n this.set(name, value);\r\n }\r\n },\r\n\r\n set: function (name, value) {\r\n if (typeof name == 'object') {\r\n dmx.batch(() => {\r\n for (var prop in name) {\r\n if (name.hasOwnProperty(prop)) {\r\n this.set(prop, name[prop]);\r\n }\r\n }\r\n });\r\n } else {\r\n this.data[name] = value;\r\n }\r\n },\r\n\r\n del: function (name) {\r\n delete this.data[name];\r\n },\r\n});\r\n","(function() {\r\n\r\n/**\r\n * Expose `pathToRegexp`.\r\n */\r\ndmx.pathToRegexp = pathToRegexp\r\ndmx.pathToRegexp.parse = parse\r\ndmx.pathToRegexp.compile = compile\r\ndmx.pathToRegexp.tokensToFunction = tokensToFunction\r\ndmx.pathToRegexp.tokensToRegExp = tokensToRegExp\r\n\r\n/**\r\n * Default configs.\r\n */\r\nvar DEFAULT_DELIMITER = '/'\r\n\r\n/**\r\n * The main path matching regexp utility.\r\n *\r\n * @type {RegExp}\r\n */\r\nvar PATH_REGEXP = new RegExp([\r\n // Match escaped characters that would otherwise appear in future matches.\r\n // This allows the user to escape special characters that won't transform.\r\n '(\\\\\\\\.)',\r\n // Match Express-style parameters and un-named parameters with a prefix\r\n // and optional suffixes. Matches appear as:\r\n //\r\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\r\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\r\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\r\n].join('|'), 'g')\r\n\r\n/**\r\n * Parse a string for the raw tokens.\r\n *\r\n * @param {string} str\r\n * @param {Object=} options\r\n * @return {!Array}\r\n */\r\nfunction parse (str, options) {\r\n var tokens = []\r\n var key = 0\r\n var index = 0\r\n var path = ''\r\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\r\n var whitelist = (options && options.whitelist) || undefined\r\n var pathEscaped = false\r\n var res\r\n\r\n while ((res = PATH_REGEXP.exec(str)) !== null) {\r\n var m = res[0]\r\n var escaped = res[1]\r\n var offset = res.index\r\n path += str.slice(index, offset)\r\n index = offset + m.length\r\n\r\n // Ignore already escaped sequences.\r\n if (escaped) {\r\n path += escaped[1]\r\n pathEscaped = true\r\n continue\r\n }\r\n\r\n var prev = ''\r\n var name = res[2]\r\n var capture = res[3]\r\n var group = res[4]\r\n var modifier = res[5]\r\n\r\n if (!pathEscaped && path.length) {\r\n var k = path.length - 1\r\n var c = path[k]\r\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\r\n\r\n if (matches) {\r\n prev = c\r\n path = path.slice(0, k)\r\n }\r\n }\r\n\r\n // Push the current path onto the tokens.\r\n if (path) {\r\n tokens.push(path)\r\n path = ''\r\n pathEscaped = false\r\n }\r\n\r\n var repeat = modifier === '+' || modifier === '*'\r\n var optional = modifier === '?' || modifier === '*'\r\n var pattern = capture || group\r\n var delimiter = prev || defaultDelimiter\r\n\r\n tokens.push({\r\n name: name || key++,\r\n prefix: prev,\r\n delimiter: delimiter,\r\n optional: optional,\r\n repeat: repeat,\r\n pattern: pattern\r\n ? escapeGroup(pattern)\r\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\r\n })\r\n }\r\n\r\n // Push any remaining characters.\r\n if (path || index < str.length) {\r\n tokens.push(path + str.substr(index))\r\n }\r\n\r\n return tokens\r\n}\r\n\r\n/**\r\n * Compile a string to a template function for the path.\r\n *\r\n * @param {string} str\r\n * @param {Object=} options\r\n * @return {!function(Object=, Object=)}\r\n */\r\nfunction compile (str, options) {\r\n return tokensToFunction(parse(str, options))\r\n}\r\n\r\n/**\r\n * Expose a method for transforming tokens into the path function.\r\n */\r\nfunction tokensToFunction (tokens) {\r\n // Compile all the tokens into regexps.\r\n var matches = new Array(tokens.length)\r\n\r\n // Compile all the patterns before compilation.\r\n for (var i = 0; i < tokens.length; i++) {\r\n if (typeof tokens[i] === 'object') {\r\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\r\n }\r\n }\r\n\r\n return function (data, options) {\r\n var path = ''\r\n var encode = (options && options.encode) || encodeURIComponent\r\n\r\n for (var i = 0; i < tokens.length; i++) {\r\n var token = tokens[i]\r\n\r\n if (typeof token === 'string') {\r\n path += token\r\n continue\r\n }\r\n\r\n var value = data ? data[token.name] : undefined\r\n var segment\r\n\r\n if (Array.isArray(value)) {\r\n if (!token.repeat) {\r\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\r\n }\r\n\r\n if (value.length === 0) {\r\n if (token.optional) continue\r\n\r\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\r\n }\r\n\r\n for (var j = 0; j < value.length; j++) {\r\n segment = encode(value[j], token)\r\n\r\n if (!matches[i].test(segment)) {\r\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\r\n }\r\n\r\n path += (j === 0 ? token.prefix : token.delimiter) + segment\r\n }\r\n\r\n continue\r\n }\r\n\r\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\r\n segment = encode(String(value), token)\r\n\r\n if (!matches[i].test(segment)) {\r\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\r\n }\r\n\r\n path += token.prefix + segment\r\n continue\r\n }\r\n\r\n if (token.optional) continue\r\n\r\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\r\n }\r\n\r\n return path\r\n }\r\n}\r\n\r\n/**\r\n * Escape a regular expression string.\r\n *\r\n * @param {string} str\r\n * @return {string}\r\n */\r\nfunction escapeString (str) {\r\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\r\n}\r\n\r\n/**\r\n * Escape the capturing group by escaping special characters and meaning.\r\n *\r\n * @param {string} group\r\n * @return {string}\r\n */\r\nfunction escapeGroup (group) {\r\n return group.replace(/([=!:$/()])/g, '\\\\$1')\r\n}\r\n\r\n/**\r\n * Get the flags for a regexp from the options.\r\n *\r\n * @param {Object} options\r\n * @return {string}\r\n */\r\nfunction flags (options) {\r\n return options && options.sensitive ? '' : 'i'\r\n}\r\n\r\n/**\r\n * Pull out keys from a regexp.\r\n *\r\n * @param {!RegExp} path\r\n * @param {Array=} keys\r\n * @return {!RegExp}\r\n */\r\nfunction regexpToRegexp (path, keys) {\r\n if (!keys) return path\r\n\r\n // Use a negative lookahead to match only capturing groups.\r\n var groups = path.source.match(/\\((?!\\?)/g)\r\n\r\n if (groups) {\r\n for (var i = 0; i < groups.length; i++) {\r\n keys.push({\r\n name: i,\r\n prefix: null,\r\n delimiter: null,\r\n optional: false,\r\n repeat: false,\r\n pattern: null\r\n })\r\n }\r\n }\r\n\r\n return path\r\n}\r\n\r\n/**\r\n * Transform an array into a regexp.\r\n *\r\n * @param {!Array} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction arrayToRegexp (path, keys, options) {\r\n var parts = []\r\n\r\n for (var i = 0; i < path.length; i++) {\r\n parts.push(pathToRegexp(path[i], keys, options).source)\r\n }\r\n\r\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\r\n}\r\n\r\n/**\r\n * Create a path regexp from string input.\r\n *\r\n * @param {string} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction stringToRegexp (path, keys, options) {\r\n return tokensToRegExp(parse(path, options), keys, options)\r\n}\r\n\r\n/**\r\n * Expose a function for taking tokens and returning a RegExp.\r\n *\r\n * @param {!Array} tokens\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction tokensToRegExp (tokens, keys, options) {\r\n options = options || {}\r\n\r\n var strict = options.strict\r\n var start = options.start !== false\r\n var end = options.end !== false\r\n var delimiter = options.delimiter || DEFAULT_DELIMITER\r\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\r\n var route = start ? '^' : ''\r\n\r\n // Iterate over the tokens and create our regexp string.\r\n for (var i = 0; i < tokens.length; i++) {\r\n var token = tokens[i]\r\n\r\n if (typeof token === 'string') {\r\n route += escapeString(token)\r\n } else {\r\n var capture = token.repeat\r\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\r\n : token.pattern\r\n\r\n if (keys) keys.push(token)\r\n\r\n if (token.optional) {\r\n if (!token.prefix) {\r\n route += '(' + capture + ')?'\r\n } else {\r\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\r\n }\r\n } else {\r\n route += escapeString(token.prefix) + '(' + capture + ')'\r\n }\r\n }\r\n }\r\n\r\n if (end) {\r\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\r\n\r\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\r\n } else {\r\n var endToken = tokens[tokens.length - 1]\r\n var isEndDelimited = typeof endToken === 'string'\r\n ? endToken[endToken.length - 1] === delimiter\r\n : endToken === undefined\r\n\r\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\r\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\r\n }\r\n\r\n return new RegExp(route, flags(options))\r\n}\r\n\r\n/**\r\n * Normalize the given path string, returning a regular expression.\r\n *\r\n * An empty array can be passed in for the keys, which will hold the\r\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\r\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\r\n *\r\n * @param {(string|RegExp|Array)} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction pathToRegexp (path, keys, options) {\r\n if (path instanceof RegExp) {\r\n return regexpToRegexp(path, keys)\r\n }\r\n\r\n if (Array.isArray(path)) {\r\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\r\n }\r\n\r\n return stringToRegexp(/** @type {string} */ (path), keys, options)\r\n}\r\n\r\n})();\r\n","if (!window.Hjson) {\r\n window.Hjson = {};\r\n\r\n Hjson.parse = function(source) {\r\n // only parse, stripped dsf and comment support\r\n\r\n var text;\r\n var at; // The index of the current character\r\n var ch; // The current character\r\n var escapee = {\r\n '\"': '\"',\r\n \"'\": \"'\",\r\n '\\\\': '\\\\',\r\n '/': '/',\r\n b: '\\b',\r\n f: '\\f',\r\n n: '\\n',\r\n r: '\\r',\r\n t: '\\t'\r\n };\r\n\r\n function resetAt() {\r\n at = 0;\r\n ch = ' ';\r\n }\r\n\r\n function isPunctuatorChar(c) {\r\n return c === '{' || c === '}' || c === '[' || c === ']' || c === ',' || c === ':';\r\n }\r\n\r\n // Call error when something is wrong.\r\n function error(m) {\r\n var i, col=0, line=1;\r\n for (i = at-1; i > 0 && text[i] !== '\\n'; i--, col++) {}\r\n for (; i > 0; i--) if (text[i] === '\\n') line++;\r\n throw new Error(m + \" at line \" + line + \",\" + col + \" >>>\" + text.substr(at-col, 20) + \" ...\");\r\n }\r\n\r\n function next() {\r\n // get the next character.\r\n ch = text.charAt(at);\r\n at++;\r\n return ch;\r\n }\r\n\r\n function peek(offs) {\r\n // range check is not required\r\n return text.charAt(at + offs);\r\n }\r\n\r\n function string(allowML) {\r\n // Parse a string value.\r\n // callers make sure that (ch === '\"' || ch === \"'\")\r\n var string = '';\r\n\r\n // When parsing for string values, we must look for \"/' and \\ characters.\r\n var exitCh = ch;\r\n while (next()) {\r\n if (ch === exitCh) {\r\n next();\r\n if (allowML && exitCh === \"'\" && ch === \"'\" && string.length === 0) {\r\n // ''' indicates a multiline string\r\n next();\r\n return mlString();\r\n } else return string;\r\n }\r\n if (ch === '\\\\') {\r\n next();\r\n if (ch === 'u') {\r\n var uffff = 0;\r\n for (var i = 0; i < 4; i++) {\r\n next();\r\n var c = ch.charCodeAt(0), hex;\r\n if (ch >= '0' && ch <= '9') hex = c - 48;\r\n else if (ch >= 'a' && ch <= 'f') hex = c - 97 + 0xa;\r\n else if (ch >= 'A' && ch <= 'F') hex = c - 65 + 0xa;\r\n else error(\"Bad \\\\u char \" + ch);\r\n uffff = uffff * 16 + hex;\r\n }\r\n string += String.fromCharCode(uffff);\r\n } else if (typeof escapee[ch] === 'string') {\r\n string += escapee[ch];\r\n } else break;\r\n } else if (ch === '\\n' || ch === '\\r') {\r\n error(\"Bad string containing newline\");\r\n } else {\r\n string += ch;\r\n }\r\n }\r\n error(\"Bad string\");\r\n }\r\n\r\n function mlString() {\r\n // Parse a multiline string value.\r\n var string = '', triple = 0;\r\n\r\n // we are at ''' +1 - get indent\r\n var indent = 0;\r\n for (;;) {\r\n var c=peek(-indent-5);\r\n if (!c || c === '\\n') break;\r\n indent++;\r\n }\r\n\r\n function skipIndent() {\r\n var skip = indent;\r\n while (ch && ch <= ' ' && ch !== '\\n' && skip-- > 0) next();\r\n }\r\n\r\n // skip white/to (newline)\r\n while (ch && ch <= ' ' && ch !== '\\n') next();\r\n if (ch === '\\n') { next(); skipIndent(); }\r\n\r\n // When parsing multiline string values, we must look for ' characters.\r\n for (;;) {\r\n if (!ch) {\r\n error(\"Bad multiline string\");\r\n } else if (ch === '\\'') {\r\n triple++;\r\n next();\r\n if (triple === 3) {\r\n if (string.slice(-1) === '\\n') string=string.slice(0, -1); // remove last EOL\r\n return string;\r\n } else continue;\r\n } else {\r\n while (triple > 0) {\r\n string += '\\'';\r\n triple--;\r\n }\r\n }\r\n if (ch === '\\n') {\r\n string += '\\n';\r\n next();\r\n skipIndent();\r\n } else {\r\n if (ch !== '\\r') string += ch;\r\n next();\r\n }\r\n }\r\n }\r\n\r\n function keyname() {\r\n // quotes for keys are optional in Hjson\r\n // unless they include {}[],: or whitespace.\r\n\r\n if (ch === '\"' || ch === \"'\") return string(false);\r\n\r\n var name = \"\", start = at, space = -1;\r\n for (;;) {\r\n if (ch === ':') {\r\n if (!name) error(\"Found ':' but no key name (for an empty key name use quotes)\");\r\n else if (space >=0 && space !== name.length) { at = start + space; error(\"Found whitespace in your key name (use quotes to include)\"); }\r\n return name;\r\n } else if (ch <= ' ') {\r\n if (!ch) error(\"Found EOF while looking for a key name (check your syntax)\");\r\n else if (space < 0) space = name.length;\r\n } else if (isPunctuatorChar(ch)) {\r\n error(\"Found '\" + ch + \"' where a key name was expected (check your syntax or use quotes if the key name includes {}[],: or whitespace)\");\r\n } else {\r\n name += ch;\r\n }\r\n next();\r\n }\r\n }\r\n\r\n function white() {\r\n while (ch) {\r\n // Skip whitespace.\r\n while (ch && ch <= ' ') next();\r\n // Hjson allows comments\r\n if (ch === '#' || ch === '/' && peek(0) === '/') {\r\n while (ch && ch !== '\\n') next();\r\n } else if (ch === '/' && peek(0) === '*') {\r\n next(); next();\r\n while (ch && !(ch === '*' && peek(0) === '/')) next();\r\n if (ch) { next(); next(); }\r\n } else break;\r\n }\r\n }\r\n\r\n function tfnns() {\r\n // Hjson strings can be quoteless\r\n // returns string, true, false, or null.\r\n var value = ch;\r\n if (isPunctuatorChar(ch))\r\n error(\"Found a punctuator character '\" + ch + \"' when expecting a quoteless string (check your syntax)\");\r\n\r\n for(;;) {\r\n next();\r\n // (detection of ml strings was moved to string())\r\n var isEol = ch === '\\r' || ch === '\\n' || ch === '';\r\n if (isEol ||\r\n ch === ',' || ch === '}' || ch === ']' ||\r\n ch === '#' ||\r\n ch === '/' && (peek(0) === '/' || peek(0) === '*')\r\n ) {\r\n // this tests for the case of {true|false|null|num}\r\n // followed by { ',' | '}' | ']' | '#' | '//' | '/*' }\r\n // which needs to be parsed as the specified value\r\n var chf = value[0];\r\n switch (chf) {\r\n case 'f': if (value.trim() === \"false\") return false; break;\r\n case 'n': if (value.trim() === \"null\") return null; break;\r\n case 't': if (value.trim() === \"true\") return true; break;\r\n default:\r\n if (chf === '-' || chf >= '0' && chf <= '9') {\r\n var n = tryParseNumber(value);\r\n if (n !== undefined) return n;\r\n }\r\n }\r\n if (isEol) {\r\n // remove any whitespace at the end (ignored in quoteless strings)\r\n return value.trim();\r\n }\r\n }\r\n value += ch;\r\n }\r\n }\r\n\r\n function tryParseNumber(text, stopAtNext) {\r\n // try to parse a number\r\n \r\n var number, string = '', leadingZeros = 0, testLeading = true;\r\n var at = 0;\r\n var ch;\r\n function next() {\r\n ch = text.charAt(at);\r\n at++;\r\n return ch;\r\n }\r\n \r\n next();\r\n if (ch === '-') {\r\n string = '-';\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n if (testLeading) {\r\n if (ch == '0') leadingZeros++;\r\n else testLeading = false;\r\n }\r\n string += ch;\r\n next();\r\n }\r\n if (testLeading) leadingZeros--; // single 0 is allowed\r\n if (ch === '.') {\r\n string += '.';\r\n while (next() && ch >= '0' && ch <= '9')\r\n string += ch;\r\n }\r\n if (ch === 'e' || ch === 'E') {\r\n string += ch;\r\n next();\r\n if (ch === '-' || ch === '+') {\r\n string += ch;\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n string += ch;\r\n next();\r\n }\r\n }\r\n \r\n // skip white/to (newline)\r\n while (ch && ch <= ' ') next();\r\n \r\n if (stopAtNext) {\r\n // end scan if we find a punctuator character like ,}] or a comment\r\n if (ch === ',' || ch === '}' || ch === ']' ||\r\n ch === '#' || ch === '/' && (text[at] === '/' || text[at] === '*')) ch = 0;\r\n }\r\n \r\n number = +string;\r\n if (ch || leadingZeros || !isFinite(number)) return undefined;\r\n else return number;\r\n }\r\n \r\n function errorClosingHint(value) {\r\n function search(value, ch) {\r\n var i, k, length, res;\r\n switch (typeof value) {\r\n case 'string':\r\n if (value.indexOf(ch) >= 0) res = value;\r\n break;\r\n case 'object':\r\n if (Object.prototype.toString.apply(value) === '[object Array]') {\r\n for (i = 0, length = value.length; i < length; i++) {\r\n res=search(value[i], ch) || res;\r\n }\r\n } else {\r\n for (k in value) {\r\n if (!Object.prototype.hasOwnProperty.call(value, k)) continue;\r\n res=search(value[k], ch) || res;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n \r\n function report(ch) {\r\n var possibleErr=search(value, ch);\r\n if (possibleErr) {\r\n return \"found '\"+ch+\"' in a string value, your mistake could be with:\\n\"+\r\n \" > \"+possibleErr+\"\\n\"+\r\n \" (unquoted strings contain everything up to the next line!)\";\r\n } else return \"\";\r\n }\r\n \r\n return report('}') || report(']');\r\n }\r\n\r\n function array() {\r\n // Parse an array value.\r\n // assuming ch === '['\r\n \r\n var array = [];\r\n try {\r\n next();\r\n white();\r\n if (ch === ']') {\r\n next();\r\n return array; // empty array\r\n }\r\n \r\n while (ch) {\r\n array.push(value());\r\n white();\r\n // in Hjson the comma is optional and trailing commas are allowed\r\n // note that we do not keep comments before the , if there are any\r\n if (ch === ',') { next(); white(); }\r\n if (ch === ']') {\r\n next();\r\n return array;\r\n }\r\n white();\r\n }\r\n \r\n error(\"End of input while parsing an array (missing ']')\");\r\n } catch (e) {\r\n e.hint=e.hint||errorClosingHint(array);\r\n throw e;\r\n }\r\n }\r\n\r\n function object(withoutBraces) {\r\n // Parse an object value.\r\n \r\n var key = \"\", object = {};\r\n \r\n try {\r\n if (!withoutBraces) {\r\n // assuming ch === '{'\r\n next();\r\n }\r\n\r\n white();\r\n if (ch === '}' && !withoutBraces) {\r\n next();\r\n return object; // empty object\r\n }\r\n while (ch) {\r\n key = keyname();\r\n white();\r\n if (ch !== ':') error(\"Expected ':' instead of '\" + ch + \"'\");\r\n next();\r\n // duplicate keys overwrite the previous value\r\n object[key] = value();\r\n white();\r\n // in Hjson the comma is optional and trailing commas are allowed\r\n // note that we do not keep comments before the , if there are any\r\n if (ch === ',') { next(); white(); }\r\n if (ch === '}' && !withoutBraces) {\r\n next();\r\n return object;\r\n }\r\n white();\r\n }\r\n \r\n if (withoutBraces) return object;\r\n else error(\"End of input while parsing an object (missing '}')\");\r\n } catch (e) {\r\n e.hint=e.hint||errorClosingHint(object);\r\n throw e;\r\n }\r\n }\r\n\r\n function value() {\r\n // Parse a Hjson value. It could be an object, an array, a string, a number or a word.\r\n \r\n white();\r\n switch (ch) {\r\n case '{': return object();\r\n case '[': return array();\r\n case \"'\":\r\n case '\"': return string(true);\r\n default: return tfnns();\r\n }\r\n }\r\n\r\n function checkTrailing(v) {\r\n white();\r\n if (ch) error(\"Syntax error, found trailing characters\");\r\n return v;\r\n }\r\n\r\n function rootValue() {\r\n white();\r\n switch (ch) {\r\n case '{': return checkTrailing(object());\r\n case '[': return checkTrailing(array());\r\n default: return checkTrailing(value());\r\n }\r\n }\r\n\r\n if (typeof source!==\"string\") throw new Error(\"source is not a string\");\r\n text = source;\r\n resetAt();\r\n return rootValue();\r\n };\r\n}","dmx.Flow = dmx.createClass({\r\n constructor: function (parent) {\r\n if (!(this instanceof dmx.Flow)) {\r\n return new dmx.Flow(parent);\r\n }\r\n\r\n if (!window.Promise) {\r\n console.warn('Promises are not supported, flows can not be used');\r\n }\r\n\r\n this._execStep = this._execStep.bind(this);\r\n\r\n this.scope = new dmx.DataScope({}, parent);\r\n this.output = {};\r\n },\r\n\r\n run: function (flow) {\r\n this.output = {};\r\n\r\n return this._exec(flow.exec || flow).then(() => {\r\n if (dmx.debug) {\r\n console.debug('finished', this.output);\r\n }\r\n return this.output;\r\n });\r\n },\r\n\r\n _each: function (arr, fn) {\r\n return Promise.resolve(arr).then((arr) => {\r\n arr = Array.isArray(arr) ? arr : [arr];\r\n\r\n return arr\r\n .reduce((prev, curr, i) => {\r\n return prev.then(() => {\r\n return fn(curr, i, arr.length).then((result) => {\r\n if (result) {\r\n arr[i] = result;\r\n }\r\n });\r\n });\r\n }, Promise.resolve())\r\n .then(() => {\r\n return arr;\r\n });\r\n });\r\n },\r\n\r\n _exec: function (flow) {\r\n if (flow.steps) {\r\n var promise = this._each(flow.steps, this._execStep);\r\n\r\n if (flow.catch) {\r\n promise.catch((err) => {\r\n return this._each(flow.catch, self._execStep);\r\n });\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n return this._each(flow, this._execStep);\r\n },\r\n\r\n _execStep: function (step) {\r\n for (let name in step) {\r\n if (step.hasOwnProperty(name) && dmx.__actions[name]) {\r\n const action = dmx.__actions[name].bind(this);\r\n const options = step[name];\r\n const timerName = name + Date.now();\r\n\r\n if (dmx.debug) {\r\n console.debug('exec action', name, options);\r\n console.time(timerName);\r\n }\r\n\r\n if (options.disabled) {\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.resolve(action(options)).then((output) => {\r\n if (dmx.debug) {\r\n console.debug('finished exec action', name, options);\r\n console.timeEnd(timerName);\r\n }\r\n\r\n if (options.name) {\r\n if (dmx.debug) {\r\n console.debug('set data', options.name, output);\r\n }\r\n\r\n this.scope.set(options.name, output);\r\n\r\n if (options.output) {\r\n if (dmx.debug) {\r\n console.debug('set output', options.name, output);\r\n }\r\n this.output[options.name] = output;\r\n }\r\n }\r\n });\r\n } else {\r\n throw new Error('Action ' + name + ' was not found.');\r\n }\r\n }\r\n },\r\n\r\n parse: function (value) {\r\n if (value == null) return value;\r\n\r\n value = value.valueOf();\r\n\r\n if (typeof value == 'object') {\r\n var obj = value.slice ? [] : {};\r\n\r\n for (var key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n obj[key] = this.parse(value[key], this.scope);\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n if (typeof value == 'string' && value.indexOf('{{') != -1) {\r\n return dmx.parse(value, this.scope);\r\n }\r\n\r\n return value;\r\n },\r\n});\r\n\r\ndmx.Flow.run = function (flow, data) {\r\n var instance = new dmx.Flow(data);\r\n return instance.run(flow);\r\n};\r\n","dmx.Component(\"app\", {\r\n\r\n initialData: {\r\n query: {},\r\n },\r\n\r\n events: {\r\n ready: Event,\r\n load: Event,\r\n },\r\n\r\n init () {\r\n this.dispatchLoad = this.dispatchEvent.bind(this, \"load\");\r\n this._parseQuery = this._parseQuery.bind(this);\r\n\r\n // is this remove needed?\r\n window.addEventListener(\"load\", this.dispatchLoad, { once: true });\r\n window.addEventListener(\"load\", this._parseQuery);\r\n window.addEventListener(\"popstate\", this._parseQuery);\r\n window.addEventListener(\"pushstate\", this._parseQuery);\r\n window.addEventListener(\"replacestate\", this._parseQuery);\r\n\r\n this._parseQuery();\r\n\r\n queueMicrotask(() => this.dispatchEvent(\"ready\"));\r\n },\r\n\r\n destroy () {\r\n window.removeEventListener(\"load\", this.dispatchLoad);\r\n window.removeEventListener(\"load\", this._parseQuery);\r\n window.removeEventListener(\"popstate\", this._parseQuery);\r\n window.removeEventListener(\"pushstate\", this._parseQuery);\r\n window.removeEventListener(\"replacestate\", this._parseQuery);\r\n },\r\n\r\n _parseQuery () {\r\n let querystring = \"\";\r\n\r\n if (window.location.search) {\r\n querystring = window.location.search.slice(1);\r\n } else if (window.location.hash.indexOf(\"?\")) {\r\n querystring = window.location.hash.slice(\r\n window.location.hash.indexOf(\"?\") + 1\r\n );\r\n if (querystring.indexOf(\"#\") > 0) {\r\n querystring = querystring.slice(0, querystring.indexOf(\"#\"));\r\n }\r\n }\r\n\r\n let query = querystring.split(\"&\").reduce(function (query, part) {\r\n var p = part.replace(/\\+/g, \" \").split(\"=\");\r\n if (p[0]) {\r\n query[decodeURIComponent(p[0])] = decodeURIComponent(p[1] || \"\");\r\n }\r\n return query;\r\n }, {});\r\n\r\n let base = document.querySelector('meta[name=\"ac:base\"]');\r\n let route = document.querySelector('meta[name=\"ac:route\"]');\r\n if (route && route.content) {\r\n let keys = [];\r\n let path = route.content;\r\n\r\n if (base && base.content) {\r\n path = base.content.replace(/\\/$/, \"\") + path;\r\n }\r\n\r\n let re = dmx.pathToRegexp(path, keys, { end: false });\r\n let match = re.exec(decodeURI(window.location.pathname));\r\n\r\n if (match) {\r\n keys.forEach(function (key, index) {\r\n query[key.name] = match[index + 1];\r\n });\r\n }\r\n }\r\n\r\n this.set(\"query\", query);\r\n },\r\n\r\n});\r\n","dmx.Component('form', {\r\n\r\n attributes: {\r\n novalidate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n methods: {\r\n submit (direct) {\r\n this._submit(direct);\r\n },\r\n\r\n reset () {\r\n this._reset();\r\n },\r\n\r\n validate () {\r\n this._validate();\r\n },\r\n },\r\n\r\n events: {\r\n invalid: Event,\r\n submit: Event,\r\n },\r\n\r\n init (node) {\r\n this._submitHandler = this._submitHandler.bind(this);\r\n this._resetHandler = this._resetHandler.bind(this);\r\n\r\n node.noValidate = true;\r\n node.addEventListener('submit', this._submitHandler);\r\n node.addEventListener('reset', this._resetHandler);\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('submit', this._submitHandler);\r\n this.$node.removeEventListener('reset', this._resetHandler);\r\n },\r\n\r\n _submitHandler (event) {\r\n event.preventDefault();\r\n this._submit();\r\n },\r\n\r\n _resetHandler (event) {\r\n // remove this when validation is rewritten\r\n if (dmx.validateReset) dmx.validateReset(this.$node);\r\n if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\r\n },\r\n\r\n _submit (direct) {\r\n if (direct) {\r\n return this._formSubmit();\r\n }\r\n\r\n if (this.props.novalidate || this._validate()) {\r\n if (this.dispatchEvent('submit', { cancelable: true })) {\r\n this._formSubmit();\r\n }\r\n } else {\r\n this.dispatchEvent('invalid');\r\n this._focusFirstInvalid();\r\n }\r\n },\r\n\r\n _reset () {\r\n this._formReset();\r\n },\r\n\r\n _validate () {\r\n if (dmx.validate) return dmx.validate(this.$node);\r\n Array.from(this.$node.elements).forEach(node => node.dirty = true);\r\n return this.$node.checkValidity();\r\n },\r\n\r\n _formSubmit () {\r\n HTMLFormElement.prototype.submit.call(this.$node);\r\n },\r\n\r\n _formReset () {\r\n HTMLFormElement.prototype.reset.call(this.$node);\r\n },\r\n\r\n _focusFirstInvalid () {\r\n const elm = Array.from(this.$node.elements).find(elm => !elm.validity.valid);\r\n if (elm) elm.focus();\r\n },\r\n\r\n _parseJsonForm () {\r\n const result = {};\r\n\r\n for (const element of this.$node.elements) {\r\n if (element.name && !element.disabled) {\r\n const steps = parseSteps(element.name.replace(/\\[\\]$/, \"\"));\r\n let context = result;\r\n\r\n for (const step of steps) {\r\n const type = element.type;\r\n\r\n if (type == \"number\") {\r\n if (element.value) {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n +element.value\r\n );\r\n }\r\n } else if (type == \"radio\" || type == \"checkbox\") {\r\n if (element.getAttribute(\"value\")) {\r\n if (element.checked) {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n element.value\r\n );\r\n }\r\n } else {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n element.checked\r\n );\r\n }\r\n } else if (type == \"select-multiple\") {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n Array.from(element.selectedOptions).map((opt) => opt.value)\r\n );\r\n } else {\r\n context = setValue(context, step, context[step.key], element.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n\r\n function parseSteps(name) {\r\n const steps = [],\r\n org = name;\r\n const re = /^\\[([^\\]]*)\\]/;\r\n const reNumeric = /^\\d+$/;\r\n\r\n name = name.replace(/^([^\\[]+)/, (m, p1) => {\r\n steps.push({ type: \"object\", key: p1 });\r\n return \"\";\r\n });\r\n\r\n if (!name) {\r\n steps[0].last = true;\r\n return steps;\r\n }\r\n\r\n while (name) {\r\n if (re.test(name)) {\r\n name = name.replace(re, (m, p1) => {\r\n if (!p1) {\r\n steps[steps.length - 1].append = true;\r\n } else if (reNumeric.test(p1)) {\r\n steps.push({ type: \"array\", key: +p1 });\r\n } else {\r\n steps.push({ type: \"object\", key: p1 });\r\n }\r\n\r\n return \"\";\r\n });\r\n\r\n continue;\r\n }\r\n\r\n return { type: \"object\", key: org, last: true };\r\n }\r\n\r\n for (let i = 0, n = steps.length; i < n; i++) {\r\n const step = steps[i];\r\n\r\n if (i + 1 < n) step.nextType = steps[i + 1].type;\r\n else step.last = true;\r\n }\r\n\r\n return steps;\r\n }\r\n\r\n function setValue(context, step, current, value) {\r\n if (step.last) {\r\n if (current === undefined) {\r\n context[step.key] = step.append ? [value] : value;\r\n } else if (Array.isArray(current)) {\r\n context[step.key].push(value);\r\n } else if (typeof current == \"object\") {\r\n return setValue(\r\n current,\r\n { type: \"object\", key: \"\", last: true },\r\n current[\"\"],\r\n value\r\n );\r\n } else {\r\n context[step.key] = [current, value];\r\n }\r\n\r\n return context;\r\n }\r\n\r\n if (current === undefined) {\r\n return (context[step.key] = step.nextType == \"array\" ? [] : {});\r\n } else if (Array.isArray(current)) {\r\n if (step.nextType == \"array\") return current;\r\n const obj = {};\r\n for (let i = 0, n = current.length; i < n; i++) {\r\n if (current[i] !== undefined) obj[i] = current[i];\r\n }\r\n return (context[step.key] = obj);\r\n } else if (typeof current == \"object\") {\r\n return context[step.key];\r\n }\r\n\r\n return (context[step.key] = { \"\": current });\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('form-element', {\r\n\r\n initialData: {\r\n disabled: false,\r\n focused: false,\r\n invalid: false,\r\n validationMessage: '',\r\n value: '',\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: '',\r\n alwaysUpdate: true,\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n\r\n focus () {\r\n this._focus();\r\n },\r\n\r\n disable (disable) {\r\n this._disable(disable);\r\n },\r\n\r\n validate () {\r\n this._validate();\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n changed: Event,\r\n },\r\n\r\n init (node) {\r\n this._inputHandler = this._inputHandler.bind(this);\r\n this._changeHandler = this._changeHandler.bind(this);\r\n this._invalidHandler = this._invalidHandler.bind(this);\r\n this._resetHandler = this._resetHandler.bind(this);\r\n this._focusHandler = this._focusHandler.bind(this);\r\n this._blurHandler = this._blurHandler.bind(this);\r\n\r\n node.value = this.props.value || '';\r\n node.defaultValue = node.value ;\r\n \r\n node.addEventListener('input', this._inputHandler);\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('invalid', this._invalidHandler);\r\n node.addEventListener('focus', this._focusHandler);\r\n node.addEventListener('blur', this._blurHandler);\r\n \r\n if (node.form) {\r\n this._form = node.form;\r\n this._form.addEventListener('reset', this._resetHandler);\r\n }\r\n\r\n if (this.props.disabled) {\r\n this._disable(this.props.disabled);\r\n }\r\n \r\n this.set('value', this.props.value);\r\n if (this.$node === document.activeElement) {\r\n this.set('focused', true);\r\n }\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('input', this._inputHandler);\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('invalid', this._invalidHandler);\r\n this.$node.removeEventListener('focus', this._focusHandler);\r\n this.$node.removeEventListener('blur', this._blurHandler);\r\n if (this._form) {\r\n this._form.removeEventListener('reset', this._resetHandler);\r\n this._form = null;\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n\r\n if (updatedProps.has('disabled')) {\r\n this._disable(this.props.disabled);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n this.$node.value = value || '';\r\n if (defaultValue) this.$node.defaultValue = value || '';\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _focus () {\r\n this.$node.focus();\r\n },\r\n\r\n _disable (disable) {\r\n this.$node.disabled = disable;\r\n this.set('disabled', this.$node.disabled);\r\n },\r\n\r\n _validate () {\r\n dmx.validate(this.$node);\r\n\r\n if (this.$node.dirty) {\r\n this.set({\r\n invalid: !this.$node.validity.valid,\r\n validationMessage: this.$node.validationMessage,\r\n });\r\n }\r\n },\r\n\r\n _inputHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n if (this.data.value !== this.$node.value) {\r\n this.set('value', this.$node.value);\r\n if (event) this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n if (this.data.value !== this.$node.value) {\r\n this.set('value', this.$node.value);\r\n if (event) this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n _invalidHandler (event) {\r\n this.set({\r\n invalid: !this.$node.validity.valid,\r\n validationMessage: this.$node.validationMessage,\r\n });\r\n },\r\n\r\n _resetHandler (event) {\r\n if (!this.$node) return;\r\n this.$node.dirty = false;\r\n this.set({\r\n invalid: false,\r\n validationMessage: '',\r\n });\r\n this._changeHandler(event);\r\n },\r\n\r\n _focusHandler (event) {\r\n this.set('focused', true);\r\n },\r\n\r\n _blurHandler (event) {\r\n this.set('focused', false);\r\n },\r\n\r\n});\r\n","dmx.Component('textarea', {\r\n\r\n extends: 'form-element',\r\n\r\n init (node) {\r\n if (!this.props.value) {\r\n const value = this.$node.value;\r\n this.props.value = value.includes('{{') ? this.parse(value) : value;\r\n }\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n },\r\n\r\n});\r\n","dmx.Component('input', { extends: 'form-element' });\r\n","dmx.Component('input-file', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n imageMaxWidth: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageMaxHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageType: {\r\n type: String,\r\n default: null, // defaults to original image format\r\n enum: ['png', 'jpeg', 'webp'],\r\n },\r\n\r\n imageQuality: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n initialData: {\r\n file: null,\r\n },\r\n\r\n _imageTypes: {\r\n png: 'image/png', \r\n jpeg: 'image/jpeg',\r\n webp: 'image/webp',\r\n 'image/png': 'image/png',\r\n 'image/jpeg': 'image/jpeg',\r\n 'image/webp': 'image/webp',\r\n },\r\n\r\n _imageExtensions: {\r\n 'image/png': 'png',\r\n 'image/jpeg': 'jpg',\r\n 'image/webp': 'webp',\r\n },\r\n\r\n _setValue (value) {\r\n console.warn('Can not set value of a file input!');\r\n },\r\n\r\n _changeHandler (event) {\r\n dmx.Component('form-element').prototype._changeHandler.call(this, event);\r\n\r\n this._updateData();\r\n \r\n if (this.$node.files.length && (this.props.imageMaxWidth || this.props.imageMaxHeight || this.props.imageType)) {\r\n this._resizeImage();\r\n }\r\n },\r\n\r\n _resizeImage () {\r\n const file = this.$node.files[0];\r\n\r\n if (file && file.type.startsWith('image/')) {\r\n const blobUrl = URL.createObjectURL(file);\r\n const img = new Image();\r\n img.src = blobUrl;\r\n img.onerror = () => URL.revokeObjectURL(blobUrl);\r\n img.onload = () => {\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n const { imageMaxWidth, imageMaxHeight, imageType, imageQuality } = this.props;\r\n\r\n let width = img.width;\r\n let height = img.height;\r\n let ratio = width / height;\r\n let needResize = false;\r\n\r\n if (imageMaxWidth && width > imageMaxWidth) {\r\n width = imageMaxWidth;\r\n height = ~~(width / ratio);\r\n needResize = true;\r\n }\r\n\r\n if (imageMaxHeight && height > imageMaxHeight) {\r\n height = imageMaxHeight;\r\n width = ~~(height * ratio);\r\n needResize = true;\r\n }\r\n\r\n const newType = imageType ? this._imageTypes[imageType] : file.type;\r\n\r\n if (newType !== file.type || needResize) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n \r\n canvas.width = width;\r\n canvas.height = height;\r\n \r\n ctx.drawImage(img, 0, 0, width, height);\r\n \r\n canvas.toBlob(blob => {\r\n if (blob == null) {\r\n return console.error('Could not resize image!');\r\n }\r\n const container = new DataTransfer();\r\n const newName = file.name.replace(/\\.\\w+$/, '.' + this._imageExtensions[blob.type]);\r\n const newFile = new File([blob], newName, { type: blob.type });\r\n container.items.add(newFile);\r\n this.$node.files = container.files;\r\n this._updateData();\r\n }, newType, imageQuality ? imageQuality / 100 : undefined);\r\n }\r\n };\r\n }\r\n },\r\n\r\n _updateData () {\r\n let data = null;\r\n \r\n if (this.$node.files.length) {\r\n const self = this;\r\n const file = this.$node.files[0];\r\n\r\n data = {\r\n date: (file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate).toISOString(),\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n get dataUrl () {\r\n if (!file._dataUrl) {\r\n dmx.fileUtils.blobToDataURL(file).then(dataUrl => {\r\n file._dataUrl = dataUrl;\r\n self.set('file', Object.assign({}, data, { dataUrl }));\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return null;\r\n },\r\n };\r\n }\r\n\r\n this.set('file', data);\r\n }\r\n\r\n});\r\n","dmx.Component('input-file-multiple', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n imageMaxWidth: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageMaxHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageType: {\r\n type: String,\r\n default: null, // defaults to original image format\r\n enum: ['png', 'jpeg', 'webp'],\r\n },\r\n\r\n imageQuality: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n initialData: {\r\n files: [],\r\n },\r\n\r\n _imageTypes: {\r\n png: 'image/png', \r\n jpeg: 'image/jpeg',\r\n webp: 'image/webp',\r\n 'image/png': 'image/png',\r\n 'image/jpeg': 'image/jpeg',\r\n 'image/webp': 'image/webp',\r\n },\r\n\r\n _imageExtensions: {\r\n 'image/png': 'png',\r\n 'image/jpeg': 'jpg',\r\n 'image/webp': 'webp',\r\n },\r\n\r\n _setValue (value) {\r\n console.warn('Can not set value of a file input!');\r\n },\r\n\r\n _changeHandler (event) {\r\n dmx.Component('form-element').prototype._changeHandler.call(this, event);\r\n\r\n this._updateData();\r\n\r\n if (this.$node.files.length && (this.props.imageMaxWidth || this.props.imageMaxHeight || this.props.imageType)) {\r\n this._resizeImages();\r\n }\r\n },\r\n\r\n _resizeImages () {\r\n const files = Array.from(this.$node.files);\r\n\r\n Promise.all(files.map(file => {\r\n return new Promise(resolve => {\r\n if (!file.type.startsWith('image/')) {\r\n resolve(file);\r\n return;\r\n }\r\n\r\n const blobUrl = URL.createObjectURL(file);\r\n const img = new Image();\r\n img.src = blobUrl;\r\n img.onerror = () => URL.revokeObjectURL(blobUrl);\r\n img.onload = () => {\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n const { imageMaxWidth, imageMaxHeight, imageType, imageQuality } = this.props;\r\n\r\n let width = img.width;\r\n let height = img.height;\r\n let ratio = width / height;\r\n let needResize = false;\r\n\r\n if (imageMaxWidth && width > imageMaxWidth) {\r\n width = imageMaxWidth;\r\n height = ~~(width / ratio);\r\n needResize = true;\r\n }\r\n\r\n if (imageMaxHeight && height > imageMaxHeight) {\r\n height = imageMaxHeight;\r\n width = ~~(height * ratio);\r\n needResize = true;\r\n }\r\n\r\n const newType = imageType ? this._imageTypes[imageType] : file.type;\r\n \r\n if (newType !== file.type || needResize) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n \r\n canvas.width = width;\r\n canvas.height = height;\r\n \r\n ctx.drawImage(img, 0, 0, width, height);\r\n \r\n canvas.toBlob(blob => {\r\n if (blob == null) {\r\n return console.error('Could not resize image!');\r\n }\r\n const newName = file.name.replace(/\\.\\w+$/, '.' + this._imageExtensions[blob.type]);\r\n const newFile = new File([blob], newName, { type: blob.type });\r\n resolve(newFile);\r\n }, newType, imageQuality ? imageQuality / 100 : undefined);\r\n } else {\r\n resolve(file);\r\n }\r\n };\r\n });\r\n })).then(files => {\r\n const container = new DataTransfer();\r\n for (let file of files) {\r\n container.items.add(file);\r\n }\r\n this.$node.files = container.files;\r\n this._updateData();\r\n });\r\n },\r\n\r\n _updateData () {\r\n let files = [];\r\n \r\n if (this.$node.files.length) {\r\n const self = this;\r\n\r\n files = Array.from(this.$node.files).map((file, index) => {\r\n const data = {\r\n date: (file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate).toISOString(),\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n get dataUrl () {\r\n if (!file._dataUrl) {\r\n loading = true;\r\n dmx.fileUtils.blobToDataURL(file).then(dataUrl => {\r\n file._dataUrl = dataUrl;\r\n files = dmx.clone(files);\r\n files[index].dataUrl = dataUrl;\r\n self.set('files', files);\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return null;\r\n },\r\n };\r\n\r\n return data;\r\n });\r\n }\r\n\r\n this.set('files', files);\r\n },\r\n\r\n});\r\n","dmx.Component('button', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n type: {\r\n type: String,\r\n default: 'button',\r\n enum: ['button', 'reset', 'submit'],\r\n },\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n \r\n node.type = this.props.type;\r\n },\r\n\r\n});\r\n","dmx.Component('radio', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n select (check, triggerEvent) {\r\n this._select(check);\r\n if (triggerEvent) {\r\n dmx.nextTick(() => {\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n });\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n checked: Event,\r\n unchecked: Event,\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n node.type = 'radio';\r\n node.checked = this.props.checked;\r\n node.defaultChecked = this.props.checked;\r\n\r\n if (this.props.checked) {\r\n this.set('checked', true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('checked')) {\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.defaultChecked = this.props.checked;\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.$node.dispatchEvent(new Event('radio', { bubbles: true }));\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n }\r\n\r\n if (updatedProps.has('value')) {\r\n this.$node.value = this.props.value;\r\n this.$node.dispatchEvent(new Event('change', { bubbles: true }));\r\n }\r\n },\r\n\r\n _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n\r\n // trigger change on other radios with the same name and same form\r\n if (this.$node.checked) {\r\n const radios = document.querySelectorAll(`input[type=radio][name=\"${this.$node.name}\"]`);\r\n for (const elem of radios) {\r\n if (elem == this.$node || elem.form != this.$node.form) continue;\r\n if (elem.type == 'radio' && elem.name == this.$node.name) {\r\n elem.dispatchEvent(new Event('change', { bubbles: true }));\r\n }\r\n }\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('radio-group', {\r\n\r\n initialData: {\r\n value: null,\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: null,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n init (node) {\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('radio', this._changeHandler);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n\r\n this._setValue(this.props.value, true);\r\n\r\n this._mutationObserver = new MutationObserver((mutationList) => {\r\n let value = this.props.value;\r\n if (value == null) value = '';\r\n value = value.toString();\r\n\r\n for (let mutation of mutationList) {\r\n if (mutation.type == 'attributes' && mutation.attributeName == 'value') {\r\n if (mutation.target.tagName === 'INPUT' && mutation.target.type === 'radio') {\r\n mutation.target.checked = mutation.target.value == value;\r\n mutation.target.defaultChecked = mutation.target.checked;\r\n mutation.target.dispatchEvent(new Event('change', { bubbles: true }));\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n }\r\n }\r\n\r\n for (let node of mutation.addedNodes) {\r\n if (node.nodeType !== Node.ELEMENT_NODE) continue;\r\n\r\n requestAnimationFrame(() => {\r\n if (node.tagName === 'INPUT' && node.type === 'radio') {\r\n node.checked = node.value == value;\r\n node.defaultChecked = node.checked;\r\n } else {\r\n node.querySelectorAll('input[type=radio]').forEach(checkbox => {\r\n checkbox.checked = node.value == value;\r\n checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n });\r\n }\r\n }\r\n });\r\n \r\n this._mutationObserver.observe(node, { subtree: true, childList: true, attributes: true, attributeFilter: ['value'] });\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('radio', this._changeHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value != null) {\r\n value = value.toString();\r\n \r\n this._radios().forEach(radio => {\r\n radio.checked = radio.value == value;\r\n if (defaultValue) radio.defaultChecked = radio.checked;\r\n radio.dispatchEvent(new Event('change', { bubbles: true }));\r\n });\r\n\r\n this._updateValue();\r\n }\r\n },\r\n\r\n _updateValue () {\r\n const value = this._radios().filter(radio => !radio.disabled && radio.checked).map(radio => radio.value);\r\n\r\n if (!dmx.equal(this.data.value, value[0])) {\r\n this.set('value', value[0] || null);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n _radios () {\r\n return Array.from(this.$node.querySelectorAll('input[type=radio]'));\r\n },\r\n\r\n _changeHandler (event) {\r\n this._updateValue();\r\n },\r\n\r\n});\r\n","dmx.Component('checkbox', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n select (check, triggerEvent) {\r\n this._select(check);\r\n if (triggerEvent) {\r\n dmx.nextTick(() => {\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n });\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n checked: Event,\r\n unchecked: Event,\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n node.type = 'checkbox';\r\n node.checked = this.props.checked;\r\n node.defaultChecked = this.props.checked;\r\n\r\n if (this.props.checked) {\r\n this.set('checked', true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('checked')) {\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.defaultChecked = this.props.checked;\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.$node.dispatchEvent(new Event('checkbox', { bubbles: true }));\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n }\r\n },\r\n\r\n _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent('changed');\r\n if (event.type != 'reset') {\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n }\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('checkbox-group', {\r\n\r\n initialData: {\r\n value: [],\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: Array,\r\n default: [],\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n init (node) {\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('checkbox', this._changeHandler);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n\r\n this._setValue(this.props.value, true);\r\n\r\n this._mutationObserver = new MutationObserver((mutationList) => {\r\n let value = this.props.value;\r\n if (value == null) value = [];\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n for (let mutation of mutationList) {\r\n for (let node of mutation.addedNodes) {\r\n if (node.nodeType !== Node.ELEMENT_NODE) continue;\r\n\r\n requestAnimationFrame(() => {\r\n if (node.tagName === 'INPUT' && node.type === 'checkbox') {\r\n node.checked = value.includes(node.value);\r\n node.defaultChecked = node.checked;\r\n } else {\r\n node.querySelectorAll('input[type=checkbox]').forEach(checkbox => {\r\n checkbox.checked = value.includes(checkbox.value);\r\n checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n });\r\n }\r\n }\r\n });\r\n\r\n this._mutationObserver.observe(node, { subtree: true, childList: true });\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('checkbox', this._changeHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = [];\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n this._checkboxes().forEach(checkbox => {\r\n checkbox.checked = value.includes(checkbox.value);\r\n if (defaultValue) checkbox.defaultChecked = checkbox.checked;\r\n });\r\n\r\n this._updateValue();\r\n },\r\n\r\n _updateValue () {\r\n const value = this._checkboxes().filter(checkbox => !checkbox.disabled && checkbox.checked).map(checkbox => checkbox.value);\r\n\r\n if (!dmx.equal(this.data.value, value)) {\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n _checkboxes () {\r\n return Array.from(this.$node.querySelectorAll('input[type=checkbox]'));\r\n },\r\n\r\n _changeHandler (event) {\r\n this._updateValue();\r\n },\r\n\r\n});\r\n","dmx.Component('select', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n selectedIndex: -1,\r\n selectedValue: '',\r\n selectedText: '',\r\n },\r\n\r\n attributes: {\r\n options: {\r\n type: [Array, Object, Number],\r\n default: null,\r\n },\r\n\r\n optiontext: {\r\n type: String,\r\n default: '$value',\r\n },\r\n\r\n optionvalue: {\r\n type: String,\r\n default: '$value',\r\n },\r\n },\r\n\r\n methods: {\r\n setSelectedIndex (index) {\r\n this.$node.selectedIndex = index;\r\n this._updateValue();\r\n },\r\n },\r\n\r\n init (node) {\r\n this._options = [];\r\n\r\n if (!this.props.value) {\r\n this.props.value = this.$node.value;\r\n this._updateValue();\r\n }\r\n\r\n this._mutationObserver = new MutationObserver((a) => {\r\n if (!this._updatingOptions) {\r\n this._updateValue();\r\n }\r\n });\r\n this._mutationObserver.observe(this.$node, { subtree: true, childList: true });\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n this._renderOptions();\r\n let value = this.props.value;\r\n if (value == null) value = '';\r\n Array.from(this.$node.options).forEach(option => {\r\n option.toggleAttribute('selected', (option.value == value));\r\n option.selected = (option.value == value);\r\n option.defaultSelected = option.selected;\r\n });\r\n this._updateValue();\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n dmx.Component('form-element').prototype.destroy.call(this);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('options') || updatedProps.has('optiontext') || updatedProps.has('optionvalue')) {\r\n this._renderOptions();\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n value = value.toString();\r\n\r\n \r\n if (defaultValue) {\r\n Array.from(this.$node.options).forEach(option => {\r\n option.toggleAttribute('selected', option.value == value);\r\n option.defaultSelected = option.selected;\r\n });\r\n } else {\r\n const selectedIndex = Array.from(this.$node.options).findIndex(option => option.value == value);\r\n this.$node.selectedIndex = selectedIndex;\r\n }\r\n\r\n this._updateValue();\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _updateValue () {\r\n const selectedIndex = this.$node.selectedIndex;\r\n const selected = this.$node.options[selectedIndex] || { value: '', text: '' };\r\n\r\n this.set({\r\n selectedIndex: selectedIndex,\r\n selectedValue: selected.value,\r\n selectedText: selected.text,\r\n value: selected.value,\r\n });\r\n },\r\n\r\n _renderOptions () {\r\n this._options.forEach(option => option.remove());\r\n this._options = [];\r\n\r\n if (this.props.options) {\r\n this._updatingOptions = true;\r\n dmx.repeatItems(this.props.options).forEach(option => {\r\n const node = document.createElement('option');\r\n node.value = dmx.parse(this.props.optionvalue, dmx.DataScope(option, this));\r\n node.textContent = dmx.parse(this.props.optiontext, dmx.DataScope(option, this));\r\n if (node.value == this.props.value) node.selected = true;\r\n node.defaultSelected = node.selected;\r\n this.$node.append(node);\r\n this._options.push(node);\r\n });\r\n this._updatingOptions = false;\r\n }\r\n\r\n this._updateValue();\r\n },\r\n\r\n _inputHandler (event) {\r\n // do nothing\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) {\r\n this._validate();\r\n }\r\n\r\n dmx.nextTick(() => {\r\n if (this.data.selectedIndex !== this.$node.selectedIndex) {\r\n this._updateValue();\r\n this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('select-multiple', {\r\n\r\n extends: 'select',\r\n\r\n initialData: {\r\n value: [],\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: Array,\r\n default: null,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('select').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n Array.from(this.$node.options).forEach(option => {\r\n const selected = value.includes(option.value);\r\n if (defaultValue) {\r\n option.toggleAttribute('selected', selected);\r\n option.defaultSelected = option.selected;\r\n } else {\r\n option.selected = selected;\r\n }\r\n });\r\n\r\n this._updateValue();\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _getValue () {\r\n return Array.from(this.$node.selectedOptions).map(option => option.value);\r\n },\r\n\r\n _updateValue () {\r\n const value = this._getValue(); //Array.from(this.$node.options).filter(option => option.selected).map(option => option.value);\r\n\r\n dmx.batch(() => {\r\n dmx.Component('select').prototype._updateValue.call(this);\r\n this.set('value', value);\r\n });\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (this.data.selectedIndex !== this.$node.selectedIndex || !dmx.equal(this.data.value, this._getValue())) {\r\n this._updateValue();\r\n this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('value', {\r\n\r\n initialData: {\r\n value: null,\r\n },\r\n\r\n attributes: {\r\n value: {\r\n default: null,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n if (this.data.value !== value) {\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.set('value', this.props.value);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this.set('value', this.props.value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});","dmx.Component(\"repeat\", {\r\n\r\n initialData: {\r\n items: [],\r\n },\r\n\r\n attributes: {\r\n repeat: {\r\n type: [Array, Object, Number],\r\n default: null,\r\n },\r\n\r\n key: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n rerender: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n events: {\r\n update: Event,\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.prevItems = [];\r\n this.childKeys = new Map();\r\n this.$template = document.createDocumentFragment();\r\n while (this.$node.hasChildNodes()) {\r\n this.$template.appendChild(this.$node.firstChild);\r\n }\r\n if (this.props.repeat) {\r\n this.performUpdate(new Map([['repeat', undefined]]));\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has(\"key\")) this._rerender = true;\r\n if (!updatedProps.has(\"repeat\")) return;\r\n\r\n this.dispatchEvent(\"update\");\r\n\r\n if (this.props.rerender || this._rerender) {\r\n this._rerender = false;\r\n this._clear();\r\n }\r\n\r\n var RepeatItem = dmx.Component(\"repeat-item\");\r\n var repeat = dmx.clone(this.props.repeat);\r\n var items = dmx.repeatItems(repeat);\r\n\r\n if (items.length) {\r\n if (\r\n !this.props.rerender &&\r\n this.props.key &&\r\n items[0].hasOwnProperty(this.props.key) &&\r\n this.prevItems.length\r\n ) {\r\n // keyed repeater (https://github.com/localvoid/kivi/blob/master/lib/vnode.ts#L1320-L1513)\r\n var key = this.props.key;\r\n var a = this.prevItems;\r\n var b = this._clone(items);\r\n var aStart = 0;\r\n var bStart = 0;\r\n var aEnd = a.length - 1;\r\n var bEnd = b.length - 1;\r\n var i, j, nextPos;\r\n\r\n outer: while (true) {\r\n // remove same keys from start\r\n while (a[aStart][key] === b[bStart][key]) {\r\n this.childKeys.get(b[bStart][key]).set(b[bStart]);\r\n aStart++;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // remove same keys at end\r\n while (a[aEnd][key] === b[bEnd][key]) {\r\n this.childKeys.get(b[bEnd][key]).set(b[bEnd]);\r\n aEnd--;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // move from right to left\r\n if (a[aEnd][key] === b[bStart][key]) {\r\n this.childKeys.get(b[bStart][key]).set(b[bStart]);\r\n this._moveChild(b[bStart][key], a[aStart][key]);\r\n aEnd--;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n // move from left to right\r\n if (a[aStart][key] === b[bEnd][key]) {\r\n nextPos = bEnd + 1;\r\n this.childKeys.get(b[bEnd][key]).set(b[bEnd]);\r\n this._moveChild(b[bEnd][key], b[nextPos] && b[nextPos][key]);\r\n aStart++;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (aStart > aEnd) {\r\n // insert rest from b\r\n nextPos = bEnd + 1;\r\n while (bStart <= bEnd) {\r\n this._insertChild(b[bStart++], b[nextPos] && b[nextPos][key]);\r\n }\r\n } else if (bStart > bEnd) {\r\n // remove rest from a\r\n while (aStart <= aEnd) {\r\n this._removeChild(a[aStart++][key]);\r\n }\r\n } else {\r\n var aLength = aEnd - aStart + 1;\r\n var bLength = bEnd - bStart + 1;\r\n var aNullable = a;\r\n var sources = new Array(bLength).fill(-1);\r\n\r\n var moved = false;\r\n var pos = 0;\r\n var synced = 0;\r\n\r\n if (bLength <= 4 || aLength * bLength <= 16) {\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n for (j = bStart; j <= bEnd; j++) {\r\n if (a[i][key] === b[j][key]) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys.get(b[j][key]).set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n var keyIndex = {};\r\n\r\n for (i = bStart; i <= bEnd; i++) {\r\n keyIndex[b[i][key]] = i;\r\n }\r\n\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n j = keyIndex[a[i][key]];\r\n\r\n if (j !== undefined) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys.get(b[j][key]).set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (aLength === a.length && synced === 0) {\r\n this._clear();\r\n while (bStart < bLength) {\r\n this._insertChild(b[bStart++], null);\r\n }\r\n } else {\r\n i = aLength - synced;\r\n while (i > 0) {\r\n if (aNullable[aStart] !== null) {\r\n this._removeChild(a[aStart][key]);\r\n i--;\r\n }\r\n aStart++;\r\n }\r\n\r\n if (moved) {\r\n var seq = this._lis(sources);\r\n j = seq.length - 1;\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n if (j < 0 || i !== seq[j]) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._moveChild(b[pos][key], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n j--;\r\n }\r\n }\r\n }\r\n } else if (synced !== bLength) {\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.children.length > items.length) {\r\n // remove some children\r\n this.children.splice(items.length).forEach((child) => {\r\n child.$destroy();\r\n });\r\n }\r\n\r\n if (this.children.length) {\r\n // update existing children\r\n this.children.forEach((child, i) => {\r\n for (const key in child.data) {\r\n // remove old data that is not in new data\r\n if (!items[i][key]) {\r\n delete child.data[key];\r\n }\r\n }\r\n child.set(items[i]);\r\n });\r\n }\r\n\r\n if (items.length > this.children.length) {\r\n // add new children\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n for (var i = this.children.length; i < items.length; i++) {\r\n var child = new RepeatItem(\r\n this.$template.cloneNode(true),\r\n this,\r\n items[i]\r\n );\r\n child.$nodes.forEach((node) => {\r\n fragment.appendChild(node);\r\n //this.$node.appendChild(node);\r\n //child.$parse(node);\r\n toParse.add(child);\r\n });\r\n this.children.push(child);\r\n }\r\n\r\n this.$node.appendChild(fragment);\r\n\r\n for (const child of toParse) {\r\n child.$nodes.forEach((node) => {\r\n child.$parse(node);\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this._clear();\r\n }\r\n\r\n if (this.props.key) {\r\n this.prevItems = this._clone(items);\r\n for (let child of this.children) {\r\n this.childKeys.set(child.data[this.props.key], child);\r\n }\r\n }\r\n\r\n //this.set('items', items);\r\n this.set(\r\n \"items\",\r\n this.children.map((child) => child.data)\r\n );\r\n\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _lis (a) {\r\n var p = a.slice(0);\r\n var result = [];\r\n result.push(0);\r\n var u, v;\r\n\r\n for (var i = 0, il = a.length; i < il; i++) {\r\n if (a[i] === -1) {\r\n continue;\r\n }\r\n\r\n var j = result[result.length - 1];\r\n if (a[j] < a[i]) {\r\n p[i] = j;\r\n result.push(i);\r\n continue;\r\n }\r\n\r\n u = 0;\r\n v = result.length - 1;\r\n\r\n while (u < v) {\r\n var c = ((u + v) / 2) | 0;\r\n if (a[result[c]] < a[i]) {\r\n u = c + 1;\r\n } else {\r\n v = c;\r\n }\r\n }\r\n\r\n if (a[i] < a[result[u]]) {\r\n if (u > 0) {\r\n p[i] = result[u - 1];\r\n }\r\n result[u] = i;\r\n }\r\n }\r\n\r\n u = result.length;\r\n v = result[u - 1];\r\n\r\n while (u-- > 0) {\r\n result[u] = v;\r\n v = p[v];\r\n }\r\n\r\n return result;\r\n },\r\n\r\n _clear () {\r\n this.prevItems = [];\r\n this.childKeys.clear();\r\n this.$node.innerHTML = '';\r\n this.children.splice(0).forEach((child) => {\r\n child.$destroy();\r\n });\r\n },\r\n\r\n _insertChild (data, before) {\r\n var RepeatItem = dmx.Component(\"repeat-item\");\r\n var child = new RepeatItem(this.$template.cloneNode(true), this, data);\r\n\r\n child.$nodes.forEach((node) => {\r\n if (!before) {\r\n this.$node.appendChild(node);\r\n } else {\r\n if (this.childKeys.has(before)) {\r\n this.$node.insertBefore(node, this.childKeys.get(before).$nodes[0]);\r\n } else {\r\n console.warn(\r\n \"(insert) can not insert node before key \" + before + \"!\"\r\n );\r\n }\r\n }\r\n\r\n child.$parse(node);\r\n });\r\n\r\n this.childKeys.set(data[this.props.key], child);\r\n this.children.push(child);\r\n },\r\n\r\n _moveChild (key, before) {\r\n var child = this.childKeys.get(key);\r\n\r\n if (child) {\r\n if (this.childKeys.has(before)) {\r\n child.$nodes.forEach((node) => {\r\n this.$node.insertBefore(node, this.childKeys.get(before).$nodes[0]);\r\n });\r\n } else {\r\n child.$nodes.forEach((node) => {\r\n this.$node.appendChild(node);\r\n });\r\n }\r\n } else {\r\n console.warn(\"(move) child with key \" + key + \" not found!\");\r\n }\r\n },\r\n\r\n _removeChild (key) {\r\n var child = this.childKeys.get(key);\r\n if (child) {\r\n child.$destroy();\r\n this.children.splice(this.children.indexOf(child), 1);\r\n this.childKeys.delete(key);\r\n } else {\r\n console.warn(\"(remove) child with key \" + key + \" not found!\");\r\n }\r\n },\r\n\r\n _clone (o) {\r\n return dmx.clone(o);\r\n },\r\n});\r\n","dmx.Component(\"repeat-item\", {\r\n\r\n constructor: function (fragment, parent, data, name) {\r\n this.parent = parent;\r\n this.children = [];\r\n this.listeners = {};\r\n this.props = {};\r\n\r\n this.__disposables = [];\r\n this.__childDisposables = [];\r\n\r\n this.updatedProps = new Map();\r\n this.updateRequested = false;\r\n\r\n this.isInitialized = true;\r\n this.isDestroyed = false;\r\n\r\n this.data = dmx.signalProxy(data);\r\n this.seed = parent.seed;\r\n\r\n this.name = name || \"repeatItem\";\r\n this.$nodes = [];\r\n for (var i = 0; i < fragment.childNodes.length; i++) {\r\n this.$nodes.push(fragment.childNodes[i]);\r\n }\r\n },\r\n\r\n destroy () {\r\n for (const node of this.$nodes) {\r\n if (this.parent && this.parent.props && this.parent.props.key) {\r\n const event = new Event('remove', { cancelable: true });\r\n \r\n if (node.dispatchEvent(event)) {\r\n dmx.dom.remove(node);\r\n }\r\n } else {\r\n node.remove();\r\n }\r\n }\r\n },\r\n});\r\n","dmx.Component('fetch', {\r\n\r\n initialData: {\r\n status: 0,\r\n data: null,\r\n links: {},\r\n paging: {},\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n percent: 0,\r\n total: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n percent: 0,\r\n total: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: '',\r\n response: null,\r\n },\r\n },\r\n\r\n attributes: {\r\n timeout: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n method: {\r\n type: String,\r\n default: 'GET',\r\n },\r\n\r\n url: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n headers: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n data: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n dataType: {\r\n type: String,\r\n default: 'auto',\r\n enum: ['auto', 'json', 'text'],\r\n },\r\n\r\n noload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n cache: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n ttl: {\r\n // cache ttl in seconds (default 1 day)\r\n type: Number,\r\n default: 86400,\r\n },\r\n\r\n credentials: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n abort () {\r\n this._abort();\r\n },\r\n\r\n load (params, reload) {\r\n const options = {};\r\n if (params) options.params = params;\r\n if (reload) options.ttl = 0;\r\n this._fetch(options);\r\n },\r\n\r\n reset () {\r\n this._abort();\r\n this._resetData(true);\r\n },\r\n },\r\n\r\n events: {\r\n start: Event,\r\n done: Event,\r\n error: Event,\r\n invalid: Event,\r\n unauthorized: Event,\r\n forbidden: Event,\r\n abort: Event,\r\n success: Event,\r\n upload: ProgressEvent,\r\n download: ProgressEvent,\r\n },\r\n\r\n _statusEvents: {\r\n 200: 'success',\r\n 400: 'invalid',\r\n 401: 'unauthorized',\r\n 403: 'forbidden',\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this._fetch = dmx.debounce(this._fetch.bind(this));\r\n\r\n this._loadHandler = this._loadHandler.bind(this);\r\n this._abortHandler = this._abortHandler.bind(this);\r\n this._errorHandler = this._errorHandler.bind(this);\r\n this._timeoutHandler = this._timeoutHandler.bind(this);\r\n this._downloadProgressHandler = this._progressHandler.bind(this, 'download');\r\n this._uploadProgressHandler = this._progressHandler.bind(this, 'upload');\r\n\r\n this._xhr = new XMLHttpRequest();\r\n this._xhr.addEventListener('load', this._loadHandler);\r\n this._xhr.addEventListener('abort', this._abortHandler);\r\n this._xhr.addEventListener('error', this._errorHandler);\r\n this._xhr.addEventListener('timeout', this._timeoutHandler);\r\n this._xhr.addEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.addEventListener('progress', this._uploadProgressHandler);\r\n\r\n if (!this.props.noload && this.props.url) {\r\n this._fetch();\r\n }\r\n },\r\n\r\n destroy () {\r\n this._xhr.removeEventListener('load', this._loadHandler);\r\n this._xhr.removeEventListener('abort', this._abortHandler);\r\n this._xhr.removeEventListener('error', this._errorHandler);\r\n this._xhr.removeEventListener('timeout', this._timeoutHandler);\r\n this._xhr.removeEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.removeEventListener('progress', this._uploadProgressHandler);\r\n this._xhr.abort();\r\n this._xhr = null;\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (!this.props.noload && this.props.url) {\r\n // if url or params are changed\r\n if (updatedProps.has('url') || updatedProps.has('params')) {\r\n this._fetch();\r\n }\r\n }\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && ['param', 'header'].includes(name)) {\r\n this.$watch(value, value => {\r\n this.props[name + 's'] = Object.assign({}, this.props[name + 's'], { [argument]: value });\r\n });\r\n }\r\n\r\n if (argument && value && name == 'data') {\r\n this.$watch(value, value => {\r\n this.props.data = Object.assign({}, this.props.data, { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _abort () {\r\n if (this._xhr) {\r\n this._xhr.abort();\r\n }\r\n },\r\n\r\n _resetData (clearData) {\r\n const data = {\r\n status: 0,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: \"\",\r\n response: null,\r\n },\r\n };\r\n\r\n if (clearData) {\r\n data.data = null;\r\n }\r\n\r\n this.set(data);\r\n },\r\n\r\n _fetch (options) {\r\n this._abort();\r\n\r\n options = dmx.extend(true, this.props, options || {});\r\n \r\n let qs = Object.keys(options.params)\r\n .filter(key => options.params[key] != null)\r\n .map(key => {\r\n let value = options.params[key];\r\n if (typeof value === 'string' && value.startsWith('{{')) {\r\n value = this.parse(value);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n })\r\n .join('&');\r\n\r\n this._resetData();\r\n this.dispatchEvent('start');\r\n \r\n this._url = options.url;\r\n\r\n if (qs) {\r\n this._url += (this._url.includes('?') ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) {\r\n // Cordova webview proxy plugin\r\n this._url = window.WebviewProxy.convertProxyUrl(this._url);\r\n }\r\n\r\n if (this.props.cache) {\r\n const cache = this.parse(`${this.props.cache}.data[\"${this._url}\"]`);\r\n if (cache) {\r\n if (Date.now() - cache.created >= options.ttl * 1000) {\r\n this.parse(`${this.props.cache}.remove(\"${this._url}\")`);\r\n } else {\r\n this.set({\r\n headers: cache.headers || {},\r\n paging: cache.paging || {},\r\n links: cache.links || {},\r\n data: cache.data,\r\n });\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n }\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n });\r\n\r\n let data = null;\r\n let method = this.props.method.toUpperCase();\r\n\r\n if (method !== 'GET') {\r\n if (this.props.dataType === 'text') {\r\n data = this.props.data.toString();\r\n } else if (this.props.dataType === 'json') {\r\n data = JSON.stringify(this.props.data);\r\n } else {\r\n if (method === 'POST') {\r\n data = new FormData();\r\n\r\n Object.keys(this.props.data).forEach(key => {\r\n let value = this.props.data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.text(value)) key += '[]';\r\n value.forEach(val => data.append(key, val));\r\n } else {\r\n data.set(key, value);\r\n }\r\n });\r\n } else {\r\n data = this.props.data.toString();\r\n }\r\n }\r\n }\r\n\r\n this._xhr.open(method, this._url);\r\n this._xhr.timeout = options.timeout * 1000;\r\n if (this.props.dataType === 'json' || this.props.dataType === 'text') {\r\n this._xhr.setRequestHeader('Content-Type', 'application/' + this.props.dataType);\r\n }\r\n for (const header in this.props.headers) {\r\n this._xhr.setRequestHeader(header, this.props.headers[header]);\r\n }\r\n this._xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this._xhr.withCredentials = true;\r\n }\r\n\r\n if (this.serverconnect && method !== 'GET') {\r\n const csrf_token = document.querySelector('meta[name=\"csrf-token\"]');\r\n if (csrf_token) {\r\n this._xhr.setRequestHeader('X-CSRF-Token', csrf_token.content);\r\n }\r\n }\r\n\r\n try {\r\n this._xhr.send(data);\r\n } catch (err) {\r\n this._done(err);\r\n }\r\n },\r\n\r\n _done (err) {\r\n this._resetData();\r\n\r\n if (err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: err.message,\r\n response: null,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n let response = this._xhr.responseText;\r\n\r\n try {\r\n response = JSON.parse(response);\r\n } catch (err) {\r\n if (this._xhr.status < 400) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: 'Response was not valid JSON',\r\n response: response,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n\r\n this._parseHeaders();\r\n\r\n if (this._xhr.status < 400) {\r\n this.set({\r\n status: this._xhr.status,\r\n data: response,\r\n });\r\n\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n\r\n if (this.props.cache) {\r\n this.parse(`${this.props.cache}.set(\"${this._url}\", { headers: headers, paging: paging, links: links, data: data, created: ${Date.now()} })`)\r\n }\r\n return;\r\n }\r\n\r\n this.set({\r\n status: this._xhr.status,\r\n lastError: {\r\n status: this._xhr.status,\r\n message: this._xhr.statusText,\r\n response: response,\r\n }\r\n });\r\n\r\n this.dispatchEvent(this._statusEvents[this._xhr.status] || 'error');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _parseHeaders() {\r\n try {\r\n const strHeaders = this._xhr.getAllResponseHeaders();\r\n const arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce((headers, line) => {\r\n const parts = line.split(': ');\r\n const name = parts.shift();\r\n const value = parts.join(': ');\r\n\r\n headers[name] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch (err) {\r\n console.warn('Error parsing response headers', err);\r\n return;\r\n }\r\n\r\n this._parseLinkHeaders();\r\n },\r\n\r\n _parseLinkHeaders () {\r\n try {\r\n const linkHeader = Object.keys(this.data.headers).find(header => header.toLowerCase() === 'link');\r\n\r\n if (linkHeader) {\r\n this.set('links', this.data.headers[linkHeader].split(/,\\s* {\r\n try {\r\n const match = link.match(/]*)>(.*)/);\r\n const linkUrl = new URL(match[1]);\r\n const parts = match[2].split(';');\r\n const qs = linkUrl.search.slice(1).split('&').reduce((acc, x) => {\r\n const p = x.split('=');\r\n if (p[0]) acc[decodeURIComponent[p[0]]] = decodeURIComponent(p[1] || '');\r\n return acc;\r\n }, {});\r\n \r\n let info = parts.slice(1).reduce((acc, part) => {\r\n const match = part.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/);\r\n if (match) acc[match[1]] = match[2];\r\n return acc;\r\n }, {});\r\n\r\n info = Object.assign({}, qs, info);\r\n info.url = linkUrl.toString();\r\n\r\n return info;\r\n } catch (err) {\r\n console.warn('Error parsing link header part', err);\r\n return null;\r\n }\r\n })).filter(x => x && x.rel).reduce((acc, x) => {\r\n x.rel.split(/\\s+/).forEach(rel => acc[rel] = Object.assign(x, { rel }));\r\n return acc;\r\n }, {});\r\n }\r\n } catch (err) {\r\n console.warn('Error parsing link header', err);\r\n return;\r\n }\r\n\r\n this._parsePaging();\r\n },\r\n\r\n _parsePaging () {\r\n try {\r\n const paging = {\r\n page: 1,\r\n pages: 1,\r\n items: 0,\r\n has: {\r\n first: false,\r\n prev: false,\r\n next: false,\r\n last: false,\r\n },\r\n };\r\n\r\n const { first, prev, next, last } = this.data.links;\r\n\r\n if (prev || next) {\r\n if (last && last.page) {\r\n paging.pages = +last.page;\r\n } else if (prev && prev.page) {\r\n paging.pages = +prev.page + 1;\r\n }\r\n\r\n const countHeader = Object.keys(this.data.headers).find(header => {\r\n header = header.toLowerCase();\r\n return header === 'x-total' || header === 'x-count' || header === 'x-total-count';\r\n });\r\n\r\n if (countHeader) {\r\n paging.items = +this.data.headers[countHeader];\r\n }\r\n\r\n if (prev && prev.page) {\r\n paging.page = +prev.page + 1;\r\n } else if (next && next.page) {\r\n paging.page = +next.page - 1;\r\n }\r\n\r\n paging.has = {\r\n first: !!first,\r\n prev: !!prev,\r\n next: !!next,\r\n last: !!last,\r\n };\r\n }\r\n\r\n this.set('paging', paging);\r\n } catch (err) {\r\n console.warn('Error parsing paging', err);\r\n }\r\n },\r\n\r\n _loadHandler (event) {\r\n this._done();\r\n },\r\n\r\n _abortHandler (event) {\r\n this._resetData();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _errorHandler (event) {\r\n this._done(Error('Failed to execute'));\r\n },\r\n\r\n _timeoutHandler (event) {\r\n this._done(Error('Execution timeout'));\r\n },\r\n\r\n _progressHandler (type, event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n const percent = event.lengthComputable ? Math.ceil(event.loaded * 100 / event.total) : 0;\r\n\r\n this.set({\r\n state: {\r\n executing: true,\r\n uploading: type === 'upload' && percent < 100,\r\n processing: type === 'upload' && percent === 100,\r\n downloading: type === 'download',\r\n },\r\n [type + 'Progress']: {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent,\r\n },\r\n });\r\n\r\n this.dispatchEvent(type, {\r\n lengthComputable: event.lengthComputable,\r\n loaded: event.loaded,\r\n total: event.total,\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('serverconnect', {\r\n\r\n extends: 'fetch',\r\n\r\n attributes: {\r\n sockets: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n init (node) {\r\n this.serverconnect = true;\r\n \r\n if (this.props.sockets && dmx.Socket) {\r\n this._refresh = this._refresh.bind(this);\r\n this._event = this.props.url.replace(/^(.*?)api\\//, '')\r\n this._socket = dmx.Socket('/api');\r\n this._socket.on(this._event, this._refresh);\r\n }\r\n\r\n dmx.Component('fetch').prototype.init.call(this, node);\r\n },\r\n\r\n destroy () {\r\n if (this._socket) {\r\n this._socket.off(this._event, this._refresh);\r\n }\r\n\r\n dmx.Component('fetch').prototype.destroy.call(this);\r\n },\r\n\r\n _fetch (options) {\r\n if (this._socket && this._socket.connected) {\r\n this._refresh(options && options.params);\r\n } else {\r\n dmx.Component('fetch').prototype._fetch.call(this, options);\r\n }\r\n },\r\n\r\n _refresh (params) {\r\n params = dmx.extend(true, {}, this.props.params, params || {});\r\n\r\n this.dispatchEvent('start');\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: true,\r\n downloading: false,\r\n });\r\n\r\n this._socket.emit(this._event, params, response => {\r\n this.set({\r\n status: response.status,\r\n data: response.data,\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n });\r\n\r\n this.dispatchEvent(this._statusEvents[response.status] || 'error');\r\n this.dispatchEvent('done');\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('serverconnect-form', {\r\n \r\n extends: 'form',\r\n\r\n initialData: {\r\n status: 0,\r\n data: null,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: '',\r\n response: null,\r\n },\r\n },\r\n\r\n attributes: {\r\n timeout: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n autosubmit: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n headers: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n postData: {\r\n type: String,\r\n default: 'form',\r\n },\r\n\r\n credentials: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n abort () {\r\n this._abort();\r\n },\r\n\r\n reset (clearData) {\r\n this._reset();\r\n\r\n if (clearData) {\r\n this._abort();\r\n this._resetData(true);\r\n }\r\n }\r\n },\r\n\r\n events: {\r\n start: Event, // when starting an ajax call\r\n done: Event, // when ajax call completed (success and error)\r\n error: Event, // server error or javascript error (json parse or network transport) or timeout error\r\n unauthorized: Event, // 401 status from server\r\n forbidden: Event, // 403 status from server\r\n abort: Event, // ajax call was aborted\r\n success: Event, // successful ajax call,\r\n upload: ProgressEvent, // on upload progress\r\n download: ProgressEvent, // on download progress\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form').prototype.init.call(this, node);\r\n\r\n this._loadHandler = this._loadHandler.bind(this);\r\n this._abortHandler = this._abortHandler.bind(this);\r\n this._errorHandler = this._errorHandler.bind(this);\r\n this._timeoutHandler = this._timeoutHandler.bind(this);\r\n this._downloadProgressHandler = this._progressHandler.bind(this, 'download');\r\n this._uploadProgressHandler = this._progressHandler.bind(this, 'upload');\r\n\r\n this._xhr = new XMLHttpRequest();\r\n this._xhr.addEventListener('load', this._loadHandler);\r\n this._xhr.addEventListener('abort', this._abortHandler);\r\n this._xhr.addEventListener('error', this._errorHandler);\r\n this._xhr.addEventListener('timeout', this._timeoutHandler);\r\n this._xhr.addEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.addEventListener('progress', this._uploadProgressHandler);\r\n\r\n this._extendNode(node);\r\n\r\n if (this.props.autosubmit) {\r\n dmx.nextTick(() => this._submit());\r\n }\r\n },\r\n\r\n destroy () {\r\n dmx.Component('form').prototype.destroy.call(this);\r\n\r\n this._xhr.removeEventListener('load', this._loadHandler);\r\n this._xhr.removeEventListener('abort', this._abortHandler);\r\n this._xhr.removeEventListener('error', this._errorHandler);\r\n this._xhr.removeEventListener('timeout', this._timeoutHandler);\r\n this._xhr.removeEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.removeEventListener('progress', this._uploadProgressHandler);\r\n this._xhr = null;\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && ['param', 'header'].includes(name)) {\r\n this.$watch(value, value => {\r\n this.props[name + 's'] = Object.assign({}, this.props[name + 's'], { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _extendNode (node) {\r\n node.dmxExtraData = {};\r\n node.dmxExtraElements = [];\r\n },\r\n\r\n _abort () {\r\n this._xhr.abort();\r\n },\r\n\r\n _resetData (clearData) {\r\n const data = {\r\n status: 0,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: \"\",\r\n response: null,\r\n },\r\n };\r\n\r\n if (clearData) {\r\n data.data = null;\r\n }\r\n\r\n this.set(data);\r\n },\r\n\r\n _formSubmit () {\r\n this._send();\r\n },\r\n\r\n _send () {\r\n // abort any previous request\r\n this._abort();\r\n \r\n const method = this.$node.method.toUpperCase();\r\n const action = this.$node.action;\r\n \r\n let data = null;\r\n \r\n let qs = Object.keys(this.props.params)\r\n .filter(key => this.props.params[key] != null)\r\n .map(key => {\r\n let value = this.props.params[key];\r\n if (typeof value === 'string' && value.startsWith('{{')) {\r\n value = this.parse(value);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n })\r\n .join('&');\r\n\r\n if (method === 'GET') {\r\n if (qs.length) qs += '&';\r\n\r\n qs += Array.from(this.$node.elements)\r\n .filter(element => !element.disabled && ((element.type !== 'radio' && element.type !== 'checkbox') || element.checked))\r\n .map(element => encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value))\r\n .join('&');\r\n } else if (this.props.postData === 'json') {\r\n data = this._parseJsonForm();\r\n\r\n if (this.$node.dmxExtraData) {\r\n Object.assign(data, this.$node.dmxExtraData);\r\n }\r\n\r\n data = JSON.stringify(data);\r\n } else {\r\n data = new FormData(this.$node);\r\n\r\n if (this.$node.dmxExtraData) {\r\n for (let key in this.$node.dmxExtraData) {\r\n let value = this.$node.dmxExtraData[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) key += '[]';\r\n value.forEach(value => data.append(key, value));\r\n } else {\r\n data.set(key, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._resetData();\r\n this.dispatchEvent('start');\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n });\r\n\r\n let url = action;\r\n\r\n if (qs) {\r\n url += (url.includes('?') ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) {\r\n // Cordova webview proxy plugin\r\n url = window.WebviewProxy.convertProxyUrl(url);\r\n }\r\n\r\n this._xhr.open(method, url);\r\n this._xhr.timeout = this.props.timeout * 1000;\r\n if (this.props.postData === 'json') {\r\n this._xhr.setRequestHeader('Content-Type', 'application/json');\r\n }\r\n for (const header in this.props.headers) {\r\n this._xhr.setRequestHeader(header, this.props.headers[header]);\r\n }\r\n this._xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this._xhr.withCredentials = true;\r\n }\r\n\r\n const csrf_token = document.querySelector('meta[name=\"csrf-token\"]');\r\n if (csrf_token) {\r\n this._xhr.setRequestHeader('X-CSRF-Token', csrf_token.content);\r\n }\r\n\r\n try {\r\n this._xhr.send(data);\r\n } catch (err) {\r\n this._done(err);\r\n }\r\n },\r\n\r\n _done (err) {\r\n this._resetData();\r\n\r\n if (err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: err.message,\r\n response: null,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n let response = this._xhr.responseText;\r\n\r\n try {\r\n response = JSON.parse(response);\r\n } catch (err) {\r\n if (this._xhr.status < 400) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: 'Response was not valid JSON',\r\n response: response,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n const strHeaders = this._xhr.getAllResponseHeaders();\r\n const arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce((headers, line) => {\r\n const parts = line.split(': ');\r\n const name = parts.shift();\r\n const value = parts.join(': ');\r\n\r\n headers[name] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch (err) {\r\n console.warn('Error parsing response headers', err);\r\n }\r\n\r\n // reset form validation\r\n if (dmx.validateReset) dmx.validateReset(this.$node);\r\n if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\r\n\r\n if (this._xhr.status < 400) {\r\n this.set({\r\n status: this._xhr.status,\r\n data: response,\r\n });\r\n\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n this.set({\r\n status: this._xhr.status,\r\n lastError: {\r\n status: this._xhr.status,\r\n message: this._xhr.statusText,\r\n response: response,\r\n }\r\n });\r\n\r\n if (this._xhr.status === 400) {\r\n this.dispatchEvent('invalid');\r\n\r\n // server-side validation error\r\n if (response.form && dmx.validate.setMessage) {\r\n for (const name in response.form) {\r\n const element = this.$node.querySelector(`[name=\"${name}\"]`);\r\n if (element) {\r\n const message = response.form[name];\r\n dmx.validate.setMessage(element, message);\r\n }\r\n }\r\n } else if (dmx.debug) {\r\n // console warning for debug purpose\r\n console.warn('400 error, no form errors in response.', response);\r\n }\r\n } else if (this._xhr.status === 401) {\r\n this.dispatchEvent('unauthorized');\r\n } else if (this._xhr.status === 403) {\r\n this.dispatchEvent('forbidden');\r\n } else {\r\n this.dispatchEvent('error');\r\n }\r\n\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _loadHandler (event) {\r\n this._done();\r\n },\r\n\r\n _abortHandler (event) {\r\n this._resetData();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _errorHandler (event) {\r\n this._done(Error('Failed to execute'));\r\n },\r\n\r\n _timeoutHandler (event) {\r\n this._done(Error('Execution timeout'));\r\n },\r\n\r\n _progressHandler (type, event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n const percent = event.lengthComputable ? Math.ceil(event.loaded * 100 / event.total) : 0;\r\n\r\n this.set({\r\n state: {\r\n executing: true,\r\n uploading: type === 'upload' && percent < 100,\r\n processing: type === 'upload' && percent === 100,\r\n downloading: type === 'download',\r\n },\r\n [type + 'Progress']: {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent,\r\n },\r\n });\r\n\r\n this.dispatchEvent(type, {\r\n lengthComputable: event.lengthComputable,\r\n loaded: event.loaded,\r\n total: event.total,\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('if', {\r\n\r\n attributes: {\r\n condition: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n events: {\r\n show: Event,\r\n hide: Event,\r\n },\r\n\r\n init (node) {\r\n this._shown = false;\r\n this._template = document.createDocumentFragment();\r\n\r\n while (node.firstChild) {\r\n this._template.appendChild(node.firstChild);\r\n }\r\n },\r\n\r\n render (node) {\r\n if (this.props.condition) {\r\n this._show();\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n this.props.condition ? this._show() : this._hide();\r\n },\r\n\r\n destroy () {\r\n this._template = null;\r\n },\r\n\r\n _show () {\r\n if (this._shown) return;\r\n\r\n const template = this._template.cloneNode(true);\r\n this.$node.appendChild(template);\r\n this.$parse();\r\n this.dispatchEvent('show');\r\n this._shown = true;\r\n },\r\n\r\n _hide () {\r\n if (!this._shown) return;\r\n\r\n if (this.effects) {\r\n this.effects.forEach((effect) => effect());\r\n this.effects = null;\r\n }\r\n\r\n Array.from(this.$node.childNodes).forEach(node => {\r\n const event = new Event('remove', { cancelable: true });\r\n if (node.dispatchEvent(event)) node.remove();\r\n });\r\n \r\n this.$destroyChildren();\r\n this.dispatchEvent('hide');\r\n this._shown = false;\r\n }\r\n});\r\n","dmx.Component('datetime', {\r\n\r\n initialData: {\r\n datetime: null,\r\n },\r\n\r\n attributes: {\r\n interval: {\r\n type: String,\r\n default: 'seconds',\r\n enum: ['seconds', 'minutes', 'hours', 'days']\r\n },\r\n\r\n utc: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n init () {\r\n this._tick = this._tick.bind(this);\r\n this._tick();\r\n },\r\n\r\n destroy () {\r\n if (this._timeout) clearTimeout(this._timeout);\r\n if (this._animationFrame) cancelAnimationFrame(this._animationFrame);\r\n },\r\n\r\n _tick () {\r\n this.set('datetime', this._datetime());\r\n\r\n switch (this.props.interval) {\r\n case 'seconds': return this._timeout = setTimeout(this._tick, 1000);\r\n case 'minutes': return this._timeout = setTimeout(this._tick, 60000);\r\n case 'hours': return this._timeout = setTimeout(this._tick, 3600000);\r\n case 'days': return this._timeout = setTimeout(this._tick, 86400000);\r\n default: return this._animationFrame = requestAnimationFrame(this._tick);\r\n }\r\n },\r\n\r\n _datetime () {\r\n const now = new Date();\r\n const pad = (n, d) => ('0000' + n).slice(-d);\r\n const utc = this.props.utc;\r\n \r\n const year = utc ? now.getUTCFullYear() : now.getFullYear();\r\n const month = (utc ? now.getUTCMonth() : now.getMonth()) + 1;\r\n const day = utc ? now.getUTCDate() : now.getDate();\r\n const hours = utc ? now.getUTCHours() : now.getHours();\r\n const minutes = utc ? now.getUTCMinutes() : now.getMinutes();\r\n const seconds = utc ? now.getUTCSeconds() : now.getSeconds();\r\n\r\n const dateString = pad(year, 4) + '-' + pad(month, 2) + '-' + pad(day, 2);\r\n const tz = utc ? 'Z' : '';\r\n\r\n switch (this.props.interval) {\r\n case 'days': return dateString + 'T00:00:00' + tz;\r\n case 'hours': return dateString + 'T' + pad(hours, 2) + ':00:00' + tz;\r\n case 'minutes': return dateString + 'T' + pad(hours, 2) + ':' + pad(minutes, 2) + ':00' + tz;\r\n }\r\n\r\n return dateString + 'T' + pad(hours, 2) + ':' + pad(minutes, 2) + ':' + pad(seconds, 2) + tz;\r\n },\r\n\r\n});\r\n","dmx.Component('api-action', { extends: 'fetch' });\r\n","dmx.Component('api-form', { extends: 'serverconnect-form' });\r\n","dmx.Component(\"array\", {\r\n\r\n initialData: {\r\n items: [],\r\n count: 0,\r\n },\r\n\r\n attributes: {\r\n items: {\r\n type: Array,\r\n default: [],\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n methods: {\r\n add (newItem) {\r\n this._splice(this._count(), 0, newItem);\r\n },\r\n\r\n addUniq (newItem) {\r\n // Only add when not exists\r\n if (this._indexOf(newItem) == -1) {\r\n this._splice(this._count(), 0, newItem);\r\n }\r\n },\r\n\r\n insert (index, newItem) {\r\n this._splice(index, 0, newItem);\r\n },\r\n\r\n insertBefore (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 0, newItem);\r\n }\r\n },\r\n\r\n insertAfter (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index + 1, 0, newItem);\r\n }\r\n },\r\n\r\n replace (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 1, newItem);\r\n }\r\n },\r\n\r\n replaceAt (index, newItem) {\r\n this._splice(index, 1, newItem);\r\n },\r\n\r\n remove (item) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 1);\r\n }\r\n },\r\n\r\n removeAt (index) {\r\n this._splice(index, 1);\r\n },\r\n\r\n reverse () {\r\n this._reverse();\r\n },\r\n\r\n sort () {\r\n this._sort();\r\n },\r\n\r\n empty () {\r\n this._updateData([]);\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n init () {\r\n const arr = dmx.array(this.props.items);\r\n\r\n this.set({\r\n items: arr,\r\n count: arr.length,\r\n });\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has(\"items\")) {\r\n this._updateData(dmx.array(this.props.items));\r\n }\r\n },\r\n\r\n _count () {\r\n return this.data.items.length;\r\n },\r\n\r\n _indexOf (item) {\r\n return this.data.items.indexOf(item);\r\n },\r\n\r\n _splice (index, remove, item) {\r\n const arr = dmx.clone(this.data.items);\r\n\r\n if (item !== undefined) {\r\n arr.splice(index, remove, item);\r\n } else {\r\n arr.splice(index, remove);\r\n }\r\n\r\n this._updateData(arr);\r\n },\r\n\r\n _reverse () {\r\n const arr = dmx.clone(this.data.items);\r\n arr.reverse();\r\n this._updateData(arr);\r\n },\r\n\r\n _sort () {\r\n const arr = dmx.clone(this.data.items);\r\n arr.sort();\r\n this._updateData(arr);\r\n },\r\n\r\n _updateData (arr) {\r\n if (!dmx.equal(this.data.items, arr)) {\r\n this.set({\r\n items: arr,\r\n count: arr.length,\r\n });\r\n\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('group', {});\r\n","dmx.Component('flow', {\r\n\r\n initialData: {\r\n data: null,\r\n running: false,\r\n lastError: null,\r\n },\r\n\r\n attributes: {\r\n src: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n preload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n autorun: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n },\r\n\r\n methods: {\r\n run (param, throwError) {\r\n return this._run(param, throwError);\r\n },\r\n\r\n runSub (param) {\r\n return this._runSub(param);\r\n },\r\n },\r\n\r\n events: {\r\n start: Event,\r\n done: Event,\r\n error: Event,\r\n },\r\n \r\n render: false,\r\n\r\n init (node) {\r\n if (this.props.src) {\r\n if (this.props.preload || this.props.autorun) {\r\n this._load(this.props.src, this.props.autorun).catch(console.error);\r\n }\r\n } else {\r\n try {\r\n this._flow = this._parse(node.textContent);\r\n if (this.props.autorun) this._run();\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n },\r\n\r\n destroy () {\r\n this._destroyed = true;\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && name == 'param') {\r\n this.$watch(value, value => {\r\n this.props.params = Object.assign({}, this.props.params, { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _load (url, run) {\r\n return fetch(url).then(response => {\r\n if (!response.ok || response.status >= 400) {\r\n throw Error(`Could not load flow ${this.name}, status ${response.status} ${response.statusText}`);\r\n }\r\n \r\n return response.text()\r\n }).then(text => {\r\n this._flow = this._parse(text);\r\n if (run) this._run();\r\n });\r\n },\r\n\r\n _parse (str) {\r\n return (window.Hjson ? Hjson : JSON).parse(str);\r\n },\r\n\r\n _runSub (param) {\r\n if (!this._flow) {\r\n if (this.props.src) {\r\n return this._load(this.props.src).then(() => {\r\n this._runFlow(param);\r\n });\r\n }\r\n\r\n throw Error('No flow');\r\n }\r\n\r\n return this._runFlow(param);\r\n },\r\n\r\n _run (param, throwError) {\r\n if (!this._flow) {\r\n if (this.props.src) {\r\n return this._load(this.props.src).then(() => {\r\n this._run(param, throwError);\r\n }).catch(console.error);\r\n }\r\n\r\n console.warn(`Flow ${this.name} is missing.`);\r\n return;\r\n }\r\n\r\n if (this.data.running) {\r\n console.info(`Can't run flow ${this.name} when a previous run didn't finish.`);\r\n return;\r\n }\r\n\r\n this.set({\r\n running: true,\r\n lastError: null,\r\n });\r\n\r\n this.dispatchEvent('start');\r\n\r\n if (dmx.debug) {\r\n console.debug(`Running flow ${this.name} with params`, param);\r\n console.time(`Flow ${this.name}`);\r\n }\r\n return this._runFlow(param).then(data => {\r\n if (dmx.debug) {\r\n console.debug(`Flow ${this.name} finished`, data);\r\n console.timeEnd(`Flow ${this.name}`);\r\n }\r\n this.set({\r\n running: false,\r\n data: data\r\n });\r\n\r\n this.dispatchEvent('done');\r\n\r\n return data;\r\n }).catch(err => {\r\n this.set({\r\n running: false,\r\n lastError: err && err.message,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n\r\n if (throwError) {\r\n throw err;\r\n }\r\n })\r\n },\r\n\r\n _runFlow (param) {\r\n return dmx.Flow.run(this._flow, dmx.DataScope({\r\n $param: Object.assign({}, this.props.params, param),\r\n }, this));\r\n },\r\n\r\n});\r\n","dmx.Component('toggle', {\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n check () {\r\n this.props.checked = true;\r\n },\r\n\r\n uncheck () {\r\n this.props.checked = false;\r\n },\r\n\r\n toggle () {\r\n this.props.checked = !this.data.checked;\r\n }\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.set('checked', this.props.checked);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('checked')) {\r\n this.set('checked', this.props.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('form-data', {\r\n\r\n attributes: {\r\n name: {\r\n type: String,\r\n default: 'data',\r\n },\r\n\r\n data: {\r\n type: [Array, Object], // can be anything\r\n default: null,\r\n },\r\n },\r\n\r\n init (node) {\r\n this._formdataHandler = this._formdataHandler.bind(this);\r\n this._form = node.closest('form');\r\n \r\n if (this._form) {\r\n this._form.addEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n destroy () {\r\n if (this._form) {\r\n this._form.removeEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n _formdataHandler (event) {\r\n const formData = event.formData;\r\n const data = this.props.data;\r\n\r\n this._appendData(formData, data, this.props.name);\r\n },\r\n\r\n _appendData (formData, data, prefix = '') {\r\n if (Array.isArray(data)) {\r\n data.forEach((value, index) => {\r\n this._appendData(formData, value, `${prefix}[${index}]`);\r\n });\r\n } else if (typeof data === 'object') {\r\n for (const key in data) {\r\n this._appendData(formData, data[key], `${prefix}[${key}]`);\r\n }\r\n } else {\r\n formData.append(prefix, data);\r\n }\r\n },\r\n\r\n});","dmx.Attribute(\"bind\", \"mounted\", function (node, attr) {\r\n const name = attr.argument;\r\n const isToggle = dmx.reToggleAttribute.test(name);\r\n\r\n this.$watch(attr.value, value => {\r\n if (isToggle) {\r\n node.toggleAttribute(name, !!value);\r\n } else {\r\n if (name === \"style\" && typeof value === \"object\") {\r\n return Object.assign(node.style, value);\r\n }\r\n\r\n if (value == null) {\r\n return node.removeAttribute(name);\r\n }\r\n\r\n node.setAttribute(name, value);\r\n\r\n if (name === \"src\") {\r\n if (node.nodeName === \"VIDEO\" || node.nodeName === \"AUDIO\") {\r\n node.load();\r\n } else if (node.nodeName === \"SOURCE\" && node.parentNode) {\r\n node.parentNode.load();\r\n }\r\n }\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"on\", \"mounted\", function (node, attr) {\r\n if (!node.dmxOn) {\r\n node.dmxOn = {\r\n component: this,\r\n };\r\n }\r\n\r\n node.dmxOn[attr.argument] = true;\r\n\r\n return dmx.eventListener(node, attr.argument, function (event) {\r\n // jQuery event\r\n if (event.originalEvent) event = event.originalEvent;\r\n\r\n const retValue = dmx.parse(attr.value, dmx.DataScope({\r\n $event: event.$data,\r\n $originalEvent: event,\r\n }, node.dmxOn.component));\r\n\r\n return retValue;\r\n }, attr.modifiers);\r\n});\r\n","dmx.Attribute('repeat', 'before', function (node, attr) {\r\n const comment = document.createComment('Repeat Attribute');\r\n const template = document.createDocumentFragment();\r\n const RepeatItem = dmx.Component('repeat-item');\r\n\r\n node.parentNode.replaceChild(comment, node);\r\n node.removeAttribute(attr.fullName);\r\n\r\n template.append(node);\r\n\r\n let children = [];\r\n\r\n this.$watch(attr.value, repeat => {\r\n const items = dmx.repeatItems(repeat);\r\n\r\n if (items.length > 10000) {\r\n console.warn('More than 10000 repeat items, we limit the result!');\r\n //items.splice(10000, items.length);\r\n items.length = 10000;\r\n }\r\n\r\n if (attr.modifiers.fast) {\r\n if (children.length > items.length) {\r\n // destroy children\r\n children.splice(items.length).forEach(child => child.$destroy());\r\n }\r\n\r\n if (children.length) {\r\n // update existing children\r\n children.forEach((child, i) => child.set(items[i]));\r\n }\r\n\r\n if (items.length > children.length) {\r\n // add new children\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n items.slice(children.length).forEach(item => {\r\n const child = new RepeatItem(template.cloneNode(true), this, item);\r\n \r\n fragment.appendChild(child.$nodes[0]);\r\n //comment.parentNode.insertBefore(child.$nodes[0], comment);\r\n //child.$parse(child.$nodes[0]);\r\n toParse.add(child);\r\n\r\n children.push(child);\r\n this.$addChild(child);\r\n });\r\n\r\n comment.parentNode.insertBefore(fragment, comment);\r\n\r\n for (const child of toParse) {\r\n child.$parse(child.$nodes[0]);\r\n }\r\n\r\n if (attr.argument) {\r\n this.set(attr.argument, items);\r\n }\r\n }\r\n } else {\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n children.splice(0).forEach(child => child.$destroy());\r\n\r\n for (const item of items) {\r\n const child = new RepeatItem(template.cloneNode(true), this, item);\r\n \r\n fragment.append(child.$nodes[0]);\r\n //comment.parentNode.insertBefore(child.$nodes[0], comment);\r\n //child.$parse(child.$nodes[0]);\r\n toParse.add(child);\r\n\r\n children.push(child);\r\n this.$addChild(child);\r\n }\r\n\r\n comment.parentNode.insertBefore(fragment, comment);\r\n\r\n for (const child of toParse) {\r\n child.$parse(child.$nodes[0]);\r\n }\r\n\r\n if (attr.argument) {\r\n this.set(attr.argument, items);\r\n }\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"class\", \"mounted\", function (node, attr) {\r\n if (!node.dmxClass) {\r\n node.dmxClass = {\r\n component: this,\r\n };\r\n }\r\n\r\n this.$watch(attr.value, toggle => {\r\n node.dmxClass[attr.argument] = toggle;\r\n node.classList[toggle ? \"add\" : \"remove\"](attr.argument);\r\n });\r\n});\r\n","dmx.Attribute(\"hide\", \"mounted\", function (node, attr) {\r\n if (node.dmxHide) return;\r\n\r\n node.dmxHide = {\r\n component: this,\r\n initial: {\r\n display: node.style.getPropertyValue(\"display\"),\r\n priority: node.style.getPropertyPriority(\"display\"),\r\n },\r\n hide: null,\r\n };\r\n\r\n this.$watch(attr.value, hide => {\r\n node.dmxHide.hide = hide;\r\n\r\n const { initial } = node.dmxHide;\r\n const display = hide ? 'none' : initial.display;\r\n const priority = hide ? 'important' : initial.priority;\r\n\r\n node.style.setProperty('display', display, priority);\r\n });\r\n});\r\n","dmx.Attribute('show', 'mounted', function(node, attr) {\r\n if (node.dmxShow) return;\r\n\r\n node.dmxShow = {\r\n component: this,\r\n initial: {\r\n display: node.style.getPropertyValue('display'),\r\n priority: node.style.getPropertyPriority('display'),\r\n },\r\n show: null,\r\n };\r\n \r\n this.$watch(attr.value, show => {\r\n node.dmxShow.show = show;\r\n \r\n const { initial } = node.dmxShow;\r\n const display = show ? initial.display : 'none';\r\n const priority = show ? initial.priority : 'important';\r\n\r\n node.style.setProperty('display', display, priority);\r\n });\r\n});\r\n","dmx.Attribute(\"html\", \"mounted\", function (node, attr) {\r\n if (node.dmxHtml) return;\r\n\r\n node.dmxHtml = {\r\n component: this,\r\n };\r\n\r\n this.$watch(attr.value, html => {\r\n node.innerHTML = html != null ? String(html) : \"\";\r\n });\r\n});\r\n","dmx.Attribute(\"text\", \"mounted\", function (node, attr) {\r\n if (node.dmxText) return;\r\n\r\n node.dmxText = {\r\n component: this,\r\n };\r\n\r\n this.$watch(attr.value, text => {\r\n node.innerText = text != null ? String(text) : \"\";\r\n });\r\n});\r\n","dmx.Attribute(\"style\", \"mounted\", function (node, attr) {\r\n if (!node.dmxStyle) {\r\n node.dmxStyle = {\r\n component: this,\r\n };\r\n }\r\n\r\n const important = attr.modifiers.important ? \"important\" : \"\";\r\n\r\n this.$watch(attr.value, value => {\r\n node.dmxStyle[attr.argument] = value;\r\n if (value != null) {\r\n node.style.setProperty(attr.argument, value, important);\r\n }\r\n });\r\n});\r\n","dmx.Formatters('global', {\r\n\r\n // json(obj:Any):String\r\n json: function(obj) {\r\n return JSON.stringify(obj);\r\n },\r\n\r\n // log(obj:Any):Any\r\n log: function(obj) {\r\n console.log(obj);\r\n return obj;\r\n },\r\n\r\n // run(flow:Any, param:Any):Undefined\r\n run: function(flow, param) {\r\n var scope = dmx.DataScope({\r\n $param: param\r\n }, this);\r\n\r\n dmx.Flow.run(flow, scope);\r\n }\r\n\r\n});\r\n","dmx.Actions({\r\n\r\n subflow (options) {\r\n const subflow = this.parse(options.flow);\r\n const param = this.parse(options.param);\r\n\r\n return this.parse(subflow + \".runSub(\" + JSON.stringify(param) + \")\");\r\n },\r\n\r\n comment (options) {\r\n if (dmx.debug) {\r\n console.debug(options.message);\r\n }\r\n },\r\n\r\n wait (options) {\r\n const delay = this.parse(options.delay);\r\n\r\n if (typeof delay != \"number\") {\r\n throw new Error(\"wait: Invalid delay\");\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, delay);\r\n });\r\n },\r\n\r\n now (options) {\r\n return new Date().toISOString();\r\n },\r\n\r\n random (options) {\r\n let lower = this.parse(options.lower);\r\n let upper = this.parse(options.upper);\r\n let floating = !!this.parse(options.floating);\r\n\r\n if (typeof lower != \"number\" || !isFinite(lower)) {\r\n lower = 0;\r\n }\r\n\r\n if (typeof upper != \"number\" || !isFinite(upper)) {\r\n upper = 1;\r\n }\r\n\r\n let rnd = lower + Math.random() * (upper - lower);\r\n\r\n if (!floating && Math.floor(lower) == lower && Math.floor(upper) == upper) {\r\n rnd = Math.round(rnd);\r\n }\r\n\r\n return rnd;\r\n },\r\n\r\n confirm (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"confirm: Invalid message\");\r\n }\r\n\r\n const result = confirm(message);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(() => result);\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(() => result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n prompt (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"prompt: Invalid message\");\r\n }\r\n\r\n return prompt(message);\r\n },\r\n\r\n alert (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"alert: Invalid message\");\r\n }\r\n\r\n return alert(message);\r\n },\r\n\r\n repeat (options) {\r\n let items = dmx.clone(this.parse(options.repeat));\r\n\r\n if (!items) return;\r\n\r\n if (typeof items == \"boolean\") {\r\n items = items ? [0] : [];\r\n } else if (typeof items == \"string\") {\r\n items = items.split(/\\s*,\\s*/);\r\n } else if (typeof items == \"number\") {\r\n var arr = [];\r\n for (var i = 0; i < items; i++) {\r\n arr.push(i + 1);\r\n }\r\n items = arr;\r\n }\r\n\r\n if (typeof items != \"object\") {\r\n throw new Error(\"repeat: data is not repeatable\");\r\n }\r\n\r\n const parentScope = this.scope;\r\n const parentOutput = this.output;\r\n return this._each(items, (value, index) => {\r\n this.scope = new dmx.DataScope(\r\n Object.assign(\r\n {\r\n $value: value,\r\n $index: index,\r\n $name: index,\r\n $key: index,\r\n $number: index + 1,\r\n $oddeven: index % 2,\r\n },\r\n value\r\n ),\r\n parentScope\r\n );\r\n\r\n this.output = {};\r\n\r\n if (Array.isArray(options.outputFields) && value instanceof Object) {\r\n options.outputFields.forEach((field) => {\r\n this.output[field] = value[field];\r\n });\r\n }\r\n\r\n return this._exec(options.exec).then(() => {\r\n var output = this.output;\r\n this.scope = parentScope;\r\n this.output = parentOutput;\r\n return output;\r\n });\r\n });\r\n },\r\n\r\n condition (options) {\r\n const result = !!this.parse(options.if);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(() => result);\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(() => result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n conditions (options) {\r\n if (Array.isArray(options.conditions)) {\r\n for (let i = 0; i < options.conditions.length; i++) {\r\n const condition = options.conditions[i];\r\n\r\n if (this.parse(condition.when)) {\r\n return this._exec(condition.then);\r\n }\r\n }\r\n }\r\n },\r\n\r\n select (options) {\r\n const expression = this.parse(options.expression);\r\n\r\n if (Array.isArray(options.cases)) {\r\n for (let i = 0; i < options.cases.length; i++) {\r\n const item = options.cases[i];\r\n\r\n if (this.parse(item.value) == expression) {\r\n return this._exec(item.exec);\r\n }\r\n }\r\n }\r\n },\r\n\r\n group (options) {\r\n if (options.name) {\r\n const parentOutput = this.output;\r\n this.output = {};\r\n\r\n return this._exec(options.exec).then(() => {\r\n var output = this.output;\r\n self.output = parentOutput;\r\n return output;\r\n });\r\n }\r\n\r\n return this._exec(options.exec);\r\n },\r\n\r\n while (options) {\r\n const loop = () => {\r\n return new Promise((resolve) => {\r\n if (!this.parse(options.condition)) return resolve();\r\n this._exec(options.exec).then(loop).then(resolve);\r\n });\r\n };\r\n\r\n return loop();\r\n },\r\n\r\n switch (options) {\r\n /*\r\n {\r\n switch: {\r\n expression: \"{{myVar}}\",\r\n cases: [\r\n { case: 1, exec: { console.log: { message: \"Case 1\" }}}\r\n { case: 2, exec: { console.log: { message: \"Case 2\" }}}\r\n { case: 3, exec: { console.log: { message: \"Case 3\" }}}\r\n ],\r\n default: { console.log: { message: \"Default Case\" }}\r\n }\r\n }\r\n */\r\n const expression = this.parse(options.expression);\r\n for (let i = 0; i < options.cases.length; i++) {\r\n if (this.parse(options.cases[i].case) === expression) {\r\n return this._exec(options.cases[i].exec);\r\n }\r\n }\r\n if (options.default) {\r\n return this._exec(options.default);\r\n }\r\n },\r\n\r\n tryCatch (options) {\r\n return Promise.resolve(this._exec(options.try)).catch(() => {\r\n return this._exec(options.catch);\r\n });\r\n },\r\n\r\n run (options) {\r\n if (!options.action) {\r\n throw new Error(\"run: missing action\");\r\n }\r\n\r\n return this.parse(options.action);\r\n },\r\n\r\n runJS (options) {\r\n if (!options.function) {\r\n throw new Error(\"runJS: missing function\");\r\n }\r\n\r\n const func = this.parse(options.function);\r\n const args = this.parse(options.args);\r\n\r\n return window[func].apply(null, args);\r\n },\r\n\r\n assign (options) {\r\n return this.parse(options.value);\r\n },\r\n\r\n setGlobal (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setGlobal: key must be a string\");\r\n }\r\n\r\n dmx.global.set(key, value);\r\n\r\n return value;\r\n },\r\n\r\n setSession (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setSession: key must be a string\");\r\n }\r\n\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n\r\n return value;\r\n },\r\n\r\n getSession (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"getSession: key must be a string\");\r\n }\r\n\r\n return JSON.parse(sessionStorage.getItem(key));\r\n },\r\n\r\n removeSession (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"removeSession: key must be a string\");\r\n }\r\n\r\n sessionStorage.removeItem(key);\r\n\r\n return true;\r\n },\r\n\r\n setStorage (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setStorage: key must be a string\");\r\n }\r\n\r\n localStorage.setItem(key, JSON.stringify(value));\r\n\r\n return value;\r\n },\r\n\r\n getStorage (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"getStorage: key must be a string\");\r\n }\r\n\r\n const value = localStorage.getItem(key);\r\n\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(value);\r\n },\r\n\r\n removeStorage (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"removeStorage: key must be a string\");\r\n }\r\n\r\n localStorage.removeItem(key);\r\n\r\n return true;\r\n },\r\n\r\n fetch (options) {\r\n let url = this.parse(options.url);\r\n let method = this.parse(options.method);\r\n let timeout = this.parse(options.timeout);\r\n let dataType = this.parse(options.dataType);\r\n let data = this.parse(options.data);\r\n let params = this.parse(options.params);\r\n let headers = this.parse(options.headers);\r\n let credentials = this.parse(options.credentials);\r\n let body = null;\r\n\r\n if (typeof url != \"string\") {\r\n throw new Error(\"fetch: invalid url \" + url);\r\n }\r\n\r\n if (![\"GET\", \"POST\", \"PUT\", \"DELETE\"].includes(method)) {\r\n //throw new Error('fetch: invalid method ' + method);\r\n method = \"GET\";\r\n }\r\n\r\n if (![\"auto\", \"json\", \"text\"].includes(dataType)) {\r\n dataType = \"auto\";\r\n }\r\n\r\n if (typeof timeout != \"number\") {\r\n timeout = 0;\r\n }\r\n\r\n if (!headers) {\r\n headers = {};\r\n }\r\n\r\n if (typeof params == \"object\") {\r\n for (var param in params) {\r\n if (params.hasOwnProperty(param) && params[param] != null) {\r\n url +=\r\n (url.indexOf(\"?\") != -1 ? \"&\" : \"?\") +\r\n decodeURIComponent(param) +\r\n \"=\" +\r\n decodeURIComponent(params[param]);\r\n }\r\n }\r\n }\r\n\r\n if (method != \"GET\") {\r\n if (dataType == \"text\") {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/text\";\r\n }\r\n body = data.toString();\r\n } else if (dataType == \"json\") {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/json\";\r\n }\r\n body = JSON.stringify(data);\r\n } else {\r\n if (method == \"POST\") {\r\n body = new FormData();\r\n\r\n if (typeof data == \"object\" && !Array.isArray(data)) {\r\n for (var key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n var value = data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) {\r\n key += \"[]\";\r\n }\r\n for (var i in value) {\r\n if (value.hasOwnProperty(i)) {\r\n body.append(key, value[i]);\r\n }\r\n }\r\n } else {\r\n body.set(key, value);\r\n }\r\n }\r\n }\r\n }\r\n } else if (data) {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/text\";\r\n }\r\n body = data.toString();\r\n }\r\n }\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.onerror = reject;\r\n xhr.onabort = reject;\r\n xhr.ontimeout = reject;\r\n xhr.onload = function () {\r\n var response = xhr.responseText;\r\n var headers = (function (raw) {\r\n var arr = raw.trim().split(/[\\r\\n]+/);\r\n\r\n return arr.reduce(function (headers, line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n\r\n headers[header.toLowerCase()] = value;\r\n\r\n return headers;\r\n }, {});\r\n })(xhr.getAllResponseHeaders());\r\n\r\n if (/^application\\/json/.test(headers[\"content-type\"])) {\r\n response = JSON.parse(response);\r\n }\r\n\r\n resolve({\r\n status: xhr.status,\r\n headers: headers,\r\n data: response,\r\n });\r\n };\r\n\r\n xhr.open(method, url);\r\n\r\n xhr.timeout = timeout * 1000;\r\n\r\n for (var header in headers) {\r\n if (headers.hasOwnProperty(header)) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n }\r\n }\r\n\r\n if (credentials) {\r\n xhr.withCredentials = true;\r\n }\r\n\r\n xhr.send(body);\r\n });\r\n },\r\n});\r\n\r\n// aliasses\r\ndmx.__actions[\"setValue\"] = dmx.__actions[\"assign\"];\r\ndmx.__actions[\"api\"] = dmx.__actions[\"fetch\"];\r\ndmx.__actions[\"api.send\"] = dmx.__actions[\"fetch\"];\r\ndmx.__actions[\"serverConnect\"] = dmx.__actions[\"fetch\"];\r\n","dmx.Actions({\r\n /**\r\n * Add new columns to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.add - Object with column name as key and the value\r\n * @param {boolean} [options.overwrite=false] - Overwrite existing columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var add = options.add;\r\n var overwrite = !!this.parse(options.overwrite);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n \r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in add) {\r\n if (add.hasOwnProperty(column)) {\r\n var scope = new dmx.DataScope(row, this.scope);\r\n\r\n if (overwrite || row[column] == null) {\r\n row[column] = dmx.parse(add[column], scope);\r\n }\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Remove entire specified columns from the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns\r\n * @param {boolean} [options.keep=false] - Keep or remove the columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.filterColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n var keep = !!this.parse(options.keep);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (row.hasOwnProperty(column)) {\r\n if (columns.includes(column)) {\r\n if (keep) {\r\n newRow[column] = dmx.clone(row[column]);\r\n }\r\n } else if (!keep) {\r\n newRow[column] = dmx.clone(row[column]);\r\n }\r\n }\r\n }\r\n\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Rename columns in the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.rename - Object with old name as key and new name as value\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.renameColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rename = this.parse(options.rename);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (row.hasOwnProperty(column)) {\r\n newRow[rename[column] || column] = dmx.clone(row[column]);\r\n }\r\n }\r\n\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Fills empty rows with the row above's value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns to fill\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.fillDown': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n var toFill = {};\r\n\r\n for (var i = 0, l = columns.length; i < l; i++) {\r\n toFill[columns[i]] = null;\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in toFill) {\r\n if (toFill.hasOwnProperty(column)) {\r\n if (row[column] == null) {\r\n row[column] = toFill[column];\r\n } else {\r\n toFill[column] = row[column];\r\n }\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Add new rows to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object[]} options.rows - The rows to add\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRows': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rows = this.parse(options.rows);\r\n\r\n return dmx.clone(collection).concat(dmx.clone(rows));\r\n },\r\n\r\n /**\r\n * Add row numbers to the collection\r\n * @param {Object} options \r\n * @param {Object[]} options.collection - The collection\r\n * @param {string} options.column - The name for the column\r\n * @param {number} options.startAt - The row number to start with\r\n * @param {boolean} [options.desc=false] - Order descending\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRowNumbers': function(options) {\r\n var collection = this.parse(options.collection);\r\n var column = this.parse(options.column);\r\n var startAt = this.parse(options.startAt);\r\n var desc = !!this.parse(options.desc);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n row[column] = desc ? l + startAt - i : startAt + i;\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Join two collections (Left join)\r\n * @param {Object} options\r\n * @param {Object[]} options.collection1 - Left collection\r\n * @param {Object[]} options.collection2 - Right collection\r\n * @param {Object.} options.matches - Columns to match\r\n * @param {boolean} [options.matchAll=false] - Match columns using AND instead of OR\r\n * @returns {Object[]} - New collection\r\n */\r\n 'colections.join': function(options) {\r\n var collection1 = this.parse(options.collection1);\r\n var collection2 = this.parse(options.collection2);\r\n var matches = this.parse(options.matches);\r\n var matchAll = !!this.parse(options.matchAll);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection1.length; i < l; i++) {\r\n var row = dmx.clone(collection1[i]);\r\n\r\n for (var j = 0, l2 = collection2.length; j < l2; j++) {\r\n var row2 = collection2[j];\r\n var hasMatch = false;\r\n\r\n for (var match in matches) {\r\n if (matches.hasOwnProperty(match)) {\r\n if (row[match] == row2[matches[match]]) {\r\n hasMatch = true;\r\n if (!matchAll) break;\r\n } else if (matchAll) {\r\n hasMatch = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (hasMatch) {\r\n for (var column in row2) {\r\n if (row2.hasOwnProperty(column)) {\r\n // TODO duplicate row from collection1 when multiple matches exist in collection2\r\n // TODO check for duplicate column names\r\n row[column] = dmx.clone(row2[column]);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Normalize all rows, add missing columns with NULL value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.mormalize': function(options) {\r\n var collection = this.parse(options.collection);\r\n\r\n var columns = [];\r\n var output = [];\r\n\r\n // first collect all columns from collection\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n for (var column in collection[i]) {\r\n if (collection[i].hasOwnProperty(column)) {\r\n if (columns.indexOf(column) == -1) {\r\n columns.push(column);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = {};\r\n\r\n for (var j = 0, l2 = columns.length; j < l2; j++) {\r\n var column = columns[j];\r\n var value = dmx.clone(collection[column]);\r\n row[column] = value != null ? value : null;\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n }\r\n\r\n});","dmx.Actions({\r\n\r\n 'console.log': function(options) {\r\n console.log(this.parse(options.message));\r\n },\r\n\r\n 'console.info': function(options) {\r\n console.info(this.parse(options.message));\r\n },\r\n\r\n 'console.warn': function(options) {\r\n console.warn(this.parse(options.message));\r\n },\r\n\r\n 'console.error': function(options) {\r\n console.error(this.parse(options.message));\r\n },\r\n\r\n 'console.count': function(options) {\r\n console.count(this.parse(options.label));\r\n },\r\n\r\n 'console.time': function(options) {\r\n console.time(this.parse(options.label));\r\n },\r\n\r\n 'console.timeEnd': function(options) {\r\n console.timeEnd(this.parse(options.label));\r\n },\r\n\r\n 'console.group': function(options) {\r\n console.group();\r\n },\r\n\r\n 'console.groupEnd': function(options) {\r\n console.groupEnd();\r\n },\r\n\r\n 'console.clear': function(options) {\r\n console.clear();\r\n }\r\n\r\n});"]}