/** * Copyright(c) Live2D Inc. All rights reserved. * * Use of this source code is governed by the Live2D Proprietary Software license * that can be found at https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html. */ var Live2DCubismCore; (function (Live2DCubismCore) { /** C calls. */ var _csm = /** @class */ (function () { function _csm() { } _csm.getVersion = function () { return _em.ccall("csmGetVersion", "number", [], []); }; _csm.getLatestMocVersion = function () { return _em.ccall("csmGetLatestMocVersion", "number", [], []); }; _csm.getMocVersion = function (moc, mocSize) { return _em.ccall("csmGetMocVersion", "number", ["number", "number"], [moc, mocSize]); }; _csm.getLogFunction = function () { return _em.ccall("csmGetLogFunction", "number", [], []); }; _csm.getSizeofModel = function (moc) { return _em.ccall("csmGetSizeofModel", "number", ["number"], [moc]); }; _csm.reviveMocInPlace = function (memory, mocSize) { return _em.ccall("csmReviveMocInPlace", "number", ["number", "number"], [memory, mocSize]); }; _csm.initializeModelInPlace = function (moc, memory, modelSize) { return _em.ccall("csmInitializeModelInPlace", "number", ["number", "number", "number"], [moc, memory, modelSize]); }; _csm.hasMocConsistency = function (memory, mocSize) { return _em.ccall("csmHasMocConsistency", "number", ["number", "number"], [memory, mocSize]); }; _csm.getRenderOrders = function (model) { return _em.ccall("csmGetRenderOrders", "number", ["number"], [model]); }; _csm.getParameterCount = function (model) { return _em.ccall("csmGetParameterCount", "number", ["number"], [model]); }; _csm.getParameterIds = function (model) { return _em.ccall("csmGetParameterIds", "number", ["number"], [model]); }; _csm.getParameterMinimumValues = function (model) { return _em.ccall("csmGetParameterMinimumValues", "number", ["number"], [model]); }; _csm.getParameterTypes = function (model) { return _em.ccall("csmGetParameterTypes", "number", ["number"], [model]); }; _csm.getParameterMaximumValues = function (model) { return _em.ccall("csmGetParameterMaximumValues", "number", ["number"], [model]); }; _csm.getParameterDefaultValues = function (model) { return _em.ccall("csmGetParameterDefaultValues", "number", ["number"], [model]); }; _csm.getParameterValues = function (model) { return _em.ccall("csmGetParameterValues", "number", ["number"], [model]); }; _csm.getParameterRepeats = function (model) { return _em.ccall("csmGetParameterRepeats", "number", ["number"], [model]); }; _csm.getParameterKeyCounts = function (model) { return _em.ccall("csmGetParameterKeyCounts", "number", ["number"], [model]); }; _csm.getParameterKeyValues = function (model) { return _em.ccall("csmGetParameterKeyValues", "number", ["number"], [model]); }; _csm.getPartCount = function (model) { return _em.ccall("csmGetPartCount", "number", ["number"], [model]); }; _csm.getPartIds = function (model) { return _em.ccall("csmGetPartIds", "number", ["number"], [model]); }; _csm.getPartOpacities = function (model) { return _em.ccall("csmGetPartOpacities", "number", ["number"], [model]); }; _csm.getPartParentPartIndices = function (model) { return _em.ccall("csmGetPartParentPartIndices", "number", ["number"], [model]); }; _csm.getPartOffscreenIndices = function (model) { return _em.ccall("csmGetPartOffscreenIndices", "number", ["number"], [model]); }; _csm.getDrawableCount = function (model) { return _em.ccall("csmGetDrawableCount", "number", ["number"], [model]); }; _csm.getDrawableIds = function (model) { return _em.ccall("csmGetDrawableIds", "number", ["number"], [model]); }; _csm.getDrawableConstantFlags = function (model) { return _em.ccall("csmGetDrawableConstantFlags", "number", ["number"], [model]); }; _csm.getDrawableDynamicFlags = function (model) { return _em.ccall("csmGetDrawableDynamicFlags", "number", ["number"], [model]); }; _csm.getDrawableTextureIndices = function (model) { return _em.ccall("csmGetDrawableTextureIndices", "number", ["number"], [model]); }; _csm.getDrawableDrawOrders = function (model) { return _em.ccall("csmGetDrawableDrawOrders", "number", ["number"], [model]); }; _csm.getDrawableOpacities = function (model) { return _em.ccall("csmGetDrawableOpacities", "number", ["number"], [model]); }; _csm.getDrawableMaskCounts = function (model) { return _em.ccall("csmGetDrawableMaskCounts", "number", ["number"], [model]); }; _csm.getDrawableMasks = function (model) { return _em.ccall("csmGetDrawableMasks", "number", ["number"], [model]); }; _csm.getDrawableVertexCounts = function (model) { return _em.ccall("csmGetDrawableVertexCounts", "number", ["number"], [model]); }; _csm.getDrawableVertexPositions = function (model) { return _em.ccall("csmGetDrawableVertexPositions", "number", ["number"], [model]); }; _csm.getDrawableVertexUvs = function (model) { return _em.ccall("csmGetDrawableVertexUvs", "number", ["number"], [model]); }; _csm.getDrawableIndexCounts = function (model) { return _em.ccall("csmGetDrawableIndexCounts", "number", ["number"], [model]); }; _csm.getDrawableIndices = function (model) { return _em.ccall("csmGetDrawableIndices", "number", ["number"], [model]); }; _csm.getDrawableMultiplyColors = function (model) { return _em.ccall("csmGetDrawableMultiplyColors", "number", ["number"], [model]); }; _csm.getDrawableScreenColors = function (model) { return _em.ccall("csmGetDrawableScreenColors", "number", ["number"], [model]); }; _csm.getDrawableParentPartIndices = function (model) { return _em.ccall("csmGetDrawableParentPartIndices", "number", ["number"], [model]); }; _csm.getDrawableBlendModes = function (model) { return _em.ccall("csmGetDrawableBlendModes", "number", ["number"], [model]); }; _csm.getOffscreenCount = function (model) { return _em.ccall("csmGetOffscreenCount", "number", ["number"], [model]); }; _csm.getOffscreenBlendModes = function (model) { return _em.ccall("csmGetOffscreenBlendModes", "number", ["number"], [model]); }; _csm.getOffscreenOpacities = function (model) { return _em.ccall("csmGetOffscreenOpacities", "number", ["number"], [model]); }; _csm.getOffscreenOwnerIndices = function (model) { return _em.ccall("csmGetOffscreenOwnerIndices", "number", ["number"], [model]); }; _csm.getOffscreenMultiplyColors = function (model) { return _em.ccall("csmGetOffscreenMultiplyColors", "number", ["number"], [model]); }; _csm.getOffscreenScreenColors = function (model) { return _em.ccall("csmGetOffscreenScreenColors", "number", ["number"], [model]); }; _csm.getOffscreenMaskCounts = function (model) { return _em.ccall("csmGetOffscreenMaskCounts", "number", ["number"], [model]); }; _csm.getOffscreenMasks = function (model) { return _em.ccall("csmGetOffscreenMasks", "number", ["number"], [model]); }; _csm.getOffscreenConstantFlags = function (model) { return _em.ccall("csmGetOffscreenConstantFlags", "number", ["number"], [model]); }; _csm.mallocMoc = function (mocSize) { return _em.ccall("csmMallocMoc", "number", ["number"], [mocSize]); }; _csm.mallocModelAndInitialize = function (moc) { return _em.ccall("csmMallocModelAndInitialize", "number", ["number"], [moc]); }; _csm.malloc = function (size) { return _em.ccall("csmMalloc", "number", ["number"], [size]); }; _csm.setLogFunction = function (handler) { _em.ccall("csmSetLogFunction", null, ["number"], [handler]); }; _csm.updateModel = function (model) { _em.ccall("csmUpdateModel", null, ["number"], [model]); }; _csm.readCanvasInfo = function (model, outSizeInPixels, outOriginInPixels, outPixelsPerUnit) { _em.ccall("csmReadCanvasInfo", null, ["number", "number", "number", "number"], [model, outSizeInPixels, outOriginInPixels, outPixelsPerUnit]); }; _csm.resetDrawableDynamicFlags = function (model) { _em.ccall("csmResetDrawableDynamicFlags", null, ["number"], [model]); }; _csm.free = function (memory) { _em.ccall("csmFree", null, ["number"], [memory]); }; _csm.initializeAmountOfMemory = function (size) { _em.ccall("csmInitializeAmountOfMemory", null, ["number"], [size]); }; return _csm; }()); /** Necessary alignment for mocs (in bytes). */ Live2DCubismCore.AlignofMoc = 64; /** Necessary alignment for models (in bytes). */ Live2DCubismCore.AlignofModel = 16; /** .moc3 file version Unknown */ Live2DCubismCore.MocVersion_Unknown = 0; /** .moc3 file version 3.0.00 - 3.2.07 */ Live2DCubismCore.MocVersion_30 = 1; /** .moc3 file version 3.3.00 - 3.3.03 */ Live2DCubismCore.MocVersion_33 = 2; /** .moc3 file version 4.0.00 - 4.1.05 */ Live2DCubismCore.MocVersion_40 = 3; /** .moc3 file version 4.2.00 - 4.2.04 */ Live2DCubismCore.MocVersion_42 = 4; /** .moc3 file version 5.0.00 - 5.2.03 */ Live2DCubismCore.MocVersion_50 = 5; /** .moc3 file version 5.3.00 - */ Live2DCubismCore.MocVersion_53 = 6; /** Normal Parameter. */ Live2DCubismCore.ParameterType_Normal = 0; /** Parameter for blend shape. */ Live2DCubismCore.ParameterType_BlendShape = 1; /** Normal blend. */ Live2DCubismCore.ColorBlendType_Normal = 0; /** Add blend. */ Live2DCubismCore.ColorBlendType_Add = 3; /** AddGlow blend. */ Live2DCubismCore.ColorBlendType_AddGlow = 4; /** Darken blend. */ Live2DCubismCore.ColorBlendType_Darken = 5; /** Multiply blend. */ Live2DCubismCore.ColorBlendType_Multiply = 6; /** ColorBurn blend. */ Live2DCubismCore.ColorBlendType_ColorBurn = 7; /** LinearBurn blend. */ Live2DCubismCore.ColorBlendType_LinearBurn = 8; /** Lighten blend. */ Live2DCubismCore.ColorBlendType_Lighten = 9; /** Screen blend. */ Live2DCubismCore.ColorBlendType_Screen = 10; /** ColorDodge blend. */ Live2DCubismCore.ColorBlendType_ColorDodge = 11; /** Overlay blend. */ Live2DCubismCore.ColorBlendType_Overlay = 12; /** SoftLight blend. */ Live2DCubismCore.ColorBlendType_SoftLight = 13; /** HardLight blend. */ Live2DCubismCore.ColorBlendType_HardLight = 14; /** LinearLight blend. */ Live2DCubismCore.ColorBlendType_LinearLight = 15; /** Hue blend. */ Live2DCubismCore.ColorBlendType_Hue = 16; /** Color blend. */ Live2DCubismCore.ColorBlendType_Color = 17; /** Add compatible blend. */ Live2DCubismCore.ColorBlendType_AddCompatible = 1; /** Multiply compatible blend. */ Live2DCubismCore.ColorBlendType_MultiplyCompatible = 2; /** Over blend. */ Live2DCubismCore.AlphaBlendType_Over = 0; /** Atop blend. */ Live2DCubismCore.AlphaBlendType_Atop = 1; /** Out blend. */ Live2DCubismCore.AlphaBlendType_Out = 2; /** ConjointOver blend. */ Live2DCubismCore.AlphaBlendType_ConjointOver = 3; /** DisjointOver blend. */ Live2DCubismCore.AlphaBlendType_DisjointOver = 4; ; /** Cubism version. */ var Version = /** @class */ (function () { function Version() { } /** * Queries Core version. * * @return Core version. */ Version.csmGetVersion = function () { return _csm.getVersion(); }; /** * Gets Moc file supported latest version. * * @return Moc file latest format version. */ Version.csmGetLatestMocVersion = function () { return _csm.getLatestMocVersion(); }; Version.csmGetMocVersion = function (data, mocBytes) { if (data instanceof Moc) { return _csm.getMocVersion(data._ptr, mocBytes.byteLength); } // Allocate memory. var memory = _csm.mallocMoc(data.byteLength); if (!memory) { return 0; } // Initialize memory. var destination = new Uint8Array(_em.HEAPU8.buffer, memory, data.byteLength); destination.set(new Uint8Array(data)); var mocVersion = _csm.getMocVersion(memory, data.byteLength); _csm.free(memory); return mocVersion; }; return Version; }()); Live2DCubismCore.Version = Version; /** Cubism logging. */ var Logging = /** @class */ (function () { function Logging() { } /** * Sets log handler. * * @param handler Handler to use. */ Logging.csmSetLogFunction = function (handler) { // Cache log handler. Logging.logFunction = handler; // Wrap function to pointer. var pointer = _em.addFunction(Logging.wrapLogFunction, 'vi'); // Sets log handler. _csm.setLogFunction(pointer); }; /** * Queries log handler. * * @return Log handler. */ Logging.csmGetLogFunction = function () { return Logging.logFunction; }; /** * Wrap log function. * * @param messagePtr number * * @return string */ Logging.wrapLogFunction = function (messagePtr) { // Pointer to string. var messageStr = _em.UTF8ToString(messagePtr); // Run log function. Logging.logFunction(messageStr); }; return Logging; }()); Live2DCubismCore.Logging = Logging; /** Cubism moc. */ var Moc = /** @class */ (function () { /** * Initializes instance. * * @param mocBytes Moc bytes. */ function Moc(mocBytes) { // Allocate memory. var memory = _csm.mallocMoc(mocBytes.byteLength); if (!memory) { return; } // Initialize memory. var destination = new Uint8Array(_em.HEAPU8.buffer, memory, mocBytes.byteLength); destination.set(new Uint8Array(mocBytes)); // Revive moc. this._ptr = _csm.reviveMocInPlace(memory, mocBytes.byteLength); if (!this._ptr) { _csm.free(memory); } } /** * Checks consistency of a moc. * * @param mocBytes Moc bytes. * * @returns '1' if Moc is valid; '0' otherwise. */ Moc.prototype.hasMocConsistency = function (mocBytes) { // Allocate memory. var memory = _csm.mallocMoc(mocBytes.byteLength); if (!memory) { return; } // Initialize memory. var destination = new Uint8Array(_em.HEAPU8.buffer, memory, mocBytes.byteLength); destination.set(new Uint8Array(mocBytes)); var hasConsistency = _csm.hasMocConsistency(memory, mocBytes.byteLength); _csm.free(memory); return hasConsistency; }; /** Creates [[Moc]] from [[ArrayBuffer]]. * * @param buffer Array buffer * * @return [[Moc]] on success; [[null]] otherwise. */ Moc.fromArrayBuffer = function (buffer) { if (!buffer) { return null; } var moc = new Moc(buffer); return (moc._ptr) ? moc : null; }; /** Releases instance. */ Moc.prototype._release = function () { _csm.free(this._ptr); this._ptr = 0; }; return Moc; }()); Live2DCubismCore.Moc = Moc; /** Cubism model. */ var Model = /** @class */ (function () { /** * Initializes instance. * * @param moc Moc */ function Model(moc) { this._ptr = _csm.mallocModelAndInitialize(moc._ptr); if (!this._ptr) { return; } this.parameters = new Parameters(this._ptr); this.parts = new Parts(this._ptr); this.drawables = new Drawables(this._ptr); this.offscreens = new Offscreens(this._ptr); this.canvasinfo = new CanvasInfo(this._ptr); var length = _csm.getDrawableCount(this._ptr) + _csm.getOffscreenCount(this._ptr); this.renderOrders = new Int32Array(_em.HEAP32.buffer, _csm.getRenderOrders(this._ptr), length); } /** * Creates [[Model]] from [[Moc]]. * * @param moc Moc * * @return [[Model]] on success; [[null]] otherwise. */ Model.fromMoc = function (moc) { var model = new Model(moc); return (model._ptr) ? model : null; }; /** * Gets object render orders. * * @returns {Int32Array} Object render orders. */ Model.prototype.getRenderOrders = function () { return this.renderOrders; }; /** Updates instance. */ Model.prototype.update = function () { _csm.updateModel(this._ptr); }; /** Releases instance. */ Model.prototype.release = function () { _csm.free(this._ptr); this._ptr = 0; }; return Model; }()); Live2DCubismCore.Model = Model; /** Canvas information interface. */ var CanvasInfo = /** @class */ (function () { /** * Initializes instance. * * @param modelPtr Native model pointer. */ function CanvasInfo(modelPtr) { if (!modelPtr) { return; } // Preserve the pointer ant heap for get data throw args. var _canvasSize_data = new Float32Array(2); var _canvasSize_nDataBytes = _canvasSize_data.length * _canvasSize_data.BYTES_PER_ELEMENT; var _canvasSize_dataPtr = _csm.malloc(_canvasSize_nDataBytes); var _canvasSize_dataHeap = new Uint8Array(_em.HEAPU8.buffer, _canvasSize_dataPtr, _canvasSize_nDataBytes); _canvasSize_dataHeap.set(new Uint8Array(_canvasSize_data.buffer)); var _canvasOrigin_data = new Float32Array(2); var _canvasOrigin_nDataBytes = _canvasOrigin_data.length * _canvasOrigin_data.BYTES_PER_ELEMENT; var _canvasOrigin_dataPtr = _csm.malloc(_canvasOrigin_nDataBytes); var _canvasOrigin_dataHeap = new Uint8Array(_em.HEAPU8.buffer, _canvasOrigin_dataPtr, _canvasOrigin_nDataBytes); _canvasOrigin_dataHeap.set(new Uint8Array(_canvasOrigin_data.buffer)); var _canvasPPU_data = new Float32Array(1); var _canvasPPU_nDataBytes = _canvasPPU_data.length * _canvasPPU_data.BYTES_PER_ELEMENT; var _canvasPPU_dataPtr = _csm.malloc(_canvasPPU_nDataBytes); var _canvasPPU_dataHeap = new Uint8Array(_em.HEAPU8.buffer, _canvasPPU_dataPtr, _canvasPPU_nDataBytes); _canvasPPU_dataHeap.set(new Uint8Array(_canvasPPU_data.buffer)); // Call function and get result _csm.readCanvasInfo(modelPtr, _canvasSize_dataHeap.byteOffset, _canvasOrigin_dataHeap.byteOffset, _canvasPPU_dataHeap.byteOffset); _canvasSize_data = new Float32Array(_canvasSize_dataHeap.buffer, _canvasSize_dataHeap.byteOffset, _canvasSize_dataHeap.length); _canvasOrigin_data = new Float32Array(_canvasOrigin_dataHeap.buffer, _canvasOrigin_dataHeap.byteOffset, _canvasOrigin_dataHeap.length); _canvasPPU_data = new Float32Array(_canvasPPU_dataHeap.buffer, _canvasPPU_dataHeap.byteOffset, _canvasPPU_dataHeap.length); this.CanvasWidth = _canvasSize_data[0]; this.CanvasHeight = _canvasSize_data[1]; this.CanvasOriginX = _canvasOrigin_data[0]; this.CanvasOriginY = _canvasOrigin_data[1]; this.PixelsPerUnit = _canvasPPU_data[0]; // Free heap memory _csm.free(_canvasSize_dataHeap.byteOffset); _csm.free(_canvasOrigin_dataHeap.byteOffset); _csm.free(_canvasPPU_dataHeap.byteOffset); } return CanvasInfo; }()); Live2DCubismCore.CanvasInfo = CanvasInfo; /** Cubism model parameters */ var Parameters = /** @class */ (function () { /** * Initializes instance. * * @param modelPtr Native model. */ function Parameters(modelPtr) { var length = 0; var length2 = null; this.count = _csm.getParameterCount(modelPtr); length = _csm.getParameterCount(modelPtr); this.ids = new Array(length); var _ids = new Uint32Array(_em.HEAPU32.buffer, _csm.getParameterIds(modelPtr), length); for (var i = 0; i < _ids.length; i++) { this.ids[i] = _em.UTF8ToString(_ids[i]); } length = _csm.getParameterCount(modelPtr); this.minimumValues = new Float32Array(_em.HEAPF32.buffer, _csm.getParameterMinimumValues(modelPtr), length); length = _csm.getParameterCount(modelPtr); this.types = new Int32Array(_em.HEAP32.buffer, _csm.getParameterTypes(modelPtr), length); length = _csm.getParameterCount(modelPtr); this.maximumValues = new Float32Array(_em.HEAPF32.buffer, _csm.getParameterMaximumValues(modelPtr), length); length = _csm.getParameterCount(modelPtr); this.defaultValues = new Float32Array(_em.HEAPF32.buffer, _csm.getParameterDefaultValues(modelPtr), length); length = _csm.getParameterCount(modelPtr); this.values = new Float32Array(_em.HEAPF32.buffer, _csm.getParameterValues(modelPtr), length); length = _csm.getParameterCount(modelPtr); this.repeats = new Int32Array(_em.HEAP32.buffer, _csm.getParameterRepeats(modelPtr), length); length = _csm.getParameterCount(modelPtr); this.keyCounts = new Int32Array(_em.HEAP32.buffer, _csm.getParameterKeyCounts(modelPtr), length); length = _csm.getParameterCount(modelPtr); length2 = new Int32Array(_em.HEAP32.buffer, _csm.getParameterKeyCounts(modelPtr), length); this.keyValues = new Array(length); var _keyValues = new Uint32Array(_em.HEAPU32.buffer, _csm.getParameterKeyValues(modelPtr), length); for (var i = 0; i < _keyValues.length; i++) { this.keyValues[i] = new Float32Array(_em.HEAPF32.buffer, _keyValues[i], length2[i]); } } return Parameters; }()); Live2DCubismCore.Parameters = Parameters; /** Cubism model parts */ var Parts = /** @class */ (function () { /** * Initializes instance. * * @param modelPtr Native model. */ function Parts(modelPtr) { var length = 0; this.count = _csm.getPartCount(modelPtr); length = _csm.getPartCount(modelPtr); this.ids = new Array(length); var _ids = new Uint32Array(_em.HEAPU32.buffer, _csm.getPartIds(modelPtr), length); for (var i = 0; i < _ids.length; i++) { this.ids[i] = _em.UTF8ToString(_ids[i]); } length = _csm.getPartCount(modelPtr); this.opacities = new Float32Array(_em.HEAPF32.buffer, _csm.getPartOpacities(modelPtr), length); length = _csm.getPartCount(modelPtr); this.parentIndices = new Int32Array(_em.HEAP32.buffer, _csm.getPartParentPartIndices(modelPtr), length); length = _csm.getPartCount(modelPtr); this.offscreenIndices = new Int32Array(_em.HEAP32.buffer, _csm.getPartOffscreenIndices(modelPtr), length); } return Parts; }()); Live2DCubismCore.Parts = Parts; /** Cubism model drawables */ var Drawables = /** @class */ (function () { /** * Initializes instance. * * @param modelPtr Native model. */ function Drawables(modelPtr) { this._modelPtr = modelPtr; var length = 0; var length2 = null; this.count = _csm.getDrawableCount(modelPtr); length = _csm.getDrawableCount(modelPtr); this.ids = new Array(length); var _ids = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableIds(modelPtr), length); for (var i = 0; i < _ids.length; i++) { this.ids[i] = _em.UTF8ToString(_ids[i]); } length = _csm.getDrawableCount(modelPtr); this.constantFlags = new Uint8Array(_em.HEAPU8.buffer, _csm.getDrawableConstantFlags(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.dynamicFlags = new Uint8Array(_em.HEAPU8.buffer, _csm.getDrawableDynamicFlags(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.textureIndices = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableTextureIndices(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.drawOrders = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableDrawOrders(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.opacities = new Float32Array(_em.HEAPF32.buffer, _csm.getDrawableOpacities(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.maskCounts = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableMaskCounts(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.vertexCounts = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableVertexCounts(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.indexCounts = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableIndexCounts(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.multiplyColors = new Float32Array(_em.HEAPF32.buffer, _csm.getDrawableMultiplyColors(modelPtr), length * 4); length = _csm.getDrawableCount(modelPtr); this.screenColors = new Float32Array(_em.HEAPF32.buffer, _csm.getDrawableScreenColors(modelPtr), length * 4); length = _csm.getDrawableCount(modelPtr); this.parentPartIndices = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableParentPartIndices(modelPtr), length); length = _csm.getDrawableCount(modelPtr); this.blendModes = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableBlendModes(modelPtr), length * 2); length = _csm.getDrawableCount(modelPtr); length2 = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableMaskCounts(modelPtr), length); this.masks = new Array(length); var _masks = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableMasks(modelPtr), length); for (var i = 0; i < _masks.length; i++) { this.masks[i] = new Int32Array(_em.HEAP32.buffer, _masks[i], length2[i]); } length = _csm.getDrawableCount(modelPtr); length2 = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableVertexCounts(modelPtr), length); this.vertexPositions = new Array(length); var _vertexPositions = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableVertexPositions(modelPtr), length); for (var i = 0; i < _vertexPositions.length; i++) { this.vertexPositions[i] = new Float32Array(_em.HEAPF32.buffer, _vertexPositions[i], length2[i] * 2); } length = _csm.getDrawableCount(modelPtr); length2 = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableVertexCounts(modelPtr), length); this.vertexUvs = new Array(length); var _vertexUvs = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableVertexUvs(modelPtr), length); for (var i = 0; i < _vertexUvs.length; i++) { this.vertexUvs[i] = new Float32Array(_em.HEAPF32.buffer, _vertexUvs[i], length2[i] * 2); } length = _csm.getDrawableCount(modelPtr); length2 = new Int32Array(_em.HEAP32.buffer, _csm.getDrawableIndexCounts(modelPtr), length); this.indices = new Array(length); var _indices = new Uint32Array(_em.HEAPU32.buffer, _csm.getDrawableIndices(modelPtr), length); for (var i = 0; i < _indices.length; i++) { this.indices[i] = new Uint16Array(_em.HEAPU16.buffer, _indices[i], length2[i]); } } /** Resets all dynamic drawable flags.. */ Drawables.prototype.resetDynamicFlags = function () { _csm.resetDrawableDynamicFlags(this._modelPtr); }; return Drawables; }()); Live2DCubismCore.Drawables = Drawables; /** Cubism model offscreens */ var Offscreens = /** @class */ (function () { /** * Initializes instance. * * @param modelPtr Native model. */ function Offscreens(modelPtr) { var length = 0; var length2 = null; this.count = _csm.getOffscreenCount(modelPtr); length = _csm.getOffscreenCount(modelPtr); this.blendModes = new Int32Array(_em.HEAP32.buffer, _csm.getOffscreenBlendModes(modelPtr), length * 2); length = _csm.getOffscreenCount(modelPtr); this.opacities = new Float32Array(_em.HEAPF32.buffer, _csm.getOffscreenOpacities(modelPtr), length); length = _csm.getOffscreenCount(modelPtr); this.ownerIndices = new Int32Array(_em.HEAP32.buffer, _csm.getOffscreenOwnerIndices(modelPtr), length); length = _csm.getOffscreenCount(modelPtr); this.multiplyColors = new Float32Array(_em.HEAPF32.buffer, _csm.getOffscreenMultiplyColors(modelPtr), length * 4); length = _csm.getOffscreenCount(modelPtr); this.screenColors = new Float32Array(_em.HEAPF32.buffer, _csm.getOffscreenScreenColors(modelPtr), length * 4); length = _csm.getOffscreenCount(modelPtr); this.maskCounts = new Int32Array(_em.HEAP32.buffer, _csm.getOffscreenMaskCounts(modelPtr), length); length = _csm.getOffscreenCount(modelPtr); this.constantFlags = new Uint8Array(_em.HEAPU8.buffer, _csm.getOffscreenConstantFlags(modelPtr), length); length = _csm.getOffscreenCount(modelPtr); length2 = new Int32Array(_em.HEAP32.buffer, _csm.getOffscreenMaskCounts(modelPtr), length); this.masks = new Array(length); var _masks = new Uint32Array(_em.HEAPU32.buffer, _csm.getOffscreenMasks(modelPtr), length); for (var i = 0; i < _masks.length; i++) { this.masks[i] = new Int32Array(_em.HEAP32.buffer, _masks[i], length2[i]); } } return Offscreens; }()); Live2DCubismCore.Offscreens = Offscreens; /** Utility functions. */ var Utils = /** @class */ (function () { function Utils() { } /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasBlendAdditiveBit = function (bitfield) { return (bitfield & (1 << 0)) == (1 << 0); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasBlendMultiplicativeBit = function (bitfield) { return (bitfield & (1 << 1)) == (1 << 1); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasIsDoubleSidedBit = function (bitfield) { return (bitfield & (1 << 2)) == (1 << 2); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasIsInvertedMaskBit = function (bitfield) { return (bitfield & (1 << 3)) == (1 << 3); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasIsVisibleBit = function (bitfield) { return (bitfield & (1 << 0)) == (1 << 0); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasVisibilityDidChangeBit = function (bitfield) { return (bitfield & (1 << 1)) == (1 << 1); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasOpacityDidChangeBit = function (bitfield) { return (bitfield & (1 << 2)) == (1 << 2); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasDrawOrderDidChangeBit = function (bitfield) { return (bitfield & (1 << 3)) == (1 << 3); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasRenderOrderDidChangeBit = function (bitfield) { return (bitfield & (1 << 4)) == (1 << 4); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasVertexPositionsDidChangeBit = function (bitfield) { return (bitfield & (1 << 5)) == (1 << 5); }; /** * Checks whether flag is set in bitfield. * * @param bitfield Bitfield to query against. * * @return [[true]] if bit set; [[false]] otherwise */ Utils.hasBlendColorDidChangeBit = function (bitfield) { return (bitfield & (1 << 6)) == (1 << 6); }; return Utils; }()); Live2DCubismCore.Utils = Utils; /** Memory functions. */ var Memory = /** @class */ (function () { function Memory() { } /** * HACK: * Extend memory size allocated during module initialization. * If the specified size is less than or equal to 16777216(byte), the default of 16 MB is allocated. * * @see https://github.com/emscripten-core/emscripten/blob/main/src/settings.js#L161 * * @param size allocated memory size [byte(s)] */ Memory.initializeAmountOfMemory = function (size) { if (size > 16777216) { _csm.initializeAmountOfMemory(size); } }; return Memory; }()); Live2DCubismCore.Memory = Memory; /** Emscripten Cubism Core module. */ var _em_module=function(){var _scriptDir="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(_em_module){_em_module=_em_module||{};var a,n,l={};for(n in a=a||(void 0!==_em_module?_em_module:{}))a.hasOwnProperty(n)&&(l[n]=a[n]);var x,y,v,w,p=!1,q=!1,r=!1,p="object"==typeof window,q="function"==typeof importScripts,r="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node&&!p&&!q,t=!p&&!r&&!q,u="",D=(r?(u=__dirname+"/",v=function(b,c){var d=z(b);return d||(x=x||require("fs"),b=(y=y||require("path")).normalize(b),d=x.readFileSync(b)),c?d:d.toString()},w=function(b){return assert((b=(b=v(b,!0)).buffer?b:new Uint8Array(b)).buffer),b},1>2]+(Mn<<5)|0)>>2],Qn=q[a- -64>>2]+w(Xn,24)|0,Mn=(lo=q[Qn+8>>2])+-1|0,yo=(ro=q[Qn+4>>2])+-1|0,zo=vo=(Xn=q[q[a+156>>2]+(Xn<<2)>>2])+(lo<<3)|0,Ao=wo=Xn+((uo=w(ro,mo=lo+1|0))<<3)|0,Bo=xo=Xn+(lo+uo<<3)|0,Jo=q[Qn+12>>2],so=x(0|ro),to=x(0|lo),a=0;;)if(Wn=u[(Qn=(po=a<<3)+Nn|0)+4>>2],Sn=x(Wn*so),Yn=u[Qn>>2],Rn=x(Yn*to),Qn=Wn>=x(1),Sn=!(Wn=x(1)|Yn>2],Co=u[Xn+4>>2],Zn=x(bo-Co),Do=u[4+zo>>2],Eo=u[4+Ao>>2],_n=x(Do-Eo),co=x(x(Zn-_n)*x(.5)),Fo=u[xo>>2],Go=u[Xn>>2],$n=x(Fo-Go),Ho=u[vo>>2],Io=u[wo>>2],ao=x(Ho-Io),eo=x(x($n-ao)*x(.5)),_n=x(x(_n+Zn)*x(.5)),ao=x(x(ao+$n)*x(.5)),Ko=1,Zn=x(x(x(x(x(Co+Do)+Eo)+bo)*x(.25))-x(Zn*x(.5))),$n=x(x(x(x(x(Go+Ho)+Io)+Fo)*x(.25))-x($n*x(.5)))),Wnx(-2)^1|(Ynx(-2)^1)?(u[On+po>>2]=x(Wn*eo)+x(x(Yn*ao)+$n),Rn=x(Wn*co),x(x(Yn*_n)+Zn)):(Yn<=x(0)?Wn<=x(0)?(Vn=x(x(Wn+x(2))*x(.5)),Un=x(x(Yn+x(2))*x(.5)),Rn=x(co+co),no=x(Zn-Rn),Sn=x(eo+eo),oo=x($n-Sn),jo=x(Zn-x(_n+_n)),fo=x(jo-Rn),ko=x($n-x(ao+ao)),go=x(ko-Sn),ho=u[Xn+4>>2],io=u[Xn>>2]):Qn?(Rn=x(co*x(3)),Sn=x(Zn-x(_n+_n)),jo=x(Rn+Sn),fo=x(eo*x(3)),go=x($n-x(ao+ao)),ko=x(fo+go),Vn=x(x(Wn+x(-1))*x(.5)),Un=x(x(Yn+x(2))*x(.5)),ho=x(Rn+Zn),io=x(fo+$n),fo=x(co+Sn),go=x(eo+go),no=u[4+Ao>>2],oo=u[wo>>2]):(Rn=x(Zn-x(_n+_n)),Qn=yo,Tn=x(y(Sn))>2],oo=u[Qn>>2],Qn=Xn+(w(Tn,mo)<<3)|0,ho=u[Qn+4>>2],io=u[Qn>>2]):Yn>=x(1)?Wn<=x(0)?(Vn=x(x(Wn+x(2))*x(.5)),Un=x(x(Yn+x(-1))*x(.5)),Rn=x(co+co),fo=x(x(_n+Zn)-Rn),Sn=x(eo+eo),go=x(x(ao+$n)-Sn),ho=x(x(_n*x(3))+Zn),no=x(ho-Rn),io=x(x(ao*x(3))+$n),oo=x(io-Sn),jo=u[4+zo>>2],ko=u[vo>>2]):Qn?(Rn=x(co*x(3)),jo=x(Rn+x(_n+Zn)),Sn=x(eo*x(3)),ko=x(Sn+x(ao+$n)),bo=Rn,Rn=x(x(_n*x(3))+Zn),ho=x(bo+Rn),bo=Sn,Sn=x(x(ao*x(3))+$n),io=x(bo+Sn),Vn=x(x(Wn+x(-1))*x(.5)),Un=x(x(Yn+x(-1))*x(.5)),no=x(co+Rn),oo=x(eo+Sn),fo=u[4+Bo>>2],go=u[xo>>2]):(Rn=x(x(_n*x(3))+Zn),Qn=yo,Tn=x(y(Sn))>2],go=u[Qn>>2],Qn=Xn+(w(Tn,mo)+lo<<3)|0,jo=u[Qn+4>>2],ko=u[Qn>>2]):Wn<=x(0)?(Vn=x(x(Wn+x(2))*x(.5)),Qn=Mn,Tn=x(y(Sn=Rn))>2],ko=u[Qn>>2],ho=u[(Qn=Xn+(Tn<<3)|0)+4>>2],io=u[Qn>>2]):Qn?(bo=Sn=x(co*x(3)),Qn=Mn,Tn=x(y(Rn))>2],go=u[Qn>>2],no=u[(Qn=Xn+(Tn+uo<<3)|0)+4>>2],oo=u[Qn>>2]):(v[16+qo>>3]=Wn,q[qo>>2]=a,v[8+qo>>3]=Yn,Y(4,1107,qo)),x(Un+Vn)<=x(1)?(u[On+po>>2]=x(go+x(x(oo-go)*Un))+x(x(ko-go)*Vn),Rn=x(fo+x(x(no-fo)*Un)),x(x(jo-fo)*Vn)):(Rn=x(x(1)-Un),Sn=x(x(1)-Vn),u[On+po>>2]=x(io+x(x(ko-io)*Rn))+x(x(oo-io)*Sn),Rn=x(ho+x(x(jo-ho)*Rn)),x(x(no-ho)*Sn)))):(Qn=x(y(bo=Sn))>2]=x(x(x(Rn*x(Sn*u[Tn>>2]))+x(Rn*x(Un*u[Tn+8>>2])))+x(Vn*x(Sn*u[Qn>>2])))+x(Vn*x(Un*u[Qn+8>>2])),Rn=x(x(x(Rn*x(Sn*u[Tn+4>>2]))+x(Rn*x(Un*u[Tn+12>>2])))+x(Vn*x(Sn*u[Qn+4>>2]))),x(Vn*x(Un*u[Qn+12>>2]))):x(Un+Vn)<=x(1)?(Rn=x(x(x(1)-Un)-Vn),Tn=Xn+(Qn<<3)|0,Qn=Xn+(Qn+mo<<3)|0,u[On+po>>2]=x(x(Rn*u[Tn>>2])+x(Un*u[Tn+8>>2]))+x(Vn*u[Qn>>2]),Rn=x(x(Rn*u[Tn+4>>2])+x(Un*u[Tn+12>>2])),x(Vn*u[Qn+4>>2])):(Rn=x(x(Un+x(-1))+Vn),Tn=Xn+(Qn+mo<<3)|0,Sn=x(x(1)-Un),Wn=x(x(1)-Vn),Qn=Xn+(Qn<<3)|0,u[On+po>>2]=x(x(Rn*u[Tn+8>>2])+x(Sn*u[Tn>>2]))+x(Wn*u[Qn+8>>2]),Rn=x(x(Rn*u[Tn+12>>2])+x(Sn*u[Tn+4>>2])),x(Wn*u[Qn+12>>2]))),u[4+(On+po|0)>>2]=Rn+Sn,(0|Pn)==(0|(a=a+1|0)))break;L=32+qo|0},n[2]=function(a,uf){a|=0,uf|=0;var vf=0,wf=0,xf=0,yf=0,zf=0,Af=x(0),Bf=0,Cf=0,Ef=(x(0),0),Ff=0,yf=q[a+324>>2],vf=q[a+320>>2],zf=q[a+312>>2];-1==(0|(wf=q[(xf=zf+(uf<<5)|0)+8>>2]))?(q[(Ff=vf)+(vf=uf<<2)>>2]=q[q[a+152>>2]+(q[xf+16>>2]<<2)>>2],q[vf+yf>>2]=1065353216):(Bf=q[xf+16>>2],Cf=q[q[a+156>>2]+(Bf<<2)>>2],n[q[24+(zf+(wf<<5)|0)>>2]](a,wf,Cf,Cf,q[16+(q[a- -64>>2]+w(Bf,24)|0)>>2]),Af=u[q[a+152>>2]+(q[xf+16>>2]<<2)>>2],xf=q[xf+8>>2]<<2,u[(wf=uf<<2)+vf>>2]=Af*u[xf+vf>>2],q[wf+yf>>2]=q[xf+yf>>2]),4<=r[q[q[a>>2]>>2]+4|0]&&(yf=uf<<2,vf=q[a+312>>2]+(uf<<5)|0,wf=q[vf+16>>2]<<2,xf=q[a+332>>2],uf=q[a+328>>2],-1==(0|(zf=q[vf+8>>2]))?(zf=q[a+160>>2],q[(vf=yf<<2)+uf>>2]=q[zf+(wf<<=2)>>2],q[(Bf=4|vf)+uf>>2]=q[(Cf=4|wf)+zf>>2],q[(Ef=8|vf)+uf>>2]=q[zf+(Ff=8|wf)>>2],q[uf+((yf|=3)<<2)>>2]=1065353216,a=q[a+164>>2],q[vf+xf>>2]=q[a+wf>>2],q[xf+Bf>>2]=q[a+Cf>>2],q[xf+Ef>>2]=q[a+Ff>>2]):(wf=(Cf=wf<<2)+q[a+160>>2]|0,u[(vf=(Bf=yf<<2)+uf|0)>>2]=u[wf>>2]*u[(zf=(Ef=zf<<4)+uf|0)>>2],u[vf+4>>2]=u[wf+4>>2]*u[zf+4>>2],u[vf+8>>2]=u[wf+8>>2]*u[zf+8>>2],q[uf+((yf|=3)<<2)>>2]=1065353216,a=Cf+q[a+164>>2]|0,Ff=u[a>>2],Af=u[(vf=xf+Ef|0)>>2],u[(uf=xf+Bf|0)>>2]=x(Ff+Af)-x(Ff*Af),Ff=u[a+4>>2],Af=u[vf+4>>2],u[uf+4>>2]=x(Ff+Af)-x(Ff*Af),Ff=u[a+8>>2],Af=u[vf+8>>2],u[uf+8>>2]=x(Ff+Af)-x(Ff*Af)),q[xf+(yf<<2)>>2]=1065353216)},n[3]=function(a,dm,lm,mm,nm){a|=0,dm|=0,lm|=0,mm|=0,nm|=0;var sm,tm,um,wm,xm,om=0,om=(x(0),x(0),x(0),x(0),x(0),x(0),x(0),x(0),(dm=q[16+(q[a+312>>2]+(dm<<5)|0)>>2])<<2),qm=function(a){var mk,pk,nk,lk=x(0),ok=0;L=nk=L-16|0,j(a);a:if((mk=2147483647&(ok=b[0]))>>>0<=1061752794)lk=x(1),mk>>>0<964689920||(lk=ca(+a));else if(mk>>>0<=1081824209)pk=+a,lk=1075235812<=mk>>>0?x(-ca(((0|ok)<0?3.141592653589793:-3.141592653589793)+pk)):ba((0|ok)<=-1?1.5707963267948966+pk:1.5707963267948966-pk);else if(mk>>>0<=1088565717)lk=1085271520<=mk>>>0?ca(+a+((0|ok)<0?6.283185307179586:-6.283185307179586)):ba((0|ok)<=-1?-4.71238898038469-+a:+a-4.71238898038469);else if(lk=x(a-a),!(2139095040<=mk>>>0))if((mk=3&Ca(a,8+nk|0))>>>0<=2){b:switch(mk-1|0){default:lk=ca(v[8+nk>>3]);break a;case 0:lk=ba(-v[8+nk>>3]);break a;case 1:break b}lk=x(-ca(v[8+nk>>3]))}else lk=ba(v[8+nk>>3]);return L=16+nk|0,a=lk}(pm=x(x(x(u[4+(q[a+172>>2]+w(dm,12)|0)>>2]+u[om+q[a+288>>2]>>2])*x(3.1415927410125732))/x(180))),rm=u[om+q[a+276>>2]>>2],vm=q[om+q[a+296>>2]>>2],pm=function(a){var Dj,ik,jk=0,kk=0;L=ik=L-16|0,j(a);a:if((Dj=2147483647&(kk=b[0]))>>>0<=1061752794)Dj>>>0<964689920||(a=ba(+a));else if(Dj>>>0<=1081824209)jk=+a,a=Dj>>>0<=1075235811?(0|kk)<=-1?x(-ca(jk+1.5707963267948966)):ca(jk+-1.5707963267948966):ba(-(((0|kk)<0?3.141592653589793:-3.141592653589793)+jk));else if(Dj>>>0<=1088565717)jk=+a,a=Dj>>>0<=1085271519?(0|kk)<=-1?ca(jk+4.71238898038469):x(-ca(jk+-4.71238898038469)):ba(((0|kk)<0?6.283185307179586:-6.283185307179586)+jk);else if(2139095040<=Dj>>>0)a=x(a-a);else if((Dj=3&Ca(a,8+ik|0))>>>0<=2){b:switch(Dj-1|0){default:a=ba(v[8+ik>>3]);break a;case 0:a=ca(v[8+ik>>3]);break a;case 1:break b}a=ba(-v[8+ik>>3])}else a=x(-ca(v[8+ik>>3]));return L=16+ik|0,a}(pm);if((dm=0)<(0|nm))for(qm=x(rm*qm),tm=x(vm?-1:1),wm=x(qm*tm),sm=q[om+q[a+292>>2]>>2]?x(-1):x(1),xm=x(x(rm*pm)*sm),qm=x(qm*sm),rm=x(x(rm*x(-pm))*tm),pm=u[om+q[a+284>>2]>>2],tm=u[om+q[a+280>>2]>>2];;)if(om=(a=dm<<3)+mm|0,sm=u[(a=a+lm|0)>>2],um=u[a+4>>2],u[om+4>>2]=pm+x(x(xm*sm)+x(wm*um)),u[om>>2]=tm+x(x(qm*sm)+x(rm*um)),(0|nm)==(0|(dm=dm+1|0)))break},n[4]=function(a,Qe){a|=0,Qe|=0;var af,bf,cf,df,ef,Re,Se=0,Te=0,Ue=0,Ve=x(0),We=0,Xe=0,Ye=x(0),Ze=0,_e=0,$e=0;if(x(0),x(0),x(0),x(0),L=Re=L+-64|0,Ze=q[a+324>>2],_e=q[a+320>>2],Te=q[a+312>>2],-1==(0|(We=q[(Ue=Te+(Qe<<5)|0)+8>>2])))Se=q[Ue+16>>2]<<2,q[(Te=Qe<<2)+_e>>2]=q[Se+q[a+272>>2]>>2],q[Te+Ze>>2]=q[Se+q[a+276>>2]>>2];else{Se=q[Ue+16>>2]<<2,$e=q[Se+q[a+280>>2]>>2],q[24+Re>>2]=$e,Se=q[Se+q[a+284>>2]>>2],q[28+Re>>2]=Se,q[16+Re>>2]=0,bf=1==q[(Xe=Te+(We<<5)|0)+12>>2]?x(-10):x(-.10000000149011612),u[20+Re>>2]=bf,q[60+Re>>2]=Se,q[56+Re>>2]=$e,n[q[Xe+24>>2]](a,We,56+Re|0,48+Re|0,1),Ve=x(1),Te=9;b:{for(;;){if(Se=Te,Ye=x(Ve*x(0)),u[32+Re>>2]=Ye+u[56+Re>>2],af=x(bf*Ve),u[36+Re>>2]=af+u[60+Re>>2],n[q[Xe+24>>2]](a,We,32+Re|0,40+Re|0,1),cf=x(u[44+Re>>2]-u[52+Re>>2]),u[44+Re>>2]=cf,df=x(u[40+Re>>2]-u[48+Re>>2]),u[40+Re>>2]=df,cf!=x(0)||df!=x(0)){Te=q[44+Re>>2],q[8+Re>>2]=q[40+Re>>2],q[12+Re>>2]=Te;break b}if(u[32+Re>>2]=u[56+Re>>2]-Ye,u[36+Re>>2]=u[60+Re>>2]-af,n[q[Xe+24>>2]](a,We,32+Re|0,40+Re|0,1),Ye=x(u[40+Re>>2]-u[48+Re>>2]),u[40+Re>>2]=Ye,af=x(u[44+Re>>2]-u[52+Re>>2]),(u[44+Re>>2]=af)!=x(0)||Ye!=x(0)){u[12+Re>>2]=-af,u[8+Re>>2]=-Ye;break b}if(Te=Se+-1|0,Ve=x(Ve*x(.10000000149011612)),!Se)break}Y(3,1311,0)}Ve=function(a,Qf){var Rf=x(0);if((Rf=x(Aa(u[a+4>>2],u[a>>2])-Aa(u[Qf+4>>2],u[Qf>>2])))x(3.1415927410125732))for(;;)if(!((Rf=x(Rf+x(-6.2831854820251465)))>x(3.1415927410125732)))break;return Rf}(16+Re|0,8+Re|0),n[q[Xe+24>>2]](a,q[Ue+8>>2],24+Re|0,24+Re|0,1),Te=q[Ue+16>>2]<<2,q[Te+q[a+280>>2]>>2]=q[24+Re>>2],q[Te+q[a+284>>2]>>2]=q[28+Re>>2],Se=Te+q[a+288>>2]|0,u[Se>>2]=u[Se>>2]+x(x(Ve*x(-180))/x(3.1415927410125732)),Ue=q[Ue+8>>2]<<2,u[(Se=Qe<<2)+_e>>2]=u[Te+q[a+272>>2]>>2]*u[Ue+_e>>2],Te=Te+q[a+276>>2]|0,Ve=x(u[Te>>2]*u[Ue+Ze>>2]),u[Se+Ze>>2]=Ve,u[Te>>2]=Ve}4<=r[q[q[a>>2]>>2]+4|0]&&(Se=Qe<<2,Ue=q[a+312>>2]+(Qe<<5)|0,We=q[Ue+16>>2]<<2,Te=q[a+332>>2],Qe=q[a+328>>2],-1==(0|(Xe=q[Ue+8>>2]))?(Xe=q[a+300>>2],q[(Ue=Se<<2)+Qe>>2]=q[Xe+(We<<=2)>>2],q[(Ze=4|Ue)+Qe>>2]=q[(_e=4|We)+Xe>>2],q[($e=8|Ue)+Qe>>2]=q[Xe+(ef=8|We)>>2],q[Qe+((Se|=3)<<2)>>2]=1065353216,a=q[a+304>>2],q[Te+Ue>>2]=q[a+We>>2],q[Te+Ze>>2]=q[a+_e>>2],q[Te+$e>>2]=q[a+ef>>2]):(We=(_e=We<<2)+q[a+300>>2]|0,u[(Ue=(Ze=Se<<2)+Qe|0)>>2]=u[We>>2]*u[(Xe=($e=Xe<<4)+Qe|0)>>2],u[Ue+4>>2]=u[We+4>>2]*u[Xe+4>>2],u[Ue+8>>2]=u[We+8>>2]*u[Xe+8>>2],q[Qe+((Se|=3)<<2)>>2]=1065353216,a=_e+q[a+304>>2]|0,Ve=u[a>>2],Ye=u[(Ue=Te+$e|0)>>2],u[(Qe=Te+Ze|0)>>2]=x(Ve+Ye)-x(Ve*Ye),Ve=u[a+4>>2],Ye=u[Ue+4>>2],u[Qe+4>>2]=x(Ve+Ye)-x(Ve*Ye),Ve=u[a+8>>2],Ye=u[Ue+8>>2],u[Qe+8>>2]=x(Ve+Ye)-x(Ve*Ye)),q[Te+(Se<<2)>>2]=1065353216),L=Re+64|0},n[5]=function(a,qk){return a|=0,qk|=0,x(0),x(0),0|((a=u[a>>2])<(qk=u[qk>>2])?-1:qk>2])))for(zi=q[a+12>>2],yi=q[a+20>>2];;)if(u[(vi=ui<<2)+zi>>2]=u[Xh+vi>>2]*u[vi+yi>>2],!((0|(ui=ui+1|0))<(0|xi)))break;if(!((0|(xi=q[a>>2]))<1))if(zi=q[a+4>>2],Zh)for(vi=Xh=0;;){if(q[Zh>>2]){if((0|(ui=q[(yi=Xh<<2)+q[a+16>>2]>>2]))<1)wi=x(0);else for(Ai=ui+vi|0,Bi=q[a+12>>2],wi=x(0),ui=vi;;)if(wi=x(wi+u[Bi+(ui<<2)>>2]),!((0|(ui=ui+1|0))<(0|Ai)))break;u[Yh+yi>>2]=wi}if(Zh=Zh+4|0,vi=q[zi+(Xh<<2)>>2]+vi|0,!((0|(Xh=Xh+1|0))<(0|xi)))break}else for(yi=q[a+16>>2],Xh=Zh=0;;){if((0|(ui=q[(vi=Zh<<2)+yi>>2]))<=0)wi=x(0);else for(Ai=Xh+ui|0,Bi=q[a+12>>2],wi=x(0),ui=Xh;;)if(wi=x(wi+u[Bi+(ui<<2)>>2]),!((0|(ui=ui+1|0))<(0|Ai)))break;if(u[Yh+vi>>2]=wi,Xh=q[vi+zi>>2]+Xh|0,!((0|(Zh=Zh+1|0))<(0|xi)))break}},n[7]=function(a,Xh,Yh,Zh){a|=0,Xh|=0,Yh|=0,Zh|=0;var _h=0,$h=x(0),pi=0,qi=0,ri=0,si=0,ti=0;if(1<=(0|(si=q[a+8>>2])))for(qi=q[a+12>>2],ri=q[a+20>>2];;)if(u[(pi=_h<<2)+qi>>2]=u[Xh+pi>>2]*u[pi+ri>>2],!((0|(_h=_h+1|0))<(0|si)))break;if(!((0|(_h=q[a>>2]))<1))if(si=q[a+4>>2],Zh)for(pi=Xh=0;;){if(q[Zh>>2]){if((0|(_h=q[(qi=Xh<<2)+q[a+16>>2]>>2]))<1)$h=x(0);else for(ri=_h+pi|0,ti=q[a+12>>2],$h=x(0),_h=pi;;)if($h=x($h+u[ti+(_h<<2)>>2]),!((0|(_h=_h+1|0))<(0|ri)))break;_h=Yh+qi|0,$h=x($h+x(.0010000000474974513)),qi=x(y($h))>2]=qi,_h=q[a>>2]}if(Zh=Zh+4|0,pi=q[si+(Xh<<2)>>2]+pi|0,!((0|(Xh=Xh+1|0))<(0|_h)))break}else for(qi=q[a+16>>2],Xh=Zh=0;;){if((0|(_h=q[(pi=Zh<<2)+qi>>2]))<=0)$h=x(0);else for(ri=Xh+_h|0,ti=q[a+12>>2],$h=x(0),_h=Xh;;)if($h=x($h+u[ti+(_h<<2)>>2]),!((0|(_h=_h+1|0))<(0|ri)))break;if(_h=Yh+pi|0,$h=x($h+x(.0010000000474974513)),ri=x(y($h))>2]=ri,Xh=q[pi+si>>2]+Xh|0,!((0|(Zh=Zh+1|0))>2]))break}},n[8]=function(a,Xh,Yh,Zh,_h,$h){a|=0,Xh|=0,Yh|=0,Zh|=0,_h|=0,$h|=0;var ni,oi,ai=0,bi=0,ci=0,di=0,ei=0,fi=0,gi=0,hi=0,ji=0,ki=0,li=x(0),mi=0,ii=q[a>>2];if(!((0|ii)<1))if(ni=_h<<2,oi=q[a+4>>2],$h)for(;;){if(q[$h>>2]&&(ci=q[(ai=di<<2)+q[a+16>>2]>>2],gi=q[Yh+ai>>2],bi=q[Zh+ai>>2],(ai=(0|(hi=w(bi,_h)))<1)||$(gi,0,w(bi,ni)),!(ai|(0|ci)<1)))for(ji=ci+fi|0,ki=q[a+20>>2],ai=fi;;){for(li=u[(bi=ai<<2)+ki>>2],mi=q[Xh+bi>>2],ei=0;;)if(u[(bi=(ci=ei<<2)+gi|0)>>2]=u[bi>>2]+x(li*u[ci+mi>>2]),(0|hi)==(0|(ei=ei+1|0)))break;if(!((0|(ai=ai+1|0))<(0|ji)))break}if($h=$h+4|0,fi=q[(di<<2)+oi>>2]+fi|0,!((0|(di=di+1|0))<(0|ii)))break}else for($h=0;;){if(ci=q[(di=$h<<2)+q[a+16>>2]>>2],gi=q[Yh+di>>2],bi=q[Zh+di>>2],(ai=(0|(hi=w(bi,_h)))<1)||$(gi,0,w(bi,ni)),!(ai|(0|ci)<=0))for(ji=ci+fi|0,ki=q[a+20>>2],ai=fi;;){for(li=u[(bi=ai<<2)+ki>>2],mi=q[Xh+bi>>2],ei=0;;)if(u[(bi=(ci=ei<<2)+gi|0)>>2]=u[bi>>2]+x(li*u[ci+mi>>2]),(0|hi)==(0|(ei=ei+1|0)))break;if(!((0|(ai=ai+1|0))<(0|ji)))break}if(fi=q[di+oi>>2]+fi|0,!((0|($h=$h+1|0))<(0|ii)))break}},n[9]=function(a){a|=0;var Hp,Ip,Jp,Dp=0,Ep=0,Fp=0,Gp=0;if(!(q[a+764>>2]||(0|(Dp=q[a+336>>2]))<1))for(Ip=(Ep=q[a+340>>2])+w(Dp,20)|0,Dp=q[a+428>>2],Gp=q[a+448>>2];;){if(q[Dp>>2]&&!((0|(Fp=q[Ep+16>>2]))<(a=1)))for(Fp<<=1,Jp=q[Gp>>2];;)if(u[(Hp=(a<<2)+Jp|0)>>2]=-u[Hp>>2],!((0|(a=a+2|0))<(0|Fp)))break;if(Gp=Gp+4|0,Dp=Dp+4|0,!((Ep=Ep+20|0)>>>0>>0))break}},n[10]=function(a,Cl,dm){var fm;return aa(fm=q[(a|=0)+20>>2],Cl|=0,Cl=(dm|=0)>>>0<(Cl=q[a+16>>2]-fm|0)>>>0?dm:Cl),q[a+20>>2]=Cl+q[a+20>>2],0|dm},n[11]=function(a,qk,Cl,Dl,El,Fl){a|=0,qk=+qk,Cl|=0,Dl|=0,El|=0,Fl|=0;var Sl,am,Kl,Gl=0,Hl=0,Il=0,Jl=0,Ll=0,Ml=0,Nl=0,Ol=0,Pl=0,Ql=0,Rl=0,Tl=0,Ul=0,Vl=0,Wl=0,Yl=0;if(q[44+(L=Kl=L-560|0)>>2]=0,h(+qk),Gl=0|b[1],am=4294967295>>0?0:1,Wl=(0|Gl)<-1||((0|Gl)<=-1?am:0)?(h(+(qk=-qk)),Gl=0|b[1],b[0],Vl=1,4208):2048&El?(Vl=1,4211):(Vl=1&El)?4214:4209,2146435072==(2146435072&Gl))_(a,32,Cl,Ml=Vl+3|0,-65537&El),Z(a,Wl,Vl),Dl=Fl>>>5&1,Z(a,qk!=qk?Dl?4235:4239:Dl?4227:4231,3);else if(qk=function Ia(a,Wb){var Yb,ic,Xb=0;if(h(+a),Xb=0|b[1],Yb=0|b[0],2047!=(0|(Xb=(ic=Xb)>>>20&2047))){if(!Xb)return Xb=Wb,Wb=0==a?0:(a=Ia(0x10000000000000000*a,Wb),q[Wb>>2]+-64|0),q[Xb>>2]=Wb,a;q[Wb>>2]=Xb+-1022,f(0,0|Yb),f(1,-2146435073&ic|1071644672),a=+g()}return a}(qk,44+Kl|0),0!=(qk+=qk)&&(q[44+Kl>>2]=q[44+Kl>>2]+-1),Sl=16+Kl|0,97==(0|(am=32|Fl))){if(Rl=(Ql=32&Fl)?Wl+9|0:Wl,!(11
>>0)&&(Gl=12-Dl|0)){for(Tl=8;;)if(Tl*=16,!(Gl=Gl+-1|0))break;qk=45==r[0|Rl]?-(Tl+(-qk-Tl)):qk+Tl-Tl}for((0|Sl)==(0|(Gl=ga((Il=(Gl=q[44+Kl>>2])>>31)^Gl+Il,0,Sl)))&&(o[15+Kl|0]=48,Gl=15+Kl|0),Ll=2|Vl,Il=q[44+Kl>>2],o[0|(Pl=Gl+-2|0)]=Fl+15,o[Gl+-1|0]=(0|Il)<0?45:43,Gl=8&El,Hl=16+Kl|0;;)if(Fl=Hl,Ol=Ql,Il=y(qk)<2147483648?~~qk:-2147483648,o[0|Hl]=Ol|r[Il+4192|0],1!=((Hl=Fl+1|0)-(16+Kl|0)|0)|(0==(qk=16*(qk-(0|Il)))?!(Gl|0<(0|Dl)):0)||(o[Fl+1|0]=46,Hl=Fl+2|0),0==qk)break;_(a,32,Cl,Ml=(Fl=!Dl|(0|Dl)<=((Hl-Kl|0)-18|0)?((Sl-(16+Kl|0)|0)-Pl|0)+Hl|0:2+((Dl+Sl|0)-Pl|0)|0)+Ll|0,El),Z(a,Rl,Ll),_(a,48,Cl,Ml,65536^El),Z(a,16+Kl|0,Dl=Hl-(16+Kl|0)|0),_(a,48,Fl-((Gl=Dl)+(Dl=Sl-Pl|0)|0)|0,0,0),Z(a,Pl,Dl)}else{for(Gl=(0|Dl)<0,0==qk?Jl=q[44+Kl>>2]:(Jl=q[44+Kl>>2]+-28|0,q[44+Kl>>2]=Jl,qk*=268435456),Nl=Gl?6:Dl,Il=Ql=(0|Jl)<0?48+Kl|0:336+Kl|0;;)if(Il=(Dl=Il)+4|0,0==(qk=1e9*(qk-((q[Dl>>2]=Gl=qk<4294967296&0<=qk?~~qk>>>0:0)>>>0))))break;if((0|Jl)<1)Gl=Il,Hl=Ql;else for(Hl=Ql;;){if(Pl=(0|Jl)<29?Jl:29,!((Gl=Il+-4|0)>>>0>>0)){for(Dl=Pl,Ol=0;;)if(Yl=Ol,Ol=q[(Rl=Gl)>>2],Ll=31&Dl,Ll=32<=(63&Dl)>>>(Ml=0)?(Jl=Ol<>>32-Ll,Ol<>>0>>0?Ml+1|0:Ml,Yl=Rl,Rl=sd(Ol=td(Ll=Ol,Ml,1e9),M,1e9),q[Yl>>2]=Ll-Rl,!(Hl>>>0<=(Gl=Gl+-4|0)>>>0))break;(Dl=Ol)&&(q[(Hl=Hl+-4|0)>>2]=Dl)}for(;;)if(!(Hl>>>0<(Gl=Il)>>>0)||q[(Il=Gl+-4|0)>>2])break;if(Jl=q[44+Kl>>2]-Pl|0,Il=Gl,!(0<(0|(q[44+Kl>>2]=Jl))))break}if((0|Jl)<=-1)for(Ul=1+((Nl+25|0)/9|0)|0,Pl=102==(0|am);;){if(Ol=(0|Jl)<-9?9:0-Jl|0,Gl>>>0<=Hl>>>0)Hl=q[Hl>>2]?Hl:Hl+4|0;else{for(Rl=1e9>>>Ol,Ll=-1<>2],q[Il>>2]=(Dl>>>Ol)+Jl,Jl=w(Rl,Dl&Ll),!((Il=Il+4|0)>>>0>>0))break;Hl=q[Hl>>2]?Hl:Hl+4|0,Jl&&(q[Gl>>2]=Jl,Gl=Gl+4|0)}if(Jl=Ol+q[44+Kl>>2]|0,Gl=(0|Ul)>2?Dl+(Ul<<2)|0:Gl,!((0|(q[44+Kl>>2]=Jl))<0))break}if(!(Gl>>>(Il=0)<=Hl>>>0||(Il=w(Ql-Hl>>2,9),(Dl=q[Hl>>2])>>>0<(Jl=10))))for(;;)if(Il=Il+1|0,!((Jl=w(Jl,10))>>>0<=Dl>>>0))break;if((0|(Dl=(Nl-(102==(0|am)?0:Il)|0)-(103==(0|am)&0!=(0|Nl))|0))<(w(Gl-Ql>>2,9)+-9|0)){if(Ml=(Ql+((Dl=(0|(Ll=Dl+9216|0))/9|0)<<2)|0)-4092|0,Jl=10,(0|(Dl=1+(Ll-w(Dl,9)|0)|0))<=8)for(;;)if(Jl=w(Jl,10),9==(0|(Dl=Dl+1|0)))break;if(Ul=Ml+4|0,((Pl=(Rl=q[Ml>>2])-w(Jl,Ll=(Rl>>>0)/(Jl>>>0)|0)|0)||(0|Ul)!=(0|Gl))&&(Tl=Pl>>>0<(Dl=Jl>>>1)>>>0?.5:(0|Gl)==(0|Ul)&&(0|Dl)==(0|Pl)?1:1.5,qk=1&Ll?9007199254740994:9007199254740992,!Vl|45!=r[0|Wl]||(Tl=-Tl,qk=-qk),q[Ml>>2]=Dl=Rl-Pl|0,qk+Tl!=qk)){if(1e9<=(q[Ml>>2]=Dl=Dl+Jl|0)>>>0)for(;;)if((Ml=Ml+-4|(q[Ml>>2]=0))>>>0>>0&&(q[(Hl=Hl+-4|0)>>2]=0),Dl=q[Ml>>2]+1|0,!(999999999<(q[Ml>>2]=Dl)>>>0))break;if(Il=w(Ql-Hl>>2,9),!((Dl=q[Hl>>2])>>>0<(Jl=10)))for(;;)if(Il=Il+1|0,!((Jl=w(Jl,10))>>>0<=Dl>>>0))break}Gl=(Dl=Ml+4|0)>>>0>>0?Dl:Gl}j:{for(;;){if((Pl=Gl)>>>(Rl=0)<=Hl>>>0)break j;if(q[(Gl=Pl+-4|0)>>2])break}Rl=1}if(103!=(0|am))Ll=8&El;else if(Nl=((Dl=(0|Il)<(0|(Gl=Nl||1))&-5<(0|Il))?-1^Il:-1)+Gl|0,Fl=(Dl?-1:-2)+Fl|0,!(Ll=8&El)){if(Gl=9,Rl&&(Ll=q[Pl+-4>>2])&&!((Ll>>>(Gl=0))%(Dl=10)))for(;;)if(Gl=Gl+1|0,(Ll>>>0)%((Dl=w(Dl,10))>>>0))break;Dl=w(Pl-Ql>>2,9)+-9|0,Nl=102==(32|Fl)?((Ll=0)|Nl)<(0|(Dl=0<(0|(Dl=Dl-Gl|0))?Dl:0))?Nl:Dl:((Ll=0)|Nl)<(0|(Dl=0<(0|(Dl=(Dl+Il|0)-Gl|0))?Dl:0))?Nl:Dl}if(Ml=0!=(0|(Jl=Nl|Ll)),Dl=a,Yl=Cl,Gl=0<(0|Il)?Il:0,102!=(0|(Ol=32|Fl))){if((Sl-(Gl=ga((Gl=Il>>31)+Il^Gl,0,Sl))|0)<=1)for(;;)if(o[0|(Gl=Gl+-1|0)]=48,!((Sl-Gl|0)<2))break;o[0|(Ul=Gl+-2|0)]=Fl,o[Gl+-1|0]=(0|Il)<0?45:43,Gl=Sl-Ul|0}if(_(Dl,32,Yl,Ml=1+(Gl+(Ml+(Nl+Vl|0)|0)|0)|0,El),Z(a,Wl,Vl),_(a,48,Cl,Ml,65536^El),102==(0|Ol)){for(Dl=16+Kl|8,Il=16+Kl|9,Hl=Fl=Ql>>>0>>0?Ql:Hl;;){if(Gl=ga(q[Hl>>2],0,Il),(0|Fl)!=(0|Hl)){if(!(Gl>>>0<=16+Kl>>>0))for(;;)if(o[0|(Gl=Gl+-1|0)]=48,!(16+Kl>>>0>>0))break}else(0|Gl)==(0|Il)&&(o[24+Kl|0]=48,Gl=Dl);if(Z(a,Gl,Il-Gl|0),!((Hl=Hl+4|0)>>>0<=Ql>>>0))break}Jl&&Z(a,4243,1);p:if(!((0|Nl)<1|Pl>>>0<=Hl>>>0))for(;;){if(16+Kl>>>0<(Gl=ga(q[Hl>>2],0,Il))>>>0)for(;;)if(o[0|(Gl=Gl+-1|0)]=48,!(16+Kl>>>0>>0))break;if(Z(a,Gl,(0|Nl)<9?Nl:9),Nl=Nl+-9|0,Pl>>>0<=(Hl=Hl+4|0)>>>0)break p;if(!(0<(0|Nl)))break}_(a,48,Nl+9|0,9,0)}else{q:if(!((0|Nl)<0))for(Fl=Rl?Pl:Hl+4|0,Dl=16+Kl|8,Ql=16+Kl|9,Il=Hl;;){if((0|Ql)==(0|(Gl=ga(q[Il>>2],0,Ql)))&&(o[24+Kl|0]=48,Gl=Dl),(0|Hl)!=(0|Il)){if(!(Gl>>>0<=16+Kl>>>0))for(;;)if(o[0|(Gl=Gl+-1|0)]=48,!(16+Kl>>>0>>0))break}else Z(a,Gl,1),Gl=Gl+1|0,(0|Nl)<1&&!Ll||Z(a,4243,1);if(Z(a,Ol=Gl,(0|(Gl=Ql-Gl|0))<(0|Nl)?Gl:Nl),Nl=Nl-Gl|0,Fl>>>0<=(Il=Il+4|0)>>>0)break q;if(!(-1<(0|Nl)))break}_(a,48,Nl+18|0,18,0),Z(a,Ul,Sl-Ul|0)}}return _(a,32,Cl,Ml,8192^El),L=560+Kl|0,0|((0|Ml)<(0|Cl)?Cl:Ml)},n[12]=function(a,qk){a|=0;var Lk=0,Lk=qk|=0;qk=q[qk>>2]+15&-16,q[Lk>>2]=qk+16,Lk=a,a=Cc(q[qk>>2],q[qk+4>>2],q[qk+8>>2],q[qk+12>>2]),v[Lk>>3]=a},n[13]=function(a){return 0},n[14]=function(a,qk,Lk){qk|=0,Lk|=0;var zl,vl,ul=0,wl=0,xl=0,yl=0;for(L=vl=L-32|0,ul=q[(a|=0)+28>>2],q[16+vl>>2]=ul,xl=q[a+20>>2],q[28+vl>>2]=Lk,q[24+vl>>2]=qk,xl=(q[20+vl>>2]=qk=xl-ul|0)+Lk|0,yl=2,qk=16+vl|0;;){a:{if((wl=(ul=0)|K(q[a+60>>2],0|qk,0|yl,12+vl|0))&&(q[2178]=wl,ul=-1),(0|(ul=ul?q[12+vl>>2]=-1:q[12+vl>>2]))==(0|xl))qk=q[a+44>>2],q[a+28>>2]=qk,q[a+20>>2]=qk,q[a+16>>2]=qk+q[a+48>>2],a=Lk;else{if(-1<(0|ul))break a;q[a+28>>2]=0,q[a+16>>2]=0,q[a+20>>2]=0,q[a>>2]=32|q[a>>2],2!=((a=0)|yl)&&(a=Lk-q[qk+4>>2]|0)}return L=32+vl|0,0|a}wl=q[qk+4>>2],q[(qk=(zl=wl>>>0