f7cloud_client/apps/whiteboard/js/pica-BY8LBJ6D.chunk.mjs.map
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

1 line
121 KiB
Plaintext

{"version":3,"file":"pica-BY8LBJ6D.chunk.mjs","sources":["../node_modules/pica/dist/pica.js"],"sourcesContent":["/*!\n\npica\nhttps://github.com/nodeca/pica\n\n*/\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.pica = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){\n// Collection of math functions\n//\n// 1. Combine components together\n// 2. Has async init to load wasm modules\n//\n'use strict';\n\nvar inherits = _dereq_('inherits');\n\nvar Multimath = _dereq_('multimath');\n\nvar mm_unsharp_mask = _dereq_('./mm_unsharp_mask');\n\nvar mm_resize = _dereq_('./mm_resize');\n\nfunction MathLib(requested_features) {\n var __requested_features = requested_features || [];\n\n var features = {\n js: __requested_features.indexOf('js') >= 0,\n wasm: __requested_features.indexOf('wasm') >= 0\n };\n Multimath.call(this, features);\n this.features = {\n js: features.js,\n wasm: features.wasm && this.has_wasm()\n };\n this.use(mm_unsharp_mask);\n this.use(mm_resize);\n}\n\ninherits(MathLib, Multimath);\n\nMathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {\n var result = this.resize(options, cache);\n\n if (options.unsharpAmount) {\n this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);\n }\n\n return result;\n};\n\nmodule.exports = MathLib;\n\n},{\"./mm_resize\":4,\"./mm_unsharp_mask\":9,\"inherits\":19,\"multimath\":20}],2:[function(_dereq_,module,exports){\n// Resize convolvers, pure JS implementation\n//\n'use strict'; // Precision of fixed FP values\n//var FIXED_FRAC_BITS = 14;\n\nfunction clampTo8(i) {\n return i < 0 ? 0 : i > 255 ? 255 : i;\n} // Convolve image in horizontal directions and transpose output. In theory,\n// transpose allow:\n//\n// - use the same convolver for both passes (this fails due different\n// types of input array and temporary buffer)\n// - making vertical pass by horisonltal lines inprove CPU cache use.\n//\n// But in real life this doesn't work :)\n//\n\n\nfunction convolveHorizontally(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Technically, convolvers are the same. But input array and temporary\n// buffer can be of different type (especially, in old browsers). So,\n// keep code in separate functions to avoid deoptimizations & speed loss.\n\n\nfunction convolveVertically(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n}\n\nmodule.exports = {\n convolveHorizontally: convolveHorizontally,\n convolveVertically: convolveVertically\n};\n\n},{}],3:[function(_dereq_,module,exports){\n// This is autogenerated file from math.wasm, don't edit.\n//\n'use strict';\n/* eslint-disable max-len */\n\nmodule.exports = 'AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs=';\n\n},{}],4:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = {\n name: 'resize',\n fn: _dereq_('./resize'),\n wasm_fn: _dereq_('./resize_wasm'),\n wasm_src: _dereq_('./convolve_wasm_base64')\n};\n\n},{\"./convolve_wasm_base64\":3,\"./resize\":5,\"./resize_wasm\":8}],5:[function(_dereq_,module,exports){\n'use strict';\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nvar convolveHorizontally = _dereq_('./convolve').convolveHorizontally;\n\nvar convolveVertically = _dereq_('./convolve').convolveVertically;\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nmodule.exports = function resize(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0;\n var offsetY = options.offsetY || 0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY);\n var tmp = new Uint8Array(destW * srcH * 4); // To use single function we need src & tmp of the same type.\n // But src can be CanvasPixelArray, and tmp - Uint8Array. So, keep\n // vertical and horizontal passes separately to avoid deoptimization.\n\n convolveHorizontally(src, tmp, srcW, srcH, destW, filtersX);\n convolveVertically(tmp, dest, srcH, destW, destH, filtersY); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./convolve\":2,\"./resize_filter_gen\":6}],6:[function(_dereq_,module,exports){\n// Calculate convolution filters for each destination point,\n// and pack data to Int16Array:\n//\n// [ shift, length, data..., shift2, length2, data..., ... ]\n//\n// - shift - offset in src image\n// - length - filter length (in src points)\n// - data - filter values sequence\n//\n'use strict';\n\nvar FILTER_INFO = _dereq_('./resize_filter_info'); // Precision of fixed FP values\n\n\nvar FIXED_FRAC_BITS = 14;\n\nfunction toFixedPoint(num) {\n return Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));\n}\n\nmodule.exports = function resizeFilterGen(quality, srcSize, destSize, scale, offset) {\n var filterFunction = FILTER_INFO[quality].filter;\n var scaleInverted = 1.0 / scale;\n var scaleClamped = Math.min(1.0, scale); // For upscale\n // Filter window (averaging interval), scaled to src image\n\n var srcWindow = FILTER_INFO[quality].win / scaleClamped;\n var destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;\n var leftNotEmpty, rightNotEmpty, filterShift, filterSize;\n var maxFilterElementSize = Math.floor((srcWindow + 1) * 2);\n var packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);\n var packedFilterPtr = 0;\n var slowCopy = !packedFilter.subarray || !packedFilter.set; // For each destination pixel calculate source range and built filter values\n\n for (destPixel = 0; destPixel < destSize; destPixel++) {\n // Scaling should be done relative to central pixel point\n srcPixel = (destPixel + 0.5) * scaleInverted + offset;\n srcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));\n srcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));\n filterElementSize = srcLast - srcFirst + 1;\n floatFilter = new Float32Array(filterElementSize);\n fxpFilter = new Int16Array(filterElementSize);\n total = 0.0; // Fill filter values for calculated range\n\n for (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {\n floatVal = filterFunction((pxl + 0.5 - srcPixel) * scaleClamped);\n total += floatVal;\n floatFilter[idx] = floatVal;\n } // Normalize filter, convert to fixed point and accumulate conversion error\n\n\n filterTotal = 0;\n\n for (idx = 0; idx < floatFilter.length; idx++) {\n filterVal = floatFilter[idx] / total;\n filterTotal += filterVal;\n fxpFilter[idx] = toFixedPoint(filterVal);\n } // Compensate normalization error, to minimize brightness drift\n\n\n fxpFilter[destSize >> 1] += toFixedPoint(1.0 - filterTotal); //\n // Now pack filter to useable form\n //\n // 1. Trim heading and tailing zero values, and compensate shitf/length\n // 2. Put all to single array in this format:\n //\n // [ pos shift, data length, value1, value2, value3, ... ]\n //\n\n leftNotEmpty = 0;\n\n while (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) {\n leftNotEmpty++;\n }\n\n if (leftNotEmpty < fxpFilter.length) {\n rightNotEmpty = fxpFilter.length - 1;\n\n while (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) {\n rightNotEmpty--;\n }\n\n filterShift = srcFirst + leftNotEmpty;\n filterSize = rightNotEmpty - leftNotEmpty + 1;\n packedFilter[packedFilterPtr++] = filterShift; // shift\n\n packedFilter[packedFilterPtr++] = filterSize; // size\n\n if (!slowCopy) {\n packedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);\n packedFilterPtr += filterSize;\n } else {\n // fallback for old IE < 11, without subarray/set methods\n for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) {\n packedFilter[packedFilterPtr++] = fxpFilter[idx];\n }\n }\n } else {\n // zero data, write header only\n packedFilter[packedFilterPtr++] = 0; // shift\n\n packedFilter[packedFilterPtr++] = 0; // size\n }\n }\n\n return packedFilter;\n};\n\n},{\"./resize_filter_info\":7}],7:[function(_dereq_,module,exports){\n// Filter definitions to build tables for\n// resizing convolvers.\n//\n// Presets for quality 0..3. Filter functions + window size\n//\n'use strict';\n\nmodule.exports = [{\n // Nearest neibor (Box)\n win: 0.5,\n filter: function filter(x) {\n return x >= -0.5 && x < 0.5 ? 1.0 : 0.0;\n }\n}, {\n // Hamming\n win: 1.0,\n filter: function filter(x) {\n if (x <= -1.0 || x >= 1.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * (0.54 + 0.46 * Math.cos(xpi / 1.0));\n }\n}, {\n // Lanczos, win = 2\n win: 2.0,\n filter: function filter(x) {\n if (x <= -2.0 || x >= 2.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 2.0) / (xpi / 2.0);\n }\n}, {\n // Lanczos, win = 3\n win: 3.0,\n filter: function filter(x) {\n if (x <= -3.0 || x >= 3.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 3.0) / (xpi / 3.0);\n }\n}];\n\n},{}],8:[function(_dereq_,module,exports){\n'use strict';\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nfunction asUint8Array(src) {\n return new Uint8Array(src.buffer, 0, src.byteLength);\n}\n\nvar IS_LE = true; // should not crash everything on module load in old browsers\n\ntry {\n IS_LE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;\n} catch (__) {}\n\nfunction copyInt16asLE(src, target, target_offset) {\n if (IS_LE) {\n target.set(asUint8Array(src), target_offset);\n return;\n }\n\n for (var ptr = target_offset, i = 0; i < src.length; i++) {\n var data = src[i];\n target[ptr++] = data & 0xFF;\n target[ptr++] = data >> 8 & 0xFF;\n }\n}\n\nmodule.exports = function resize_wasm(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0.0;\n var offsetY = options.offsetY || 0.0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY); // destination is 0 too.\n\n var src_offset = 0; // buffer between convolve passes\n\n var tmp_offset = this.__align(src_offset + Math.max(src.byteLength, dest.byteLength));\n\n var filtersX_offset = this.__align(tmp_offset + srcH * destW * 4);\n\n var filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);\n\n var alloc_bytes = filtersY_offset + filtersY.byteLength;\n\n var instance = this.__instance('resize', alloc_bytes); //\n // Fill memory block with data to process\n //\n\n\n var mem = new Uint8Array(this.__memory.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer); // 32-bit copy is much faster in chrome\n\n var src32 = new Uint32Array(src.buffer);\n mem32.set(src32); // We should guarantee LE bytes order. Filters are not big, so\n // speed difference is not significant vs direct .set()\n\n copyInt16asLE(filtersX, mem, filtersX_offset);\n copyInt16asLE(filtersY, mem, filtersY_offset); //\n // Now call webassembly method\n // emsdk does method names with '_'\n\n var fn = instance.exports.convolveHV || instance.exports._convolveHV;\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH); //\n // Copy data back to typed array\n //\n // 32-bit copy is much faster in chrome\n\n var dest32 = new Uint32Array(dest.buffer);\n dest32.set(new Uint32Array(this.__memory.buffer, 0, destH * destW)); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./resize_filter_gen\":6}],9:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = {\n name: 'unsharp_mask',\n fn: _dereq_('./unsharp_mask'),\n wasm_fn: _dereq_('./unsharp_mask_wasm'),\n wasm_src: _dereq_('./unsharp_mask_wasm_base64')\n};\n\n},{\"./unsharp_mask\":10,\"./unsharp_mask_wasm\":11,\"./unsharp_mask_wasm_base64\":12}],10:[function(_dereq_,module,exports){\n// Unsharp mask filter\n//\n// http://stackoverflow.com/a/23322820/1031804\n// USM(O) = O + (2 * (Amount / 100) * (O - GB))\n// GB - gaussian blur.\n//\n// Image is converted from RGB to HSV, unsharp mask is applied to the\n// brightness channel and then image is converted back to RGB.\n//\n'use strict';\n\nvar glur_mono16 = _dereq_('glur/mono16');\n\nfunction hsv_v16(img, width, height) {\n var size = width * height;\n var out = new Uint16Array(size);\n var r, g, b, max;\n\n for (var i = 0; i < size; i++) {\n r = img[4 * i];\n g = img[4 * i + 1];\n b = img[4 * i + 2];\n max = r >= g && r >= b ? r : g >= b && g >= r ? g : b;\n out[i] = max << 8;\n }\n\n return out;\n}\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n var v1, v2, vmul;\n var diff, iTimes4;\n\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var brightness = hsv_v16(img, width, height);\n var blured = new Uint16Array(brightness); // copy, because blur modify src\n\n glur_mono16(blured, width, height, radius);\n var amountFp = amount / 100 * 0x1000 + 0.5 | 0;\n var thresholdFp = threshold << 8;\n var size = width * height;\n /* eslint-disable indent */\n\n for (var i = 0; i < size; i++) {\n v1 = brightness[i];\n diff = v1 - blured[i];\n\n if (Math.abs(diff) >= thresholdFp) {\n // add unsharp mask to the brightness channel\n v2 = v1 + (amountFp * diff + 0x800 >> 12); // Both v1 and v2 are within [0.0 .. 255.0] (0000-FF00) range, never going into\n // [255.003 .. 255.996] (FF01-FFFF). This allows to round this value as (x+.5)|0\n // later without overflowing.\n\n v2 = v2 > 0xff00 ? 0xff00 : v2;\n v2 = v2 < 0x0000 ? 0x0000 : v2; // Avoid division by 0. V=0 means rgb(0,0,0), unsharp with unsharpAmount>0 cannot\n // change this value (because diff between colors gets inflated), so no need to verify correctness.\n\n v1 = v1 !== 0 ? v1 : 1; // Multiplying V in HSV model by a constant is equivalent to multiplying each component\n // in RGB by the same constant (same for HSL), see also:\n // https://beesbuzz.biz/code/16-hsv-color-transforms\n\n vmul = (v2 << 12) / v1 | 0; // Result will be in [0..255] range because:\n // - all numbers are positive\n // - r,g,b <= (v1/256)\n // - r,g,b,(v1/256),(v2/256) <= 255\n // So highest this number can get is X*255/X+0.5=255.5 which is < 256 and rounds down.\n\n iTimes4 = i * 4;\n img[iTimes4] = img[iTimes4] * vmul + 0x800 >> 12; // R\n\n img[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 0x800 >> 12; // G\n\n img[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 0x800 >> 12; // B\n }\n }\n};\n\n},{\"glur/mono16\":18}],11:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var pixels = width * height;\n var img_bytes_cnt = pixels * 4;\n var hsv_bytes_cnt = pixels * 2;\n var blur_bytes_cnt = pixels * 2;\n var blur_line_byte_cnt = Math.max(width, height) * 4; // float32 array\n\n var blur_coeffs_byte_cnt = 8 * 4; // float32 array\n\n var img_offset = 0;\n var hsv_offset = img_bytes_cnt;\n var blur_offset = hsv_offset + hsv_bytes_cnt;\n var blur_tmp_offset = blur_offset + blur_bytes_cnt;\n var blur_line_offset = blur_tmp_offset + blur_bytes_cnt;\n var blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;\n\n var instance = this.__instance('unsharp_mask', img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, {\n exp: Math.exp\n }); // 32-bit copy is much faster in chrome\n\n\n var img32 = new Uint32Array(img.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer);\n mem32.set(img32); // HSL\n\n var fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;\n fn(img_offset, hsv_offset, width, height); // BLUR\n\n fn = instance.exports.blurMono16 || instance.exports._blurMono16;\n fn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius); // UNSHARP\n\n fn = instance.exports.unsharp || instance.exports._unsharp;\n fn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold); // 32-bit copy is much faster in chrome\n\n img32.set(new Uint32Array(this.__memory.buffer, 0, pixels));\n};\n\n},{}],12:[function(_dereq_,module,exports){\n// This is autogenerated file from math.wasm, don't edit.\n//\n'use strict';\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],13:[function(_dereq_,module,exports){\n'use strict';\n\nvar GC_INTERVAL = 100;\n\nfunction Pool(create, idle) {\n this.create = create;\n this.available = [];\n this.acquired = {};\n this.lastId = 1;\n this.timeoutId = 0;\n this.idle = idle || 2000;\n}\n\nPool.prototype.acquire = function () {\n var _this = this;\n\n var resource;\n\n if (this.available.length !== 0) {\n resource = this.available.pop();\n } else {\n resource = this.create();\n resource.id = this.lastId++;\n\n resource.release = function () {\n return _this.release(resource);\n };\n }\n\n this.acquired[resource.id] = resource;\n return resource;\n};\n\nPool.prototype.release = function (resource) {\n var _this2 = this;\n\n delete this.acquired[resource.id];\n resource.lastUsed = Date.now();\n this.available.push(resource);\n\n if (this.timeoutId === 0) {\n this.timeoutId = setTimeout(function () {\n return _this2.gc();\n }, GC_INTERVAL);\n }\n};\n\nPool.prototype.gc = function () {\n var _this3 = this;\n\n var now = Date.now();\n this.available = this.available.filter(function (resource) {\n if (now - resource.lastUsed > _this3.idle) {\n resource.destroy();\n return false;\n }\n\n return true;\n });\n\n if (this.available.length !== 0) {\n this.timeoutId = setTimeout(function () {\n return _this3.gc();\n }, GC_INTERVAL);\n } else {\n this.timeoutId = 0;\n }\n};\n\nmodule.exports = Pool;\n\n},{}],14:[function(_dereq_,module,exports){\n// Add intermediate resizing steps when scaling down by a very large factor.\n//\n// For example, when resizing 10000x10000 down to 10x10, it'll resize it to\n// 300x300 first.\n//\n// It's needed because tiler has issues when the entire tile is scaled down\n// to a few pixels (1024px source tile with border size 3 should result in\n// at least 3+3+2 = 8px target tile, so max scale factor is 128 here).\n//\n// Also, adding intermediate steps can speed up processing if we use lower\n// quality algorithms for first stages.\n//\n'use strict'; // min size = 0 results in infinite loop,\n// min size = 1 can consume large amount of memory\n\nvar MIN_INNER_TILE_SIZE = 2;\n\nmodule.exports = function createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize, destTileBorder) {\n var scaleX = toWidth / fromWidth;\n var scaleY = toHeight / fromHeight; // derived from createRegions equation:\n // innerTileWidth = pixelFloor(srcTileSize * scaleX) - 2 * destTileBorder;\n\n var minScale = (2 * destTileBorder + MIN_INNER_TILE_SIZE + 1) / srcTileSize; // refuse to scale image multiple times by less than twice each time,\n // it could only happen because of invalid options\n\n if (minScale > 0.5) return [[toWidth, toHeight]];\n var stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale)); // no additional resizes are necessary,\n // stageCount can be zero or be negative when enlarging the image\n\n if (stageCount <= 1) return [[toWidth, toHeight]];\n var result = [];\n\n for (var i = 0; i < stageCount; i++) {\n var width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));\n var height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));\n result.push([width, height]);\n }\n\n return result;\n};\n\n},{}],15:[function(_dereq_,module,exports){\n// Split original image into multiple 1024x1024 chunks to reduce memory usage\n// (images have to be unpacked into typed arrays for resizing) and allow\n// parallel processing of multiple tiles at a time.\n//\n'use strict';\n/*\n * pixelFloor and pixelCeil are modified versions of Math.floor and Math.ceil\n * functions which take into account floating point arithmetic errors.\n * Those errors can cause undesired increments/decrements of sizes and offsets:\n * Math.ceil(36 / (36 / 500)) = 501\n * pixelCeil(36 / (36 / 500)) = 500\n */\n\nvar PIXEL_EPSILON = 1e-5;\n\nfunction pixelFloor(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.floor(x);\n}\n\nfunction pixelCeil(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.ceil(x);\n}\n\nmodule.exports = function createRegions(options) {\n var scaleX = options.toWidth / options.width;\n var scaleY = options.toHeight / options.height;\n var innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;\n var innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder; // prevent infinite loop, this should never happen\n\n if (innerTileWidth < 1 || innerTileHeight < 1) {\n throw new Error('Internal error in pica: target tile width/height is too small.');\n }\n\n var x, y;\n var innerX, innerY, toTileWidth, toTileHeight;\n var tiles = [];\n var tile; // we go top-to-down instead of left-to-right to make image displayed from top to\n // doesn in the browser\n\n for (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) {\n for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {\n x = innerX - options.destTileBorder;\n\n if (x < 0) {\n x = 0;\n }\n\n toTileWidth = innerX + innerTileWidth + options.destTileBorder - x;\n\n if (x + toTileWidth >= options.toWidth) {\n toTileWidth = options.toWidth - x;\n }\n\n y = innerY - options.destTileBorder;\n\n if (y < 0) {\n y = 0;\n }\n\n toTileHeight = innerY + innerTileHeight + options.destTileBorder - y;\n\n if (y + toTileHeight >= options.toHeight) {\n toTileHeight = options.toHeight - y;\n }\n\n tile = {\n toX: x,\n toY: y,\n toWidth: toTileWidth,\n toHeight: toTileHeight,\n toInnerX: innerX,\n toInnerY: innerY,\n toInnerWidth: innerTileWidth,\n toInnerHeight: innerTileHeight,\n offsetX: x / scaleX - pixelFloor(x / scaleX),\n offsetY: y / scaleY - pixelFloor(y / scaleY),\n scaleX: scaleX,\n scaleY: scaleY,\n x: pixelFloor(x / scaleX),\n y: pixelFloor(y / scaleY),\n width: pixelCeil(toTileWidth / scaleX),\n height: pixelCeil(toTileHeight / scaleY)\n };\n tiles.push(tile);\n }\n }\n\n return tiles;\n};\n\n},{}],16:[function(_dereq_,module,exports){\n'use strict';\n\nfunction objClass(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nmodule.exports.isCanvas = function isCanvas(element) {\n var cname = objClass(element);\n return cname === '[object HTMLCanvasElement]'\n /* browser */\n || cname === '[object OffscreenCanvas]' || cname === '[object Canvas]'\n /* node-canvas */\n ;\n};\n\nmodule.exports.isImage = function isImage(element) {\n return objClass(element) === '[object HTMLImageElement]';\n};\n\nmodule.exports.isImageBitmap = function isImageBitmap(element) {\n return objClass(element) === '[object ImageBitmap]';\n};\n\nmodule.exports.limiter = function limiter(concurrency) {\n var active = 0,\n queue = [];\n\n function roll() {\n if (active < concurrency && queue.length) {\n active++;\n queue.shift()();\n }\n }\n\n return function limit(fn) {\n return new Promise(function (resolve, reject) {\n queue.push(function () {\n fn().then(function (result) {\n resolve(result);\n active--;\n roll();\n }, function (err) {\n reject(err);\n active--;\n roll();\n });\n });\n roll();\n });\n };\n};\n\nmodule.exports.cib_quality_name = function cib_quality_name(num) {\n switch (num) {\n case 0:\n return 'pixelated';\n\n case 1:\n return 'low';\n\n case 2:\n return 'medium';\n }\n\n return 'high';\n};\n\nmodule.exports.cib_support = function cib_support(createCanvas) {\n return Promise.resolve().then(function () {\n if (typeof createImageBitmap === 'undefined') {\n return false;\n }\n\n var c = createCanvas(100, 100);\n return createImageBitmap(c, 0, 0, 100, 100, {\n resizeWidth: 10,\n resizeHeight: 10,\n resizeQuality: 'high'\n }).then(function (bitmap) {\n var status = bitmap.width === 10; // Branch below is filtered on upper level. We do not call resize\n // detection for basic ImageBitmap.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap\n // old Crome 51 has ImageBitmap without .close(). Then this code\n // will throw and return 'false' as expected.\n //\n\n bitmap.close();\n c = null;\n return status;\n });\n })[\"catch\"](function () {\n return false;\n });\n};\n\nmodule.exports.worker_offscreen_canvas_support = function worker_offscreen_canvas_support() {\n return new Promise(function (resolve, reject) {\n if (typeof OffscreenCanvas === 'undefined') {\n // if OffscreenCanvas is present, we assume browser supports Worker and built-in Promise as well\n resolve(false);\n return;\n }\n\n function workerPayload(self) {\n if (typeof createImageBitmap === 'undefined') {\n self.postMessage(false);\n return;\n }\n\n Promise.resolve().then(function () {\n var canvas = new OffscreenCanvas(10, 10); // test that 2d context can be used in worker\n\n var ctx = canvas.getContext('2d');\n ctx.rect(0, 0, 1, 1); // test that cib can be used to return image bitmap from worker\n\n return createImageBitmap(canvas, 0, 0, 1, 1);\n }).then(function () {\n return self.postMessage(true);\n }, function () {\n return self.postMessage(false);\n });\n }\n\n var code = btoa(\"(\".concat(workerPayload.toString(), \")(self);\"));\n var w = new Worker(\"data:text/javascript;base64,\".concat(code));\n\n w.onmessage = function (ev) {\n return resolve(ev.data);\n };\n\n w.onerror = reject;\n }).then(function (result) {\n return result;\n }, function () {\n return false;\n });\n}; // Check if canvas.getContext('2d').getImageData can be used,\n// FireFox randomizes the output of that function in `privacy.resistFingerprinting` mode\n\n\nmodule.exports.can_use_canvas = function can_use_canvas(createCanvas) {\n var usable = false;\n\n try {\n var canvas = createCanvas(2, 1);\n var ctx = canvas.getContext('2d');\n var d = ctx.createImageData(2, 1);\n d.data[0] = 12;\n d.data[1] = 23;\n d.data[2] = 34;\n d.data[3] = 255;\n d.data[4] = 45;\n d.data[5] = 56;\n d.data[6] = 67;\n d.data[7] = 255;\n ctx.putImageData(d, 0, 0);\n d = null;\n d = ctx.getImageData(0, 0, 2, 1);\n\n if (d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255) {\n usable = true;\n }\n } catch (err) {}\n\n return usable;\n}; // Check if createImageBitmap(img, sx, sy, sw, sh) signature works correctly\n// with JPEG images oriented with Exif;\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n// TODO: remove after it's fixed in chrome for at least 2 releases\n\n\nmodule.exports.cib_can_use_region = function cib_can_use_region() {\n return new Promise(function (resolve) {\n if (typeof createImageBitmap === 'undefined') {\n resolve(false);\n return;\n }\n\n var image = new Image();\n image.src = 'data:image/jpeg;base64,' + '/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAA' + 'AABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9' + 'sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRc' + 'ZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoa' + 'GhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRA' + 'f/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAA' + 'IQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAA' + 'AAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIB' + 'AT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAA' + 'AAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAA' + 'AAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQ' + 'QAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z';\n\n image.onload = function () {\n createImageBitmap(image, 0, 0, image.width, image.height).then(function (bitmap) {\n if (bitmap.width === image.width && bitmap.height === image.height) {\n resolve(true);\n } else {\n resolve(false);\n }\n }, function () {\n return resolve(false);\n });\n };\n\n image.onerror = function () {\n return resolve(false);\n };\n });\n};\n\n},{}],17:[function(_dereq_,module,exports){\n// Web Worker wrapper for image resize function\n'use strict';\n\nmodule.exports = function () {\n var MathLib = _dereq_('./mathlib');\n\n var mathLib;\n /* eslint-disable no-undef */\n\n onmessage = function onmessage(ev) {\n var tileOpts = ev.data.opts;\n var returnBitmap = false;\n\n if (!tileOpts.src && tileOpts.srcBitmap) {\n var canvas = new OffscreenCanvas(tileOpts.width, tileOpts.height);\n var ctx = canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n ctx.drawImage(tileOpts.srcBitmap, 0, 0);\n tileOpts.src = ctx.getImageData(0, 0, tileOpts.width, tileOpts.height).data;\n canvas.width = canvas.height = 0;\n canvas = null;\n tileOpts.srcBitmap.close();\n tileOpts.srcBitmap = null; // Temporary force out data to typed array, because Chrome have artefacts\n // https://github.com/nodeca/pica/issues/223\n // returnBitmap = true;\n }\n\n if (!mathLib) mathLib = new MathLib(ev.data.features); // Use multimath's sync auto-init. Avoid Promise use in old browsers,\n // because polyfills are not propagated to webworker.\n\n var data = mathLib.resizeAndUnsharp(tileOpts);\n\n if (returnBitmap) {\n var toImageData = new ImageData(new Uint8ClampedArray(data), tileOpts.toWidth, tileOpts.toHeight);\n\n var _canvas = new OffscreenCanvas(tileOpts.toWidth, tileOpts.toHeight);\n\n var _ctx = _canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n\n _ctx.putImageData(toImageData, 0, 0);\n\n createImageBitmap(_canvas).then(function (bitmap) {\n postMessage({\n bitmap: bitmap\n }, [bitmap]);\n });\n } else {\n postMessage({\n data: data\n }, [data.buffer]);\n }\n };\n};\n\n},{\"./mathlib\":1}],18:[function(_dereq_,module,exports){\n// Calculate Gaussian blur of an image using IIR filter\n// The method is taken from Intel's white paper and code example attached to it:\n// https://software.intel.com/en-us/articles/iir-gaussian-blur-filter\n// -implementation-using-intel-advanced-vector-extensions\n\nvar a0, a1, a2, a3, b1, b2, left_corner, right_corner;\n\nfunction gaussCoef(sigma) {\n if (sigma < 0.5) {\n sigma = 0.5;\n }\n\n var a = Math.exp(0.726 * 0.726) / sigma,\n g1 = Math.exp(-a),\n g2 = Math.exp(-2 * a),\n k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);\n\n a0 = k;\n a1 = k * (a - 1) * g1;\n a2 = k * (a + 1) * g1;\n a3 = -k * g2;\n b1 = 2 * g1;\n b2 = -g2;\n left_corner = (a0 + a1) / (1 - b1 - b2);\n right_corner = (a2 + a3) / (1 - b1 - b2);\n\n // Attempt to force type to FP32.\n return new Float32Array([ a0, a1, a2, a3, b1, b2, left_corner, right_corner ]);\n}\n\nfunction convolveMono16(src, out, line, coeff, width, height) {\n // takes src image and writes the blurred and transposed result into out\n\n var prev_src, curr_src, curr_out, prev_out, prev_prev_out;\n var src_index, out_index, line_index;\n var i, j;\n var coeff_a0, coeff_a1, coeff_b1, coeff_b2;\n\n for (i = 0; i < height; i++) {\n src_index = i * width;\n out_index = i;\n line_index = 0;\n\n // left to right\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[6];\n prev_out = prev_prev_out;\n\n coeff_a0 = coeff[0];\n coeff_a1 = coeff[1];\n coeff_b1 = coeff[4];\n coeff_b2 = coeff[5];\n\n for (j = 0; j < width; j++) {\n curr_src = src[src_index];\n\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n prev_src = curr_src;\n\n line[line_index] = prev_out;\n line_index++;\n src_index++;\n }\n\n src_index--;\n line_index--;\n out_index += height * (width - 1);\n\n // right to left\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[7];\n prev_out = prev_prev_out;\n curr_src = prev_src;\n\n coeff_a0 = coeff[2];\n coeff_a1 = coeff[3];\n\n for (j = width - 1; j >= 0; j--) {\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n\n prev_src = curr_src;\n curr_src = src[src_index];\n\n out[out_index] = line[line_index] + prev_out;\n\n src_index--;\n line_index--;\n out_index -= height;\n }\n }\n}\n\n\nfunction blurMono16(src, width, height, radius) {\n // Quick exit on zero radius\n if (!radius) { return; }\n\n var out = new Uint16Array(src.length),\n tmp_line = new Float32Array(Math.max(width, height));\n\n var coeff = gaussCoef(radius);\n\n convolveMono16(src, out, tmp_line, coeff, width, height, radius);\n convolveMono16(out, src, tmp_line, coeff, height, width, radius);\n}\n\nmodule.exports = blurMono16;\n\n},{}],19:[function(_dereq_,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],20:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar assign = _dereq_('object-assign');\nvar base64decode = _dereq_('./lib/base64decode');\nvar hasWebAssembly = _dereq_('./lib/wa_detect');\n\n\nvar DEFAULT_OPTIONS = {\n js: true,\n wasm: true\n};\n\n\nfunction MultiMath(options) {\n if (!(this instanceof MultiMath)) return new MultiMath(options);\n\n var opts = assign({}, DEFAULT_OPTIONS, options || {});\n\n this.options = opts;\n\n this.__cache = {};\n\n this.__init_promise = null;\n this.__modules = opts.modules || {};\n this.__memory = null;\n this.__wasm = {};\n\n this.__isLE = ((new Uint32Array((new Uint8Array([ 1, 0, 0, 0 ])).buffer))[0] === 1);\n\n if (!this.options.js && !this.options.wasm) {\n throw new Error('mathlib: at least \"js\" or \"wasm\" should be enabled');\n }\n}\n\n\nMultiMath.prototype.has_wasm = hasWebAssembly;\n\n\nMultiMath.prototype.use = function (module) {\n this.__modules[module.name] = module;\n\n // Pin the best possible implementation\n if (this.options.wasm && this.has_wasm() && module.wasm_fn) {\n this[module.name] = module.wasm_fn;\n } else {\n this[module.name] = module.fn;\n }\n\n return this;\n};\n\n\nMultiMath.prototype.init = function () {\n if (this.__init_promise) return this.__init_promise;\n\n if (!this.options.js && this.options.wasm && !this.has_wasm()) {\n return Promise.reject(new Error('mathlib: only \"wasm\" was enabled, but it\\'s not supported'));\n }\n\n var self = this;\n\n this.__init_promise = Promise.all(Object.keys(self.__modules).map(function (name) {\n var module = self.__modules[name];\n\n if (!self.options.wasm || !self.has_wasm() || !module.wasm_fn) return null;\n\n // If already compiled - exit\n if (self.__wasm[name]) return null;\n\n // Compile wasm source\n return WebAssembly.compile(self.__base64decode(module.wasm_src))\n .then(function (m) { self.__wasm[name] = m; });\n }))\n .then(function () { return self; });\n\n return this.__init_promise;\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Methods below are for internal use from plugins\n\n\n// Simple decode base64 to typed array. Useful to load embedded webassembly\n// code. You probably don't need to call this method directly.\n//\nMultiMath.prototype.__base64decode = base64decode;\n\n\n// Increase current memory to include specified number of bytes. Do nothing if\n// size is already ok. You probably don't need to call this method directly,\n// because it will be invoked from `.__instance()`.\n//\nMultiMath.prototype.__reallocate = function mem_grow_to(bytes) {\n if (!this.__memory) {\n this.__memory = new WebAssembly.Memory({\n initial: Math.ceil(bytes / (64 * 1024))\n });\n return this.__memory;\n }\n\n var mem_size = this.__memory.buffer.byteLength;\n\n if (mem_size < bytes) {\n this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));\n }\n\n return this.__memory;\n};\n\n\n// Returns instantinated webassembly item by name, with specified memory size\n// and environment.\n// - use cache if available\n// - do sync module init, if async init was not called earlier\n// - allocate memory if not enougth\n// - can export functions to webassembly via \"env_extra\",\n// for example, { exp: Math.exp }\n//\nMultiMath.prototype.__instance = function instance(name, memsize, env_extra) {\n if (memsize) this.__reallocate(memsize);\n\n // If .init() was not called, do sync compile\n if (!this.__wasm[name]) {\n var module = this.__modules[name];\n this.__wasm[name] = new WebAssembly.Module(this.__base64decode(module.wasm_src));\n }\n\n if (!this.__cache[name]) {\n var env_base = {\n memoryBase: 0,\n memory: this.__memory,\n tableBase: 0,\n table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' })\n };\n\n this.__cache[name] = new WebAssembly.Instance(this.__wasm[name], {\n env: assign(env_base, env_extra || {})\n });\n }\n\n return this.__cache[name];\n};\n\n\n// Helper to calculate memory aligh for pointers. Webassembly does not require\n// this, but you may wish to experiment. Default base = 8;\n//\nMultiMath.prototype.__align = function align(number, base) {\n base = base || 8;\n var reminder = number % base;\n return number + (reminder ? base - reminder : 0);\n};\n\n\nmodule.exports = MultiMath;\n\n},{\"./lib/base64decode\":21,\"./lib/wa_detect\":22,\"object-assign\":23}],21:[function(_dereq_,module,exports){\n// base64 decode str -> Uint8Array, to load WA modules\n//\n'use strict';\n\n\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\nmodule.exports = function base64decode(str) {\n var input = str.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length;\n\n var out = new Uint8Array((max * 3) >> 2);\n\n // Collect by 6*4 bits (3 bytes)\n\n var bits = 0;\n var ptr = 0;\n\n for (var idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n }\n\n bits = (bits << 6) | BASE64_MAP.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n var tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n } else if (tailbits === 18) {\n out[ptr++] = (bits >> 10) & 0xFF;\n out[ptr++] = (bits >> 2) & 0xFF;\n } else if (tailbits === 12) {\n out[ptr++] = (bits >> 4) & 0xFF;\n }\n\n return out;\n};\n\n},{}],22:[function(_dereq_,module,exports){\n// Detect WebAssembly support.\n// - Check global WebAssembly object\n// - Try to load simple module (can be disabled via CSP)\n//\n'use strict';\n\n\nvar wa;\n\n\nmodule.exports = function hasWebAssembly() {\n // use cache if called before;\n if (typeof wa !== 'undefined') return wa;\n\n wa = false;\n\n if (typeof WebAssembly === 'undefined') return wa;\n\n // If WebAssenbly is disabled, code can throw on compile\n try {\n // https://github.com/brion/min-wasm-fail/blob/master/min-wasm-fail.in.js\n // Additional check that WA internals are correct\n\n /* eslint-disable comma-spacing, max-len */\n var bin = new Uint8Array([ 0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11 ]);\n var module = new WebAssembly.Module(bin);\n var instance = new WebAssembly.Instance(module, {});\n\n // test storing to and loading from a non-zero location via a parameter.\n // Safari on iOS 11.2.5 returns 0 unexpectedly at non-zero locations\n if (instance.exports.test(4) !== 0) wa = true;\n\n return wa;\n } catch (__) {}\n\n return wa;\n};\n\n},{}],23:[function(_dereq_,module,exports){\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n},{}],24:[function(_dereq_,module,exports){\nvar bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n 'function(require,module,exports){' + fn + '(self); }',\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n\n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n 'function(require,module,exports){' +\n // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);' +\n '}',\n scache\n ];\n\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({'\n + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n var blob = new Blob([src], { type: 'text/javascript' });\n if (options && options.bare) { return blob; }\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n},{}],\"/index.js\":[function(_dereq_,module,exports){\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar assign = _dereq_('object-assign');\n\nvar webworkify = _dereq_('webworkify');\n\nvar MathLib = _dereq_('./lib/mathlib');\n\nvar Pool = _dereq_('./lib/pool');\n\nvar utils = _dereq_('./lib/utils');\n\nvar worker = _dereq_('./lib/worker');\n\nvar createStages = _dereq_('./lib/stepper');\n\nvar createRegions = _dereq_('./lib/tiler'); // Deduplicate pools & limiters with the same configs\n// when user creates multiple pica instances.\n\n\nvar singletones = {};\nvar NEED_SAFARI_FIX = false;\n\ntry {\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n NEED_SAFARI_FIX = navigator.userAgent.indexOf('Safari') >= 0;\n }\n} catch (e) {}\n\nvar concurrency = 1;\n\nif (typeof navigator !== 'undefined') {\n concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);\n}\n\nvar DEFAULT_PICA_OPTS = {\n tile: 1024,\n concurrency: concurrency,\n features: ['js', 'wasm', 'ww'],\n idle: 2000,\n createCanvas: function createCanvas(width, height) {\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n return tmpCanvas;\n }\n};\nvar DEFAULT_RESIZE_OPTS = {\n quality: 3,\n alpha: false,\n unsharpAmount: 0,\n unsharpRadius: 0.0,\n unsharpThreshold: 0\n};\nvar CAN_NEW_IMAGE_DATA = false;\nvar CAN_CREATE_IMAGE_BITMAP = false;\nvar CAN_USE_CANVAS_GET_IMAGE_DATA = false;\nvar CAN_USE_OFFSCREEN_CANVAS = false;\nvar CAN_USE_CIB_REGION_FOR_IMAGE = false;\n\nfunction workerFabric() {\n return {\n value: webworkify(worker),\n destroy: function destroy() {\n this.value.terminate();\n\n if (typeof window !== 'undefined') {\n var url = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n if (url && url.revokeObjectURL && this.value.objectURL) {\n url.revokeObjectURL(this.value.objectURL);\n }\n }\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// API methods\n\n\nfunction Pica(options) {\n if (!(this instanceof Pica)) return new Pica(options);\n this.options = assign({}, DEFAULT_PICA_OPTS, options || {});\n var limiter_key = \"lk_\".concat(this.options.concurrency); // Share limiters to avoid multiple parallel workers when user creates\n // multiple pica instances.\n\n this.__limit = singletones[limiter_key] || utils.limiter(this.options.concurrency);\n if (!singletones[limiter_key]) singletones[limiter_key] = this.__limit; // List of supported features, according to options & browser/node.js\n\n this.features = {\n js: false,\n // pure JS implementation, can be disabled for testing\n wasm: false,\n // webassembly implementation for heavy functions\n cib: false,\n // resize via createImageBitmap (only FF at this moment)\n ww: false // webworkers\n\n };\n this.__workersPool = null; // Store requested features for webworkers\n\n this.__requested_features = [];\n this.__mathlib = null;\n}\n\nPica.prototype.init = function () {\n var _this = this;\n\n if (this.__initPromise) return this.__initPromise; // Test if we can create ImageData without canvas and memory copy\n\n if (typeof ImageData !== 'undefined' && typeof Uint8ClampedArray !== 'undefined') {\n try {\n /* eslint-disable no-new */\n new ImageData(new Uint8ClampedArray(400), 10, 10);\n CAN_NEW_IMAGE_DATA = true;\n } catch (__) {}\n } // ImageBitmap can be effective in 2 places:\n //\n // 1. Threaded jpeg unpack (basic)\n // 2. Built-in resize (blocked due problem in chrome, see issue #89)\n //\n // For basic use we also need ImageBitmap wo support .close() method,\n // see https://developer.mozilla.org/ru/docs/Web/API/ImageBitmap\n\n\n if (typeof ImageBitmap !== 'undefined') {\n if (ImageBitmap.prototype && ImageBitmap.prototype.close) {\n CAN_CREATE_IMAGE_BITMAP = true;\n } else {\n this.debug('ImageBitmap does not support .close(), disabled');\n }\n }\n\n var features = this.options.features.slice();\n\n if (features.indexOf('all') >= 0) {\n features = ['cib', 'wasm', 'js', 'ww'];\n }\n\n this.__requested_features = features;\n this.__mathlib = new MathLib(features); // Check WebWorker support if requested\n\n if (features.indexOf('ww') >= 0) {\n if (typeof window !== 'undefined' && 'Worker' in window) {\n // IE <= 11 don't allow to create webworkers from string. We should check it.\n // https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11\n try {\n var wkr = _dereq_('webworkify')(function () {});\n\n wkr.terminate();\n this.features.ww = true; // pool uniqueness depends on pool config + webworker config\n\n var wpool_key = \"wp_\".concat(JSON.stringify(this.options));\n\n if (singletones[wpool_key]) {\n this.__workersPool = singletones[wpool_key];\n } else {\n this.__workersPool = new Pool(workerFabric, this.options.idle);\n singletones[wpool_key] = this.__workersPool;\n }\n } catch (__) {}\n }\n }\n\n var initMath = this.__mathlib.init().then(function (mathlib) {\n // Copy detected features\n assign(_this.features, mathlib.features);\n });\n\n var checkCibResize;\n\n if (!CAN_CREATE_IMAGE_BITMAP) {\n checkCibResize = Promise.resolve(false);\n } else {\n checkCibResize = utils.cib_support(this.options.createCanvas).then(function (status) {\n if (_this.features.cib && features.indexOf('cib') < 0) {\n _this.debug('createImageBitmap() resize supported, but disabled by config');\n\n return;\n }\n\n if (features.indexOf('cib') >= 0) _this.features.cib = status;\n });\n }\n\n CAN_USE_CANVAS_GET_IMAGE_DATA = utils.can_use_canvas(this.options.createCanvas);\n var checkOffscreenCanvas;\n\n if (CAN_CREATE_IMAGE_BITMAP && CAN_NEW_IMAGE_DATA && features.indexOf('ww') !== -1) {\n checkOffscreenCanvas = utils.worker_offscreen_canvas_support();\n } else {\n checkOffscreenCanvas = Promise.resolve(false);\n }\n\n checkOffscreenCanvas = checkOffscreenCanvas.then(function (result) {\n CAN_USE_OFFSCREEN_CANVAS = result;\n }); // we use createImageBitmap to crop image data and pass it to workers,\n // so need to check whether function works correctly;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n\n var checkCibRegion = utils.cib_can_use_region().then(function (result) {\n CAN_USE_CIB_REGION_FOR_IMAGE = result;\n }); // Init math lib. That's async because can load some\n\n this.__initPromise = Promise.all([initMath, checkCibResize, checkOffscreenCanvas, checkCibRegion]).then(function () {\n return _this;\n });\n return this.__initPromise;\n}; // Call resizer in webworker or locally, depending on config\n\n\nPica.prototype.__invokeResize = function (tileOpts, opts) {\n var _this2 = this;\n\n // Share cache between calls:\n //\n // - wasm instance\n // - wasm memory object\n //\n opts.__mathCache = opts.__mathCache || {};\n return Promise.resolve().then(function () {\n if (!_this2.features.ww) {\n // not possible to have ImageBitmap here if user disabled WW\n return {\n data: _this2.__mathlib.resizeAndUnsharp(tileOpts, opts.__mathCache)\n };\n }\n\n return new Promise(function (resolve, reject) {\n var w = _this2.__workersPool.acquire();\n\n if (opts.cancelToken) opts.cancelToken[\"catch\"](function (err) {\n return reject(err);\n });\n\n w.value.onmessage = function (ev) {\n w.release();\n if (ev.data.err) reject(ev.data.err);else resolve(ev.data);\n };\n\n var transfer = [];\n if (tileOpts.src) transfer.push(tileOpts.src.buffer);\n if (tileOpts.srcBitmap) transfer.push(tileOpts.srcBitmap);\n w.value.postMessage({\n opts: tileOpts,\n features: _this2.__requested_features,\n preload: {\n wasm_nodule: _this2.__mathlib.__\n }\n }, transfer);\n });\n });\n}; // this function can return promise if createImageBitmap is used\n\n\nPica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extractTo) {\n if (this.features.ww && CAN_USE_OFFSCREEN_CANVAS && ( // createImageBitmap doesn't work for images (Image, ImageBitmap) with Exif orientation in Chrome,\n // can use canvas because canvas doesn't have orientation;\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n utils.isCanvas(from) || CAN_USE_CIB_REGION_FOR_IMAGE)) {\n this.debug('Create tile for OffscreenCanvas');\n return createImageBitmap(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height).then(function (bitmap) {\n extractTo.srcBitmap = bitmap;\n return extractTo;\n });\n } // Extract tile RGBA buffer, depending on input type\n\n\n if (utils.isCanvas(from)) {\n if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d', {\n alpha: Boolean(opts.alpha)\n }); // If input is Canvas - extract region data directly\n\n this.debug('Get tile pixel data');\n extractTo.src = stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data;\n return extractTo;\n } // If input is Image or decoded to ImageBitmap,\n // draw region to temporary canvas and extract data from it\n //\n // Note! Attempt to reuse this canvas causes significant slowdown in chrome\n //\n\n\n this.debug('Draw tile imageBitmap/image to temporary canvas');\n var tmpCanvas = this.options.createCanvas(tile.width, tile.height);\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.globalCompositeOperation = 'copy';\n tmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n this.debug('Get tile pixel data');\n extractTo.src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data; // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n return extractTo;\n};\n\nPica.prototype.__landTileData = function (tile, result, stageEnv) {\n var toImageData;\n this.debug('Convert raw rgba tile result to ImageData');\n\n if (result.bitmap) {\n stageEnv.toCtx.drawImage(result.bitmap, tile.toX, tile.toY);\n return null;\n }\n\n if (CAN_NEW_IMAGE_DATA) {\n // this branch is for modern browsers\n // If `new ImageData()` & Uint8ClampedArray suported\n toImageData = new ImageData(new Uint8ClampedArray(result.data), tile.toWidth, tile.toHeight);\n } else {\n // fallback for `node-canvas` and old browsers\n // (IE11 has ImageData but does not support `new ImageData()`)\n toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);\n\n if (toImageData.data.set) {\n toImageData.data.set(result.data);\n } else {\n // IE9 don't have `.set()`\n for (var i = toImageData.data.length - 1; i >= 0; i--) {\n toImageData.data[i] = result.data[i];\n }\n }\n }\n\n this.debug('Draw tile');\n\n if (NEED_SAFARI_FIX) {\n // Safari draws thin white stripes between tiles without this fix\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);\n } else {\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);\n }\n\n return null;\n};\n\nPica.prototype.__tileAndResize = function (from, to, opts) {\n var _this3 = this;\n\n var stageEnv = {\n srcCtx: null,\n srcImageBitmap: null,\n isImageBitmapReused: false,\n toCtx: null\n };\n\n var processTile = function processTile(tile) {\n return _this3.__limit(function () {\n if (opts.canceled) return opts.cancelToken;\n var tileOpts = {\n width: tile.width,\n height: tile.height,\n toWidth: tile.toWidth,\n toHeight: tile.toHeight,\n scaleX: tile.scaleX,\n scaleY: tile.scaleY,\n offsetX: tile.offsetX,\n offsetY: tile.offsetY,\n quality: opts.quality,\n alpha: opts.alpha,\n unsharpAmount: opts.unsharpAmount,\n unsharpRadius: opts.unsharpRadius,\n unsharpThreshold: opts.unsharpThreshold\n };\n\n _this3.debug('Invoke resize math');\n\n return Promise.resolve(tileOpts).then(function (tileOpts) {\n return _this3.__extractTileData(tile, from, opts, stageEnv, tileOpts);\n }).then(function (tileOpts) {\n _this3.debug('Invoke resize math');\n\n return _this3.__invokeResize(tileOpts, opts);\n }).then(function (result) {\n if (opts.canceled) return opts.cancelToken;\n stageEnv.srcImageData = null;\n return _this3.__landTileData(tile, result, stageEnv);\n });\n });\n }; // Need to normalize data source first. It can be canvas or image.\n // If image - try to decode in background if possible\n\n\n return Promise.resolve().then(function () {\n stageEnv.toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n if (utils.isCanvas(from)) return null;\n\n if (utils.isImageBitmap(from)) {\n stageEnv.srcImageBitmap = from;\n stageEnv.isImageBitmapReused = true;\n return null;\n }\n\n if (utils.isImage(from)) {\n // try do decode image in background for faster next operations;\n // if we're using offscreen canvas, cib is called per tile, so not needed here\n if (!CAN_CREATE_IMAGE_BITMAP) return null;\n\n _this3.debug('Decode image via createImageBitmap');\n\n return createImageBitmap(from).then(function (imageBitmap) {\n stageEnv.srcImageBitmap = imageBitmap;\n }) // Suppress error to use fallback, if method fails\n // https://github.com/nodeca/pica/issues/190\n\n /* eslint-disable no-unused-vars */\n [\"catch\"](function (e) {\n return null;\n });\n }\n\n throw new Error('Pica: \".from\" should be Image, Canvas or ImageBitmap');\n }).then(function () {\n if (opts.canceled) return opts.cancelToken;\n\n _this3.debug('Calculate tiles'); //\n // Here we are with \"normalized\" source,\n // follow to tiling\n //\n\n\n var regions = createRegions({\n width: opts.width,\n height: opts.height,\n srcTileSize: _this3.options.tile,\n toWidth: opts.toWidth,\n toHeight: opts.toHeight,\n destTileBorder: opts.__destTileBorder\n });\n var jobs = regions.map(function (tile) {\n return processTile(tile);\n });\n\n function cleanup(stageEnv) {\n if (stageEnv.srcImageBitmap) {\n if (!stageEnv.isImageBitmapReused) stageEnv.srcImageBitmap.close();\n stageEnv.srcImageBitmap = null;\n }\n }\n\n _this3.debug('Process tiles');\n\n return Promise.all(jobs).then(function () {\n _this3.debug('Finished!');\n\n cleanup(stageEnv);\n return to;\n }, function (err) {\n cleanup(stageEnv);\n throw err;\n });\n });\n};\n\nPica.prototype.__processStages = function (stages, from, to, opts) {\n var _this4 = this;\n\n if (opts.canceled) return opts.cancelToken;\n\n var _stages$shift = stages.shift(),\n _stages$shift2 = _slicedToArray(_stages$shift, 2),\n toWidth = _stages$shift2[0],\n toHeight = _stages$shift2[1];\n\n var isLastStage = stages.length === 0;\n opts = assign({}, opts, {\n toWidth: toWidth,\n toHeight: toHeight,\n // only use user-defined quality for the last stage,\n // use simpler (Hamming) filter for the first stages where\n // scale factor is large enough (more than 2-3)\n quality: isLastStage ? opts.quality : Math.min(1, opts.quality)\n });\n var tmpCanvas;\n\n if (!isLastStage) {\n // create temporary canvas\n tmpCanvas = this.options.createCanvas(toWidth, toHeight);\n }\n\n return this.__tileAndResize(from, isLastStage ? to : tmpCanvas, opts).then(function () {\n if (isLastStage) return to;\n opts.width = toWidth;\n opts.height = toHeight;\n return _this4.__processStages(stages, tmpCanvas, to, opts);\n }).then(function (res) {\n if (tmpCanvas) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n tmpCanvas.width = tmpCanvas.height = 0;\n }\n\n return res;\n });\n};\n\nPica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {\n var _this5 = this;\n\n var toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n this.debug('Resize via createImageBitmap()');\n return createImageBitmap(from, {\n resizeWidth: opts.toWidth,\n resizeHeight: opts.toHeight,\n resizeQuality: utils.cib_quality_name(opts.quality)\n }).then(function (imageBitmap) {\n if (opts.canceled) return opts.cancelToken; // if no unsharp - draw directly to output canvas\n\n if (!opts.unsharpAmount) {\n toCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n }\n\n _this5.debug('Unsharp result');\n\n var tmpCanvas = _this5.options.createCanvas(opts.toWidth, opts.toHeight);\n\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n var iData = tmpCtx.getImageData(0, 0, opts.toWidth, opts.toHeight);\n\n _this5.__mathlib.unsharp_mask(iData.data, opts.toWidth, opts.toHeight, opts.unsharpAmount, opts.unsharpRadius, opts.unsharpThreshold);\n\n toCtx.putImageData(iData, 0, 0); // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n iData = tmpCtx = tmpCanvas = toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n });\n};\n\nPica.prototype.resize = function (from, to, options) {\n var _this6 = this;\n\n this.debug('Start resize...');\n var opts = assign({}, DEFAULT_RESIZE_OPTS);\n\n if (!isNaN(options)) {\n opts = assign(opts, {\n quality: options\n });\n } else if (options) {\n opts = assign(opts, options);\n }\n\n opts.toWidth = to.width;\n opts.toHeight = to.height;\n opts.width = from.naturalWidth || from.width;\n opts.height = from.naturalHeight || from.height; // Prevent stepper from infinite loop\n\n if (to.width === 0 || to.height === 0) {\n return Promise.reject(new Error(\"Invalid output size: \".concat(to.width, \"x\").concat(to.height)));\n }\n\n if (opts.unsharpRadius > 2) opts.unsharpRadius = 2;\n opts.canceled = false;\n\n if (opts.cancelToken) {\n // Wrap cancelToken to avoid successive resolve & set flag\n opts.cancelToken = opts.cancelToken.then(function (data) {\n opts.canceled = true;\n throw data;\n }, function (err) {\n opts.canceled = true;\n throw err;\n });\n }\n\n var DEST_TILE_BORDER = 3; // Max possible filter window size\n\n opts.__destTileBorder = Math.ceil(Math.max(DEST_TILE_BORDER, 2.5 * opts.unsharpRadius | 0));\n return this.init().then(function () {\n if (opts.canceled) return opts.cancelToken; // if createImageBitmap supports resize, just do it and return\n\n if (_this6.features.cib) {\n return _this6.__resizeViaCreateImageBitmap(from, to, opts);\n }\n\n if (!CAN_USE_CANVAS_GET_IMAGE_DATA) {\n var err = new Error('Pica: cannot use getImageData on canvas, ' + \"make sure fingerprinting protection isn't enabled\");\n err.code = 'ERR_GET_IMAGE_DATA';\n throw err;\n } //\n // No easy way, let's resize manually via arrays\n //\n\n\n var stages = createStages(opts.width, opts.height, opts.toWidth, opts.toHeight, _this6.options.tile, opts.__destTileBorder);\n return _this6.__processStages(stages, from, to, opts);\n });\n}; // RGBA buffer resize\n//\n\n\nPica.prototype.resizeBuffer = function (options) {\n var _this7 = this;\n\n var opts = assign({}, DEFAULT_RESIZE_OPTS, options);\n return this.init().then(function () {\n return _this7.__mathlib.resizeAndUnsharp(opts);\n });\n};\n\nPica.prototype.toBlob = function (canvas, mimeType, quality) {\n mimeType = mimeType || 'image/png';\n return new Promise(function (resolve) {\n if (canvas.toBlob) {\n canvas.toBlob(function (blob) {\n return resolve(blob);\n }, mimeType, quality);\n return;\n }\n\n if (canvas.convertToBlob) {\n resolve(canvas.convertToBlob({\n type: mimeType,\n quality: quality\n }));\n return;\n } // Fallback for old browsers\n\n\n var asString = atob(canvas.toDataURL(mimeType, quality).split(',')[1]);\n var len = asString.length;\n var asBuffer = new Uint8Array(len);\n\n for (var i = 0; i < len; i++) {\n asBuffer[i] = asString.charCodeAt(i);\n }\n\n resolve(new Blob([asBuffer], {\n type: mimeType\n }));\n });\n};\n\nPica.prototype.debug = function () {};\n\nmodule.exports = Pica;\n\n},{\"./lib/mathlib\":1,\"./lib/pool\":13,\"./lib/stepper\":14,\"./lib/tiler\":15,\"./lib/utils\":16,\"./lib/worker\":17,\"object-assign\":23,\"webworkify\":24}]},{},[])(\"/index.js\")\n});\n"],"names":["f","module","r","e","n","t","o","i","c","require","u","a","p","_dereq_","exports","inherits","Multimath","mm_unsharp_mask","mm_resize","MathLib","requested_features","__requested_features","features","options","cache","result","clampTo8","convolveHorizontally","src","dest","srcW","srcH","destW","filters","g","b","filterPtr","filterShift","filterSize","srcPtr","srcY","destX","filterVal","srcOffset","destOffset","convolveVertically","createFilters","resetAlpha","dst","width","height","ptr","len","destH","scaleX","scaleY","offsetX","offsetY","quality","alpha","filtersX","filtersY","tmp","FILTER_INFO","FIXED_FRAC_BITS","toFixedPoint","num","srcSize","destSize","scale","offset","filterFunction","scaleInverted","scaleClamped","srcWindow","destPixel","srcPixel","srcFirst","srcLast","filterElementSize","floatFilter","fxpFilter","total","pxl","idx","floatVal","filterTotal","leftNotEmpty","rightNotEmpty","maxFilterElementSize","packedFilter","packedFilterPtr","slowCopy","x","xpi","asUint8Array","IS_LE","copyInt16asLE","target","target_offset","data","src_offset","tmp_offset","filtersX_offset","filtersY_offset","alloc_bytes","instance","mem","mem32","src32","fn","dest32","glur_mono16","hsv_v16","img","size","out","max","amount","radius","threshold","v1","v2","vmul","diff","iTimes4","brightness","blured","amountFp","thresholdFp","pixels","img_bytes_cnt","hsv_bytes_cnt","blur_bytes_cnt","blur_line_byte_cnt","blur_coeffs_byte_cnt","img_offset","hsv_offset","blur_offset","blur_tmp_offset","blur_line_offset","blur_coeffs_offset","img32","GC_INTERVAL","Pool","create","idle","_this","resource","_this2","_this3","now","MIN_INNER_TILE_SIZE","fromWidth","fromHeight","toWidth","toHeight","srcTileSize","destTileBorder","minScale","stageCount","PIXEL_EPSILON","pixelFloor","nearest","pixelCeil","innerTileWidth","innerTileHeight","y","innerX","innerY","toTileWidth","toTileHeight","tiles","tile","objClass","obj","element","cname","concurrency","active","queue","roll","resolve","reject","err","createCanvas","bitmap","status","workerPayload","self","canvas","ctx","code","w","ev","usable","d","image","mathLib","tileOpts","a0","a1","a2","a3","b1","b2","left_corner","right_corner","gaussCoef","sigma","g1","g2","k","convolveMono16","line","coeff","prev_src","curr_src","curr_out","prev_out","prev_prev_out","src_index","out_index","line_index","j","coeff_a0","coeff_a1","coeff_b1","coeff_b2","blurMono16","tmp_line","ctor","superCtor","TempCtor","assign","base64decode","hasWebAssembly","DEFAULT_OPTIONS","MultiMath","opts","name","m","bytes","mem_size","memsize","env_extra","env_base","number","base","reminder","BASE64_MAP","str","input","bits","tailbits","wa","bin","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","val","shouldUseNative","test1","test2","order2","test3","letter","source","from","to","symbols","s","key","bundleFn","sources","stringify","wkey","cacheKeys","l","exp","wcache","skey","scache","workerSources","resolveSources","depPath","depKey","URL","blob","workerUrl","worker","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_i","_arr","_n","_d","_s","_e","webworkify","utils","createStages","createRegions","singletones","NEED_SAFARI_FIX","DEFAULT_PICA_OPTS","tmpCanvas","DEFAULT_RESIZE_OPTS","CAN_NEW_IMAGE_DATA","CAN_CREATE_IMAGE_BITMAP","CAN_USE_CANVAS_GET_IMAGE_DATA","CAN_USE_OFFSCREEN_CANVAS","CAN_USE_CIB_REGION_FOR_IMAGE","workerFabric","url","Pica","limiter_key","wkr","wpool_key","initMath","mathlib","checkCibResize","checkOffscreenCanvas","checkCibRegion","transfer","stageEnv","extractTo","tmpCtx","toImageData","processTile","imageBitmap","regions","jobs","cleanup","stages","_this4","_stages$shift","_stages$shift2","isLastStage","res","_this5","toCtx","iData","_this6","DEST_TILE_BORDER","_this7","mimeType","asString","asBuffer"],"mappings":";ygBAOC,SAASA,EAAE,CAA4DC,EAAA,QAAeD,EAAG,CAAmO,GAAG,UAAU,CAA2B,OAAQ,UAAU,CAAC,SAASE,EAAEC,EAAEC,EAAEC,EAAE,CAAC,SAASC,EAAEC,EAAEP,EAAE,CAAC,GAAG,CAACI,EAAEG,CAAC,EAAE,CAAC,GAAG,CAACJ,EAAEI,CAAC,EAAE,CAAC,IAAIC,EAAc,OAAOC,GAAnB,YAA4BA,EAAQ,GAAG,CAACT,GAAGQ,EAAE,OAAOA,EAAED,EAAE,EAAE,EAAE,GAAGG,EAAE,OAAOA,EAAEH,EAAE,EAAE,EAAE,IAAII,EAAE,IAAI,MAAM,uBAAuBJ,EAAE,GAAG,EAAE,MAAMI,EAAE,KAAK,mBAAmBA,CAAC,CAAC,IAAIC,EAAER,EAAEG,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAA,EAAEJ,EAAEI,CAAC,EAAE,CAAC,EAAE,KAAKK,EAAE,QAAQ,SAASV,EAAE,CAAC,IAAIE,EAAED,EAAEI,CAAC,EAAE,CAAC,EAAEL,CAAC,EAAE,OAAOI,EAAEF,GAAGF,CAAC,CAAC,EAAEU,EAAEA,EAAE,QAAQV,EAAEC,EAAEC,EAAEC,CAAC,CAAC,CAAC,OAAOD,EAAEG,CAAC,EAAE,OAAO,CAAC,QAAQG,EAAc,OAAOD,GAAnB,YAA4BA,EAAQF,EAAE,EAAEA,EAAEF,EAAE,OAAOE,IAAID,EAAED,EAAEE,CAAC,CAAC,EAAE,OAAOD,CAAC,CAAC,OAAOJ,CAAC,EAAI,EAAC,CAAC,EAAE,CAAC,SAASW,EAAQZ,EAAOa,EAAQ,CAQ51B,IAAIC,EAAWF,EAAQ,UAAU,EAE7BG,EAAYH,EAAQ,WAAW,EAE/BI,EAAkBJ,EAAQ,mBAAmB,EAE7CK,EAAYL,EAAQ,aAAa,EAErC,SAASM,EAAQC,EAAoB,CACnC,IAAIC,EAAuBD,GAAsB,CAAE,EAE/CE,EAAW,CACb,GAAID,EAAqB,QAAQ,IAAI,GAAK,EAC1C,KAAMA,EAAqB,QAAQ,MAAM,GAAK,CAC/C,EACDL,EAAU,KAAK,KAAMM,CAAQ,EAC7B,KAAK,SAAW,CACd,GAAIA,EAAS,GACb,KAAMA,EAAS,MAAQ,KAAK,SAAQ,CACrC,EACD,KAAK,IAAIL,CAAe,EACxB,KAAK,IAAIC,CAAS,CACpB,CAEAH,EAASI,EAASH,CAAS,EAE3BG,EAAQ,UAAU,iBAAmB,SAA0BI,EAASC,EAAO,CAC7E,IAAIC,EAAS,KAAK,OAAOF,EAASC,CAAK,EAEvC,OAAID,EAAQ,eACV,KAAK,aAAaE,EAAQF,EAAQ,QAASA,EAAQ,SAAUA,EAAQ,cAAeA,EAAQ,cAAeA,EAAQ,gBAAgB,EAG9HE,CACR,EAEDxB,EAAO,QAAUkB,CAEjB,EAAE,CAAC,cAAc,EAAE,oBAAoB,EAAE,SAAW,GAAG,UAAY,EAAE,CAAC,EAAE,EAAE,CAAC,SAASN,EAAQZ,EAAOa,EAAQ,CAM3G,SAASY,EAASnB,EAAG,CACnB,OAAOA,EAAI,EAAI,EAAIA,EAAI,IAAM,IAAMA,CACpC,CAWD,SAASoB,EAAqBC,EAAKC,EAAMC,EAAMC,EAAMC,EAAOC,EAAS,CACnE,IAAI/B,EAAGgC,EAAGC,EAAGxB,EACTyB,EAAWC,EAAaC,EACxBC,EAAQC,EAAMC,EAAOC,EACrBC,EAAY,EACZC,EAAa,EAEjB,IAAKJ,EAAO,EAAGA,EAAOT,EAAMS,IAAQ,CAGlC,IAFAJ,EAAY,EAEPK,EAAQ,EAAGA,EAAQT,EAAOS,IAAS,CAOtC,IALAJ,EAAcJ,EAAQG,GAAW,EACjCE,EAAaL,EAAQG,GAAW,EAChCG,EAASI,EAAYN,EAAc,EAAI,EACvCnC,EAAIgC,EAAIC,EAAIxB,EAAI,EAET2B,EAAa,EAAGA,IACrBI,EAAYT,EAAQG,GAAW,EAG/BzB,EAAIA,EAAI+B,EAAYd,EAAIW,EAAS,CAAC,EAAI,EACtCJ,EAAIA,EAAIO,EAAYd,EAAIW,EAAS,CAAC,EAAI,EACtCL,EAAIA,EAAIQ,EAAYd,EAAIW,EAAS,CAAC,EAAI,EACtCrC,EAAIA,EAAIwC,EAAYd,EAAIW,CAAM,EAAI,EAClCA,EAASA,EAAS,EAAI,EAUxBV,EAAKe,EAAa,CAAC,EAAIlB,EAASf,EAAK,MAAY,EAEhD,EACDkB,EAAKe,EAAa,CAAC,EAAIlB,EAASS,EAAK,MAAY,EAEhD,EACDN,EAAKe,EAAa,CAAC,EAAIlB,EAASQ,EAAK,MAAY,EAEhD,EACDL,EAAKe,CAAU,EAAIlB,EAASxB,EAAK,MAAY,EAE5C,EACD0C,EAAaA,EAAab,EAAO,EAAI,CAC3C,CAEIa,GAAcJ,EAAO,GAAK,EAAI,EAC9BG,GAAaH,EAAO,GAAKV,EAAO,EAAI,CACxC,CACC,CAKD,SAASe,EAAmBjB,EAAKC,EAAMC,EAAMC,EAAMC,EAAOC,EAAS,CACjE,IAAI/B,EAAGgC,EAAGC,EAAGxB,EACTyB,EAAWC,EAAaC,EACxBC,EAAQC,EAAMC,EAAOC,EACrBC,EAAY,EACZC,EAAa,EAEjB,IAAKJ,EAAO,EAAGA,EAAOT,EAAMS,IAAQ,CAGlC,IAFAJ,EAAY,EAEPK,EAAQ,EAAGA,EAAQT,EAAOS,IAAS,CAOtC,IALAJ,EAAcJ,EAAQG,GAAW,EACjCE,EAAaL,EAAQG,GAAW,EAChCG,EAASI,EAAYN,EAAc,EAAI,EACvCnC,EAAIgC,EAAIC,EAAIxB,EAAI,EAET2B,EAAa,EAAGA,IACrBI,EAAYT,EAAQG,GAAW,EAG/BzB,EAAIA,EAAI+B,EAAYd,EAAIW,EAAS,CAAC,EAAI,EACtCJ,EAAIA,EAAIO,EAAYd,EAAIW,EAAS,CAAC,EAAI,EACtCL,EAAIA,EAAIQ,EAAYd,EAAIW,EAAS,CAAC,EAAI,EACtCrC,EAAIA,EAAIwC,EAAYd,EAAIW,CAAM,EAAI,EAClCA,EAASA,EAAS,EAAI,EAUxBV,EAAKe,EAAa,CAAC,EAAIlB,EAASf,EAAK,MAAY,EAEhD,EACDkB,EAAKe,EAAa,CAAC,EAAIlB,EAASS,EAAK,MAAY,EAEhD,EACDN,EAAKe,EAAa,CAAC,EAAIlB,EAASQ,EAAK,MAAY,EAEhD,EACDL,EAAKe,CAAU,EAAIlB,EAASxB,EAAK,MAAY,EAE5C,EACD0C,EAAaA,EAAab,EAAO,EAAI,CAC3C,CAEIa,GAAcJ,EAAO,GAAK,EAAI,EAC9BG,GAAaH,EAAO,GAAKV,EAAO,EAAI,CACxC,CACA,CAEA7B,EAAO,QAAU,CACf,qBAAsB0B,EACtB,mBAAoBkB,CACrB,CAED,EAAE,CAAA,CAAE,EAAE,EAAE,CAAC,SAAShC,EAAQZ,EAAOa,EAAQ,CAMzCb,EAAO,QAAU,s3BAEjB,EAAE,CAAA,CAAE,EAAE,EAAE,CAAC,SAASY,EAAQZ,EAAOa,EAAQ,CAGzCb,EAAO,QAAU,CACf,KAAM,SACN,GAAIY,EAAQ,UAAU,EACtB,QAASA,EAAQ,eAAe,EAChC,SAAUA,EAAQ,wBAAwB,CAC3C,CAEA,EAAC,CAAC,yBAAyB,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,SAASA,EAAQZ,EAAOa,EAAQ,CAGlG,IAAIgC,EAAgBjC,EAAQ,qBAAqB,EAE7Cc,EAAuBd,EAAQ,YAAY,EAAE,qBAE7CgC,EAAqBhC,EAAQ,YAAY,EAAE,mBAE/C,SAASkC,EAAWC,EAAKC,EAAOC,EAAQ,CAItC,QAHIC,EAAM,EACNC,EAAMH,EAAQC,EAAS,EAAI,EAExBC,EAAMC,GACXJ,EAAIG,CAAG,EAAI,IACXA,EAAMA,EAAM,EAAI,CAEpB,CAEAlD,EAAO,QAAU,SAAgBsB,EAAS,CACxC,IAAIK,EAAML,EAAQ,IACdO,EAAOP,EAAQ,MACfQ,EAAOR,EAAQ,OACfS,EAAQT,EAAQ,QAChB8B,EAAQ9B,EAAQ,SAChB+B,EAAS/B,EAAQ,QAAUA,EAAQ,QAAUA,EAAQ,MACrDgC,EAAShC,EAAQ,QAAUA,EAAQ,SAAWA,EAAQ,OACtDiC,EAAUjC,EAAQ,SAAW,EAC7BkC,EAAUlC,EAAQ,SAAW,EAC7BM,EAAON,EAAQ,MAAQ,IAAI,WAAWS,EAAQqB,EAAQ,CAAC,EACvDK,EAAU,OAAOnC,EAAQ,QAAY,IAAc,EAAIA,EAAQ,QAC/DoC,EAAQpC,EAAQ,OAAS,GACzBqC,EAAWd,EAAcY,EAAS5B,EAAME,EAAOsB,EAAQE,CAAO,EAC9DK,EAAWf,EAAcY,EAAS3B,EAAMsB,EAAOE,EAAQE,CAAO,EAC9DK,EAAM,IAAI,WAAW9B,EAAQD,EAAO,CAAC,EAIzC,OAAAJ,EAAqBC,EAAKkC,EAAKhC,EAAMC,EAAMC,EAAO4B,CAAQ,EAC1Df,EAAmBiB,EAAKjC,EAAME,EAAMC,EAAOqB,EAAOQ,CAAQ,EAIrDF,GAAOZ,EAAWlB,EAAMG,EAAOqB,CAAK,EAClCxB,CACR,CAEA,EAAC,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC,EAAE,EAAE,CAAC,SAAShB,EAAQZ,EAAOa,EAAQ,CAY/E,IAAIiD,EAAclD,EAAQ,sBAAsB,EAG5CmD,EAAkB,GAEtB,SAASC,EAAaC,EAAK,CACzB,OAAO,KAAK,MAAMA,IAAQ,GAAKF,GAAmB,EAAE,CACtD,CAEA/D,EAAO,QAAU,SAAyByD,EAASS,EAASC,EAAUC,EAAOC,EAAQ,CACnF,IAAIC,EAAiBR,EAAYL,CAAO,EAAE,OACtCc,EAAgB,EAAMH,EACtBI,EAAe,KAAK,IAAI,EAAKJ,CAAK,EAGlCK,EAAYX,EAAYL,CAAO,EAAE,IAAMe,EACvCE,EAAWC,EAAUC,EAAUC,EAASC,EAAmBC,EAAaC,EAAWC,EAAOC,EAAKC,EAAKC,EAAUC,EAAa5C,EAC3H6C,EAAcC,EAAenD,EAAaC,EAC1CmD,EAAuB,KAAK,OAAOf,EAAY,GAAK,CAAC,EACrDgB,EAAe,IAAI,YAAYD,EAAuB,GAAKrB,CAAQ,EACnEuB,EAAkB,EAClBC,EAAW,CAACF,EAAa,UAAY,CAACA,EAAa,IAEvD,IAAKf,EAAY,EAAGA,EAAYP,EAAUO,IAAa,CAUrD,IARAC,GAAYD,EAAY,IAAOH,EAAgBF,EAC/CO,EAAW,KAAK,IAAI,EAAG,KAAK,MAAMD,EAAWF,CAAS,CAAC,EACvDI,EAAU,KAAK,IAAIX,EAAU,EAAG,KAAK,KAAKS,EAAWF,CAAS,CAAC,EAC/DK,EAAoBD,EAAUD,EAAW,EACzCG,EAAc,IAAI,aAAaD,CAAiB,EAChDE,EAAY,IAAI,WAAWF,CAAiB,EAC5CG,EAAQ,EAEHC,EAAMN,EAAUO,EAAM,EAAGD,GAAOL,EAASK,IAAOC,IACnDC,EAAWd,GAAgBY,EAAM,GAAMP,GAAYH,CAAY,EAC/DS,GAASG,EACTL,EAAYI,CAAG,EAAIC,EAMrB,IAFAC,EAAc,EAETF,EAAM,EAAGA,EAAMJ,EAAY,OAAQI,IACtC1C,EAAYsC,EAAYI,CAAG,EAAIF,EAC/BI,GAAe5C,EACfuC,EAAUG,CAAG,EAAInB,EAAavB,CAAS,EAezC,IAXAuC,EAAUb,GAAY,CAAC,GAAKH,EAAa,EAAMqB,CAAW,EAS1DC,EAAe,EAERA,EAAeN,EAAU,QAAUA,EAAUM,CAAY,IAAM,GACpEA,IAGF,GAAIA,EAAeN,EAAU,OAAQ,CAGnC,IAFAO,EAAgBP,EAAU,OAAS,EAE5BO,EAAgB,GAAKP,EAAUO,CAAa,IAAM,GACvDA,IASF,GANAnD,EAAcwC,EAAWU,EACzBjD,EAAakD,EAAgBD,EAAe,EAC5CG,EAAaC,GAAiB,EAAItD,EAElCqD,EAAaC,GAAiB,EAAIrD,EAE9B,CAACsD,EACHF,EAAa,IAAIT,EAAU,SAASM,EAAcC,EAAgB,CAAC,EAAGG,CAAe,EACrFA,GAAmBrD,WAGd8C,EAAMG,EAAcH,GAAOI,EAAeJ,IAC7CM,EAAaC,GAAiB,EAAIV,EAAUG,CAAG,CAGzD,MAEMM,EAAaC,GAAiB,EAAI,EAElCD,EAAaC,GAAiB,EAAI,CAExC,CAEE,OAAOD,CACR,CAED,EAAE,CAAC,uBAAuB,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS7E,EAAQZ,EAAOa,EAAQ,CAQjEb,EAAO,QAAU,CAAC,CAEhB,IAAK,GACL,OAAQ,SAAgB4F,EAAG,CACzB,OAAOA,GAAK,KAAQA,EAAI,GAAM,EAAM,CACxC,CACA,EAAG,CAED,IAAK,EACL,OAAQ,SAAgBA,EAAG,CACzB,GAAIA,GAAK,IAAQA,GAAK,EACpB,MAGF,GAAA,GAAIA,EAAI,eAAmBA,EAAI,aAC7B,MAGF,GAAA,IAAIC,EAAMD,EAAI,KAAK,GACnB,OAAO,KAAK,IAAIC,CAAG,EAAIA,GAAO,IAAO,IAAO,KAAK,IAAIA,EAAM,CAAG,EAClE,CACA,EAAG,CAED,IAAK,EACL,OAAQ,SAAgBD,EAAG,CACzB,GAAIA,GAAK,IAAQA,GAAK,EACpB,MAGF,GAAA,GAAIA,EAAI,eAAmBA,EAAI,aAC7B,SAGF,IAAIC,EAAMD,EAAI,KAAK,GACnB,OAAO,KAAK,IAAIC,CAAG,EAAIA,EAAM,KAAK,IAAIA,EAAM,CAAG,GAAKA,EAAM,EAC9D,CACA,EAAG,CAED,IAAK,EACL,OAAQ,SAAgBD,EAAG,CACzB,GAAIA,GAAK,IAAQA,GAAK,EACpB,SAGF,GAAIA,EAAI,eAAmBA,EAAI,aAC7B,MAAO,GAGT,IAAIC,EAAMD,EAAI,KAAK,GACnB,OAAO,KAAK,IAAIC,CAAG,EAAIA,EAAM,KAAK,IAAIA,EAAM,CAAG,GAAKA,EAAM,EAC9D,CACA,CAAC,CAED,EAAE,CAAA,CAAE,EAAE,EAAE,CAAC,SAASjF,EAAQZ,EAAOa,EAAQ,CAGzC,IAAIgC,EAAgBjC,EAAQ,qBAAqB,EAEjD,SAASkC,EAAWC,EAAKC,EAAOC,EAAQ,CAItC,QAHIC,EAAM,EACNC,EAAMH,EAAQC,EAAS,EAAI,EAExBC,EAAMC,GACXJ,EAAIG,CAAG,EAAI,IACXA,EAAMA,EAAM,EAAI,CAEpB,CAEA,SAAS4C,EAAanE,EAAK,CACzB,OAAO,IAAI,WAAWA,EAAI,OAAQ,EAAGA,EAAI,UAAU,CACrD,CAEA,IAAIoE,EAAQ,GAEZ,GAAI,CACFA,EAAQ,IAAI,YAAY,IAAI,WAAW,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAM,CACrE,MAAY,CAAA,CAEb,SAASC,EAAcrE,EAAKsE,EAAQC,EAAe,CACjD,GAAIH,EAAO,CACTE,EAAO,IAAIH,EAAanE,CAAG,EAAGuE,CAAa,EAC3C,MACJ,CAEE,QAAShD,EAAMgD,EAAe5F,EAAI,EAAGA,EAAIqB,EAAI,OAAQrB,IAAK,CACxD,IAAI6F,EAAOxE,EAAIrB,CAAC,EAChB2F,EAAO/C,GAAK,EAAIiD,EAAO,IACvBF,EAAO/C,GAAK,EAAIiD,GAAQ,EAAI,GAChC,CACA,CAEAnG,EAAO,QAAU,SAAqBsB,EAAS,CAC7C,IAAIK,EAAML,EAAQ,IACdO,EAAOP,EAAQ,MACfQ,EAAOR,EAAQ,OACfS,EAAQT,EAAQ,QAChB8B,EAAQ9B,EAAQ,SAChB+B,EAAS/B,EAAQ,QAAUA,EAAQ,QAAUA,EAAQ,MACrDgC,EAAShC,EAAQ,QAAUA,EAAQ,SAAWA,EAAQ,OACtDiC,EAAUjC,EAAQ,SAAW,EAC7BkC,EAAUlC,EAAQ,SAAW,EAC7BM,EAAON,EAAQ,MAAQ,IAAI,WAAWS,EAAQqB,EAAQ,CAAC,EACvDK,EAAU,OAAOnC,EAAQ,QAAY,IAAc,EAAIA,EAAQ,QAC/DoC,EAAQpC,EAAQ,OAAS,GACzBqC,EAAWd,EAAcY,EAAS5B,EAAME,EAAOsB,EAAQE,CAAO,EAC9DK,EAAWf,EAAcY,EAAS3B,EAAMsB,EAAOE,EAAQE,CAAO,EAE9D4C,EAAa,EAEbC,EAAa,KAAK,QAAQD,EAAa,KAAK,IAAIzE,EAAI,WAAYC,EAAK,UAAU,CAAC,EAEhF0E,EAAkB,KAAK,QAAQD,EAAavE,EAAOC,EAAQ,CAAC,EAE5DwE,EAAkB,KAAK,QAAQD,EAAkB3C,EAAS,UAAU,EAEpE6C,EAAcD,EAAkB3C,EAAS,WAEzC6C,EAAW,KAAK,WAAW,SAAUD,CAAW,EAKhDE,EAAM,IAAI,WAAW,KAAK,SAAS,MAAM,EACzCC,EAAQ,IAAI,YAAY,KAAK,SAAS,MAAM,EAE5CC,EAAQ,IAAI,YAAYjF,EAAI,MAAM,EACtCgF,EAAM,IAAIC,CAAK,EAGfZ,EAAcrC,EAAU+C,EAAKJ,CAAe,EAC5CN,EAAcpC,EAAU8C,EAAKH,CAAe,EAI5C,IAAIM,EAAKJ,EAAS,QAAQ,YAAcA,EAAS,QAAQ,YACzDI,EAAGP,EAAiBC,EAAiBF,EAAYxE,EAAMC,EAAMC,EAAOqB,CAAK,EAKzE,IAAI0D,EAAS,IAAI,YAAYlF,EAAK,MAAM,EACxC,OAAAkF,EAAO,IAAI,IAAI,YAAY,KAAK,SAAS,OAAQ,EAAG1D,EAAQrB,CAAK,CAAC,EAI7D2B,GAAOZ,EAAWlB,EAAMG,EAAOqB,CAAK,EAClCxB,CACR,CAED,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,EAAE,CAAC,SAAShB,EAAQZ,EAAOa,EAAQ,CAGhEb,EAAO,QAAU,CACf,KAAM,eACN,GAAIY,EAAQ,gBAAgB,EAC5B,QAASA,EAAQ,qBAAqB,EACtC,SAAUA,EAAQ,4BAA4B,CAC/C,CAEA,EAAC,CAAC,iBAAiB,GAAG,sBAAsB,GAAG,6BAA6B,EAAE,CAAC,EAAE,GAAG,CAAC,SAASA,EAAQZ,EAAOa,EAAQ,CAYtH,IAAIkG,EAAcnG,EAAQ,aAAa,EAEvC,SAASoG,EAAQC,EAAKjE,EAAOC,EAAQ,CAKnC,QAJIiE,EAAOlE,EAAQC,EACfkE,EAAM,IAAI,YAAYD,CAAI,EAC1BjH,EAAGgC,EAAGC,EAAGkF,EAEJ9G,EAAI,EAAGA,EAAI4G,EAAM5G,IACxBL,EAAIgH,EAAI,EAAI3G,CAAC,EACb2B,EAAIgF,EAAI,EAAI3G,EAAI,CAAC,EACjB4B,EAAI+E,EAAI,EAAI3G,EAAI,CAAC,EACjB8G,EAAMnH,GAAKgC,GAAKhC,GAAKiC,EAAIjC,EAAIgC,GAAKC,GAAKD,GAAKhC,EAAIgC,EAAIC,EACpDiF,EAAI7G,CAAC,EAAI8G,GAAO,EAGlB,OAAOD,CACT,CAEAnH,EAAO,QAAU,SAAiBiH,EAAKjE,EAAOC,EAAQoE,EAAQC,EAAQC,EAAW,CAC/E,IAAIC,EAAIC,EAAIC,EACRC,EAAMC,EAEV,GAAI,EAAAP,IAAW,GAAKC,EAAS,IAI7B,CAAIA,EAAS,IACXA,EAAS,GAGX,IAAIO,EAAab,EAAQC,EAAKjE,EAAOC,CAAM,EACvC6E,EAAS,IAAI,YAAYD,CAAU,EAEvCd,EAAYe,EAAQ9E,EAAOC,EAAQqE,CAAM,EAMzC,QALIS,EAAWV,EAAS,IAAM,KAAS,GAAM,EACzCW,EAAcT,GAAa,EAC3BL,EAAOlE,EAAQC,EAGV3C,EAAI,EAAGA,EAAI4G,EAAM5G,IACxBkH,EAAKK,EAAWvH,CAAC,EACjBqH,EAAOH,EAAKM,EAAOxH,CAAC,EAEhB,KAAK,IAAIqH,CAAI,GAAKK,IAEpBP,EAAKD,GAAMO,EAAWJ,EAAO,MAAS,IAItCF,EAAKA,EAAK,MAAS,MAASA,EAC5BA,EAAKA,EAAK,EAAS,EAASA,EAG5BD,EAAKA,IAAO,EAAIA,EAAK,EAIrBE,GAAQD,GAAM,IAAMD,EAAK,EAMzBI,EAAUtH,EAAI,EACd2G,EAAIW,CAAO,EAAIX,EAAIW,CAAO,EAAIF,EAAO,MAAS,GAE9CT,EAAIW,EAAU,CAAC,EAAIX,EAAIW,EAAU,CAAC,EAAIF,EAAO,MAAS,GAEtDT,EAAIW,EAAU,CAAC,EAAIX,EAAIW,EAAU,CAAC,EAAIF,EAAO,MAAS,GAAA,CAG3D,CAED,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS9G,EAAQZ,EAAOa,EAAQ,CAG1Db,EAAO,QAAU,SAAiBiH,EAAKjE,EAAOC,EAAQoE,EAAQC,EAAQC,EAAW,CAC/E,GAAI,EAAAF,IAAW,GAAKC,EAAS,IAI7B,CAAIA,EAAS,IACXA,EAAS,GAGX,IAAIW,EAASjF,EAAQC,EACjBiF,EAAgBD,EAAS,EACzBE,EAAgBF,EAAS,EACzBG,EAAiBH,EAAS,EAC1BI,EAAqB,KAAK,IAAIrF,EAAOC,CAAM,EAAI,EAE/CqF,EAAuB,EAAI,EAE3BC,EAAa,EACbC,EAAaN,EACbO,EAAcD,EAAaL,EAC3BO,EAAkBD,EAAcL,EAChCO,EAAmBD,EAAkBN,EACrCQ,EAAqBD,EAAmBN,EAExC5B,EAAW,KAAK,WAAW,eAAgByB,EAAgBC,EAAgBC,EAAiB,EAAIC,EAAqBC,EAAsB,CAC7I,IAAK,KAAK,GACd,CAAG,EAGGO,EAAQ,IAAI,YAAY5B,EAAI,MAAM,EAClCN,EAAQ,IAAI,YAAY,KAAK,SAAS,MAAM,EAChDA,EAAM,IAAIkC,CAAK,EAEf,IAAIhC,EAAKJ,EAAS,QAAQ,SAAWA,EAAS,QAAQ,SACtDI,EAAG0B,EAAYC,EAAYxF,EAAOC,CAAM,EAExC4D,EAAKJ,EAAS,QAAQ,YAAcA,EAAS,QAAQ,YACrDI,EAAG2B,EAAYC,EAAaC,EAAiBC,EAAkBC,EAAoB5F,EAAOC,EAAQqE,CAAM,EAExGT,EAAKJ,EAAS,QAAQ,SAAWA,EAAS,QAAQ,SAClDI,EAAG0B,EAAYA,EAAYC,EAAYC,EAAazF,EAAOC,EAAQoE,EAAQE,CAAS,EAEpFsB,EAAM,IAAI,IAAI,YAAY,KAAK,SAAS,OAAQ,EAAGZ,CAAM,CAAC,CAAA,CAC3D,CAED,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASrH,EAAQZ,EAAOa,EAAQ,CAM1Cb,EAAO,QAAU,87EAEjB,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASY,EAAQZ,EAAOa,EAAQ,CAG1C,IAAIiI,EAAc,IAElB,SAASC,EAAKC,EAAQC,EAAM,CAC1B,KAAK,OAASD,EACd,KAAK,UAAY,CAAE,EACnB,KAAK,SAAW,CAAE,EAClB,KAAK,OAAS,EACd,KAAK,UAAY,EACjB,KAAK,KAAOC,GAAQ,GACtB,CAEAF,EAAK,UAAU,QAAU,UAAY,CACnC,IAAIG,EAAQ,KAERC,EAEJ,OAAI,KAAK,UAAU,SAAW,EAC5BA,EAAW,KAAK,UAAU,IAAK,GAE/BA,EAAW,KAAK,OAAQ,EACxBA,EAAS,GAAK,KAAK,SAEnBA,EAAS,QAAU,UAAY,CAC7B,OAAOD,EAAM,QAAQC,CAAQ,CAC9B,GAGH,KAAK,SAASA,EAAS,EAAE,EAAIA,EACtBA,CACR,EAEDJ,EAAK,UAAU,QAAU,SAAUI,EAAU,CAC3C,IAAIC,EAAS,KAEb,OAAO,KAAK,SAASD,EAAS,EAAE,EAChCA,EAAS,SAAW,KAAK,IAAK,EAC9B,KAAK,UAAU,KAAKA,CAAQ,EAExB,KAAK,YAAc,IACrB,KAAK,UAAY,WAAW,UAAY,CACtC,OAAOC,EAAO,GAAI,CACnB,EAAEN,CAAW,EAEjB,EAEDC,EAAK,UAAU,GAAK,UAAY,CAC9B,IAAIM,EAAS,KAETC,EAAM,KAAK,IAAK,EACpB,KAAK,UAAY,KAAK,UAAU,OAAO,SAAUH,EAAU,CACzD,OAAIG,EAAMH,EAAS,SAAWE,EAAO,MACnCF,EAAS,QAAS,EACX,IAGF,EACX,CAAG,EAEG,KAAK,UAAU,SAAW,EAC5B,KAAK,UAAY,WAAW,UAAY,CACtC,OAAOE,EAAO,GAAI,CACnB,EAAEP,CAAW,EAEd,KAAK,UAAY,CAEpB,EAED9I,EAAO,QAAU+I,CAEjB,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASnI,EAAQZ,EAAOa,EAAQ,CAgB1C,IAAI0I,EAAsB,EAE1BvJ,EAAO,QAAU,SAAsBwJ,EAAWC,EAAYC,EAASC,EAAUC,EAAaC,EAAgB,CAC5G,IAAIxG,EAASqG,EAAUF,EACnBlG,EAASqG,EAAWF,EAGpBK,GAAY,EAAID,EAAiBN,EAAsB,GAAKK,EAGhE,GAAIE,EAAW,GAAK,MAAO,CAAC,CAACJ,EAASC,CAAQ,CAAC,EAC/C,IAAII,EAAa,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI1G,EAAQC,CAAM,CAAC,EAAI,KAAK,IAAIwG,CAAQ,CAAC,EAGlF,GAAIC,GAAc,EAAG,MAAO,CAAC,CAACL,EAASC,CAAQ,CAAC,EAGhD,QAFInI,EAAS,CAAE,EAENlB,EAAI,EAAGA,EAAIyJ,EAAYzJ,IAAK,CACnC,IAAI0C,EAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,IAAIwG,EAAWO,EAAazJ,EAAI,CAAC,EAAI,KAAK,IAAIoJ,EAASpJ,EAAI,CAAC,EAAG,EAAIyJ,CAAU,CAAC,EAC/G9G,EAAS,KAAK,MAAM,KAAK,IAAI,KAAK,IAAIwG,EAAYM,EAAazJ,EAAI,CAAC,EAAI,KAAK,IAAIqJ,EAAUrJ,EAAI,CAAC,EAAG,EAAIyJ,CAAU,CAAC,EACtHvI,EAAO,KAAK,CAACwB,EAAOC,CAAM,CAAC,CAC/B,CAEE,OAAOzB,CACR,CAED,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASZ,EAAQZ,EAAOa,EAAQ,CAc1C,IAAImJ,EAAgB,KAEpB,SAASC,EAAWrE,EAAG,CACrB,IAAIsE,EAAU,KAAK,MAAMtE,CAAC,EAE1B,OAAI,KAAK,IAAIA,EAAIsE,CAAO,EAAIF,EACnBE,EAGF,KAAK,MAAMtE,CAAC,CACrB,CAEA,SAASuE,EAAUvE,EAAG,CACpB,IAAIsE,EAAU,KAAK,MAAMtE,CAAC,EAE1B,OAAI,KAAK,IAAIA,EAAIsE,CAAO,EAAIF,EACnBE,EAGF,KAAK,KAAKtE,CAAC,CACpB,CAEA5F,EAAO,QAAU,SAAuBsB,EAAS,CAC/C,IAAI+B,EAAS/B,EAAQ,QAAUA,EAAQ,MACnCgC,EAAShC,EAAQ,SAAWA,EAAQ,OACpC8I,EAAiBH,EAAW3I,EAAQ,YAAc+B,CAAM,EAAI,EAAI/B,EAAQ,eACxE+I,EAAkBJ,EAAW3I,EAAQ,YAAcgC,CAAM,EAAI,EAAIhC,EAAQ,eAE7E,GAAI8I,EAAiB,GAAKC,EAAkB,EAC1C,MAAM,IAAI,MAAM,gEAAgE,EAGlF,IAAIzE,EAAG0E,EACHC,EAAQC,EAAQC,EAAaC,EAC7BC,EAAQ,CAAE,EACVC,EAGJ,IAAKJ,EAAS,EAAGA,EAASlJ,EAAQ,SAAUkJ,GAAUH,EACpD,IAAKE,EAAS,EAAGA,EAASjJ,EAAQ,QAASiJ,GAAUH,EACnDxE,EAAI2E,EAASjJ,EAAQ,eAEjBsE,EAAI,IACNA,EAAI,GAGN6E,EAAcF,EAASH,EAAiB9I,EAAQ,eAAiBsE,EAE7DA,EAAI6E,GAAenJ,EAAQ,UAC7BmJ,EAAcnJ,EAAQ,QAAUsE,GAGlC0E,EAAIE,EAASlJ,EAAQ,eAEjBgJ,EAAI,IACNA,EAAI,GAGNI,EAAeF,EAASH,EAAkB/I,EAAQ,eAAiBgJ,EAE/DA,EAAII,GAAgBpJ,EAAQ,WAC9BoJ,EAAepJ,EAAQ,SAAWgJ,GAGpCM,EAAO,CACL,IAAKhF,EACL,IAAK0E,EACL,QAASG,EACT,SAAUC,EACV,SAAUH,EACV,SAAUC,EACV,aAAcJ,EACd,cAAeC,EACf,QAASzE,EAAIvC,EAAS4G,EAAWrE,EAAIvC,CAAM,EAC3C,QAASiH,EAAIhH,EAAS2G,EAAWK,EAAIhH,CAAM,EAC3C,OAAQD,EACR,OAAQC,EACR,EAAG2G,EAAWrE,EAAIvC,CAAM,EACxB,EAAG4G,EAAWK,EAAIhH,CAAM,EACxB,MAAO6G,EAAUM,EAAcpH,CAAM,EACrC,OAAQ8G,EAAUO,EAAepH,CAAM,CACxC,EACDqH,EAAM,KAAKC,CAAI,EAInB,OAAOD,CACR,CAED,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAAS/J,EAAQZ,EAAOa,EAAQ,CAG1C,SAASgK,EAASC,EAAK,CACrB,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,CAC3C,CAEA9K,EAAO,QAAQ,SAAW,SAAkB+K,EAAS,CACnD,IAAIC,EAAQH,EAASE,CAAO,EAC5B,OAAOC,IAAU,8BAEdA,IAAU,4BAA8BA,IAAU,iBAGtD,EAEDhL,EAAO,QAAQ,QAAU,SAAiB+K,EAAS,CACjD,OAAOF,EAASE,CAAO,IAAM,2BAC9B,EAED/K,EAAO,QAAQ,cAAgB,SAAuB+K,EAAS,CAC7D,OAAOF,EAASE,CAAO,IAAM,sBAC9B,EAED/K,EAAO,QAAQ,QAAU,SAAiBiL,EAAa,CACrD,IAAIC,EAAS,EACTC,EAAQ,CAAE,EAEd,SAASC,GAAO,CACVF,EAASD,GAAeE,EAAM,SAChCD,IACAC,EAAM,MAAK,EAAI,EAErB,CAEE,OAAO,SAAetE,EAAI,CACxB,OAAO,IAAI,QAAQ,SAAUwE,EAASC,EAAQ,CAC5CH,EAAM,KAAK,UAAY,CACrBtE,EAAI,EAAC,KAAK,SAAUrF,EAAQ,CAC1B6J,EAAQ7J,CAAM,EACd0J,IACAE,EAAM,CACP,EAAE,SAAUG,EAAK,CAChBD,EAAOC,CAAG,EACVL,IACAE,EAAM,CAChB,CAAS,CACT,CAAO,EACDA,EAAM,CACZ,CAAK,CACF,CACF,EAEDpL,EAAO,QAAQ,iBAAmB,SAA0BiE,EAAK,CAC/D,OAAQA,EAAG,CACT,IAAK,GACH,MAAO,YAET,IACE,GAAA,MAAO,MAET,OACE,MAAO,QACb,CAEE,MAAO,MACR,EAEDjE,EAAO,QAAQ,YAAc,SAAqBwL,EAAc,CAC9D,OAAO,QAAQ,UAAU,KAAK,UAAY,CACxC,GAAI,OAAO,kBAAsB,IAC/B,MAAO,GAGT,IAAIjL,EAAIiL,EAAa,IAAK,GAAG,EAC7B,OAAO,kBAAkBjL,EAAG,EAAG,EAAG,IAAK,IAAK,CAC1C,YAAa,GACb,aAAc,GACd,cAAe,MACrB,CAAK,EAAE,KAAK,SAAUkL,EAAQ,CACxB,IAAIC,EAASD,EAAO,QAAU,GAQ9B,OAAAA,EAAO,MAAO,EACdlL,EAAI,KACGmL,CACb,CAAK,CACL,CAAG,EAAE,MAAS,UAAY,CACtB,MAAO,EACX,CAAG,CACF,EAED1L,EAAO,QAAQ,gCAAkC,UAA2C,CAC1F,OAAO,IAAI,QAAQ,SAAUqL,EAASC,EAAQ,CAC5C,GAAI,OAAO,gBAAoB,IAAa,CAE1CD,EAAQ,EAAK,EACb,MACN,CAEI,SAASM,EAAcC,EAAM,CAC3B,GAAI,OAAO,kBAAsB,IAAa,CAC5CA,EAAK,YAAY,EAAK,EACtB,MACR,CAEM,QAAQ,UAAU,KAAK,UAAY,CACjC,IAAIC,EAAS,IAAI,gBAAgB,GAAI,EAAE,EAEnCC,EAAMD,EAAO,WAAW,IAAI,EAChC,OAAAC,EAAI,KAAK,EAAG,EAAG,EAAG,CAAC,EAEZ,kBAAkBD,EAAQ,EAAG,EAAG,EAAG,CAAC,CACnD,CAAO,EAAE,KAAK,UAAY,CAClB,OAAOD,EAAK,YAAY,EAAI,CACpC,EAAS,UAAY,CACb,OAAOA,EAAK,YAAY,EAAK,CACrC,CAAO,CACP,CAEI,IAAIG,EAAO,KAAK,IAAI,OAAOJ,EAAc,SAAQ,EAAI,UAAU,CAAC,EAC5DK,EAAI,IAAI,OAAO,+BAA+B,OAAOD,CAAI,CAAC,EAE9DC,EAAE,UAAY,SAAUC,EAAI,CAC1B,OAAOZ,EAAQY,EAAG,IAAI,CACvB,EAEDD,EAAE,QAAUV,CAChB,CAAG,EAAE,KAAK,SAAU9J,EAAQ,CACxB,OAAOA,CACX,EAAK,UAAY,CACb,MAAO,EACX,CAAG,CACH,EAIAxB,EAAO,QAAQ,eAAiB,SAAwBwL,EAAc,CACpE,IAAIU,EAAS,GAEb,GAAI,CACF,IAAIL,EAASL,EAAa,EAAG,CAAC,EAC1BM,EAAMD,EAAO,WAAW,IAAI,EAC5BM,EAAIL,EAAI,gBAAgB,EAAG,CAAC,EAChCK,EAAE,KAAK,CAAC,EAAI,GACZA,EAAE,KAAK,CAAC,EAAI,GACZA,EAAE,KAAK,CAAC,EAAI,GACZA,EAAE,KAAK,CAAC,EAAI,IACZA,EAAE,KAAK,CAAC,EAAI,GACZA,EAAE,KAAK,CAAC,EAAI,GACZA,EAAE,KAAK,CAAC,EAAI,GACZA,EAAE,KAAK,CAAC,EAAI,IACZL,EAAI,aAAaK,EAAG,EAAG,CAAC,EACxBA,EAAI,KACJA,EAAIL,EAAI,aAAa,EAAG,EAAG,EAAG,CAAC,EAE3BK,EAAE,KAAK,CAAC,IAAM,IAAMA,EAAE,KAAK,CAAC,IAAM,IAAMA,EAAE,KAAK,CAAC,IAAM,IAAMA,EAAE,KAAK,CAAC,IAAM,KAAOA,EAAE,KAAK,CAAC,IAAM,IAAMA,EAAE,KAAK,CAAC,IAAM,IAAMA,EAAE,KAAK,CAAC,IAAM,IAAMA,EAAE,KAAK,CAAC,IAAM,MAC7JD,EAAS,GAEZ,MAAa,CAAA,CAEd,OAAOA,CACT,EAMAlM,EAAO,QAAQ,mBAAqB,UAA8B,CAChE,OAAO,IAAI,QAAQ,SAAUqL,EAAS,CACpC,GAAI,OAAO,kBAAsB,IAAa,CAC5CA,EAAQ,EAAK,EACb,MACN,CAEI,IAAIe,EAAQ,IAAI,MAChBA,EAAM,IAAM,0zBAEZA,EAAM,OAAS,UAAY,CACzB,kBAAkBA,EAAO,EAAG,EAAGA,EAAM,MAAOA,EAAM,MAAM,EAAE,KAAK,SAAUX,EAAQ,CAC3EA,EAAO,QAAUW,EAAM,OAASX,EAAO,SAAWW,EAAM,OAC1Df,EAAQ,EAAI,EAEZA,EAAQ,EAAK,CAEvB,EAAS,UAAY,CACb,OAAOA,EAAQ,EAAK,CAC5B,CAAO,CACF,EAEDe,EAAM,QAAU,UAAY,CAC1B,OAAOf,EAAQ,EAAK,CACrB,CACL,CAAG,CACF,CAED,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASzK,EAAQZ,EAAOa,EAAQ,CAI1Cb,EAAO,QAAU,UAAY,CAC3B,IAAIkB,EAAUN,EAAQ,WAAW,EAE7ByL,EAGJ,UAAY,SAAmBJ,EAAI,CACjC,IAAIK,EAAWL,EAAG,KAAK,KAGvB,GAAI,CAACK,EAAS,KAAOA,EAAS,UAAW,CACvC,IAAIT,EAAS,IAAI,gBAAgBS,EAAS,MAAOA,EAAS,MAAM,EAC5DR,EAAMD,EAAO,WAAW,KAAM,CAChC,MAAO,CAAQS,CAAAA,EAAS,KAChC,CAAO,EACDR,EAAI,UAAUQ,EAAS,UAAW,EAAG,CAAC,EACtCA,EAAS,IAAMR,EAAI,aAAa,EAAG,EAAGQ,EAAS,MAAOA,EAAS,MAAM,EAAE,KACvET,EAAO,MAAQA,EAAO,OAAS,EAC/BA,EAAS,KACTS,EAAS,UAAU,MAAO,EAC1BA,EAAS,UAAY,IAG3B,CAESD,IAASA,EAAU,IAAInL,EAAQ+K,EAAG,KAAK,QAAQ,GAGpD,IAAI9F,EAAOkG,EAAQ,iBAAiBC,CAAQ,EAmB1C,YAAY,CACV,KAAMnG,CACd,EAAS,CAACA,EAAK,MAAM,CAAC,CAEnB,CACF,CAED,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,SAASvF,EAAQZ,EAAOa,EAAQ,CAMvD,IAAI0L,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAaC,EAEzC,SAASC,EAAUC,EAAO,CACpBA,EAAQ,KACVA,EAAQ,IAGV,IAAItM,EAAI,KAAK,IAAI,KAAQ,IAAK,EAAIsM,EAC9BC,EAAK,KAAK,IAAI,CAACvM,CAAC,EAChBwM,EAAK,KAAK,IAAI,GAAKxM,CAAC,EACpByM,GAAK,EAAIF,IAAO,EAAIA,IAAO,EAAI,EAAIvM,EAAIuM,EAAKC,GAEhD,OAAAX,EAAKY,EACLX,EAAKW,GAAKzM,EAAI,GAAKuM,EACnBR,EAAKU,GAAKzM,EAAI,GAAKuM,EACnBP,EAAK,CAACS,EAAID,EACVP,EAAK,EAAIM,EACTL,EAAK,CAACM,EACNL,GAAeN,EAAKC,IAAO,EAAIG,EAAKC,GACpCE,GAAgBL,EAAKC,IAAO,EAAIC,EAAKC,GAG9B,IAAI,aAAa,CAAEL,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAaC,CAAY,CAAE,CAC/E,CAEA,SAASM,EAAezL,EAAKwF,EAAKkG,EAAMC,EAAOtK,EAAOC,EAAQ,CAG5D,IAAIsK,EAAUC,EAAUC,EAAUC,EAAUC,EACxCC,EAAWC,EAAWC,EACtBxN,EAAGyN,EACHC,EAAUC,EAAUC,EAAUC,EAElC,IAAK7N,EAAI,EAAGA,EAAI2C,EAAQ3C,IAAK,CAe3B,IAdAsN,EAAYtN,EAAI0C,EAChB6K,EAAYvN,EACZwN,EAAa,EAGbP,EAAW5L,EAAIiM,CAAS,EACxBD,EAAgBJ,EAAWD,EAAM,CAAC,EAClCI,EAAWC,EAEXK,EAAWV,EAAM,CAAC,EAClBW,EAAWX,EAAM,CAAC,EAClBY,EAAWZ,EAAM,CAAC,EAClBa,EAAWb,EAAM,CAAC,EAEbS,EAAI,EAAGA,EAAI/K,EAAO+K,IACrBP,EAAW7L,EAAIiM,CAAS,EAExBH,EAAWD,EAAWQ,EACXT,EAAWU,EACXP,EAAWQ,EACXP,EAAgBQ,EAE3BR,EAAgBD,EAChBA,EAAWD,EACXF,EAAWC,EAEXH,EAAKS,CAAU,EAAIJ,EACnBI,IACAF,IAgBF,IAbAA,IACAE,IACAD,GAAa5K,GAAUD,EAAQ,GAG/BuK,EAAW5L,EAAIiM,CAAS,EACxBD,EAAgBJ,EAAWD,EAAM,CAAC,EAClCI,EAAWC,EACXH,EAAWD,EAEXS,EAAWV,EAAM,CAAC,EAClBW,EAAWX,EAAM,CAAC,EAEbS,EAAI/K,EAAQ,EAAG+K,GAAK,EAAGA,IAC1BN,EAAWD,EAAWQ,EACXT,EAAWU,EACXP,EAAWQ,EACXP,EAAgBQ,EAE3BR,EAAgBD,EAChBA,EAAWD,EAEXF,EAAWC,EACXA,EAAW7L,EAAIiM,CAAS,EAExBzG,EAAI0G,CAAS,EAAIR,EAAKS,CAAU,EAAIJ,EAEpCE,IACAE,IACAD,GAAa5K,CAEnB,CACA,CAGA,SAASmL,EAAWzM,EAAKqB,EAAOC,EAAQqE,EAAQ,CAE9C,GAAKA,EAEL,CAAIH,IAAAA,EAAW,IAAI,YAAYxF,EAAI,MAAM,EACrC0M,EAAW,IAAI,aAAa,KAAK,IAAIrL,EAAOC,CAAM,CAAC,EAEnDqK,EAAQP,EAAUzF,CAAM,EAE5B8F,EAAezL,EAAKwF,EAAKkH,EAAUf,EAAOtK,EAAOC,CAAc,EAC/DmK,EAAejG,EAAKxF,EAAK0M,EAAUf,EAAOrK,EAAQD,CAAa,CAAA,CACjE,CAEAhD,EAAO,QAAUoO,CAEjB,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASxN,EAAQZ,EAAOa,EAAQ,CACtC,OAAO,OAAO,QAAW,WAE3Bb,EAAO,QAAU,SAAkBsO,EAAMC,EAAW,CAC9CA,IACFD,EAAK,OAASC,EACdD,EAAK,UAAY,OAAO,OAAOC,EAAU,UAAW,CAClD,YAAa,CACX,MAAOD,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EACxB,CACO,CAAA,EAEJ,EAGDtO,EAAO,QAAU,SAAkBsO,EAAMC,EAAW,CAClD,GAAIA,EAAW,CACbD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAA,EAC3BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CACnC,CACA,CAGA,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAAS1N,EAAQZ,EAAOa,EAAQ,CAI1C,IAAI4N,EAAiB7N,EAAQ,eAAe,EACxC8N,EAAiB9N,EAAQ,oBAAoB,EAC7C+N,EAAiB/N,EAAQ,iBAAiB,EAG1CgO,EAAkB,CACpB,GAAI,GACJ,KAAM,EACP,EAGD,SAASC,EAAUvN,EAAS,CAC1B,GAAI,EAAE,gBAAgBuN,GAAY,OAAO,IAAIA,EAAUvN,CAAO,EAE9D,IAAIwN,EAAOL,EAAO,CAAA,EAAIG,EAAiBtN,GAAW,CAAA,CAAE,EAapD,GAXA,KAAK,QAAkBwN,EAEvB,KAAK,QAAkB,CAAE,EAEzB,KAAK,eAAkB,KACvB,KAAK,UAAkBA,EAAK,SAAW,CAAE,EACzC,KAAK,SAAkB,KACvB,KAAK,OAAkB,CAAE,EAEzB,KAAK,OAAW,IAAI,YAAa,IAAI,WAAW,CAAE,EAAG,EAAG,EAAG,CAAC,CAAE,EAAG,MAAM,EAAG,CAAC,IAAM,EAE7E,CAAC,KAAK,QAAQ,IAAM,CAAC,KAAK,QAAQ,KACpC,MAAM,IAAI,MAAM,oDAAoD,CAExE,CAGAD,EAAU,UAAU,SAAWF,EAG/BE,EAAU,UAAU,IAAM,SAAU7O,EAAQ,CAC1C,OAAA,KAAK,UAAUA,EAAO,IAAI,EAAIA,EAG1B,KAAK,QAAQ,MAAQ,KAAK,SAAU,GAAIA,EAAO,QACjD,KAAKA,EAAO,IAAI,EAAIA,EAAO,QAE3B,KAAKA,EAAO,IAAI,EAAIA,EAAO,GAGtB,IACR,EAGD6O,EAAU,UAAU,KAAO,UAAY,CACrC,GAAI,KAAK,eAAgB,OAAO,KAAK,eAErC,GAAI,CAAC,KAAK,QAAQ,IAAM,KAAK,QAAQ,MAAQ,CAAC,KAAK,WACjD,OAAO,QAAQ,OAAO,IAAI,MAAM,0DAA2D,CAAC,EAG9F,IAAIjD,EAAO,KAEX,OAAK,KAAA,eAAiB,QAAQ,IAAI,OAAO,KAAKA,EAAK,SAAS,EAAE,IAAI,SAAUmD,EAAM,CAChF,IAAI/O,EAAS4L,EAAK,UAAUmD,CAAI,EAKhC,MAHI,CAACnD,EAAK,QAAQ,MAAQ,CAACA,EAAK,SAAQ,GAAM,CAAC5L,EAAO,SAGlD4L,EAAK,OAAOmD,CAAI,EAAU,KAGvB,YAAY,QAAQnD,EAAK,eAAe5L,EAAO,QAAQ,CAAC,EAC5D,KAAK,SAAUgP,EAAG,CAAEpD,EAAK,OAAOmD,CAAI,EAAIC,EAAI,CACnD,CAAG,CAAC,EACC,KAAK,UAAY,CAAE,OAAOpD,EAAO,EAE7B,KAAK,cACb,EAUDiD,EAAU,UAAU,eAAiBH,EAOrCG,EAAU,UAAU,aAAe,SAAqBI,EAAO,CAC7D,GAAI,CAAC,KAAK,SACR,OAAA,KAAK,SAAW,IAAI,YAAY,OAAO,CACrC,QAAS,KAAK,KAAKA,GAAS,GAAK,KAAK,CAC5C,CAAK,EACM,KAAK,SAGd,IAAIC,EAAW,KAAK,SAAS,OAAO,WAEpC,OAAIA,EAAWD,GACb,KAAK,SAAS,KAAK,KAAK,MAAMA,EAAQC,IAAa,GAAK,KAAK,CAAC,EAGzD,KAAK,QACb,EAWDL,EAAU,UAAU,WAAa,SAAkBE,EAAMI,EAASC,EAAW,CAI3E,GAHID,GAAS,KAAK,aAAaA,CAAO,EAGlC,CAAC,KAAK,OAAOJ,CAAI,EAAG,CACtB,IAAI/O,EAAS,KAAK,UAAU+O,CAAI,EAChC,KAAK,OAAOA,CAAI,EAAI,IAAI,YAAY,OAAO,KAAK,eAAe/O,EAAO,QAAQ,CAAC,CACnF,CAEE,GAAI,CAAC,KAAK,QAAQ+O,CAAI,EAAG,CACvB,IAAIM,EAAW,CACb,WAAY,EACZ,OAAQ,KAAK,SACb,UAAW,EACX,MAAO,IAAI,YAAY,MAAM,CAAE,QAAS,EAAG,QAAS,SAAW,CAAA,CAChE,EAED,KAAK,QAAQN,CAAI,EAAI,IAAI,YAAY,SAAS,KAAK,OAAOA,CAAI,EAAG,CAC/D,IAAKN,EAAOY,EAAUD,GAAa,CAAE,CAAA,CAC3C,CAAK,CACL,CAEE,OAAO,KAAK,QAAQL,CAAI,CACzB,EAMDF,EAAU,UAAU,QAAU,SAAeS,EAAQC,EAAM,CACzDA,EAAOA,GAAQ,EACf,IAAIC,EAAWF,EAASC,EACxB,OAAOD,GAAUE,EAAWD,EAAOC,EAAW,EAC/C,EAGDxP,EAAO,QAAU6O,CAEhB,EAAC,CAAC,qBAAqB,GAAG,kBAAkB,GAAG,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,SAASjO,EAAQZ,EAAOa,EAAQ,CAMzG,IAAI4O,EAAa,mEAGjBzP,EAAO,QAAU,SAAsB0P,EAAK,CAW1C,QAVIC,EAAQD,EAAI,QAAQ,WAAY,EAAE,EAClCtI,EAAQuI,EAAM,OAEdxI,EAAM,IAAI,WAAYC,EAAM,GAAM,CAAC,EAInCwI,EAAO,EACP1M,EAAO,EAEFiC,EAAM,EAAGA,EAAMiC,EAAKjC,IACtBA,EAAM,IAAM,GAAMA,IACrBgC,EAAIjE,GAAK,EAAK0M,GAAQ,GAAM,IAC5BzI,EAAIjE,GAAK,EAAK0M,GAAQ,EAAK,IAC3BzI,EAAIjE,GAAK,EAAI0M,EAAO,KAGtBA,EAAQA,GAAQ,EAAKH,EAAW,QAAQE,EAAM,OAAOxK,CAAG,CAAC,EAK3D,IAAI0K,EAAYzI,EAAM,EAAK,EAE3B,OAAIyI,IAAa,GACf1I,EAAIjE,GAAK,EAAK0M,GAAQ,GAAM,IAC5BzI,EAAIjE,GAAK,EAAK0M,GAAQ,EAAK,IAC3BzI,EAAIjE,GAAK,EAAI0M,EAAO,KACXC,IAAa,IACtB1I,EAAIjE,GAAK,EAAK0M,GAAQ,GAAM,IAC5BzI,EAAIjE,GAAK,EAAK0M,GAAQ,EAAK,KAClBC,IAAa,KACtB1I,EAAIjE,GAAK,EAAK0M,GAAQ,EAAK,KAGtBzI,CACR,CAED,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASvG,EAAQZ,EAAOa,EAAQ,CAQ1C,IAAIiP,EAGJ9P,EAAO,QAAU,UAA0B,CAMzC,GAJI,OAAO8P,EAAO,MAElBA,EAAK,GAED,OAAO,YAAgB,KAAa,OAAOA,EAG/C,GAAI,CAKF,IAAIC,EAAW,IAAI,WAAW,CAAE,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,EAClK/P,EAAW,IAAI,YAAY,OAAO+P,CAAG,EACrCtJ,EAAW,IAAI,YAAY,SAASzG,EAAQ,CAAA,CAAE,EAIlD,OAAIyG,EAAS,QAAQ,KAAK,CAAC,IAAM,IAAGqJ,EAAK,IAElCA,CACR,MAAY,CAAA,CAEb,OAAOA,CACR,CAED,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASlP,EAAQZ,EAAOa,EAAQ,CAS1C,IAAImP,EAAwB,OAAO,sBAC/BC,EAAiB,OAAO,UAAU,eAClCC,EAAmB,OAAO,UAAU,qBAExC,SAASC,EAASC,EAAK,CACtB,GAAIA,GAAQ,KACX,MAAM,IAAI,UAAU,uDAAuD,EAG5E,OAAO,OAAOA,CAAG,CAClB,CAEA,SAASC,GAAkB,CAC1B,GAAI,CACH,GAAI,CAAC,OAAO,OACX,MAAO,GAMR,IAAIC,EAAQ,IAAI,OAAO,KAAK,EAE5B,GADAA,EAAM,CAAC,EAAI,KACP,OAAO,oBAAoBA,CAAK,EAAE,CAAC,IAAM,IAC5C,MAAO,GAKR,QADIC,EAAQ,CAAE,EACLjQ,EAAI,EAAGA,EAAI,GAAIA,IACvBiQ,EAAM,IAAM,OAAO,aAAajQ,CAAC,CAAC,EAAIA,EAEvC,IAAIkQ,EAAS,OAAO,oBAAoBD,CAAK,EAAE,IAAI,SAAUpQ,EAAG,CAC/D,OAAOoQ,EAAMpQ,CAAC,CACjB,CAAG,EACD,GAAIqQ,EAAO,KAAK,EAAE,IAAM,aACvB,MAAO,GAIR,IAAIC,EAAQ,CAAE,EAId,MAHA,uBAAuB,MAAM,EAAE,EAAE,QAAQ,SAAUC,EAAQ,CAC1DD,EAAMC,CAAM,EAAIA,CACnB,CAAG,EACG,OAAO,KAAK,OAAO,OAAO,CAAE,EAAED,CAAK,CAAC,EAAE,KAAK,EAAE,IAC/C,sBAKF,MAAa,CAEb,MAAO,EACT,CACA,CAEAzQ,EAAO,QAAUqQ,EAAiB,EAAG,OAAO,OAAS,SAAUpK,EAAQ0K,EAAQ,CAK9E,QAJIC,EACAC,EAAKV,EAASlK,CAAM,EACpB6K,EAEKC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAC1CH,EAAO,OAAO,UAAUG,CAAC,CAAC,EAE1B,QAASC,KAAOJ,EACXX,EAAe,KAAKW,EAAMI,CAAG,IAChCH,EAAGG,CAAG,EAAIJ,EAAKI,CAAG,GAIpB,GAAIhB,EAAuB,CAC1Bc,EAAUd,EAAsBY,CAAI,EACpC,QAAStQ,EAAI,EAAGA,EAAIwQ,EAAQ,OAAQxQ,IAC/B4P,EAAiB,KAAKU,EAAME,EAAQxQ,CAAC,CAAC,IACzCuQ,EAAGC,EAAQxQ,CAAC,CAAC,EAAIsQ,EAAKE,EAAQxQ,CAAC,CAAC,EAGrC,CACA,CAEC,OAAOuQ,CACP,CAED,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,SAASjQ,EAAQZ,EAAOa,EAAQ,CAC1C,IAAIoQ,EAAW,UAAU,CAAC,EACtBC,EAAU,UAAU,CAAC,EACrB3P,EAAQ,UAAU,CAAC,EAEnB4P,EAAY,KAAK,UAErBnR,EAAO,QAAU,SAAU6G,EAAIvF,EAAS,CAIpC,QAHI8P,EACAC,EAAY,OAAO,KAAK9P,CAAK,EAExBjB,EAAI,EAAGgR,EAAID,EAAU,OAAQ/Q,EAAIgR,EAAGhR,IAAK,CAC9C,IAAI0Q,EAAMK,EAAU/Q,CAAC,EACjBiR,EAAMhQ,EAAMyP,CAAG,EAAE,QAKrB,GAAIO,IAAQ1K,GAAM0K,GAAOA,EAAI,UAAY1K,EAAI,CACzCuK,EAAOJ,EACP,KACZ,CACA,CAEI,GAAI,CAACI,EAAM,CACPA,EAAO,KAAK,MAAM,KAAK,IAAI,GAAI,CAAC,EAAI,KAAK,OAAM,CAAE,EAAE,SAAS,EAAE,EAE9D,QADII,EAAS,CAAE,EACNlR,EAAI,EAAGgR,EAAID,EAAU,OAAQ/Q,EAAIgR,EAAGhR,IAAK,CAC9C,IAAI0Q,EAAMK,EAAU/Q,CAAC,EACrBkR,EAAOR,CAAG,EAAIA,CAC1B,CACQE,EAAQE,CAAI,EAAI,CACZ,oCAAsCvK,EAAK,YAC3C2K,CACH,CACT,CACI,IAAIC,EAAO,KAAK,MAAM,KAAK,IAAI,GAAI,CAAC,EAAI,KAAK,OAAQ,CAAA,EAAE,SAAS,EAAE,EAE9DC,EAAS,CAAE,EAAEA,EAAON,CAAI,EAAIA,EAChCF,EAAQO,CAAI,EAAI,CACZ,oDAEyBN,EAAUC,CAAI,EAAI,wCAG3CM,CACH,EAED,IAAIC,EAAgB,CAAE,EACtBC,EAAeH,CAAI,EAEnB,SAASG,EAAeZ,EAAK,CACzBW,EAAcX,CAAG,EAAI,GAErB,QAASa,KAAWX,EAAQF,CAAG,EAAE,CAAC,EAAG,CACjC,IAAIc,EAASZ,EAAQF,CAAG,EAAE,CAAC,EAAEa,CAAO,EAC/BF,EAAcG,CAAM,GACrBF,EAAeE,CAAM,CAErC,CACA,CAEI,IAAInQ,EAAM,IAAMsP,EAAW,MACrB,OAAO,KAAKU,CAAa,EAAE,IAAI,SAAUX,EAAK,CAC5C,OAAOG,EAAUH,CAAG,EAAI,KAClBE,EAAQF,CAAG,EAAE,CAAC,EACd,IAAMG,EAAUD,EAAQF,CAAG,EAAE,CAAC,CAAC,EAAI,GAErD,CAAS,EAAE,KAAK,GAAG,EACT,SAAWG,EAAUM,CAAI,EAAI,KAG/BM,EAAM,OAAO,KAAO,OAAO,WAAa,OAAO,QAAU,OAAO,MAEhEC,EAAO,IAAI,KAAK,CAACrQ,CAAG,EAAG,CAAE,KAAM,kBAAmB,EACtD,GAAIL,GAAWA,EAAQ,KAAQ,OAAO0Q,EACtC,IAAIC,EAAYF,EAAI,gBAAgBC,CAAI,EACpCE,EAAS,IAAI,OAAOD,CAAS,EACjC,OAAAC,EAAO,UAAYD,EACZC,CACV,CAED,EAAE,CAAA,CAAE,EAAE,YAAY,CAAC,SAAStR,EAAQZ,EAAOa,EAAQ,CAGnD,SAASsR,EAAeC,EAAK9R,EAAG,CAAE,OAAO+R,EAAgBD,CAAG,GAAKE,EAAsBF,EAAK9R,CAAC,GAAKiS,EAA4BH,EAAK9R,CAAC,GAAKkS,GAAmB,CAE5J,SAASA,GAAmB,CAAE,MAAM,IAAI,UAAU;AAAA,mFAA2I,CAAE,CAE/L,SAASD,EAA4BlS,EAAGoS,EAAQ,CAAE,GAAKpS,EAAW,CAAA,GAAI,OAAOA,GAAM,SAAU,OAAOqS,EAAkBrS,EAAGoS,CAAM,EAAG,IAAItS,EAAI,OAAO,UAAU,SAAS,KAAKE,CAAC,EAAE,MAAM,EAAG,EAAE,EAAgE,GAAzDF,IAAM,UAAYE,EAAE,cAAaF,EAAIE,EAAE,YAAY,MAAUF,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKE,CAAC,EAAG,GAAIF,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOuS,EAAkBrS,EAAGoS,CAAM,CAAA,CAAE,CAE9Z,SAASC,EAAkBN,EAAKjP,EAAK,EAAMA,GAAO,MAAQA,EAAMiP,EAAI,UAAQjP,EAAMiP,EAAI,QAAQ,QAAS9R,EAAI,EAAGqS,EAAO,IAAI,MAAMxP,CAAG,EAAG7C,EAAI6C,EAAK7C,IAAOqS,EAAKrS,CAAC,EAAI8R,EAAI9R,CAAC,EAAK,OAAOqS,CAAK,CAErL,SAASL,EAAsBF,EAAK9R,EAAG,CAAE,IAAIsS,EAAKR,GAAO,KAAO,KAAO,OAAO,OAAW,KAAeA,EAAI,OAAO,QAAQ,GAAKA,EAAI,YAAY,EAAG,GAAIQ,GAAM,KAAc,CAAIC,IAAAA,EAAO,CAAA,EAAQC,EAAK,GAAUC,EAAK,GAAWC,EAAIC,EAAI,GAAI,CAAE,IAAKL,EAAKA,EAAG,KAAKR,CAAG,EAAG,EAAEU,GAAME,EAAKJ,EAAG,KAAM,GAAE,QAAoBC,EAAK,KAAKG,EAAG,KAAK,EAAO,EAAA1S,GAAKuS,EAAK,SAAWvS,IAA3DwS,EAAK,GAA6B,QAA8CvH,EAAK,CAAEwH,EAAK,GAAME,EAAK1H,CAAM,SAAW,GAAI,CAAM,CAACuH,GAAMF,EAAG,QAAa,MAAMA,EAAG,OAAS,CAAK,QAAA,CAAW,GAAIG,EAAI,MAAME,CAAG,EAAK,OAAOJ,CAAAA,CAAK,CAE/f,SAASR,EAAgBD,EAAK,CAAE,GAAI,MAAM,QAAQA,CAAG,EAAG,OAAOA,CAAI,CAEnE,IAAI3D,EAAS7N,EAAQ,eAAe,EAEhCsS,EAAatS,EAAQ,YAAY,EAEjCM,EAAUN,EAAQ,eAAe,EAEjCmI,EAAOnI,EAAQ,YAAY,EAE3BuS,EAAQvS,EAAQ,aAAa,EAE7BsR,EAAStR,EAAQ,cAAc,EAE/BwS,EAAexS,EAAQ,eAAe,EAEtCyS,EAAgBzS,EAAQ,aAAa,EAIrC0S,EAAc,CAAE,EAChBC,EAAkB,GAEtB,GAAI,CACE,OAAO,UAAc,KAAe,UAAU,YAChDA,EAAkB,UAAU,UAAU,QAAQ,QAAQ,GAAK,EAE9D,MAAW,CAAA,CAEZ,IAAItI,EAAc,EAEd,OAAO,UAAc,MACvBA,EAAc,KAAK,IAAI,UAAU,qBAAuB,EAAG,CAAC,GAG9D,IAAIuI,EAAoB,CACtB,KAAM,KACN,YAAavI,EACb,SAAU,CAAC,KAAM,OAAQ,IAAI,EAC7B,KAAM,IACN,aAAc,SAAsBjI,EAAOC,EAAQ,CACjD,IAAIwQ,EAAY,SAAS,cAAc,QAAQ,EAC/C,OAAAA,EAAU,MAAQzQ,EAClByQ,EAAU,OAASxQ,EACZwQ,CACX,CACC,EACGC,EAAsB,CACxB,QAAS,EACT,MAAO,GACP,cAAe,EACf,cAAe,EACf,iBAAkB,CACnB,EACGC,EAAqB,GACrBC,EAA0B,GAC1BC,EAAgC,GAChCC,EAA2B,GAC3BC,EAA+B,GAEnC,SAASC,GAAe,CACtB,MAAO,CACL,MAAOd,EAAWhB,CAAM,EACxB,QAAS,UAAmB,CAG1B,GAFA,KAAK,MAAM,UAAW,EAElB,OAAO,OAAW,IAAa,CACjC,IAAI+B,EAAM,OAAO,KAAO,OAAO,WAAa,OAAO,QAAU,OAAO,MAEhEA,GAAOA,EAAI,iBAAmB,KAAK,MAAM,WAC3CA,EAAI,gBAAgB,KAAK,MAAM,SAAS,CAElD,CACA,CACG,CACF,CAID,SAASC,EAAK5S,EAAS,CACrB,GAAI,EAAE,gBAAgB4S,GAAO,OAAO,IAAIA,EAAK5S,CAAO,EACpD,KAAK,QAAUmN,EAAO,CAAE,EAAE+E,EAAmBlS,GAAW,EAAE,EAC1D,IAAI6S,EAAc,MAAM,OAAO,KAAK,QAAQ,WAAW,EAGvD,KAAK,QAAUb,EAAYa,CAAW,GAAKhB,EAAM,QAAQ,KAAK,QAAQ,WAAW,EAC5EG,EAAYa,CAAW,IAAGb,EAAYa,CAAW,EAAI,KAAK,SAE/D,KAAK,SAAW,CACd,GAAI,GAEJ,KAAM,GAEN,IAAK,GAEL,GAAI,EAEL,EACD,KAAK,cAAgB,KAErB,KAAK,qBAAuB,CAAE,EAC9B,KAAK,UAAY,IACnB,CAEAD,EAAK,UAAU,KAAO,UAAY,CAChC,IAAIhL,EAAQ,KAEZ,GAAI,KAAK,cAAe,OAAO,KAAK,cAEpC,GAAI,OAAO,UAAc,KAAe,OAAO,kBAAsB,IACnE,GAAI,CAEF,IAAI,UAAU,IAAI,kBAAkB,GAAG,EAAG,GAAI,EAAE,EAChDyK,EAAqB,EACtB,MAAY,CAAA,CAUX,OAAO,YAAgB,MACrB,YAAY,WAAa,YAAY,UAAU,MACjDC,EAA0B,GAE1B,KAAK,MAAM,iDAAiD,GAIhE,IAAIvS,EAAW,KAAK,QAAQ,SAAS,MAAO,EAS5C,GAPIA,EAAS,QAAQ,KAAK,GAAK,IAC7BA,EAAW,CAAC,MAAO,OAAQ,KAAM,IAAI,GAGvC,KAAK,qBAAuBA,EAC5B,KAAK,UAAY,IAAIH,EAAQG,CAAQ,EAEjCA,EAAS,QAAQ,IAAI,GAAK,GACxB,OAAO,OAAW,KAAe,WAAY,OAG/C,GAAI,CACF,IAAI+S,EAAMxT,EAAQ,YAAY,EAAE,UAAY,CAAA,CAAE,EAE9CwT,EAAI,UAAW,EACf,KAAK,SAAS,GAAK,GAEnB,IAAIC,EAAY,MAAM,OAAO,KAAK,UAAU,KAAK,OAAO,CAAC,EAErDf,EAAYe,CAAS,EACvB,KAAK,cAAgBf,EAAYe,CAAS,GAE1C,KAAK,cAAgB,IAAItL,EAAKiL,EAAc,KAAK,QAAQ,IAAI,EAC7DV,EAAYe,CAAS,EAAI,KAAK,cAEjC,MAAY,CAAA,CAIjB,IAAIC,EAAW,KAAK,UAAU,KAAI,EAAG,KAAK,SAAUC,EAAS,CAE3D9F,EAAOvF,EAAM,SAAUqL,EAAQ,QAAQ,CAC3C,CAAG,EAEGC,EAECZ,EAGHY,EAAiBrB,EAAM,YAAY,KAAK,QAAQ,YAAY,EAAE,KAAK,SAAUzH,EAAQ,CACnF,GAAIxC,EAAM,SAAS,KAAO7H,EAAS,QAAQ,KAAK,EAAI,EAAG,CACrD6H,EAAM,MAAM,8DAA8D,EAE1E,MACR,CAEU7H,EAAS,QAAQ,KAAK,GAAK,IAAG6H,EAAM,SAAS,IAAMwC,EAC7D,CAAK,EAVD8I,EAAiB,QAAQ,QAAQ,EAAK,EAaxCX,EAAgCV,EAAM,eAAe,KAAK,QAAQ,YAAY,EAC9E,IAAIsB,EAEAb,GAA2BD,GAAsBtS,EAAS,QAAQ,IAAI,IAAM,GAC9EoT,EAAuBtB,EAAM,gCAAiC,EAE9DsB,EAAuB,QAAQ,QAAQ,EAAK,EAG9CA,EAAuBA,EAAqB,KAAK,SAAUjT,EAAQ,CACjEsS,EAA2BtS,CAC/B,CAAG,EAID,IAAIkT,EAAiBvB,EAAM,mBAAoB,EAAC,KAAK,SAAU3R,EAAQ,CACrEuS,EAA+BvS,CACnC,CAAG,EAED,OAAK,KAAA,cAAgB,QAAQ,IAAI,CAAC8S,EAAUE,EAAgBC,EAAsBC,CAAc,CAAC,EAAE,KAAK,UAAY,CAClH,OAAOxL,CACX,CAAG,EACM,KAAK,aACd,EAGAgL,EAAK,UAAU,eAAiB,SAAU5H,EAAUwC,EAAM,CACxD,IAAI1F,EAAS,KAOb,OAAA0F,EAAK,YAAcA,EAAK,aAAe,CAAE,EAClC,QAAQ,UAAU,KAAK,UAAY,CACxC,OAAK1F,EAAO,SAAS,GAOd,IAAI,QAAQ,SAAUiC,EAASC,EAAQ,CAC5C,IAAIU,EAAI5C,EAAO,cAAc,QAAS,EAElC0F,EAAK,aAAaA,EAAK,YAAY,MAAS,SAAUvD,EAAK,CAC7D,OAAOD,EAAOC,CAAG,CACzB,CAAO,EAEDS,EAAE,MAAM,UAAY,SAAUC,EAAI,CAChCD,EAAE,QAAS,EACPC,EAAG,KAAK,IAAKX,EAAOW,EAAG,KAAK,GAAG,EAAOZ,EAAQY,EAAG,IAAI,CAC1D,EAED,IAAI0I,EAAW,CAAE,EACbrI,EAAS,KAAKqI,EAAS,KAAKrI,EAAS,IAAI,MAAM,EAC/CA,EAAS,WAAWqI,EAAS,KAAKrI,EAAS,SAAS,EACxDN,EAAE,MAAM,YAAY,CAClB,KAAMM,EACN,SAAUlD,EAAO,qBACjB,QAAS,CACP,YAAaA,EAAO,UAAU,EACxC,CACO,EAAEuL,CAAQ,CACjB,CAAK,EA3BQ,CACL,KAAMvL,EAAO,UAAU,iBAAiBkD,EAAUwC,EAAK,WAAW,CACnE,CA0BP,CAAG,CACH,EAGAoF,EAAK,UAAU,kBAAoB,SAAUtJ,EAAMgG,EAAM9B,EAAM8F,EAAUC,EAAW,CAClF,GAAI,KAAK,SAAS,IAAMf,IAGxBX,EAAM,SAASvC,CAAI,GAAKmD,GACtB,OAAA,KAAK,MAAM,iCAAiC,EACrC,kBAAkBa,EAAS,gBAAkBhE,EAAMhG,EAAK,EAAGA,EAAK,EAAGA,EAAK,MAAOA,EAAK,MAAM,EAAE,KAAK,SAAUa,EAAQ,CACxH,OAAAoJ,EAAU,UAAYpJ,EACfoJ,CACb,CAAK,EAIH,GAAI1B,EAAM,SAASvC,CAAI,EACrB,OAAKgE,EAAS,SAAQA,EAAS,OAAShE,EAAK,WAAW,KAAM,CAC5D,MAAO,CAAA,CAAQ9B,EAAK,KAC1B,CAAK,GAED,KAAK,MAAM,qBAAqB,EAChC+F,EAAU,IAAMD,EAAS,OAAO,aAAahK,EAAK,EAAGA,EAAK,EAAGA,EAAK,MAAOA,EAAK,MAAM,EAAE,KAC/EiK,EAQT,KAAK,MAAM,iDAAiD,EAC5D,IAAIpB,EAAY,KAAK,QAAQ,aAAa7I,EAAK,MAAOA,EAAK,MAAM,EAC7DkK,EAASrB,EAAU,WAAW,KAAM,CACtC,MAAO,CAAQ3E,CAAAA,EAAK,KACxB,CAAG,EACD,OAAAgG,EAAO,yBAA2B,OAClCA,EAAO,UAAUF,EAAS,gBAAkBhE,EAAMhG,EAAK,EAAGA,EAAK,EAAGA,EAAK,MAAOA,EAAK,OAAQ,EAAG,EAAGA,EAAK,MAAOA,EAAK,MAAM,EACxH,KAAK,MAAM,qBAAqB,EAChCiK,EAAU,IAAMC,EAAO,aAAa,EAAG,EAAGlK,EAAK,MAAOA,EAAK,MAAM,EAAE,KAGnE6I,EAAU,MAAQA,EAAU,OAAS,EAC9BoB,CACR,EAEDX,EAAK,UAAU,eAAiB,SAAUtJ,EAAMpJ,EAAQoT,EAAU,CAChE,IAAIG,EAGJ,GAFA,KAAK,MAAM,2CAA2C,EAElDvT,EAAO,OACT,OAAAoT,EAAS,MAAM,UAAUpT,EAAO,OAAQoJ,EAAK,IAAKA,EAAK,GAAG,EACnD,KAGT,GAAI+I,EAGFoB,EAAc,IAAI,UAAU,IAAI,kBAAkBvT,EAAO,IAAI,EAAGoJ,EAAK,QAASA,EAAK,QAAQ,UAI3FmK,EAAcH,EAAS,MAAM,gBAAgBhK,EAAK,QAASA,EAAK,QAAQ,EAEpEmK,EAAY,KAAK,IACnBA,EAAY,KAAK,IAAIvT,EAAO,IAAI,MAGvBlB,SAAAA,EAAIyU,EAAY,KAAK,OAAS,EAAGzU,GAAK,EAAGA,IAChDyU,EAAY,KAAKzU,CAAC,EAAIkB,EAAO,KAAKlB,CAAC,EAKzC,OAAA,KAAK,MAAM,WAAW,EAElBiT,EAEFqB,EAAS,MAAM,aAAaG,EAAanK,EAAK,IAAKA,EAAK,IAAKA,EAAK,SAAWA,EAAK,IAAKA,EAAK,SAAWA,EAAK,IAAKA,EAAK,aAAe,KAAMA,EAAK,cAAgB,IAAI,EAEpKgK,EAAS,MAAM,aAAaG,EAAanK,EAAK,IAAKA,EAAK,IAAKA,EAAK,SAAWA,EAAK,IAAKA,EAAK,SAAWA,EAAK,IAAKA,EAAK,aAAcA,EAAK,aAAa,EAGjJ,IACR,EAEDsJ,EAAK,UAAU,gBAAkB,SAAUtD,EAAMC,EAAI/B,EAAM,CACzD,IAAIzF,EAAS,KAETuL,EAAW,CACb,OAAQ,KACR,eAAgB,KAChB,oBAAqB,GACrB,MAAO,IACR,EAEGI,EAAc,SAAqBpK,EAAM,CAC3C,OAAOvB,EAAO,QAAQ,UAAY,CAChC,GAAIyF,EAAK,SAAU,OAAOA,EAAK,YAC/B,IAAIxC,EAAW,CACb,MAAO1B,EAAK,MACZ,OAAQA,EAAK,OACb,QAASA,EAAK,QACd,SAAUA,EAAK,SACf,OAAQA,EAAK,OACb,OAAQA,EAAK,OACb,QAASA,EAAK,QACd,QAASA,EAAK,QACd,QAASkE,EAAK,QACd,MAAOA,EAAK,MACZ,cAAeA,EAAK,cACpB,cAAeA,EAAK,cACpB,iBAAkBA,EAAK,gBACxB,EAED,OAAAzF,EAAO,MAAM,oBAAoB,EAE1B,QAAQ,QAAQiD,CAAQ,EAAE,KAAK,SAAUA,EAAU,CACxD,OAAOjD,EAAO,kBAAkBuB,EAAMgG,EAAM9B,EAAM8F,EAAUtI,CAAQ,CAC5E,CAAO,EAAE,KAAK,SAAUA,EAAU,CAC1B,OAAAjD,EAAO,MAAM,oBAAoB,EAE1BA,EAAO,eAAeiD,EAAUwC,CAAI,CACnD,CAAO,EAAE,KAAK,SAAUtN,EAAQ,CACxB,OAAIsN,EAAK,SAAiBA,EAAK,aAC/B8F,EAAS,aAAe,KACjBvL,EAAO,eAAeuB,EAAMpJ,EAAQoT,CAAQ,EAC3D,CAAO,CACP,CAAK,CACL,EAIE,OAAO,QAAQ,UAAU,KAAK,UAAY,CAIxC,GAHAA,EAAS,MAAQ/D,EAAG,WAAW,KAAM,CACnC,MAAO,CAAA,CAAQ/B,EAAK,KAC1B,CAAK,EACGqE,EAAM,SAASvC,CAAI,EAAG,OAAO,KAEjC,GAAIuC,EAAM,cAAcvC,CAAI,EAC1B,OAAAgE,EAAS,eAAiBhE,EAC1BgE,EAAS,oBAAsB,GACxB,KAGT,GAAIzB,EAAM,QAAQvC,CAAI,EAGpB,OAAKgD,GAELvK,EAAO,MAAM,oCAAoC,EAE1C,kBAAkBuH,CAAI,EAAE,KAAK,SAAUqE,EAAa,CACzDL,EAAS,eAAiBK,CAClC,CAAO,EAIA,MAAS,SAAU/U,EAAG,CACrB,OAAO,IACf,CAAO,GAZoC,KAevC,MAAM,IAAI,MAAM,sDAAsD,CAC1E,CAAG,EAAE,KAAK,UAAY,CAClB,GAAI4O,EAAK,SAAU,OAAOA,EAAK,YAE/BzF,EAAO,MAAM,iBAAiB,EAM9B,IAAI6L,EAAU7B,EAAc,CAC1B,MAAOvE,EAAK,MACZ,OAAQA,EAAK,OACb,YAAazF,EAAO,QAAQ,KAC5B,QAASyF,EAAK,QACd,SAAUA,EAAK,SACf,eAAgBA,EAAK,gBAC3B,CAAK,EACGqG,EAAOD,EAAQ,IAAI,SAAUtK,EAAM,CACrC,OAAOoK,EAAYpK,CAAI,CAC7B,CAAK,EAED,SAASwK,EAAQR,EAAU,CACrBA,EAAS,iBACNA,EAAS,qBAAqBA,EAAS,eAAe,MAAO,EAClEA,EAAS,eAAiB,KAElC,CAEI,OAAAvL,EAAO,MAAM,eAAe,EAErB,QAAQ,IAAI8L,CAAI,EAAE,KAAK,UAAY,CACxC,OAAA9L,EAAO,MAAM,WAAW,EAExB+L,EAAQR,CAAQ,EACT/D,CACR,EAAE,SAAUtF,EAAK,CAChB,MAAA6J,EAAQR,CAAQ,EACVrJ,CACZ,CAAK,CACL,CAAG,CACF,EAED2I,EAAK,UAAU,gBAAkB,SAAUmB,EAAQzE,EAAMC,EAAI/B,EAAM,CACjE,IAAIwG,EAAS,KAEb,GAAIxG,EAAK,SAAU,OAAOA,EAAK,YAE/B,IAAIyG,EAAgBF,EAAO,MAAO,EAC9BG,EAAiBrD,EAAeoD,EAAe,CAAC,EAChD7L,EAAU8L,EAAe,CAAC,EAC1B7L,EAAW6L,EAAe,CAAC,EAE3BC,EAAcJ,EAAO,SAAW,EACpCvG,EAAOL,EAAO,CAAE,EAAEK,EAAM,CACtB,QAASpF,EACT,SAAUC,EAIV,QAAS8L,EAAc3G,EAAK,QAAU,KAAK,IAAI,EAAGA,EAAK,OAAO,CAClE,CAAG,EACD,IAAI2E,EAEJ,OAAKgC,IAEHhC,EAAY,KAAK,QAAQ,aAAa/J,EAASC,CAAQ,GAGlD,KAAK,gBAAgBiH,EAAM6E,EAAc5E,EAAK4C,EAAW3E,CAAI,EAAE,KAAK,UAAY,CACrF,OAAI2G,EAAoB5E,GACxB/B,EAAK,MAAQpF,EACboF,EAAK,OAASnF,EACP2L,EAAO,gBAAgBD,EAAQ5B,EAAW5C,EAAI/B,CAAI,EAC7D,CAAG,EAAE,KAAK,SAAU4G,EAAK,CACrB,OAAIjC,IAGFA,EAAU,MAAQA,EAAU,OAAS,GAGhCiC,CACX,CAAG,CACF,EAEDxB,EAAK,UAAU,6BAA+B,SAAUtD,EAAMC,EAAI/B,EAAM,CACtE,IAAI6G,EAAS,KAETC,EAAQ/E,EAAG,WAAW,KAAM,CAC9B,MAAO,CAAA,CAAQ/B,EAAK,KACxB,CAAG,EACD,OAAK,KAAA,MAAM,gCAAgC,EACpC,kBAAkB8B,EAAM,CAC7B,YAAa9B,EAAK,QAClB,aAAcA,EAAK,SACnB,cAAeqE,EAAM,iBAAiBrE,EAAK,OAAO,CACtD,CAAG,EAAE,KAAK,SAAUmG,EAAa,CAC7B,GAAInG,EAAK,SAAU,OAAOA,EAAK,YAE/B,GAAI,CAACA,EAAK,cACR,OAAA8G,EAAM,UAAUX,EAAa,EAAG,CAAC,EACjCA,EAAY,MAAO,EACnBW,EAAQ,KAERD,EAAO,MAAM,WAAW,EAEjB9E,EAGT8E,EAAO,MAAM,gBAAgB,EAE7B,IAAIlC,EAAYkC,EAAO,QAAQ,aAAa7G,EAAK,QAASA,EAAK,QAAQ,EAEnEgG,EAASrB,EAAU,WAAW,KAAM,CACtC,MAAO,CAAQ3E,CAAAA,EAAK,KAC1B,CAAK,EACDgG,EAAO,UAAUG,EAAa,EAAG,CAAC,EAClCA,EAAY,MAAO,EACnB,IAAIY,EAAQf,EAAO,aAAa,EAAG,EAAGhG,EAAK,QAASA,EAAK,QAAQ,EAEjE,OAAA6G,EAAO,UAAU,aAAaE,EAAM,KAAM/G,EAAK,QAASA,EAAK,SAAUA,EAAK,cAAeA,EAAK,cAAeA,EAAK,gBAAgB,EAEpI8G,EAAM,aAAaC,EAAO,EAAG,CAAC,EAG9BpC,EAAU,MAAQA,EAAU,OAAS,EACrCoC,EAAQf,EAASrB,EAAYmC,EAAQ,KAErCD,EAAO,MAAM,WAAW,EAEjB9E,CACX,CAAG,CACF,EAEDqD,EAAK,UAAU,OAAS,SAAUtD,EAAMC,EAAIvP,EAAS,CACnD,IAAIwU,EAAS,KAEb,KAAK,MAAM,iBAAiB,EAC5B,IAAIhH,EAAOL,EAAO,CAAE,EAAEiF,CAAmB,EAezC,GAbK,MAAMpS,CAAO,EAIPA,IACTwN,EAAOL,EAAOK,EAAMxN,CAAO,GAJ3BwN,EAAOL,EAAOK,EAAM,CAClB,QAASxN,CACf,CAAK,EAKHwN,EAAK,QAAU+B,EAAG,MAClB/B,EAAK,SAAW+B,EAAG,OACnB/B,EAAK,MAAQ8B,EAAK,cAAgBA,EAAK,MACvC9B,EAAK,OAAS8B,EAAK,eAAiBA,EAAK,OAErCC,EAAG,QAAU,GAAKA,EAAG,SAAW,EAClC,OAAO,QAAQ,OAAO,IAAI,MAAM,wBAAwB,OAAOA,EAAG,MAAO,GAAG,EAAE,OAAOA,EAAG,MAAM,CAAC,CAAC,EAG9F/B,EAAK,cAAgB,IAAGA,EAAK,cAAgB,GACjDA,EAAK,SAAW,GAEZA,EAAK,cAEPA,EAAK,YAAcA,EAAK,YAAY,KAAK,SAAU3I,EAAM,CACvD,MAAA2I,EAAK,SAAW,GACV3I,CACP,EAAE,SAAUoF,EAAK,CAChB,MAAAuD,EAAK,SAAW,GACVvD,CACZ,CAAK,GAGH,IAAIwK,EAAmB,EAEvB,OAAAjH,EAAK,iBAAmB,KAAK,KAAK,KAAK,IAAIiH,EAAkB,IAAMjH,EAAK,cAAgB,CAAC,CAAC,EACnF,KAAK,OAAO,KAAK,UAAY,CAClC,GAAIA,EAAK,SAAU,OAAOA,EAAK,YAE/B,GAAIgH,EAAO,SAAS,IAClB,OAAOA,EAAO,6BAA6BlF,EAAMC,EAAI/B,CAAI,EAG3D,GAAI,CAAC+E,EAA+B,CAClC,IAAItI,EAAM,IAAI,MAAM,4FAAiG,EACrH,MAAAA,EAAI,KAAO,qBACLA,CACP,CAKD,IAAI8J,EAASjC,EAAatE,EAAK,MAAOA,EAAK,OAAQA,EAAK,QAASA,EAAK,SAAUgH,EAAO,QAAQ,KAAMhH,EAAK,gBAAgB,EAC1H,OAAOgH,EAAO,gBAAgBT,EAAQzE,EAAMC,EAAI/B,CAAI,CACxD,CAAG,CACH,EAIAoF,EAAK,UAAU,aAAe,SAAU5S,EAAS,CAC/C,IAAI0U,EAAS,KAETlH,EAAOL,EAAO,GAAIiF,EAAqBpS,CAAO,EAClD,OAAO,KAAK,OAAO,KAAK,UAAY,CAClC,OAAO0U,EAAO,UAAU,iBAAiBlH,CAAI,CACjD,CAAG,CACF,EAEDoF,EAAK,UAAU,OAAS,SAAUrI,EAAQoK,EAAUxS,EAAS,CAC3D,OAAAwS,EAAWA,GAAY,YAChB,IAAI,QAAQ,SAAU5K,EAAS,CACpC,GAAIQ,EAAO,OAAQ,CACjBA,EAAO,OAAO,SAAUmG,EAAM,CAC5B,OAAO3G,EAAQ2G,CAAI,CAC3B,EAASiE,EAAUxS,CAAO,EACpB,MACN,CAEI,GAAIoI,EAAO,cAAe,CACxBR,EAAQQ,EAAO,cAAc,CAC3B,KAAMoK,EACN,QAASxS,CACjB,CAAO,CAAC,EACF,MACD,CAOD,QAJIyS,EAAW,KAAKrK,EAAO,UAAUoK,EAAUxS,CAAO,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EACjEN,EAAM+S,EAAS,OACfC,EAAW,IAAI,WAAWhT,CAAG,EAExB7C,EAAI,EAAGA,EAAI6C,EAAK7C,IACvB6V,EAAS7V,CAAC,EAAI4V,EAAS,WAAW5V,CAAC,EAGrC+K,EAAQ,IAAI,KAAK,CAAC8K,CAAQ,EAAG,CAC3B,KAAMF,CACZ,CAAK,CAAC,CACN,CAAG,CACF,EAED/B,EAAK,UAAU,MAAQ,UAAY,CAAE,EAErClU,EAAO,QAAUkU,CAEjB,EAAE,CAAC,gBAAgB,EAAE,aAAa,GAAG,gBAAgB,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,GAAG,WAAa,EAAE,CAAC,CAAC,EAAE,CAAA,EAAG,CAAE,CAAA,EAAE,WAAW,CACpK,CAAC","x_google_ignoreList":[0]}