![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/keeview_app/html/ |
Upload File : |
'use strict' class Date2 extends Date { constructor (...args) { super(...args); var localData = { mode: "live", hour: Date.prototype.getHours.call(this), minute: Date.prototype.getMinutes.call(this), saved: Date.prototype.getDate.call(this), date: Date.prototype.getDate.call(this), month: Date.prototype.getMonth.call(this) + 1, year: Date.prototype.getFullYear.call(this) }; Object.defineProperty(this, "mode", { get: function (localData) { return function () { return localData.mode; } } (localData), set: function (localData) { return function (value) { if ((value != "live") && (value != "date") && (value != "datetime")) return localData.mode; localData.mode = value; return value; } } (localData) }); this.getDate = function (me, localData) { return function () { if (localData.mode == "live") { return Date.prototype.getDate.call(me); } return localData.date; } } (this, localData); this.getMonth = function (me, localData) { return function () { if (localData.mode == "live") { return Date.prototype.getMonth.call(me); } return localData.month - 1; } } (this, localData); this.getFullYear = function (me, localData) { return function () { if (localData.mode == "live") { return Date.prototype.getFullYear.call(me); } return localData.year; } } (this, localData); this.getHours = function (me, localData) { return function () { switch (localData.mode) { case "live": return Date.prototype.getHours.call(me); case "date": return 0; case "datetime": return localData.hour; } return 0; } } (this, localData); this.getMinutes = function (me, localData) { return function () { switch (localData.mode) { case "live": return Date.prototype.getMinutes.call(me); case "date": return 0; case "datetime": return localData.minute; } return 0; } } (this, localData); this.getSeconds = function (me, localData) { return function () { if (localData.mode == "live") return Date.prototype.getSeconds.call(me); return 0; } } (this, localData); this.getMilliseconds = function (me, localData) { return function () { if (localData.mode == "live") return Date.prototype.getMilliseconds.call(me); return 0; } } (this, localData); this.setDate = function (me, localData) { return function (value) { localData.date = value; return Date.prototype.setDate.call(me, value); } } (this, localData); this.setMonth = function (me, localData) { return function (value) { localData.month = value + 1; return Date.prototype.setMonth.call(me, value); } } (this, localData); this.setFullYear = function (me, localData) { return function (value) { localData.year = value; return Date.prototype.setFullYear.call(me, value); } } (this, localData); this.setHours = function (me, localData) { return function (value) { if (localData.mode == "date") value = 0; localData.hour = value; return Date.prototype.setHours.call(me, value); } } (this, localData); this.setMinutes = function (me, localData) { return function (value) { if (localData.mode == "date") value = 0; localData.minute = value; return Date.prototype.setMinutes.call(me, value); } } (this, localData); this.setSeconds = function (me, localData) { return function () { if (localData.mode != "live") value = 0; return Date.prototype.setSeconds.call(me, value); } } (this, localData); this.setMilliseconds = function (me, localData) { return function () { if (localData.mode != "live") value = 0; return Date.prototype.setMilliseconds.call(me, value); } } (this, localData); } } class Geometry { constructor (type) { if (type === undefined) type = ""; if (!EncodingClass.type.isString(type)) { if (type.toString !== undefined) { type = type.toString(); } else { type = ""; } } Object.defineProperty(this, "type", { get: function (content) { return function () { return content.type; }; } ({type: type}) }); this.getData = function (type) { return function () { return {type: type}; } } (type); } static fromData(data) { var i, j, x, y; var r, s, content; if ((data === undefined) || (data === null)) return null; if (!EncodingClass.type.isObject(data)) return null; if (data.data === undefined) return null; switch (data.type) { case "point": if (!EncodingClass.type.isObject(data.data)) return null; if (data.data.X === undefined) return null; if (data.data.Y === undefined) return null; if (!EncodingClass.type.isNumber(data.data.X)) return null; if (!EncodingClass.type.isNumber(data.data.Y)) return null; content = { X: data.data.X, Y: data.data.Y }; break; case "polygon": if (!EncodingClass.type.isArray(data.data)) return null; x = []; for (i = 0; i < data.data.length; i++) { s = data.data[i]; if (!EncodingClass.type.isArray(s)) return null; y = []; for (j = 0; j < s.length; j++) { r = s[j]; if (!EncodingClass.type.isObject(r)) continue; if (r.X === undefined) continue; if (r.Y === undefined) continue; if (!EncodingClass.type.isNumber(r.X)) continue; if (!EncodingClass.type.isNumber(r.Y)) continue; y.push({ X: r.X, Y: r.Y }); } if (y.length == 0) continue; x.push(y); } if (x.length == 0) return null; content = x; break; case "linestring": if (!EncodingClass.type.isArray(data.data)) return null; x = []; for (i = 0; i < data.data.length; i++) { r = data.data[i]; if (!EncodingClass.type.isObject(r)) continue; if (r.X === undefined) continue; if (r.Y === undefined) continue; if (!EncodingClass.type.isNumber(r.X)) continue; if (!EncodingClass.type.isNumber(r.Y)) continue; x.push({ X: r.X, Y: r.Y }); } if (x.length == 0) return null; content = x; break; case "multipoint": case "multilinestring": case "multipolygon": case "collection": if (!EncodingClass.type.isArray(data.data)) return null; x = []; for (i = 0; i < data.data.length; i++) { r = Geometry.fromData(data.data[i]); if (r === null) continue; if (r === undefined) continue; if (data.type != "collection") { if (data.type != "multi" + r.type) continue; } x.push(r); } if (x.length == 0) return null; content = x; break; default: return null; } r = new Geometry(data.type); r.getFirstPoint = function (type, content) { return function () { switch (type) { case "point": return { X: content.X, Y: content.Y } case "polygon": return { X: content[0][0].X, Y: content[0][0].Y } case "linestring": return { X: content[0].X, Y: content[0].Y } case "multipoint": case "multilinestring": case "multipolygon": case "collection": return content[0].getFirstPoint(); default: return null; } } } (data.type, content); r.getData = function (type, content) { return function () { var i, x = []; if (type == "point") { return { type: "point", data: content } } for (i = 0; i < content.length; i++) { if (content[i] instanceof Geometry) { x.push(content[i].getData()); } else { x.push(EncodingClass.string.duplicate(content[i])); } } return { type: type, data: x } } } (data.type, content); r.getEncodedString = function (datafunc, encodefunc) { return function () { return encodefunc(datafunc()); } } (r.getData, EncodingClass.string.fromVariable); return r; } static fromEncodedString(str) { var x = EncodingClass.string.toVariable(str); if (!EncodingClass.type.isObject(x)) return null; return Geometry.fromData(x); } static Point(X, Y) { return Geometry.fromData({ type: "point", data: { X: X, Y: Y } }); } static MultiPoint(pointArray) { var i, n, x = []; if (!EncodingClass.type.isArray(pointArray)) return null; n = pointArray.length; if (n == 0) return null; for (i = 0; i < n; i++) { if (!(pointArray[i] instanceof Geometry)) continue; if (pointArray[i].type != "point") continue; x.push(pointArray[i].getData); } if (x.length == 0) return null; return Geometry.fromData({ type: "multipoint", data: x }); } } if (window.EncodingClass === undefined) { window.EncodingClass = function () { var funcModule = {}; var typeModule = {}; var numberModule = {}; var colorModule = {}; var stringModule = {}; var base64Module = {}; var utf8Module = {}; var md5Module = {}; var core = {}; var ecode = {}; var packModule = {}; funcModule.tempFunc = null; funcModule.currentCode = ""; funcModule.exec = function (st) { eval(st); } funcModule.encode = function (st) { eval("EncodingClass.func.tempFunc = " + st + ";"); return EncodingClass.func.tempFunc; } funcModule.encodeBody = function (st) { return new Function (st); } funcModule.decode = function (fn) { return fn.toString(); } funcModule.decodeBody = function (fn) { return fn.toString().match(/function[^{]+\{([\s\S]*)\}$/)[1]; } var errhost = {}; var syntaxhost = { queue: [], busy: false }; var errorHandler = function (errhost, funcModule) { return function (event) { var md5code; if (funcModule.currentCode != "") { md5code = funcModule.currentCode; funcModule.currentCode = ""; errhost.result = { result: false, message: event.error.message, stack: event.error.stack, line: event.lineno - 1, column: event.colno }; setTimeout(function (funcModule, md5code, result) { return function () { funcModule.validateSyntax(md5code, result); } } (funcModule, md5code, errhost.result), 10); } } } (errhost, funcModule); var rawcheckSyntax = function (syntaxhost, errhost, funcModule, md5Module) { return function (content, callbackfunc) { var md5code = md5Module.encode(content); if (errhost[md5code] !== undefined) { setTimeout (function (callbackfunc, result) { return function () { try { callbackfunc(result); } catch (e) { console.error(e); } } } (callbackfunc, errhost[md5code].result), 10); return; } syntaxhost.busy = true; errhost[md5code] = { callbackfunc: callbackfunc }; funcModule.currentCode = md5code; var st = "EncodingClass.func.fcheck = function () {"; st += "\r\n" + content + "\r\n}\r\n"; st += "EncodingClass.func.currentCode = \"\"; EncodingClass.func.validateSyntax(\"" + md5code + "\", {result: true});"; var xurl = window.URL || window.webkitURL; var codeblob = new Blob([ st ]); var codeurl = xurl.createObjectURL(codeblob, { type: "text/javascript" }); var head = document.getElementsByTagName("head")[0]; var hlen = head.length; var fileref = document.createElement('script'); fileref.setAttribute("type","text/javascript"); fileref.setAttribute("src", codeurl); errhost[md5code].fileref = fileref; errhost[md5code].codeurl = codeurl; head.appendChild(fileref); fileref = null; codeurl = null; codeblob = null; } } (syntaxhost, errhost, funcModule, md5Module); funcModule.checkSyntax = function (syntaxhost, errhost, md5Module, rawcheckSyntax) { return function (content, callbackfunc) { var md5code = md5Module.encode(content); if (errhost[md5code] !== undefined) { if (errhost[md5code].result !== undefined) { setTimeout(function (result, callbackfunc) { return function () { try { callbackfunc(result); } catch (e) { console.error(e); } } } (errhost[md5code].result, callbackfunc), 10); return; } } var sf; try { sf = new Function(content); if (errhost[md5code] === undefined) { errhost[md5code] = { result: { result: true } }; } setTimeout(function (result, callbackfunc) { return function () { try { callbackfunc(result); } catch (e) { console.error(e); } } } ({result: true}, callbackfunc), 10); return; } catch (e) { } if (!syntaxhost.busy) { rawcheckSyntax(content, callbackfunc); } else { syntaxhost.queue.push({ content: content, callbackfunc: callbackfunc }); } } } (syntaxhost, errhost, md5Module, rawcheckSyntax); funcModule.validateSyntax = function (syntaxhost, errhost, funcModule, rawcheckSyntax) { return function (md5code, result) { var callbackfunc, r; var xurl = window.URL || window.webkitURL; funcModule.currentCode = ""; errhost[md5code].result = result; callbackfunc = errhost[md5code].callbackfunc; errhost[md5code].fileref.remove(); xurl.revokeObjectURL(errhost[md5code].codeurl); delete errhost[md5code].fileref; delete errhost[md5code].codeurl; if (EncodingClass.func.fcheck !== undefined) delete EncodingClass.func.fcheck; setTimeout(function (callbackfunc, result) { return function () { try { callbackfunc(result); } catch (e) { console.error(e); } } } (callbackfunc, result), 10); if (syntaxhost.queue.length == 0) { syntaxhost.busy = false; } else { r = syntaxhost.queue.shift(); setTimeout(function (rawcheckSyntax, r) { return function () { rawcheckSyntax(r.content, r.callbackfunc); } } (rawcheckSyntax, r), 10); } } } (syntaxhost, errhost, funcModule, rawcheckSyntax); window.addEventListener('error', errorHandler); typeModule.isNumber = function (obj) { if (typeof obj === "number") return true; return false; } typeModule.isString = function (obj) { if (typeof obj === "string") return true; if (obj instanceof String) return true; return false; } typeModule.isBoolean = function (obj) { if (typeof obj === "boolean") return true; return false; } typeModule.isObject = function (obj) { if (typeof obj === "object") return true; return false; } typeModule.isFunction = function (obj) { if (typeof obj === "function") return true; return false; } typeModule.isDate = function (obj) { if (!(obj instanceof Date)) return false; if (typeof obj.getDate !== 'function') return false; if (typeof obj.getDay !== 'function') return false; if (typeof obj.getFullYear !== 'function') return false; if (typeof obj.getHours !== 'function') return false; if (typeof obj.getMilliseconds !== 'function') return false; if (typeof obj.getMinutes !== 'function') return false; if (typeof obj.getMonth !== 'function') return false; if (typeof obj.getSeconds !== 'function') return false; if (typeof obj.getTime !== 'function') return false; return true; } typeModule.isArray = function (obj) { if (obj === undefined) return false; if (obj == null) return false; if (Array !== undefined) { if (Array.isArray !== undefined) return Array.isArray(obj); if (obj.constructor !== undefined) { if (obj.constructor === Array) return true; } if (obj instanceof Array) return true; } if (Object !== undefined) { if (Object.prototype !== undefined) { if (Object.prototype.toString !== undefined) { if (Object.prototype.toString.call !== undefined) { if (Object.prototype.toString.call(obj) == "[object Array]") return true; } } } } return false; } numberModule.copyArray = function (numberModule) { return function (dest, src, callbackfunc, pd, ps, length) { if (pd === undefined) pd = 0; if (ps === undefined) ps = 0; if (length === undefined) length = src.length - ps; if (length > src.length - ps) length = src.length - ps; if (length > dest.length - pd) length = dest.length - pd; if (length < 0) length = 0; Thread.exec(function () { var x, ok = false; if (length == 0) return true; x = length; if (x > 4096) x = 4096; if (dest.set !== undefined) { if (src.subarray !== undefined) { dest.set(src.subarray(ps, ps + x), pd); ok = true; } else if (src.slice !== undefined) { dest.set(src.slice(ps, ps + x), pd); ok = true; } } if (!ok) { for (i = 0; i < x; i++) { dest[pd++] = src[ps++]; } } else { pd += x; ps += x; } length -= x; return false; }, callbackfunc); } } (numberModule); numberModule.promiseCopyArray = function (numberModule) { return function (dest, src, pd, ps, length) { return new Promise(function(resolve, reject) { numberModule.copyArray(dest, src, function () { resolve(); }, pd, ps, length); }); } } (numberModule); numberModule.duplicateTypedArray = function (numberModule) { return function (arr, callbackfunc, start, length) { var maxlength, target; if (start === undefined) start = 0; maxlength = arr.length - start; if (length === undefined) length = maxlength; if (length > maxlength) length = maxlength; if (arr instanceof Int8Array) { target = new Int8Array(length); } else if (arr instanceof Uint8Array) { target = new Uint8Array(length); } else if (arr instanceof Int16Array) { target = new Int16Array(length); } else if (arr instanceof Uint16Array) { target = new Uint16Array(length); } else if (arr instanceof Int32Array) { target = new Int32Array(length); } else if (arr instanceof Uint32Array) { target = new Uint32Array(length); } else if (arr instanceof Float32Array) { target = new Float32Array(length); } else if (arr instanceof Float64Array) { target = new Float64Array(length); } else if (self.BigUint64Array && (arr instanceof BigUint64Array)) { target = new BigUint64Array(length); } else if (self.BigInt64Array && (arr instanceof BigInt64Array)) { target = new BigInt64Array(length); } else { console.log("unknown type"); callbackfunc(undefined); } numberModule.copyArray(target, arr, function () { Thread.setTimeout({ func: callbackfunc, args: [target] }); }, 0, start, length); arr = null; } } (numberModule); numberModule.promiseDuplicateTypedArray = function (numberModule) { return function (arr, start, length) { return new Promise(function(resolve, reject) { numberModule.duplicateTypedArray(arr, function (values) { resolve(values); }, start, length); }); } } (numberModule); numberModule.fromString = function (numberModule) { return function (format, binaryString, start) { var n = binaryString.length, i; if (start === undefined) start = 0; switch (format) { case "i8": case "u8": n = 1; break; case "i16": case "u16": n = 2; break; case "i32": case "u32": case "f32": n = 4; break; case "f64": n = 8; break; default: return NaN; } return numberModule.fromArray(format, Array.from(binaryString.substr(start, n), c => (c.charCodeAt() & 0xFF))); } } (numberModule); numberModule.toString = function (numberModule) { return function (format, value) { return String.fromCharCode(...numberModule.toArray(format, value)); /* var r = numberModule.toArray(format, value); var i, n = r.length, s = ""; for (i = 0; i < n; i++) { s += String.fromCharCode(r[i]); } return s; */ } } (numberModule); numberModule.fromArray = function (numberModule) { return function (format, binaryArray, start) { var v, s, e, f, i; var buffer; if (start === undefined) start = 0; if (core.numbuf === undefined) { buffer = new ArrayBuffer(8); core.numbuf = new DataView(buffer); core.numbufValue = new Uint8Array(buffer); } switch (format) { case "u8": if (start >= binaryArray.length) return 0; core.numbufValue[0] = binaryArray[start]; return core.numbuf.getUint8(0, true); case "i8": if (start >= binaryArray.length) return 0; core.numbufValue[0] = binaryArray[start]; return core.numbuf.getInt8(0, true); case "u16": if (start + 1 >= binaryArray.length) return 0; for (i = 0; i < 2; i++) core.numbufValue[i] = binaryArray[start++]; return core.numbuf.getUint16(0, true); case "i16": if (start + 1 >= binaryArray.length) return 0; for (i = 0; i < 2; i++) core.numbufValue[i] = binaryArray[start++]; return core.numbuf.getInt16(0, true); case "u32": if (start + 3 >= binaryArray.length) return 0; for (i = 0; i < 4; i++) core.numbufValue[i] = binaryArray[start++]; return core.numbuf.getUint32(0, true); case "i32": if (start + 3 >= binaryArray.length) return 0; for (i = 0; i < 4; i++) core.numbufValue[i] = binaryArray[start++]; return core.numbuf.getInt32(0, true); case "f32": if (start + 3 >= binaryArray.length) return 0; for (i = 0; i < 4; i++) core.numbufValue[i] = binaryArray[start++]; return core.numbuf.getFloat32(0, true); case "f64": if (start + 7 >= binaryArray.length) return 0; for (i = 0; i < 8; i++) core.numbufValue[i] = binaryArray[start++]; return core.numbuf.getFloat64(0, true); /* case "i8": if (binaryArray.length < start + 1) return NaN; v = binaryArray[start] & 255; if (v >= 128) return v - 256; return v; case "u8": if (binaryArray.length < start + 1) return NaN; return binaryArray[start] & 255; case "i16": if (binaryArray.length < start + 2) return NaN; v = numberModule.fromArray("u16", binaryArray, start); if (v >= 32768) return v - 65536; return v; case "u16": if (binaryArray.length < start + 2) return NaN; v = binaryArray[start + 1] & 255; v = v * 256 + (binaryArray[start] & 255); return v; case "i32": if (binaryArray.length < start + 4) return NaN; v = numberModule.fromArray("u32", binaryArray, start); if (v >= 2147483648) return v - 4294967296; return v; case "u32": if (binaryArray.length < start + 4) return NaN; v = binaryArray[start + 3] & 255; v = v * 256 + (binaryArray[start + 2] & 255); v = v * 256 + (binaryArray[start + 1] & 255); v = v * 256 + (binaryArray[start] & 255); return v; case "f32": if (binaryArray.length < start + 4) return NaN; v = binaryArray[start + 3] & 255; if (v >= 128) { s = -1; e = v - 128; } else { s = 1; e = v; } v = binaryArray[start + 2] & 255; e = e * 2 + ~~(v / 128) - 127; f = 128 + (v & 127); f = f * 256 + (binaryArray[start + 1] & 255); f = f * 256 + (binaryArray[start] & 255); if (e == -127) { if (f == 8388608) { if (s == 1) return 0; return -0.0; } } if (e == 128) { if (f == 8388608) { if (s == 1) return Infinity; return -Infinity; } return NaN; } return f * s * Math.pow(2, e - 23); case "f64": if (binaryArray.length < start + 8) return NaN; v = binaryArray[start + 7] & 255; if (v >= 128) { s = -1; e = v - 128; } else { s = 1; e = v; } v = binaryArray[start + 6] & 255; e = e * 16 + ~~(v / 16) - 1023; f = 16 + (v & 15); f = f * 256 + (binaryArray[start + 5] & 255); f = f * 256 + (binaryArray[start + 4] & 255); f = f * 256 + (binaryArray[start + 3] & 255); f = f * 256 + (binaryArray[start + 2] & 255); f = f * 256 + (binaryArray[start + 1] & 255); f = f * 256 + (binaryArray[start] & 255); if (e == -1023) { if (f == 493455671296) { if (s == 1) return 0; return -0.0; } } if (e == 1024) { if (f == 493455671296) { if (s == 1) return Infinity; return -Infinity; } return NaN; } return f * s * Math.pow(2, e - 52); */ default: return NaN; } } } (numberModule); numberModule.toArray = function (numberModule) { return function (format, value) { var i, j, v, s, e, f, t = [], isfirst = true, f = []; var buffer; if (core.numbuf === undefined) { buffer = new ArrayBuffer(8); core.numbuf = new DataView(buffer); core.numbufValue = new Uint8Array(buffer); } switch (format) { case "u8": core.numbuf.setUint8(0, value, true); return core.numbufValue[0]; case "i8": core.numbuf.setInt8(0, value, true); return core.numbufValue[0]; case "u16": core.numbuf.setUint16(0, value, true); return [core.numbufValue[0], core.numbufValue[1]]; case "i16": core.numbuf.setInt16(0, value, true); return [core.numbufValue[0], core.numbufValue[1]]; case "u32": core.numbuf.setUint32(0, value, true); return [core.numbufValue[0], core.numbufValue[1], core.numbufValue[2], core.numbufValue[3]]; case "i32": core.numbuf.setInt32(0, value, true); return [core.numbufValue[0], core.numbufValue[1], core.numbufValue[2], core.numbufValue[3]]; case "f32": core.numbuf.setFloat32(0, value, true); return [core.numbufValue[0], core.numbufValue[1], core.numbufValue[2], core.numbufValue[3]]; case "f64": core.numbuf.setFloat64(0, value, true); return [core.numbufValue[0], core.numbufValue[1], core.numbufValue[2], core.numbufValue[3], core.numbufValue[4], core.numbufValue[5], core.numbufValue[6], core.numbufValue[7]]; /* case "u8": case "i8": return [value & 255]; case "u16": case "i16": value = value & 65535; return [value & 255, value >> 8]; case "u32": case "i32": value = value & 4294967295; i = numberModule.toArray("u16", value & 65535); j = numberModule.toArray("u16", value >> 16); return [i[0], i[1], j[0], j[1]]; case "f32": if (value == 0) { return [0, 0, 0, 0]; } else if (isNaN(value)) { return [255, 255, 255, 127]; } else if (!isFinite(value)) { if (value == Infinity) { return [0, 0, 240, 127]; } return [0, 0, 240, 255]; } else if (value > 0) { s = 0; } else { s = 1; value = -value; } e = 0; while (value >= 1) { value /= 2.0; e++; } for (i = 0; i < 23; ) { value *= 2.0; if (isfirst) e--; if (value >= 1) { value -= 1; if (isfirst) { isfirst = false; } else { t.push(1); i++; } } else { if (!isfirst) { t.push(0); i++; } } } v = e + 127; for (i = 0; i < 8; i++) { t.unshift(v & 1); v = ~~(v / 2); } t.unshift(s); f = [0, 0, 0, 0]; for (i = 0; i < 4; i++) { for (j = v = 0; j < 8; j++) { v = v * 2 + t[i * 8 + j]; } f[3-i] = v; } return f; case "f64": if (value == 0) { return [0, 0, 0, 0, 0, 0, 0, 0]; } else if (isNaN(value)) { return [255, 255, 255, 255, 255, 255, 255, 127]; } else if (!isFinite(value)) { if (value == Infinity) { return [0, 0, 0, 0, 0, 0, 240, 127]; } return [0, 0, 0, 0, 0, 0, 240, 255]; } else if (value > 0) { s = 0; } else { s = 1; value = -value; } e = 0; while (value >= 1) { value /= 2.0; e++; } for (i = 0; i < 52; ) { value *= 2.0; if (isfirst) e--; if (value >= 1) { value -= 1; if (isfirst) { isfirst = false; } else { t.push(1); i++; } } else { if (!isfirst) { t.push(0); i++; } } } v = e + 1023; for (i = 0; i < 11; i++) { t.unshift(v & 1); v = ~~(v / 2); } t.unshift(s); f = [0, 0, 0, 0, 0, 0, 0, 0]; for (i = 0; i < 8; i++) { for (j = v = 0; j < 8; j++) { v = v * 2 + t[i * 8 + j]; } f[7 - i] = v; } return f; */ default: return []; } } } (numberModule); numberModule.writeArray = function (numberModule) { return function (format, value, destination, start) { var i, j, v, s, e, f, t = [], isfirst = true, f = []; var buffer; if (core.numbuf === undefined) { buffer = new ArrayBuffer(8); core.numbuf = new DataView(buffer); core.numbufValue = new Uint8Array(buffer); } if (start === undefined) start = 0; switch (format) { case "u8": core.numbuf.setUint8(0, value, true); destination[start] = core.numbufValue[0]; break; case "i8": core.numbuf.setInt8(0, value, true); destination[start] = core.numbufValue[0]; break; case "u16": core.numbuf.setUint16(0, value, true); for (i = 0; i < 2; i++) destination[start++] = core.numbufValue[i]; break; case "i16": core.numbuf.setInt16(0, value, true); for (i = 0; i < 2; i++) destination[start++] = core.numbufValue[i]; break; case "u32": core.numbuf.setUint32(0, value, true); for (i = 0; i < 4; i++) destination[start++] = core.numbufValue[i]; break; case "i32": core.numbuf.setInt32(0, value, true); for (i = 0; i < 4; i++) destination[start++] = core.numbufValue[i]; break; case "f32": core.numbuf.setFloat32(0, value, true); for (i = 0; i < 4; i++) destination[start++] = core.numbufValue[i]; break; case "f64": core.numbuf.setFloat64(0, value, true); for (i = 0; i < 8; i++) destination[start++] = core.numbufValue[i]; break; case "s": for (i = 0; i < value.length; i++) { destination[start++] = value.charCodeAt(i) & 0xFF; } break; default: } } } (numberModule); numberModule.toTable = function (stringModule, numberModule, utf8Module) { return function (data, start, length) { var i, fieldname = [], scode = [], r = [], n, m, t, h, v, soc, eoc; var readFunc, substr; if (start === undefined) start = 0; if (length === undefined) length = data.length - start; if (start + length > data.length) length = data.length - start; eoc = start + length; if (EncodingClass.type.isString(data)) { readFunc = numberModule.fromString; substr = stringModule.substr; } else { readFunc = numberModule.fromArray; substr = function (arr, start, length) { var r = [], t; var i, n, ilen; if (start + length > arr.length) length = arr.length - start; while (length > 0) { if (length > 128) { ilen = 128; } else { ilen = length; } n = start + ilen; t = arr.slice(start, n); start = n; length -= ilen; r.push(String.fromCharCode(...t)); } return stringModule.merge(r); } } n = readFunc("i32", data, start); soc = start + 4; for (i = 0; i < n; i++) { m = readFunc("i32", data, soc); soc += 4; fieldname.push(substr(data, soc, m)); soc += m; scode.push(readFunc("u8", data, soc++)); } while (soc < eoc) { v = {}; for (i = 0; i < n; i++) { switch (scode[i]) { case 1: t = readFunc("i32", data, soc); soc += 4; break; case 2: t = readFunc("i32", data, soc); soc += 4; t = new Date(t * 1000); break; case 6: t = readFunc("f64", data, soc); soc += 8; t = new Date(t * 1000); break; case 3: t = readFunc("i32", data, soc); soc += 4; t = new Date2(t * 1000); t.mode = "date"; break; case 7: t = readFunc("f64", data, soc); soc += 8; t = new Date2(t * 1000); t.mode = "date"; break; case 4: t = readFunc("f64", data, soc); soc += 8; break; case 5: h = readFunc("i32", data, soc); soc += 4; t = utf8Module.decode(substr(data, soc, h)); soc += h; break; default: console.log("undefined type"); return r; } v[fieldname[i]] = t; if ((i < n - 1) && (soc >= eoc)) { console.log("invalid table alignment (1/" + i + ")", v, eoc - soc); return r; } if ((i == n - 1) && (soc > eoc)) { console.log("invalid table alignment (2)", v, eoc - soc); return r; } } r.push(v); } return r; } } (stringModule, numberModule, utf8Module); numberModule.fromVariable = function (typeModule, base64Module, stringModule, numberModule) { return function (obj) { var i, n, x, z, st, sx, sy, keys, ss; /* charcode meaning 0 undefined 1 null 2 shortarray (32k) 3 longarray (2m) 4 shortobj (32k) 5 longobj (2m) 6 function 7 boolean - true 8 boolean - false 9 number (i32) 10 number (f64) 11 short string (32k) 12 long string (2m) 13 realtime (date / date2a) 14 date (date2b) 15 datetime (date2c) 16 geometry */ if (obj === undefined) return String.fromCharCode(0); if (obj === null) return String.fromCharCode(1); if (typeModule.isArray(obj)) { n = obj.length; if (n < 32768) { st = [String.fromCharCode(2) + numberModule.toString("i16", n)]; } else { st = [String.fromCharCode(3) + numberModule.toString("i32", n)]; } for (i = 0; i < n; i++) { st.push(numberModule.fromVariable(obj[i])); } return stringModule.merge(st); } else if (obj instanceof Geometry) { st = stringModule.fromVariable(obj.getData()); return String.fromCharCode(16) + numberModule.toString("i32", st.length) + st; } else if (typeModule.isDate(obj)) { let tobj = obj.getTime(); st = ~~(tobj / 1000000); sx = tobj - st * 1000000; ss = numberModule.toString("i32", st) + numberModule.toString("i32", sx); if (obj instanceof Date2) { if (obj.mode == "date") { return String.fromCharCode(14) + ss + numberModule.toString("i16", obj.getFullYear()) + String.fromCharCode(obj.getMonth()) + String.fromCharCode(obj.getDate()); } if (obj.mode == "datetime") { return String.fromCharCode(15) + ss + numberModule.toString("i16", obj.getFullYear()) + String.fromCharCode(obj.getMonth()) + String.fromCharCode(obj.getDate()) + String.fromCharCode(obj.getHours()) + String.fromCharCode(obj.getMinutes()); } } return String.fromCharCode(13) + ss; } else if (typeModule.isObject(obj)) { keys = Object.keys(obj); n = keys.length; if (n < 32768) { st = [String.fromCharCode(4) + numberModule.toString("i16", n)]; } else { st = [String.fromCharCode(5) + numberModule.toString("i32", n)]; } for (i = 0; i < n; i++) { sx = utf8Module.encode(keys[i]); st.push(numberModule.toString("i16", sx.length) + sx); sx = numberModule.fromVariable(obj[keys[i]]); st.push(sx); } return stringModule.merge(st); } else if (typeModule.isFunction(obj)) { sx = utf8Module.encode(obj.toString() + ""); return String.fromCharCode(6) + numberModule.toString("i32", sx.length) + sx; } else if (typeModule.isBoolean(obj)) { if (obj) { return String.fromCharCode(7); } else { return String.fromCharCode(8); } } else if (typeModule.isNumber(obj)) { if ((obj == ~~obj) && (-2147483648 <= obj) && (obj < 2147483648)) { return String.fromCharCode(9) + numberModule.toString("i32", obj); } else { return String.fromCharCode(10) + numberModule.toString("f64", obj); } } else if (typeModule.isString(obj)) { sx = utf8Module.encode(obj + ""); if (sx.length < 32768) { return String.fromCharCode(11) + numberModule.toString("i16", sx.length) + sx; } else { return String.fromCharCode(12) + numberModule.toString("i32", sx.length) + sx; } } else { return String.fromCharCode(255); } } } (typeModule, base64Module, stringModule, numberModule); numberModule.toVariable = function (typeModule, base64Module, stringModule, numberModule) { return function (str) { var i, n, x, z, st, sx, sy, keys, ss; var code; if (EncodingClass.type.isString(str)) { return numberModule.toVariable({ str: str, position: 0 }).retval; } /* charcode meaning 0 undefined 1 null 2 shortarray (32k) 3 longarray (2m) 4 shortobj (32k) 5 longobj (2m) 6 function 7 boolean - true 8 boolean - false 9 number (i32) 10 number (f64) 11 short string (32k) 12 long string (2m) 13 realtime (date / date2a) 14 date (date2b) 15 datetime (date2c) 16 geometry */ code = str.str.charCodeAt(str.position); str.position++; if (code == 0) { str.retval = undefined; return str; } if (code == 1) { str.retval = null; return str; } if ((code == 2) || (code == 3)) { if (code == 2) { n = numberModule.fromString("i16", str.str, str.position); str.position += 2; } else { n = numberModule.fromString("i32", str.str, str.position); str.position += 4; } ss = []; for (i = 0; i < n; i++) { ss.push(numberModule.toVariable(str).retval); } str.retval = ss; return str; } if ((code == 4) || (code == 5)) { if (code == 4) { n = numberModule.fromString("i16", str.str, str.position); str.position += 2; } else { n = numberModule.fromString("i32", str.str, str.position); str.position += 4; } ss = {}; for (i = 0; i < n; i++) { sx = numberModule.fromString("i16", str.str, str.position); str.position += 2; keys = stringModule.substr(str.str, str.position, sx); str.position += sx; keys = utf8Module.decode(keys); ss[keys] = numberModule.toVariable(str).retval; } str.retval = ss; return str; } if (code == 6) { n = numberModule.fromString("i32", str.str, str.position); str.position += 4; ss = utf8Module.decode(str.str.substr(str.position, n)); str.position += n; str.retval = ss; return str; } if ((code == 7) || (code == 8)) { str.retval = (code == 7); return str; } if (code == 9) { str.retval = numberModule.fromString("i32", str.str, str.position); str.position += 4; return str; } if (code == 10) { str.retval = numberModule.fromString("f64", str.str, str.position); str.position += 8; return str; } if ((code == 11) || (code == 12)) { if (code == 11) { n = numberModule.fromString("i16", str.str, str.position); str.position += 2; } else { n = numberModule.fromString("i32", str.str, str.position); str.position += 4; } ss = utf8Module.decode(str.str.substr(str.position, n)); str.position += n; str.retval = ss; return str; } if ((code == 13) || (code == 14) || (code == 15)) { st = numberModule.fromString("i32", str.str, str.position); str.position += 4; sx = numberModule.fromString("i32", str.str, str.position); str.position += 4; ss = st * 1000000 + sx; ss = new Date2(ss); if (code > 13) { ss = new Date2(ss); ss.setDate(1); ss.setMonth(0); ss.setFullYear(numberModule.fromString("i16", str.str, str.position)); str.position += 2; ss.setMonth(str.str.charCodeAt(str.position++)); ss.setDate(str.str.charCodeAt(str.position++)); if (code == 15) { ss.setHours(str.str.charCodeAt(str.position++)); ss.setMinutes(str.str.charCodeAt(str.position++)); } } str.retval = ss; return str; } if (code == 16) { n = numberModule.fromString("i32", str.str, str.position); str.position += 4; st = str.str.substr(str.position, n); str.position += n; st = stringModule.toVariable(st); str.retval = Geometry.fromData(st); return str; } str.retval = undefined; return str; } } (typeModule, base64Module, stringModule, numberModule); numberModule.fromStructRecord = function (numberModule) { return function (keys, obj) { var st = ""; var i; for (i = 0; i < keys.length; i++) { st += numberModule.fromVariable(obj[keys[i]]); } return st; } } (numberModule); numberModule.toStructRecord = function (numberModule) { return function (keys, str) { var st = {}; var host = { str: str, position: 0 }; var i; for (i = 0; i < keys.length; i++) { st[keys[i]] = numberModule.toVariable(host).retval; } return st; } } (numberModule); numberModule.rndFunc = function (a, b, c, d) { var host = { a: a & 4294967295, b: b & 4294967295, c: c & 4294967295, d: d & 4294967295 }; var f = function (host) { return function (range) { var t = (host.a + host.b + host.d) | 0; host.d = (host.d + 1) | 0; host.a = host.b ^ host.b >>> 9; host.b = host.c + (host.c << 3) | 0; host.c = (host.c << 21 | host.c >>> 11); host.c = host.c + t | 0; var r = t / 4294967296; if (range === undefined) return r; r = ~~Math.floor(range * r); if (r == range) r = r - 1; return r; } } (host); var i; for (i = 0; i < 100; i++) f(1000); return f; }; numberModule.asyncSort = function (arr, cmpFunc, callbackfunc) { var iarray, ilen; if (arr.length == 0) { Thread.setTimeout({ func: callbackfunc, args: [arr] }); return; } iarray = new Array(arr.length); var apush = function (value) { var index, hindex, t; iarray[index = ilen++] = value; while (index > 0) { hindex = ((index + 1) >> 1) - 1; if (cmpFunc(arr[iarray[hindex]], arr[iarray[index]]) >= 0) break; t = iarray[index]; iarray[index] = iarray[hindex]; iarray[hindex] = t; index = hindex; } } var apop = function () { var r, index, index1, index2, t; var index, index1, index2; r = iarray[0]; if (ilen == 1) { ilen--; return r; } iarray[0] = iarray[--ilen]; index = 0; while (true) { index2 = (index << 1) + 2; index1 = index2 - 1; if (index1 >= ilen) break; if (index2 < ilen) { if (cmpFunc(arr[iarray[index2]], arr[iarray[index1]]) > 0) index1 = index2; } if (cmpFunc(arr[iarray[index]], arr[iarray[index1]]) >= 0) break; t = iarray[index]; iarray[index] = iarray[index1]; iarray[index1] = t; index = index1; } return r; } var step1 = function () { ilen = 0; Thread.exec( function () { if (ilen >= arr.length) return true; apush(ilen); return false; }, step2 ); }; var step2 = function () { Thread.exec( function () { var t; if (ilen == 0) return true; t = apop(); iarray[ilen] = t; return false; }, step3 ); } var step3 = function () { Thread.exec( function () { if (ilen >= arr.length) return true; iarray[ilen] = arr[iarray[ilen]]; ilen++; return false; }, step4 ); } var step4 = function () { ilen = 0; Thread.exec( function () { if (ilen >= arr.length) return true; arr[ilen] = iarray[ilen]; ilen++; return false; }, function () { iarray = null; Thread.setTimeout({ func: callbackfunc, args: [arr] }); } ); } step1(); } ecode.pack = {}; ecode.pack.getData = function (numberModule, stringModule) { return function (content, type, position) { var length, s, r; var i, k, n, key; var dd, mm, yy, hh, m2; switch (type) { case 0: if (position == 0) return undefined; if (position == 1) return null; return undefined; case 1: length = numberModule.fromArray("i32", content.text, position); s = stringModule.fromUint8Array(content.text, position + 4, length); s = utf8Module.decode(s); return (new Function("return " + s))(); case 2: r = []; case 3: case 11: if ((type == 3) || (type == 11)) r = {}; k = content.int[position++]; n = content.int[position++]; for (i = 0; i < k; i++) { key = content.int[position++]; length = numberModule.fromArray("i32", content.text, key); key = stringModule.fromUint8Array(content.text, key + 4, length); key = utf8Module.decode(key); type = content.int[position++]; r[key] = ecode.pack.getData(content, type, content.int[position++]); } for (i = 0; i < n; i++) { key = content.int[position++]; type = content.int[position++]; r[key] = ecode.pack.getData(content, type, content.int[position++]); } if (type == 11) r = Geometry.fromData(r); return r; case 4: return position != 0; case 5: return position; case 6: return content.nums[position]; case 7: length = numberModule.fromArray("i32", content.text, position); s = stringModule.fromUint8Array(content.text, position + 4, length); return utf8Module.decode(s); case 8: k = content.nums[position++]; return new Date(k); case 9: case 10: k = content.nums[position++]; r = new Date2(k); if (type == 8) { r.mode = "date"; } else { r.mode = "datetime"; } r.setDate(1); r.setMonth(0); n = ~~content.nums[position++]; m2 = n % 60; n = ~~((n - m2) / 60); hh = n % 24; n = ~~((n - hh) / 24); dd = (n % 31) + 1; n = ~~((n - dd - 1) / 31); mm = (n % 12); n = ~~((n - mm) / 12); r.setFullYear(n); r.setMonth(mm); r.setDate(dd); if (type == 9) return r; r.setHours(hh); r.setMinutes(m2); return r; } return undefined; } } (numberModule, stringModule); ecode.pack.asyncGetData = function (numberModule, stringModule) { return function (content, type, position, callbackfunc) { var length, s, r; var i, k, n, key; var dd, mm, yy, hh, m2; var retval; var stacks = [{ type: type, position: position, index: 0 }]; var getData = function () { if (stacks.length == 0) return true; position = stacks[stacks.length - 1].position; if (stacks[stacks.length - 1].index == 0) { type = stacks[stacks.length - 1].type; switch (type) { case 0: if (position == 0) { retval = undefined; stacks.pop(); return false; } if (position == 1) { retval = null; stacks.pop(); return false; } retval = undefined; stacks.pop(); return false; case 1: length = numberModule.fromArray("i32", content.text, position); s = stringModule.fromUint8Array(content.text, position + 4, length); s = utf8Module.decode(s); retval = (new Function("return " + s))(); stacks.pop(); return false; case 4: retval = position != 0; stacks.pop(); return false; case 5: retval = position; stacks.pop(); return false; case 6: retval = content.nums[position]; stacks.pop(); return false; case 7: length = numberModule.fromArray("i32", content.text, position); s = stringModule.fromUint8Array(content.text, position + 4, length); retval = utf8Module.decode(s); stacks.pop(); return false; case 8: k = content.nums[position++]; retval = new Date(k); stacks.pop(); return false; case 9: case 10: k = content.nums[position++]; r = new Date2(k); if (type == 8) { r.mode = "date"; } else { r.mode = "datetime"; } r.setDate(1); r.setMonth(0); n = ~~content.nums[position++]; m2 = n % 60; n = ~~((n - m2) / 60); hh = n % 24; n = ~~((n - hh) / 24); dd = (n % 31) + 1; n = ~~((n - dd - 1) / 31); mm = (n % 12); n = ~~((n - mm) / 12); r.setFullYear(n); r.setMonth(mm); r.setDate(dd); if (type == 9) { retval = r; stacks.pop(); return false; } r.setHours(hh); r.setMinutes(m2); retval = r; stacks.pop(); return false; case 2: stacks[stacks.length - 1].r = []; case 3: case 11: if ((type == 3) || (type == 11)) stacks[stacks.length - 1].r = {}; stacks[stacks.length - 1].k = content.int[stacks[stacks.length - 1].position++]; stacks[stacks.length - 1].n = content.int[stacks[stacks.length - 1].position++]; stacks[stacks.length - 1].i = 0; stacks[stacks.length - 1].index = 1; return false; } retval = undefined; stacks.pop(); return false; } if (stacks[stacks.length - 1].index == 1) { if (stacks[stacks.length - 1].i < stacks[stacks.length - 1].k) { key = content.int[stacks[stacks.length - 1].position++]; length = numberModule.fromArray("i32", content.text, key); key = stringModule.fromUint8Array(content.text, key + 4, length); stacks[stacks.length - 1].key = utf8Module.decode(key); type = content.int[stacks[stacks.length - 1].position++] stacks[stacks.length - 1].index = 2; stacks.push({ type: type, position: content.int[stacks[stacks.length - 1].position++], index: 0 }); } else { stacks[stacks.length - 1].index = 3; } return false; } if (stacks[stacks.length - 1].index == 2) { stacks[stacks.length - 1].r[stacks[stacks.length - 1].key] = retval; stacks[stacks.length - 1].i++; stacks[stacks.length - 1].index = 1; return false; } if (stacks[stacks.length - 1].index == 3) { stacks[stacks.length - 1].i = 0; stacks[stacks.length - 1].index = 4; return false; } if (stacks[stacks.length - 1].index == 4) { if (stacks[stacks.length - 1].i < stacks[stacks.length - 1].n) { stacks[stacks.length - 1].key = content.int[stacks[stacks.length - 1].position++]; type = content.int[stacks[stacks.length - 1].position++]; stacks[stacks.length - 1].index = 5; stacks.push({ type: type, position: content.int[stacks[stacks.length - 1].position++], index: 0 }); } else { stacks[stacks.length - 1].index = 6; } return false; } if (stacks[stacks.length - 1].index == 5) { if (stacks[stacks.length - 1].type == 11) retval = Geometry.fromData(retval); stacks[stacks.length - 1].r[stacks[stacks.length - 1].key] = retval; stacks[stacks.length - 1].i++; stacks[stacks.length - 1].index = 4; return false; } if (stacks[stacks.length - 1].index == 6) { retval = stacks[stacks.length - 1].r; stacks.pop(); return false; } retval = undefined; stacks.pop(); return false; } Thread.exec(getData, function () { Thread.setTimeout({ func: callbackfunc, args: [retval] }); }); return undefined; } } (numberModule, stringModule); ecode.pack.findPositionByKey = function (ecode, numberModule, stringModule) { return function (content, length, position, key) { var l = 0; var m, r = length - 1; var lkey = content.int[position]; var rkey = content.int[position + r * 3]; var mkey, slen; slen = numberModule.fromArray("i32", content.text, lkey); lkey = stringModule.fromUint8Array(content.text, lkey + 4, slen); lkey = utf8Module.decode(lkey); slen = numberModule.fromArray("i32", content.text, rkey); rkey = stringModule.fromUint8Array(content.text, rkey + 4, slen); rkey = utf8Module.decode(rkey); while (l <= r) { m = (l + r) >> 1; mkey = content.int[position + m * 3]; slen = numberModule.fromArray("i32", content.text, mkey); mkey = stringModule.fromUint8Array(content.text, mkey + 4, slen); mkey = utf8Module.decode(mkey); if (mkey == key) return position + m * 3; if (mkey < key) { l = m + 1; if (l >= length) return null; lkey = content.int[position + l * 3]; slen = numberModule.fromArray("i32", content.text, lkey); lkey = stringModule.fromUint8Array(content.text, lkey + 4, slen); lkey = utf8Module.decode(lkey); } else { r = m - 1; if (r < 0) return null; rkey = content.int[position + r * 3]; slen = numberModule.fromArray("i32", content.text, rkey); rkey = stringModule.fromUint8Array(content.text, rkey + 4, slen); rkey = utf8Module.decode(rkey); } } return null; } } (ecode, numberModule, stringModule); ecode.pack.findPositionByNumKey = function (ecode) { return function (content, length, position, key) { var l = 0; var m, r = length - 1; var lkey = content.int[position]; var mkey, rkey = content.int[position + r * 3]; while (l <= r) { m = (l + r) >> 1; mkey = content.int[position + m * 3]; if (mkey == key) return position + m * 3; if (mkey < key) { l = m + 1; if (l >= length) return null; lkey = content.int[position + l * 3]; } else { r = m - 1; if (r < 0) return null; rkey = content.int[position + r * 3]; } } return null; } } (ecode); ecode.pack.findPosition = function (ecode) { return function (content, path) { var i, k, type, position, key; var l1, l2; type = content.int[0]; position = content.int[1]; for (i = 0; i < path.length; i++) { if ((type != 2) && (type != 3)) return undefined; key = path[i]; k = ~~(parseInt(key)); l1 = content.int[position++]; l2 = content.int[position++]; if (("" + k == key) && (-2147483648 <= k) && (k < 2147483648)) { position = ecode.pack.findPositionByNumKey(content, l2, position + l1 * 3, k); } else { position = ecode.pack.findPositionByKey(content, l1, position, key); } if (position === null) return undefined; type = content.int[++position]; position = content.int[position + 1]; } return { type: type, position: position }; } } (ecode); ecode.pack.read = function (ecode, typeModule) { return function (content, path, callbackfunc) { if (path === undefined) path = []; if ((path !== undefined) && (callbackfunc === undefined)) { if (typeModule.isFunction(path)) { callbackfunc = path; path = []; } } if (callbackfunc !== undefined) { if (!typeModule.isFunction(callbackfunc)) callbackfunc = undefined; } if (typeModule.isString(path) || typeModule.isNumber(path)) path = [path]; if (!typeModule.isArray(path)) { if (callbackfunc !== undefined) Thread.setTimeout({ func: callbackfunc }); return undefined; } var r = ecode.pack.findPosition(content, path); if (r === undefined) { if (callbackfunc !== undefined) Thread.setTimeout({ func: callbackfunc }); return undefined; } if (callbackfunc !== undefined) { ecode.pack.asyncGetData(content, r.type, r.position, callbackfunc); return; } return ecode.pack.getData(content, r.type, r.position); } } (ecode, typeModule); ecode.pack.getKeys = function (ecode, numberModule, stringModule, utf8Module) { return function (content, path) { var r, i, skey, nkey, position, keys = [], key, slen; if (path === undefined) path = []; r = ecode.pack.findPosition(content, path); if (r === undefined) undefined; if ((r.type != 2) && (r.type != 3)) return undefined; position = r.position; skey = content.int[position++]; nkey = content.int[position++]; for (i = 0; i < skey; i++, position += 3) { key = content.int[position]; slen = numberModule.fromArray("i32", content.text, key); key = stringModule.fromUint8Array(content.text, key + 4, slen); key = utf8Module.decode(key); keys.push(key); } for (i = 0; i < nkey; i++, position += 3) { key = content.int[position]; keys.push(key); } return keys; } } (ecode, numberModule, stringModule, utf8Module); ecode.pack.toString = function (numberModule, stringModule) { return function (content, callbackfunc) { var ilen = content.int.byteLength; var nlen = 0; var tlen = 0; if (content.nums !== undefined) nlen = content.nums.byteLength; if (content.text !== undefined) tlen = content.text.byteLength; var r = [numberModule.toString("i32", ilen), numberModule.toString("i32", nlen)]; if (nlen > 0) r.push(stringModule.fromUint8Array(new Uint8Array(content.nums.buffer))); if (tlen > 0) r.push(stringModule.fromUint8Array(content.text)); return stringModule.merge(r); } } (numberModule, stringModule); ecode.pack.toUint8Array = function (numberModule) { return function (content, callbackfunc) { var ilen = content.int.byteLength; var nlen = 0; var tlen = 0; if (content.nums !== undefined) nlen = content.nums.byteLength; if (content.text !== undefined) tlen = content.text.byteLength; var length = ilen + nlen + tlen + 8; var r = new Uint8Array(length); numberModule.writeArray("i32", ilen, r); numberModule.writeArray("i32", nlen, r, 4); r.set(new Uint8Array(content.int.buffer), 8); if (nlen > 0) r.set(new Uint8Array(content.nums.buffer), ilen + 8); if (tlen > 0) r.set(content.text, ilen + nlen + 8); return r; } } (numberModule); ecode.pack.getInstance = function (content) { var retval = {}; retval.read = function (path, callbackfunc) { return ecode.pack.read(content, path, callbackfunc); }; retval.getKeys = function (path) { return ecode.pack.getKeys(content, path); }; retval.toString = function (callbackfunc) { return ecode.pack.toString(content, callbackfunc); }; retval.toUint8Array = function (callbackfunc) { return ecode.pack.toUint8Array(content, callbackfunc); }; retval.terminate = function () { delete retval.read; delete retval.getKeys; delete retval.toString; delete retval.toUint8Array; delete retval.terminate; delete content.int; delete content.nums; delete content.text; } return retval; } ecode.pack.fromVariable = function (ecode, numberModule, typeModule, utf8Module) { return function (obj) { var stringList = []; var keyList = {}; var numList = []; var intList = [0, 0]; var slength = 0; /* type: 0: system 1: function 2: array 3: object 4: boolean 5: int 6: double 7: string 8: Date / date2a 9: date2b 10: date2c 11: Geometry 20: Int8Array 21: Uint8Array 22: Int16Array 23: Uint16Array 24: Int32Array 25: Uint32Array 26: Float32Array 27: Float64Array 28: BigInt64Array 29: BigUint64Array */ var writeData = function (obj) { var i, k, n, t, keys, nkeys, cpos, tpos; var rtype; if (obj === undefined) return { type: 0, content: 0 }; if (obj == null) return { type: 0, content: 1 }; if (obj === true) return { type: 4, content: 1 }; if (obj === false) return { type: 4, content: 0 }; if (obj instanceof Int8Array) { stringList.push(new Uint8Array((new Int8Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 20, content: tpos } } if (obj instanceof Uint8Array) { stringList.push(obj); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 21, content: tpos } } if (obj instanceof Int16Array) { stringList.push(new Uint8Array((new Int16Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 22, content: tpos } } if (obj instanceof Uint16Array) { stringList.push(new Uint8Array((new Uint16Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 23, content: tpos } } if (obj instanceof Int32Array) { stringList.push(new Uint8Array((new Int32Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 24, content: tpos } } if (obj instanceof Uint32Array) { stringList.push(new Uint8Array((new Uint32Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 25, content: tpos } } if (obj instanceof Float32Array) { stringList.push(new Uint8Array((new Float32Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 26, content: tpos } } if (obj instanceof Float64Array) { stringList.push(new Uint8Array((new Float64Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 27, content: tpos } } if (self.BigInt64Array && (obj instanceof BigInt64Array)) { stringList.push(new Uint8Array((new BigInt64Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 28, content: tpos } } if (self.BigUint64Array && (obj instanceof BigUint64Array)) { stringList.push(new Uint8Array((new BigUint64Array(obj)).buffer)); tpos = slength; slength += stringList[stringList.length - 1].length + 4; return { type: 29, content: tpos } } if (typeModule.isFunction(obj)) { obj = utf8Module.encode(obj.toString()); stringList.push(obj); tpos = slength; slength += obj.length + 4; return { type: 1, content: tpos }; } if (typeModule.isDate(obj)) { if (obj instanceof Date2) { if (obj.mode == "date") { tpos = numList.length; numList.push(obj.getTime()); numList.push( obj.getFullYear() * 535680 + obj.getMonth() * 44640 (obj.getDate() - 1) * 1440 ); return { type: 9, content: tpos }; } if (obj.mode == "datetime") { tpos = numList.length; numList.push(obj.getTime()); numList.push( obj.getFullYear() * 535680 + obj.getMonth() * 44640 (obj.getDate() - 1) * 1440 + obj.getHours() * 24 + obj.getMinutes() ); return { type: 10, content: tpos }; } } tpos = numList.length; numList.push(obj.getTime()); return { type: 8, content: tpos }; } if (typeModule.isNumber(obj)) { k = ~~(obj); if ((k == obj) && (-2147483648 <= k) && (k < 2147483648)) { return { type: 5, content: k }; } tpos = numList.length; numList.push(obj); return { type: 6, content: tpos }; } if (typeModule.isString(obj)) { obj = utf8Module.encode(obj); stringList.push(obj); tpos = slength; slength += obj.length + 4; return { type: 7, content: tpos }; } if (typeModule.isArray(obj) || typeModule.isObject(obj) || (obj instanceof Geometry)) { cpos = intList.length; if (obj instanceof Geometry) { rtype = 11; obj = obj.getData(); } else if (typeModule.isArray(obj)) { rtype = 2; } else { rtype = 3; } keys = Object.keys(obj); nkeys = []; for (i = n = 0; i < keys.length; i++) { k = ~~(parseInt(keys[i])); if (("" + k == keys[i]) && (-2147483648 <= k) && (k < 2147483648)) { nkeys.push(k); } else { keys[n++] = { o: keys[i], u: utf8Module.encode(keys[i]) } } } intList.push(n); intList.push(nkeys.length); tpos = intList.length; for (i = 0; i < keys.length; i++) { intList.push(0); intList.push(0); intList.push(0); } if (n > 0) { keys = keys.slice(0, n); keys.sort(function (a, b) { if (a.u < b.u) return -1; if (a.u == b.u) return 0; return 1; }); for (i = 0; i < n; i++) { if (keyList[keys[i].u] === undefined) { keyList[keys[i].u] = slength; stringList.push(keys[i].u); slength += keys[i].u.length + 4; } intList[tpos++] = keyList[keys[i].u]; t = writeData(obj[keys[i].o]); intList[tpos++] = t.type; intList[tpos++] = t.content; } } nkeys.sort((a, b) => (a - b)); for (i = 0; i < nkeys.length; i++) { intList[tpos++] = nkeys[i]; t = writeData(obj[nkeys[i]]); intList[tpos++] = t.type; intList[tpos++] = t.content; } return { type: rtype, content: cpos }; } return undefined; } var t = writeData(obj); intList[0] = t.type; intList[1] = t.content; var content = {}, tpos = 0; if (slength > 0) { content.text = new Uint8Array(slength); for (i = 0; i < stringList.length; i++) { numberModule.writeArray("i32", stringList[i].length, content.text, tpos); tpos += 4; if (stringList[i] instanceof Uint8Array) { content.text.set(stringList[i], tpos); } else { numberModule.writeArray("s", stringList[i], content.text, tpos); } tpos += stringList[i].length; stringList[i] = null; } } if (numList.length > 0) content.nums = new Float64Array(numList); content.int = new Int32Array(intList); return ecode.pack.getInstance(content); } } (ecode, numberModule, typeModule, utf8Module); ecode.pack.asyncFromVariable = function (ecode, numberModule, typeModule, utf8Module) { return function (obj, callbackfunc) { var stringList = []; var keyList = {}; var numList = []; var intList = [0, 0]; var slength = 0; var stacks = [{ obj: obj, index: 0 }]; var rettype, retcontent; var content = {}; var index, tpos; var writeData = function () { var i, k, n, t, keys, nkeys; var rtype; if (stacks.length == 0) return true; if (stacks[stacks.length - 1].index == 0) { if (stacks[stacks.length - 1].obj === undefined) { rettype = 0; retcontent = 0; stacks.pop(); return false; } if (stacks[stacks.length - 1].obj === null) { rettype = 0; retcontent = 1; stacks.pop(); return false; } if (stacks[stacks.length - 1].obj === true) { rettype = 4; retcontent = 1; stacks.pop(); return false; } if (stacks[stacks.length - 1].obj === false) { rettype = 4; retcontent = 0; stacks.pop(); return false; } if (typeModule.isFunction(stacks[stacks.length - 1].obj)) { t = utf8Module.encode(stacks[stacks.length - 1].obj.toString()); stringList.push(t); retcontent = slength; slength += t.length + 4; rettype = 1; stacks.pop(); return false; } if (typeModule.isDate(stacks[stacks.length - 1].obj)) { if (stacks[stacks.length - 1].obj instanceof Date2) { if (stacks[stacks.length - 1].obj.mode == "date") { retcontent = numList.length; numList.push(stacks[stacks.length - 1].obj.getTime()); numList.push( stacks[stacks.length - 1].obj.getFullYear() * 535680 + stacks[stacks.length - 1].obj.getMonth() * 44640 (stacks[stacks.length - 1].obj.getDate() - 1) * 1440 ); rettype = 9; stacks.pop(); return false; } if (stacks[stacks.length - 1].obj.mode == "datetime") { retcontent = numList.length; numList.push(stacks[stacks.length - 1].obj.getTime()); numList.push( obj.getFullYear() * 535680 + obj.getMonth() * 44640 (obj.getDate() - 1) * 1440 + obj.getHours() * 24 + obj.getMinutes() ); rettype = 10; stacks.pop(); return false; } } retcontent = numList.length; numList.push(stacks[stacks.length - 1].obj.getTime()); rettype = 8; stacks.pop(); return false; } if (typeModule.isNumber(stacks[stacks.length - 1].obj)) { k = ~~(stacks[stacks.length - 1].obj); if ((k == stacks[stacks.length - 1].obj) && (-2147483648 <= k) && (k < 2147483648)) { rettype = 5; retcontent = k; stacks.pop(); return false; } retcontent = numList.length; numList.push(stacks[stacks.length - 1].obj); rettype = 6; stacks.pop(); return false; } if (typeModule.isString(stacks[stacks.length - 1].obj)) { t = utf8Module.encode(stacks[stacks.length - 1].obj); stringList.push(t); retcontent = slength; slength += t.length + 4; rettype = 7; stacks.pop(); return false; } if (typeModule.isArray(stacks[stacks.length - 1].obj) || typeModule.isObject(stacks[stacks.length - 1].obj) || (stacks[stacks.length - 1].obj instanceof Geometry)) { stacks[stacks.length - 1].cpos = intList.length; if (obj instanceof Geometry) { stacks[stacks.length - 1].rtype = 11; stacks[stacks.length - 1].obj = stacks[stacks.length - 1].obj.getData(); } else if (typeModule.isArray(stacks[stacks.length - 1].obj)) { stacks[stacks.length - 1].rtype = 2; } else { stacks[stacks.length - 1].rtype = 3; } stacks[stacks.length - 1].keys = Object.keys(stacks[stacks.length - 1].obj); stacks[stacks.length - 1].nkeys = []; for (i = n = 0; i < stacks[stacks.length - 1].keys.length; i++) { k = ~~(parseInt(stacks[stacks.length - 1].keys[i])); if (("" + k == stacks[stacks.length - 1].keys[i]) && (-2147483648 <= k) && (k < 2147483648)) { stacks[stacks.length - 1].nkeys.push(k); } else { stacks[stacks.length - 1].keys[n++] = { o: stacks[stacks.length - 1].keys[i], u: utf8Module.encode(stacks[stacks.length - 1].keys[i]) } } } intList.push(n); intList.push(stacks[stacks.length - 1].nkeys.length); stacks[stacks.length - 1].tpos = intList.length; for (i = 0; i < stacks[stacks.length - 1].keys.length; i++) { intList.push(0); intList.push(0); intList.push(0); } if (n > 0) { stacks[stacks.length - 1].keys = stacks[stacks.length - 1].keys.slice(0, n); stacks[stacks.length - 1].keys.sort(function (a, b) { if (a.u < b.u) return -1; if (a.u == b.u) return 0; return 1; }); stacks[stacks.length - 1].n = n; stacks[stacks.length - 1].i = 0; stacks[stacks.length - 1].index = 1; } else { stacks[stacks.length - 1].index = 3; } return false; } rettype = 0; retcontent = 0; stacks.pop(); return false; } if (stacks[stacks.length - 1].index == 1) { if (stacks[stacks.length - 1].i < stacks[stacks.length - 1].n) { if (keyList[stacks[stacks.length - 1].keys[stacks[stacks.length - 1].i].u] === undefined) { keyList[stacks[stacks.length - 1].keys[stacks[stacks.length - 1].i].u] = slength; stringList.push(stacks[stacks.length - 1].keys[stacks[stacks.length - 1].i].u); slength += stacks[stacks.length - 1].keys[stacks[stacks.length - 1].i].u.length + 4; } intList[stacks[stacks.length - 1].tpos++] = keyList[stacks[stacks.length - 1].keys[stacks[stacks.length - 1].i].u]; stacks[stacks.length - 1].index = 2; stacks.push({ obj: stacks[stacks.length - 1].obj[stacks[stacks.length - 1].keys[stacks[stacks.length - 1].i].o], index: 0 }); } else { stacks[stacks.length - 1].index = 3; } return false; } if (stacks[stacks.length - 1].index == 2) { intList[stacks[stacks.length - 1].tpos++] = rettype; intList[stacks[stacks.length - 1].tpos++] = retcontent; stacks[stacks.length - 1].i++; stacks[stacks.length - 1].index = 1; return false; } if (stacks[stacks.length - 1].index == 3) { stacks[stacks.length - 1].nkeys.sort((a, b) => (a - b)); stacks[stacks.length - 1].i = 0; stacks[stacks.length - 1].index = 4; return false; } if (stacks[stacks.length - 1].index == 4) { if (stacks[stacks.length - 1].i < stacks[stacks.length - 1].nkeys.length) { intList[stacks[stacks.length - 1].tpos++] = stacks[stacks.length - 1].nkeys[stacks[stacks.length - 1].i]; stacks[stacks.length - 1].index = 5; stacks.push({ obj: stacks[stacks.length - 1].obj[stacks[stacks.length - 1].nkeys[stacks[stacks.length - 1].i]], index: 0 }); } else { stacks[stacks.length - 1].index = 6; } return false; } if (stacks[stacks.length - 1].index == 5) { intList[stacks[stacks.length - 1].tpos++] = rettype; intList[stacks[stacks.length - 1].tpos++] = retcontent; stacks[stacks.length - 1].i++; stacks[stacks.length - 1].index = 4; return false; } if (stacks[stacks.length - 1].index == 6) { rettype = stacks[stacks.length - 1].rtype; retcontent = stacks[stacks.length - 1].cpos; stacks.pop(); return false; } rettype = 0; retcontent = 0; stacks.pop(); return false; } Thread.exec(writeData, function () { var p1, p2, p3; intList[0] = rettype; intList[1] = retcontent; p1 = p2 = p3 = 0; if (slength > 0) { content.text = new Uint8Array(slength); tpos = 0; Thread.exec(function () { if (p1 == stringList.length) return true; numberModule.writeArray("i32", stringList[p1].length, content.text, tpos); tpos += 4; numberModule.writeArray("s", stringList[p1], content.text, tpos); tpos += stringList[p1++].length; return false; }); } if (numList.length > 0) { content.nums = new Float64Array(numList.length); numberModule.copyArray(content.nums, numList, function () { p2 = numList.length; }); } content.int = new Int32Array(intList.length); numberModule.copyArray(content.int, intList, function () { p3 = intList.length; }); Thread.wait( function () { return (p1 == stringList.length) && (p2 == numList.length) && (p3 == intList.length); }, function () { Thread.setTimeout({ func: callbackfunc, args: [ecode.pack.getInstance(content)] }); } ); }); } } (ecode, numberModule, typeModule, utf8Module); packModule.fromVariable = function (packModule, ecode) { return function (obj, callbackfunc) { if (callbackfunc === undefined) return ecode.pack.fromVariable(obj); return ecode.pack.asyncFromVariable(obj, callbackfunc); } } (packModule, ecode); packModule.fromUint8Array = function (packModule, numberModule) { return function (arr) { var ilen, nlen, tlen, content, t; ilen = numberModule.fromArray("i32", arr); nlen = numberModule.fromArray("i32", arr, 4); tlen = arr.length - ilen - nlen - 8; t = new Uint8Array(ilen); t.set(arr.subarray(8, ilen + 8)); content = { int: new Int32Array(t.buffer)}; if (nlen > 0) { t = new Uint8Array(nlen); t.set(arr.subarray(ilen + 8, ilen + nlen + 8)); content.nums = new Float64Array(t.buffer); } if (tlen > 0) { content.text = new Uint8Array(tlen); content.text.set(arr.subarray(ilen + nlen + 8, arr.length)); } t = null; return ecode.pack.getInstance(content); } } (packModule, numberModule); packModule.fromString = function (packModule, numberModule, stringModule) { return function (str) { var ilen, nlen, tlen, content, t; ilen = numberModule.fromString("i32", str); nlen = numberModule.fromString("i32", str, 4); tlen = arr.length - ilen - nlen - 8; t = stringModule.toUint8Array(str, 8, ilen); content = { int: new Int32Array(t.buffer)}; if (nlen > 0) { t = stringModule.toUint8Array(str, ilen + 8, nlen); content.nums = new Float64Array(t.buffer); } if (tlen > 0) { content.text = stringModule.toUint8Array(str, ilen + nlen + 8, tlen); } t = null; return ecode.pack.getInstance(content); } } (packModule, numberModule, stringModule); colorModule.nameToHex = function (name) { var t = { "aliceblue": "#f0f8ff", "antiquewhite": "#faebd7", "aqua": "#00ffff", "aquamarine": "#7fffd4", "azure": "#f0ffff", "beige": "#f5f5dc", "bisque": "#ffe4c4", "black": "#000000", "blanchedalmond": "#ffebcd", "blue": "#0000ff", "blueviolet": "#8a2be2", "brown": "#a52a2a", "burlywood": "#deb887", "cadetblue": "#5f9ea0", "chartreuse": "#7fff00", "chocolate": "#d2691e", "coral": "#ff7f50", "cornflowerblue": "#6495ed", "cornsilk": "#fff8dc", "crimson": "#dc143c", "cyan": "#00ffff", "darkblue": "#00008b", "darkcyan": "#008b8b", "darkgoldenrod": "#b8860b", "darkgray": "#a9a9a9", "darkgreen": "#006400", "darkkhaki": "#bdb76b", "darkmagenta": "#8b008b", "darkolivegreen": "#556b2f", "darkorange": "#ff8c00", "darkorchid": "#9932cc", "darkred": "#8b0000", "darksalmon": "#e9967a", "darkseagreen": "#8fbc8f", "darkslateblue": "#483d8b", "darkslategray": "#2f4f4f", "darkturquoise": "#00ced1", "darkviolet": "#9400d3", "deeppink": "#ff1493", "deepskyblue": "#00bfff", "dimgray": "#696969", "dodgerblue": "#1e90ff", "firebrick": "#b22222", "floralwhite": "#fffaf0", "forestgreen": "#228b22", "fuchsia": "#ff00ff", "gainsboro": "#dcdcdc", "ghostwhite": "#f8f8ff", "gold": "#ffd700", "goldenrod": "#daa520", "gray": "#808080", "green": "#008000", "greenyellow": "#adff2f", "honeydew": "#f0fff0", "hotpink": "#ff69b4", "indianred ": "#cd5c5c", "indigo": "#4b0082", "ivory": "#fffff0", "khaki": "#f0e68c", "lavender": "#e6e6fa", "lavenderblush": "#fff0f5", "lawngreen": "#7cfc00", "lemonchiffon": "#fffacd", "lightblue": "#add8e6", "lightcoral": "#f08080", "lightcyan": "#e0ffff", "lightgoldenrodyellow": "#fafad2", "lightgrey": "#d3d3d3", "lightgreen": "#90ee90", "lightpink": "#ffb6c1", "lightsalmon": "#ffa07a", "lightseagreen": "#20b2aa", "lightskyblue": "#87cefa", "lightslategray": "#778899", "lightsteelblue": "#b0c4de", "lightyellow": "#ffffe0", "lime": "#00ff00", "limegreen": "#32cd32", "linen": "#faf0e6", "magenta": "#ff00ff", "maroon": "#800000", "mediumaquamarine": "#66cdaa", "mediumblue": "#0000cd", "mediumorchid": "#ba55d3", "mediumpurple": "#9370d8", "mediumseagreen": "#3cb371", "mediumslateblue": "#7b68ee", "mediumspringgreen": "#00fa9a", "mediumturquoise": "#48d1cc", "mediumvioletred": "#c71585", "midnightblue": "#191970", "mintcream": "#f5fffa", "mistyrose": "#ffe4e1", "moccasin": "#ffe4b5", "navajowhite": "#ffdead", "navy": "#000080", "oldlace": "#fdf5e6", "olive": "#808000", "olivedrab": "#6b8e23", "orange": "#ffa500", "orangered": "#ff4500", "orchid": "#da70d6", "palegoldenrod": "#eee8aa", "palegreen": "#98fb98", "paleturquoise": "#afeeee", "palevioletred": "#d87093", "papayawhip": "#ffefd5", "peachpuff": "#ffdab9", "peru": "#cd853f", "pink": "#ffc0cb", "plum": "#dda0dd", "powderblue": "#b0e0e6", "purple": "#800080", "red": "#ff0000", "rosybrown": "#bc8f8f", "royalblue": "#4169e1", "saddlebrown": "#8b4513", "salmon": "#fa8072", "sandybrown": "#f4a460", "seagreen": "#2e8b57", "seashell": "#fff5ee", "sienna": "#a0522d", "silver": "#c0c0c0", "skyblue": "#87ceeb", "slateblue": "#6a5acd", "slategray": "#708090", "snow": "#fffafa", "springgreen": "#00ff7f", "steelblue": "#4682b4", "tan": "#d2b48c", "teal": "#008080", "thistle": "#d8bfd8", "tomato": "#ff6347", "turquoise": "#40e0d0", "violet": "#ee82ee", "wheat": "#f5deb3", "white": "#ffffff", "whitesmoke": "#f5f5f5", "yellow": "#ffff00", "yellowgreen": "#9acd32", "transparent": "#ffffff" }; name = name.toLowerCase(); if (name == "") name = "transparent"; if (t[name] !== undefined) return t[name]; return name; } ///////// colorModule.hex2rgb = function (c) { if (c[0] === '#') c = c.substr(1); var r = parseInt(c.slice(0,2), 16), g = parseInt(c.slice(2,4), 16), b = parseInt(c.slice(4,6), 16); return { r: r, g: g, b: b } } stringModule.releaseDOMElement = function (stringModule, typeModule) { return function (element, options) { var children = []; var keys; var i, t, n; if ((options === undefined) || (options === null) || (!typeModule.isObject(options))) { options = {}; keys = []; } else { keys = Object.keys(options); } if (element.childNodes.length > 0) { children = new Array(element.childNodes.length); for (i = 0; i < element.childNodes.length; i++) { children[i] = element.childNodes[element.childNodes.length - i - 1]; } } for (i = 0; i < children.length; i++) { element.removeChild(children[i]); if (children[i].revokeResource !== undefined) { } } for (i = n = 0; i < keys.length; i++) { if (element[keys[i]] !== undefined) { t = element[keys[i]]; try { delete element[keys[i]]; if ((element[keys[i]] === undefined) && typeModule.isObject(t) && typeModule.isFunction(options[keys[i]])) { keys[n++] = { data: t, func: options[keys[i]] }; } } catch (e) { } } } for (i = 0; i < n; i++) { try { keys[i].func(keys[i].data); } catch (e) { } } keys = null; for (i = 0; i < children.length; i++) { stringModule.releaseDOMElement(children[i], options); } options = null; children = null; } } stringModule.releaseObject = function (stringModule, typeModule) { return function (obj, options) { var i, t, keys, n; var m_DOMList = []; var recursive = false, removeDOM = true; if ((options === undefined) || (options === null) || (!typeModule.isObject(options))) { options = { recursive: false, removeDOM: false }; } if (options.recursive !== undefined) recursive = options.recursive; if (options.removeDOM !== undefined) removeDOM = options.removeDOM; if (typeModule.isArray(obj) || typeModule.isObject(obj)) { try { keys = Object.keys(obj); } catch (e) { keys = []; } for (i = n = 0; i < keys.length; i++) { h = keys[i]; t = obj[h]; try { delete obj[h]; if (obj[h] === undefined) { if (typeModule.isArray(t) || typeModule.isObject(t)) { if ((t.tagName !== undefined) && (t.textContent !== undefined) && (t.innerHTML !== undefined) && (t.outerHTML !== undefined)) { if (removeDOM === true) { m_DOMList.push(t); } } else if (recursive === true) { keys[n++] = t; } } } } catch (e) { } } for (i = 0; i < n; i++) { stringModule.releaseObject(keys[i], options); } keys = null; if (removeDOM === true) { for (i = 0; i < m_DOMList.length; i++) { stringModule.releaseDOMElement(m_DOMList[i], {}); } } m_DOMList = null; } } } (stringModule, typeModule); stringModule.substr = function (stringModule) { return function (str, start, length) { var r = [], buffer; var i, end, ilen; if (length === undefined) length = str.length; if (start === undefined) start = 0; if (start + length > str.length) length = str.length - start; if (length <= 0) return ""; end = start + length; while (start < end) { ilen = end - start; if (ilen > 1024) ilen = 1024; buffer = Array.from(str.substr(start, ilen), c => c.charCodeAt()); r.push(String.fromCharCode.apply(null, buffer)); start += ilen; } return EncodingClass.string.merge(r); } } (stringModule); stringModule.xor = function (stringModule) { return function (str, xorFunc, start, length) { var i, r; if (start === undefined) start = 0; if (length === undefined) length = str.length; if (start + length > str.length) length = str.length - start; if (length > 0) { r = new Uint8Array(length); for (i = 0; i < length; i++) { r[i] = (str.charCodeAt(start++) ^ xorFunc(256)) & 0xFF; } return stringModule.fromUint8Array(r); } return ""; } } (stringModule); stringModule.toUint8Array = function (str, start, length) { var i, r; if (length === undefined) length = str.length; if (start === undefined) start = 0; if (start + length > str.length) { length = str.length - start; } if (length > 0) { r = Uint8Array.from(str.substr(start, length), c => (c.charCodeAt() & 0xFF)); return r; } else { return new Uint8Array(0); } }; stringModule.fromUint8Array = function (arr, start, length) { var r = [], ts; if (start === undefined) start = 0; if (length === undefined) length = arr.length; if (start + length > arr.length) length = arr.length - start; while (length > 0) { if (length > 1024) { ts = 1024; } else { ts = length; } r.push(String.fromCharCode.apply(null, arr.subarray(start, start + ts))); start += ts; length -= ts; } if (r.length == 0) return ""; return EncodingClass.string.merge(r); } stringModule.merge = function (stringArray) { var i, k, x, t, fs, flen; if (stringArray.length == 0) return ""; while (stringArray.length > 1) { if (stringArray.length <= 128) { stringArray = ["".concat(...stringArray)]; } else { x = []; fs = 0; while (fs < stringArray.length) { flen = stringArray.length - fs; if (flen > 128) flen = 128; x.push("".concat(...(stringArray.slice(fs, fs + flen)))); fs += flen; } stringArray = x; } } return stringArray[0]; } stringModule.cvtest = function (varname) { var sx, st; eval("sx = stringModule.fromVariable(" + varname + ");"); st = "Length = " + sx.length; console.log(st); console.log(sx); st = stringModule.toVariable(sx); console.log(st); } stringModule.exportVariable = function (typeModule, stringModule) { return function (obj, level) { var i, k, n, x, z, ch, st, sx, keys, ok; if (obj === undefined) return "undefined"; if (obj == null) return "null"; if (level === undefined) level = 0; if (typeModule.isArray(obj)) { n = obj.length; if (n == 0) return "[]"; st = "[\r\n"; for (i = 0; i < n; i++) { for (k = 0; k < level+4; k++) st += " "; st += stringModule.exportVariable(obj[i], level + 4); if (i+1 < n) st += ","; st += "\r\n"; } for (k = 0; k < level; k++) st += " "; return st + "]"; } else if (typeModule.isDate(obj)) { return "new Date(" + obj.getTime() + ")"; } else if (typeModule.isObject(obj)) { keys = Object.keys(obj); n = keys.length; st = ["{\r\n"]; for (i = 0; i < n; i++) { sx = ""; for (k = 0; k < level+4; k++) sx += " "; st.push(sx); ch = keys[i].substr(1); ok = false; if (("a" <= ch) && (ch <= "z")) ok = true; if (("A" <= ch) && (ch <= "Z")) ok = true; if (ch == "_") ok = true; if (ok) { st.push(keys[i] + ": "); } else { st.push("\"" + stringModule.addslashes(keys[i]) + "\": "); } st.push(stringModule.exportVariable(obj[keys[i]], level + 4)); if (i+1 < n) st.push(","); st.push("\r\n"); } sx = ""; for (k = 0; k < level; k++) sx += " "; st.push(sx + "}"); return stringModule.merge(st); } else if (typeModule.isFunction(obj)) { return obj.toString(); } else if (typeModule.isBoolean(obj)) { if (obj) return "true"; return "false"; } else if (typeModule.isNumber(obj)) { return obj; } else if (typeModule.isString(obj)) { st = ""; n = obj.length; for (i = 0; i < n; i++) { k = obj.substr(i, 1); switch (k) { case "\\": st += "\\\\"; break; case "\"": st += "\\\""; break; case "\r": st += "\\r"; break; case "\n": st += "\\n"; break; case "\t": st += "\\t"; break; default: st += k; } } return "\"" + st + "\""; } else { return "unknown"; } } } (typeModule, stringModule); stringModule.datecompare = function (stringModule) { return function (date1, date2) { var mode1, mode2, k; if (!(date1 instanceof Date)) return stringModule.compare(date1, date2); if (!(date2 instanceof Date)) return stringModule.compare(date1, date2); if (date1 instanceof Date2) { mode1 = date1.mode; } else { mode1 = "live"; } if (date2 instanceof Date2) { mode2 = date2.mode; } else { mode2 = "live"; } if ((mode1 == "live") && (mode2 == "live")) return stringModule.compare(date1.getTime(), date2.getTime()); k = stringModule.compare(date1.getFullYear(), date2.getFullYear()); if (k == 0) k = stringModule.compare(date1.getMonth(), date2.getMonth()); if (k == 0) k = stringModule.compare(date1.getDate(), date2.getDate()); if ((k != 0) || (mode1 == "date") || (mode2 == "date")) return k; k = stringModule.compare(date1.getHours(), date2.getHours()); if (k == 0) k = stringModule.compare(date1.getMinutes(), date2.getMinutes()); return k; } } (stringModule); stringModule.compare = function (typeModule, stringModule) { return function (obj1, obj2) { var i, k, m, n, x, z, keys, keys2; if ((obj1 === undefined) && (obj2 === undefined)) return 0; if (obj1 === undefined) return -1; if (obj2 === undefined) return 1; if ((obj1 === null) && (obj2 === null)) return 0; if (obj1 === null) return -1; if (obj2 === null) return 1; if (typeModule.isArray(obj1) && typeModule.isArray(obj2)) { n = obj1.length; m = obj2.length; for (i = 0; i < n; i++) { if (i >= m) return 1; k = stringModule.compare(obj1[i], obj2[i]); if (k != 0) return k; } if (n < m) return -1; return 0; } else if (typeModule.isDate(obj1) && typeModule.isDate(obj2)) { return stringModule.datecompare(obj1, obj2); } else if (typeModule.isDate(obj1)) { return stringModule.compare(obj1.getTime(), obj2); } else if (typeModule.isDate(obj2)) { return stringModule.compare(obj1, obj2.getTime()); } else if (obj1 instanceof Geometry) { return stringModule.compare(obj1.getData(), obj2); } else if (obj2 instanceof Geometry) { return stringModule.compare(obj1, obj2.getData()); } else if (typeModule.isObject(obj1) && typeModule.isObject(obj2)) { keys = Object.keys(obj1); n = keys.length; keys2 = Object.keys(obj2); m = keys2.length; keys.sort(); keys2.sort(); for (i = 0; i < n; i++) { if (i >= m) return 1; k = stringModule.compare(keys[i], keys2[i]); if (k != 0) return k; k = stringModule.compare(obj1[keys[i]], obj2[keys2[i]]); if (k != 0) return k; } if (n < m) return -1; return 0; } else if (typeModule.isObject(obj1) && typeModule.isArray(obj2)) { keys = Object.keys(obj1); n = keys.length; keys.sort(); m = obj2.length; for (i = 0; i < n; i++) { if (i >= m) return 1; k = stringModule.compare(obj1[keys[i]], obj2[i]); if (k != 0) return k; } if (n < m) return -1; return 0; } else if (typeModule.isArray(obj1) && typeModule.isObject(obj2)) { n = obj1.length; keys2 = Object.keys(obj2); m = keys2.length; keys2.sort(); for (i = 0; i < n; i++) { if (i >= m) return 1; k = stringModule.compare(obj1[i], obj2[keys2[i]]); if (k != 0) return k; } if (n < m) return -1; return 0; } else if (typeModule.isArray(obj1)) { if (obj1.length == 0) return -1; k = typeModule.compare(obj1[0], obj2); if (k != 0) return k; if (obj1.length > 0) return 1; return 0; } else if (typeModule.isArray(obj2)) { if (obj2.length == 0) return 1; k = stringModule.compare(obj1, obj2[0]); if (k != 0) return k; if (obj2.length > 0) return -1; return 0; } else if (typeModule.isObject(obj1)) { keys = Object.keys(obj1); if (keys.length == 0) return -1; keys.sort(); k = stringModule.compare(obj1[keys[0]], obj2); if (k != 0) return k; if (keys.length > 0) return 1; return 0; } else if (typeModule.isObject(obj2)) { keys = Object.keys(obj2); if (keys.length == 0) return 1; keys.sort(); k = stringModule.compare(obj1, obj2[keys[0]]); if (k != 0) return k; if (keys.length > 0) return -1; return 0; } else if (typeModule.isBoolean(obj1)) { if (obj1) { return stringModule.compare(1, obj2); } else { return stringModule.compare(0, obj2); } } else if (typeModule.isBoolean(obj2)) { if (obj2) { return stringModule.compare(obj1, 1); } else { return stringModule.compare(obj1, 0); } } else if (typeModule.isNumber(obj1) && typeModule.isNumber(obj2)) { if (obj1 < obj2) return -1; if (obj1 > obj2) return 1; return 0; } else if (typeModule.isFunction(obj1)) { return stringModule.compare(obj1.toString(), obj2); } else if (typeModule.isFunction(obj2)) { return stringModule.compare(obj1, obj2.toString()); } else if (typeModule.isString(obj1) && typeModule.isString(obj2)) { if (obj1 < obj2) return -1; if (obj1 > obj2) return 1; return 0; } else if (typeModule.isString(obj1)) { return stringModule.compare(obj1, obj2.toString()); } else if (typeModule.isString(obj2)) { return stringModule.compare(obj1.toString(), obj2); } return stringModule.compare(obj1.toString(), obj2.toString()); } } (typeModule, stringModule); stringModule.duplicateObject = function (obj) { var r, keys, i; if (EncodingClass.type.isArray(obj)) { r = []; } else { r = {}; } keys = Object.keys(obj); for (i = 0; i < keys.length; i++) { r[keys[i]] = obj[keys[i]]; } return r; }; stringModule.duplicate = function (typeModule, stringModule) { return function (obj) { var i, n, m, x, z, st, sx, keys, ss; if (obj === undefined) return undefined; if (obj === null) return null; if (typeModule.isArray(obj)) { n = obj.length; st = []; for (i = 0; i < n; i++) { st.push(stringModule.duplicate(obj[i])); } return st; } else if (obj instanceof Geometry) { return Geometry.fromData(obj.getData()); } else if (typeModule.isDate(obj)) { return new Date(obj.getTime()); } else if (typeModule.isObject(obj)) { keys = Object.keys(obj); n = keys.length; st = {}; for (i = 0; i < n; i++) { st[keys[i]] = stringModule.duplicate(obj[keys[i]]); } return st; } else if (typeModule.isFunction(obj)) { return obj; } else if (typeModule.isBoolean(obj)) { if (obj) { return true; } else { return false; } } else if (typeModule.isNumber(obj)) { return obj; } else if (typeModule.isString(obj)) { return stringModule.substr(obj, 0); } return obj; } } (typeModule, stringModule); stringModule.fromVariable = function (typeModule, base64Module, stringModule) { return function (obj) { var i, n, x, z, st, sx, sy, keys, ss; if (obj === undefined) return "undefined#"; if (obj == null) return "null#"; if (typeModule.isArray(obj)) { n = obj.length; st = ["array#" + n + "#"]; for (i = 0; i < n; i++) { sx = stringModule.fromVariable(obj[i]); st.push(sx.length + "#" + sx); } return stringModule.merge(st); } else if (obj instanceof Geometry) { st = stringModule.fromVariable(obj.getData()); st = base64Module.encode(st); return "geometry#" + st.length + "#" + st; } else if (typeModule.isDate(obj)) { let tobj = obj.getTime(); if (obj instanceof Date2) { if (obj.mode == "date") { sx = base64Module.encode(tobj + ""); sx += obj.getFullYear(); if (obj.getMonth() < 9) { sx += "0" + (obj.getMonth() + 1); } else { sx += obj.getMonth() + 1; } if (obj.getDate() < 10) { sx += "0" + obj.getDate(); } else { sx += obj.getDate(); } return "date2b#" + sx.length + "#" + sx; } else if (obj.mode == "datetime") { sx = base64Module.encode(tobj + ""); sx += obj.getFullYear(); if (obj.getMonth() < 9) { sx += "0" + (obj.getMonth() + 1); } else { sx += obj.getMonth() + 1; } if (obj.getDate() < 10) { sx += "0" + obj.getDate(); } else { sx += obj.getDate(); } if (obj.getHours() < 10) { sx += "0" + obj.getHours(); } else { sx += obj.getHours(); } if (obj.getMinutes() < 10) { sx += "0" + obj.getMinutes(); } else { sx += obj.getMinutes(); } return "date2c#" + sx.length + "#" + sx; } } sx = base64Module.encode(tobj + ""); x = obj.getTimezoneOffset() * (-60); if (x < 0) { sx += "-"; x = -x; } else { sx += "+"; } x = x + ""; while (x.length < 5) x = "0" + x; sx += x; return "date2a#" + sx.length + "#" + sx; } else if (typeModule.isObject(obj)) { keys = Object.keys(obj); n = keys.length; st = []; for (i = 0; i < n; i++) { sx = base64Module.encode(keys[i]); st.push(sx.length + "#" + sx); sx = stringModule.fromVariable(obj[keys[i]]); st.push(sx.length + "#" + sx); } return "obj#" + n + "#" + stringModule.merge(st); } else if (typeModule.isFunction(obj)) { sx = base64Module.encode(utf8Module.encode(obj.toString() + "")); return "function#" + sx.length + "#" + sx; } else if (typeModule.isBoolean(obj)) { if (obj) { st = "1"; } else { st = "0"; } return "bool#" + st; } else if (typeModule.isNumber(obj)) { sx = base64Module.encode(obj + ""); return "number#" + sx.length + "#" + sx; } else if (typeModule.isString(obj)) { sx = base64Module.encode(utf8Module.encode(obj)); return "string#" + sx.length + "#" + sx; } else { return "unknown#"; } } } (typeModule, base64Module, stringModule); stringModule.toVariable = function (base64Module, utf8Module, stringModule) { return function (str) { var i, j, k, t, x, n, m, z, r, sx, st, kv; if (str === undefined) return undefined; k = str.indexOf("#"); if (k <= 0) return undefined; st = str.substr(0, k); str = str.substr(k + 1); switch (st) { case "null": return null; case "geometry": k = str.indexOf("#"); if (k <= 0) return undefined; sx = str.substr(0, k); str = str.substr(k + 1); str = base64Module.decode(str); str = stringModule.toVariable(str); return Geometry.fromData(str); case "string": case "number": case "date": case "date2a": case "date2b": case "date2c": case "function": k = str.indexOf("#"); if (k <= 0) return undefined; sx = str.substr(0, k); str = str.substr(k + 1); if (st == "date") return new Date(parseInt(base64Module.decode(str), 10)); if (st == "date2a") { let n = str.length - 6; return new Date2(parseInt(base64Module.decode(str.substr(0, n)), 10)); } if (st == "date2b") { let n = str.length - 8; x = new Date2(parseInt(base64Module.decode(str.substr(0, n)), 10)); x.mode = "date"; x.setDate(1); x.setMonth(0); x.setFullYear(parseInt(str.substr(n, 4))); x.setMonth(parseInt(str.substr(n + 4, 2)) - 1); x.setDate(parseInt(str.substr(n + 6, 2))); return x; } if (st == "date2c") { let n = str.length - 12; x = new Date2(parseInt(base64Module.decode(str.substr(0, n)), 10)); x.mode = "datetime"; x.setDate(1); x.setMonth(0); x.setFullYear(parseInt(str.substr(n, 4))); x.setMonth(parseInt(str.substr(n + 4, 2)) - 1); x.setDate(parseInt(str.substr(n + 6, 2))); x.setHours(parseInt(str.substr(n + 8, 2))); x.setMinutes(parseInt(str.substr(n + 10, 2))); return x; } if (st == "number") return parseFloat(base64Module.decode(str)); sx = utf8Module.decode(base64Module.decode(str)); if (st == "string") return stringModule.substr(sx, 0); return (new Function("return " + sx))(); case "sarray": r = []; k = str.indexOf("#"); if (k <= 0) return undefined; n = parseInt(str.substr(0, k), 10); str = str.substr(k + 1); k = str.indexOf("#"); if (k <= 0) return undefined; m = parseInt(str.substr(0, k), 10); str = str.substr(k + 1); kv = []; for (i = 0; i < m; i++) { k = str.indexOf("#"); if (k <= 0) return undefined; j = parseInt(str.substr(0, k), 10); kv.push(stringModule.substr(str, k + 1, j)); str = str.substr(k + j + 1); } for (i = 0; i < n; i++) { t = {}; for (j = 0; j < m; j++) { k = str.indexOf("#"); if (k <= 0) return undefined; z = parseInt(str.substr(0, k), 10); x = str.substr(k + 1, z); str = str.substr(k + z + 1); t[kv[j]] = stringModule.toVariable(x); } r.push(t); } return r; case "array": r = []; k = str.indexOf("#"); if (k <= 0) return undefined; n = parseInt(str.substr(0, k), 10); str = str.substr(k + 1); for (i = 0; i < n; i++) { k = str.indexOf("#"); if (k <= 0) return undefined; z = parseInt(str.substr(0, k), 10); x = str.substr(k + 1, z); str = str.substr(k + z + 1); r.push(stringModule.toVariable(x)); } return r; case "obj": r = {}; k = str.indexOf("#"); if (k <= 0) return undefined; n = parseInt(str.substr(0, k), 10); str = str.substr(k + 1); for (i = 0; i < n; i++) { k = str.indexOf("#"); if (k <= 0) return undefined; z = parseInt(str.substr(0, k), 10); x = str.substr(k + 1, z); str = str.substr(k + z + 1); kv = base64Module.decode(x); k = str.indexOf("#"); if (k <= 0) return undefined; z = parseInt(str.substr(0, k), 10); x = str.substr(k + 1, z); str = str.substr(k + z + 1); r[kv] = stringModule.toVariable(x); } return r; case "obj2": r = {}; k = str.indexOf("#"); if (k <= 0) return undefined; n = parseInt(str.substr(0, k), 10); str = str.substr(k + 1); for (i = 0; i < n; i++) { k = str.indexOf("#"); if (k <= 0) return undefined; z = parseInt(str.substr(0, k), 10); x = str.substr(k + 1, z); str = str.substr(k + z + 1); kv = base64Module.decode(x); k = str.indexOf("#"); if (k <= 0) return undefined; z = parseInt(str.substr(0, k), 10); x = str.substr(k + 1, z); str = str.substr(k + z + 1); r[kv] = stringModule.toVariable(x); } return r; case "bool": if (str == "1") return true; if (str == "0") return false; case "undefined": case "unknown": default: return undefined; }; } } (base64Module, utf8Module, stringModule); stringModule.fromDouble = function (value, precision) { var s, d, k, sign; if (precision === undefined) precision = -3; if (precision < 0) { if (value >= 0) { sign = ""; } else { sign = "-"; value = -value; } s = value.toFixed(-precision) + ""; k = s.indexOf("."); if (k >= 0) { d = s.substr(0, k); s = s.substr(k+1); while (s != "") { k = s.length - 1; if (s.substr(k, 1) == "0") { s = s.substr(0, k - 1); } else { break; } } if (s == "") return d; return sign + d + "." + s; } return sign + s; } if (value >= 0) return value.toFixed(precision); return "-" + (-value).toFixed(precision); } stringModule.addslashes = function (stringModule) { return function (str) { if (true) { str = JSON.stringify(String(str)); return stringModule.substr(str, 1, str.length-2); } else { return str.replace(/\\/g, '\\\\'). replace(/\u0008/g, '\\b'). replace(/\t/g, '\\t'). replace(/\n/g, '\\n'). replace(/\f/g, '\\f'). replace(/\r/g, '\\r'). replace(/'/g, '\\\''). replace(/"/g, '\\"'); } } } (stringModule); stringModule.readln = function (str) { var k = str.indexOf("\n"); if (k == -1) return { result: str, remain: "" } return { result: str.substr(0, k), remain: str.substr(k+1) } } stringModule.readlnInt = function (stringModule) { return function (str) { var t = stringModule.readln(str); return { result: parseInt(t.result, 10), remain: t.remain } } } (stringModule); stringModule.readlnHex = function (stringModule) { return function (str) { var t = stringModule.readln(str); return { result: parseInt(t.result, 16), remain: t.remain } } } (stringModule); stringModule.readlnFloat = function (stringModule) { return function (str) { var t = stringModule.readln(str); return { result: parseFloat(t.result, 10), remain: t.remain } } } (stringModule); stringModule.toHex = function (number, width) { var i, t, h; if (width === undefined) width = 0; t = number.toString(16); if (width == 0) return t; h = t.length; if (width > 0) { for (i = h; i < width; i++) { t = "0" + t; } return t; } else { width = -width; if (h <= width) { for (i = h; i < width; i++) { t = "0" + t; } return t; } else { return t.substr(width - h); } } } stringModule.fromHex = function (str) { return parseInt(str, 16); } stringModule.getStringLine = function (st) { var k; k = st.indexOf("\n"); if (k == -1) return { result: st, remain: null }; return { result: st.substr(0, k), remain: st.substr(k+1) }; } stringModule.getBase64StringLine = function (base64Module, utf8Module) { return function (st) { var k; k = st.indexOf("\n"); if (k == -1) return { result: utf8Module.decode(base64Module.decode(st)), remain: null }; return { result: utf8Module.decode(base64Module.decode(st.substr(0, k))), remain: st.substr(k+1) }; } } (base64Module, utf8Module); stringModule.innerHTML2Text = function (st) { var x = document.createElement("div"); x.innerHTML = st; if (x.textContent !== undefined) return x.textContent; if (x.innerText !== undefined) return x.innerText; return ""; } utf8Module.encode = function (typeModule) { return function (sx) { var i, k, x; var buffer, target = []; if (!typeModule.isString(sx)) sx = sx + ""; if (sx.length < 256) { buffer = new Array(sx.length * 4); } else { buffer = new Array(1024); } for (i = k = 0; i < sx.length; i++) { x = sx.charCodeAt(i); if (x <= 0x7f) { buffer[k++] = x; } else if (x <= 0x7FF) { buffer[k++] = 192 + (x >> 6); buffer[k++] = 128 + (x & 0x3f); } else if (x <= 0xFFFF) { buffer[k++] = 224 + (x >> 12); buffer[k++] = 128 + ((x >> 6) & 0x3f); buffer[k++] = 128 + (x & 0x3f); } else { buffer[k++] = 240 + (x >> 18); buffer[k++] = 128 + ((x >> 12) & 0x3f); buffer[k++] = 128 + ((x >> 6) & 0x3f); buffer[k++] = 128 + (x & 0x3f); } if (k >= 1020) { target.push(String.fromCharCode.apply(null, buffer.slice(0, k))); if (target.length == 128) target = ["".concat(...target)]; k = 0; } } if (k > 0) target.push(String.fromCharCode.apply(null, buffer.slice(0, k))); return "".concat(...target); } } (typeModule); utf8Module.encodeu8 = function (sx) { return (new TextEncoder()).encode(sx); } utf8Module.decode = function (typeModule) { return function (sx) { var i, k, x, m, target = [], buffer = new Array(1024); if (!typeModule.isString(sx)) sx = sx + ""; for (i = k = 0; i < sx.length; i++) { x = sx.charCodeAt(i); if (x >= 240) { m = x & 0x7; x = sx.charCodeAt(++i); m = (m << 6) + (x & 0x3F); x = sx.charCodeAt(++i); m = (m << 6) + (x & 0x3F); x = sx.charCodeAt(++i); m = (m << 6) + (x & 0x3F); buffer[k++] = m; } else if (x >= 224) { m = x & 0xF; x = sx.charCodeAt(++i); m = (m << 6) + (x & 0x3F); x = sx.charCodeAt(++i); m = (m << 6) + (x & 0x3F); buffer[k++] = m; } else if (x >= 192) { m = x & 0x1F; x = sx.charCodeAt(++i); m = (m << 6) + (x & 0x3F); buffer[k++] = m; } else { buffer[k++] = x; } if (k == 1024) { target.push(String.fromCharCode.apply(null, buffer)); if (target.length == 128) target = ["".concat(...target)]; k = 0; } } if (k > 0) target.push(String.fromCharCode.apply(null, buffer.slice(0, k))); return "".concat(...target); } } (typeModule); utf8Module.decodeU8 = function (buffer) { return (new TextDecoder()).decode(buffer); } base64Module.encode = function (st) { var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var i, j, k, x, sx, v1, v2, v3, t1, t2, t3, t4; try { return btoa(st); } catch (e) { console.log("invalid string", e, st); } sx = ""; x = st.length; for (i = 0; i + 3 <= x; ) { v1 = st.charCodeAt(i++) & 255; v2 = st.charCodeAt(i++) & 255; v3 = st.charCodeAt(i++) & 255; t1 = v1 >> 2; t2 = ((v1 & 3) << 4) + (v2 >> 4); t3 = ((v2 & 15) << 2) + (v3 >> 6); t4 = v3 & 63; sx += keyStr.substr(t1, 1) + keyStr.substr(t2, 1) + keyStr.substr(t3, 1) + keyStr.substr(t4, 1); } if (i + 1 == x) { v1 = st.charCodeAt(i++) & 255; t1 = v1 >> 2; t2 = (v1 & 3) << 4; sx += keyStr.substr(t1, 1) + keyStr.substr(t2, 1) + "=="; } else if (i + 2 == x) { v1 = st.charCodeAt(i++) & 255; v2 = st.charCodeAt(i++) & 255; t1 = v1 >> 2; t2 = ((v1 & 3) << 4) + (v2 >> 4); t3 = (v2 & 15) << 2; sx += keyStr.substr(t1, 1) + keyStr.substr(t2, 1) + keyStr.substr(t3, 1) + "="; } return sx; } base64Module.chartovalue = function (c) { if ((65 <= c) && (c <= 90)) return c - 65; if ((97 <= c) && (c <= 122)) return c + 26 - 97; if ((48 <= c) && (c <= 57)) return c + 52 - 48; if (c == 43) return 62; if (c == 47) return 63; return 64; } base64Module.decodeu8 = function (base64Module, stringModule) { return function (st, start, length) { return stringModule.toUint8Array(base64Module.decode(stringModule.fromUint8Array(st, start, length))); /* var i, j, k, x, sx, tag; var t1, t2, t3, t4; var v1, v2, v3; if (start === undefined) start = 0; if (length === undefined) length = st.length - start; if (start + length > st.length) length = st.length - start; x = start + length; if (length <= 0) return new Uint8Array(0); var rawdec = function (a, b, c, d) { t1 = base64Module.chartovalue(a); t2 = base64Module.chartovalue(b); t3 = base64Module.chartovalue(c); t4 = base64Module.chartovalue(d); if (t3 == 64) { v1 = (t1 << 2) + (t2 >> 4); } else if (t4 == 64) { v1 = (t1 << 2) + (t2 >> 4); v2 = ((t2 & 15) << 4) + (t3 >> 2); } else { v1 = (t1 << 2) + (t2 >> 4); v2 = ((t2 & 15) << 4) + (t3 >> 2); v3 = ((t3 & 3) << 6) + t4; } } var decode4 = function () { if (t3 == 64) { return [v1]; } else if (t4 == 64) { return [v1, v2]; } else { return [v1, v2, v3]; } } if ((length % 4) == 0) { tag = []; } else if ((length % 4) == 3) { rawdec(st[x - 3], st[x - 2], st[x - 1], 61); tag = decode4(); } else if ((length % 4) == 2) { rawdec(st[x - 2], st[x - 1], 61, 61); tag = decode4(); } else { rawdec(st[x - 1], 65, 61, 61); tag = decode4(); } sx = new Uint8Array((~~(length / 4)) * 3 + tag.length); for (i = 0; i < tag.length; i++) { sx[sx.length - tag.length + i] = tag[i]; } k = 0; for (i = 0; i < length; i += 4) { if (i + 3 >= length) break; rawdec(st[start + i], st[start + i + 1], st[start + i + 2], st[start + i + 3]); sx[k++] = v1; sx[k++] = v2; sx[k++] = v3; } if (k != sx.length) { console.log("incorrect decode u8 size", k, sx.length); } return sx; */ } } (base64Module, stringModule); base64Module.decode = function (base64Module) { return function (st) { var i, j, k, x, sx, v1, v2, v3, t1, t2, t3, t4; try { sx = atob(st); return sx; } catch (e) { console.log("invalid base64 string", e, st); } sx = ""; x = st.length; for (i = 0; i < x; ) { t1 = base64Module.chartovalue(st.charCodeAt(i++)); t2 = base64Module.chartovalue(st.charCodeAt(i++)); t3 = base64Module.chartovalue(st.charCodeAt(i++)); t4 = base64Module.chartovalue(st.charCodeAt(i++)); if (t3 == 64) { v1 = (t1 << 2) + (t2 >> 4); sx += String.fromCharCode(v1); } else if (t4 == 64) { v1 = (t1 << 2) + (t2 >> 4); v2 = ((t2 & 15) << 4) + (t3 >> 2); sx += String.fromCharCode(v1) + String.fromCharCode(v2); } else { v1 = (t1 << 2) + (t2 >> 4); v2 = ((t2 & 15) << 4) + (t3 >> 2); v3 = ((t3 & 3) << 6) + t4; sx += String.fromCharCode(v1) + String.fromCharCode(v2) + String.fromCharCode(v3); } } return sx; } } (base64Module); md5Module.encode = function (md5Module) { return function (str, start, length) { if (start === undefined) start = 0; if (length === undefined) length = str.length - start; var x = md5Module.str2blks_MD5(str, start, length); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var olda, oldb, oldc, oldd, i; for (i = 0; i < x.length; i += 16) { olda = a; oldb = b; oldc = c; oldd = d; a = md5Module.local_md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); d = md5Module.local_md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); c = md5Module.local_md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); b = md5Module.local_md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); a = md5Module.local_md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); d = md5Module.local_md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); c = md5Module.local_md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); b = md5Module.local_md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); a = md5Module.local_md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); d = md5Module.local_md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); c = md5Module.local_md5_ff(c, d, a, b, x[i+10], 17, -42063); b = md5Module.local_md5_ff(b, c, d, a, x[i+11], 22, -1990404162); a = md5Module.local_md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); d = md5Module.local_md5_ff(d, a, b, c, x[i+13], 12, -40341101); c = md5Module.local_md5_ff(c, d, a, b, x[i+14], 17, -1502002290); b = md5Module.local_md5_ff(b, c, d, a, x[i+15], 22, 1236535329); a = md5Module.local_md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); d = md5Module.local_md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); c = md5Module.local_md5_gg(c, d, a, b, x[i+11], 14, 643717713); b = md5Module.local_md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); a = md5Module.local_md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); d = md5Module.local_md5_gg(d, a, b, c, x[i+10], 9 , 38016083); c = md5Module.local_md5_gg(c, d, a, b, x[i+15], 14, -660478335); b = md5Module.local_md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); a = md5Module.local_md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); d = md5Module.local_md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); c = md5Module.local_md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); b = md5Module.local_md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); a = md5Module.local_md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); d = md5Module.local_md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); c = md5Module.local_md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); b = md5Module.local_md5_gg(b, c, d, a, x[i+12], 20, -1926607734); a = md5Module.local_md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); d = md5Module.local_md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); c = md5Module.local_md5_hh(c, d, a, b, x[i+11], 16, 1839030562); b = md5Module.local_md5_hh(b, c, d, a, x[i+14], 23, -35309556); a = md5Module.local_md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); d = md5Module.local_md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); c = md5Module.local_md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); b = md5Module.local_md5_hh(b, c, d, a, x[i+10], 23, -1094730640); a = md5Module.local_md5_hh(a, b, c, d, x[i+13], 4 , 681279174); d = md5Module.local_md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); c = md5Module.local_md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); b = md5Module.local_md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); a = md5Module.local_md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); d = md5Module.local_md5_hh(d, a, b, c, x[i+12], 11, -421815835); c = md5Module.local_md5_hh(c, d, a, b, x[i+15], 16, 530742520); b = md5Module.local_md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); a = md5Module.local_md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); d = md5Module.local_md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); c = md5Module.local_md5_ii(c, d, a, b, x[i+14], 15, -1416354905); b = md5Module.local_md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); a = md5Module.local_md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); d = md5Module.local_md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); c = md5Module.local_md5_ii(c, d, a, b, x[i+10], 15, -1051523); b = md5Module.local_md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); a = md5Module.local_md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); d = md5Module.local_md5_ii(d, a, b, c, x[i+15], 10, -30611744); c = md5Module.local_md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); b = md5Module.local_md5_ii(b, c, d, a, x[i+13], 21, 1309151649); a = md5Module.local_md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); d = md5Module.local_md5_ii(d, a, b, c, x[i+11], 10, -1120210379); c = md5Module.local_md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); b = md5Module.local_md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); a = md5Module.local_md5_add(a, olda); b = md5Module.local_md5_add(b, oldb); c = md5Module.local_md5_add(c, oldc); d = md5Module.local_md5_add(d, oldd); } return md5Module.local_md5_rhex(a) + md5Module.local_md5_rhex(b) + md5Module.local_md5_rhex(c) + md5Module.local_md5_rhex(d); }; } (md5Module); md5Module.local_md5_hex_chr = "0123456789abcdef"; md5Module.local_md5_rhex = function (md5Module) { return function (num) { var str = ""; var j; for (j = 0; j <= 3; j++) str += md5Module.local_md5_hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) + md5Module.local_md5_hex_chr.charAt((num >> (j * 8)) & 0x0F); return str; } } (md5Module); md5Module.str2blks_MD5 = function (str, start, length) { var nblk, blks, i; nblk = ((length + 8) >> 6) + 1; blks = new Array(nblk * 16); for(i = 0; i < nblk * 16; i++) blks[i] = 0; if (EncodingClass.type.isString(str)) { for(i = 0; i < length; i++) { blks[i >> 2] |= str.charCodeAt(start + i) << ((i % 4) * 8); } } else { for(i = 0; i < length; i++) { blks[i >> 2] |= str[start + i] << ((i % 4) * 8); } } blks[i >> 2] |= 0x80 << ((i % 4) * 8); blks[nblk * 16 - 2] = length * 8; return blks; } md5Module.local_md5_add = function (x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } md5Module.local_md5_rol = function (num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } md5Module.local_md5_cmn = function (md5Module) { return function (q, a, b, x, s, t) { return md5Module.local_md5_add(md5Module.local_md5_rol(md5Module.local_md5_add(md5Module.local_md5_add(a, q), md5Module.local_md5_add(x, t)), s), b); } } (md5Module); md5Module.local_md5_ff = function (md5Module) { return function (a, b, c, d, x, s, t) { return md5Module.local_md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); } } (md5Module); md5Module.local_md5_gg = function (md5Module) { return function (a, b, c, d, x, s, t) { return md5Module.local_md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); } } (md5Module); md5Module.local_md5_hh = function (md5Module) { return function (a, b, c, d, x, s, t) { return md5Module.local_md5_cmn(b ^ c ^ d, a, b, x, s, t); } } (md5Module); md5Module.local_md5_ii = function (md5Module) { return function (a, b, c, d, x, s, t) { return md5Module.local_md5_cmn(c ^ (b | (~d)), a, b, x, s, t); } } (md5Module); var retval = { func: funcModule, type : typeModule, number : numberModule, color : colorModule, string : stringModule, utf8 : utf8Module, base64 : base64Module, md5 : md5Module, pack : packModule }; retval.quickEncrypt = function (utf8Module) { return function (sx) { var i, k, x, st; var i, k, x, st; sx = utf8Module.encode(sx); k = sx.length; st = ""; for (i = 0; i < k; i++) { x = sx.charCodeAt(i); st += String.fromCharCode(65 + (x & 0xF)) + String.fromCharCode(65 + ((x >> 4) & 0xF)); } return st; } } (utf8Module); retval.quickDecrypt = function (utf8Module) { return function (sx) { var i, k, x, y, st; k = sx.length; st = ""; for (i = 0; i < k; i++) { x = sx.charCodeAt(i++) - 65; y = sx.charCodeAt(i) - 65; st += String.fromCharCode((y << 4) + x); } return utf8Module.decode(st); } } (utf8Module); retval.inputvalue = function (str) { var st = ""; str = "" + str; var i; var x = str.length; for (i = 0; i < x; i++) { st = st + "&#" + str.charCodeAt(i) + ";"; } return st; }; retval.textshow = function (str, tabEnabled) { var st = "", t; str = "" + str; var i; var x = str.length; for (i = 0; i < x; i++) { t = str.charCodeAt(i); if ((t != 10) && (t != 13)) { st += "&#" + t + ";"; } else if (t == 10) st += "<br>"; } if (tabEnabled === undefined) tabEnabled = false; if (tabEnabled) return "<pre>" + st + "</pre>"; return st; }; retval.exportCode = function (stringModule) { return function () { var st = [Date2.toString() + ";\r\n" + Geometry.toString() + ";\r\n"]; st.push("var EncodingClass = function () {\r\n"); st.push("var funcModule, typeModule, numberModule, colorModule, stringModule, utf8Module, base64Module, md5Module, packModule;\r\n"); st.push("var core = {};\r\n"); st.push("var ecode = " + stringModule.exportVariable(ecode) + ";\r\n"); st.push("funcModule = " + stringModule.exportVariable(funcModule) + ";\r\n"); st.push("typeModule = " + stringModule.exportVariable(typeModule) + ";\r\n"); st.push("numberModule = " + stringModule.exportVariable(numberModule) + ";\r\n"); st.push("colorModule = " + stringModule.exportVariable(colorModule) + ";\r\n"); st.push("stringModule = " + stringModule.exportVariable(stringModule) + ";\r\n"); st.push("utf8Module = " + stringModule.exportVariable(utf8Module) + ";\r\n"); st.push("base64Module = " + stringModule.exportVariable(base64Module) + ";\r\n"); st.push("md5Module = " + stringModule.exportVariable(md5Module) + ";\r\n"); st.push("packModule = " + stringModule.exportVariable(packModule) + ";\r\n"); st.push("return {func: funcModule, type : typeModule, number : numberModule, color : colorModule, string : stringModule, utf8 : utf8Module, base64 : base64Module, md5 : md5Module, pack : packModule};\r\n"); st.push("} ();\r\n"); return stringModule.merge(st); } } (stringModule); return retval; } (); if (window.ModuleManagerClass !== undefined) { window.ModuleManagerClass.register("EncodingClass"); } }