-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcelestra.min.js
275 lines (275 loc) · 40.2 KB
/
celestra.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
/** Celestra * @version 1 min * @see https://github.com/Serrin/Celestra/ * @license MIT */
(function(window,document){
"use strict";
if(!("groupBy" in Object)){Object.defineProperty(Object,"groupBy",{"configurable":true,"writable":true,"enumerable":true,"value":function(items,callbackFn){"use strict";if(!(typeof callbackFn==="function")){throw new TypeError();}let r=Object.create(null),i=0;for(let item of items){let key=callbackFn(item,i++);if(!(Object.prototype.hasOwnProperty.call(r,key))){r[key]=[];}r[key].push(item);}return r;}});}
if(!("groupBy" in Map)){Object.defineProperty(Map,"groupBy",{"configurable":true,"writable":true,"enumerable":true,"value":function(items,callbackFn){"use strict";if(!(typeof callbackFn==="function")){throw new TypeError();}let r=new Map(),i=0;for(let item of items){let key=callbackFn(item,i++);if(!(r.has(key))){r.set(key,[]);}r.get(key).push(item);}return r;}});}
if(!Array.fromAsync){Array.fromAsync=async function fromAsync(arrayLike,mapfn,thisArg){const isConstructor=(v)=>(typeof v==="function"&&typeof v.prototype==="object");const errorMsg="Input length exceed the Number.MAX_SAFE_INTEGER.";if(Symbol.asyncIterator in arrayLike||Symbol.iterator in arrayLike){var r=isConstructor(this)?new this:Array(0),i=0;for await(const item of arrayLike){if(i>Number.MAX_SAFE_INTEGER){throw TypeError(errorMsg);}else{if(!mapfn){r[i]=item;}else{r[i]=await mapfn.call(thisArg,item,i);}}i++;}r.length=i;return r;}else{var l=arrayLike.length,r=isConstructor(this)?new this(l):Array(l),i=0;while(i<l){if(i>Number.MAX_SAFE_INTEGER){throw TypeError(errorMsg);}var item=await arrayLike[i];if(!mapfn){r[i]=item;}else{r[i]=await mapfn.call(thisArg,item,i);}i++;}r.length=i;return r;}};}
if(("crypto" in window)&&!("randomUUID" in window.crypto)){window.crypto.randomUUID=function randomUUID(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(c)=>(c^crypto.getRandomValues(new Uint8Array(1))[0]&15>>c/4).toString(16));};}
if(!Object.hasOwn){Object.defineProperty(Object,"hasOwn",{value:function(object,property){if(object==null){throw new TypeError("Cannot convert undefined or null to object");}return Object.prototype.hasOwnProperty.call(Object(object),property);},configurable:true,enumerable:false,writable:true});}
(function(global){if(!global.globalThis){if(Object.defineProperty){Object.defineProperty(global,"globalThis",{configurable:true,enumerable:false,value:global,writable:true});}else{global.globalThis=global;}}})(typeof this==="object"?this:Function("return this")());
if(!("toReversed" in Array.prototype)){Object.defineProperty(Array.prototype,"toReversed",{"configurable":true,"writable":true,"enumerable":false,"value":function(){"use strict";return this.slice().reverse();}});}
if(!("toSorted" in Array.prototype)){Object.defineProperty(Array.prototype,"toSorted",{"configurable":true,"writable":true,"enumerable":false,"value":function(cFn){"use strict";return this.slice().sort(cFn);}});}
if(!("toSpliced" in Array.prototype)){Object.defineProperty(Array.prototype,"toSpliced",{"configurable":true,"writable":true,"enumerable":false,"value":function(start,deleteCount,...items){var r=this.slice();r.splice(start,deleteCount,...items);return r;}});}
if(!("with" in Array.prototype)){Object.defineProperty(Array.prototype,"with",{"configurable":true,"writable":true,"enumerable":false,"value":function(i,v){"use strict";var r=this.slice();r[i]=v;return r;}});}
if(!("toReversed" in Uint8Array.prototype)){Object.defineProperty(Uint8Array.prototype,"toReversed",{"configurable":true,"writable":true,"enumerable":false,"value":function(){"use strict";return this.slice().reverse();}});}
if(!("toSorted" in Uint8Array.prototype)){Object.defineProperty(Uint8Array.prototype,"toSorted",{"configurable":true,"writable":true,"enumerable":false,"value":function(cFn){"use strict";return this.slice().sort(cFn);}});}
if(!("with" in Uint8Array.prototype)){Object.defineProperty(Uint8Array.prototype,"with",{"configurable":true,"writable":true,"enumerable":false,"value":function(i,v){"use strict";var r=this.slice();r[i]=v;return r;}});}
if(!window.GeneratorFunction){window.GeneratorFunction=Object.getPrototypeOf(function*(){}).constructor;}
if(!window.AsyncFunction){window.AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;}
if(!!window.BigInt&&!("toJSON" in BigInt.prototype)){Object.defineProperty(BigInt.prototype,"toJSON",{writable:true,enumerable:false,configurable:true,value:function toJSON(){return this.toString();}});}
const BASE16="0123456789ABCDEF";
const BASE32="234567ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const BASE36="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const BASE58="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
const BASE62="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
const WORDSAFEALPHABET="23456789CFGHJMPQRVWXcfghjmpqvwx";
const delay=(ms)=>new Promise(resolve=>setTimeout(resolve,ms));
const sleep=(ms)=>new Promise(resolve=>setTimeout(resolve,ms));
const randomBoolean=()=>(Math.random()>=0.5);
function b64Encode(s){return btoa(encodeURIComponent(String(s)).replace(/%([0-9A-F]{2})/g,function toSolidBytes(match,p1){return String.fromCharCode("0x"+p1);}));}
function b64Decode(s){return decodeURIComponent(atob(String(s)).split("").map(function(c){return "%"+("00"+c.charCodeAt(0).toString(16)).slice(-2);}).join(""));}
function javaHash(s,hx=false){if(s!==undefined){s=""+s;}else{return 0;}var h=0,l=s.length,c="";if(l==0){return h;}for(var i=0;i<l;i++){c=s.charCodeAt(i);h=((h<<5)-h)+c;h=h&h;}if(hx){return h.toString(16);}return h;}
function inherit(c,p){c.prototype=Object.create(p.prototype);c.prototype.constructor=c;return c;}
const getUrlVars=(str=location.search)=>[...new URLSearchParams(str).entries()].reduce(function(o,item){o[item[0]]=item[1];return o;},{});
const obj2string=(o)=>Object.keys(o).reduce((s,p)=>s+=encodeURIComponent(p)+"="+encodeURIComponent(o[p])+"&","").slice(0,-1);
function classof(v,t,th=false){var ot=Object.prototype.toString.call(v).slice(8,-1).toLowerCase();if(arguments.length<2){return ot;}if(!th){return ot===t.toLowerCase();}if(ot!==t.toLowerCase()){throw TypeError("Celestra classof(); type error: "+ot+" - "+t);}return true;}
function extend(...a){function EXT(...as){if(typeof as[0]==="boolean"){var t=as[1],d=as[0],s=2;}else{var t=as[0],d=false,s=1;}for(var i=s,l=as.length,so;i<l;i++){so=as[i];if(so!=null){for(var p in so){if(Object.hasOwn(so,p)){if(typeof so[p]==="object"&&d){t[p]=EXT(true,{},so[p]);}else{t[p]=so[p];}}}}}return t;}return EXT(...a);}
const sizeIn=(o)=>Object.keys(o).length;
const forIn=(o,fn)=>{Object.keys(o).forEach((v)=>fn(o[v],v,o));return o;}
const filterIn=(o,fn)=>Object.keys(o).reduce((r,p)=>{if(fn(o[p],p,o)){r[p]=o[p];}return r;},{});
function popIn(o,p){if(Object.hasOwn(o,p)){var v=o[p];delete o[p];return v;}}
const unBind=(fn)=>Function.prototype.call.bind(fn);
const bind=Function.prototype.call.bind(Function.prototype.bind);
const constant=(v)=>()=>v;
const identity=(v)=>v;
const noop=()=>{};
const T=()=>true;
const F=()=>false;
function assertEq(msg,v1,v2,strict=true){if(strict?v1!==v2:v1!=v2){throw new Error("[assertEq] - "+msg+" - "+v1+" - "+v2);}return true;}
function assertNotEq(msg,v1,v2,strict=true){if(strict?v1===v2:v1==v2){throw new Error("[assertNotEq] - "+msg+" - "+v1+" - "+v2);}return true;}
function assertTrue(msg,v){if(!v){throw new Error("[assertTrue] "+msg);}return true;}
function assertFalse(msg,v){if(!!v){throw new Error("[assertFalse] "+msg);}return true;}
function nanoid(size=21,alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"){var r="",dl=alphabet.length,pos,i=size;while(i--){do{pos=crypto.getRandomValues(new Uint8Array(1))[0];}while(pos>=dl);r+=alphabet[pos];}return r;}
function timestampID(size=21,alphabet="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"){var r=Date.now().toString(36).padStart(10,"0")+"-";var dl=alphabet.length,pos,i=((size>11)?size:12)-11;while(i--){do{pos=crypto.getRandomValues(new Uint8Array(1))[0];}while(pos>=dl);r+=alphabet[pos];}return r;}
const strPropercase=(s)=>String(s).split(" ").map(function(v){var a=Array.from(v).map((c)=>c.toLowerCase());if(a.length>0){a[0]=a[0].toUpperCase();}return a.join("");}).join(" ");
const strTitlecase=(s)=>String(s).split(" ").map(function(v){var a=Array.from(v).map((c)=>c.toLowerCase());if(a.length>0){a[0]=a[0].toUpperCase();}return a.join("");}).join(" ");
function strCapitalize(s){var a=[...String(s).toLowerCase()];if(a.length>0){a[0]=a[0].toUpperCase();}return a.join("");}
function strUpFirst(s){var a=[...String(s)];if(a.length>0){a[0]=a[0].toUpperCase();}return a.join("");}
function strDownFirst(s){var a=[...String(s)];if(a.length>0){a[0]=a[0].toLowerCase();}return a.join("");}
const strReverse=(s)=>Array.from(String(s)).reverse().join("");
const strCodePoints=(s)=>Array.from(String(s),(v)=>v.codePointAt(0));
const strFromCodePoints=([...a])=>String.fromCodePoint.apply(null,a);
function strAt(s,i,nC){var a=Array.from(String(s));if(nC==null){return a.at(i)||"";}i=i<0?a.length+i:i;if(i>a.length){return a.join("");}a[i]=nC;return a.join("");}
const strSplice=(s,i,c,...add)=>Array.from(s).toSpliced(i,c,add.join("")).join("");
const strHTMLRemoveTags=(s)=>String(s).replace(/<[^>]*>/g," ").replace(/\s{2,}/g," ").trim();
const strHTMLEscape=(s)=>String(s).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'");
const strHTMLUnEscape=(s)=>String(s).replace(/&/g,"&").replace(/&/g,"&").replace(/</g,"<").replace(/</g,"<").replace(/>/g,">").replace(/>/g,">").replace(/"/g,'"').replace(/"/g,'"').replace(/'/g,"'").replace(/'/g,"'");
const qsa=(s,c=document)=>Array.from(c.querySelectorAll(s));
const qs=(s,c=document)=>c.querySelector(s);
function domReady(fn){if(document.readyState!=="loading"){fn();}else{document.addEventListener("DOMContentLoaded",function(event){fn();});}}
function domCreate(t,ps,iH){if(arguments.length===1&& typeof t==="object"){var obj=t;t=obj.elementType;ps={};for(var p in obj){if(p!=="elementType"){ps[p]=obj[p];}}}var el=document.createElement(t);if(ps){for(var p in ps){if(p!=="style"||typeof ps[p]==="string"){el[p]=ps[p];}else{Object.assign(el.style,ps[p]);}}}if(iH){el.innerHTML=iH;}return el;}
function domToElement(s){var e=document.createElement("div");e.innerHTML=s;return e.firstElementChild;}
const domGetCSS=(e,p)=>(p?window.getComputedStyle(e,null)[p]:window.getComputedStyle(e,null));
function domSetCSS(e,n,v){if(typeof n==="string"){e.style[n]=v;}else if(typeof n==="object"){Object.keys(n).forEach((p)=>(e.style[p]=n[p]));}}
function domFadeIn(e,dur,d){var s=e.style,step=25/(dur||500);s.opacity=(s.opacity||0);s.display=(d||"");(function fade(){(s.opacity=parseFloat(s.opacity)+step)>1?s.opacity=1:setTimeout(fade,25);})();}
function domFadeOut(e,dur){var s=e.style,step=25/(dur||500);s.opacity=(s.opacity||1);(function fade(){(s.opacity-=step)<0?s.display="none":setTimeout(fade,25);})();}
function domFadeToggle(e,dur,d=""){if(window.getComputedStyle(e,null).display==="none"){var s=e.style,step=25/(dur||500);s.opacity=(s.opacity||0);s.display=(d||"");(function fade(){(s.opacity=parseFloat(s.opacity)+step)>1?s.opacity=1:setTimeout(fade,25);})();}else{var s=e.style,step=25/(dur||500);s.opacity=(s.opacity||1);(function fade(){(s.opacity-=step)<0?s.display="none":setTimeout(fade,25);})();}}
const domHide=(e)=>e.style.display="none";
const domShow=(e,d="")=>e.style.display=d;
function domToggle(e,d=""){if(window.getComputedStyle(e,null).display==="none"){e.style.display=d;}else{e.style.display="none";}}
const domIsHidden=(e)=>(window.getComputedStyle(e,null).display==="none");
const domSiblings=(el)=>Array.prototype.filter.call(el.parentNode.children,(e)=>(e!==el));
const domSiblingsPrev=(el)=>Array.prototype.slice.call(el.parentNode.children,0,Array.prototype.indexOf.call(el.parentNode.children,el));
const domSiblingsLeft=(el)=>Array.prototype.slice.call(el.parentNode.children,0,Array.prototype.indexOf.call(el.parentNode.children,el));
const domSiblingsNext=(el)=>Array.prototype.slice.call(el.parentNode.children,Array.prototype.indexOf.call(el.parentNode.children,el)+1,el.parentNode.children.length);
const domSiblingsRight=(el)=>Array.prototype.slice.call(el.parentNode.children,Array.prototype.indexOf.call(el.parentNode.children,el)+1,el.parentNode.children.length);
function importScript(...a){for(let item of a){let scr=document.createElement("script");scr.type="text\/javascript";scr.src=item;scr.onerror=function(e){throw new URIError("Loading failed for the script with source "+e.target.src);};(document.head||document.getElementsByTagName("head")[0]).appendChild(scr);}}
function importStyle(...a){for(let item of a){let stl=document.createElement("link");stl.rel="stylesheet";stl.type="text\/css";stl.href=item;stl.onerror=function(e){throw new URIError("Loading failed for the style with source "+e.target.href);};(document.head||document.getElementsByTagName("head")[0]).appendChild(stl);}}
function form2array(f){var fld,a=[];if(typeof f==="object"&&f.nodeName.toLowerCase()==="form"){for(var i=0,len=f.elements.length;i<len;i++){fld=f.elements[i];if(fld.name&&!fld.disabled&&fld.type!=="file"&&fld.type!=="reset"&&fld.type!=="submit"&&fld.type!=="button"){if(fld.type==="select-multiple"){for(var j=0,l=f.elements[i].options.length;j<l;j++){if(fld.options[j].selected){a.push({"name":encodeURIComponent(fld.name),"value":encodeURIComponent(fld.options[j].value)});}}}else if((fld.type!=="checkbox"&&fld.type!=="radio")||fld.checked){a.push({"name": encodeURIComponent(fld.name),"value":encodeURIComponent(fld.value)});}}}}return a;}
function form2string(f){var fld,a=[];if(typeof f==="object"&&f.nodeName.toLowerCase()==="form"){for(var i=0,len=f.elements.length;i<len;i++){fld=f.elements[i];if(fld.name&&!fld.disabled&&fld.type!=="file"&&fld.type!=="reset"&&fld.type!=="submit"&&fld.type!=="button"){if(fld.type==="select-multiple"){for(var j=0,l=f.elements[i].options.length;j<l;j++){if(fld.options[j].selected){a.push(encodeURIComponent(fld.name)+"="+encodeURIComponent(fld.options[j].value));}}}else if((fld.type!=="checkbox"&&fld.type!=="radio")||fld.checked){a.push(encodeURIComponent(fld.name)+"="+encodeURIComponent(fld.value));}}}}return a.join("&").replace(/%20/g,"+");}
const getDoNotTrack=()=>(navigator.doNotTrack===true|| navigator.doNotTrack===1||navigator.doNotTrack==="1"||window.doNotTrack===true||window.doNotTrack===1||window.doNotTrack==="1"||navigator.msDoNotTrack===true||navigator.msDoNotTrack===1||navigator.msDoNotTrack==="1");
function getLocation(s,e){if(!e){var e=function(){};}function getE(error){e("ERROR("+error.code+"): "+error.message);}if(navigator.geolocation){navigator.geolocation.getCurrentPosition(s,getE);}else{getE("Geolocation is not supported in this browser.");}}
function createFile(fln,c,dt){var l=arguments.length;if(l>1){if(l===2){dt="text/plain";}var b=new Blob([c],{type:dt});if(window.navigator.msSaveOrOpenBlob){window.navigator.msSaveBlob(b,fln);}else{var e=window.document.createElement("a");e.href=window.URL.createObjectURL(b);e.download=fln;document.body.appendChild(e);e.click();document.body.removeChild(e);window.URL.revokeObjectURL(e.href);}}else{throw "Celestra createFile error: too few parameters.";}}
function getFullscreen(){return(document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||undefined);}
function setFullscreenOn(s){if(typeof s==="string"){var e=document.querySelector(s);}else if(typeof s==="object"){var e=s;}if(e.requestFullscreen){e.requestFullscreen();}else if(e.mozRequestFullScreen){e.mozRequestFullScreen();}else if(e.webkitRequestFullscreen){e.webkitRequestFullscreen();}else if(e.msRequestFullscreen){e.msRequestFullscreen();}}
function setFullscreenOff(){if(document.exitFullscreen){document.exitFullscreen();}else if(document.mozCancelFullScreen){document.mozCancelFullScreen();}else if(document.webkitExitFullscreen){document.webkitExitFullscreen();}else if(document.msExitFullscreen){document.msExitFullscreen();}}
const domGetCSSVar=(n)=>getComputedStyle(document.documentElement).getPropertyValue(n[0]==="-"?n:"--"+n);
const domSetCSSVar=(n,v)=>document.documentElement.style.setProperty((n[0]==="-"?n:"--"+n),v);
const domScrollToTop=()=>window.scrollTo(0,0);
const domScrollToBottom=()=>window.scrollTo(0,document.body.scrollHeight);
const domScrollToElement=(e,top=true)=>e.scrollIntoView(top);
function getText(u,s){celestra.ajax({url:u,success:s});}
function getJson(u,s){celestra.ajax({url:u,format:"json",success:s});}
function ajax(o){if(typeof o.url!=="string"){throw new TypeError("Celestra ajax error: The url parameter have to be a string.");}if(typeof o.success!=="function"){throw new TypeError("Celestra ajax error: The success parameter have to be a function.");}if(!(["function","undefined"].includes(typeof o.error))){throw new TypeError("Celestra ajax error: The error parameter have to be a function or undefined.");}if(!o.queryType){o.queryType="ajax";}else{o.queryType=o.queryType.toLowerCase();}if(!o.type){o.type="get";}else{o.type=o.type.toLowerCase();}if(o.type==="get"){var typeStr="GET";}else if(o.type==="post"){var typeStr="POST";}else{ throw "Celestra ajax error: The type parameter have to be \"get\" or \"post\".";}if(!o.format){o.format="text";}else{o.format=o.format.toLowerCase();if(!(["text","json","xml"].includes(o.format))){throw "Celestra ajax error: The format parameter have to be \"text\" or \"json\" or \"xml\".";}}var xhr;if(o.queryType==="ajax"){xhr=new XMLHttpRequest();}else if(o.queryType==="cors"){xhr=new XMLHttpRequest();if(!("withCredentials" in xhr)){xhr=new XDomainRequest();}}else{throw "Celestra ajax error: The querytype parameter have to be \"ajax\" or \"cors\".";}if(typeof user==="string"&&typeof password==="string"){xhr.open(typeStr,o.url,true,o.user,o.password);}else{xhr.open(typeStr,o.url,true);}if(o.queryType==="ajax"){xhr.onreadystatechange=function(){if(this.readyState===4&&this.status===200){switch(o.format.toLowerCase()){case "text":o.success(this.responseText);break;case"json":o.success(JSON.parse(this.responseText));break;case"xml":o.success(this.responseXML);break;default:o.success(this.responseText);}}};xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");if(o.typeStr==="POST"){xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}}else if(o.queryType==="cors"){xhr.onload=function(request){switch(o.format.toLowerCase()){case "text":o.success(request.target.responseText||request.currentTarget.response);break;case "json":o.success(JSON.parse(request.target.responseText||request.currentTarget.response));break;case "xml":o.success(request.target.responseXML||request.currentTarget.responseXML);break;default:o.success(request.target.responseText||request.currentTarget.response);}};}if(typeof o.error==="function"){xhr.onerror=o.error;}if(typeStr==="GET"){xhr.send();}else if(typeStr==="POST"){xhr.send(encodeURI(o.data));}}
const isTruthy=(v)=>!!v;
const isFalsy=(v)=>!v;
const isAsyncGeneratorFn=(v)=>(Object.getPrototypeOf(v).constructor===Object.getPrototypeOf(async function*(){}).constructor);
const isConstructorFn=(v)=>(typeof v==="function"&&typeof v.prototype==="object");
const isPlainObject=(v)=>(v!=null&&typeof v==="object"&&(Object.getPrototypeOf(v)===Object.prototype||Object.getPrototypeOf(v)===null));
const isEmptyMap=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="map"&&v.size===0);
const isEmptySet=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="set"&&v.size===0);
function isEmptyIterator(it){for(let item of it){return false;}return true;}
const isDataView=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="dataview");
const isError=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="error");
const isPromise=(v)=>(v!=null&&typeof v==="object"&&typeof v.then==="function");
function isSameObject(o1,o2){if(o1.constructor!==o2.constructor){return false;}var a1=Object.keys(o1).sort(),a2=Object.keys(o2).sort();if(a1.length===a2.length){for(var i=0,l=a1.length;i<l;i++){if(a1[i]!==a2[i]||o1[a1[i]]!==o2[a1[i]]){return false;}}return true;}return false;}
const isSameArray=(a,b)=>(Array.isArray(a)&&Array.isArray(b)&&(a.length===b.length)&&a.every((v,i)=>v===b[i]));
function isSameMap(m1,m2){if(Object.prototype.toString.call(m1).slice(8,-1).toLowerCase()==="map"&&Object.prototype.toString.call(m2).slice(8,-1).toLowerCase()==="map"&&m1.size===m2.size){for(const item of m1.keys()){if(m1.get(item)!==m2.get(item)){return false;}}return true;}return false;}
function isSameSet(s1,s2){if(Object.prototype.toString.call(s1).slice(8,-1).toLowerCase()==="set"&&Object.prototype.toString.call(s2).slice(8,-1).toLowerCase()==="set"&&s1.size===s2.size){for(const item of s1){if(!s2.has(item)){return false;}}return true;}return false;}
const isSameIterator=([...a1],[...a2])=>(a1.length===a2.length&&a1.every((v,i)=>v===a2[i]));
const isString=(v)=>(typeof v==="string");
const isChar=(v)=>(typeof v==="string"&&(v.length===1||Array.from(v).length===1));
const isNumber=(v)=>(typeof v==="number");
const isFloat=(v)=>(typeof v==="number"&&!!(v%1));
const isNumeric=(v)=>((typeof v==="number"&&v===v)?true:(!isNaN(parseFloat(v))&&isFinite(v)));
const isBoolean=(v)=>(typeof v==="boolean");
const isObject=(v)=>(v!=null&&typeof v==="object");
const isEmptyObject=(v)=>(v!=null&&typeof v==="object"&&Object.keys(v).length===0);
const isFunction=(v)=>(typeof v==="function");
const isCallable=(v)=>(typeof v==="function");
const isEmptyArray=(v)=>(Array.isArray(v)&&v.length===0);
const isArraylike=(v)=>((typeof v==="object"||typeof v==="string")&&v!=null&&typeof v.length==="number"&&v.length>=0&&v.length%1===0);
const isNull=(v)=>(v===null);
const isUndefined=(v)=>(v===undefined);
const isNullOrUndefined=(v)=>(v==null);
const isNil=(v)=>(v==null||v!==v);
const isPrimitive=(v)=>((typeof v!=="object"&&typeof v!=="function")||v===null);
const isSymbol=(v)=>(typeof v==="symbol");
const isMap=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="map");
const isSet=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="set");
const isWeakMap=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="weakmap");
const isWeakSet=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="weakset");
const isIterator=(v)=>(v!=null&&typeof v==="object"&&typeof v.next==="function");
const isDate=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="date");
const isRegexp=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="regexp");
const isElement=(v)=>(v!=null&&typeof v==="object"&&v.nodeType===1);
const isIterable=(v)=>(v!=null&&typeof v[Symbol.iterator]==="function");
const isBigInt=(v)=>(typeof v==="bigint");
const isArrayBuffer=(v)=>(Object.prototype.toString.call(v).slice(8,-1).toLowerCase()==="arraybuffer");
const isTypedArray=(v)=>["int8array","uint8array","uint8clampedarray","int16array","uint16array","int32array","uint32array","float32array","float64array","bigint64array","biguint64array"].includes(Object.prototype.toString.call(v).slice(8,-1).toLowerCase());
const isGeneratorFn=(v)=>(Object.getPrototypeOf(v).constructor===Object.getPrototypeOf(function*(){}).constructor);
const isAsyncFn=(v)=>(Object.getPrototypeOf(v).constructor===Object.getPrototypeOf(async function(){}).constructor);
function setCookie(name,value,hours=8760,path="/",domain,secure,SameSite="Lax",HttpOnly){if(typeof name==="object"){var settings=name;name=settings.name;value=settings.value;hours=settings.hours||8760;path=settings.path||"/";domain=settings.domain;secure=settings.secure;SameSite=settings.SameSite||"Lax";HttpOnly=settings.HttpOnly;}var expire=new Date();expire.setTime(expire.getTime()+(Math.round(hours*60*60*1000)));document.cookie=encodeURIComponent(name)+"="+encodeURIComponent(value)+"; expires="+expire.toUTCString()+"; path="+path+(domain?"; domain="+domain:"")+(secure?"; secure":"")+(typeof SameSite==="string"&&SameSite.length>0?"; SameSite="+SameSite:"")+(HttpOnly?"; HttpOnly":"")+";";}
function getCookie(name){if(document.cookie.length!==0){var r={},a=document.cookie.split(";");for(var i=0,l=a.length;i<l;i++){var e=a[i].trim().split("=");r[decodeURIComponent(e[0])]=decodeURIComponent(e[1]);}return (name?(r[name]?r[name]:null):r);}return (name?null:{});}
const hasCookie=(n)=>(document.cookie.includes(encodeURIComponent(n)+"="));
function removeCookie(name,path="/",domain,secure,SameSite="Lax",HttpOnly){if(typeof name==="object"){var settings=name;name=settings.name;path=settings.path||"/";domain=settings.domain;secure=settings.secure;SameSite=settings.SameSite||"Lax";HttpOnly=settings.HttpOnly;}var r=(document.cookie.includes(encodeURIComponent(name)+"="));document.cookie=encodeURIComponent(name)+"=; expires=Thu, 01 Jan 1970 00:00:01 GMT"+"; path="+path+(domain?"; domain="+domain:"")+(secure?"; secure":"")+(typeof SameSite==="string"&&SameSite.length>0?"; SameSite="+SameSite:"")+(HttpOnly?"; HttpOnly":"")+";";return r;}
function clearCookies(path="/",domain,secure,SameSite="Lax",HttpOnly){if(typeof path==="object"){var settings=path;path=settings.path||"/";domain=settings.domain;secure=settings.secure;SameSite=settings.SameSite||"Lax";HttpOnly=settings.HttpOnly;}if(document.cookie.length!==0){var a=document.cookie.split(";");for(var i=0,l=a.length;i<l;i++){document.cookie=encodeURIComponent(a[i].trim().split("=")[0])+"=; expires=Thu, 01 Jan 1970 00:00:01 GMT"+"; path="+path+(domain?"; domain="+domain:"")+(secure?"; secure":"")+(typeof SameSite==="string"&&SameSite.length>0?"; SameSite="+SameSite:"")+(HttpOnly?"; HttpOnly":"")+";";}}}
function arrayDeepClone([...a]){const ADC=(v)=>(Array.isArray(v)?Array.from(v,ADC):v);return ADC(a);}
const arrayCreate=(length=0)=>Array((1/+length===1/-0)?0:+length);
const initial=([...a])=>a.slice(0,-1);
function shuffle([...a]){for(let i=a.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1));[a[i],a[j]]=[a[j],a[i]];}return a;}
const partition=([...a],fn)=>[a.filter(fn),a.filter((e,i,a)=>!(fn(e,i,a)))];
const group=(items,fn,map=false)=>(map?Map:Object)["groupBy"](items,fn);
const arrayUnion=(...a)=>[...new Set(a.map(([...e])=>e).flat())];
const arrayIntersection=([...a],[...b])=>a.filter((v)=>b.indexOf(v)>-1).filter((e,i,arr)=>arr.indexOf(e)===i);
const arrayDifference=([...a],[...b])=>a.filter((v)=>b.indexOf(v)===-1).filter((e,i,arr)=>arr.indexOf(e)===i);
const arraySymmetricDifference=([...a],[...b])=>a.filter((v)=>b.indexOf(v)===-1).concat(b.filter((v)=>a.indexOf(v)===-1)).filter((e,i,arr)=>arr.indexOf(e)===i);
const setUnion=(...a)=>new Set(a.map(([...e])=>e).flat());
const setIntersection=([...a],b)=>new Set(a.filter((v)=>b.has(v)));
const setDifference=([...a],b)=>new Set(a.filter((v)=>!(b.has(v))));
const setSymmetricDifference=(a,b)=>new Set([...a].filter((v)=>!(b.has(v))).concat([...b].filter((v)=>!(a.has(v)))));
const isSuperset=([...sup],[...sub])=>sub.every((v)=>sup.indexOf(v)>-1);
const min=(...a)=>a.reduce((acc,v)=>(v<acc?v:acc),a[0]);
const max=(...a)=>a.reduce((acc,v)=>(v>acc?v:acc),a[0]);
const arrayRepeat=(v,n=100)=>Array(n).fill(v);
const arrayCycle=([...a],n=100)=>Array(n).fill(a).flat();
const arrayRange=(s=0,e=99,st=1)=>Array.from({length:(e-s)/st+1},(v,i)=>s+(i*st));
function zip(...a){a=a.map((v)=>Array.from(v));let r=[],i,j,l=a.length,min=a[0].length,item;for(item of a){if(item.length<min){min=item.length;}}for(i=0;i<min;i++){item=[];for(j=0;j<l;j++){item.push(a[j][i]);}r.push(item);}return r;}
function unzip([...a]){a=a.map(([...v])=>v);let r=[],i,j,l1=a[0].length,l2=a.length;for(i=0;i<l1;i++){r.push([]);}for(i=0;i<l1;i++){for(j=0;j<l2;j++){r[i].push(a[j][i]);}}return r;}
function zipObj([...a1],[...a2]){var r=[],i,l=(a1.length<a2.length?a1.length:a2.length);for(i=0;i<l;i++){r.push([a1[i],a2[i]]);}return Object.fromEntries(r);}
const arrayUnique=(a)=>[...new Set(a)];
const arrayAdd=(a,v)=>(a.indexOf(v)===-1)?!!a.push(v):false;
function arrayClear(a){a.length=0;return a;}
function arrayRemove(a,v,all=false){var found=a.indexOf(v)>-1;if(!all){var pos=a.indexOf(v);if(pos>-1){a.splice(pos,1);}}else{var pos=-1;while((pos=a.indexOf(v))>-1){a.splice(pos,1);}}return found;}
function arrayRemoveBy(a,fn,all=false){var found=a.findIndex(fn)>-1;if(!all){var pos=a.findIndex(fn);if(pos>-1){a.splice(pos,1);}}else{var pos=-1;while((pos=a.findIndex(fn))>-1){a.splice(pos,1);}}return found;}
function arrayMerge(t,...a){t.push(...[].concat(...a));return t;}
function*iterRange(s=0,st=1,e=Infinity){let i=s;while(i<=e){yield i;i+=st;}}
function*iterCycle([...a],n=Infinity){let i=0;while(i<n){yield* a;i++;}}
function*iterRepeat(v,n=Infinity){let i=0;while(i<n){yield v;i++;}}
function*takeWhile(it,fn){for(let item of it){if(!fn(item)){break;}yield item;}}
function*dropWhile(it,fn){let d=true;for(let item of it){if(d&&!fn(item)){d=false;}if(!d){yield item;}}}
function*take(it,n=1){let i=n;for(let item of it){if(i<=0){break;}yield item;i--;}}
function*drop(it,n=1){let i=n;for(let item of it){if(i<1){yield item;}else{i--;}}}
function forEach(it,fn){let i=0;for(let item of it){fn(item,i++);}}
function forEachRight([...a],fn){let i=a.length;while(i--){fn(a[i],i);}}
function*map(it,fn){let i=0;for(let item of it){yield fn(item,i++);}}
function*filter(it,fn){let i=0;for(let item of it){if(fn(item,i++)){yield item;}}}
function*reject(it,fn){let i=0;for(let item of it){if(!fn(item,i++)){yield item;}}}
function*slice(it,begin=0,end=Infinity){let i=0;for(let item of it){if(i>=begin&&i<=end){yield item;}else if(i>end){return;}i++;}}
function*tail(it){let first=true;for(let item of it){if(!first){yield item;}else{first=false;}}}
function item(it,p){let i=0;for(let item of it){if(i++===p){return item;}}}
function nth(it,p){let i=0;for(let item of it){if(i++===p){return item;}}}
function size(it){let i=0;for(let item of it){i++;}return i;}
function first(it){for(let item of it){return item;}}
function head(it){for(let item of it){return item;}}
function last(it){let item;for(item of it){}return item;}
const reverse=([...a])=>a.reverse();
const sort=([...a],ns)=>a.sort(ns?(a,b)=>{if(a<b){return -1;}if(a>b){return 1;}return 0;}:undefined);
function includes(it,v){for(let item of it){if(item===v){return true;}}return false;}
function contains(it,v){for(let item of it){if(item===v){return true;}}return false;}
function find(it,fn){let i=0;for(let item of it){if(fn(item,i++)){return item;}}}
function findLast(it,fn){let i=0,r;for(let item of it){if(fn(item,i++)){r=item;}}return r;}
function every(it,fn){let i=0;for(let item of it){if(!fn(item,i++)){return false;}}if(i===0){return false;}return true;}
function some(it,fn){let i=0;for(let item of it){if(fn(item,i++)){return true;}}return false;}
function none(it,fn){let i=0;for(let item of it){if(fn(item,i++)){return false;}}if(i===0){return false;}return true;}
const takeRight=([...a],n=1)=>a.reverse().slice(0,n);
function*takeRightWhile([...a],fn){let i=0;for(let item of a.reverse()){if(fn(item,i++)){yield item;}else{break;}}}
const dropRight=([...a],n=1)=>a.reverse().slice(n);
function* dropRightWhile([...a],fn){let d=true,i=0;for(let item of a.reverse()){if(d&&!fn(item,i++)){d=false;}if(!d){yield item;}}}
function*concat(){for(let item of arguments){yield* item;}}
function reduce(it,fn,iv){let acc=iv,i=0;for(let item of it){if(i===0&&acc===undefined){acc=item;}else{acc=fn(acc,item,i++);}}return acc;}
function*enumerate(it,offset=0){let i=offset;for(let item of it){yield [i++,item];}}
function*entries(it,offset=0){let i=offset;for(let item of it){yield [i++,item];}}
function*flat(it){for(let item of it){yield* item;}}
function join(it,sep=","){sep=String(sep);let r="";for(let item of it){r+=sep+item;}return r.slice(sep.length);}
const withOut=([...a],[...fl])=>a.filter((e)=>fl.indexOf(e)===-1);
function getInV(V,P){if(V==null){throw TypeError();}return Object(V)[P];}
const getIn=(O,P)=>O[P];
const setIn=(O,P,V)=>{O[P]=V;return O;}
const hasIn=(O,P)=>(P in O);
const isPropertyKey=(v)=>(typeof v==="string"||typeof v==="symbol");
const toPropertyKey=(v)=>(typeof v==="symbol"?v:String(v));
function toObject(v){if(v==null){throw TypeError();}return Object(v);}
const isSameValue=(v1,v2)=>((v1===v2)?(v1!==0||1/v1===1/v2):(v1!==v1&&v2!==v2));
const isSameValueZero=(v1,v2)=>(v1===v2||(v1!==v1&&v2!==v2));
const isSameValueNonNumber=(v1,v2)=>(v1===v2);
const createMethodProperty=(O,P,V)=>Object.defineProperty(O,P,{value:V,writable:true,enumerable:false,configurable:true});
const type=(v)=>((v===null)?"null":(typeof v));
const isIndex=(v)=>(Number.isSafeInteger(v)&&v>=0&&1/v!==1/-0);
const toIndex=(v)=>((v=Math.min(Math.max(0,Math.trunc(+v)),2147483647))===v)?v:0;
const toInteger=(v)=>((v=Math.min(Math.max(-2147483648,Math.trunc(+v)),2147483647))===v)?v:0;
const createDataProperty=(O,P,V)=>Object.defineProperty(O,P,{value:V,writable:true,enumerable:true,configurable:true});
function toArray(O){return(Array.isArray(O)?O:Array.from(O));}
const sum=(f,...a)=>a.reduce((acc,v)=>acc+v,f);
const avg=(f,...a)=>a.reduce((acc,v)=>acc+v,f)/(a.length+1);
const product=(f,...a)=>a.reduce((acc,v)=>acc*v,f);
const clamp=(v,i,a)=>(v>a?a:v<i?i:v);
const minmax=(v,i,a)=>(v>a?a:v<i?i:v);
function isEven(v){var r=v%2;if(!Number.isNaN(r)){return r===0;}return false;}
function isOdd(v){var r=v%2;if(!Number.isNaN(r)){return r!==0;}return false;}
const toInt8=(v)=>((v=Math.min(Math.max(-128,Math.trunc(+v)),127))===v)?v:0;
const toUInt8=(v)=>((v=Math.min(Math.max(0,Math.trunc(+v)),255))===v)?v:0;
const toInt16=(v)=>((v=Math.min(Math.max(-32768,Math.trunc(+v)),32767))===v)?v:0;
const toUInt16=(v)=>((v=Math.min(Math.max(0,Math.trunc(+v)),65535))===v)?v:0;
const toInt32=(v)=>((v=Math.min(Math.max(-2147483648,Math.trunc(+v)),2147483647))===v)?v:0;
const toUInt32=(v)=>((v=Math.min(Math.max(0,Math.trunc(+v)),4294967295))===v)?v:0;
const toBigInt64=(v)=>BigInt(typeof v==="bigint"?(v>Math.pow(2,63)-1?Math.pow(2,63)-1:v<Math.pow(-2,63)?Math.pow(-2,63):v):((v=Math.min(Math.max(Math.pow(-2,63),Math.trunc(+v)),Math.pow(2,63)-1))===v)?v:0);
const toBigUInt64=(v)=>BigInt(typeof v==="bigint"?(v>Math.pow(2,64)-1?Math.pow(2,64)-1:v<0?0:v):((v=Math.min(Math.max(0,Math.trunc(+v)),Math.pow(2,64)-1))===v)?v:0);
const toFloat32=(v)=>((v=Math.min(Math.max(-3.4e38,+v),3.4e38))===v)?v:0;
const isInt8=(v)=>(Number.isInteger(v)?(v>=-128&&v<=127):false);
const isUInt8=(v)=>(Number.isInteger(v)?(v>=0&&v<=255):false);
const isInt16=(v)=>(Number.isInteger(v)?(v>=-32768&&v<=32767):false);
const isUInt16=(v)=>(Number.isInteger(v)?(v>=0&&v<=65535):false);
const isInt32=(v)=>(Number.isInteger(v)?(v>=-2147483648&&v<=2147483647):false);
const isUInt32=(v)=>(Number.isInteger(v)?(v>=0&&v<=4294967295):false);
const isBigInt64=(v)=>(typeof v==="bigint"?(v>=Math.pow(-2,63)&&v<=Math.pow(2,63)-1):false);
const isBigUInt64=(v)=>(typeof v==="bigint"?(v>=0&&v<=Math.pow(2,64)-1):false);
const signbit=(v)=>(((v=+v)!==v)?!1:((v<0)||Object.is(v,-0)));
function randomInt(i=100,a){if(a==null){a=i;i=0;}i=Math.ceil(+i);return Math.floor(Math.random()*(Math.floor(+a)-i+1)+i);}
function randomFloat(i=100,a){if(a==null){a=i;i=0;}var r=(Math.random()*(a-i+1))+i;return r>a?a:r;}
const inRange=(v,i,a)=>(v>=i&&v<=a);
const VERSION="Celestra v5.6.1 min";
function noConflict(){return celestra;}
var celestra = {VERSION:VERSION, noConflict:noConflict, BASE16:BASE16, BASE32:BASE32, BASE36:BASE36, BASE58:BASE58, BASE62:BASE62, WORDSAFEALPHABET:WORDSAFEALPHABET, delay:delay, sleep:sleep, randomBoolean:randomBoolean, b64Encode:b64Encode, b64Decode:b64Decode, javaHash:javaHash, inherit:inherit, getUrlVars:getUrlVars, obj2string:obj2string, classof:classof, extend:extend, sizeIn:sizeIn, forIn:forIn, filterIn:filterIn, popIn:popIn, unBind:unBind, bind:bind, constant:constant, identity:identity, noop:noop, T:T, F:F, assertEq:assertEq, assertNotEq:assertNotEq, assertTrue:assertTrue, assertFalse:assertFalse, nanoid:nanoid, timestampID:timestampID, strPropercase:strPropercase, strTitlecase:strTitlecase, strCapitalize:strCapitalize, strUpFirst:strUpFirst, strDownFirst:strDownFirst, strReverse:strReverse, strCodePoints:strCodePoints, strFromCodePoints:strFromCodePoints, strAt:strAt, strSplice:strSplice, strHTMLRemoveTags:strHTMLRemoveTags, strHTMLEscape:strHTMLEscape, strHTMLUnEscape:strHTMLUnEscape, qsa:qsa, qs:qs, domReady:domReady, domCreate:domCreate, domToElement:domToElement, domGetCSS:domGetCSS, domSetCSS:domSetCSS, domFadeIn:domFadeIn, domFadeOut:domFadeOut, domFadeToggle:domFadeToggle, domHide:domHide, domShow:domShow, domToggle:domToggle, domIsHidden:domIsHidden, domSiblings:domSiblings, domSiblingsPrev:domSiblingsPrev, domSiblingsLeft:domSiblingsLeft, domSiblingsNext:domSiblingsNext, domSiblingsRight:domSiblingsRight, importScript:importScript, importStyle:importStyle, form2array:form2array, form2string:form2string, getDoNotTrack:getDoNotTrack, getLocation:getLocation, createFile:createFile, getFullscreen:getFullscreen, setFullscreenOn:setFullscreenOn, setFullscreenOff:setFullscreenOff, domGetCSSVar:domGetCSSVar, domSetCSSVar:domSetCSSVar, domScrollToTop:domScrollToTop, domScrollToBottom:domScrollToBottom, domScrollToElement:domScrollToElement, getText:getText, getJson:getJson, ajax:ajax, isTruthy:isTruthy, isFalsy:isFalsy, isAsyncGeneratorFn:isAsyncGeneratorFn, isConstructorFn:isConstructorFn, isPlainObject:isPlainObject, isEmptyMap:isEmptyMap, isEmptySet:isEmptySet, isEmptyIterator:isEmptyIterator, isDataView:isDataView, isError:isError, isPromise:isPromise, isSameObject:isSameObject, isSameArray:isSameArray, isSameMap:isSameMap, isSameSet:isSameSet, isSameIterator:isSameIterator, isString:isString, isChar:isChar, isNumber:isNumber, isFloat:isFloat, isNumeric:isNumeric, isBoolean:isBoolean, isObject:isObject, isEmptyObject:isEmptyObject, isFunction:isFunction, isCallable:isCallable, isEmptyArray:isEmptyArray, isArraylike:isArraylike, isNull:isNull, isUndefined:isUndefined, isNullOrUndefined:isNullOrUndefined, isNil:isNil, isPrimitive:isPrimitive, isSymbol:isSymbol, isMap:isMap, isSet:isSet, isWeakMap:isWeakMap, isWeakSet:isWeakSet, isIterator:isIterator, isDate:isDate, isRegexp:isRegexp, isElement:isElement, isIterable:isIterable, isBigInt:isBigInt, isArrayBuffer:isArrayBuffer, isTypedArray:isTypedArray, isGeneratorFn:isGeneratorFn, isAsyncFn:isAsyncFn, setCookie:setCookie, getCookie:getCookie, hasCookie:hasCookie, removeCookie:removeCookie, clearCookies:clearCookies, arrayDeepClone:arrayDeepClone, arrayCreate:arrayCreate, initial:initial, shuffle:shuffle, partition:partition, group:group, arrayUnion:arrayUnion, arrayIntersection:arrayIntersection, arrayDifference:arrayDifference, arraySymmetricDifference:arraySymmetricDifference, setUnion:setUnion, setIntersection:setIntersection, setDifference:setDifference, setSymmetricDifference:setSymmetricDifference, isSuperset:isSuperset, min:min, max:max, arrayRepeat:arrayRepeat, arrayCycle:arrayCycle, arrayRange:arrayRange, zip:zip, unzip:unzip, zipObj:zipObj, arrayUnique:arrayUnique, arrayAdd:arrayAdd, arrayClear:arrayClear, arrayRemove:arrayRemove, arrayRemoveBy:arrayRemoveBy, arrayMerge:arrayMerge, iterRange:iterRange, iterCycle:iterCycle, iterRepeat:iterRepeat, takeWhile:takeWhile, dropWhile:dropWhile, take:take, drop:drop, forEach:forEach, forEachRight:forEachRight, map:map, filter:filter, reject:reject, slice:slice, tail:tail, item:item, nth:nth, size:size, first:first, head:head, last:last, reverse:reverse, sort:sort, includes:includes, contains:contains, find:find, findLast:findLast, every:every, some:some, none:none, takeRight:takeRight, takeRightWhile:takeRightWhile, dropRight:dropRight, dropRightWhile:dropRightWhile, concat:concat, reduce:reduce, enumerate:enumerate, entries:entries, flat:flat, join:join, withOut:withOut, getInV:getInV, getIn:getIn, setIn:setIn, hasIn:hasIn, isPropertyKey:isPropertyKey, toPropertyKey:toPropertyKey, toObject:toObject, isSameValue:isSameValue, isSameValueZero:isSameValueZero, isSameValueNonNumber:isSameValueNonNumber, createMethodProperty:createMethodProperty, type:type, isIndex:isIndex, toIndex:toIndex, toInteger:toInteger, createDataProperty:createDataProperty, toArray:toArray, sum:sum, avg:avg, product:product, clamp:clamp, minmax:minmax, isEven:isEven, isOdd:isOdd, toInt8:toInt8, toUInt8:toUInt8, toInt16:toInt16, toUInt16:toUInt16, toInt32:toInt32, toUInt32:toUInt32, toBigInt64:toBigInt64, toBigUInt64:toBigUInt64, toFloat32:toFloat32, isInt8:isInt8, isUInt8:isUInt8, isInt16:isInt16, isUInt16:isUInt16, isInt32:isInt32, isUInt32:isUInt32, isBigInt64:isBigInt64, isBigUInt64:isBigUInt64, signbit:signbit, randomInt:randomInt, randomFloat:randomFloat, inRange:inRange};
if (typeof window!=="undefined"){window.celestra=celestra;celestra.__prevCEL__=window.CEL;window.CEL=celestra;}
}(window,document));