diff --git a/std/assembly/date.ts b/std/assembly/date.ts index 7d5c228dbb..052bd7ad23 100644 --- a/std/assembly/date.ts +++ b/std/assembly/date.ts @@ -1,7 +1,22 @@ -import { E_VALUEOUTOFRANGE } from "util/error"; +import { E_INVALIDDATE } from "util/error"; import { now as Date_now } from "./bindings/Date"; +// @ts-ignore: decorator +@inline const + MILLIS_PER_DAY = 1000 * 60 * 60 * 24, + MILLIS_PER_HOUR = 1000 * 60 * 60, + MILLIS_PER_MINUTE = 1000 * 60, + MILLIS_PER_SECOND = 1000; + +// ymdFromEpochDays returns values via globals to avoid allocations +// @ts-ignore: decorator +@lazy let _month: i32, _day: i32; + export class Date { + private year: i32 = 0; + private month: i32 = 0; + private day: i32 = 0; + @inline static UTC( year: i32, month: i32 = 0, @@ -11,155 +26,177 @@ export class Date { second: i32 = 0, millisecond: i32 = 0 ): i64 { - return epochMillis(year, month + 1, day, hour, minute, second, millisecond); + if (year >= 0 && year <= 99) year += 1900; + var ms = epochMillis(year, month + 1, day, hour, minute, second, millisecond); + if (invalidDate(ms)) throw new RangeError(E_INVALIDDATE); + return ms; } @inline static now(): i64 { return Date_now(); } - static fromString(dateTimeString: string): Date { - let hour: i32 = 0, - minute: i32 = 0, - second: i32 = 0, - millisecond: i32 = 0; - let dateString: string; + // It can parse only ISO 8601 inputs like YYYY-MM-DDTHH:MM:SS.000Z + @inline static parse(dateString: string): Date { + return this.fromString(dateString); + } - if (dateTimeString.includes("T")) { + static fromString(dateTimeString: string): Date { + if (!dateTimeString.length) throw new RangeError(E_INVALIDDATE); + var + hour: i32 = 0, + min: i32 = 0, + sec: i32 = 0, + ms: i32 = 0; + + var dateString = dateTimeString; + var posT = dateTimeString.indexOf("T"); + if (~posT) { // includes a time component - const parts = dateTimeString.split("T"); - const timeString = parts[1]; + let timeString: string; + dateString = dateTimeString.substring(0, posT); + timeString = dateTimeString.substring(posT + 1); // parse the HH-MM-SS component - const timeParts = timeString.split(":"); + let timeParts = timeString.split(":"); + let len = timeParts.length; + if (len <= 1) throw new RangeError(E_INVALIDDATE); + hour = I32.parseInt(timeParts[0]); - minute = I32.parseInt(timeParts[1]); - if (timeParts[2].includes(".")) { - // includes milliseconds - const secondParts = timeParts[2].split("."); - second = I32.parseInt(secondParts[0]); - millisecond = I32.parseInt(secondParts[1]); - } else { - second = I32.parseInt(timeParts[2]); + min = I32.parseInt(timeParts[1]); + if (len >= 3) { + let secAndMs = timeParts[2]; + let posDot = secAndMs.indexOf("."); + if (~posDot) { + // includes milliseconds + sec = I32.parseInt(secAndMs.substring(0, posDot)); + ms = I32.parseInt(secAndMs.substring(posDot + 1)); + } else { + sec = I32.parseInt(secAndMs); + } } - dateString = parts[0]; - } else { - dateString = dateTimeString; } // parse the YYYY-MM-DD component - const parts = dateString.split("-"); - const year = I32.parseInt( - parts[0].length == 2 ? "19" + parts[0] : parts[0] - ); - const month = I32.parseInt(parts[1]); - const day = I32.parseInt(parts[2]); - - return new Date( - epochMillis(year, month, day, hour, minute, second, millisecond) - ); + var parts = dateString.split("-"); + var year = I32.parseInt(parts[0]); + var month = 1, day = 1; + var len = parts.length; + if (len >= 2) { + month = I32.parseInt(parts[1]); + if (len >= 3) { + day = I32.parseInt(parts[2]); + } + } + return new Date(epochMillis(year, month, day, hour, min, sec, ms)); } - private epochMillis: i64; + constructor(private epochMillis: i64) { + // this differs from JavaScript which prefer return NaN or "Invalid Date" string + // instead throwing exception. + if (invalidDate(epochMillis)) throw new RangeError(E_INVALIDDATE); - constructor(epochMillis: i64) { - this.epochMillis = epochMillis; + this.year = ymdFromEpochDays(i32(floorDiv(epochMillis, MILLIS_PER_DAY))); + this.month = _month; + this.day = _day; } getTime(): i64 { return this.epochMillis; } - setTime(value: i64): i64 { - this.epochMillis = value; - return value; + setTime(time: i64): i64 { + if (invalidDate(time)) throw new RangeError(E_INVALIDDATE); + + this.epochMillis = time; + this.year = ymdFromEpochDays(i32(floorDiv(time, MILLIS_PER_DAY))); + this.month = _month; + this.day = _day; + + return time; } getUTCFullYear(): i32 { - ymdFromEpochDays(i32(this.epochMillis / MILLIS_PER_DAY)); - return year; + return this.year; } getUTCMonth(): i32 { - ymdFromEpochDays(i32(this.epochMillis / MILLIS_PER_DAY)); - return month - 1; + return this.month - 1; } getUTCDate(): i32 { - ymdFromEpochDays(i32(this.epochMillis / MILLIS_PER_DAY)); - return day; + return this.day; + } + + getUTCDay(): i32 { + return dayOfWeek(this.year, this.month, this.day); } getUTCHours(): i32 { - return i32(this.epochMillis % MILLIS_PER_DAY) / MILLIS_PER_HOUR; + return i32(euclidRem(this.epochMillis, MILLIS_PER_DAY)) / MILLIS_PER_HOUR; } getUTCMinutes(): i32 { - return i32(this.epochMillis % MILLIS_PER_HOUR) / MILLIS_PER_MINUTE; + return i32(euclidRem(this.epochMillis, MILLIS_PER_HOUR)) / MILLIS_PER_MINUTE; } getUTCSeconds(): i32 { - return i32(this.epochMillis % MILLIS_PER_MINUTE) / MILLIS_PER_SECOND; + return i32(euclidRem(this.epochMillis, MILLIS_PER_MINUTE)) / MILLIS_PER_SECOND; } getUTCMilliseconds(): i32 { - return i32(this.epochMillis % MILLIS_PER_SECOND); + return i32(euclidRem(this.epochMillis, MILLIS_PER_SECOND)); } - setUTCMilliseconds(value: i32): void { - this.epochMillis += value - this.getUTCMilliseconds(); + setUTCMilliseconds(millis: i32): void { + this.setTime(this.epochMillis + (millis - this.getUTCMilliseconds())); } - setUTCSeconds(value: i32): void { - throwIfNotInRange(value, 0, 59); - this.epochMillis += (value - this.getUTCSeconds()) * MILLIS_PER_SECOND; + setUTCSeconds(seconds: i32): void { + this.setTime(this.epochMillis + (seconds - this.getUTCSeconds()) * MILLIS_PER_SECOND); } - setUTCMinutes(value: i32): void { - throwIfNotInRange(value, 0, 59); - this.epochMillis += (value - this.getUTCMinutes()) * MILLIS_PER_MINUTE; + setUTCMinutes(minutes: i32): void { + this.setTime(this.epochMillis + (minutes - this.getUTCMinutes()) * MILLIS_PER_MINUTE); } - setUTCHours(value: i32): void { - throwIfNotInRange(value, 0, 23); - this.epochMillis += (value - this.getUTCHours()) * MILLIS_PER_HOUR; + setUTCHours(hours: i32): void { + this.setTime(this.epochMillis + (hours - this.getUTCHours()) * MILLIS_PER_HOUR); } - setUTCDate(value: i32): void { - ymdFromEpochDays(i32(this.epochMillis / MILLIS_PER_DAY)); - throwIfNotInRange(value, 1, daysInMonth(year, month)); - const mills = this.epochMillis % MILLIS_PER_DAY; - this.epochMillis = - i64(daysSinceEpoch(year, month, value)) * MILLIS_PER_DAY + mills; + setUTCDate(day: i32): void { + if (this.day == day) return; + var ms = euclidRem(this.epochMillis, MILLIS_PER_DAY); + this.setTime(i64(daysSinceEpoch(this.year, this.month, day)) * MILLIS_PER_DAY + ms); } - setUTCMonth(value: i32): void { - throwIfNotInRange(value, 1, 12); - ymdFromEpochDays(i32(this.epochMillis / MILLIS_PER_DAY)); - const mills = this.epochMillis % MILLIS_PER_DAY; - this.epochMillis = - i64(daysSinceEpoch(year, value + 1, day)) * MILLIS_PER_DAY + mills; + setUTCMonth(month: i32): void { + if (this.month == month) return; + var ms = euclidRem(this.epochMillis, MILLIS_PER_DAY); + this.setTime(i64(daysSinceEpoch(this.year, month + 1, this.day)) * MILLIS_PER_DAY + ms); } - setUTCFullYear(value: i32): void { - ymdFromEpochDays(i32(this.epochMillis / MILLIS_PER_DAY)); - const mills = this.epochMillis % MILLIS_PER_DAY; - this.epochMillis = - i64(daysSinceEpoch(value, month, day)) * MILLIS_PER_DAY + mills; + setUTCFullYear(year: i32): void { + if (this.year == year) return; + var ms = euclidRem(this.epochMillis, MILLIS_PER_DAY); + this.setTime(i64(daysSinceEpoch(year, this.month, this.day)) * MILLIS_PER_DAY + ms); } toISOString(): string { - ymdFromEpochDays(i32(this.epochMillis / MILLIS_PER_DAY)); - - let yearStr = year.toString(); - if (yearStr.length > 4) { - yearStr = "+" + yearStr.padStart(6, "0"); + // TODO: add more low-level helper which combine toString and padStart without extra allocation + var yearStr: string; + var year = this.year; + var isNeg = year < 0; + if (isNeg || year >= 10000) { + yearStr = (isNeg ? "-" : "+") + abs(year).toString().padStart(6, "0"); + } else { + yearStr = year.toString().padStart(4, "0"); } return ( yearStr + "-" + - month.toString().padStart(2, "0") + + this.month.toString().padStart(2, "0") + "-" + - day.toString().padStart(2, "0") + + this.day.toString().padStart(2, "0") + "T" + this.getUTCHours().toString().padStart(2, "0") + ":" + @@ -191,48 +228,54 @@ function epochMillis( ); } -function throwIfNotInRange(value: i32, lower: i32, upper: i32): void { - if (value < lower || value > upper) throw new RangeError(E_VALUEOUTOFRANGE); +// @ts-ignore: decorator +@inline function floorDiv(a: T, b: T): T { + return (a >= 0 ? a : a - b + 1) / b as T; } -const MILLIS_PER_DAY = 1_000 * 60 * 60 * 24; -const MILLIS_PER_HOUR = 1_000 * 60 * 60; -const MILLIS_PER_MINUTE = 1_000 * 60; -const MILLIS_PER_SECOND = 1_000; - -// http://howardhinnant.github.io/date_algorithms.html#is_leap -function isLeap(y: i32): bool { - return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0); +// @ts-ignore: decorator +@inline function euclidRem(a: T, b: T): T { + var m = a % b; + return m + (m < 0 ? b : 0) as T; } -function daysInMonth(year: i32, month: i32): i32 { - return month == 2 - ? 28 + i32(isLeap(year)) - : 30 + ((month + i32(month >= 8)) & 1); +function invalidDate(millis: i64): bool { + // @ts-ignore + return (millis < -8640000000000000) | (millis > 8640000000000000); } -// ymdFromEpochDays returns values via globals to avoid allocations -let year: i32, month: i32, day: i32; // see: http://howardhinnant.github.io/date_algorithms.html#civil_from_days -function ymdFromEpochDays(z: i32): void { +function ymdFromEpochDays(z: i32): i32 { z += 719468; - const era = (z >= 0 ? z : z - 146096) / 146097; - const doe = z - era * 146097; // [0, 146096] - const yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365; // [0, 399] - year = yoe + era * 400; - const doy = doe - (365 * yoe + yoe / 4 - yoe / 100); // [0, 365] - const mp = (5 * doy + 2) / 153; // [0, 11] - day = doy - (153 * mp + 2) / 5 + 1; // [1, 31] - month = mp + (mp < 10 ? 3 : -9); // [1, 12] - year += (month <= 2 ? 1 : 0); + var era = floorDiv(z, 146097); + var doe = z - era * 146097; // [0, 146096] + var yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365; // [0, 399] + var year = yoe + era * 400; + var doy = doe - (365 * yoe + yoe / 4 - yoe / 100); // [0, 365] + var mo = (5 * doy + 2) / 153; // [0, 11] + _day = doy - (153 * mo + 2) / 5 + 1; // [1, 31] + mo += mo < 10 ? 3 : -9; // [1, 12] + _month = mo; + year += u32(mo <= 2); + return year; } // http://howardhinnant.github.io/date_algorithms.html#days_from_civil function daysSinceEpoch(y: i32, m: i32, d: i32): i32 { - y -= m <= 2 ? 1 : 0; - const era = (y >= 0 ? y : y - 399) / 400; - const yoe = y - era * 400; // [0, 399] - const doy = (153 * (m + (m > 2 ? -3 : 9)) + 2) / 5 + d - 1; // [0, 365] - const doe = yoe * 365 + yoe / 4 - yoe / 100 + doy; // [0, 146096] + y -= i32(m <= 2); + var era = floorDiv(y, 400); + var yoe = y - era * 400; // [0, 399] + var doy = (153 * (m + (m > 2 ? -3 : 9)) + 2) / 5 + d - 1; // [0, 365] + var doe = yoe * 365 + yoe / 4 - yoe / 100 + doy; // [0, 146096] return era * 146097 + doe - 719468; } + +// TomohikoSakamoto algorithm from https://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week +function dayOfWeek(year: i32, month: i32, day: i32): i32 { + const tab = memory.data([0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]); + + year -= i32(month < 3); + year += year / 4 - year / 100 + year / 400; + month = load(tab + month - 1); + return euclidRem(year + month + day, 7); +} diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 36298906ef..d33ed93d55 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1723,7 +1723,9 @@ declare class Date { ): i64; /** Returns the current UTC timestamp in milliseconds. */ static now(): i64; - static fromString(dateStr: string): Date; + /** Parses a string representation of a date, and returns the number of milliseconds since January 1, 1970, 00:00:00 UTC. */ + static parse(dateString: string): Date; + static fromString(dateString: string): Date; /** Constructs a new date object from an UTC timestamp in milliseconds. */ constructor(value: i64); /** Returns the UTC timestamp of this date in milliseconds. */ @@ -1734,6 +1736,7 @@ declare class Date { getUTCFullYear(): i32; getUTCMonth(): i32; getUTCDate(): i32; + getUTCDay(): i32; getUTCHours(): i32; getUTCMinutes(): i32; getUTCSeconds(): i32; diff --git a/std/assembly/util/error.ts b/std/assembly/util/error.ts index bc3bb70d9c..b5a496e85a 100644 --- a/std/assembly/util/error.ts +++ b/std/assembly/util/error.ts @@ -48,3 +48,7 @@ export const E_NOT_PINNED: string = "Object is not pinned"; // @ts-ignore: decorator @lazy @inline export const E_URI_MALFORMED: string = "URI malformed"; + +// @ts-ignore: decorator +@lazy @inline +export const E_INVALIDDATE: string = "Invalid Date"; diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index 1c0f4560f7..7f96899c9a 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -6,15 +6,15 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/date/year (mut i32) (i32.const 0)) - (global $~lib/date/month (mut i32) (i32.const 0)) - (global $~lib/date/day (mut i32) (i32.const 0)) + (global $~lib/date/_day (mut i32) (i32.const 0)) + (global $~lib/date/_month (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -25,39 +25,40 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19540)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20420)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) ",") - (data (i32.const 1048) "\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") - (data (i32.const 1084) "<") - (data (i32.const 1096) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1148) "<") - (data (i32.const 1160) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") - (data (i32.const 1276) "<") - (data (i32.const 1288) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1340) ",") - (data (i32.const 1352) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1420) "<") - (data (i32.const 1432) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1484) "<") - (data (i32.const 1496) "\01\00\00\00$\00\00\00V\00a\00l\00u\00e\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1548) ",") - (data (i32.const 1560) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s") - (data (i32.const 1596) "|") - (data (i32.const 1608) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1724) "<") - (data (i32.const 1736) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1788) "\1c") - (data (i32.const 1800) "\01\00\00\00\02\00\00\000") - (data (i32.const 1820) "\\") - (data (i32.const 1832) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1916) "\1c") - (data (i32.const 1928) "\01\00\00\00\02\00\00\00+") - (data (i32.const 1948) "\1c") - (data (i32.const 1960) "\01") + (data (i32.const 1048) "\01\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e") + (data (i32.const 1084) ",") + (data (i32.const 1096) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s") + (data (i32.const 1132) ",") + (data (i32.const 1144) "\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") + (data (i32.const 1180) "<") + (data (i32.const 1192) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1244) "<") + (data (i32.const 1256) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data (i32.const 1372) "<") + (data (i32.const 1384) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 1436) ",") + (data (i32.const 1448) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1516) "<") + (data (i32.const 1528) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 1581) "\03\02\05\00\03\05\01\04\06\02\04") + (data (i32.const 1596) "\1c") + (data (i32.const 1608) "\01\00\00\00\02\00\00\00-") + (data (i32.const 1628) "\1c") + (data (i32.const 1640) "\01\00\00\00\02\00\00\00+") + (data (i32.const 1660) "|") + (data (i32.const 1672) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 1788) "<") + (data (i32.const 1800) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 1852) "\1c") + (data (i32.const 1864) "\01\00\00\00\02\00\00\000") + (data (i32.const 1884) "\\") + (data (i32.const 1896) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") (data (i32.const 1980) "\1c") - (data (i32.const 1992) "\01\00\00\00\02\00\00\00-") + (data (i32.const 1992) "\01") (data (i32.const 2012) "\1c") (data (i32.const 2024) "\01\00\00\00\02\00\00\00T") (data (i32.const 2044) "\1c") @@ -67,37 +68,61 @@ (data (i32.const 2108) "\1c") (data (i32.const 2120) "\01\00\00\00\02\00\00\00Z") (data (i32.const 2140) "L") - (data (i32.const 2152) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") + (data (i32.const 2152) "\01\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") (data (i32.const 2220) "L") - (data (i32.const 2232) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") + (data (i32.const 2232) "\01\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") (data (i32.const 2300) "L") - (data (i32.const 2312) "\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") - (data (i32.const 2380) ",") - (data (i32.const 2392) "\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") - (data (i32.const 2428) ",") - (data (i32.const 2440) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 2476) ",") - (data (i32.const 2488) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 2524) "|") - (data (i32.const 2536) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 2652) "\1c") - (data (i32.const 2664) "\01\00\00\00\04\00\00\001\009") - (data (i32.const 2684) ",") - (data (i32.const 2696) "\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") - (data (i32.const 2732) ",") - (data (i32.const 2744) "\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") - (data (i32.const 2780) ",") - (data (i32.const 2792) "\01\00\00\00\14\00\00\001\009\007\006\00-\000\004\00-\000\002") - (data (i32.const 2828) ",") - (data (i32.const 2840) "\01\00\00\00\10\00\00\007\006\00-\000\004\00-\000\002") - (data (i32.const 2876) "<") - (data (i32.const 2888) "\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") - (data (i32.const 2940) "L") - (data (i32.const 2952) "\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") - (data (i32.const 3020) "L") - (data (i32.const 3032) "\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") - (data (i32.const 3104) "\06\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 3132) " \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t") + (data (i32.const 2312) "\01\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z") + (data (i32.const 2380) "L") + (data (i32.const 2392) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") + (data (i32.const 2460) "L") + (data (i32.const 2472) "\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") + (data (i32.const 2540) "L") + (data (i32.const 2552) "\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") + (data (i32.const 2620) "L") + (data (i32.const 2632) "\01\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data (i32.const 2700) "L") + (data (i32.const 2712) "\01\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 2780) "L") + (data (i32.const 2792) "\01\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z") + (data (i32.const 2860) ",") + (data (i32.const 2872) "\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") + (data (i32.const 2908) ",") + (data (i32.const 2920) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 2956) ",") + (data (i32.const 2968) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 3004) "|") + (data (i32.const 3016) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 3132) ",") + (data (i32.const 3144) "\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") + (data (i32.const 3180) ",") + (data (i32.const 3192) "\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") + (data (i32.const 3228) "<") + (data (i32.const 3240) "\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") + (data (i32.const 3292) "L") + (data (i32.const 3304) "\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") + (data (i32.const 3372) "L") + (data (i32.const 3384) "\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") + (data (i32.const 3452) "\1c") + (data (i32.const 3464) "\01\00\00\00\08\00\00\000\000\000\000") + (data (i32.const 3484) "\1c") + (data (i32.const 3496) "\01\00\00\00\08\00\00\000\000\000\001") + (data (i32.const 3516) "\1c") + (data (i32.const 3528) "\01\00\00\00\08\00\00\001\009\007\006") + (data (i32.const 3548) ",") + (data (i32.const 3560) "\01\00\00\00\0e\00\00\001\009\007\006\00-\000\002") + (data (i32.const 3596) "<") + (data (i32.const 3608) "\01\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004") + (data (i32.const 3660) "L") + (data (i32.const 3672) "\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 3740) "L") + (data (i32.const 3752) "\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data (i32.const 3820) "L") + (data (i32.const 3832) "\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data (i32.const 3900) "L") + (data (i32.const 3912) "\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z") + (data (i32.const 3984) "\06\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 4012) " \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/date/daysSinceEpoch (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -134,7 +159,7 @@ i32.const 2 i32.add i32.const 5 - i32.div_s + i32.div_u i32.add local.get $0 local.get $3 @@ -145,12 +170,12 @@ i32.const 365 i32.mul local.get $0 - i32.const 4 - i32.div_s + i32.const 2 + i32.shr_u i32.add local.get $0 i32.const 100 - i32.div_s + i32.div_u i32.sub i32.add i32.add @@ -184,6 +209,107 @@ i64.add i64.add ) + (func $~lib/date/invalidDate (param $0 i64) (result i32) + local.get $0 + i64.const -8640000000000000 + i64.lt_s + local.get $0 + i64.const 8640000000000000 + i64.gt_s + i32.or + ) + (func $~lib/date/ymdFromEpochDays (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 719468 + i32.add + local.tee $0 + local.get $0 + i32.const 146096 + i32.sub + local.get $0 + i32.const 0 + i32.ge_s + select + i32.const 146097 + i32.div_s + local.set $2 + local.get $0 + local.get $2 + i32.const 146097 + i32.mul + i32.sub + local.tee $0 + local.get $0 + i32.const 1460 + i32.div_u + i32.sub + local.get $0 + i32.const 36524 + i32.div_u + i32.add + local.get $0 + i32.const 146096 + i32.div_u + i32.sub + i32.const 365 + i32.div_u + local.set $1 + local.get $0 + local.get $1 + i32.const 365 + i32.mul + local.get $1 + i32.const 2 + i32.shr_u + i32.add + local.get $1 + i32.const 100 + i32.div_u + i32.sub + i32.sub + local.tee $3 + i32.const 5 + i32.mul + i32.const 2 + i32.add + i32.const 153 + i32.div_s + local.set $0 + local.get $3 + local.get $0 + i32.const 153 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + i32.sub + i32.const 1 + i32.add + global.set $~lib/date/_day + local.get $0 + i32.const 3 + i32.const -9 + local.get $0 + i32.const 10 + i32.lt_s + select + i32.add + local.tee $0 + global.set $~lib/date/_month + local.get $1 + local.get $2 + i32.const 400 + i32.mul + i32.add + local.get $0 + i32.const 2 + i32.le_s + i32.add + ) (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 local.get $0 @@ -196,17 +322,17 @@ (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - i32.const 1296 + i32.const 1392 call $~lib/rt/itcms/__visit - i32.const 1504 + i32.const 2928 call $~lib/rt/itcms/__visit - i32.const 2448 + i32.const 3024 call $~lib/rt/itcms/__visit - i32.const 2544 + i32.const 1200 call $~lib/rt/itcms/__visit - i32.const 1104 + i32.const 1056 call $~lib/rt/itcms/__visit - i32.const 1840 + i32.const 1904 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -227,7 +353,7 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1264 i32.const 159 i32.const 16 call $~lib/builtins/abort @@ -299,7 +425,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1264 i32.const 147 i32.const 30 call $~lib/builtins/abort @@ -318,7 +444,7 @@ if i32.const 0 local.get $0 - i32.const 19540 + i32.const 20420 i32.lt_u local.get $0 i32.load offset=8 @@ -326,7 +452,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1264 i32.const 127 i32.const 18 call $~lib/builtins/abort @@ -340,7 +466,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1264 i32.const 131 i32.const 16 call $~lib/builtins/abort @@ -364,12 +490,12 @@ i32.const 1 else local.get $1 - i32.const 3104 + i32.const 3984 i32.load i32.gt_u if - i32.const 1296 - i32.const 1360 + i32.const 1392 + i32.const 1456 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -378,7 +504,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 3108 + i32.const 3988 i32.add i32.load i32.const 32 @@ -429,7 +555,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -443,7 +569,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -493,7 +619,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -583,7 +709,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -597,7 +723,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -658,7 +784,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -691,7 +817,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -706,7 +832,7 @@ i32.ne if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -758,7 +884,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -828,7 +954,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -856,7 +982,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -884,7 +1010,7 @@ i32.lt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -952,10 +1078,10 @@ if unreachable end - i32.const 19552 + i32.const 20432 i32.const 0 i32.store - i32.const 21120 + i32.const 22000 i32.const 0 i32.store loop $for-loop|0 @@ -966,7 +1092,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 19552 + i32.const 20432 i32.add i32.const 0 i32.store offset=4 @@ -984,7 +1110,7 @@ i32.add i32.const 2 i32.shl - i32.const 19552 + i32.const 20432 i32.add i32.const 0 i32.store offset=96 @@ -1002,13 +1128,13 @@ br $for-loop|0 end end - i32.const 19552 - i32.const 21124 + i32.const 20432 + i32.const 22004 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 19552 + i32.const 20432 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1087,7 +1213,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 19540 + i32.const 20420 i32.lt_u if local.get $0 @@ -1170,14 +1296,14 @@ i32.ne if i32.const 0 - i32.const 1168 + i32.const 1264 i32.const 228 i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 19540 + i32.const 20420 i32.lt_u if local.get $0 @@ -1200,7 +1326,7 @@ i32.const 4 i32.add local.tee $1 - i32.const 19540 + i32.const 20420 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1232,7 +1358,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -1320,7 +1446,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1372,7 +1498,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -1402,8 +1528,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 1104 - i32.const 1440 + i32.const 1200 + i32.const 1536 i32.const 458 i32.const 30 call $~lib/builtins/abort @@ -1494,7 +1620,7 @@ i32.eqz if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 496 i32.const 16 call $~lib/builtins/abort @@ -1509,7 +1635,7 @@ i32.gt_u if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 498 i32.const 14 call $~lib/builtins/abort @@ -1528,7 +1654,7 @@ i32.and if i32.const 0 - i32.const 1440 + i32.const 1536 i32.const 357 i32.const 14 call $~lib/builtins/abort @@ -1775,8 +1901,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 1104 - i32.const 1168 + i32.const 1200 + i32.const 1264 i32.const 260 i32.const 31 call $~lib/builtins/abort @@ -1865,195 +1991,127 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/date/ymdFromEpochDays (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 719468 - i32.add - local.tee $0 - local.get $0 - i32.const 146096 - i32.sub - local.get $0 - i32.const 0 - i32.ge_s - select - i32.const 146097 - i32.div_s - local.set $2 - local.get $0 - local.get $2 - i32.const 146097 - i32.mul - i32.sub - local.tee $0 - local.get $0 - i32.const 1460 - i32.div_s - i32.sub - local.get $0 - i32.const 36524 - i32.div_s - i32.add - local.get $0 - i32.const 146096 - i32.div_s - i32.sub - i32.const 365 - i32.div_s - local.tee $1 - local.get $2 - i32.const 400 - i32.mul - i32.add - global.set $~lib/date/year + (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) + local.get $1 + call $~lib/date/invalidDate + if + i32.const 1056 + i32.const 1104 + i32.const 107 + i32.const 28 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 - i32.const 365 - i32.mul + i64.store offset=16 + local.get $0 local.get $1 - i32.const 4 - i32.div_s - i32.add local.get $1 - i32.const 100 - i32.div_s - i32.sub - i32.sub - local.tee $1 - i32.const 5 - i32.mul - i32.const 2 - i32.add - i32.const 153 - i32.div_s - local.set $0 + i64.const 86399999 + i64.sub local.get $1 - local.get $0 - i32.const 153 - i32.mul - i32.const 2 - i32.add - i32.const 5 - i32.div_s - i32.sub - i32.const 1 - i32.add - global.set $~lib/date/day - local.get $0 - i32.const 3 - i32.const -9 - local.get $0 - i32.const 10 - i32.lt_s + i64.const 0 + i64.ge_s select - i32.add - global.set $~lib/date/month - global.get $~lib/date/year - global.get $~lib/date/month - i32.const 2 - i32.le_s - i32.add - global.set $~lib/date/year - ) - (func $~lib/date/Date#getUTCFullYear (param $0 i32) (result i32) - local.get $0 - i64.load i64.const 86400000 i64.div_s i32.wrap_i64 call $~lib/date/ymdFromEpochDays - global.get $~lib/date/year - ) - (func $~lib/date/Date#getUTCMonth (param $0 i32) (result i32) + i32.store local.get $0 - i64.load - i64.const 86400000 - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - global.get $~lib/date/month - i32.const 1 - i32.sub - ) - (func $~lib/date/Date#getUTCDate (param $0 i32) (result i32) + global.get $~lib/date/_month + i32.store offset=4 local.get $0 - i64.load - i64.const 86400000 - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - global.get $~lib/date/day + global.get $~lib/date/_day + i32.store offset=8 ) (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) + (local $1 i64) local.get $0 - i64.load + i64.load offset=16 i64.const 86400000 i64.rem_s + local.tee $1 + i64.const 86400000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add i32.wrap_i64 i32.const 3600000 i32.div_s ) (func $~lib/date/Date#getUTCMinutes (param $0 i32) (result i32) + (local $1 i64) local.get $0 - i64.load + i64.load offset=16 i64.const 3600000 i64.rem_s + local.tee $1 + i64.const 3600000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add i32.wrap_i64 i32.const 60000 i32.div_s ) (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32) + (local $1 i64) local.get $0 - i64.load + i64.load offset=16 i64.const 60000 i64.rem_s + local.tee $1 + i64.const 60000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add i32.wrap_i64 i32.const 1000 i32.div_s ) + (func $~lib/date/Date#getUTCMilliseconds (param $0 i32) (result i32) + (local $1 i64) + local.get $0 + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.tee $1 + i64.const 1000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + ) (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) local.get $0 local.get $0 - i64.load + i64.load offset=16 local.get $1 local.get $0 - i64.load - i64.const 1000 - i64.rem_s - i32.wrap_i64 + call $~lib/date/Date#getUTCMilliseconds i32.sub i64.extend_i32_s i64.add - i64.store + call $~lib/date/Date#setTime ) - (func $~lib/date/throwIfNotInRange (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 1 + (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) local.get $0 - local.get $2 - i32.gt_s local.get $0 - local.get $1 - i32.lt_s - select - if - i32.const 1504 - i32.const 1568 - i32.const 195 - i32.const 39 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) - local.get $1 - i32.const 0 - i32.const 59 - call $~lib/date/throwIfNotInRange - local.get $0 - local.get $0 - i64.load + i64.load offset=16 local.get $1 local.get $0 call $~lib/date/Date#getUTCSeconds @@ -2062,16 +2120,12 @@ i32.mul i64.extend_i32_s i64.add - i64.store + call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) - local.get $1 - i32.const 0 - i32.const 59 - call $~lib/date/throwIfNotInRange local.get $0 local.get $0 - i64.load + i64.load offset=16 local.get $1 local.get $0 call $~lib/date/Date#getUTCMinutes @@ -2080,16 +2134,12 @@ i32.mul i64.extend_i32_s i64.add - i64.store + call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) - local.get $1 - i32.const 0 - i32.const 23 - call $~lib/date/throwIfNotInRange local.get $0 local.get $0 - i64.load + i64.load offset=16 local.get $1 local.get $0 call $~lib/date/Date#getUTCHours @@ -2098,114 +2148,155 @@ i32.mul i64.extend_i32_s i64.add - i64.store + call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) - (local $2 i32) + (local $2 i64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.eq + if + return + end local.get $0 - i64.load i64.const 86400000 - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - local.get $1 - i32.const 1 - i32.const 0 - i32.const 1 - global.get $~lib/date/year + i64.const 0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s local.tee $2 - i32.const 400 - i32.rem_s - i32.eqz - local.get $2 - i32.const 100 - i32.rem_s - select - local.get $2 - i32.const 3 - i32.and + i64.const 0 + i64.lt_s select - i32.const 28 - i32.add - global.get $~lib/date/month - local.tee $2 local.get $2 - i32.const 8 - i32.ge_s - i32.add - i32.const 1 - i32.and - i32.const 30 - i32.add - local.get $2 - i32.const 2 - i32.eq - select - call $~lib/date/throwIfNotInRange + i64.add local.get $0 + i32.load local.get $0 - i64.load - i64.const 86400000 - i64.rem_s - global.get $~lib/date/year - global.get $~lib/date/month + i32.load offset=4 local.get $1 call $~lib/date/daysSinceEpoch i64.extend_i32_s i64.const 86400000 i64.mul i64.add - i64.store + call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) + (local $2 i64) local.get $1 - i32.const 1 - i32.const 12 - call $~lib/date/throwIfNotInRange local.get $0 - i64.load - i64.const 86400000 - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays + i32.load offset=4 + i32.eq + if + return + end local.get $0 + i64.const 86400000 + i64.const 0 local.get $0 - i64.load + i64.load offset=16 i64.const 86400000 i64.rem_s - global.get $~lib/date/year + local.tee $2 + i64.const 0 + i64.lt_s + select + local.get $2 + i64.add + local.get $0 + i32.load local.get $1 i32.const 1 i32.add - global.get $~lib/date/day + local.get $0 + i32.load offset=8 call $~lib/date/daysSinceEpoch i64.extend_i32_s i64.const 86400000 i64.mul i64.add - i64.store + call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) + (local $2 i64) + local.get $1 local.get $0 - i64.load - i64.const 86400000 - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays + i32.load + i32.eq + if + return + end local.get $0 + i64.const 86400000 + i64.const 0 local.get $0 - i64.load + i64.load offset=16 i64.const 86400000 i64.rem_s + local.tee $2 + i64.const 0 + i64.lt_s + select + local.get $2 + i64.add local.get $1 - global.get $~lib/date/month - global.get $~lib/date/day + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 call $~lib/date/daysSinceEpoch i64.extend_i32_s i64.const 86400000 i64.mul i64.add - i64.store + call $~lib/date/Date#setTime + ) + (func $~lib/date/Date#getUTCDay (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.lt_s + i32.sub + local.set $1 + local.get $0 + i32.load offset=8 + local.get $2 + i32.const 1579 + i32.add + i32.load8_u + local.get $1 + local.get $1 + i32.const 4 + i32.div_s + local.get $1 + i32.const 100 + i32.div_s + i32.sub + local.get $1 + i32.const 400 + i32.div_s + i32.add + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 7 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.add ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) @@ -2227,7 +2318,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1808 + i32.const 1872 local.set $0 br $__inlined_func$~lib/util/number/itoa32 end @@ -2537,7 +2628,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1968 + i32.const 2000 local.set $0 br $__inlined_func$~lib/string/String#concat end @@ -2767,7 +2858,7 @@ i32.eqz if i32.const 0 - i32.const 1168 + i32.const 1264 i32.const 294 i32.const 14 call $~lib/builtins/abort @@ -2850,8 +2941,8 @@ i32.const 268435455 i32.gt_u if - i32.const 2448 - i32.const 2496 + i32.const 2928 + i32.const 2976 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -3295,11 +3386,11 @@ ) (func $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 3156 + i32.const 4036 i32.lt_s if - i32.const 19568 - i32.const 19616 + i32.const 20448 + i32.const 20496 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3309,6 +3400,8 @@ (func $~lib/date/Date#toISOString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 112 i32.sub @@ -3357,31 +3450,41 @@ i64.const 0 i64.store offset=104 local.get $0 - i64.load - i64.const 86400000 - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - global.get $~lib/memory/__stack_pointer - global.get $~lib/date/year - call $~lib/number/I32#toString + i32.load local.tee $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 0 + i32.lt_s + local.set $2 i32.const 1 - i32.shr_u - i32.const 4 - i32.gt_u + local.get $1 + i32.const 10000 + i32.ge_s + local.get $2 + select if global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 1936 - i32.store offset=4 + i32.const 1616 + i32.const 1648 + local.get $2 + select + local.tee $2 + i32.store + local.get $1 + i32.const 31 + i32.shr_s + local.tee $4 + local.get $1 + local.get $4 + i32.add + i32.xor + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 1808 + i32.const 1872 i32.store offset=12 local.get $1 i32.const 6 @@ -3389,31 +3492,48 @@ local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=8 - i32.const 1936 + i32.store offset=4 + local.get $2 local.get $1 call $~lib/string/String.__concat local.tee $1 + i32.store offset=16 + else + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store offset=8 + local.get $1 + i32.const 4 + call $~lib/string/String#padStart + local.tee $1 + i32.store offset=16 end global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 1616 i32.store offset=100 local.get $1 - i32.const 2000 + i32.const 1616 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=92 - global.get $~lib/date/month + local.get $0 + i32.load offset=4 call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=104 global.get $~lib/memory/__stack_pointer - i32.const 1808 + i32.const 1872 i32.store offset=108 local.get $2 i32.const 2 @@ -3430,23 +3550,24 @@ local.get $1 i32.store offset=84 global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 1616 i32.store offset=88 local.get $1 - i32.const 2000 + i32.const 1616 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=76 - global.get $~lib/date/day + local.get $0 + i32.load offset=8 call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=84 global.get $~lib/memory/__stack_pointer - i32.const 1808 + i32.const 1872 i32.store offset=92 local.get $2 i32.const 2 @@ -3480,7 +3601,7 @@ local.get $2 i32.store offset=68 global.get $~lib/memory/__stack_pointer - i32.const 1808 + i32.const 1872 i32.store offset=76 local.get $2 i32.const 2 @@ -3514,7 +3635,7 @@ local.get $2 i32.store offset=52 global.get $~lib/memory/__stack_pointer - i32.const 1808 + i32.const 1872 i32.store offset=60 local.get $2 i32.const 2 @@ -3548,7 +3669,7 @@ local.get $2 i32.store offset=36 global.get $~lib/memory/__stack_pointer - i32.const 1808 + i32.const 1872 i32.store offset=44 local.get $2 i32.const 2 @@ -3573,19 +3694,16 @@ local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 + i32.store offset=8 local.get $0 - i64.load - i64.const 1000 - i64.rem_s - i32.wrap_i64 + call $~lib/date/Date#getUTCMilliseconds call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 1808 + i32.const 1872 i32.store offset=28 local.get $0 i32.const 3 @@ -3600,10 +3718,10 @@ local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer i32.const 2128 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.const 2128 call $~lib/string/String.__concat @@ -3689,7 +3807,7 @@ i32.store offset=4 local.get $0 i32.load offset=4 - i32.const 1968 + i32.const 2000 i32.store br $folding-inner1 end @@ -3798,10 +3916,10 @@ call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer - i32.const 1968 + i32.const 2000 i32.store offset=20 local.get $2 - i32.const 1968 + i32.const 2000 call $~lib/array/Array<~lib/string/String>#push end local.get $9 @@ -3855,10 +3973,10 @@ call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer - i32.const 1968 + i32.const 2000 i32.store offset=20 local.get $2 - i32.const 1968 + i32.const 2000 call $~lib/array/Array<~lib/string/String>#push end global.get $~lib/memory/__stack_pointer @@ -3892,8 +4010,10 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 28 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -3907,8 +4027,25 @@ i64.const 0 i64.store offset=16 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 + i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.eqz + if + i32.const 1056 + i32.const 1104 + i32.const 45 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 2032 i32.store @@ -3916,22 +4053,24 @@ i32.const 2032 i32.const 0 call $~lib/string/String#indexOf + local.tee $2 i32.const -1 - i32.ne + i32.xor if - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2032 - call $~lib/string/String#split + i32.const 0 + local.get $2 + call $~lib/string/String#substring local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + local.get $2 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get + i32.add + i32.const 2147483647 + call $~lib/string/String#substring local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -3944,17 +4083,21 @@ local.tee $0 i32.store offset=12 local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + i32.load offset=12 + local.tee $2 local.get $2 - call $~lib/util/string/strtol - local.set $3 - local.get $0 i32.const 1 + i32.le_s + if + i32.const 1056 + i32.const 1104 + i32.const 62 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.set $2 global.get $~lib/memory/__stack_pointer @@ -3962,162 +4105,145 @@ i32.store offset=16 local.get $2 call $~lib/util/string/strtol - local.set $4 + local.set $5 local.get $0 - i32.const 2 + i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 2096 - i32.store local.get $2 - i32.const 2096 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne + call $~lib/util/string/strtol + local.set $6 + i32.const 3 + i32.ge_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + local.tee $0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 2096 i32.store local.get $0 i32.const 2096 - call $~lib/string/String#split - local.tee $0 - i32.store offset=20 - local.get $0 i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $2 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $0 - call $~lib/util/string/strtol - local.set $5 - else - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $0 - call $~lib/util/string/strtol - local.set $2 + call $~lib/string/String#indexOf + local.tee $2 + i32.const -1 + i32.xor + if + local.get $0 + i32.const 0 + local.get $2 + call $~lib/string/String#substring + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + call $~lib/util/string/strtol + local.set $3 + local.get $0 + local.get $2 + i32.const 1 + i32.add + i32.const 2147483647 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + call $~lib/util/string/strtol + local.set $7 + else + local.get $0 + call $~lib/util/string/strtol + local.set $3 + end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.store offset=24 end global.get $~lib/memory/__stack_pointer - i32.const 2000 + i32.const 1616 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2000 + local.get $1 + i32.const 1616 call $~lib/string/String#split - local.tee $0 - i32.store offset=12 - local.get $0 + local.tee $2 + i32.store offset=24 + local.get $2 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 + local.get $0 + i32.store offset=16 + local.get $0 + call $~lib/util/string/strtol i32.const 1 - i32.shr_u + local.set $1 + local.get $2 + i32.load offset=12 + local.tee $0 + local.set $8 + local.get $0 i32.const 2 - i32.eq + i32.ge_s if (result i32) + local.get $2 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 2672 - i32.store local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get + i32.store offset=16 + local.get $0 + call $~lib/util/string/strtol local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=28 - i32.const 2672 - local.get $1 - call $~lib/string/String.__concat + local.get $8 + i32.const 3 + i32.ge_s + if (result i32) + local.get $2 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + call $~lib/util/string/strtol + else + i32.const 1 + end else - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get + i32.const 1 end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - call $~lib/util/string/strtol - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - call $~lib/util/string/strtol - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + local.get $1 local.get $0 - call $~lib/util/string/strtol - local.get $3 - local.get $4 - local.get $2 local.get $5 + local.get $6 + local.get $3 + local.get $7 call $~lib/date/epochMillis call $~lib/date/Date#constructor global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 28 i32.add global.set $~lib/memory/__stack_pointer ) (func $start:std/date (local $0 i32) (local $1 i64) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -4125,958 +4251,2186 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 1970 - i32.const 1 - i32.const 1 - i32.const 0 - i32.const 0 - i32.const 0 - i32.const 0 - call $~lib/date/epochMillis - i64.eqz - i32.eqz - if + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + block $folding-inner0 + i32.const 1970 + i32.const 1 + i32.const 1 i32.const 0 - i32.const 1056 - i32.const 3 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1970 - i32.const 1 - i32.const 1 - i32.const 0 - i32.const 0 - i32.const 0 - i32.const 0 - call $~lib/date/epochMillis - i64.eqz - i32.eqz - if i32.const 0 - i32.const 1056 - i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2018 - i32.const 11 - i32.const 10 - i32.const 11 - i32.const 0 - i32.const 0 - i32.const 1 - call $~lib/date/epochMillis - i64.const 1541847600001 - i64.ne - if i32.const 0 - i32.const 1056 - i32.const 7 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 19540 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1216 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 1248 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 1392 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i64.const 1541847600001 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - i64.load - i64.const 1541847600001 - i64.ne - if i32.const 0 - i32.const 1056 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1541847600002 - i64.store - local.get $0 - i64.load - i64.const 1541847600002 - i64.ne - if + call $~lib/date/epochMillis + local.tee $1 + call $~lib/date/invalidDate + br_if $folding-inner0 + local.get $1 + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1970 + i32.const 1 + i32.const 1 i32.const 0 - i32.const 1056 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 5918283958183706 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#getUTCFullYear - i32.const 189512 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCMonth - i32.const 11 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 26 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCDate - i32.const 14 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 22 - i32.ne - if + call $~lib/date/epochMillis + local.tee $1 + call $~lib/date/invalidDate + br_if $folding-inner0 + local.get $1 + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1970 + i32.const 1 + i32.const 1 i32.const 0 - i32.const 1056 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 9 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 43 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 30 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.load - i64.const 1000 - i64.rem_s - i32.wrap_i64 - i32.const 706 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 31 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 123814991274 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#getUTCFullYear - i32.const 1973 - i32.ne - if + call $~lib/date/epochMillis + local.tee $1 + call $~lib/date/invalidDate + br_if $folding-inner0 + local.get $1 + i64.eqz + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1990 + i32.const 1 + i32.const 1 i32.const 0 - i32.const 1056 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCMonth - i32.const 11 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCDate - i32.const 4 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 1 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 3 - i32.ne - if + call $~lib/date/epochMillis + local.tee $1 + call $~lib/date/invalidDate + br_if $folding-inner0 + local.get $1 + i64.const 631152000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -90 + i32.const 1 + i32.const 1 i32.const 0 - i32.const 1056 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 11 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.load - i64.const 1000 - i64.rem_s - i32.wrap_i64 - i32.const 274 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 399464523963984 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - i64.load - i64.const 1000 - i64.rem_s - i32.wrap_i64 - i32.const 984 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - call $~lib/date/Date#setUTCMilliseconds - local.get $0 - i64.load - i64.const 1000 - i64.rem_s - i32.wrap_i64 - i32.const 12 - i32.ne - if + call $~lib/date/epochMillis + local.tee $1 + call $~lib/date/invalidDate + br_if $folding-inner0 + local.get $1 + i64.const -65007360000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 7 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2018 + i32.const 11 + i32.const 10 + i32.const 11 i32.const 0 - i32.const 1056 - i32.const 51 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 568 - call $~lib/date/Date#setUTCMilliseconds - local.get $0 - i64.load - i64.const 1000 - i64.rem_s - i32.wrap_i64 - i32.const 568 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 53 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/date/Date#setUTCMilliseconds - local.get $0 - i32.const 999 - call $~lib/date/Date#setUTCMilliseconds - global.get $~lib/memory/__stack_pointer - i64.const 372027318331986 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 31 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - call $~lib/date/Date#setUTCSeconds - local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 50 - call $~lib/date/Date#setUTCSeconds - local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/date/Date#setUTCSeconds - local.get $0 - i32.const 59 - call $~lib/date/Date#setUTCSeconds - global.get $~lib/memory/__stack_pointer - i64.const 372027318331986 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 75 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - call $~lib/date/Date#setUTCMinutes - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 12 - i32.ne - if + i32.const 1 + call $~lib/date/epochMillis + local.tee $1 + call $~lib/date/invalidDate + br_if $folding-inner0 + local.get $1 + i64.const 1541847600001 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 275760 + i32.const 9 + i32.const 13 i32.const 0 - i32.const 1056 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 50 - call $~lib/date/Date#setUTCMinutes - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 50 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/date/Date#setUTCMinutes - local.get $0 - i32.const 59 - call $~lib/date/Date#setUTCMinutes - global.get $~lib/memory/__stack_pointer - i64.const 372027318331986 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 17 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - call $~lib/date/Date#setUTCHours - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 12 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 90 + call $~lib/date/epochMillis + local.tee $1 + call $~lib/date/invalidDate + br_if $folding-inner0 + local.get $1 + i64.const 8640000000000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 20420 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1312 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1488 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i64.const 1541847600001 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 1541847600001 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.const 1541847600002 + call $~lib/date/Date#setTime + local.get $0 + i64.load offset=16 + i64.const 1541847600002 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 5918283958183706 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 189512 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 14 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 22 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 706 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1973 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCMinutes i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/date/Date#setUTCHours - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 92 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/date/Date#setUTCHours - local.get $0 - i32.const 23 - call $~lib/date/Date#setUTCHours - global.get $~lib/memory/__stack_pointer - i64.const 123814991274 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#getUTCFullYear - i32.const 1973 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 101 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/date/Date#getUTCMonth - i32.const 11 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 399464523963984 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 984 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 568 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 568 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1056 - i32.const 102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - call $~lib/date/Date#setUTCDate - local.get $0 - call $~lib/date/Date#getUTCDate - i32.const 12 - i32.ne - if + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + i64.load offset=16 + i64.const 399464523963000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 999 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + i64.load offset=16 + i64.const 399464523963999 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2000 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + if + i32.const 0 + i32.const 1152 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.load offset=16 + i64.const 399464523965000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const -2000 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + if + i32.const 0 + i32.const 1152 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.load offset=16 + i64.const 399464523963000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 31 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCSeconds + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 50 + call $~lib/date/Date#setUTCSeconds + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1056 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/date/Date#setUTCDate - local.get $0 - call $~lib/date/Date#getUTCDate - i32.const 2 - i32.ne - if + call $~lib/date/Date#setUTCSeconds + local.get $0 + i64.load offset=16 + i64.const 372027318300986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 59 + call $~lib/date/Date#setUTCSeconds + local.get $0 + i64.load offset=16 + i64.const 372027318359986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCMinutes + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 50 + call $~lib/date/Date#setUTCMinutes + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1056 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/date/Date#setUTCDate - local.get $0 - i32.const 30 - call $~lib/date/Date#setUTCDate - local.get $0 - i32.const 1 - call $~lib/date/Date#setUTCMonth - local.get $0 - i32.const 1 - call $~lib/date/Date#setUTCDate - local.get $0 - i32.const 31 - call $~lib/date/Date#setUTCDate - local.get $0 - i32.const 2024 - call $~lib/date/Date#setUTCFullYear - local.get $0 - i32.const 2 - call $~lib/date/Date#setUTCMonth - local.get $0 - i32.const 1 - call $~lib/date/Date#setUTCDate - local.get $0 - i32.const 29 - call $~lib/date/Date#setUTCDate - global.get $~lib/memory/__stack_pointer - i64.const 7899943856218720 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#getUTCMonth - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 130 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 10 - call $~lib/date/Date#setUTCMonth - local.get $0 - call $~lib/date/Date#getUTCMonth - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 132 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/date/Date#setUTCMonth - local.get $0 - call $~lib/date/Date#getUTCMonth - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 134 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/date/Date#setUTCMonth - local.get $0 - i32.const 12 - call $~lib/date/Date#setUTCMonth - global.get $~lib/memory/__stack_pointer - i64.const 7941202527925698 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#getUTCFullYear - i32.const 253616 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 143 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1976 - call $~lib/date/Date#setUTCFullYear - local.get $0 - call $~lib/date/Date#getUTCFullYear - i32.const 1976 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 145 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20212 - call $~lib/date/Date#setUTCFullYear - local.get $0 - call $~lib/date/Date#getUTCFullYear - i32.const 20212 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 1231231231020 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#toISOString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2160 - i32.store offset=8 - local.get $0 - i32.const 2160 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/date/Date#setUTCMinutes + local.get $0 + i64.load offset=16 + i64.const 372027315631986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 59 + call $~lib/date/Date#setUTCMinutes + local.get $0 + i64.load offset=16 + i64.const 372027319171986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 17 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCHours + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/date/Date#setUTCHours + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 1056 - i32.const 153 + call $~lib/date/Date#setUTCHours + local.get $0 + i64.load offset=16 + i64.const 372027257131986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 23 + call $~lib/date/Date#setUTCHours + local.get $0 + i64.load offset=16 + i64.const 372027339931986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1973 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCDate + local.get $0 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/date/Date#setUTCDate + local.get $0 + i32.load offset=8 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $0 + i32.const 30 + call $~lib/date/Date#setUTCDate + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCMonth + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $0 + i32.const 31 + call $~lib/date/Date#setUTCDate + local.get $0 + i32.const 2024 + call $~lib/date/Date#setUTCFullYear + local.get $0 + i32.const 2 + call $~lib/date/Date#setUTCMonth + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $0 + i32.const 29 + call $~lib/date/Date#setUTCDate + local.get $0 + i64.load offset=16 + i64.const 1711674191274 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 144 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 29 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCMinutes i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 1231231231456 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#toISOString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2240 - i32.store offset=8 - local.get $0 - i32.const 2240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 155 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1362106799999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 20 + call $~lib/date/Date#setUTCDate + local.get $0 + i64.load offset=16 + i64.const 1363748399999 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $0 + i64.load offset=16 + i64.const 1362106799999 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 154 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1000 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + i64.load offset=16 + i64.const 1362106800000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3600000 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + i64.load offset=16 + i64.const 1362110400000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3600001 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + i64.load offset=16 + i64.const 1362114000001 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3600001 + call $~lib/date/Date#setUTCMilliseconds + local.get $0 + i64.load offset=16 + i64.const 1362117600001 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i32.const -2208 + call $~lib/date/Date#setUTCDate + local.get $0 + i64.load offset=16 + i64.const -67301808726 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2208 + call $~lib/date/Date#setUTCDate + local.get $0 + i64.load offset=16 + i64.const 314240591274 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 174 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1467763200000 + call $~lib/date/Date#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/date/Date#getUTCDay i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 322331231231020 - call $~lib/date/Date#constructor - local.tee $0 - i32.store - local.get $0 - call $~lib/date/Date#toISOString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2320 - i32.store offset=8 - local.get $0 - i32.const 2320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 157 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1467763199999 + call $~lib/date/Date#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/date/Date#getUTCDay + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 185 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1467849599999 + call $~lib/date/Date#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/date/Date#getUTCDay i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 186 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1467849600000 + call $~lib/date/Date#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/date/Date#getUTCDay + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1468022400000 + call $~lib/date/Date#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/date/Date#getUTCDay + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 189 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1468022399999 + call $~lib/date/Date#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/date/Date#getUTCDay + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1468108799999 + call $~lib/date/Date#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/date/Date#getUTCDay + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 191 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1468108800000 + call $~lib/date/Date#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/date/Date#getUTCDay + if + i32.const 0 + i32.const 1152 + i32.const 192 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 7899943856218720 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 10 + call $~lib/date/Date#setUTCMonth + local.get $0 + i32.load offset=4 + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/date/Date#setUTCMonth + local.get $0 + i32.load offset=4 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 202 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.load offset=16 + i64.const 7899941177818720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCMonth + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCMonth + local.get $0 + i64.load offset=16 + i64.const 7899967616218720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 207 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/date/Date#setUTCMonth + local.get $0 + i64.load offset=16 + i64.const 7899967616218720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 13 + call $~lib/date/Date#setUTCMonth + local.get $0 + i64.load offset=16 + i64.const 7900001830618720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 7941202527925698 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 253616 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1976 + call $~lib/date/Date#setUTCFullYear + local.get $0 + i32.load + i32.const 1976 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 221 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20212 + call $~lib/date/Date#setUTCFullYear + local.get $0 + i32.load + i32.const 20212 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 71 + call $~lib/date/Date#setUTCFullYear + local.get $0 + i32.load + i32.const 71 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62167219200000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store offset=8 + local.get $0 + i32.const 2160 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62167219200001 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2240 + i32.store offset=8 + local.get $0 + i32.const 2240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 233 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62127219200000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2320 + i32.store offset=8 + local.get $0 + i32.const 2320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1231231231020 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2400 + i32.store offset=8 + local.get $0 + i32.const 2400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1231231231456 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2480 + i32.store offset=8 + local.get $0 + i32.const 2480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 239 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 322331231231020 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2560 + i32.store offset=8 + local.get $0 + i32.const 2560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 253402300799999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2640 + i32.store offset=8 + local.get $0 + i32.const 2640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 243 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 253402300800000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2720 + i32.store offset=8 + local.get $0 + i32.const 2720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62847038769226 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2800 + i32.store offset=8 + local.get $0 + i32.const 2800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 247 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2880 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2880 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 192067200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 254 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3152 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 192067200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3200 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 11860387200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3248 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 192112496000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3312 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3312 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 192112496456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3392 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3392 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 192112496456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3472 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const -62167219200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3504 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const -62135596800000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 276 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3536 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 189302400000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 279 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3568 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 191980800000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 282 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2880 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2880 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 192067200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 285 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 192112440000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 288 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3248 + call $~lib/date/Date.fromString + local.tee $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 192112496000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -8640000000000000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i64.const 8640000000000000 + call $~lib/date/Date#constructor + local.tee $2 + i32.store offset=12 + local.get $0 + i64.load offset=16 + i64.const -8640000000000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 309 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.load offset=16 + i64.const 8640000000000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 310 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + i32.const -271821 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 312 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load + i32.const 275760 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 313 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 315 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=4 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 316 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 318 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + i32.const 13 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 319 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3680 + i32.store offset=8 + local.get $0 + i32.const 3680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 321 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=8 + local.get $0 + i32.const 3760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 322 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 8639999999999999 + call $~lib/date/Date#constructor + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i64.const -8639999999999999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=20 + local.get $0 + i32.load + i32.const -271821 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 327 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 328 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 329 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCHours + if + i32.const 0 + i32.const 1152 + i32.const 330 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCMinutes + if + i32.const 0 + i32.const 1152 + i32.const 331 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCSeconds + if + i32.const 0 + i32.const 1152 + i32.const 332 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 333 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/date/Date#toISOString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=8 + local.get $2 + i32.const 3840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 335 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=8 + local.get $0 + i32.const 3920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 336 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 1056 + i32.const 1104 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/date/Date#constructor (param $0 i64) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 2400 - i32.store offset=4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 2400 - call $~lib/date/Date.fromString - local.tee $0 + i32.const 0 i32.store - local.get $0 - i64.load - i64.const 192067200000 - i64.ne - if - i32.const 0 - i32.const 1056 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2704 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 2704 - call $~lib/date/Date.fromString - local.tee $0 + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - local.get $0 - i64.load - i64.const 192067200000 - i64.ne - if - i32.const 0 - i32.const 1056 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2752 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2752 - call $~lib/date/Date.fromString - local.tee $0 + local.get $1 + i32.const 0 i32.store - local.get $0 - i64.load - i64.const 11860387200000 - i64.ne - if - i32.const 0 - i32.const 1056 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2800 - i32.store offset=8 - i32.const 2800 - call $~lib/date/Date.fromString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + i32.const 0 i32.store offset=4 - local.get $0 - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 2848 + local.get $1 + i32.const 0 i32.store offset=8 - i32.const 2848 - call $~lib/date/Date.fromString - local.set $0 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=4 + i64.store offset=16 local.get $0 - i64.load - i64.ne + call $~lib/date/invalidDate if - i32.const 0 i32.const 1056 - i32.const 171 - i32.const 3 + i32.const 1104 + i32.const 95 + i32.const 35 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 2896 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2896 - call $~lib/date/Date.fromString - local.tee $0 - i32.store + local.get $1 local.get $0 - i64.load - i64.const 192112496000 - i64.ne - if - i32.const 0 - i32.const 1056 - i32.const 178 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2960 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2960 - call $~lib/date/Date.fromString - local.tee $0 - i32.store local.get $0 - i64.load - i64.const 192112496456 - i64.ne - if - i32.const 0 - i32.const 1056 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3040 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3040 - call $~lib/date/Date.fromString - local.tee $0 - i32.store + i64.const 86399999 + i64.sub local.get $0 - i64.load - i64.const 192112496456 - i64.ne - if - i32.const 0 - i32.const 1056 - i32.const 186 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#constructor (param $0 i64) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $1 + i64.const 0 + i64.ge_s + select + i64.const 86400000 + i64.div_s + i32.wrap_i64 + call $~lib/date/ymdFromEpochDays i32.store local.get $1 - i64.const 0 - i64.store + global.get $~lib/date/_month + i32.store offset=4 local.get $1 - local.get $0 - i64.store + global.get $~lib/date/_day + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -5099,7 +6453,7 @@ i32.const 0 i32.store i32.const 1 - i32.const 1804 + i32.const 1868 i32.load i32.const 1 i32.shr_u @@ -5160,7 +6514,7 @@ local.get $1 local.get $4 i32.add - i32.const 1808 + i32.const 1872 local.get $3 call $~lib/memory/memory.copy local.get $3 @@ -5173,14 +6527,14 @@ local.get $1 local.get $6 i32.add - i32.const 1808 + i32.const 1872 local.get $2 local.get $6 i32.sub call $~lib/memory/memory.copy else local.get $1 - i32.const 1808 + i32.const 1872 local.get $2 call $~lib/memory/memory.copy end @@ -5196,6 +6550,110 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + local.get $2 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + local.get $2 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $2 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2000 + return + end + i32.const 0 + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + local.get $2 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + i32.add + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) (func $~lib/rt/__newArray (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -5256,8 +6714,8 @@ i32.load offset=12 i32.ge_u if - i32.const 1296 - i32.const 2496 + i32.const 1392 + i32.const 2976 i32.const 92 i32.const 42 call $~lib/builtins/abort @@ -5276,8 +6734,8 @@ local.get $0 i32.eqz if - i32.const 2544 - i32.const 2496 + i32.const 3024 + i32.const 2976 i32.const 96 i32.const 40 call $~lib/builtins/abort diff --git a/tests/compiler/std/date.ts b/tests/compiler/std/date.ts index 798cb9cb52..105bda77c0 100644 --- a/tests/compiler/std/date.ts +++ b/tests/compiler/std/date.ts @@ -1,13 +1,16 @@ -// Date UTC ///////////////////////////////////////////////////////////////////////////////// +// Date UTC /////////////////////////////////////////////////////////////////////////////////////// { assert(Date.UTC(1970, 0, 1) == 0); assert(Date.UTC(1970, 0, 1, 0, 0, 0, 0) == 0); - - let creationTime = Date.UTC(2018, 10, 10, 11, 0, 0, 1); - assert(creationTime == 1541847600001); + assert(Date.UTC(70) == 0); + assert(Date.UTC(90) == 631152000000); + assert(Date.UTC(-90) == -65007360000000); + assert(Date.UTC(2018, 10, 10, 11, 0, 0, 1) == 1541847600001); + assert(Date.UTC(275760, 8, 13, 0, 0, 0, 0) == 8640000000000000); + // Date.UTC(275760, 8, 13, 0, 0, 0, 1); // Invalid Date } -// Date get / set Time ///////////////////////////////////////////////////////////////////////////////// +// Date get / set Time //////////////////////////////////////////////////////////////////////////// { let creationTime = 1541847600001; @@ -17,7 +20,7 @@ assert(date.getTime() == creationTime + 1); } -// Date getters ///////////////////////////////////////////////////////////////////////////////// +// Date getters /////////////////////////////////////////////////////////////////////////////////// { // from +189512-12-14T22:09:43.706Z" @@ -43,7 +46,7 @@ assert(date.getUTCMilliseconds() == 274); } -// Date#setUTCMilliseconds ///////////////////////////////////////////////////////////////////////////////// +// Date#setUTCMilliseconds ///////////////////////////////////////////////////////////////////////// { let date = new Date(399464523963984); assert(date.getUTCMilliseconds() == 984); @@ -51,12 +54,21 @@ assert(date.getUTCMilliseconds() == 12); date.setUTCMilliseconds(568); assert(date.getUTCMilliseconds() == 568); - // test boundaries + // test in boundaries date.setUTCMilliseconds(0); + assert(date.getTime() == 399464523963000); date.setUTCMilliseconds(999); + assert(date.getTime() == 399464523963999); + // test out of boundaries + date.setUTCMilliseconds(2000); + assert(date.getUTCMilliseconds() == 0); + assert(date.getTime() == 399464523965000); + date.setUTCMilliseconds(-2000); + assert(date.getUTCMilliseconds() == 0); + assert(date.getTime() == 399464523963000); } -// Date#setUTCSeconds ///////////////////////////////////////////////////////////////////////////////// +// Date#setUTCSeconds ////////////////////////////////////////////////////////////////////////////// { let date = new Date(372027318331986); assert(date.getUTCSeconds() == 31); @@ -66,10 +78,12 @@ assert(date.getUTCSeconds() == 50); // test boundaries date.setUTCSeconds(0); + assert(date.getTime() == 372027318300986); date.setUTCSeconds(59); + assert(date.getTime() == 372027318359986); } -// Date#setUTCMinutes ///////////////////////////////////////////////////////////////////////////////// +// Date#setUTCMinutes ////////////////////////////////////////////////////////////////////////////// { let date = new Date(372027318331986); assert(date.getUTCMinutes() == 45); @@ -79,10 +93,12 @@ assert(date.getUTCMinutes() == 50); // test boundaries date.setUTCMinutes(0); + assert(date.getTime() == 372027315631986); date.setUTCMinutes(59); + assert(date.getTime() == 372027319171986); } -// Date#setUTCHours ///////////////////////////////////////////////////////////////////////////////// +// Date#setUTCHours //////////////////////////////////////////////////////////////////////////////// { let date = new Date(372027318331986); assert(date.getUTCHours() == 17); @@ -92,7 +108,9 @@ assert(date.getUTCHours() == 2); // test boundaries date.setUTCHours(0); + assert(date.getTime() == 372027257131986); date.setUTCHours(23); + assert(date.getTime() == 372027339931986); } // Date#setUTCDate ///////////////////////////////////////////////////////////////////////////////// @@ -122,9 +140,59 @@ date.setUTCMonth(2); date.setUTCDate(1); date.setUTCDate(29); + + assert(date.getTime() == 1711674191274); + assert(date.getUTCDate() == 29); + assert(date.getUTCMinutes() == 3); + assert(date.getUTCSeconds() == 11); + assert(date.getUTCMilliseconds() == 274); + + date = new Date(1362106799999); + date.setUTCDate(20); + assert(date.getTime() == 1363748399999); + date.setUTCDate(1); + assert(date.getTime() == 1362106799999); + + date.setUTCMilliseconds(1000); + assert(date.getTime() == 1362106800000); + + date.setUTCMilliseconds(60 * 60 * 1000); + assert(date.getTime() == 1362110400000); + + date.setUTCMilliseconds(60 * 60 * 1000 + 1); + assert(date.getTime() == 1362114000001); + + date.setUTCMilliseconds(60 * 60 * 1000 + 1); + assert(date.getTime() == 1362117600001); + + date = new Date(123814991274); + date.setUTCDate(-2208); + assert(date.getTime() == -67301808726); + + date = new Date(123814991274); + date.setUTCDate(2208); + assert(date.getTime() == 314240591274); } -// Date#setUTCMonth ///////////////////////////////////////////////////////////////////////////////// +// Date#setUTCDay ////////////////////////////////////////////////////////////////////////////////// +{ + // tests from test262 + const july6: i64 = 1467763200000; + const july9: i64 = 1468022400000; + const dayMs: i64 = 24 * 60 * 60 * 1000; + + assert(new Date(july6 ).getUTCDay() == 3); + assert(new Date(july6 - 1).getUTCDay() == 2); + assert(new Date(july6 + dayMs - 1).getUTCDay() == 3); + assert(new Date(july6 + dayMs ).getUTCDay() == 4); + + assert(new Date(july9 ).getUTCDay() == 6); + assert(new Date(july9 - 1).getUTCDay() == 5); + assert(new Date(july9 + dayMs - 1).getUTCDay() == 6); + assert(new Date(july9 + dayMs ).getUTCDay() == 0); +} + +// Date#setUTCMonth //////////////////////////////////////////////////////////////////////////////// { let date = new Date(7899943856218720); assert(date.getUTCMonth() == 3); @@ -132,12 +200,20 @@ assert(date.getUTCMonth() == 10); date.setUTCMonth(2); assert(date.getUTCMonth() == 2); + assert(date.getTime() == 7899941177818720); // test boundaries date.setUTCMonth(1); date.setUTCMonth(12); + assert(date.getTime() == 7899967616218720); + + // test out of boundaries + date.setUTCMonth(0); + assert(date.getTime() == 7899967616218720); + date.setUTCMonth(13); + assert(date.getTime() == 7900001830618720); } -// Date#setUTCFullYear ///////////////////////////////////////////////////////////////////////////////// +// Date#setUTCFullYear ///////////////////////////////////////////////////////////////////////////// { let date = new Date(7941202527925698); assert(date.getUTCFullYear() == 253616); @@ -145,16 +221,30 @@ assert(date.getUTCFullYear() == 1976); date.setUTCFullYear(20212); assert(date.getUTCFullYear() == 20212); + date.setUTCFullYear(71); + assert(date.getUTCFullYear() == 71); } -// Date#toString ///////////////////////////////////////////////////////////////////////////////// +// Date#toISOString //////////////////////////////////////////////////////////////////////////////// { - let date = new Date(1231231231020); + let date = new Date(-62167219200000); + assert(date.toISOString() == "0000-01-01T00:00:00.000Z"); + date = new Date(-62167219200000 - 1); + assert(date.toISOString() == "-000001-12-31T23:59:59.999Z"); + date = new Date(-62127219200000); + assert(date.toISOString() == "0001-04-07T23:06:40.000Z"); + date = new Date(1231231231020); assert(date.toISOString() == "2009-01-06T08:40:31.020Z"); date = new Date(1231231231456); assert(date.toISOString() == "2009-01-06T08:40:31.456Z"); date = new Date(322331231231020); assert(date.toISOString() == "+012184-04-08T13:07:11.020Z"); + date = new Date(253402300799999); + assert(date.toISOString() == "9999-12-31T23:59:59.999Z"); + date = new Date(253402300800000); + assert(date.toISOString() == "+010000-01-01T00:00:00.000Z"); + date = new Date(-62847038769226); + assert(date.toISOString() == "-000022-06-16T17:13:50.774Z"); } // Date#fromString ///////////////////////////////////////////////////////////////////////////////// @@ -167,21 +257,84 @@ date = Date.fromString("2345-11-04"); assert(date.getTime() == 11860387200000); - // supports two digit years - assert( - Date.fromString("1976-04-02").getTime() == - Date.fromString("76-04-02").getTime() - ); - // supports year / month / day / hour / minute / second - date = Date.fromString("1976-02-02T12:34:56"); + date = Date.fromString("1976-02-02T12:34:56"); // still use Z suffix assert(date.getTime() == 192112496000); // supports milliseconds - date = Date.fromString("1976-02-02T12:34:56.456"); + date = Date.fromString("1976-02-02T12:34:56.456"); // still use Z suffix assert(date.getTime() == 192112496456); // supports 'Z' suffix date = Date.fromString("1976-02-02T12:34:56.456Z"); assert(date.getTime() == 192112496456); + + date = Date.fromString("0000"); + assert(date.getTime() == -62167219200000); + + date = Date.fromString("0001"); + assert(date.getTime() == -62135596800000); + + date = Date.fromString("1976"); + assert(date.getTime() == 189302400000); + + date = Date.fromString("1976-02"); + assert(date.getTime() == 191980800000); + + date = Date.fromString("1976-02-02"); + assert(date.getTime() == 192067200000); + + date = Date.fromString("1976-02-02T12:34"); // still use Z suffix + assert(date.getTime() == 192112440000); + + date = Date.fromString("1976-02-02T12:34:56"); // still use Z suffix + assert(date.getTime() == 192112496000); + + // date = Date.fromString('0Z'); + // assert(date.getTime() == 946684800000); // FIXME: fail + + // date = Date.fromString('000Z'); + // assert(date.getTime() == 946684800000); // FIXME: fail + + // Date.fromString(""); // Invalid Date + // Date.fromString("1000000"); // Invalid Date + // Date.fromString("1976-02-02T12"); // Invalid Date +} + +// Minimum / Maximum dates //////////////////////////////////////////////////////////////////////// +{ + let minDate = new Date(-8640000000000000); + let maxDate = new Date( 8640000000000000); + + assert(minDate.getTime() == -8640000000000000); + assert(maxDate.getTime() == 8640000000000000); + + assert(minDate.getUTCFullYear() == -271821); + assert(maxDate.getUTCFullYear() == 275760); + + assert(minDate.getUTCMonth() == 3); + assert(maxDate.getUTCMonth() == 8); + + assert(minDate.getUTCDate() == 20); + assert(maxDate.getUTCDate() == 13); + + assert(minDate.toISOString() == "-271821-04-20T00:00:00.000Z"); + assert(maxDate.toISOString() == "+275760-09-13T00:00:00.000Z"); + + let maxDateDec = new Date( 8640000000000000 - 1); + let minDateInc = new Date(-8640000000000000 + 1); + + assert(minDateInc.getUTCFullYear() == -271821); + assert(minDateInc.getUTCMonth() == 3); + assert(minDateInc.getUTCDate() == 20); + assert(minDateInc.getUTCHours() == 0); + assert(minDateInc.getUTCMinutes() == 0); + assert(minDateInc.getUTCSeconds() == 0); + assert(minDateInc.getUTCMilliseconds() == 1); + + assert(maxDateDec.toISOString() == "+275760-09-12T23:59:59.999Z"); + assert(minDateInc.toISOString() == "-271821-04-20T00:00:00.001Z"); + + // new Date(maxDate.getTime() + 1); // Invalid Date + // new Date(minDate.getTime() - 1); // Invalid Date } diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 5cdc23257a..e8092bdef1 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -3,14 +3,15 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) @@ -19,13 +20,8 @@ (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) (type $i32_i64_=>_i64 (func (param i32 i64) (result i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/date/MILLIS_PER_DAY i32 (i32.const 86400000)) - (global $~lib/date/MILLIS_PER_HOUR i32 (i32.const 3600000)) - (global $~lib/date/MILLIS_PER_MINUTE i32 (i32.const 60000)) - (global $~lib/date/MILLIS_PER_SECOND i32 (i32.const 1000)) - (global $~lib/date/year (mut i32) (i32.const 0)) - (global $~lib/date/month (mut i32) (i32.const 0)) - (global $~lib/date/day (mut i32) (i32.const 0)) + (global $~lib/date/_day (mut i32) (i32.const 0)) + (global $~lib/date/_month (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -39,52 +35,65 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/rt/__rtti_base i32 (i32.const 3536)) - (global $~lib/memory/__data_end i32 (i32.const 3588)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19972)) - (global $~lib/memory/__heap_base i32 (i32.const 19972)) + (global $~lib/rt/__rtti_base i32 (i32.const 4416)) + (global $~lib/memory/__data_end i32 (i32.const 4468)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20852)) + (global $~lib/memory/__heap_base i32 (i32.const 20852)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") - (data (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00V\00a\00l\00u\00e\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00") - (data (i32.const 572) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 796) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 1196) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2252) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e\00\00\00\00\00") + (data (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00") + (data (i32.const 108) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 556) "\00\03\02\05\00\03\05\01\04\06\02\04") + (data (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 636) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data (i32.const 764) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 860) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 1260) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2316) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2572) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2652) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2732) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z\00\00\00\00\00\00\00") - (data (i32.const 2812) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002\00\00\00\00\00\00\00\00\00") - (data (i32.const 2860) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 2908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 2956) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3084) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\009\00\00\00\00\00\00\00\00\00") - (data (i32.const 3116) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004\00\00\00\00\00\00\00\00\00") - (data (i32.const 3212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\009\007\006\00-\000\004\00-\000\002\00\00\00\00\00\00\00\00\00") - (data (i32.const 3260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\007\006\00-\000\004\00-\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3308) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00\00\00\00\00\00\00") - (data (i32.const 3372) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3452) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3536) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t\00\00\00\00\00\00") + (data (i32.const 2572) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2652) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") + (data (i32.const 2732) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2812) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2892) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2972) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z\00\00\00\00\00\00\00") + (data (i32.const 3052) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3132) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data (i32.const 3212) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z\00\00\00\00\00\00\00") + (data (i32.const 3292) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002\00\00\00\00\00\00\00\00\00") + (data (i32.const 3340) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 3388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 3436) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3564) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004\00\00\00\00\00\00\00\00\00") + (data (i32.const 3660) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00\00\00\00\00\00\00") + (data (i32.const 3724) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3804) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\000\00\00\00\00\00") + (data (i32.const 3916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\001\00\00\00\00\00") + (data (i32.const 3948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\009\007\006\00\00\00\00\00") + (data (i32.const 3980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\009\007\006\00-\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4028) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4092) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data (i32.const 4172) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data (i32.const 4252) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") + (data (i32.const 4332) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z\00\00\00\00\00\00\00") + (data (i32.const 4416) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 1 funcref) (export "memory" (memory $0)) (export "_start" (func $~start)) @@ -93,36 +102,39 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 local.get $1 i32.const 2 i32.le_s - if (result i32) - i32.const 1 - else - i32.const 0 - end i32.sub local.set $0 local.get $0 + local.set $4 + i32.const 400 + local.set $3 + local.get $4 i32.const 0 i32.ge_s if (result i32) - local.get $0 + local.get $4 else - local.get $0 - i32.const 399 + local.get $4 + local.get $3 i32.sub + i32.const 1 + i32.add end - i32.const 400 + local.get $3 i32.div_s - local.set $3 + local.set $5 local.get $0 - local.get $3 + local.get $5 i32.const 400 i32.mul i32.sub - local.set $4 + local.set $6 i32.const 153 local.get $1 local.get $1 @@ -138,30 +150,30 @@ i32.const 2 i32.add i32.const 5 - i32.div_s + i32.div_u local.get $2 i32.add i32.const 1 i32.sub - local.set $5 - local.get $4 + local.set $7 + local.get $6 i32.const 365 i32.mul - local.get $4 + local.get $6 i32.const 4 - i32.div_s + i32.div_u i32.add - local.get $4 + local.get $6 i32.const 100 - i32.div_s + i32.div_u i32.sub - local.get $5 + local.get $7 i32.add - local.set $6 - local.get $3 + local.set $8 + local.get $5 i32.const 146097 i32.mul - local.get $6 + local.get $8 i32.add i32.const 719468 i32.sub @@ -172,21 +184,20 @@ local.get $2 call $~lib/date/daysSinceEpoch i64.extend_i32_s - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s + i64.const 86400000 i64.mul local.get $3 - global.get $~lib/date/MILLIS_PER_HOUR + i32.const 3600000 i32.mul i64.extend_i32_s i64.add local.get $4 - global.get $~lib/date/MILLIS_PER_MINUTE + i32.const 60000 i32.mul i64.extend_i32_s i64.add local.get $5 - global.get $~lib/date/MILLIS_PER_SECOND + i32.const 1000 i32.mul i64.extend_i32_s i64.add @@ -194,10 +205,144 @@ i64.extend_i32_s i64.add ) - (func $~lib/date/Date#set:epochMillis (param $0 i32) (param $1 i64) + (func $~lib/date/invalidDate (param $0 i64) (result i32) + local.get $0 + i64.const -8640000000000000 + i64.lt_s + local.get $0 + i64.const 8640000000000000 + i64.gt_s + i32.or + ) + (func $~lib/date/ymdFromEpochDays (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 + i32.const 719468 + i32.add + local.set $0 + local.get $0 + local.set $2 + i32.const 146097 + local.set $1 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + else + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + end local.get $1 - i64.store + i32.div_s + local.set $3 + local.get $0 + local.get $3 + i32.const 146097 + i32.mul + i32.sub + local.set $4 + local.get $4 + local.get $4 + i32.const 1460 + i32.div_u + i32.sub + local.get $4 + i32.const 36524 + i32.div_u + i32.add + local.get $4 + i32.const 146096 + i32.div_u + i32.sub + i32.const 365 + i32.div_u + local.set $5 + local.get $5 + local.get $3 + i32.const 400 + i32.mul + i32.add + local.set $6 + local.get $4 + i32.const 365 + local.get $5 + i32.mul + local.get $5 + i32.const 4 + i32.div_u + i32.add + local.get $5 + i32.const 100 + i32.div_u + i32.sub + i32.sub + local.set $7 + i32.const 5 + local.get $7 + i32.mul + i32.const 2 + i32.add + i32.const 153 + i32.div_s + local.set $8 + local.get $7 + i32.const 153 + local.get $8 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + i32.sub + i32.const 1 + i32.add + global.set $~lib/date/_day + local.get $8 + local.get $8 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 3 + else + i32.const -9 + end + i32.add + local.set $8 + local.get $8 + global.set $~lib/date/_month + local.get $6 + local.get $8 + i32.const 2 + i32.le_s + i32.add + local.set $6 + local.get $6 + ) + (func $~lib/date/Date#set:year (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/date/Date#set:month (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/date/Date#set:day (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 @@ -259,7 +404,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 240 i32.const 159 i32.const 16 call $~lib/builtins/abort @@ -325,7 +470,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 240 i32.const 127 i32.const 18 call $~lib/builtins/abort @@ -342,7 +487,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 240 i32.const 131 i32.const 16 call $~lib/builtins/abort @@ -364,8 +509,8 @@ i32.load i32.gt_u if - i32.const 272 - i32.const 336 + i32.const 368 + i32.const 432 i32.const 22 i32.const 28 call $~lib/builtins/abort @@ -431,7 +576,7 @@ i32.eqz if (result i32) i32.const 0 - i32.const 144 + i32.const 240 i32.const 147 i32.const 30 call $~lib/builtins/abort @@ -557,7 +702,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 268 i32.const 14 call $~lib/builtins/abort @@ -577,7 +722,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 270 i32.const 14 call $~lib/builtins/abort @@ -640,7 +785,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 284 i32.const 14 call $~lib/builtins/abort @@ -772,7 +917,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 201 i32.const 14 call $~lib/builtins/abort @@ -789,7 +934,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 203 i32.const 14 call $~lib/builtins/abort @@ -869,7 +1014,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 221 i32.const 16 call $~lib/builtins/abort @@ -912,7 +1057,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 233 i32.const 14 call $~lib/builtins/abort @@ -930,7 +1075,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 234 i32.const 14 call $~lib/builtins/abort @@ -998,7 +1143,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 251 i32.const 14 call $~lib/builtins/abort @@ -1103,7 +1248,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 377 i32.const 14 call $~lib/builtins/abort @@ -1146,7 +1291,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 384 i32.const 16 call $~lib/builtins/abort @@ -1179,7 +1324,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 397 i32.const 5 call $~lib/builtins/abort @@ -1422,7 +1567,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -1644,7 +1789,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 240 i32.const 228 i32.const 20 call $~lib/builtins/abort @@ -1752,8 +1897,8 @@ i32.const 1073741820 i32.ge_u if - i32.const 80 - i32.const 416 + i32.const 176 + i32.const 512 i32.const 458 i32.const 30 call $~lib/builtins/abort @@ -1837,7 +1982,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 330 i32.const 14 call $~lib/builtins/abort @@ -1902,7 +2047,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 343 i32.const 18 call $~lib/builtins/abort @@ -2053,7 +2198,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 357 i32.const 14 call $~lib/builtins/abort @@ -2162,7 +2307,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 496 i32.const 16 call $~lib/builtins/abort @@ -2182,7 +2327,7 @@ i32.eqz if i32.const 0 - i32.const 416 + i32.const 512 i32.const 498 i32.const 14 call $~lib/builtins/abort @@ -2459,8 +2604,8 @@ i32.const 1073741804 i32.ge_u if - i32.const 80 - i32.const 144 + i32.const 176 + i32.const 240 i32.const 260 i32.const 31 call $~lib/builtins/abort @@ -2504,421 +2649,452 @@ call $~lib/memory/memory.fill local.get $3 ) + (func $~lib/date/Date#set:epochMillis (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store offset=16 + ) (func $~lib/date/Date#getTime (param $0 i32) (result i64) local.get $0 - i64.load + i64.load offset=16 ) (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) (result i64) + (local $2 i64) + (local $3 i64) + local.get $1 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 107 + i32.const 28 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 call $~lib/date/Date#set:epochMillis - local.get $1 - ) - (func $~lib/date/ymdFromEpochDays (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 719468 - i32.add - local.set $0 local.get $0 - i32.const 0 - i32.ge_s - if (result i32) - local.get $0 + local.get $1 + local.set $3 + i32.const 86400000 + i64.extend_i32_s + local.set $2 + local.get $3 + i64.const 0 + i64.ge_s + if (result i64) + local.get $3 else - local.get $0 - i32.const 146096 - i32.sub + local.get $3 + local.get $2 + i64.sub + i64.const 1 + i64.add end - i32.const 146097 - i32.div_s - local.set $1 + local.get $2 + i64.div_s + i32.wrap_i64 + call $~lib/date/ymdFromEpochDays + call $~lib/date/Date#set:year + local.get $0 + global.get $~lib/date/_month + call $~lib/date/Date#set:month local.get $0 + global.get $~lib/date/_day + call $~lib/date/Date#set:day local.get $1 - i32.const 146097 - i32.mul + ) + (func $~lib/date/Date#getUTCFullYear (param $0 i32) (result i32) + local.get $0 + i32.load + ) + (func $~lib/date/Date#getUTCMonth (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 1 i32.sub + ) + (func $~lib/date/Date#getUTCDate (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + ) + (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.load offset=16 local.set $2 + i32.const 86400000 + i64.extend_i32_s + local.set $1 local.get $2 - local.get $2 - i32.const 1460 - i32.div_s - i32.sub - local.get $2 - i32.const 36524 - i32.div_s - i32.add - local.get $2 - i32.const 146096 - i32.div_s - i32.sub - i32.const 365 - i32.div_s - local.set $3 - local.get $3 local.get $1 - i32.const 400 - i32.mul - i32.add - global.set $~lib/date/year - local.get $2 - i32.const 365 - local.get $3 - i32.mul + i64.rem_s + local.set $3 local.get $3 - i32.const 4 - i32.div_s - i32.add local.get $3 - i32.const 100 - i32.div_s - i32.sub - i32.sub - local.set $4 - i32.const 5 - local.get $4 - i32.mul - i32.const 2 - i32.add - i32.const 153 - i32.div_s - local.set $5 - local.get $4 - i32.const 153 - local.get $5 - i32.mul - i32.const 2 - i32.add - i32.const 5 - i32.div_s - i32.sub - i32.const 1 - i32.add - global.set $~lib/date/day - local.get $5 - local.get $5 - i32.const 10 - i32.lt_s - if (result i32) - i32.const 3 - else - i32.const -9 - end - i32.add - global.set $~lib/date/month - global.get $~lib/date/year - global.get $~lib/date/month - i32.const 2 - i32.le_s - if (result i32) - i32.const 1 + i64.const 0 + i64.lt_s + if (result i64) + local.get $1 else - i32.const 0 + i64.const 0 end - i32.add - global.set $~lib/date/year - ) - (func $~lib/date/Date#getUTCFullYear (param $0 i32) (result i32) - local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - global.get $~lib/date/year - ) - (func $~lib/date/Date#getUTCMonth (param $0 i32) (result i32) - local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - global.get $~lib/date/month - i32.const 1 - i32.sub - ) - (func $~lib/date/Date#getUTCDate (param $0 i32) (result i32) - local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - global.get $~lib/date/day - ) - (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) - local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s - i64.rem_s + i64.add i32.wrap_i64 - global.get $~lib/date/MILLIS_PER_HOUR + i32.const 3600000 i32.div_s ) (func $~lib/date/Date#getUTCMinutes (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_HOUR + i64.load offset=16 + local.set $2 + i32.const 3600000 i64.extend_i32_s + local.set $1 + local.get $2 + local.get $1 i64.rem_s + local.set $3 + local.get $3 + local.get $3 + i64.const 0 + i64.lt_s + if (result i64) + local.get $1 + else + i64.const 0 + end + i64.add i32.wrap_i64 - global.get $~lib/date/MILLIS_PER_MINUTE + i32.const 60000 i32.div_s ) (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_MINUTE + i64.load offset=16 + local.set $2 + i32.const 60000 i64.extend_i32_s + local.set $1 + local.get $2 + local.get $1 i64.rem_s + local.set $3 + local.get $3 + local.get $3 + i64.const 0 + i64.lt_s + if (result i64) + local.get $1 + else + i64.const 0 + end + i64.add i32.wrap_i64 - global.get $~lib/date/MILLIS_PER_SECOND + i32.const 1000 i32.div_s ) (func $~lib/date/Date#getUTCMilliseconds (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_SECOND + i64.load offset=16 + local.set $2 + i32.const 1000 i64.extend_i32_s + local.set $1 + local.get $2 + local.get $1 i64.rem_s + local.set $3 + local.get $3 + local.get $3 + i64.const 0 + i64.lt_s + if (result i64) + local.get $1 + else + i64.const 0 + end + i64.add i32.wrap_i64 ) (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) local.get $0 local.get $0 - i64.load + i64.load offset=16 local.get $1 local.get $0 call $~lib/date/Date#getUTCMilliseconds i32.sub i64.extend_i32_s i64.add - call $~lib/date/Date#set:epochMillis - ) - (func $~lib/date/throwIfNotInRange (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - local.get $1 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $0 - local.get $2 - i32.gt_s - end - if - i32.const 480 - i32.const 544 - i32.const 195 - i32.const 39 - call $~lib/builtins/abort - unreachable - end + call $~lib/date/Date#setTime + drop ) (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) - local.get $1 - i32.const 0 - i32.const 59 - call $~lib/date/throwIfNotInRange local.get $0 local.get $0 - i64.load + i64.load offset=16 local.get $1 local.get $0 call $~lib/date/Date#getUTCSeconds i32.sub - global.get $~lib/date/MILLIS_PER_SECOND + i32.const 1000 i32.mul i64.extend_i32_s i64.add - call $~lib/date/Date#set:epochMillis + call $~lib/date/Date#setTime + drop ) (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) - local.get $1 - i32.const 0 - i32.const 59 - call $~lib/date/throwIfNotInRange local.get $0 local.get $0 - i64.load + i64.load offset=16 local.get $1 local.get $0 call $~lib/date/Date#getUTCMinutes i32.sub - global.get $~lib/date/MILLIS_PER_MINUTE + i32.const 60000 i32.mul i64.extend_i32_s i64.add - call $~lib/date/Date#set:epochMillis + call $~lib/date/Date#setTime + drop ) (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) - local.get $1 - i32.const 0 - i32.const 23 - call $~lib/date/throwIfNotInRange local.get $0 local.get $0 - i64.load + i64.load offset=16 local.get $1 local.get $0 call $~lib/date/Date#getUTCHours i32.sub - global.get $~lib/date/MILLIS_PER_HOUR + i32.const 3600000 i32.mul i64.extend_i32_s i64.add - call $~lib/date/Date#set:epochMillis - ) - (func $~lib/date/isLeap (param $0 i32) (result i32) - local.get $0 - i32.const 4 - i32.rem_s - i32.const 0 - i32.eq - if (result i32) - local.get $0 - i32.const 100 - i32.rem_s - i32.const 0 - i32.ne - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 400 - i32.rem_s - i32.const 0 - i32.eq - end - else - i32.const 0 - end - ) - (func $~lib/date/daysInMonth (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 2 - i32.eq - if (result i32) - i32.const 28 - local.get $0 - call $~lib/date/isLeap - i32.add - else - i32.const 30 - local.get $1 - local.get $1 - i32.const 8 - i32.ge_s - i32.add - i32.const 1 - i32.and - i32.add - end + call $~lib/date/Date#setTime + drop ) (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays + i32.load offset=8 local.get $1 - i32.const 1 - global.get $~lib/date/year - global.get $~lib/date/month - call $~lib/date/daysInMonth - call $~lib/date/throwIfNotInRange + i32.eq + if + return + end local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY + i64.load offset=16 + local.set $3 + i32.const 86400000 i64.extend_i32_s - i64.rem_s local.set $2 + local.get $3 + local.get $2 + i64.rem_s + local.set $4 + local.get $4 + local.get $4 + i64.const 0 + i64.lt_s + if (result i64) + local.get $2 + else + i64.const 0 + end + i64.add + local.set $5 local.get $0 - global.get $~lib/date/year - global.get $~lib/date/month + local.get $0 + i32.load + local.get $0 + i32.load offset=4 local.get $1 call $~lib/date/daysSinceEpoch i64.extend_i32_s - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s + i64.const 86400000 i64.mul - local.get $2 + local.get $5 i64.add - call $~lib/date/Date#set:epochMillis + call $~lib/date/Date#setTime + drop ) (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) (local $2 i64) - local.get $1 - i32.const 1 - i32.const 12 - call $~lib/date/throwIfNotInRange + (local $3 i64) + (local $4 i64) + (local $5 i64) local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays + i32.load offset=4 + local.get $1 + i32.eq + if + return + end local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY + i64.load offset=16 + local.set $3 + i32.const 86400000 i64.extend_i32_s - i64.rem_s local.set $2 + local.get $3 + local.get $2 + i64.rem_s + local.set $4 + local.get $4 + local.get $4 + i64.const 0 + i64.lt_s + if (result i64) + local.get $2 + else + i64.const 0 + end + i64.add + local.set $5 local.get $0 - global.get $~lib/date/year + local.get $0 + i32.load local.get $1 i32.const 1 i32.add - global.get $~lib/date/day + local.get $0 + i32.load offset=8 call $~lib/date/daysSinceEpoch i64.extend_i32_s - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s + i64.const 86400000 i64.mul - local.get $2 + local.get $5 i64.add - call $~lib/date/Date#set:epochMillis + call $~lib/date/Date#setTime + drop ) (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays + i32.load + local.get $1 + i32.eq + if + return + end local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY + i64.load offset=16 + local.set $3 + i32.const 86400000 i64.extend_i32_s - i64.rem_s local.set $2 + local.get $3 + local.get $2 + i64.rem_s + local.set $4 + local.get $4 + local.get $4 + i64.const 0 + i64.lt_s + if (result i64) + local.get $2 + else + i64.const 0 + end + i64.add + local.set $5 local.get $0 local.get $1 - global.get $~lib/date/month - global.get $~lib/date/day + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 call $~lib/date/daysSinceEpoch i64.extend_i32_s - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s + i64.const 86400000 i64.mul - local.get $2 + local.get $5 i64.add - call $~lib/date/Date#set:epochMillis + call $~lib/date/Date#setTime + drop + ) + (func $~lib/date/dayOfWeek (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.const 3 + i32.lt_s + i32.sub + local.set $0 + local.get $0 + local.get $0 + i32.const 4 + i32.div_s + local.get $0 + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 400 + i32.div_s + i32.add + i32.add + local.set $0 + i32.const 556 + local.get $1 + i32.add + i32.const 1 + i32.sub + i32.load8_u + local.set $1 + local.get $0 + local.get $1 + i32.add + local.get $2 + i32.add + local.set $4 + i32.const 7 + local.set $3 + local.get $4 + local.get $3 + i32.rem_s + local.set $5 + local.get $5 + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + else + i32.const 0 + end + i32.add + ) + (func $~lib/date/Date#getUTCDay (param $0 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + call $~lib/date/dayOfWeek ) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) local.get $0 @@ -3010,14 +3186,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 796 + i32.const 860 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 796 + i32.const 860 local.get $7 i32.const 2 i32.shl @@ -3060,7 +3236,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 796 + i32.const 860 local.get $10 i32.const 2 i32.shl @@ -3083,7 +3259,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 796 + i32.const 860 local.get $1 i32.const 2 i32.shl @@ -3133,7 +3309,7 @@ i32.const 1 i32.shl i32.add - i32.const 1216 + i32.const 1280 local.get $1 i32.wrap_i64 i32.const 255 @@ -3155,7 +3331,7 @@ i32.and if local.get $0 - i32.const 1216 + i32.const 1280 local.get $1 i32.wrap_i64 i32.const 6 @@ -3278,7 +3454,7 @@ i32.const 1 i32.shl i32.add - i32.const 2272 + i32.const 2336 local.get $1 local.get $6 i64.and @@ -3314,7 +3490,7 @@ i32.const 1 i32.shl i32.add - i32.const 2272 + i32.const 2336 local.get $1 local.get $6 local.get $4 @@ -4859,14 +5035,6 @@ end i32.const -1 ) - (func $~lib/string/String#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne - ) (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 @@ -4897,7 +5065,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 240 i32.const 294 i32.const 14 call $~lib/builtins/abort @@ -5031,8 +5199,8 @@ i32.shr_u i32.gt_u if - i32.const 2880 - i32.const 2928 + i32.const 3360 + i32.const 3408 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -5115,6 +5283,10 @@ call $~lib/array/Array<~lib/string/String>#set:length_ local.get $3 ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) (func $~lib/util/string/isSpace (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -5508,25 +5680,25 @@ ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) - i32.const 272 + i32.const 368 local.get $0 call $~lib/rt/itcms/__visit - i32.const 480 + i32.const 3360 local.get $0 call $~lib/rt/itcms/__visit - i32.const 2880 + i32.const 3456 local.get $0 call $~lib/rt/itcms/__visit - i32.const 2976 + i32.const 176 local.get $0 call $~lib/rt/itcms/__visit - i32.const 80 + i32.const 32 local.get $0 call $~lib/rt/itcms/__visit - i32.const 1216 + i32.const 1280 local.get $0 call $~lib/rt/itcms/__visit - i32.const 2272 + i32.const 2336 local.get $0 call $~lib/rt/itcms/__visit ) @@ -5655,8 +5827,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 20000 - i32.const 20048 + i32.const 20880 + i32.const 20928 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -5666,6 +5838,10 @@ (func $~lib/date/Date#toISOString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 112 i32.sub @@ -5714,300 +5890,340 @@ i64.const 0 i64.store offset=104 local.get $0 - i64.load - global.get $~lib/date/MILLIS_PER_DAY - i64.extend_i32_s - i64.div_s - i32.wrap_i64 - call $~lib/date/ymdFromEpochDays - global.get $~lib/memory/__stack_pointer - global.get $~lib/date/year - i32.const 10 - call $~lib/number/I32#toString - local.tee $1 - i32.store - local.get $1 - call $~lib/string/String#get:length - i32.const 4 - i32.gt_s + i32.load + local.set $2 + local.get $2 + i32.const 0 + i32.lt_s + local.set $3 + local.get $3 + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 10000 + i32.ge_s + end if global.get $~lib/memory/__stack_pointer - i32.const 2368 - local.set $2 + local.get $3 + if (result i32) + i32.const 592 + else + i32.const 624 + end + local.set $6 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 + local.tee $4 + i32.const 31 + i32.shr_s + local.tee $5 + local.get $4 + i32.add + local.get $5 + i32.xor + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 i32.const 6 - i32.const 784 - local.set $2 + i32.const 848 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=12 - local.get $2 + local.get $6 call $~lib/string/String#padStart - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/string/String.__concat local.tee $1 + i32.store offset=16 + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store + local.get $6 + i32.const 4 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/string/String#padStart + local.tee $1 + i32.store offset=16 end local.get $1 - i32.const 2432 - local.set $2 + i32.const 592 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=100 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=92 - local.get $2 - global.get $~lib/date/month + local.get $6 + local.get $0 + i32.load offset=4 i32.const 10 call $~lib/number/I32#toString - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=104 - local.get $2 + local.get $6 i32.const 2 - i32.const 784 - local.set $2 + i32.const 848 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=108 - local.get $2 + local.get $6 call $~lib/string/String#padStart - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=96 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=84 - local.get $2 - i32.const 2432 - local.set $2 + local.get $6 + i32.const 592 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=88 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=76 - local.get $2 - global.get $~lib/date/day + local.get $6 + local.get $0 + i32.load offset=8 i32.const 10 call $~lib/number/I32#toString - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=84 - local.get $2 + local.get $6 i32.const 2 - i32.const 784 - local.set $2 + i32.const 848 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=92 - local.get $2 + local.get $6 call $~lib/string/String#padStart - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=80 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=68 - local.get $2 + local.get $6 i32.const 2464 - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=72 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=60 - local.get $2 + local.get $6 local.get $0 call $~lib/date/Date#getUTCHours i32.const 10 call $~lib/number/I32#toString - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=68 - local.get $2 + local.get $6 i32.const 2 - i32.const 784 - local.set $2 + i32.const 848 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=76 - local.get $2 + local.get $6 call $~lib/string/String#padStart - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=64 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=52 - local.get $2 + local.get $6 i32.const 2496 - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=56 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=44 - local.get $2 + local.get $6 local.get $0 call $~lib/date/Date#getUTCMinutes i32.const 10 call $~lib/number/I32#toString - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=52 - local.get $2 + local.get $6 i32.const 2 - i32.const 784 - local.set $2 + i32.const 848 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=60 - local.get $2 + local.get $6 call $~lib/string/String#padStart - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=48 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=36 - local.get $2 + local.get $6 i32.const 2496 - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=40 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=28 - local.get $2 + local.get $6 local.get $0 call $~lib/date/Date#getUTCSeconds i32.const 10 call $~lib/number/I32#toString - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=36 - local.get $2 + local.get $6 i32.const 2 - i32.const 784 - local.set $2 + i32.const 848 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=44 - local.get $2 + local.get $6 call $~lib/string/String#padStart - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=32 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=12 - local.get $2 + local.get $6 i32.const 2528 - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=24 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $2 + local.get $6 + i32.store offset=8 + local.get $6 local.get $0 call $~lib/date/Date#getUTCMilliseconds i32.const 10 call $~lib/number/I32#toString - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=12 - local.get $2 + local.get $6 i32.const 3 - i32.const 784 - local.set $2 + i32.const 848 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=28 - local.get $2 + local.get $6 call $~lib/string/String#padStart - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.store offset=20 - local.get $2 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 + local.get $6 + i32.store + local.get $6 i32.const 2560 - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/string/String.__concat - local.set $2 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 112 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $6 ) (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -6198,7 +6414,7 @@ i32.store offset=4 local.get $4 i32.load offset=4 - i32.const 2400 + i32.const 2432 i32.store local.get $4 local.set $15 @@ -6267,7 +6483,7 @@ drop else local.get $10 - i32.const 2400 + i32.const 2432 local.set $15 global.get $~lib/memory/__stack_pointer local.get $15 @@ -6347,7 +6563,7 @@ drop else local.get $10 - i32.const 2400 + i32.const 2432 local.set $15 global.get $~lib/memory/__stack_pointer local.get $15 @@ -6375,8 +6591,15 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 28 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -6390,8 +6613,19 @@ i64.const 0 i64.store offset=16 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=24 + i32.const 0 + i32.store offset=24 + local.get $0 + call $~lib/string/String#get:length + i32.eqz + if + i32.const 32 + i32.const 80 + i32.const 45 + i32.const 33 + call $~lib/builtins/abort + unreachable + end i32.const 0 local.set $1 i32.const 0 @@ -6401,238 +6635,221 @@ i32.const 0 local.set $4 local.get $0 + local.set $5 + local.get $0 i32.const 2464 - local.set $10 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $17 i32.store - local.get $10 + local.get $17 i32.const 0 - call $~lib/string/String#includes + call $~lib/string/String#indexOf + local.set $6 + local.get $6 + i32.const -1 + i32.xor if global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2464 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.tee $6 + i32.const 0 + local.get $6 + call $~lib/string/String#substring + local.tee $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $0 local.get $6 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $7 + i32.add + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $7 i32.const 2496 - local.set $10 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $17 i32.store - local.get $10 + local.get $17 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.tee $8 i32.store offset=12 local.get $8 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $9 + local.get $9 + i32.const 1 + i32.le_s + if + i32.const 32 + i32.const 80 + i32.const 62 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $8 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $10 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $17 i32.store offset=16 - local.get $10 + local.get $17 i32.const 0 call $~lib/number/I32.parseInt local.set $1 local.get $8 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $10 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $17 i32.store offset=16 - local.get $10 + local.get $17 i32.const 0 call $~lib/number/I32.parseInt local.set $2 - local.get $8 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=16 - local.get $10 - i32.const 2528 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - i32.const 0 - call $~lib/string/String#includes + local.get $9 + i32.const 3 + i32.ge_s if global.get $~lib/memory/__stack_pointer local.get $8 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=16 + local.tee $10 + i32.store offset=20 local.get $10 i32.const 2528 - local.set $10 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $17 i32.store - local.get $10 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.tee $9 - i32.store offset=20 - local.get $9 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=16 - local.get $10 - i32.const 0 - call $~lib/number/I32.parseInt - local.set $3 - local.get $9 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=16 - local.get $10 - i32.const 0 - call $~lib/number/I32.parseInt - local.set $4 - else - local.get $8 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=16 - local.get $10 + local.get $17 i32.const 0 - call $~lib/number/I32.parseInt - local.set $3 + call $~lib/string/String#indexOf + local.set $11 + local.get $11 + i32.const -1 + i32.xor + if + local.get $10 + i32.const 0 + local.get $11 + call $~lib/string/String#substring + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $3 + local.get $10 + local.get $11 + i32.const 1 + i32.add + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $4 + else + local.get $10 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $3 + end end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $5 - i32.store offset=24 - else - local.get $0 - local.set $5 end global.get $~lib/memory/__stack_pointer local.get $5 - i32.const 2432 - local.set $10 + i32.const 592 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $17 i32.store - local.get $10 + local.get $17 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.tee $8 - i32.store offset=12 - local.get $8 + local.tee $12 + i32.store offset=24 + local.get $12 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - call $~lib/string/String#get:length - i32.const 2 - i32.eq - if (result i32) - i32.const 3104 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - local.get $8 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=28 - local.get $10 - call $~lib/string/String.__concat - else - local.get $8 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - end - local.set $10 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $17 i32.store offset=16 - local.get $10 + local.get $17 i32.const 0 call $~lib/number/I32.parseInt - local.set $7 - local.get $8 + local.set $13 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=16 - local.get $10 - i32.const 0 - call $~lib/number/I32.parseInt - local.set $6 - local.get $8 + local.set $14 + i32.const 1 + local.set $15 + local.get $12 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $16 + local.get $16 i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=16 - local.get $10 - i32.const 0 - call $~lib/number/I32.parseInt - local.set $9 + i32.ge_s + if + local.get $12 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $14 + local.get $16 + i32.const 3 + i32.ge_s + if + local.get $12 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $15 + end + end i32.const 0 - local.get $7 - local.get $6 - local.get $9 + local.get $13 + local.get $14 + local.get $15 local.get $1 local.get $2 local.get $3 local.get $4 call $~lib/date/epochMillis call $~lib/date/Date#constructor - local.set $10 + local.set $17 global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 28 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $17 ) (func $start:std/date (local $0 i32) @@ -6645,7 +6862,7 @@ (local $7 i64) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -6653,8 +6870,11 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 i32.const 1970 local.set $2 i32.const 0 @@ -6670,6 +6890,22 @@ i32.const 0 local.set $6 local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $2 + i32.const 1900 + i32.add + local.set $2 + end + local.get $2 local.get $1 i32.const 1 i32.add @@ -6679,12 +6915,24 @@ local.get $5 local.get $6 call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 i64.const 0 i64.eq i32.eqz if i32.const 0 - i32.const 32 + i32.const 128 i32.const 3 i32.const 3 call $~lib/builtins/abort @@ -6705,757 +6953,2374 @@ i32.const 0 local.set $0 local.get $6 - local.get $5 - i32.const 1 - i32.add - local.get $4 - local.get $3 - local.get $2 - local.get $1 - local.get $0 - call $~lib/date/epochMillis - i64.const 0 - i64.eq - i32.eqz - if + i32.const 0 + i32.ge_s + if (result i32) + local.get $6 + i32.const 99 + i32.le_s + else i32.const 0 + end + if + local.get $6 + i32.const 1900 + i32.add + local.set $6 + end + local.get $6 + local.get $5 + i32.const 1 + i32.add + local.get $4 + local.get $3 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 i32.const 4 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 2018 + i32.const 70 + local.set $0 + i32.const 0 local.set $6 - i32.const 10 + i32.const 1 local.set $5 - i32.const 10 + i32.const 0 local.set $4 - i32.const 11 + i32.const 0 local.set $3 i32.const 0 local.set $2 i32.const 0 local.set $1 + local.get $0 + i32.const 0 + i32.ge_s + if (result i32) + local.get $0 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $0 + i32.const 1900 + i32.add + local.set $0 + end + local.get $0 + local.get $6 i32.const 1 + i32.add + local.get $5 + local.get $4 + local.get $3 + local.get $2 + local.get $1 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 90 local.set $0 - local.get $6 + i32.const 0 + local.set $1 + i32.const 1 + local.set $2 + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + local.get $0 + i32.const 0 + i32.ge_s + if (result i32) + local.get $0 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $0 + i32.const 1900 + i32.add + local.set $0 + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $2 + local.get $3 + local.get $4 local.get $5 + local.get $6 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 631152000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -90 + local.set $0 + i32.const 0 + local.set $6 + i32.const 1 + local.set $5 + i32.const 0 + local.set $4 + i32.const 0 + local.set $3 + i32.const 0 + local.set $2 + i32.const 0 + local.set $1 + local.get $0 + i32.const 0 + i32.ge_s + if (result i32) + local.get $0 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $0 + i32.const 1900 + i32.add + local.set $0 + end + local.get $0 + local.get $6 i32.const 1 i32.add + local.get $5 local.get $4 local.get $3 local.get $2 local.get $1 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const -65007360000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 7 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2018 + local.set $1 + i32.const 10 + local.set $2 + i32.const 10 + local.set $3 + i32.const 11 + local.set $4 + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + i32.const 1 + local.set $0 + local.get $1 + i32.const 0 + i32.ge_s + if (result i32) + local.get $1 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $1 + i32.const 1900 + i32.add + local.set $1 + end + local.get $1 + local.get $2 + i32.const 1 + i32.add + local.get $3 + local.get $4 + local.get $5 + local.get $6 local.get $0 call $~lib/date/epochMillis local.set $7 local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 i64.const 1541847600001 i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 7 + i32.const 128 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 275760 + local.set $1 + i32.const 8 + local.set $2 + i32.const 13 + local.set $3 + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + i32.const 0 + local.set $0 + local.get $1 + i32.const 0 + i32.ge_s + if (result i32) + local.get $1 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $1 + i32.const 1900 + i32.add + local.set $1 + end + local.get $1 + local.get $2 + i32.const 1 + i32.add + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $0 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 8640000000000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i64.const 1541847600001 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $7 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + local.get $7 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $7 + i64.const 1 + i64.add + call $~lib/date/Date#setTime + drop + local.get $1 + call $~lib/date/Date#getTime + local.get $7 + i64.const 1 + i64.add + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 5918283958183706 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCFullYear + i32.const 189512 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMonth + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCDate + i32.const 14 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 22 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 706 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCFullYear + i32.const 1973 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMonth + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCDate + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 399464523963984 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 984 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 568 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 568 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getTime + i64.const 399464523963000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 999 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getTime + i64.const 399464523963999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2000 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getTime + i64.const 399464523965000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const -2000 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getTime + i64.const 399464523963000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 31 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCSeconds + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 50 + call $~lib/date/Date#setUTCSeconds + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCSeconds + local.get $1 + call $~lib/date/Date#getTime + i64.const 372027318300986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 59 + call $~lib/date/Date#setUTCSeconds + local.get $1 + call $~lib/date/Date#getTime + i64.const 372027318359986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCMinutes + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 50 + call $~lib/date/Date#setUTCMinutes + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCMinutes + local.get $1 + call $~lib/date/Date#getTime + i64.const 372027315631986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 59 + call $~lib/date/Date#setUTCMinutes + local.get $1 + call $~lib/date/Date#getTime + i64.const 372027319171986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 17 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCHours + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/date/Date#setUTCHours + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCHours + local.get $1 + call $~lib/date/Date#getTime + i64.const 372027257131986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 23 + call $~lib/date/Date#setUTCHours + local.get $1 + call $~lib/date/Date#getTime + i64.const 372027339931986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCFullYear + i32.const 1973 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMonth + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCDate + local.get $1 + call $~lib/date/Date#getUTCDate + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/date/Date#setUTCDate + local.get $1 + call $~lib/date/Date#getUTCDate + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 30 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCMonth + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 31 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 2024 + call $~lib/date/Date#setUTCFullYear + local.get $1 + i32.const 2 + call $~lib/date/Date#setUTCMonth + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 29 + call $~lib/date/Date#setUTCDate + local.get $1 + call $~lib/date/Date#getTime + i64.const 1711674191274 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 144 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCDate + i32.const 29 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1362106799999 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + i32.const 20 + call $~lib/date/Date#setUTCDate + local.get $1 + call $~lib/date/Date#getTime + i64.const 1363748399999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $1 + call $~lib/date/Date#getTime + i64.const 1362106799999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 154 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1000 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getTime + i64.const 1362106800000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getTime + i64.const 1362110400000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + i32.const 1 + i32.add + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getTime + i64.const 1362114000001 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + i32.const 1 + i32.add + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getTime + i64.const 1362117600001 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + i32.const -2208 + call $~lib/date/Date#setUTCDate + local.get $1 + call $~lib/date/Date#getTime + i64.const -67301808726 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + i32.const 2208 + call $~lib/date/Date#setUTCDate + local.get $1 + call $~lib/date/Date#getTime + i64.const 314240591274 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 174 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 1467763200000 + call $~lib/date/Date#constructor + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date#getUTCDay + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 1467763200000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date#getUTCDay + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 185 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 1467763200000 + i64.const 86400000 + i64.add + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date#getUTCDay + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 186 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 1467763200000 + i64.const 86400000 + i64.add + call $~lib/date/Date#constructor + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date#getUTCDay + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 1468022400000 + call $~lib/date/Date#constructor + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date#getUTCDay + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 189 i32.const 3 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 192 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 224 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 368 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - i64.const 1541847600001 - local.set $7 - global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $7 + i64.const 1468022400000 + i64.const 1 + i64.sub call $~lib/date/Date#constructor - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getTime - local.get $7 - i64.eq + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date#getUTCDay + i32.const 5 + i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 15 + i32.const 128 + i32.const 190 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - local.get $7 - i64.const 1 + i32.const 0 + i64.const 1468022400000 + i64.const 86400000 i64.add - call $~lib/date/Date#setTime - drop - local.get $6 - call $~lib/date/Date#getTime - local.get $7 i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date#getUTCDay + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 191 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 1468022400000 + i64.const 86400000 i64.add - i64.eq + call $~lib/date/Date#constructor + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date#getUTCDay + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 17 + i32.const 128 + i32.const 192 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 0 - i64.const 5918283958183706 + i64.const 7899943856218720 call $~lib/date/Date#constructor - local.tee $6 + local.tee $1 i32.store - local.get $6 - call $~lib/date/Date#getUTCFullYear - i32.const 189512 + local.get $1 + call $~lib/date/Date#getUTCMonth + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 25 + i32.const 128 + i32.const 198 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 + i32.const 10 + call $~lib/date/Date#setUTCMonth + local.get $1 call $~lib/date/Date#getUTCMonth - i32.const 11 + i32.const 10 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 26 + i32.const 128 + i32.const 200 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCDate - i32.const 14 + local.get $1 + i32.const 2 + call $~lib/date/Date#setUTCMonth + local.get $1 + call $~lib/date/Date#getUTCMonth + i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 27 + i32.const 128 + i32.const 202 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCHours - i32.const 22 + local.get $1 + call $~lib/date/Date#getTime + i64.const 7899941177818720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCMonth + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCMonth + local.get $1 + call $~lib/date/Date#getTime + i64.const 7899967616218720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 207 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCMonth + local.get $1 + call $~lib/date/Date#getTime + i64.const 7899967616218720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 13 + call $~lib/date/Date#setUTCMonth + local.get $1 + call $~lib/date/Date#getTime + i64.const 7900001830618720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 7941202527925698 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCFullYear + i32.const 253616 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 28 + i32.const 128 + i32.const 219 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCMinutes - i32.const 9 + local.get $1 + i32.const 1976 + call $~lib/date/Date#setUTCFullYear + local.get $1 + call $~lib/date/Date#getUTCFullYear + i32.const 1976 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 29 + i32.const 128 + i32.const 221 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCSeconds - i32.const 43 + local.get $1 + i32.const 20212 + call $~lib/date/Date#setUTCFullYear + local.get $1 + call $~lib/date/Date#getUTCFullYear + i32.const 20212 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 30 + i32.const 128 + i32.const 223 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCMilliseconds - i32.const 706 + local.get $1 + i32.const 71 + call $~lib/date/Date#setUTCFullYear + local.get $1 + call $~lib/date/Date#getUTCFullYear + i32.const 71 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 31 + i32.const 128 + i32.const 225 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 0 - i64.const 123814991274 + i64.const -62167219200000 call $~lib/date/Date#constructor - local.tee $6 + local.tee $1 i32.store - local.get $6 - call $~lib/date/Date#getUTCFullYear - i32.const 1973 - i32.eq + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2592 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 37 + i32.const 128 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCMonth - i32.const 11 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62167219200000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2672 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 38 + i32.const 128 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCDate - i32.const 4 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62127219200000 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2752 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 39 + i32.const 128 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCHours - i32.const 1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1231231231020 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2832 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 40 + i32.const 128 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCMinutes - i32.const 3 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1231231231456 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2912 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 41 + i32.const 128 + i32.const 239 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCSeconds - i32.const 11 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 322331231231020 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2992 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 42 + i32.const 128 + i32.const 241 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCMilliseconds - i32.const 274 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 253402300799999 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3072 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 43 + i32.const 128 + i32.const 243 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 0 - i64.const 399464523963984 + i64.const 253402300800000 call $~lib/date/Date#constructor - local.tee $6 + local.tee $1 i32.store - local.get $6 - call $~lib/date/Date#getUTCMilliseconds - i32.const 984 - i32.eq + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3152 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 49 + i32.const 128 + i32.const 245 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 12 - call $~lib/date/Date#setUTCMilliseconds - local.get $6 - call $~lib/date/Date#getUTCMilliseconds - i32.const 12 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62847038769226 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3232 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 51 + i32.const 128 + i32.const 247 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 568 - call $~lib/date/Date#setUTCMilliseconds - local.get $6 - call $~lib/date/Date#getUTCMilliseconds - i32.const 568 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 3312 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const 192067200000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 53 + i32.const 128 + i32.const 254 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 0 - call $~lib/date/Date#setUTCMilliseconds - local.get $6 - i32.const 999 - call $~lib/date/Date#setUTCMilliseconds global.get $~lib/memory/__stack_pointer - i32.const 0 - i64.const 372027318331986 - call $~lib/date/Date#constructor - local.tee $6 + i32.const 3584 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 i32.store - local.get $6 - call $~lib/date/Date#getUTCSeconds - i32.const 31 - i32.eq + local.get $1 + call $~lib/date/Date#getTime + i64.const 192067200000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 62 + i32.const 128 + i32.const 256 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 12 - call $~lib/date/Date#setUTCSeconds - local.get $6 - call $~lib/date/Date#getUTCSeconds - i32.const 12 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 3632 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const 11860387200000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 64 + i32.const 128 + i32.const 258 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 50 - call $~lib/date/Date#setUTCSeconds - local.get $6 - call $~lib/date/Date#getUTCSeconds - i32.const 50 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 3680 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const 192112496000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 66 + i32.const 128 + i32.const 262 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 0 - call $~lib/date/Date#setUTCSeconds - local.get $6 - i32.const 59 - call $~lib/date/Date#setUTCSeconds global.get $~lib/memory/__stack_pointer - i32.const 0 - i64.const 372027318331986 - call $~lib/date/Date#constructor - local.tee $6 + i32.const 3744 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 i32.store - local.get $6 - call $~lib/date/Date#getUTCMinutes - i32.const 45 - i32.eq + local.get $1 + call $~lib/date/Date#getTime + i64.const 192112496456 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 75 + i32.const 128 + i32.const 266 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 12 - call $~lib/date/Date#setUTCMinutes - local.get $6 - call $~lib/date/Date#getUTCMinutes - i32.const 12 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 3824 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const 192112496456 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 77 + i32.const 128 + i32.const 270 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 50 - call $~lib/date/Date#setUTCMinutes - local.get $6 - call $~lib/date/Date#getUTCMinutes - i32.const 50 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 3904 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const -62167219200000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 79 + i32.const 128 + i32.const 273 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 0 - call $~lib/date/Date#setUTCMinutes - local.get $6 - i32.const 59 - call $~lib/date/Date#setUTCMinutes global.get $~lib/memory/__stack_pointer - i32.const 0 - i64.const 372027318331986 - call $~lib/date/Date#constructor - local.tee $6 + i32.const 3936 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 i32.store - local.get $6 - call $~lib/date/Date#getUTCHours - i32.const 17 - i32.eq + local.get $1 + call $~lib/date/Date#getTime + i64.const -62135596800000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 88 + i32.const 128 + i32.const 276 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 12 - call $~lib/date/Date#setUTCHours - local.get $6 - call $~lib/date/Date#getUTCHours - i32.const 12 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 3968 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const 189302400000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 90 + i32.const 128 + i32.const 279 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 2 - call $~lib/date/Date#setUTCHours - local.get $6 - call $~lib/date/Date#getUTCHours - i32.const 2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4000 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const 191980800000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 92 + i32.const 128 + i32.const 282 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 0 - call $~lib/date/Date#setUTCHours - local.get $6 - i32.const 23 - call $~lib/date/Date#setUTCHours global.get $~lib/memory/__stack_pointer - i32.const 0 - i64.const 123814991274 - call $~lib/date/Date#constructor - local.tee $6 + i32.const 3312 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 i32.store - local.get $6 - call $~lib/date/Date#getUTCFullYear - i32.const 1973 - i32.eq + local.get $1 + call $~lib/date/Date#getTime + i64.const 192067200000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 101 + i32.const 128 + i32.const 285 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/date/Date#getUTCMonth - i32.const 11 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4048 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const 192112440000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 102 + i32.const 128 + i32.const 288 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 12 - call $~lib/date/Date#setUTCDate - local.get $6 - call $~lib/date/Date#getUTCDate - i32.const 12 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 3680 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/date/Date.fromString + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getTime + i64.const 192112496000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 106 + i32.const 128 + i32.const 291 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 2 - call $~lib/date/Date#setUTCDate - local.get $6 - call $~lib/date/Date#getUTCDate - i32.const 2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -8640000000000000 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 8640000000000000 + call $~lib/date/Date#constructor + local.tee $2 + i32.store offset=12 + local.get $1 + call $~lib/date/Date#getTime + i64.const -8640000000000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 309 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/date/Date#getTime + i64.const 8640000000000000 + i64.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 108 + i32.const 128 + i32.const 310 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 1 - call $~lib/date/Date#setUTCDate - local.get $6 - i32.const 30 - call $~lib/date/Date#setUTCDate - local.get $6 - i32.const 1 - call $~lib/date/Date#setUTCMonth - local.get $6 - i32.const 1 - call $~lib/date/Date#setUTCDate - local.get $6 - i32.const 31 - call $~lib/date/Date#setUTCDate - local.get $6 - i32.const 2024 - call $~lib/date/Date#setUTCFullYear - local.get $6 - i32.const 2 - call $~lib/date/Date#setUTCMonth - local.get $6 - i32.const 1 - call $~lib/date/Date#setUTCDate - local.get $6 - i32.const 29 - call $~lib/date/Date#setUTCDate - global.get $~lib/memory/__stack_pointer - i32.const 0 - i64.const 7899943856218720 - call $~lib/date/Date#constructor - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getUTCMonth - i32.const 3 + local.get $1 + call $~lib/date/Date#getUTCFullYear + i32.const -271821 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 130 + i32.const 128 + i32.const 312 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 10 - call $~lib/date/Date#setUTCMonth - local.get $6 - call $~lib/date/Date#getUTCMonth - i32.const 10 + local.get $2 + call $~lib/date/Date#getUTCFullYear + i32.const 275760 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 132 + i32.const 128 + i32.const 313 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 2 - call $~lib/date/Date#setUTCMonth - local.get $6 + local.get $1 call $~lib/date/Date#getUTCMonth - i32.const 2 + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 134 + i32.const 128 + i32.const 315 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 1 - call $~lib/date/Date#setUTCMonth - local.get $6 - i32.const 12 - call $~lib/date/Date#setUTCMonth - global.get $~lib/memory/__stack_pointer - i32.const 0 - i64.const 7941202527925698 - call $~lib/date/Date#constructor - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getUTCFullYear - i32.const 253616 + local.get $2 + call $~lib/date/Date#getUTCMonth + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 143 + i32.const 128 + i32.const 316 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 1976 - call $~lib/date/Date#setUTCFullYear - local.get $6 - call $~lib/date/Date#getUTCFullYear - i32.const 1976 + local.get $1 + call $~lib/date/Date#getUTCDate + i32.const 20 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 145 + i32.const 128 + i32.const 318 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 20212 - call $~lib/date/Date#setUTCFullYear - local.get $6 - call $~lib/date/Date#getUTCFullYear - i32.const 20212 + local.get $2 + call $~lib/date/Date#getUTCDate + i32.const 13 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 147 + i32.const 128 + i32.const 319 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i64.const 1231231231020 - call $~lib/date/Date#constructor - local.tee $6 - i32.store - local.get $6 + local.get $1 call $~lib/date/Date#toISOString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=4 local.get $8 - i32.const 2592 + i32.const 4112 local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 @@ -7465,26 +9330,20 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 153 + i32.const 128 + i32.const 321 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i64.const 1231231231456 - call $~lib/date/Date#constructor - local.tee $6 - i32.store - local.get $6 + local.get $2 call $~lib/date/Date#toISOString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=4 local.get $8 - i32.const 2672 + i32.const 4192 local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 @@ -7494,222 +9353,174 @@ i32.eqz if i32.const 0 - i32.const 32 - i32.const 155 + i32.const 128 + i32.const 322 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 0 - i64.const 322331231231020 + i64.const 8640000000000000 + i64.const 1 + i64.sub call $~lib/date/Date#constructor - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#toISOString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2752 - local.set $8 + local.tee $3 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/string/String.__eq + i32.const 0 + i64.const -8640000000000000 + i64.const 1 + i64.add + call $~lib/date/Date#constructor + local.tee $4 + i32.store offset=20 + local.get $4 + call $~lib/date/Date#getUTCFullYear + i32.const -271821 + i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 157 + i32.const 128 + i32.const 327 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 2832 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/date/Date.fromString - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getTime - i64.const 192067200000 - i64.eq + local.get $4 + call $~lib/date/Date#getUTCMonth + i32.const 3 + i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 164 + i32.const 128 + i32.const 328 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3136 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/date/Date.fromString - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getTime - i64.const 192067200000 - i64.eq + local.get $4 + call $~lib/date/Date#getUTCDate + i32.const 20 + i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 166 + i32.const 128 + i32.const 329 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3184 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/date/Date.fromString - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getTime - i64.const 11860387200000 - i64.eq + local.get $4 + call $~lib/date/Date#getUTCHours + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 330 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/date/Date#getUTCMinutes + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 331 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/date/Date#getUTCSeconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 332 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/date/Date#getUTCMilliseconds + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 168 + i32.const 128 + i32.const 333 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 3232 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/date/Date.fromString + local.get $3 + call $~lib/date/Date#toISOString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=4 local.get $8 - call $~lib/date/Date#getTime - i32.const 3280 + i32.const 4272 local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=8 local.get $8 - call $~lib/date/Date.fromString - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/date/Date#getTime - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3328 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - call $~lib/date/Date.fromString - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getTime - i64.const 192112496000 - i64.eq + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 178 + i32.const 128 + i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3392 + local.get $4 + call $~lib/date/Date#toISOString local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=4 local.get $8 - call $~lib/date/Date.fromString - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getTime - i64.const 192112496456 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3472 + i32.const 4352 local.set $8 global.get $~lib/memory/__stack_pointer local.get $8 - i32.store offset=4 + i32.store offset=8 local.get $8 - call $~lib/date/Date.fromString - local.tee $6 - i32.store - local.get $6 - call $~lib/date/Date#getTime - i64.const 192112496456 - i64.eq + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 186 + i32.const 128 + i32.const 336 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/date/Date#constructor (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) + (local $2 i64) + (local $3 i64) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7722,25 +9533,70 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.const 3 call $~lib/rt/itcms/__new local.tee $0 i32.store end local.get $0 - i64.const 0 - call $~lib/date/Date#set:epochMillis + i32.const 0 + call $~lib/date/Date#set:year + local.get $0 + i32.const 0 + call $~lib/date/Date#set:month + local.get $0 + i32.const 0 + call $~lib/date/Date#set:day local.get $0 local.get $1 call $~lib/date/Date#set:epochMillis + local.get $1 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 95 + i32.const 35 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + local.set $3 + i32.const 86400000 + i64.extend_i32_s local.set $2 + local.get $3 + i64.const 0 + i64.ge_s + if (result i64) + local.get $3 + else + local.get $3 + local.get $2 + i64.sub + i64.const 1 + i64.add + end + local.get $2 + i64.div_s + i32.wrap_i64 + call $~lib/date/ymdFromEpochDays + call $~lib/date/Date#set:year + local.get $0 + global.get $~lib/date/_month + call $~lib/date/Date#set:month + local.get $0 + global.get $~lib/date/_day + call $~lib/date/Date#set:day + local.get $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -7769,8 +9625,8 @@ i32.gt_s end if - i32.const 592 - i32.const 720 + i32.const 656 + i32.const 784 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -7779,7 +9635,7 @@ local.get $0 i32.eqz if - i32.const 784 + i32.const 848 local.set $8 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -8051,7 +9907,7 @@ i32.const 0 i32.eq if - i32.const 2400 + i32.const 2432 local.set $6 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -8084,6 +9940,139 @@ global.set $~lib/memory/__stack_pointer local.get $6 ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + local.set $6 + local.get $2 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + local.set $7 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 + local.get $6 + local.tee $5 + local.get $7 + local.tee $4 + local.get $5 + local.get $4 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $8 + i32.sub + local.set $10 + local.get $10 + i32.eqz + if + i32.const 2432 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $8 + i32.eqz + if (result i32) + local.get $9 + local.get $3 + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $0 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store + local.get $11 + local.get $0 + local.get $8 + i32.add + local.get $10 + call $~lib/memory/memory.copy + local.get $11 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + ) (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) @@ -8152,8 +10141,8 @@ i32.load offset=12 i32.ge_u if - i32.const 272 - i32.const 2928 + i32.const 368 + i32.const 3408 i32.const 92 i32.const 42 call $~lib/builtins/abort @@ -8177,8 +10166,8 @@ local.get $2 i32.eqz if - i32.const 2976 - i32.const 2928 + i32.const 3456 + i32.const 3408 i32.const 96 i32.const 40 call $~lib/builtins/abort