{
  "version": 3,
  "sources": ["../../plugin-utils/src/metadata/Metadata.ts", "../../../node_modules/lodash-es/_freeGlobal.js", "../../../node_modules/lodash-es/_root.js", "../../../node_modules/lodash-es/_Symbol.js", "../../../node_modules/lodash-es/_getRawTag.js", "../../../node_modules/lodash-es/_objectToString.js", "../../../node_modules/lodash-es/_baseGetTag.js", "../../../node_modules/lodash-es/isObjectLike.js", "../../../node_modules/lodash-es/isArray.js", "../../../node_modules/lodash-es/isObject.js", "../../../node_modules/lodash-es/isFunction.js", "../../../node_modules/lodash-es/_coreJsData.js", "../../../node_modules/lodash-es/_isMasked.js", "../../../node_modules/lodash-es/_toSource.js", "../../../node_modules/lodash-es/_baseIsNative.js", "../../../node_modules/lodash-es/_getValue.js", "../../../node_modules/lodash-es/_getNative.js", "../../../node_modules/lodash-es/_WeakMap.js", "../../../node_modules/lodash-es/_isIndex.js", "../../../node_modules/lodash-es/eq.js", "../../../node_modules/lodash-es/isLength.js", "../../../node_modules/lodash-es/isArrayLike.js", "../../../node_modules/lodash-es/_isPrototype.js", "../../../node_modules/lodash-es/_baseTimes.js", "../../../node_modules/lodash-es/_baseIsArguments.js", "../../../node_modules/lodash-es/isArguments.js", "../../../node_modules/lodash-es/stubFalse.js", "../../../node_modules/lodash-es/isBuffer.js", "../../../node_modules/lodash-es/_baseIsTypedArray.js", "../../../node_modules/lodash-es/_baseUnary.js", "../../../node_modules/lodash-es/_nodeUtil.js", "../../../node_modules/lodash-es/isTypedArray.js", "../../../node_modules/lodash-es/_arrayLikeKeys.js", "../../../node_modules/lodash-es/_overArg.js", "../../../node_modules/lodash-es/_nativeKeys.js", "../../../node_modules/lodash-es/_baseKeys.js", "../../../node_modules/lodash-es/keys.js", "../../../node_modules/lodash-es/_nativeCreate.js", "../../../node_modules/lodash-es/_hashClear.js", "../../../node_modules/lodash-es/_hashDelete.js", "../../../node_modules/lodash-es/_hashGet.js", "../../../node_modules/lodash-es/_hashHas.js", "../../../node_modules/lodash-es/_hashSet.js", "../../../node_modules/lodash-es/_Hash.js", "../../../node_modules/lodash-es/_listCacheClear.js", "../../../node_modules/lodash-es/_assocIndexOf.js", "../../../node_modules/lodash-es/_listCacheDelete.js", "../../../node_modules/lodash-es/_listCacheGet.js", "../../../node_modules/lodash-es/_listCacheHas.js", "../../../node_modules/lodash-es/_listCacheSet.js", "../../../node_modules/lodash-es/_ListCache.js", "../../../node_modules/lodash-es/_Map.js", "../../../node_modules/lodash-es/_mapCacheClear.js", "../../../node_modules/lodash-es/_isKeyable.js", "../../../node_modules/lodash-es/_getMapData.js", "../../../node_modules/lodash-es/_mapCacheDelete.js", "../../../node_modules/lodash-es/_mapCacheGet.js", "../../../node_modules/lodash-es/_mapCacheHas.js", "../../../node_modules/lodash-es/_mapCacheSet.js", "../../../node_modules/lodash-es/_MapCache.js", "../../../node_modules/lodash-es/_arrayPush.js", "../../../node_modules/lodash-es/_stackClear.js", "../../../node_modules/lodash-es/_stackDelete.js", "../../../node_modules/lodash-es/_stackGet.js", "../../../node_modules/lodash-es/_stackHas.js", "../../../node_modules/lodash-es/_stackSet.js", "../../../node_modules/lodash-es/_Stack.js", "../../../node_modules/lodash-es/_arrayFilter.js", "../../../node_modules/lodash-es/stubArray.js", "../../../node_modules/lodash-es/_getSymbols.js", "../../../node_modules/lodash-es/_baseGetAllKeys.js", "../../../node_modules/lodash-es/_getAllKeys.js", "../../../node_modules/lodash-es/_DataView.js", "../../../node_modules/lodash-es/_Promise.js", "../../../node_modules/lodash-es/_Set.js", "../../../node_modules/lodash-es/_getTag.js", "../../../node_modules/lodash-es/_Uint8Array.js", "../../../node_modules/lodash-es/_setCacheAdd.js", "../../../node_modules/lodash-es/_setCacheHas.js", "../../../node_modules/lodash-es/_SetCache.js", "../../../node_modules/lodash-es/_arraySome.js", "../../../node_modules/lodash-es/_cacheHas.js", "../../../node_modules/lodash-es/_equalArrays.js", "../../../node_modules/lodash-es/_mapToArray.js", "../../../node_modules/lodash-es/_setToArray.js", "../../../node_modules/lodash-es/_equalByTag.js", "../../../node_modules/lodash-es/_equalObjects.js", "../../../node_modules/lodash-es/_baseIsEqualDeep.js", "../../../node_modules/lodash-es/_baseIsEqual.js", "../../../node_modules/lodash-es/isEqual.js", "../../plugin-utils/src/metadata/FillProcessingMetadata.ts", "../../plugin-utils/src/processing/fillProcessing.ts", "../../plugin-utils/src/processing/constants.ts", "../../plugin-utils/src/processing/initializeFillProcessing.ts", "../../plugin-utils/src/processing/registerFillProcessingComponents.ts", "../../plugin-utils/src/utils/colors.ts", "../src/processVectorization.ts", "../../../node_modules/lodash-es/_freeGlobal.js", "../../../node_modules/lodash-es/_root.js", "../../../node_modules/lodash-es/_Symbol.js", "../../../node_modules/lodash-es/_getRawTag.js", "../../../node_modules/lodash-es/_objectToString.js", "../../../node_modules/lodash-es/_baseGetTag.js", "../../../node_modules/lodash-es/isObjectLike.js", "../../../node_modules/lodash-es/isSymbol.js", "../../../node_modules/lodash-es/_trimmedEndIndex.js", "../../../node_modules/lodash-es/_baseTrim.js", "../../../node_modules/lodash-es/isObject.js", "../../../node_modules/lodash-es/toNumber.js", "../../../node_modules/lodash-es/now.js", "../../../node_modules/lodash-es/debounce.js", "../../../node_modules/lodash-es/throttle.js", "../src/createVectorPathBlocks.ts", "../src/addAsVectorGroup.ts", "../src/plugin.ts", "../src/index.ts"],
  "sourcesContent": ["import { type CreativeEngine } from '@cesdk/cesdk-js';\n\nclass Metadata<V> {\n  engine: CreativeEngine;\n\n  key: string;\n\n  constructor(engine: CreativeEngine, key: string) {\n    this.engine = engine;\n    this.key = key;\n  }\n\n  hasData(blockId: number): boolean {\n    return (\n      this.engine.block.isValid(blockId) &&\n      this.engine.block.hasMetadata(blockId, this.key)\n    );\n  }\n\n  get(blockId: number): V | undefined {\n    if (this.hasData(blockId)) {\n      return JSON.parse(this.engine.block.getMetadata(blockId, this.key));\n    }\n    return undefined;\n  }\n\n  set(blockId: number, value: V) {\n    this.engine.block.setMetadata(blockId, this.key, JSON.stringify(value));\n  }\n\n  clear(blockId: number) {\n    if (this.engine.block.hasMetadata(blockId, this.key)) {\n      this.engine.block.removeMetadata(blockId, this.key);\n    }\n  }\n}\n\nexport default Metadata;\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n", "import { isEqual } from 'lodash-es';\n\nimport Metadata from './Metadata';\nimport {\n  PluginStatusError,\n  PluginStatusMetadata,\n  PluginStatusProcessed,\n  PluginStatusProcessing\n} from './types';\n\nclass ImageProcessingMetadata extends Metadata<PluginStatusMetadata> {\n  get(blockId: number): PluginStatusMetadata {\n    return super.get(blockId) ?? { status: 'IDLE' };\n  }\n\n  /**\n   * Detect if the block has been duplicated with processed or processing\n   * fill processing. In that case the processing state is still\n   * valid, but blockId and fillId have changed.\n   */\n  isDuplicate(blockId: number): boolean {\n    if (!this.engine.block.isValid(blockId)) return false;\n\n    const metadata = this.get(blockId);\n\n    if (\n      metadata.status === 'IDLE' ||\n      metadata.status === 'PENDING' ||\n      metadata.status === 'ERROR'\n    )\n      return false;\n\n    if (!this.engine.block.hasFill(blockId)) return false;\n    const fillId = this.engine.block.getFill(blockId);\n\n    // It cannot be a duplicate if the blockId or fillId are the same\n    if (metadata.blockId === blockId || metadata.fillId === fillId)\n      return false;\n\n    return true;\n  }\n\n  /**\n   * Fixes the metadata if the block has been duplicated, i.e. the blockId and\n   * fillId will be updated to the current block/fill.\n   *\n   * Please note: Call this method only on duplicates (see isDuplicate).\n   */\n  fixDuplicate(blockId: number) {\n    const fillId = this.engine.block.getFill(blockId);\n    const metadata = this.get(blockId);\n    if (\n      metadata.status === 'IDLE' ||\n      metadata.status === 'PENDING' ||\n      metadata.status === 'ERROR'\n    )\n      return;\n    this.set(blockId, {\n      ...metadata,\n      blockId,\n      fillId\n    });\n\n    // If it is currently processing the best we can do is to just recover\n    // the initial image data, since no processing will update this block and\n    // it will be stuck in the processing state.\n    if (metadata.status === 'PROCESSING') {\n      this.recoverInitialImageData(blockId);\n      this.clear(blockId);\n    }\n  }\n\n  /**\n   * Check if the image has a consisten metadata state. A inconsistent state is\n   * caused by outside changes of the fill data.\n   *\n   * @returns true if the metadata is consistent, false otherwise\n   */\n  isConsistent(blockId: number): boolean {\n    // In case the block was removed, we just abort and mark it\n    // as reset by returning true\n    if (!this.engine.block.isValid(blockId)) return false;\n    const metadata = this.get(blockId);\n    if (metadata.status === 'IDLE' || metadata.status === 'PENDING')\n      return true;\n\n    if (!this.engine.block.hasFill(blockId)) return false;\n    const fillId = this.engine.block.getFill(blockId);\n    if (fillId == null) return false;\n\n    if (blockId !== metadata.blockId || fillId !== metadata.fillId)\n      return false;\n\n    const sourceSet = this.engine.block.getSourceSet(\n      fillId,\n      'fill/image/sourceSet'\n    );\n    const imageFileURI = this.engine.block.getString(\n      fillId,\n      'fill/image/imageFileURI'\n    );\n\n    if (\n      sourceSet.length === 0 &&\n      !imageFileURI &&\n      metadata.status === 'PROCESSING'\n    ) {\n      // While we process it is OK to have no image file URI and no source set\n      // (which we cleared to show the spinning loader)\n      return true;\n    }\n\n    // Source sets have precedence over imageFileURI so if we have a source set,\n    // we only need to check if it has changed to something else.\n    if (sourceSet?.length > 0) {\n      const initialSourceSet = metadata.initialSourceSet;\n      // If we have already processed the image, we need to check if the source set\n      // we need to check against both source sets, the removed and the initial\n      if (metadata.status !== 'PROCESSED') {\n        if (!isEqual(sourceSet, initialSourceSet)) {\n          return false;\n        }\n      }\n    } else {\n      if (metadata.status !== 'PROCESSED') {\n        if (imageFileURI !== metadata.initialImageFileURI) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  /**\n   * Recover the initial values to avoid the loading spinner and have the same\n   * state as before the fill processing was started.\n   */\n  recoverInitialImageData(blockId: number) {\n    const blockApi = this.engine.block;\n    if (!blockApi.hasFill(blockId)) return; // Nothing to recover (no fill anymore)\n\n    const metadata = this.get(blockId);\n\n    if (metadata.status === 'PENDING' || metadata.status === 'IDLE') {\n      return;\n    }\n\n    const initialSourceSet = metadata.initialSourceSet;\n    const initialImageFileURI = metadata.initialImageFileURI;\n    const initialPreviewFileURI = metadata.initialPreviewFileURI;\n\n    const fillId = this.getValidFill(blockId, metadata);\n    if (fillId == null) return;\n\n    if (initialImageFileURI) {\n      this.engine.block.setString(\n        fillId,\n        'fill/image/imageFileURI',\n        initialImageFileURI\n      );\n    }\n    if (initialPreviewFileURI) {\n      this.engine.block.setString(\n        fillId,\n        'fill/image/previewFileURI',\n        initialPreviewFileURI\n      );\n    }\n    if (initialSourceSet.length > 0) {\n      this.engine.block.setSourceSet(\n        fillId,\n        'fill/image/sourceSet',\n        initialSourceSet\n      );\n    }\n  }\n\n  /**\n   * Returns the fill id of the block if it has a valid fill that was used for\n   * fill processing. Returns undefined otherwise.\n   */\n  private getValidFill(\n    blockId: number,\n    metadata: PluginStatusProcessing | PluginStatusError | PluginStatusProcessed\n  ): number | undefined {\n    if (\n      !this.engine.block.isValid(blockId) ||\n      !this.engine.block.hasFill(blockId) ||\n      blockId !== metadata.blockId\n    ) {\n      return undefined;\n    }\n    const fillId = this.engine.block.getFill(blockId);\n    if (fillId !== metadata.fillId) {\n      return undefined;\n    }\n\n    return fillId;\n  }\n}\n\nexport default ImageProcessingMetadata;\n", "import CreativeEditorSDK from '@cesdk/cesdk-js';\nimport { FillProcessingMetadata } from '..';\nimport {\n  PluginStatusProcessed,\n  PluginStatusProcessing\n} from '../metadata/types';\n\ninterface FillProcessor<T> {\n  processFill(metadataState: PluginStatusProcessing): Promise<T>;\n\n  commitProcessing(\n    data: T,\n    metadataState: PluginStatusProcessed\n  ): number | void;\n}\n\nasync function fillProcessing<T>(\n  blockId: number,\n  cesdk: CreativeEditorSDK,\n  metadata: FillProcessingMetadata,\n  processor: FillProcessor<T>\n) {\n  const blockApi = cesdk.engine.block;\n  if (!blockApi.hasFill(blockId))\n    throw new Error('Block does not support fill');\n\n  const fillId = blockApi.getFill(blockId);\n\n  // Get the current image URI and source set as initial values.\n  const initialSourceSet = blockApi.getSourceSet(\n    fillId,\n    'fill/image/sourceSet'\n  );\n  const initialImageFileURI = blockApi.getString(\n    fillId,\n    'fill/image/imageFileURI'\n  );\n  const initialPreviewFileURI = blockApi.getString(\n    fillId,\n    'fill/image/previewFileURI'\n  );\n  try {\n    cesdk.engine.block.setState(fillId, {\n      type: 'Pending',\n      progress: 0\n    });\n\n    const status: PluginStatusProcessing = {\n      ...metadata.get(blockId),\n      version: PLUGIN_VERSION,\n      initialSourceSet,\n      initialImageFileURI,\n      initialPreviewFileURI,\n      blockId,\n      fillId,\n      status: 'PROCESSING'\n    };\n\n    metadata.set(blockId, status);\n\n    const processedData = await processor.processFill(status);\n    // Check for externally changed state while we were applying the mask and\n    // do not proceed if the state was reset.\n    if (\n      metadata.get(blockId).status !== 'PROCESSING' ||\n      !metadata.isConsistent(blockId)\n    )\n      return;\n\n    // Check for externally changed state while we were uploading and\n    // do not proceed if the state was reset.\n    if (\n      metadata.get(blockId).status !== 'PROCESSING' ||\n      !metadata.isConsistent(blockId)\n    )\n      return;\n\n    if (processedData == null) return;\n\n    const metadataStateProcessed: PluginStatusProcessed = {\n      version: PLUGIN_VERSION,\n      initialSourceSet,\n      initialImageFileURI,\n      initialPreviewFileURI,\n      blockId,\n      fillId,\n      status: 'PROCESSED'\n    };\n\n    const blockIdOrVoid = processor.commitProcessing(\n      processedData,\n      metadataStateProcessed\n    );\n\n    // If a new block was created, we do not update the metadata.\n    if (blockIdOrVoid == null || blockIdOrVoid === blockId) {\n      metadata.set(blockId, metadataStateProcessed);\n    }\n\n    // Finally, create an undo step\n    cesdk.engine.editor.addUndoStep();\n  } catch (error) {\n    if (cesdk.engine.block.isValid(blockId)) {\n      metadata.set(blockId, {\n        version: PLUGIN_VERSION,\n        initialSourceSet,\n        initialImageFileURI,\n        initialPreviewFileURI,\n        blockId,\n        fillId,\n        status: 'ERROR'\n      });\n\n      metadata.recoverInitialImageData(blockId);\n    }\n\n    if (\n      error != null &&\n      typeof error === 'object' &&\n      'message' in error &&\n      typeof error.message === 'string'\n    ) {\n      const message =\n        error.message === 'signal timed out'\n          ? 'Processing canceled due to timeout'\n          : error.message;\n      cesdk.ui.showNotification({\n        type: 'error',\n        message\n      });\n    }\n\n    // eslint-disable-next-line no-console\n    console.log(error);\n  } finally {\n    if (cesdk.engine.block.isValid(fillId)) {\n      cesdk.engine.block.setState(fillId, { type: 'Ready' });\n    }\n  }\n}\n\nexport default fillProcessing;\n", "export function getFeatureId(pluginId: string): string {\n  return `${pluginId}.fillProcessing.feature`;\n}\n\nexport function getCanvasMenuComponentIds(pluginId: string): string[] {\n  return [`${pluginId}.canvasMenu`, `${pluginId}.fillProcessing.canvasMenu`];\n}\n\nexport function getDockComponentIds(pluginId: string): string[] {\n  return [`${pluginId}.dock`, `${pluginId}.fillProcessing.dock`];\n}\n\nexport function getInspectorBarComponentIds(pluginId: string): string[] {\n  return [\n    `${pluginId}.inspectorBar`,\n    `${pluginId}.fillProcessing.inspectorBar`\n  ];\n}\n\nexport function getNavigationBarComponentIds(pluginId: string): string[] {\n  return [\n    `${pluginId}.navigationBar`,\n    `${pluginId}.fillProcessing.navigationBar`\n  ];\n}\n\nexport function getCanvasBarComponentIds(pluginId: string): string[] {\n  return [`${pluginId}.canvasBar`, `${pluginId}.fillProcessing.canvasBar`];\n}\n\nexport function getI18nCanvasMenuLabel(pluginId: string): string {\n  return `plugin.${pluginId}.fillProcessing.canvasMenu.button.label`;\n}\n\nexport function getI18nDockLabel(pluginId: string): string {\n  return `plugin.${pluginId}.fillProcessing.dock.button.label`;\n}\n\nexport function getI18nInspectorBarLabel(pluginId: string): string {\n  return `plugin.${pluginId}.fillProcessing.inspectorBar.button.label`;\n}\n\nexport function getI18nNavigationBarLabel(pluginId: string): string {\n  return `plugin.${pluginId}.fillProcessing.navigationBar.button.label`;\n}\n\nexport function getI18nCanvasBarLabel(pluginId: string): string {\n  return `plugin.${pluginId}.fillProcessing.canvasBar.button.label`;\n}\n", "import type CreativeEditorSDK from '@cesdk/cesdk-js';\n\nimport { FillProcessingMetadata } from '..';\nimport { getFeatureId } from './constants';\n\nexport default function handleFillProcessing(\n  cesdk: CreativeEditorSDK,\n  {\n    pluginId,\n    process\n  }: {\n    pluginId: string;\n    icon?: string;\n    process: (blockId: number, metadata: FillProcessingMetadata) => void;\n  }\n): {\n  featureId: string;\n} {\n  const featureId = getFeatureId(pluginId);\n\n  const metadata = new FillProcessingMetadata(cesdk.engine, pluginId);\n\n  enableFeatures(cesdk, metadata, featureId);\n\n  cesdk.engine.event.subscribe([], async (events) => {\n    events.forEach((e) => {\n      const id = e.block;\n      if (!cesdk.engine.block.isValid(id) || !metadata.hasData(id)) {\n        return;\n      }\n\n      if (e.type === 'Created') {\n        if (metadata.isDuplicate(id)) {\n          metadata.fixDuplicate(id);\n        }\n      } else if (e.type === 'Updated') {\n        switch (metadata.get(id).status) {\n          case 'PENDING': {\n            if (\n              cesdk.feature.isEnabled(featureId, {\n                engine: cesdk.engine\n              }) &&\n              cesdk.engine.block.isAllowedByScope(id, 'fill/change') &&\n              cesdk.engine.block.getState(id).type !== 'Pending'\n            ) {\n              process(id, metadata);\n            }\n            break;\n          }\n\n          case 'PROCESSING':\n          case 'PROCESSED': {\n            if (!metadata.isConsistent(id)) {\n              metadata.clear(id);\n            }\n            break;\n          }\n\n          default: {\n            // We do not care about other states\n          }\n        }\n      }\n    });\n  });\n\n  return { featureId };\n}\n\n/**\n * Defines the feature that determines in which context (on which block)\n * fill processing is allowed/enabled.\n */\nfunction enableFeatures(\n  cesdk: CreativeEditorSDK,\n  metadata: FillProcessingMetadata,\n  featureId: string\n) {\n  cesdk.feature.enable(featureId, ({ engine }) => {\n    const selectedIds = engine.block.findAllSelected();\n    if (selectedIds.length !== 1) {\n      return false;\n    }\n    const [selectedId] = selectedIds;\n\n    if (!cesdk.engine.block.isVisible(selectedId)) return false;\n\n    if (cesdk.engine.block.hasFill(selectedId)) {\n      const kind = cesdk.engine.block.getKind(selectedId);\n      if (kind === 'sticker') return false;\n\n      const fillId = cesdk.engine.block.getFill(selectedId);\n      const fillType = cesdk.engine.block.getType(fillId);\n\n      if (fillType !== '//ly.img.ubq/fill/image') {\n        return false;\n      }\n\n      const fileUri = engine.block.getString(fillId, 'fill/image/imageFileURI');\n      const sourceSet = engine.block.getSourceSet(\n        fillId,\n        'fill/image/sourceSet'\n      );\n\n      if (sourceSet.length > 0 || fileUri !== '') return true;\n\n      // If we are in a processing state we do not have a imageFileURI or\n      // source set set (to show the loading spinner), but the feature is still\n      // enabled.\n      return metadata.get(selectedId).status === 'PROCESSING';\n    }\n\n    return false;\n  });\n}\n", "import CreativeEditorSDK from '@cesdk/cesdk-js';\nimport { FillProcessingMetadata } from '..';\nimport {\n  getCanvasBarComponentIds,\n  getCanvasMenuComponentIds,\n  getDockComponentIds,\n  getFeatureId,\n  getI18nCanvasBarLabel,\n  getI18nCanvasMenuLabel,\n  getI18nDockLabel,\n  getI18nInspectorBarLabel,\n  getI18nNavigationBarLabel,\n  getInspectorBarComponentIds,\n  getNavigationBarComponentIds\n} from './constants';\n\nexport type Location =\n  | 'inspectorBar'\n  | 'navigationBar'\n  | 'canvasBarTop'\n  | 'canvasBarBottom'\n  | 'canvasMenu'\n  | 'dock';\n\n/**\n * Registers the components that can be used to process the fill of\n * a block.\n */\nexport default function registerFillProcessingComponents(\n  cesdk: CreativeEditorSDK,\n  options: {\n    pluginId: string;\n    icon?: string;\n    locations?: Location | Location[];\n  }\n): {\n  canvasMenuComponentId: string;\n  dockComponentId: string;\n\n  translationsKeys: {\n    inspectorBarLabel: string;\n    navigationBarLabel: string;\n    canvasBarLabel: string;\n    canvasMenuLabel: string;\n    dockLabel: string;\n  };\n} {\n  const { pluginId, locations } = options;\n  const metadata = new FillProcessingMetadata(cesdk.engine, pluginId);\n\n  const canvasMenuLabel = getI18nCanvasMenuLabel(pluginId);\n  const canvasMenuComponentIds = getCanvasMenuComponentIds(pluginId);\n  const canvasMenuComponentId = canvasMenuComponentIds[0];\n\n  const dockLabel = getI18nDockLabel(pluginId);\n  const dockComponentIds = getDockComponentIds(pluginId);\n  const dockComponentId = dockComponentIds[0];\n\n  const inspectorBarLabel = getI18nInspectorBarLabel(pluginId);\n  const inspectorBarComponentIds = getInspectorBarComponentIds(pluginId);\n  const inspectorBarComponentId = inspectorBarComponentIds[0];\n\n  const navigationBarLabel = getI18nNavigationBarLabel(pluginId);\n  const navigationBarComponentIds = getNavigationBarComponentIds(pluginId);\n  const navigationBarComponentId = navigationBarComponentIds[0];\n\n  const canvasBarLabel = getI18nCanvasBarLabel(pluginId);\n  const canvasBarComponentIds = getCanvasBarComponentIds(pluginId);\n  const canvasBarComponentId = canvasBarComponentIds[0];\n\n  const featureId = getFeatureId(pluginId);\n\n  if (locations?.includes('inspectorBar')) {\n    cesdk.ui.setInspectorBarOrder([\n      inspectorBarComponentId,\n      ...cesdk.ui.getInspectorBarOrder()\n    ]);\n  }\n\n  if (locations?.includes('navigationBar')) {\n    cesdk.ui.setNavigationBarOrder([\n      navigationBarComponentId,\n      ...cesdk.ui.getNavigationBarOrder()\n    ]);\n  }\n\n  if (locations?.includes('canvasBarTop')) {\n    cesdk.ui.setCanvasBarOrder(\n      [canvasBarComponentId, ...cesdk.ui.getCanvasBarOrder('top')],\n      'top'\n    );\n  }\n\n  if (locations?.includes('canvasBarBottom')) {\n    cesdk.ui.setCanvasBarOrder(\n      [canvasBarComponentId, ...cesdk.ui.getCanvasBarOrder('bottom')],\n      'bottom'\n    );\n  }\n\n  if (locations?.includes('canvasMenu')) {\n    cesdk.ui.setCanvasMenuOrder([\n      canvasMenuComponentId,\n      ...cesdk.ui.getCanvasMenuOrder()\n    ]);\n  }\n\n  if (locations?.includes('dock')) {\n    cesdk.ui.setDockOrder([...cesdk.ui.getDockOrder(), dockComponentId]);\n  }\n\n  cesdk.ui.registerComponent(\n    dockComponentIds,\n    ({ builder: { Button }, engine }) => {\n      const [id] = engine.block.findAllSelected();\n\n      let isDisabled = false;\n      let isLoading = false;\n      let loadingProgress: number | undefined;\n\n      if (id == null) {\n        isDisabled = true;\n      }\n\n      if (\n        !isDisabled &&\n        !cesdk.feature.isEnabled(featureId, {\n          engine\n        })\n      ) {\n        isDisabled = true;\n      }\n\n      if (\n        !isDisabled &&\n        !cesdk.engine.block.isAllowedByScope(id, 'fill/change')\n      ) {\n        isDisabled = true;\n      }\n\n      if (!isDisabled && engine.block.getState(id)?.type === 'Pending') {\n        isDisabled = true;\n      }\n\n      if (!isDisabled) {\n        const currentMetadata = metadata.get(id);\n\n        isLoading = currentMetadata.status === 'PROCESSING';\n        isDisabled =\n          currentMetadata.status === 'PENDING' ||\n          currentMetadata.status === 'PROCESSING';\n\n        if (\n          currentMetadata.status === 'PROCESSING' &&\n          currentMetadata.progress\n        ) {\n          const { current, total } = currentMetadata.progress;\n          loadingProgress = (current / total) * 100;\n        }\n      }\n\n      const buttonId = `${dockComponentId}.button`;\n      Button(buttonId, {\n        label: dockLabel,\n        icon: options.icon,\n        isLoading,\n        isDisabled,\n        loadingProgress,\n        onClick: () => {\n          const currentMetadata = metadata.get(id);\n\n          if (\n            currentMetadata.status === 'IDLE' ||\n            currentMetadata.status === 'ERROR' ||\n            currentMetadata.status === 'PROCESSED'\n          ) {\n            metadata.set(id, {\n              status: 'PENDING'\n            });\n          }\n        }\n      });\n    }\n  );\n\n  const buttonComponents: {\n    componentIds: string[];\n    label: string;\n    variant: 'plain' | 'regular';\n  }[] = [\n    {\n      componentIds: inspectorBarComponentIds,\n      variant: 'plain',\n      label: inspectorBarLabel\n    },\n    {\n      componentIds: navigationBarComponentIds,\n      variant: 'regular',\n      label: navigationBarLabel\n    },\n    {\n      componentIds: canvasBarComponentIds,\n      variant: 'regular',\n      label: canvasBarLabel\n    },\n    {\n      componentIds: canvasMenuComponentIds,\n      variant: 'plain',\n      label: canvasMenuLabel\n    }\n  ];\n\n  buttonComponents.forEach(({ componentIds, label, variant }) => {\n    const componentId = componentIds[0];\n    cesdk.ui.registerComponent(\n      componentIds,\n      ({ builder: { Button }, engine }) => {\n        if (\n          !cesdk.feature.isEnabled(featureId, {\n            engine\n          })\n        ) {\n          return;\n        }\n\n        const [id] = engine.block.findAllSelected();\n\n        if (!cesdk.engine.block.isAllowedByScope(id, 'fill/change')) return;\n\n        const currentMetadata = metadata.get(id);\n\n        const isLoading = currentMetadata.status === 'PROCESSING';\n        const isDisabled =\n          currentMetadata.status === 'PENDING' ||\n          currentMetadata.status === 'PROCESSING' ||\n          engine.block.getState(id)?.type === 'Pending';\n\n        let loadingProgress: number | undefined;\n        if (isLoading && currentMetadata.progress) {\n          const { current, total } = currentMetadata.progress;\n          loadingProgress = (current / total) * 100;\n        }\n\n        const buttonId = `${componentId}.button`;\n        Button(buttonId, {\n          icon: options.icon,\n          label,\n          variant,\n          isLoading,\n          isDisabled,\n          loadingProgress,\n          onClick: () => {\n            if (\n              currentMetadata.status === 'IDLE' ||\n              currentMetadata.status === 'ERROR' ||\n              currentMetadata.status === 'PROCESSED'\n            ) {\n              metadata.set(id, {\n                status: 'PENDING'\n              });\n            }\n          }\n        });\n      }\n    );\n  });\n\n  return {\n    canvasMenuComponentId,\n    dockComponentId,\n    translationsKeys: {\n      inspectorBarLabel,\n      navigationBarLabel,\n      canvasBarLabel,\n      canvasMenuLabel,\n      dockLabel\n    }\n  };\n}\n", "import { type RGBAColor } from '@cesdk/cesdk-js';\n\nconst HEX_COLOR_PATTERN = new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, 'i');\nconst HEX_SINGLE_CHAR_COMPONENTS_PATTERN = new RegExp(/[A-Fa-f0-9]{1}/, 'g');\nconst HEX_DOUBLE_CHAR_COMPONENTS_PATTERN = new RegExp(/[A-Fa-f0-9]{2}/, 'g');\n\n/** @public */\nexport const rgbaToHex = (rgba: RGBAColor, includeAlpha = false): string => {\n  const { r, g, b, a } = rgba;\n  const rByte = Math.round(255 * r);\n  const gByte = Math.round(255 * g);\n  const bByte = Math.round(255 * b);\n  const aByte = Math.round(255 * a);\n  const byteToHex = (byte: number) => {\n    return byte.toString(16).padStart(2, '0');\n  };\n  return `#${byteToHex(rByte)}${byteToHex(gByte)}${byteToHex(bByte)}${\n    includeAlpha ? byteToHex(aByte) : ''\n  }`;\n};\n\n/** @public */\nexport const hexToRgba = (hexString: string): RGBAColor => {\n  const rgbaHexToColor = (\n    r: string,\n    g: string,\n    b: string,\n    a: string | undefined,\n    max: number\n  ) => {\n    return {\n      r: parseInt(r, 16) / max,\n      g: parseInt(g, 16) / max,\n      b: parseInt(b, 16) / max,\n      a: a === undefined ? 1 : parseInt(a, 16) / max\n    };\n  };\n\n  if (hexString.startsWith('#')) {\n    if (hexString.length === 4 || hexString.length === 5) {\n      const hexMatch = hexString.match(HEX_SINGLE_CHAR_COMPONENTS_PATTERN);\n      if (hexMatch) {\n        const [r, g, b, a] = hexMatch;\n        return rgbaHexToColor(r, g, b, a, 15);\n      }\n    }\n    if (hexString.length === 7 || hexString.length === 8) {\n      const hexMatch = hexString.match(HEX_DOUBLE_CHAR_COMPONENTS_PATTERN);\n      if (hexMatch) {\n        const [r, g, b, a] = hexMatch;\n        return rgbaHexToColor(r, g, b, a, 255);\n      }\n    }\n  }\n\n  throw new Error(\n    'Invalid hex string! Allowed RGB formats are \"#FFF\" and \"#FFFFFF\". Allowed RGBA formats are \"#FFFF\" and \"#FFFFFFFF'\n  );\n};\n\n/** @public */\nexport const isValidHexColor = (hexString: string): boolean => {\n  return HEX_COLOR_PATTERN.test(hexString);\n};\n", "import type CreativeEditorSDK from '@cesdk/cesdk-js';\nimport {\n  fillProcessing,\n  type FillProcessingMetadata\n} from '@imgly/plugin-utils';\nimport * as vectorizer from '@imgly/vectorizer';\nimport { throttle } from 'lodash-es';\nimport addAsVectorGroup from './addAsVectorGroup';\nimport { VectorPath } from './types';\n\n// Threshold for the number of paths in the vectorized image before it is considered too complex.\n// Since the CE.SDK does not work well with a large number of grouped paths, we use a very low threshold.\n// Some really simple images might still be grouped, but this is a trade-off to avoid performance issues and useability problems.\nconst THRESHOLD = 5;\nconst TIMEOUT = 30000;\n\n/**\n * Triggers the vectorizer process.\n */\nexport async function processVectorization(\n  cesdk: CreativeEditorSDK,\n  blockId: number,\n  metadata: FillProcessingMetadata,\n  vectorizerConfiguration?: vectorizer.Config,\n  customThreshold?: number,\n  customTimeout?: number\n) {\n  fillProcessing(blockId, cesdk, metadata, {\n    async processFill(metadataState) {\n      const sourceSet = metadataState.initialSourceSet;\n      const imageFileURI = metadataState.initialImageFileURI;\n\n      const input = sourceSet.length > 0 ? sourceSet[0].uri : imageFileURI;\n\n      const config: vectorizer.Config = {\n        signal: AbortSignal.timeout(customTimeout ?? TIMEOUT),\n        ...vectorizerConfiguration,\n        callbacks: {\n          ...(vectorizerConfiguration?.callbacks ?? {}),\n          progress: throttle((key, current, total) => {\n            const currentMetadataInProgress = metadata.get(blockId);\n            if (\n              currentMetadataInProgress.status !== 'PROCESSING' ||\n              !metadata.isConsistent(blockId)\n            )\n              return;\n\n            vectorizerConfiguration?.callbacks?.progress?.(key, current, total);\n            metadata.set(blockId, {\n              ...currentMetadataInProgress,\n              progress: { key, current, total }\n            });\n          }, 100)\n        },\n        options: {\n          drop_transparent: false,\n          ...(vectorizerConfiguration?.options ?? {})\n        }\n      };\n\n      let inputBlob;\n      if (input.startsWith('buffer:')) {\n        const mimeType = await cesdk.engine.editor.getMimeType(input);\n        const length = cesdk.engine.editor.getBufferLength(input);\n        const data = cesdk.engine.editor.getBufferData(input, 0, length);\n        inputBlob = new Blob([data], { type: mimeType });\n      } else {\n        inputBlob = await fetchImageBlob(input);\n      }\n\n      const converter = new vectorizer.SvgConverter(config);\n      await converter.convert(inputBlob);\n\n      const blocks = JSON.parse(converter.to_json());\n      if (blocks.length < (customThreshold ?? THRESHOLD)) {\n        converter.dispose();\n        return blocks as VectorPath[];\n      } else {\n        const svg = converter.to_svg();\n        const blob = new Blob([svg], { type: 'image/svg+xml' });\n        const uploaded = await uploadBlob(blob, input, cesdk);\n\n        converter.dispose();\n        return uploaded;\n      }\n    },\n\n    commitProcessing(data, metadataState) {\n      if (typeof data === 'string') {\n        const fillId = metadataState.fillId;\n        cesdk.engine.block.setString(fillId, 'fill/image/imageFileURI', data);\n        cesdk.engine.block.setSourceSet(fillId, 'fill/image/sourceSet', []);\n        // TODO: Generate a thumb/preview uri\n        cesdk.engine.block.setString(fillId, 'fill/image/previewFileURI', '');\n      } else {\n        return addAsVectorGroup(blockId, data, cesdk);\n      }\n    }\n  });\n}\n\nasync function uploadBlob(\n  blob: Blob,\n  initialUri: string,\n  cesdk: CreativeEditorSDK\n) {\n  const pathname = new URL(initialUri).pathname;\n  const parts = pathname.split('/');\n  const extension = mimeTypeToExtension(blob.type);\n  const filename =\n    parts[parts.length - 1]?.split('.')?.[0] ?? 'vectorized-image';\n  const filenameWithExtension = `${filename}.${extension}`;\n\n  const uploadedAssets = await cesdk.unstable_upload(\n    new File([blob], filenameWithExtension, { type: blob.type }),\n    () => {\n      // TODO Delegate process to UI component\n    }\n  );\n\n  const url = uploadedAssets.meta?.uri;\n  if (url == null) {\n    throw new Error('Could not upload processed fill');\n  }\n  return url;\n}\n\nfunction mimeTypeToExtension(mimeType: string): string {\n  switch (mimeType) {\n    case 'image/jpeg':\n      return 'jpg';\n    case 'image/png':\n      return 'png';\n    case 'image/svg+xml':\n      return 'svg';\n    default:\n      return 'jpg';\n  }\n}\n\nasync function fetchImageBlob(uri: string): Promise<Blob> {\n  return fetch(uri).then((response) => response.blob());\n}\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nexport default baseTrim;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nexport default now;\n", "import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nexport default debounce;\n", "import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nexport default throttle;\n", "import { CreativeEngine } from '@cesdk/cesdk-js';\nimport { VectorPath } from './types';\n\nconst createVectorPathBlocks = (\n  engine: CreativeEngine,\n  blocks: VectorPath[]\n) => {\n  const blockIds = blocks.map((block: any) => {\n    const id = createVectorPathBlock(engine, block);\n\n    return id;\n  });\n\n  return blockIds;\n};\n\nconst createVectorPathBlock = (engine: CreativeEngine, block: VectorPath) => {\n  const path = block.shape.path;\n  const color = block.fill.color;\n  const blockId = engine.block.create('//ly.img.ubq/graphic');\n  engine.block.setKind(blockId, 'shape');\n  const shape = engine.block.createShape('//ly.img.ubq/shape/vector_path');\n  engine.block.setShape(blockId, shape);\n\n  engine.block.setString(shape, 'vector_path/path', path);\n  engine.block.setFloat(shape, 'vector_path/width', block.transform.width);\n  engine.block.setFloat(shape, 'vector_path/height', block.transform.height);\n\n  const fill = engine.block.createFill('color');\n  engine.block.setColor(fill, 'fill/color/value', {\n    r: color[0],\n    g: color[1],\n    b: color[2],\n    a: color[3]\n  });\n  engine.block.setFill(blockId, fill);\n  engine.block.setFloat(blockId, 'width', block.transform.width);\n  engine.block.setFloat(blockId, 'height', block.transform.height);\n  engine.block.setPositionX(blockId, block.transform.x);\n  engine.block.setPositionY(blockId, block.transform.y);\n  return blockId;\n};\n\nexport default createVectorPathBlocks;\n", "import CreativeEditorSDK from '@cesdk/cesdk-js';\nimport createVectorPathBlocks from './createVectorPathBlocks';\nimport { VectorPath } from './types';\n\nfunction addAsVectorGroup(\n  blockId: number,\n  vectorPaths: VectorPath[],\n  cesdk: CreativeEditorSDK\n): number | void {\n  const engine = cesdk.engine;\n\n  const blockIds = createVectorPathBlocks(engine, vectorPaths);\n\n  const origRotation = engine.block.getRotation(blockId);\n  const origX = engine.block.getPositionX(blockId);\n  const origY = engine.block.getPositionY(blockId);\n  const origSelected = engine.block.isSelected(blockId);\n\n  switch (engine.block.getType(blockId)) {\n    case '//ly.img.ubq/page': {\n      // this has been disabled\n      const parentId = blockId;\n      const containerId = engine.block.group(blockIds);\n      engine.block.appendChild(parentId, containerId);\n      const scale =\n        engine.block.getFrameWidth(blockId) /\n        engine.block.getFrameWidth(containerId);\n      engine.block.setPositionX(containerId, origX);\n      engine.block.setPositionY(containerId, origY);\n      engine.block.setRotation(containerId, origRotation);\n      engine.block.scale(containerId, scale);\n      engine.block.setFillEnabled(parentId, false);\n      engine.block.setSelected(containerId, origSelected);\n      break;\n    }\n    case '//ly.img.ubq/graphic':\n    default: {\n      // replace the current block with the a new group of the vectors\n      const parentId = engine.block.getParent(blockId)!;\n      const containerId = engine.block.group(blockIds);\n      engine.block.appendChild(parentId, containerId);\n      const scale =\n        engine.block.getFrameWidth(blockId) /\n        engine.block.getFrameWidth(containerId);\n      engine.block.setPositionX(containerId, origX);\n      engine.block.setPositionY(containerId, origY);\n      engine.block.setRotation(containerId, origRotation);\n      engine.block.scale(containerId, scale);\n      engine.block.destroy(blockId);\n      engine.block.setSelected(containerId, origSelected);\n      return containerId;\n    }\n  }\n}\n\nexport default addAsVectorGroup;\n", "import { type Config } from '@imgly/vectorizer';\n\nimport {\n  initializeFillProcessing,\n  registerFillProcessingComponents,\n  type UserInterfaceConfiguration\n} from '@imgly/plugin-utils';\n\nimport CreativeEditorSDK, { EditorPlugin } from '@cesdk/cesdk-js';\nimport { processVectorization } from './processVectorization';\n\nexport const PLUGIN_ID = '@imgly/plugin-vectorizer-web';\n\nexport interface PluginConfiguration {\n  ui?: UserInterfaceConfiguration;\n  /**\n   * Configuration for the vectorizer.\n   */\n  vectorizer?: Config;\n\n  /**\n   * The maximal number of paths for which we create a group instead of\n   * inserting a SVG file\n   */\n  groupingThreshold?: number;\n\n  /**\n   * Timeout in milliseconds for the vectorization process.\n   */\n  timeout?: number;\n}\n\nexport default (\n  pluginConfiguration: PluginConfiguration = {}\n): Omit<EditorPlugin, 'name' | 'version'> => {\n  return {\n    initialize({ cesdk }) {\n      if (cesdk == null) return;\n\n      addIconSet(cesdk);\n\n      initializeFillProcessing(cesdk, {\n        pluginId: PLUGIN_ID,\n        process: (blockId, metadata) => {\n          processVectorization(\n            cesdk,\n            blockId,\n            metadata,\n            pluginConfiguration?.vectorizer,\n            pluginConfiguration?.groupingThreshold,\n            pluginConfiguration?.timeout\n          );\n        }\n      });\n\n      const { translationsKeys } = registerFillProcessingComponents(cesdk, {\n        pluginId: PLUGIN_ID,\n        icon: '@imgly/icons/Vectorize',\n        locations: pluginConfiguration.ui?.locations\n      });\n\n      cesdk.setTranslations({\n        en: {\n          [translationsKeys.inspectorBarLabel]: 'Vectorizer',\n          [translationsKeys.navigationBarLabel]: 'Vectorizer',\n          [translationsKeys.canvasBarLabel]: 'Vectorizer',\n          [translationsKeys.canvasMenuLabel]: 'Vectorizer',\n          [translationsKeys.dockLabel]: 'Vectorizer'\n        }\n      });\n    }\n  };\n};\n\nfunction addIconSet(cesdk: CreativeEditorSDK) {\n  cesdk.ui.addIconSet(\n    '@imgly/plugin/vectorizer',\n    `\n        <svg>\n          <symbol\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            viewBox=\"0 0 24 24\"\n            id=\"@imgly/icons/Vectorize\"\n          >\n          <rect x=\"11\" y=\"2\" width=\"2\" height=\"20\" fill=\"currentColor\"/>\n          <path d=\"M13.6776 5.26764L19.9611 12L13.6776 18.7324L15.3224 20.2676L23.0389 12L15.3224 3.73242L13.6776 5.26764Z\" fill=\"currentColor\"/>\n          <path d=\"M4 10.5H1V13.5H4V16.5H7V19.5H10V16.5H7V13.5H4V10.5Z\" fill=\"currentColor\"/>\n          <path d=\"M4 10.5V7.50003H7V10.5H4Z\" fill=\"currentColor\"/>\n          <path d=\"M7 7.50003V4.50003H10V7.50003H7Z\" fill=\"currentColor\"/>\n          </symbol>\n        </svg>\n      `\n  );\n}\n", "import plugin, { PLUGIN_ID, type PluginConfiguration } from './plugin';\n\nconst Plugin = (pluginConfiguration?: PluginConfiguration) => ({\n  name: PLUGIN_ID,\n  version: PLUGIN_VERSION,\n  ...plugin(pluginConfiguration)\n});\n\nexport default Plugin;\n"],
  "mappings": "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",
  "names": ["Metadata", "engine", "key", "blockId", "value", "Metadata_default", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "root_default", "Symbol", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "isOwn", "tag", "unmasked", "result", "getRawTag_default", "objectToString", "objectToString_default", "nullTag", "undefinedTag", "baseGetTag", "baseGetTag_default", "isObjectLike", "isObjectLike_default", "isArray", "isArray_default", "isObject", "type", "isObject_default", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "isFunction_default", "coreJsData", "coreJsData_default", "maskSrcKey", "uid", "isMasked", "func", "isMasked_default", "funcProto", "funcToString", "toSource", "toSource_default", "reRegExpChar", "reIsHostCtor", "reIsNative", "baseIsNative", "pattern", "baseIsNative_default", "getValue", "object", "getValue_default", "getNative", "getNative_default", "WeakMap", "WeakMap_default", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "length", "isIndex_default", "eq", "other", "eq_default", "isLength", "isLength_default", "isArrayLike", "isArrayLike_default", "isPrototype", "Ctor", "proto", "isPrototype_default", "baseTimes", "n", "iteratee", "index", "baseTimes_default", "argsTag", "baseIsArguments", "baseIsArguments_default", "propertyIsEnumerable", "isArguments", "isArguments_default", "stubFalse", "stubFalse_default", "freeExports", "freeModule", "moduleExports", "Buffer", "nativeIsBuffer", "isBuffer", "isBuffer_default", "arrayTag", "boolTag", "dateTag", "errorTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "baseIsTypedArray_default", "baseUnary", "baseUnary_default", "freeProcess", "nodeUtil", "types", "nodeUtil_default", "nodeIsTypedArray", "isTypedArray", "isTypedArray_default", "arrayLikeKeys", "inherited", "isArr", "isArg", "isBuff", "isType", "skipIndexes", "arrayLikeKeys_default", "overArg", "transform", "arg", "overArg_default", "nativeKeys", "nativeKeys_default", "baseKeys", "baseKeys_default", "keys", "keys_default", "nativeCreate", "nativeCreate_default", "hashClear", "hashClear_default", "hashDelete", "hashDelete_default", "HASH_UNDEFINED", "hashGet", "data", "hashGet_default", "hashHas", "hashHas_default", "hashSet", "hashSet_default", "Hash", "entries", "entry", "Hash_default", "listCacheClear", "listCacheClear_default", "assocIndexOf", "array", "assocIndexOf_default", "arrayProto", "splice", "listCacheDelete", "lastIndex", "listCacheDelete_default", "listCacheGet", "listCacheGet_default", "listCacheHas", "listCacheHas_default", "listCacheSet", "listCacheSet_default", "ListCache", "ListCache_default", "Map", "Map_default", "mapCacheClear", "mapCacheClear_default", "isKeyable", "isKeyable_default", "getMapData", "map", "getMapData_default", "mapCacheDelete", "mapCacheDelete_default", "mapCacheGet", "mapCacheGet_default", "mapCacheHas", "mapCacheHas_default", "mapCacheSet", "size", "mapCacheSet_default", "MapCache", "MapCache_default", "arrayPush", "values", "offset", "arrayPush_default", "stackClear", "stackClear_default", "stackDelete", "stackDelete_default", "stackGet", "stackGet_default", "stackHas", "stackHas_default", "LARGE_ARRAY_SIZE", "stackSet", "pairs", "stackSet_default", "Stack", "Stack_default", "arrayFilter", "predicate", "resIndex", "arrayFilter_default", "stubArray", "stubArray_default", "nativeGetSymbols", "getSymbols", "symbol", "getSymbols_default", "baseGetAllKeys", "keysFunc", "symbolsFunc", "baseGetAllKeys_default", "getAllKeys", "getAllKeys_default", "DataView", "DataView_default", "Promise", "Promise_default", "Set", "Set_default", "promiseTag", "dataViewCtorString", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "getTag", "ctorString", "getTag_default", "Uint8Array", "Uint8Array_default", "setCacheAdd", "setCacheAdd_default", "setCacheHas", "setCacheHas_default", "SetCache", "SetCache_default", "arraySome", "arraySome_default", "cacheHas", "cache", "cacheHas_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "equalArrays", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "arrLength", "othLength", "arrStacked", "othStacked", "seen", "arrValue", "othValue", "compared", "othIndex", "equalArrays_default", "mapToArray", "mapToArray_default", "setToArray", "set", "setToArray_default", "symbolTag", "symbolProto", "symbolValueOf", "equalByTag", "convert", "stacked", "equalByTag_default", "equalObjects", "objProps", "objLength", "othProps", "objStacked", "skipCtor", "objValue", "objCtor", "othCtor", "equalObjects_default", "baseIsEqualDeep", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "baseIsEqualDeep_default", "baseIsEqual", "baseIsEqual_default", "isEqual", "isEqual_default", "ImageProcessingMetadata", "metadata", "fillId", "sourceSet", "imageFileURI", "initialSourceSet", "initialImageFileURI", "initialPreviewFileURI", "FillProcessingMetadata_default", "fillProcessing", "cesdk", "processor", "blockApi", "status", "processedData", "metadataStateProcessed", "blockIdOrVoid", "error", "message", "fillProcessing_default", "getFeatureId", "pluginId", "getCanvasMenuComponentIds", "getDockComponentIds", "getInspectorBarComponentIds", "getNavigationBarComponentIds", "getCanvasBarComponentIds", "getI18nCanvasMenuLabel", "getI18nDockLabel", "getI18nInspectorBarLabel", "getI18nNavigationBarLabel", "getI18nCanvasBarLabel", "handleFillProcessing", "process", "featureId", "enableFeatures", "events", "e", "id", "selectedIds", "selectedId", "fileUri", "registerFillProcessingComponents", "options", "locations", "canvasMenuLabel", "canvasMenuComponentIds", "canvasMenuComponentId", "dockLabel", "dockComponentIds", "dockComponentId", "inspectorBarLabel", "inspectorBarComponentIds", "inspectorBarComponentId", "navigationBarLabel", "navigationBarComponentIds", "navigationBarComponentId", "canvasBarLabel", "canvasBarComponentIds", "canvasBarComponentId", "Button", "isDisabled", "isLoading", "loadingProgress", "currentMetadata", "current", "total", "buttonId", "componentIds", "label", "variant", "componentId", "HEX_COLOR_PATTERN", "HEX_SINGLE_CHAR_COMPONENTS_PATTERN", "HEX_DOUBLE_CHAR_COMPONENTS_PATTERN", "vectorizer", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "freeGlobal_default", "root_default", "Symbol", "root_default", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "Symbol_default", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "getRawTag_default", "objectProto", "nativeObjectToString", "objectToString", "value", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag", "Symbol_default", "baseGetTag", "value", "getRawTag_default", "objectToString_default", "baseGetTag_default", "isObjectLike", "value", "isObjectLike_default", "symbolTag", "isSymbol", "value", "isObjectLike_default", "baseGetTag_default", "isSymbol_default", "reWhitespace", "trimmedEndIndex", "string", "index", "trimmedEndIndex_default", "reTrimStart", "baseTrim", "string", "trimmedEndIndex_default", "baseTrim_default", "isObject", "value", "type", "isObject_default", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "isSymbol_default", "isObject_default", "other", "baseTrim_default", "isBinary", "toNumber_default", "now", "root_default", "now_default", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "toNumber_default", "isObject_default", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "now_default", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "debounce_default", "FUNC_ERROR_TEXT", "throttle", "func", "wait", "options", "leading", "trailing", "isObject_default", "debounce_default", "throttle_default", "createVectorPathBlocks", "engine", "blocks", "block", "createVectorPathBlock", "path", "color", "blockId", "shape", "fill", "createVectorPathBlocks_default", "addAsVectorGroup", "blockId", "vectorPaths", "cesdk", "engine", "blockIds", "createVectorPathBlocks_default", "origRotation", "origX", "origY", "origSelected", "parentId", "containerId", "scale", "addAsVectorGroup_default", "THRESHOLD", "TIMEOUT", "processVectorization", "cesdk", "blockId", "metadata", "vectorizerConfiguration", "customThreshold", "customTimeout", "ws", "metadataState", "sourceSet", "imageFileURI", "input", "config", "throttle_default", "key", "current", "total", "currentMetadataInProgress", "inputBlob", "mimeType", "length", "data", "fetchImageBlob", "converter", "blocks", "svg", "blob", "uploaded", "uploadBlob", "fillId", "addAsVectorGroup_default", "initialUri", "parts", "extension", "mimeTypeToExtension", "filenameWithExtension", "url", "uri", "response", "PLUGIN_ID", "plugin_default", "pluginConfiguration", "cesdk", "addIconSet", "fr", "blockId", "metadata", "processVectorization", "translationsKeys", "ir", "Plugin", "pluginConfiguration", "PLUGIN_ID", "plugin_default", "src_default"]
}
