if (!Int32Array.__proto__.from) { Object.defineProperty(Int32Array.__proto__, 'from', { value: function(obj) { obj = Object(obj); if (!obj['length']) { return new this(0); } let typed_array = new this(obj.length); for (let i = 0; i < typed_array.length; i++) { typed_array[i] = obj[i]; } return typed_array; } }); } if (!Array.prototype.copyWithin) { Array.prototype.copyWithin = function(target, start, end) { let O = Object(this); let len = O.length >>> 0; let to = target | 0; let from = start | 0; let count = Math.min(Math.min(end | 0, len) - from, len - to); let direction = 1; if (from < to && to < (from + count)) { direction = -1; from += count - 1; to += count - 1; } while (count > 0) { O[to] = O[from]; from += direction; to += direction; count--; } return O; }; } if (!Array.prototype.fill) { Object.defineProperty(Array.prototype, 'fill', { value: function(value, start, end) { end = end | 0; let O = Object(this); let k = start | 0; while (k < end) { O[k] = value; k++; } return O; } }); } if (!Int8Array.prototype.copyWithin) { Int8Array.prototype.copyWithin = Array.prototype.copyWithin; } if (!Int8Array.prototype.fill) { Int8Array.prototype.fill = Array.prototype.fill; } if (!Int32Array.prototype.fill) { Int32Array.prototype.fill = Array.prototype.fill; } if (!Int8Array.prototype.slice) { Object.defineProperty(Int8Array.prototype, 'slice', { value: function(begin, end) { return new Int8Array(Array.prototype.slice.call(this, begin, end)); } }); }