{"version":3,"file":"bank-receipt-reader.cjs","sources":["../node_modules/regenerator-runtime/runtime.js","../node_modules/tesseract.js/src/utils/getId.js","../node_modules/tesseract.js/src/createJob.js","../node_modules/tesseract.js/src/utils/log.js","../node_modules/tesseract.js/src/createScheduler.js","../node_modules/tesseract.js/src/utils/getEnvironment.js","../node_modules/tesseract.js/src/utils/resolvePaths.js","../node_modules/tesseract.js/src/constants/OEM.js","../node_modules/tesseract.js/src/constants/defaultOptions.js","../node_modules/tesseract.js/src/worker/browser/defaultOptions.js","../node_modules/tesseract.js/src/worker/browser/spawnWorker.js","../node_modules/tesseract.js/src/worker/browser/terminateWorker.js","../node_modules/tesseract.js/src/worker/browser/onMessage.js","../node_modules/tesseract.js/src/worker/browser/send.js","../node_modules/tesseract.js/src/worker/browser/loadImage.js","../node_modules/tesseract.js/src/worker/browser/index.js","../node_modules/tesseract.js/src/createWorker.js","../node_modules/tesseract.js/src/Tesseract.js","../node_modules/tesseract.js/src/constants/languages.js","../node_modules/tesseract.js/src/constants/PSM.js","../node_modules/tesseract.js/src/index.js","../src/processors/base-processor.js","../src/processors/afirme/afirme-spei-processor.js","../src/processors/banbajio/banbajio-spei-processor.js","../src/processors/banorte/banorte-spei-processor.js","../src/processors/banorte/banorte-third-party-processor.js","../src/processors/banregio/banregio-spei-processor.js","../src/processors/banregio/banregio-third-party-processor.js","../src/processors/bbva/bbva-spei-processor.js","../src/processors/bbva/bbva-third-party-processor.js","../src/processors/hsbc/hsbc-spei-processor.js","../src/processors/santander/santander-spei-processor.js","../src/processors/santander/santander-third-party-processor.js","../src/processors/scotiabank/scotiabank-spei-processor.js","../src/bank-receipt-reader.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n  defineProperty(\n    GeneratorFunctionPrototype,\n    \"constructor\",\n    { value: GeneratorFunction, configurable: true }\n  );\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    defineProperty(this, \"_invoke\", { value: enqueue });\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method;\n    var method = delegate.iterator[methodName];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method, or a missing .next mehtod, always terminate the\n      // yield* loop.\n      context.delegate = null;\n\n      // Note: [\"return\"] must be used for ES3 parsing compatibility.\n      if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n        // If the delegate iterator has a return method, give it a\n        // chance to clean up.\n        context.method = \"return\";\n        context.arg = undefined;\n        maybeInvokeDelegate(delegate, context);\n\n        if (context.method === \"throw\") {\n          // If maybeInvokeDelegate(context) changed context.method from\n          // \"return\" to \"throw\", let that override the TypeError below.\n          return ContinueSentinel;\n        }\n      }\n      if (methodName !== \"return\") {\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a '\" + methodName + \"' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(val) {\n    var object = Object(val);\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","'use strict';\n\nmodule.exports = (prefix, cnt) => (\n  `${prefix}-${cnt}-${Math.random().toString(16).slice(3, 8)}`\n);\n","'use strict';\n\nconst getId = require('./utils/getId');\n\nlet jobCounter = 0;\n\nmodule.exports = ({\n  id: _id,\n  action,\n  payload = {},\n}) => {\n  let id = _id;\n  if (typeof id === 'undefined') {\n    id = getId('Job', jobCounter);\n    jobCounter += 1;\n  }\n\n  return {\n    id,\n    action,\n    payload,\n  };\n};\n","'use strict';\n\nlet logging = false;\n\nexports.logging = logging;\n\nexports.setLogging = (_logging) => {\n  logging = _logging;\n};\n\nexports.log = (...args) => (logging ? console.log.apply(this, args) : null);\n","'use strict';\n\nconst createJob = require('./createJob');\nconst { log } = require('./utils/log');\nconst getId = require('./utils/getId');\n\nlet schedulerCounter = 0;\n\nmodule.exports = () => {\n  const id = getId('Scheduler', schedulerCounter);\n  const workers = {};\n  const runningWorkers = {};\n  let jobQueue = [];\n\n  schedulerCounter += 1;\n\n  const getQueueLen = () => jobQueue.length;\n  const getNumWorkers = () => Object.keys(workers).length;\n\n  const dequeue = () => {\n    if (jobQueue.length !== 0) {\n      const wIds = Object.keys(workers);\n      for (let i = 0; i < wIds.length; i += 1) {\n        if (typeof runningWorkers[wIds[i]] === 'undefined') {\n          jobQueue[0](workers[wIds[i]]);\n          break;\n        }\n      }\n    }\n  };\n\n  const queue = (action, payload) => (\n    new Promise((resolve, reject) => {\n      const job = createJob({ action, payload });\n      jobQueue.push(async (w) => {\n        jobQueue.shift();\n        runningWorkers[w.id] = job;\n        try {\n          resolve(await w[action].apply(this, [...payload, job.id]));\n        } catch (err) {\n          reject(err);\n        } finally {\n          delete runningWorkers[w.id];\n          dequeue();\n        }\n      });\n      log(`[${id}]: Add ${job.id} to JobQueue`);\n      log(`[${id}]: JobQueue length=${jobQueue.length}`);\n      dequeue();\n    })\n  );\n\n  const addWorker = (w) => {\n    workers[w.id] = w;\n    log(`[${id}]: Add ${w.id}`);\n    log(`[${id}]: Number of workers=${getNumWorkers()}`);\n    dequeue();\n    return w.id;\n  };\n\n  const addJob = async (action, ...payload) => {\n    if (getNumWorkers() === 0) {\n      throw Error(`[${id}]: You need to have at least one worker before adding jobs`);\n    }\n    return queue(action, payload);\n  };\n\n  const terminate = async () => {\n    Object.keys(workers).forEach(async (wid) => {\n      await workers[wid].terminate();\n    });\n    jobQueue = [];\n  };\n\n  return {\n    addWorker,\n    addJob,\n    terminate,\n    getQueueLen,\n    getNumWorkers,\n  };\n};\n","'use strict';\n\nmodule.exports = (key) => {\n  const env = {};\n\n  if (typeof WorkerGlobalScope !== 'undefined') {\n    env.type = 'webworker';\n  } else if (typeof document === 'object') {\n    env.type = 'browser';\n  } else if (typeof process === 'object' && typeof require === 'function') {\n    env.type = 'node';\n  }\n\n  if (typeof key === 'undefined') {\n    return env;\n  }\n\n  return env[key];\n};\n","'use strict';\n\nconst isBrowser = require('./getEnvironment')('type') === 'browser';\n\nconst resolveURL = isBrowser ? s => (new URL(s, window.location.href)).href : s => s; // eslint-disable-line\n\nmodule.exports = (options) => {\n  const opts = { ...options };\n  ['corePath', 'workerPath', 'langPath'].forEach((key) => {\n    if (options[key]) {\n      opts[key] = resolveURL(opts[key]);\n    }\n  });\n  return opts;\n};\n","'use strict';\n\n/*\n * OEM = OCR Engine Mode, and there are 4 possible modes.\n *\n * By default tesseract.js uses LSTM_ONLY mode.\n *\n */\nmodule.exports = {\n  TESSERACT_ONLY: 0,\n  LSTM_ONLY: 1,\n  TESSERACT_LSTM_COMBINED: 2,\n  DEFAULT: 3,\n};\n","'use strict';\n\nmodule.exports = {\n  /*\n   * Use BlobURL for worker script by default\n   * TODO: remove this option\n   *\n   */\n  workerBlobURL: true,\n  logger: () => {},\n};\n","'use strict';\n\nconst version = require('../../../package.json').version;\nconst defaultOptions = require('../../constants/defaultOptions');\n\n/*\n * Default options for browser worker\n */\nmodule.exports = {\n  ...defaultOptions,\n  workerPath: `https://cdn.jsdelivr.net/npm/tesseract.js@v${version}/dist/worker.min.js`,\n};\n","'use strict';\n\n/**\n * spawnWorker\n *\n * @name spawnWorker\n * @function create a new Worker in browser\n * @access public\n */\nmodule.exports = ({ workerPath, workerBlobURL }) => {\n  let worker;\n  if (Blob && URL && workerBlobURL) {\n    const blob = new Blob([`importScripts(\"${workerPath}\");`], {\n      type: 'application/javascript',\n    });\n    worker = new Worker(URL.createObjectURL(blob));\n  } else {\n    worker = new Worker(workerPath);\n  }\n\n  return worker;\n};\n","'use strict';\n\n/**\n * terminateWorker\n *\n * @name terminateWorker\n * @function terminate worker\n * @access public\n */\nmodule.exports = (worker) => {\n  worker.terminate();\n};\n","'use strict';\n\nmodule.exports = (worker, handler) => {\n  worker.onmessage = ({ data }) => { // eslint-disable-line\n    handler(data);\n  };\n};\n","'use strict';\n\n/**\n * send\n *\n * @name send\n * @function send packet to worker and create a job\n * @access public\n */\nmodule.exports = async (worker, packet) => {\n  worker.postMessage(packet);\n};\n","'use strict';\n\n/**\n * readFromBlobOrFile\n *\n * @name readFromBlobOrFile\n * @function\n * @access private\n */\nconst readFromBlobOrFile = (blob) => (\n  new Promise((resolve, reject) => {\n    const fileReader = new FileReader();\n    fileReader.onload = () => {\n      resolve(fileReader.result);\n    };\n    fileReader.onerror = ({ target: { error: { code } } }) => {\n      reject(Error(`File could not be read! Code=${code}`));\n    };\n    fileReader.readAsArrayBuffer(blob);\n  })\n);\n\n/**\n * loadImage\n *\n * @name loadImage\n * @function load image from different source\n * @access private\n */\nconst loadImage = async (image) => {\n  let data = image;\n  if (typeof image === 'undefined') {\n    return 'undefined';\n  }\n\n  if (typeof image === 'string') {\n    // Base64 Image\n    if (/data:image\\/([a-zA-Z]*);base64,([^\"]*)/.test(image)) {\n      data = atob(image.split(',')[1])\n        .split('')\n        .map((c) => c.charCodeAt(0));\n    } else {\n      const resp = await fetch(image);\n      data = await resp.arrayBuffer();\n    }\n  } else if (typeof HTMLElement !== 'undefined' && image instanceof HTMLElement) {\n    if (image.tagName === 'IMG') {\n      data = await loadImage(image.src);\n    }\n    if (image.tagName === 'VIDEO') {\n      data = await loadImage(image.poster);\n    }\n    if (image.tagName === 'CANVAS') {\n      await new Promise((resolve) => {\n        image.toBlob(async (blob) => {\n          data = await readFromBlobOrFile(blob);\n          resolve();\n        });\n      });\n    }\n  } else if (typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas) {\n    const blob = await image.convertToBlob();\n    data = await readFromBlobOrFile(blob);\n  } else if (image instanceof File || image instanceof Blob) {\n    data = await readFromBlobOrFile(image);\n  }\n\n  return new Uint8Array(data);\n};\n\nmodule.exports = loadImage;\n","'use strict';\n\n/**\n *\n * Tesseract Worker adapter for browser\n *\n * @fileoverview Tesseract Worker adapter for browser\n * @author Kevin Kwok <antimatter15@gmail.com>\n * @author Guillermo Webster <gui@mit.edu>\n * @author Jerome Wu <jeromewus@gmail.com>\n */\nconst defaultOptions = require('./defaultOptions');\nconst spawnWorker = require('./spawnWorker');\nconst terminateWorker = require('./terminateWorker');\nconst onMessage = require('./onMessage');\nconst send = require('./send');\nconst loadImage = require('./loadImage');\n\nmodule.exports = {\n  defaultOptions,\n  spawnWorker,\n  terminateWorker,\n  onMessage,\n  send,\n  loadImage,\n};\n","'use strict';\n\nconst resolvePaths = require('./utils/resolvePaths');\nconst createJob = require('./createJob');\nconst { log } = require('./utils/log');\nconst getId = require('./utils/getId');\nconst OEM = require('./constants/OEM');\nconst {\n  defaultOptions,\n  spawnWorker,\n  terminateWorker,\n  onMessage,\n  loadImage,\n  send,\n} = require('./worker/node');\n\nlet workerCounter = 0;\n\nmodule.exports = async (langs = 'eng', oem = OEM.LSTM_ONLY, _options = {}, config = {}) => {\n  const id = getId('Worker', workerCounter);\n  const {\n    logger,\n    errorHandler,\n    ...options\n  } = resolvePaths({\n    ...defaultOptions,\n    ..._options,\n  });\n  const promises = {};\n\n  // Current langs, oem, and config file.\n  // Used if the user ever re-initializes the worker using `worker.reinitialize`.\n  const currentLangs = typeof langs === 'string' ? langs.split('+') : langs;\n  let currentOem = oem;\n  let currentConfig = config;\n  const lstmOnlyCore = [OEM.DEFAULT, OEM.LSTM_ONLY].includes(oem) && !options.legacyCore;\n\n  let workerResReject;\n  let workerResResolve;\n  const workerRes = new Promise((resolve, reject) => {\n    workerResResolve = resolve;\n    workerResReject = reject;\n  });\n  const workerError = (event) => { workerResReject(event.message); };\n\n  let worker = spawnWorker(options);\n  worker.onerror = workerError;\n\n  workerCounter += 1;\n\n  const startJob = ({ id: jobId, action, payload }) => (\n    new Promise((resolve, reject) => {\n      log(`[${id}]: Start ${jobId}, action=${action}`);\n      // Using both `action` and `jobId` in case user provides non-unique `jobId`.\n      const promiseId = `${action}-${jobId}`;\n      promises[promiseId] = { resolve, reject };\n      send(worker, {\n        workerId: id,\n        jobId,\n        action,\n        payload,\n      });\n    })\n  );\n\n  const load = () => (\n    console.warn('`load` is depreciated and should be removed from code (workers now come pre-loaded)')\n  );\n\n  const loadInternal = (jobId) => (\n    startJob(createJob({\n      id: jobId, action: 'load', payload: { options: { lstmOnly: lstmOnlyCore, corePath: options.corePath, logging: options.logging } },\n    }))\n  );\n\n  const writeText = (path, text, jobId) => (\n    startJob(createJob({\n      id: jobId,\n      action: 'FS',\n      payload: { method: 'writeFile', args: [path, text] },\n    }))\n  );\n\n  const readText = (path, jobId) => (\n    startJob(createJob({\n      id: jobId,\n      action: 'FS',\n      payload: { method: 'readFile', args: [path, { encoding: 'utf8' }] },\n    }))\n  );\n\n  const removeFile = (path, jobId) => (\n    startJob(createJob({\n      id: jobId,\n      action: 'FS',\n      payload: { method: 'unlink', args: [path] },\n    }))\n  );\n\n  const FS = (method, args, jobId) => (\n    startJob(createJob({\n      id: jobId,\n      action: 'FS',\n      payload: { method, args },\n    }))\n  );\n\n  const loadLanguageInternal = (_langs, jobId) => startJob(createJob({\n    id: jobId,\n    action: 'loadLanguage',\n    payload: {\n      langs: _langs,\n      options: {\n        langPath: options.langPath,\n        dataPath: options.dataPath,\n        cachePath: options.cachePath,\n        cacheMethod: options.cacheMethod,\n        gzip: options.gzip,\n        lstmOnly: [OEM.DEFAULT, OEM.LSTM_ONLY].includes(currentOem)\n          && !options.legacyLang,\n      },\n    },\n  }));\n\n  const initializeInternal = (_langs, _oem, _config, jobId) => (\n    startJob(createJob({\n      id: jobId,\n      action: 'initialize',\n      payload: { langs: _langs, oem: _oem, config: _config },\n    }))\n  );\n\n  const reinitialize = (langs = 'eng', oem, config, jobId) => { // eslint-disable-line\n\n    if (lstmOnlyCore && [OEM.TESSERACT_ONLY, OEM.TESSERACT_LSTM_COMBINED].includes(oem)) throw Error('Legacy model requested but code missing.');\n\n    const _oem = oem || currentOem;\n    currentOem = _oem;\n\n    const _config = config || currentConfig;\n    currentConfig = _config;\n\n    // Only load langs that are not already loaded.\n    // This logic fails if the user downloaded the LSTM-only English data for a language\n    // and then uses `worker.reinitialize` to switch to the Legacy engine.\n    // However, the correct data will still be downloaded after initialization fails\n    // and this can be avoided entirely if the user loads the correct data ahead of time.\n    const langsArr = typeof langs === 'string' ? langs.split('+') : langs;\n    const _langs = langsArr.filter((x) => !currentLangs.includes(x));\n    currentLangs.push(..._langs);\n\n    if (_langs.length > 0) {\n      return loadLanguageInternal(_langs, jobId)\n        .then(() => initializeInternal(langs, _oem, _config, jobId));\n    }\n\n    return initializeInternal(langs, _oem, _config, jobId);\n  };\n\n  const setParameters = (params = {}, jobId) => (\n    startJob(createJob({\n      id: jobId,\n      action: 'setParameters',\n      payload: { params },\n    }))\n  );\n\n  const recognize = async (image, opts = {}, output = {\n    text: true,\n  }, jobId) => (\n    startJob(createJob({\n      id: jobId,\n      action: 'recognize',\n      payload: { image: await loadImage(image), options: opts, output },\n    }))\n  );\n\n  const detect = async (image, jobId) => {\n    if (lstmOnlyCore) throw Error('`worker.detect` requires Legacy model, which was not loaded.');\n\n    return startJob(createJob({\n      id: jobId,\n      action: 'detect',\n      payload: { image: await loadImage(image) },\n    }));\n  };\n\n  const terminate = async () => {\n    if (worker !== null) {\n      /*\n      await startJob(createJob({\n        id: jobId,\n        action: 'terminate',\n      }));\n      */\n      terminateWorker(worker);\n      worker = null;\n    }\n    return Promise.resolve();\n  };\n\n  onMessage(worker, ({\n    workerId, jobId, status, action, data,\n  }) => {\n    const promiseId = `${action}-${jobId}`;\n    if (status === 'resolve') {\n      log(`[${workerId}]: Complete ${jobId}`);\n      promises[promiseId].resolve({ jobId, data });\n      delete promises[promiseId];\n    } else if (status === 'reject') {\n      promises[promiseId].reject(data);\n      delete promises[promiseId];\n      if (action === 'load') workerResReject(data);\n      if (errorHandler) {\n        errorHandler(data);\n      } else {\n        throw Error(data);\n      }\n    } else if (status === 'progress') {\n      logger({ ...data, userJobId: jobId });\n    }\n  });\n\n  const resolveObj = {\n    id,\n    worker,\n    load,\n    writeText,\n    readText,\n    removeFile,\n    FS,\n    reinitialize,\n    setParameters,\n    recognize,\n    detect,\n    terminate,\n  };\n\n  loadInternal()\n    .then(() => loadLanguageInternal(langs))\n    .then(() => initializeInternal(langs, oem, config))\n    .then(() => workerResResolve(resolveObj))\n    .catch(() => {});\n\n  return workerRes;\n};\n","'use strict';\n\nconst createWorker = require('./createWorker');\n\nconst recognize = async (image, langs, options) => {\n  const worker = await createWorker(langs, 1, options);\n  return worker.recognize(image)\n    .finally(async () => {\n      await worker.terminate();\n    });\n};\n\nconst detect = async (image, options) => {\n  const worker = await createWorker('osd', 0, options);\n  return worker.detect(image)\n    .finally(async () => {\n      await worker.terminate();\n    });\n};\n\nmodule.exports = {\n  recognize,\n  detect,\n};\n","'use strict';\n\n/*\n * languages with existing tesseract traineddata\n * https://tesseract-ocr.github.io/tessdoc/Data-Files#data-files-for-version-400-november-29-2016\n */\n\n/**\n * @typedef {object} Languages\n * @property {string} AFR Afrikaans\n * @property {string} AMH Amharic\n * @property {string} ARA Arabic\n * @property {string} ASM Assamese\n * @property {string} AZE Azerbaijani\n * @property {string} AZE_CYRL Azerbaijani - Cyrillic\n * @property {string} BEL Belarusian\n * @property {string} BEN Bengali\n * @property {string} BOD Tibetan\n * @property {string} BOS Bosnian\n * @property {string} BUL Bulgarian\n * @property {string} CAT Catalan; Valencian\n * @property {string} CEB Cebuano\n * @property {string} CES Czech\n * @property {string} CHI_SIM Chinese - Simplified\n * @property {string} CHI_TRA Chinese - Traditional\n * @property {string} CHR Cherokee\n * @property {string} CYM Welsh\n * @property {string} DAN Danish\n * @property {string} DEU German\n * @property {string} DZO Dzongkha\n * @property {string} ELL Greek, Modern (1453-)\n * @property {string} ENG English\n * @property {string} ENM English, Middle (1100-1500)\n * @property {string} EPO Esperanto\n * @property {string} EST Estonian\n * @property {string} EUS Basque\n * @property {string} FAS Persian\n * @property {string} FIN Finnish\n * @property {string} FRA French\n * @property {string} FRK German Fraktur\n * @property {string} FRM French, Middle (ca. 1400-1600)\n * @property {string} GLE Irish\n * @property {string} GLG Galician\n * @property {string} GRC Greek, Ancient (-1453)\n * @property {string} GUJ Gujarati\n * @property {string} HAT Haitian; Haitian Creole\n * @property {string} HEB Hebrew\n * @property {string} HIN Hindi\n * @property {string} HRV Croatian\n * @property {string} HUN Hungarian\n * @property {string} IKU Inuktitut\n * @property {string} IND Indonesian\n * @property {string} ISL Icelandic\n * @property {string} ITA Italian\n * @property {string} ITA_OLD Italian - Old\n * @property {string} JAV Javanese\n * @property {string} JPN Japanese\n * @property {string} KAN Kannada\n * @property {string} KAT Georgian\n * @property {string} KAT_OLD Georgian - Old\n * @property {string} KAZ Kazakh\n * @property {string} KHM Central Khmer\n * @property {string} KIR Kirghiz; Kyrgyz\n * @property {string} KOR Korean\n * @property {string} KUR Kurdish\n * @property {string} LAO Lao\n * @property {string} LAT Latin\n * @property {string} LAV Latvian\n * @property {string} LIT Lithuanian\n * @property {string} MAL Malayalam\n * @property {string} MAR Marathi\n * @property {string} MKD Macedonian\n * @property {string} MLT Maltese\n * @property {string} MSA Malay\n * @property {string} MYA Burmese\n * @property {string} NEP Nepali\n * @property {string} NLD Dutch; Flemish\n * @property {string} NOR Norwegian\n * @property {string} ORI Oriya\n * @property {string} PAN Panjabi; Punjabi\n * @property {string} POL Polish\n * @property {string} POR Portuguese\n * @property {string} PUS Pushto; Pashto\n * @property {string} RON Romanian; Moldavian; Moldovan\n * @property {string} RUS Russian\n * @property {string} SAN Sanskrit\n * @property {string} SIN Sinhala; Sinhalese\n * @property {string} SLK Slovak\n * @property {string} SLV Slovenian\n * @property {string} SPA Spanish; Castilian\n * @property {string} SPA_OLD Spanish; Castilian - Old\n * @property {string} SQI Albanian\n * @property {string} SRP Serbian\n * @property {string} SRP_LATN Serbian - Latin\n * @property {string} SWA Swahili\n * @property {string} SWE Swedish\n * @property {string} SYR Syriac\n * @property {string} TAM Tamil\n * @property {string} TEL Telugu\n * @property {string} TGK Tajik\n * @property {string} TGL Tagalog\n * @property {string} THA Thai\n * @property {string} TIR Tigrinya\n * @property {string} TUR Turkish\n * @property {string} UIG Uighur; Uyghur\n * @property {string} UKR Ukrainian\n * @property {string} URD Urdu\n * @property {string} UZB Uzbek\n * @property {string} UZB_CYRL Uzbek - Cyrillic\n * @property {string} VIE Vietnamese\n * @property {string} YID Yiddish\n */\n\n/**\n  * @type {Languages}\n  */\nmodule.exports = {\n  AFR: 'afr',\n  AMH: 'amh',\n  ARA: 'ara',\n  ASM: 'asm',\n  AZE: 'aze',\n  AZE_CYRL: 'aze_cyrl',\n  BEL: 'bel',\n  BEN: 'ben',\n  BOD: 'bod',\n  BOS: 'bos',\n  BUL: 'bul',\n  CAT: 'cat',\n  CEB: 'ceb',\n  CES: 'ces',\n  CHI_SIM: 'chi_sim',\n  CHI_TRA: 'chi_tra',\n  CHR: 'chr',\n  CYM: 'cym',\n  DAN: 'dan',\n  DEU: 'deu',\n  DZO: 'dzo',\n  ELL: 'ell',\n  ENG: 'eng',\n  ENM: 'enm',\n  EPO: 'epo',\n  EST: 'est',\n  EUS: 'eus',\n  FAS: 'fas',\n  FIN: 'fin',\n  FRA: 'fra',\n  FRK: 'frk',\n  FRM: 'frm',\n  GLE: 'gle',\n  GLG: 'glg',\n  GRC: 'grc',\n  GUJ: 'guj',\n  HAT: 'hat',\n  HEB: 'heb',\n  HIN: 'hin',\n  HRV: 'hrv',\n  HUN: 'hun',\n  IKU: 'iku',\n  IND: 'ind',\n  ISL: 'isl',\n  ITA: 'ita',\n  ITA_OLD: 'ita_old',\n  JAV: 'jav',\n  JPN: 'jpn',\n  KAN: 'kan',\n  KAT: 'kat',\n  KAT_OLD: 'kat_old',\n  KAZ: 'kaz',\n  KHM: 'khm',\n  KIR: 'kir',\n  KOR: 'kor',\n  KUR: 'kur',\n  LAO: 'lao',\n  LAT: 'lat',\n  LAV: 'lav',\n  LIT: 'lit',\n  MAL: 'mal',\n  MAR: 'mar',\n  MKD: 'mkd',\n  MLT: 'mlt',\n  MSA: 'msa',\n  MYA: 'mya',\n  NEP: 'nep',\n  NLD: 'nld',\n  NOR: 'nor',\n  ORI: 'ori',\n  PAN: 'pan',\n  POL: 'pol',\n  POR: 'por',\n  PUS: 'pus',\n  RON: 'ron',\n  RUS: 'rus',\n  SAN: 'san',\n  SIN: 'sin',\n  SLK: 'slk',\n  SLV: 'slv',\n  SPA: 'spa',\n  SPA_OLD: 'spa_old',\n  SQI: 'sqi',\n  SRP: 'srp',\n  SRP_LATN: 'srp_latn',\n  SWA: 'swa',\n  SWE: 'swe',\n  SYR: 'syr',\n  TAM: 'tam',\n  TEL: 'tel',\n  TGK: 'tgk',\n  TGL: 'tgl',\n  THA: 'tha',\n  TIR: 'tir',\n  TUR: 'tur',\n  UIG: 'uig',\n  UKR: 'ukr',\n  URD: 'urd',\n  UZB: 'uzb',\n  UZB_CYRL: 'uzb_cyrl',\n  VIE: 'vie',\n  YID: 'yid',\n};\n","'use strict';\n\n/*\n * PSM = Page Segmentation Mode\n */\nmodule.exports = {\n  OSD_ONLY: '0',\n  AUTO_OSD: '1',\n  AUTO_ONLY: '2',\n  AUTO: '3',\n  SINGLE_COLUMN: '4',\n  SINGLE_BLOCK_VERT_TEXT: '5',\n  SINGLE_BLOCK: '6',\n  SINGLE_LINE: '7',\n  SINGLE_WORD: '8',\n  CIRCLE_WORD: '9',\n  SINGLE_CHAR: '10',\n  SPARSE_TEXT: '11',\n  SPARSE_TEXT_OSD: '12',\n  RAW_LINE: '13',\n};\n","'use strict';\n\n/**\n *\n * Entry point for tesseract.js, should be the entry when bundling.\n *\n * @fileoverview entry point for tesseract.js\n * @author Kevin Kwok <antimatter15@gmail.com>\n * @author Guillermo Webster <gui@mit.edu>\n * @author Jerome Wu <jeromewus@gmail.com>\n */\nrequire('regenerator-runtime/runtime');\nconst createScheduler = require('./createScheduler');\nconst createWorker = require('./createWorker');\nconst Tesseract = require('./Tesseract');\nconst languages = require('./constants/languages');\nconst OEM = require('./constants/OEM');\nconst PSM = require('./constants/PSM');\nconst { setLogging } = require('./utils/log');\n\nmodule.exports = {\n  languages,\n  OEM,\n  PSM,\n  createScheduler,\n  createWorker,\n  setLogging,\n  ...Tesseract,\n};\n","class BaseProcessor {\n    /**\n     * Extracts data from text using all available methods in the processor.\n     * \n     * @param {string} text - The text to extract data from\n     * @param {boolean} skipEmptyLines - Whether to skip empty lines in the text\n     * @returns {object} An object containing all extracted data\n     */\n    extract(text, skipEmptyLines = true) {\n        if (skipEmptyLines) {\n            text = text.split('\\n')\n                .filter(line => line.trim() !== '')\n                .join('\\n');\n        }\n\n        const data = {};\n\n        const methodNames = Object.getOwnPropertyNames(Object.getPrototypeOf(this));\n\n        for (const methodName of methodNames) {\n            if (methodName !== 'constructor' && typeof this[methodName] === 'function' && !methodName.startsWith('_')) {\n                const value = this[methodName](text);\n                if (value !== null && value !== undefined) {\n                    data[methodName] = value;\n                }\n            }\n        }\n\n        return data;\n    }\n\n    /**\n     * Extracts text using multiple patterns\n     * @param {string} text - Text to search in\n     * @param {Array} patterns - Array of regex patterns\n     * @returns {string|null} Extracted text or null if not found\n     */\n    _extractWithPatterns(text, patterns) {\n        if (!text || !patterns) return null;\n\n        const normalizedText = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n        for (const pattern of patterns) {\n            try {\n                const match = normalizedText.match(pattern);\n                if (match && match[1]) {\n                    let result = match[1].trim();\n\n                    if (result.includes('\\n')) {\n                        result = result.split('\\n')[0].trim();\n                    }\n\n                    return result || null;\n                }\n            } catch (error) {\n                console.warn('Error applying pattern:', pattern, error);\n                continue;\n            }\n        }\n        return null;\n    }\n}\n\nexport default BaseProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass AfirmeSpeiProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The account ID or null if not found\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta origen\\s*[A-Za-z0-9\\s\\-]+?\\(\\*\\*\\*\\*(\\d+)\\)/i,\n            /Cuenta origen[^\\(]*\\(\\*\\*\\*\\*(\\d+)\\)/i,\n            /\\(\\*\\*\\*\\*(\\d+)\\)/\n        ];\n\n        for (const pattern of patterns) {\n            const match = text.match(pattern);\n            if (match && match[1]) {\n                return match[1].trim();\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {number|null} The transaction amount as a number or null if not found\n     */\n    amount(text) {\n        const patterns = [\n            /Importe de traspaso\\s*\\$\\s*([0-9,]+\\.\\d{2})\\s*MXP/i,\n            /Importe.*\\$\\s*([0-9,]+\\.\\d{2})\\s*MXP/i,\n            /\\$\\s*([0-9,]+\\.\\d{2})\\s*MXP\\./i,\n            /Importe.*\\$([0-9,]+\\.\\d{2})/i\n        ];\n\n        for (const pattern of patterns) {\n            const match = text.match(pattern);\n            if (match) {\n                const amountString = match[1].replace(/,/g, '');\n                const amount = parseFloat(amountString);\n                return !isNaN(amount) ? amount : null;\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The reference number or null if not found\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia SPE\\s*(\\d+)/i,\n            /Referencia SPE\\s*(\\d{9})/i,\n            /Referencia.*?(\\d{9})/i,\n            /Referencia numérica\\s*(\\d+)/i\n        ];\n\n        for (const pattern of patterns) {\n            const match = text.match(pattern);\n            if (match) {\n                return match[1].trim();\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Extracts the tracking key (clave de rastreo)\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The tracking key or null if not found\n     */\n    tracking_key(text) {\n        const patterns = [\n            /Clave de rastreo\\s*(\\d+)/i,\n            /Clave.*rastreo\\s*(\\d{25,30})/i,\n            /Exitosa\\s*(\\d+)/i\n        ];\n\n        for (const pattern of patterns) {\n            const match = text.match(pattern);\n            if (match) {\n                return match[1].trim();\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Extracts the transaction date\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The transaction date or null if not found\n     */\n    date(text) {\n        const patterns = [\n            /Fecha:\\s*(\\d{2}\\/\\d{2}\\/\\d{2})/i,\n            /Día:\\s*(\\d{2}\\/\\d{2}\\/\\d{2})/i,\n            /Fecha.*?(\\d{2}\\/\\d{2}\\/\\d{2})/i\n        ];\n\n        for (const pattern of patterns) {\n            const match = text.match(pattern);\n            if (match) {\n                return match[1].trim();\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Extracts the beneficiary information (Cuenta destino)\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The beneficiary or null if not found\n     */\n    beneficiary(text) {\n        const patterns = [\n            /Cuenta destino\\s*([A-Za-z0-9\\s\\-]+?)\\s*\\(\\*\\*\\*\\*\\d+\\)/i,\n            /Cuenta destino\\s*([^\\(]+)/i,\n            /SEPSA COMISIONES[^\\(]*\\(\\*\\*\\*\\*(\\d+)\\)/i\n        ];\n\n        for (const pattern of patterns) {\n            const match = text.match(pattern);\n            if (match) {\n                let beneficiary = match[1].trim();\n\n                beneficiary = beneficiary\n                    .replace(/\\s+/g, ' ')\n                    .replace(/\\s*-\\s*\\(\\*\\*\\*\\*\\d+\\)\\s*-\\s*[A-Z]+$/, '')\n                    .replace(/\\s*-\\s*$/, '')\n                    .trim();\n\n                return beneficiary || null;\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Extracts the payment concept\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The concept or null if not found\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto del pago\\s*([A-Za-z0-9\\s]+)(?=Comisión|Referencia|$)/i,\n            /Concepto del pago\\s*([^\\n]+)/i,\n            /PAGO DE SERVICIO/i\n        ];\n\n        for (const pattern of patterns) {\n            const match = text.match(pattern);\n            if (match) {\n                if (pattern.toString().includes('PAGO DE SERVICIO')) {\n                    return 'PAGO DE SERVICIO';\n                }\n\n                const conceptText = match[1].trim();\n\n                if (conceptText.includes('PAGO DE SERVICIO')) {\n                    return 'PAGO DE SERVICIO';\n                }\n                return conceptText;\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Extracts the transaction status\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The status or null if not found\n     */\n    status(text) {\n        if (/Exitosa/i.test(text)) {\n            return 'Exitosa';\n        }\n        if (/Fallida/i.test(text)) {\n            return 'Fallida';\n        }\n        if (/Rechazada/i.test(text)) {\n            return 'Rechazada';\n        }\n        if (/Pendiente/i.test(text)) {\n            return 'Pendiente';\n        }\n        return null;\n    }\n}\n\nexport default AfirmeSpeiProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass BanbajioSpeiProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta Origen:\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     */\n    amount(text) {\n        const patterns = [\n            /Importe:\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia:\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha de Operación:\\s*(\\d{2}-\\w{3}-\\d{4})/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? this._convertDate(result) : null;\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta Destino:\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /Nombre del Beneficiario:\\s*([A-Z\\s]+?)\\s{2,}[A-Z]/i,\n            /Nombre del Beneficiario:\\s*([A-Z\\s]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto de Pago:\\s*([A-Z\\s]+?)\\s{2,}Referencia:/i,\n            /Concepto de Pago:\\s*([A-Z\\s]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the tracking key from the receipt text.\n     */\n    tracking_key(text) {\n        const patterns = [\n            /Clave de Rastreo:\\s*([A-Za-z0-9]+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the destination bank from the receipt text.\n     */\n    destination_bank(text) {\n        const patterns = [\n            /Banco Destino:\\s*([A-Z]+?)\\s{2,}Nombre del Beneficiario:/i,\n            /Banco Destino:\\s*([A-Z]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Converts date from \"09-Sep-2025\" to \"09/09/2025\"\n     */\n    _convertDate(dateString) {\n        if (!dateString) return null;\n\n        const months = {\n            'Ene': '01', 'Jan': '01',\n            'Feb': '02',\n            'Mar': '03',\n            'Abr': '04', 'Apr': '04',\n            'May': '05',\n            'Jun': '06',\n            'Jul': '07',\n            'Ago': '08', 'Aug': '08',\n            'Sep': '09',\n            'Oct': '10',\n            'Nov': '11',\n            'Dic': '12', 'Dec': '12'\n        };\n\n        const parts = dateString.split('-');\n        if (parts.length === 3) {\n            const day = parts[0].padStart(2, '0');\n            const month = months[parts[1]] || '01';\n            const year = parts[2];\n            return `${day}/${month}/${year}`;\n        }\n        return dateString;\n    }\n}\n\nexport default BanbajioSpeiProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass BanorteSpeiProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta\\/ CLABE Ordenante\\s*(\\d+)/i,\n            /Cuenta Ordenante\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     */\n    amount(text) {\n        const patterns = [\n            /Importe a Transferir\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia numérica\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha Aplicación\\s*(\\d{1,2}\\/\\w+\\.\\/\\d{4})/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? this._convertDate(result) : null;\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta\\/ CLABE Beneficiario\\s*(\\d+)/i,\n            /Cuenta Beneficiario\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /Nombre del Beneficiario\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     */\n    concept(text) {\n        const patterns = [\n            /Propósito de la Transferencia\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the tracking key from the receipt text.\n     */\n    tracking_key(text) {\n        const patterns = [\n            /Clave de Rastreo\\s*([A-Za-z0-9]+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the destination bank from the receipt text.\n     */\n    destination_bank(text) {\n        const patterns = [\n            /Banco Destino\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Converts date from \"15/oct./2025\" to \"15/10/2025\"\n     */\n    _convertDate(dateString) {\n        if (!dateString) return null;\n\n        const months = {\n            'ene.': '01', 'feb.': '02', 'mar.': '03', 'abr.': '04',\n            'may.': '05', 'jun.': '06', 'jul.': '07', 'ago.': '08',\n            'sep.': '09', 'oct.': '10', 'nov.': '11', 'dic.': '12'\n        };\n\n        const parts = dateString.split('/');\n        if (parts.length === 3) {\n            const day = parts[0].padStart(2, '0');\n            const month = months[parts[1].toLowerCase()] || '01';\n            const year = parts[2];\n            return `${day}/${month}/${year}`;\n        }\n        return dateString;\n    }\n}\n\nexport default BanorteSpeiProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass BanorteThirdPartyProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta\\/ CLABE Ordenante\\s*(\\d+)/i,\n            /Cuenta Ordenante\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     */\n    amount(text) {\n        const patterns = [\n            /Importe a Transferir\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia numérica\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha Aplicación\\s*(\\d{1,2}\\/\\w+\\.\\/\\d{4})/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? this._convertDate(result) : null;\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta\\/ CLABE Beneficiario\\s*(\\d+)/i,\n            /Cuenta Beneficiario\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /Nombre del Beneficiario\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     */\n    concept(text) {\n        const patterns = [\n            /Propósito de la Transferencia\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the tracking key from the receipt text.\n     */\n    tracking_key(text) {\n        const patterns = [\n            /Clave de Rastreo\\s*([A-Za-z0-9]+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation type from the receipt text.\n     */\n    operation_type(text) {\n        return \"Transferencia a Terceros Banorte\";\n    }\n\n    /**\n     * Converts date from \"07/oct./2025\" to \"07/10/2025\"\n     */\n    _convertDate(dateString) {\n        if (!dateString) return null;\n\n        const months = {\n            'ene.': '01', 'feb.': '02', 'mar.': '03', 'abr.': '04',\n            'may.': '05', 'jun.': '06', 'jul.': '07', 'ago.': '08',\n            'sep.': '09', 'oct.': '10', 'nov.': '11', 'dic.': '12'\n        };\n\n        const parts = dateString.split('/');\n        if (parts.length === 3) {\n            const day = parts[0].padStart(2, '0');\n            const month = months[parts[1].toLowerCase()] || '01';\n            const year = parts[2];\n            return `${day}/${month}/${year}`;\n        }\n        return dateString;\n    }\n}\n\nexport default BanorteThirdPartyProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass BanregioSpeiProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta Origen[^]*?-\\s*(\\*?\\d+)/i,\n            /ASESORES[^]*?-\\s*(\\*?\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     */\n    amount(text) {\n        const patterns = [\n            /\\$([\\d,]+\\.?\\d{2})/i,\n            /Cantidad a Transferir[^]*?\\$([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     */\n    reference(text) {\n        const patterns = [\n            /Número de referencia\\s*(\\d+)/i,\n            /Transferencia\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha de operación SPEI\\s*(\\d{1,2}\\s+\\w+\\s+\\d{4})/i,\n            /Recibo de la transferencia\\s*(\\d{1,2}\\s+\\w+\\s+\\d{4})/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? this._convertDate(result) : null;\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta Destino[^]*?-\\s*(\\d+)/i,\n            /MATERIALES[^]*?-\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /Cuenta Destino[^]*?-\\s*([A-Z\\s\\.]+?)\\s+\\d+/i,\n            /MATERIALES[^]*?SA DE CV/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto de pago\\s*([^\\n\\r]+?)\\s{2,}\\w+/i,\n            /Concepto de pago\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the tracking key from the receipt text.\n     */\n    tracking_key(text) {\n        const patterns = [\n            /(\\d{3}-\\d{2}\\/\\d{2}\\/\\d{4}\\/\\d{2}-[A-Z0-9]+)/,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Converts date from \"10 octubre 2025\" to \"10/10/2025\"\n     */\n    _convertDate(dateString) {\n        if (!dateString) return null;\n\n        const months = {\n            'enero': '01', 'febrero': '02', 'marzo': '03', 'abril': '04',\n            'mayo': '05', 'junio': '06', 'julio': '07', 'agosto': '08',\n            'septiembre': '09', 'octubre': '10', 'noviembre': '11', 'diciembre': '12'\n        };\n\n        const parts = dateString.toLowerCase().split(/\\s+/);\n        if (parts.length >= 3) {\n            const day = parts[0].padStart(2, '0');\n            const month = months[parts[1]] || '01';\n            const year = parts[2];\n            return `${day}/${month}/${year}`;\n        }\n        return dateString;\n    }\n}\n\nexport default BanregioSpeiProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass BanregioThirdPartyProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta Origen[^]*?-\\s*(\\*?\\d+)/i,\n            /ASESORES[^]*?-\\s*(\\*?\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     */\n    amount(text) {\n        const patterns = [\n            /\\$([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     */\n    reference(text) {\n        const anchored =\n            text.match(\n                /Datos\\s+de\\s+tu\\s+operaci[oó]n[\\s\\S]*?([A-Za-z0-9]{6,})\\s*-\\s*\\d{2}-\\d{2}-\\d{4}/i\n            ) ||\n            text.match(\n                /Datos\\s+de\\s+tu\\s+operacion[\\s\\S]*?([A-Za-z0-9]{6,})\\s*-\\s*\\d{2}-\\d{2}-\\d{4}/i\n            );\n\n        if (anchored?.[1]) return anchored[1].trim();\n\n        const fallback = text.match(\n            /([A-Za-z0-9]{6,})\\s*-\\s*\\d{2}-\\d{2}-\\d{4}(?:\\s+\\d{2}:\\d{2})?/i\n        );\n\n        return fallback?.[1]?.trim() ?? null;\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     */\n    operation_date(text) {\n        const patterns = [\n            /fIzZ8q-UcN\\s*-\\s*(\\d{2}-\\d{2}-\\d{4})/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.replace(/(\\d{2})-(\\d{2})-(\\d{4})/, '$1/$2/$3') : null;\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta Destino[^]*?-\\s*(\\*?\\d+)/i,\n            /MATERIALES[^]*?-\\s*(\\*?\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /Cuenta Destino[^]*?-\\s*([A-Z\\s\\.]+?)\\s+\\*/i,\n            /MATERIALES[^]*?SA DE CV/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     */\n    concept(text) {\n        const patterns = [\n            /Descripcion\\s*([^\\n\\r]+?)\\s{2,}/i,\n            /Descripcion\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the operation type from the receipt text.\n     */\n    operation_type(text) {\n        return 'third_party';\n    }\n}\n\nexport default BanregioThirdPartyProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass BbvaSpeiProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The account ID or null if not found\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta de retiro\\.?\\s*(\\d+)/i,\n            /Cuenta de retiro[^]*?(\\d{10,})/i,\n            /Cuenta Retiro:\\s*(\\d+)/i,\n            /Cuenta Retiro:\\s*(\\d{16,})/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {number|null} The transaction amount as a number or null if not found\n     */\n    amount(text) {\n        const patterns = [\n            /Importe\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n            /IMPORTE\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n            /Importe:\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n            /Importe:\\s*\\$?\\s*([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The reference number or null if not found\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia numérica\\s*(\\d+)/i,\n            /REFERENCIA.*NUMÉRICA\\s*(\\d+)/i,\n            /Referencia Numérica:\\s*(\\d+)/i,\n            /Referencia Numérica:\\s*(\\d{7})/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation date or null if not found\n     */\n    date(text) {\n        const patterns = [\n            /Fecha de Operación:\\s*(\\d{2}\\/\\d{2}\\/\\d{4})/i,\n            /Fecha de Operación:\\s*(\\d{1,2}\\/\\d{1,2}\\/\\d{4})/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the destination bank from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The destination bank or null if not found\n     */\n    destination_bank(text) {\n        const patterns = [\n            /Banco Destino:\\s*([^:\\n\\r]+?)\\s{2,}Cuenta Asociada:/i,\n            /Banco Destino:\\s*([^:\\n\\r]+?)\\s{2,}[A-Za-záéíóúñ]+\\s*:/i,\n            /Banco Destino:\\s*([^:\\n\\r]+)/i\n        ];\n\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The destination account or null if not found\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta Asociada:\\s*(\\d+)/i,\n            /Cuenta Asociada:\\s*(\\d{16,})/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The beneficiary name or null if not found\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /Nombre del beneficiario:\\s*([^:\\n\\r(]+?)\\s{2,}\\(/i,\n            /Nombre del beneficiario:\\s*([^:\\n\\r(]+?)\\s{2,}[A-Za-záéíóúñ]+\\s*:/i,\n            /Nombre del beneficiario:\\s*([^:\\n\\r(]+)/i\n        ];\n\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the tracking key from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The tracking key or null if not found\n     */\n    tracking_key(text) {\n        const patterns = [\n            /Clave de Rastreo:\\s*([A-Za-z0-9]+)/i,\n            /Clave de Rastreo:\\s*(\\w{20,})/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the status from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The status or null if not found\n     */\n    status(text) {\n        const patterns = [\n            /Estatus:\\s*([^:\\n\\r]+?)\\s{2,}Clave de Rastreo:/i,\n            /Estatus:\\s*([^:\\n\\r]+?)\\s{2,}[A-Za-záéíóúñ]+\\s*:/i,\n            /Estatus:\\s*([^:\\n\\r]+)/i\n        ];\n\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The concept or null if not found\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto de Pago:\\s*([^:\\n\\r]+?)\\s{2,}[A-Za-záéíóúñ]+\\s*:/i,\n            /Concepto de Pago:\\s*([^:\\n\\r]+?)\\s{2,}Referencia Numérica:/i,\n            /Concepto de Pago:\\s*([^:\\n\\r]+?)\\s{2,}Estatus:/i,\n            /Concepto de Pago:\\s*([^:\\n\\r]+)/i\n        ];\n\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n}\n\nexport default BbvaSpeiProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass BbvaThirdPartyProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The account ID or null if not found\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta de retiro:\\s*(\\d+)/i,\n            /Cuenta de retiro\\.?\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {number|null} The transaction amount as a number or null if not found\n     */\n    amount(text) {\n        const patterns = [\n            /Importe de la operación:\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n            /Importe de la operación\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The reference number or null if not found\n     */\n    reference(text) {\n        const patterns = [\n            /Folio de internet:\\s*(\\d+)/i,\n            /Folio de internet\\.?\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation date or null if not found\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha de la operación:\\s*(\\d{2}\\/\\d{2}\\/\\d{4})/i,\n            /Fecha de la operación\\s*(\\d{1,2}\\/\\d{1,2}\\/\\d{4})/i\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The destination account or null if not found\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta asociada:\\s*(\\d+)/i,\n            /Cuenta asociada\\.?\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The concept or null if not found\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto de pago:\\s*([^:\\n\\r]+?)\\s{2,}Fecha de la operación:/i,\n            /Concepto de pago:\\s*([^:\\n\\r]+?)\\s{2,}[A-Za-záéíóúñ]+\\s*:/i,\n            /Concepto de pago:\\s*([^:\\n\\r]+)/i\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the operation type from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation type or null if not found\n     */\n    operation_type(text) {\n        const patterns = [\n            /Tipo de operación:\\s*([^:\\n\\r]+?)\\s{2,}Cuenta de retiro:/i,\n            /Tipo de operación:\\s*([^:\\n\\r]+?)\\s{2,}[A-Za-záéíóúñ]+\\s*:/i,\n            /Tipo de operación:\\s*([^:\\n\\r]+)/i\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n}\n\nexport default BbvaThirdPartyProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass HsbcSpeiProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The account ID or null if not found\n     */\n    account_id(text) {\n        const patterns = [\n            /Número\\s+de\\s+cuenta\\s*(\\d+)/i,\n            /CLABE\\s+emisor\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {number|null} The transaction amount as a number or null if not found\n     */\n    amount(text) {\n        const patterns = [\n            /Monto\\s*bruto\\s*MXN\\s*([\\d,]+\\.?\\d{2})/i,\n            /Monto\\s*MXN\\s*([\\d,]+\\.?\\d{2})/i,\n            /Moneda\\/\\s*Monto\\s*MXN\\s*([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        if (amount) {\n            const cleanAmount = amount.replace(/[^\\d.]/g, '');\n            return parseFloat(cleanAmount);\n        }\n        return null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The reference number or null if not found\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia\\s+de\\s+cliente\\s*(\\d+)/i,\n            /Referencia\\s+numérica\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation date or null if not found\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha\\s+de\\s+liquidación\\s*(\\d{1,2}\\s+\\w{3}\\s+\\d{4})/i,\n            /Fecha\\s+y\\s+hora\\s+de\\s+liquidación\\s*(\\d{1,2}\\s+\\w{3}\\s+\\d{4})/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        if (result) {\n            const months = {\n                'Ene': '01', 'Jan': '01',\n                'Feb': '02',\n                'Mar': '03',\n                'Abr': '04', 'Apr': '04',\n                'May': '05',\n                'Jun': '06',\n                'Jul': '07',\n                'Ago': '08', 'Aug': '08',\n                'Sep': '09',\n                'Oct': '10',\n                'Nov': '11',\n                'Dic': '12', 'Dec': '12'\n            };\n            const parts = result.split(/\\s+/);\n            if (parts.length === 3) {\n                const day = parts[0].padStart(2, '0');\n                const month = months[parts[1]] || '01';\n                const year = parts[2];\n                return `${day}/${month}/${year}`;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The destination account or null if not found\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta\\s+beneficiaria\\s*(\\d+)/i,\n            /Código\\s+del\\s+banco\\s+receptor\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The beneficiary name or null if not found\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /SEPSA\\s+([A-Z\\s]+?)\\s{2,}Dirección/i,\n            /SEPSA\\s+([A-Z\\s]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim().replace(/\\s+/g, ' ') : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The concept or null if not found\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto\\s+de\\s+pago\\s*([^:\\n\\r]+?)\\s{2,}Referencia\\s+numérica/i,\n            /Concepto\\s+de\\s+pago\\s*([^:\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim().replace(/\\s+/g, ' ') : null;\n    }\n\n    /**\n     * Extracts the tracking key from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The tracking key or null if not found\n     */\n    tracking_key(text) {\n        const patterns = [\n            /Clave\\s+de\\s+rastreo\\s*([A-Za-z0-9]+)/i,\n            /Clave\\s+de\\s+rastreo\\s*(\\w+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the bank reference from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The bank reference or null if not found\n     */\n    bank_reference(text) {\n        const patterns = [\n            /Referencia\\s+bancaria\\s*(\\d+)/i,\n            /Referencia\\s+relacionada\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n}\n\nexport default HsbcSpeiProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass SantanderSpeiProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The account ID or null if not found\n     */\n    account_id(text) {\n        const patterns = [\n            // Nombre + número (caso real Santander)\n            /Cuenta de Cargo:\\s*[A-ZÁÉÍÓÚÑ\\s\\.]+?\\s+(\\d{10,18})\\s+/i,\n\n            // Cuenta numérica directa\n            /Cuenta Cargo:\\s*(\\d{10,18})/i,\n        ];\n\n        let result = this._extractWithPatterns(text, patterns);\n\n        if (!result) return null;\n\n        return result.replace(/\\D/g, '') || null;\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {number|null} The transaction amount as a number or null if not found\n     */\n    amount(text) {\n        const patterns = [\n            /Importe:\\s*\\$\\s*([\\d,]+\\.?\\d{2})/i,\n            /Importe:\\s*\\$?\\s*([\\d,]+\\.?\\d{2})\\s*MXN/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The reference number or null if not found\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia:\\s*([^:\\n\\r]+?)\\s{2,}Referencias del Movimiento:/i,\n            /Referencia:\\s*([^:\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the tracking key from the receipt text.\n     */\n    tracking_key(text) {\n        const patterns = [\n            /Clave de Rastreo:\\s*([A-Z0-9]{20,40})/i\n        ];\n\n        const result = this._extractWithPatterns(text, patterns);\n\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation date or null if not found\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha aplicación:\\s*([^:\\n\\r]+?)\\s{2,}RFC Beneficiario:/i,\n            /Fecha aplicación:\\s*(\\d{2}\\/\\d{2}\\/\\d{4})/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The destination account or null if not found\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta Abono:\\s*([^:\\n\\r]+?)\\s{2,}Importe:/i,\n            /Cuenta Abono:\\s*(\\d+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The beneficiary name or null if not found\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /Cuenta Abono:\\s*\\d+\\s*-\\s*([^:\\n\\r]+?)\\s{2,}Importe:/i,\n            /Cuenta Abono:[^-]+-\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The concept or null if not found\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto:\\s*([^:\\n\\r]+?)\\s{2,}Fecha aplicación:/i,\n            /Concepto:\\s*([^:\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the status from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The status or null if not found\n     */\n    status(text) {\n        const patterns = [\n            /Estado:\\s*([^:\\n\\r]+?)\\s{2,}Divisa:/i,\n            /Estado:\\s*([^:\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the operation type from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation type or null if not found\n     */\n    operation_type(text) {\n        const patterns = [\n            /Tipo de Operación:\\s*([^:\\n\\r]+?)\\s{2,}Contrato:/i,\n            /Tipo de Operación:\\s*([^:\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n}\n\nexport default SantanderSpeiProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass SantanderThirdPartyProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The account ID or null if not found\n     */\n    account_id(text) {\n        const patterns = [\n            // Nombre + número (caso real Santander)\n            /Cuenta de Cargo:\\s*[A-ZÁÉÍÓÚÑ\\s\\.]+?\\s+(\\d{10,18})\\s+/i,\n\n            // Cuenta numérica directa\n            /Cuenta Cargo:\\s*(\\d{10,18})/i,\n        ];\n\n        let result = this._extractWithPatterns(text, patterns);\n\n        if (!result) return null;\n\n        return result.replace(/\\D/g, '') || null;\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {number|null} The transaction amount as a number or null if not found\n     */\n    amount(text) {\n        const patterns = [\n            /Importe:\\s*-?\\$?([\\d,]+\\.?\\d{2})/i,\n            /Importe:\\s*-?([\\d,]+\\.?\\d{2})\\s*MXP/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The reference number or null if not found\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia:\\s*([^:\\n\\r]+?)\\s{2,}Referencia numérica del Emisor:/i,\n            /Referencia:\\s*([^:\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation date or null if not found\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha y Hora Operación:\\s*([^:\\n\\r]+?)\\s{2,}Fecha y Hora contable:/i,\n            /Fecha y Hora Operación:\\s*(\\d{4}-\\d{2}-\\d{2})/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The concept or null if not found\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto:\\s*([^:\\n\\r]+?)\\s{2,}Banco Participante:/i,\n            /Concepto:\\s*([^:\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the operation type from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation type or null if not found\n     */\n    operation_type(text) {\n        const patterns = [\n            /Tipo de Operación:\\s*([^:\\n\\r]+?)\\s{2,}Cuenta de Cargo:/i,\n            /Tipo de Operación:\\s*([^:\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n}\n\nexport default SantanderThirdPartyProcessor;","import BaseProcessor from '../base-processor.js';\n\nclass ScotiabankSpeiProcessor extends BaseProcessor {\n    /**\n     * Extracts the account ID from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The account ID or null if not found\n     */\n    account_id(text) {\n        const patterns = [\n            /Cuenta de cargo\\s*([A-Z0-9-]+)/i,\n            /Cuenta de cargo:\\s*([A-Z0-9-]+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the transaction amount from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {number|null} The transaction amount as a number or null if not found\n     */\n    amount(text) {\n        const patterns = [\n            /Importe\\s*([\\d,]+\\.?\\d{2})/i,\n            /Importe:\\s*([\\d,]+\\.?\\d{2})/i,\n        ];\n        const amount = this._extractWithPatterns(text, patterns);\n        return amount ? parseFloat(amount.replace(/[^\\d.]/g, '')) : null;\n    }\n\n    /**\n     * Extracts the reference number from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The reference number or null if not found\n     */\n    reference(text) {\n        const patterns = [\n            /Referencia \\(Numérica\\):\\s*(\\d+)/i,\n            /Referencia:\\s*(\\d+)/i,\n            /Folio:\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the tracking key from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The tracking key or null if not found\n     */\n    tracking_key(text) {\n        const patterns = [\n            /Clave de Rastreo:\\s*([A-Za-z0-9]+)/i,\n            /Clave de Rastreo\\s*([A-Za-z0-9]+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the operation date from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The operation date or null if not found\n     */\n    operation_date(text) {\n        const patterns = [\n            /Fecha de Operación:\\s*(\\d{4}\\/\\d{2}\\/\\d{2})/i,\n            /Fecha de aplicación:\\s*(\\d{4}\\/\\d{2}\\/\\d{2})/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the destination account from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The destination account or null if not found\n     */\n    destination_account(text) {\n        const patterns = [\n            /Cuenta de Abono:\\s*(\\d+)/i,\n            /Cuenta de Abono\\s*(\\d+)/i,\n        ];\n        return this._extractWithPatterns(text, patterns);\n    }\n\n    /**\n     * Extracts the beneficiary name from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The beneficiary name or null if not found\n     */\n    beneficiary_name(text) {\n        const patterns = [\n            /Nombre Beneficiario\\/Razón Social:\\s*([^\\n\\r]+)/i,\n            /Nombre Beneficiario:\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n\n    /**\n     * Extracts the concept from the receipt text.\n     *\n     * @param {string} text - The receipt text to extract from\n     * @returns {string|null} The concept or null if not found\n     */\n    concept(text) {\n        const patterns = [\n            /Concepto:\\s*([^\\n\\r]+)/i,\n            /Concepto\\s*([^\\n\\r]+)/i,\n        ];\n        const result = this._extractWithPatterns(text, patterns);\n        return result ? result.trim() : null;\n    }\n}\n\nexport default ScotiabankSpeiProcessor;","import { createWorker } from 'tesseract.js';\n\nimport AfirmeSpeiProcessor from './processors/afirme/afirme-spei-processor.js';\nimport BanbajioSpeiProcessor from './processors/banbajio/banbajio-spei-processor.js';\nimport BanorteSpeiProcessor from './processors/banorte/banorte-spei-processor.js';\nimport BanorteThirdPartyProcessor from './processors/banorte/banorte-third-party-processor.js';\nimport BanregioSpeiProcessor from './processors/banregio/banregio-spei-processor.js';\nimport BanregioThirdPartyProcessor from './processors/banregio/banregio-third-party-processor.js';\nimport BbvaSpeiProcessor from './processors/bbva/bbva-spei-processor.js';\nimport BbvaThirdPartyProcessor from './processors/bbva/bbva-third-party-processor.js';\nimport HsbcSpeiProcessor from './processors/hsbc/hsbc-spei-processor.js';\nimport SantanderSpeiProcessor from './processors/santander/santander-spei-processor.js';\nimport SantanderThirdPartyProcessor from './processors/santander/santander-third-party-processor.js';\nimport ScotiabankSpeiProcessor from './processors/scotiabank/scotiabank-spei-processor.js';\n\nclass BankReceiptReader {\n    constructor() {\n        this.processors = this._initializeProcessors();\n        this.pdfjs = null;\n        this.pdfWorkerSrc = null;\n    }\n\n    /**\n     * Set pdfjs library instance (from user)\n     * @param {any} pdfjsLib\n     */\n    setPdfJs(pdfjsLib) {\n        this.pdfjs = pdfjsLib;\n    }\n\n    /**\n     * Set worker source URL (from user)\n     * @param {string} workerSrc\n     */\n    setPdfWorkerSrc(workerSrc) {\n        this.pdfWorkerSrc = workerSrc;\n        if (this.pdfjs) {\n            this.pdfjs.GlobalWorkerOptions.workerSrc = workerSrc;\n        }\n    }\n\n    /**\n     * Initializes all available bank processors\n     * @private\n     * @returns {Object} Object containing all initialized processors\n     */\n    _initializeProcessors() {\n        return {\n            'afirme_spei': new AfirmeSpeiProcessor(),\n            'banbajio_spei': new BanbajioSpeiProcessor(),\n            'banorte_spei': new BanorteSpeiProcessor(),\n            'banorte_third_party': new BanorteThirdPartyProcessor(),\n            'banregio_spei': new BanregioSpeiProcessor(),\n            'banregio_third_party': new BanregioThirdPartyProcessor(),\n            'bbva_spei': new BbvaSpeiProcessor(),\n            'bbva_third_party': new BbvaThirdPartyProcessor(),\n            'hsbc_spei': new HsbcSpeiProcessor(),\n            'santander_spei': new SantanderSpeiProcessor(),\n            'santander_third_party': new SantanderThirdPartyProcessor(),\n            'scotiabank_spei': new ScotiabankSpeiProcessor(),\n        };\n    }\n\n    /**\n     * Extracts text from an image using Tesseract.js\n     * @param {string|File|Blob} imageInput - Image file or URL to process\n     * @returns {Promise<string>} Extracted text from the image\n     */\n    async extractTextFromImage(imageInput) {\n        const worker = await createWorker('spa+eng', 3);\n        try {\n            await worker.setParameters({ tessedit_pageseg_mode: '11' });\n            const result = await worker.recognize(imageInput);\n            return result.data.text.trim();\n        } finally {\n            await worker.terminate();\n        }\n    }\n\n    /**\n     * Extracts text from a PDF using pdfjs-dist (browser-only)\n     * @param {File} file - PDF file to extract text from\n     * @returns {Promise<string>} Extracted text from the PDF\n     */\n    async extractTextFromPdf(file) {\n        if (!this.pdfjs) {\n            throw new Error('pdfjsLib not set. Call setPdfJs() first.');\n        }\n        if (!this.pdfWorkerSrc) {\n            throw new Error('PDF worker not set. Call setPdfWorkerSrc() first.');\n        }\n\n        const arrayBuffer = await file.arrayBuffer();\n        const pdfDoc = await this.pdfjs.getDocument({ data: arrayBuffer }).promise;\n\n        let fullText = '';\n        for (let i = 1; i <= pdfDoc.numPages; i++) {\n            const page = await pdfDoc.getPage(i);\n            const textContent = await page.getTextContent();\n            fullText += textContent.items.map(item => item.str).join(' ') + '\\n';\n        }\n\n        pdfDoc.destroy?.();\n        return fullText.trim();\n    }\n\n    /**\n     * Extracts images from PDF and performs OCR on them\n     * @param {File} file - PDF file to extract images from\n     * @returns {Promise<string>} Extracted text from all images in the PDF\n     */\n    async extractTextFromPdfWithImages(file) {\n        if (!this.pdfjs) {\n            throw new Error('pdfjsLib not set. Call setPdfJs() first.');\n        }\n        if (!this.pdfWorkerSrc) {\n            throw new Error('PDF worker not set. Call setPdfWorkerSrc() first.');\n        }\n\n        const arrayBuffer = await file.arrayBuffer();\n        const pdfDoc = await this.pdfjs.getDocument({ data: arrayBuffer }).promise;\n\n        let fullText = '';\n\n        for (let i = 1; i <= pdfDoc.numPages; i++) {\n            const page = await pdfDoc.getPage(i);\n            const textContent = await page.getTextContent();\n            const pageText = textContent.items.map(item => item.str).join(' ');\n\n            if (pageText.trim().length > 0) {\n                fullText += pageText + '\\n';\n            }\n        }\n\n        if (fullText.trim().length < 100) {\n            const imageText = await this.extractTextFromPdfImages(pdfDoc);\n            fullText += imageText;\n        }\n\n        pdfDoc.destroy?.();\n        return fullText.trim();\n    }\n\n    /**\n     * Extracts images from PDF pages and performs OCR\n     * @param {any} pdfDoc - PDF document object\n     * @returns {Promise<string>} Extracted text from all images\n     */\n    async extractTextFromPdfImages(pdfDoc) {\n        let extractedText = '';\n        const worker = await createWorker('spa+eng', 3);\n\n        try {\n            await worker.setParameters({\n                tessedit_pageseg_mode: '11',\n            });\n\n            for (let i = 1; i <= pdfDoc.numPages; i++) {\n                const page = await pdfDoc.getPage(i);\n                const viewport = page.getViewport({ scale: 2.0 });\n\n                const canvas = document.createElement('canvas');\n                const context = canvas.getContext('2d');\n                canvas.width = viewport.width;\n                canvas.height = viewport.height;\n\n                await page.render({\n                    canvasContext: context,\n                    viewport: viewport\n                }).promise;\n\n                const blob = await new Promise(resolve => {\n                    canvas.toBlob(resolve, 'image/png', 1.0);\n                });\n\n                if (blob) {\n                    const result = await worker.recognize(blob);\n                    extractedText += result.data.text + '\\n';\n                }\n\n                page.cleanup();\n            }\n        } finally {\n            await worker.terminate();\n        }\n\n        return extractedText;\n    }\n\n    /**\n     * Enhanced extractText method that handles both text and image-based PDFs\n     * @param {string|File|Blob} file - Input file (image URL, File, or Blob)\n     * @returns {Promise<string>} Extracted text from the input\n     * @throws {Error} When input type is invalid or unsupported\n     */\n    async extractText(file) {\n        if (typeof file === 'string') {\n            return this.extractTextFromImage(file);\n        }\n\n        if (!(file instanceof File || file instanceof Blob)) {\n            throw new Error('Invalid input type.');\n        }\n\n        const mimeType = file.type.toLowerCase();\n\n        if (mimeType === 'application/pdf') {\n            return this.extractTextFromPdfWithImages(file);\n        }\n\n        if (mimeType === 'image/jpeg' || mimeType === 'image/png') {\n            return this.extractTextFromImage(file);\n        }\n\n        throw new Error('Unsupported file type. Only JPG, PNG, and PDF are accepted.');\n    }\n\n    /**\n     * Identifies the bank and transaction type from extracted text\n     * @param {string} text - Text extracted from bank receipt\n     * @returns {Object|null} Object containing bank name, type and processor, or null if not identified\n     */\n    identifyBank(text) {\n        const bankPatterns = [\n            {\n                name: 'afirme_spei',\n                patterns: [\n                    /el banco de hoy/i,\n                    /banca afirme/i,\n                ],\n            },\n            {\n                name: 'bbva_spei',\n                patterns: [\n                    /BNET[0-9A-Za-z]{20}/i\n                ],\n            },\n            {\n                name: 'bbva_third_party',\n                patterns: [\n                    /trasp ctas bbva/i,\n                ],\n            },\n            {\n                name: 'banbajio_spei',\n                patterns: [\n                    /Banco del Bajío S.A./i,\n                    /BajioNet/i,\n                    /RFC: BBA940707IE1/i,\n                ],\n            },\n            {\n                name: 'banorte_spei',\n                patterns: [\n                    /([A-Z0-9]{4}APR[12]\\d+)/,\n                    /Transferencias \\/ Otros Bancos Nacional - SPEI \\(Mismo día\\)/i,\n                ],\n            },\n            {\n                name: 'banorte_third_party',\n                patterns: [\n                    /Transferencias a Cuentas de Terceros Banorte/i,\n                    /ID Tercero\\s*AFB/i,\n\n                ],\n            },\n            {\n                name: 'scotiabank_spei',\n                patterns: [\n                    /Scotiabank Inverlat S.A./i,\n                    /Impresión de Comprobante de Traspasos Otros Bancos/i,\n                ],\n            },\n            {\n                name: 'santander_spei',\n                patterns: [\n                    /Clave de Rastreo:\\s*[A-Z0-9]{20,40}/i,\n                    /Cuenta CLABE Beneficiario:\\s*\\d{18}/i,\n                    /Banco Participante:/i,\n                ],\n            },\n            {\n                name: 'santander_third_party',\n                patterns: [\n                    /Transferencias a cuentas Santander/i,\n                    /Traspaso entre cuentas Santander/i,\n                ],\n            },\n            {\n                name: 'hsbc_spei',\n                patterns: [\n                    /HSBC\\s+Mexico/i,\n                    /Referencia\\s+de\\s+cliente\\s*\\d+/i,\n                    /Clave\\s+de\\s+rastreo\\s*HSBC/i,\n                    /Narrativa\\s+adicional\\s*CGO\\s+SPEI/i,\n                    /Nombre\\s+del\\s+banco\\s*HSBC/i\n                ],\n            },\n            {\n                name: 'banregio_spei',\n                patterns: [\n                    /(\\d{3}-\\d{2}\\/\\d{2}\\/\\d{4}\\/\\d{2}-[A-Z0-9]+)/,\n                    /Tipo de Transferencia\\s*Mismo día hábil \\(SPEI\\)/i,\n                    /Fecha de operación SPEI/i,\n                ],\n            },\n            {\n                name: 'banregio_third_party',\n                patterns: [\n                    /banregio/i,\n                    /recibo\\s+de\\s+la\\s+transferencia/i,\n                    /datos\\s+de\\s+tu\\s+operaci[oó]n/i,\n                    /cuenta\\s+origen/i,\n                    /cuenta\\s+destino/i,\n                    /cantidad\\s+a\\s+transferir/i,\n                ],\n            },\n        ];\n\n        for (const bank of bankPatterns) {\n            for (const pattern of bank.patterns) {\n                if (pattern.test(text)) {\n                    const [name, ...typeParts] = bank.name.split('_');\n                    const type = typeParts.join('_');\n                    return { name, type, processor: this.processors[bank.name] };\n                }\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * Main method to read and process bank receipts\n     * @param {string|File|Blob} file - Bank receipt file (image or PDF)\n     * @returns {Promise<Object>} Processing result with bank information and extracted data\n     */\n    async readReceipt(file) {\n        try {\n            const text = await this.extractText(file);\n            const bankInfo = this.identifyBank(text);\n\n            if (!bankInfo) return { success: false, error: 'Unknown bank type' };\n\n            const extractedData = bankInfo.processor.extract(text);\n\n            return {\n                success: true,\n                bank: bankInfo.name,\n                type: bankInfo.type,\n                data: extractedData,\n            };\n        } catch (error) {\n            console.error(error);\n            return { success: false, error: error.message };\n        }\n    }\n}\n\nexport default BankReceiptReader;"],"names":["undefined","require$$0","require$$1","require$$2","require","require$$3","require$$4","require$$5","require$$6","require$$7","createWorker"],"mappings":"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AAC,SAAS,EAAE,CAAA;AAC9B,MAAK,CAAC,CAAA;EACL,CAAA;;AAED,CAAA,MAAM,MAAM,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK;GACvC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;AACtD,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAA;MACvB,OAAO,CAAC,YAAY;AACzB,OAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;AAC9B,MAAK,CAAC,CAAA;EACL,CAAA;;AAED,CAAA,SAAc,GAAG;AACjB,GAAE,SAAS;AACX,GAAE,MAAM;EACP,CAAA;;;;;;;;;;;ACrBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAA,SAAc,GAAG;GACf,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,QAAQ,EAAE,UAAU;GACpB,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,OAAO,EAAE,SAAS;GAClB,OAAO,EAAE,SAAS;GAClB,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,OAAO,EAAE,SAAS;GAClB,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,OAAO,EAAE,SAAS;GAClB,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,OAAO,EAAE,SAAS;GAClB,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,QAAQ,EAAE,UAAU;GACpB,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;GACV,QAAQ,EAAE,UAAU;GACpB,GAAG,EAAE,KAAK;GACV,GAAG,EAAE,KAAK;EACX,CAAA;;;;;;;;;;;ACzND;AACA;AACA;AACA,CAAA,GAAc,GAAG;GACf,QAAQ,EAAE,GAAG;GACb,QAAQ,EAAE,GAAG;GACb,SAAS,EAAE,GAAG;GACd,IAAI,EAAE,GAAG;GACT,aAAa,EAAE,GAAG;GAClB,sBAAsB,EAAE,GAAG;GAC3B,YAAY,EAAE,GAAG;GACjB,WAAW,EAAE,GAAG;GAChB,WAAW,EAAE,GAAG;GAChB,WAAW,EAAE,GAAG;GAChB,WAAW,EAAE,IAAI;GACjB,WAAW,EAAE,IAAI;GACjB,eAAe,EAAE,IAAI;GACrB,QAAQ,EAAE,IAAI;EACf,CAAA;;;;;;;;;;;AClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAsCA,cAAA,EAAA,CAAA;CACtC,MAAM,eAAe,GAAGC,sBAA4B,EAAA,CAAA;CACpD,MAAM,YAAY,GAAGC,mBAAyB,EAAA,CAAA;CAC9C,MAAM,SAAS,GAAGE,gBAAsB,EAAA,CAAA;CACxC,MAAM,SAAS,GAAGC,gBAAgC,EAAA,CAAA;CAClD,MAAM,GAAG,GAAGC,UAA0B,EAAA,CAAA;CACtC,MAAM,GAAG,GAAGC,UAA0B,EAAA,CAAA;AACtC,CAAA,MAAM,EAAE,UAAU,EAAE,GAAGC,UAAsB,EAAA,CAAA;;AAE7C,CAAA,GAAc,GAAG;AACjB,GAAE,SAAS;AACX,GAAE,GAAG;AACL,GAAE,GAAG;AACL,GAAE,eAAe;AACjB,GAAE,YAAY;AACd,GAAE,UAAU;AACZ,GAAE,GAAG,SAAS;EACb,CAAA;;;;;;AC5BD,MAAM,aAAa,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE;AACzC,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC,iBAAiB,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACnD,iBAAiB,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;AACxB;AACA,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACpF;AACA,QAAQ,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAC9C,YAAY,IAAI,UAAU,KAAK,aAAa,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACvH,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD,gBAAgB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC3D,oBAAoB,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AAC7C,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC;AAC5C;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChF;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,IAAI;AAChB,gBAAgB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5D,gBAAgB,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACvC,oBAAoB,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjD;AACA,oBAAoB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC/C,wBAAwB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9D,qBAAqB;AACrB;AACA,oBAAoB,OAAO,MAAM,IAAI,IAAI,CAAC;AAC1C,iBAAiB;AACjB,aAAa,CAAC,OAAO,KAAK,EAAE;AAC5B,gBAAgB,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxE,gBAAgB,SAAS;AACzB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;;AC3DA,MAAM,mBAAmB,SAAS,aAAa,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,qDAAqD;AACjE,YAAY,uCAAuC;AACnD,YAAY,mBAAmB;AAC/B,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAgB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,oDAAoD;AAChE,YAAY,uCAAuC;AACnD,YAAY,gCAAgC;AAC5C,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChE,gBAAgB,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AACxD,gBAAgB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;AACtD,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,yBAAyB;AACrC,YAAY,2BAA2B;AACvC,YAAY,uBAAuB;AACnC,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,2BAA2B;AACvC,YAAY,+BAA+B;AAC3C,YAAY,kBAAkB;AAC9B,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,iCAAiC;AAC7C,YAAY,+BAA+B;AAC3C,YAAY,gCAAgC;AAC5C,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,yDAAyD;AACrE,YAAY,4BAA4B;AACxC,YAAY,0CAA0C;AACtD,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClD;AACA,gBAAgB,WAAW,GAAG,WAAW;AACzC,qBAAqB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACzC,qBAAqB,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC;AACxE,qBAAqB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC5C,qBAAqB,IAAI,EAAE,CAAC;AAC5B;AACA,gBAAgB,OAAO,WAAW,IAAI,IAAI,CAAC;AAC3C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,gEAAgE;AAC5E,YAAY,+BAA+B;AAC3C,YAAY,mBAAmB;AAC/B,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACrE,oBAAoB,OAAO,kBAAkB,CAAC;AAC9C,iBAAiB;AACjB;AACA,gBAAgB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACpD;AACA,gBAAgB,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC9D,oBAAoB,OAAO,kBAAkB,CAAC;AAC9C,iBAAiB;AACjB,gBAAgB,OAAO,WAAW,CAAC;AACnC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrC,YAAY,OAAO,WAAW,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrC,YAAY,OAAO,WAAW,CAAC;AAC/B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;;ACrMA,MAAM,qBAAqB,SAAS,aAAa,CAAC;AAClD;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,yBAAyB;AACrC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mCAAmC;AAC/C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,sBAAsB;AAClC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,4CAA4C;AACxD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,0BAA0B;AACtC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,oDAAoD;AAChE,YAAY,wCAAwC;AACpD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mDAAmD;AAC/D,YAAY,iCAAiC;AAC7C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,qCAAqC;AACjD,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,2DAA2D;AACvE,YAAY,4BAA4B;AACxC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,UAAU,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC;AACrC;AACA,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AACpC,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AACpC,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AACpC,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AACpC,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACnD,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL;;ACjIA,MAAM,oBAAoB,SAAS,aAAa,CAAC;AACjD;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mCAAmC;AAC/C,YAAY,2BAA2B;AACvC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,+CAA+C;AAC3D,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6CAA6C;AACzD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,sCAAsC;AAClD,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,uCAAuC;AACnD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6CAA6C;AACzD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,oCAAoC;AAChD,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6BAA6B;AACzC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,UAAU,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC;AACrC;AACA,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAClE,YAAY,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAClE,YAAY,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAClE,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACjE,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL;;ACvHA,MAAM,0BAA0B,SAAS,aAAa,CAAC;AACvD;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mCAAmC;AAC/C,YAAY,2BAA2B;AACvC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,+CAA+C;AAC3D,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6CAA6C;AACzD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,sCAAsC;AAClD,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,uCAAuC;AACnD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6CAA6C;AACzD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,oCAAoC;AAChD,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,kCAAkC,CAAC;AAClD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,UAAU,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC;AACrC;AACA,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAClE,YAAY,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAClE,YAAY,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAClE,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACjE,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL;;ACnHA,MAAM,qBAAqB,SAAS,aAAa,CAAC;AAClD;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,iCAAiC;AAC7C,YAAY,4BAA4B;AACxC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,qBAAqB;AACjC,YAAY,+CAA+C;AAC3D,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,+BAA+B;AAC3C,YAAY,wBAAwB;AACpC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,oDAAoD;AAChE,YAAY,uDAAuD;AACnE,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,+BAA+B;AAC3C,YAAY,2BAA2B;AACvC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6CAA6C;AACzD,YAAY,0BAA0B;AACtC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,0CAA0C;AACtD,YAAY,gCAAgC;AAC5C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,8CAA8C;AAC1D,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,UAAU,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC;AACrC;AACA,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;AACxE,YAAY,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;AACtE,YAAY,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI;AACrF,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AAC/B,YAAY,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACnD,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL;;ACjHA,MAAM,2BAA2B,SAAS,aAAa,CAAC;AACxD;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,iCAAiC;AAC7C,YAAY,4BAA4B;AACxC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,qBAAqB;AACjC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ;AACtB,YAAY,IAAI,CAAC,KAAK;AACtB,gBAAgB,kFAAkF;AAClG,aAAa;AACb,YAAY,IAAI,CAAC,KAAK;AACtB,gBAAgB,+EAA+E;AAC/F,aAAa,CAAC;AACd;AACA,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;AACnC,YAAY,+DAA+D;AAC3E,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,uCAAuC;AACnD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;AACrF,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,kCAAkC;AAC9C,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,4CAA4C;AACxD,YAAY,0BAA0B;AACtC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,kCAAkC;AAC9C,YAAY,2BAA2B;AACvC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,aAAa,CAAC;AAC7B,KAAK;AACL;;AChGA,MAAM,iBAAiB,SAAS,aAAa,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,8BAA8B;AAC1C,YAAY,iCAAiC;AAC7C,YAAY,yBAAyB;AACrC,YAAY,6BAA6B;AACzC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,kCAAkC;AAC9C,YAAY,kCAAkC;AAC9C,YAAY,mCAAmC;AAC/C,YAAY,oCAAoC;AAChD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,8BAA8B;AAC1C,YAAY,+BAA+B;AAC3C,YAAY,+BAA+B;AAC3C,YAAY,iCAAiC;AAC7C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,8CAA8C;AAC1D,YAAY,kDAAkD;AAC9D,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,sDAAsD;AAClE,YAAY,yDAAyD;AACrE,YAAY,+BAA+B;AAC3C,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,2BAA2B;AACvC,YAAY,+BAA+B;AAC3C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mDAAmD;AAC/D,YAAY,oEAAoE;AAChF,YAAY,0CAA0C;AACtD,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,qCAAqC;AACjD,YAAY,gCAAgC;AAC5C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,iDAAiD;AAC7D,YAAY,mDAAmD;AAC/D,YAAY,yBAAyB;AACrC,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,4DAA4D;AACxE,YAAY,6DAA6D;AACzE,YAAY,iDAAiD;AAC7D,YAAY,kCAAkC;AAC9C,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;;AChKA,MAAM,uBAAuB,SAAS,aAAa,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,4BAA4B;AACxC,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mDAAmD;AAC/D,YAAY,kDAAkD;AAC9D,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6BAA6B;AACzC,YAAY,+BAA+B;AAC3C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,iDAAiD;AAC7D,YAAY,oDAAoD;AAChE,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,2BAA2B;AACvC,YAAY,6BAA6B;AACzC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,+DAA+D;AAC3E,YAAY,4DAA4D;AACxE,YAAY,kCAAkC;AAC9C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,2DAA2D;AACvE,YAAY,6DAA6D;AACzE,YAAY,mCAAmC;AAC/C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;;ACvGA,MAAM,iBAAiB,SAAS,aAAa,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,+BAA+B;AAC3C,YAAY,yBAAyB;AACrC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,yCAAyC;AACrD,YAAY,iCAAiC;AAC7C,YAAY,4CAA4C;AACxD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC9D,YAAY,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,oCAAoC;AAChD,YAAY,gCAAgC;AAC5C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,uDAAuD;AACnE,YAAY,kEAAkE;AAC9E,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,MAAM,MAAM,GAAG;AAC3B,gBAAgB,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AACxC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AACxC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AACxC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AACxC,aAAa,CAAC;AACd,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,gBAAgB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACtD,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACvD,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,gBAAgB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACjD,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,gCAAgC;AAC5C,YAAY,0CAA0C;AACtD,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,qCAAqC;AACjD,YAAY,qBAAqB;AACjC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAClE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,iEAAiE;AAC7E,YAAY,qCAAqC;AACjD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAClE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,wCAAwC;AACpD,YAAY,+BAA+B;AAC3C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,gCAAgC;AAC5C,YAAY,mCAAmC;AAC/C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;;AC9JA,MAAM,sBAAsB,SAAS,aAAa,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB;AACA,YAAY,wDAAwD;AACpE;AACA;AACA,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/D;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;AACjC;AACA,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;AACjD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mCAAmC;AAC/C,YAAY,0CAA0C;AACtD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,8DAA8D;AAC1E,YAAY,4BAA4B;AACxC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,wCAAwC;AACpD,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE;AACA,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,0DAA0D;AACtE,YAAY,4CAA4C;AACxD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6CAA6C;AACzD,YAAY,wBAAwB;AACpC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,uDAAuD;AACnE,YAAY,mCAAmC;AAC/C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,kDAAkD;AAC9D,YAAY,0BAA0B;AACtC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,sCAAsC;AAClD,YAAY,wBAAwB;AACpC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mDAAmD;AAC/D,YAAY,mCAAmC;AAC/C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;;AC3JA,MAAM,4BAA4B,SAAS,aAAa,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB;AACA,YAAY,wDAAwD;AACpE;AACA;AACA,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/D;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;AACjC;AACA,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;AACjD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mCAAmC;AAC/C,YAAY,sCAAsC;AAClD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,kEAAkE;AAC9E,YAAY,4BAA4B;AACxC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,qEAAqE;AACjF,YAAY,gDAAgD;AAC5D,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,oDAAoD;AAChE,YAAY,0BAA0B;AACtC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,0DAA0D;AACtE,YAAY,mCAAmC;AAC/C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;;ACjGA,MAAM,uBAAuB,SAAS,aAAa,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,iCAAiC;AAC7C,YAAY,kCAAkC;AAC9C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,6BAA6B;AACzC,YAAY,8BAA8B;AAC1C,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACzE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,mCAAmC;AAC/C,YAAY,sBAAsB;AAClC,YAAY,iBAAiB;AAC7B,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,qCAAqC;AACjD,YAAY,oCAAoC;AAChD,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,8CAA8C;AAC1D,YAAY,+CAA+C;AAC3D,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,2BAA2B;AACvC,YAAY,0BAA0B;AACtC,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,kDAAkD;AAC9D,YAAY,oCAAoC;AAChD,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,yBAAyB;AACrC,YAAY,wBAAwB;AACpC,SAAS,CAAC;AACV,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL;;ACvGA,MAAM,iBAAiB,CAAC;AACxB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACvD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,SAAS,EAAE;AAC/B,QAAQ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AACtC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,GAAG,SAAS,CAAC;AACjE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,OAAO;AACf,YAAY,aAAa,EAAE,IAAI,mBAAmB,EAAE;AACpD,YAAY,eAAe,EAAE,IAAI,qBAAqB,EAAE;AACxD,YAAY,cAAc,EAAE,IAAI,oBAAoB,EAAE;AACtD,YAAY,qBAAqB,EAAE,IAAI,0BAA0B,EAAE;AACnE,YAAY,eAAe,EAAE,IAAI,qBAAqB,EAAE;AACxD,YAAY,sBAAsB,EAAE,IAAI,2BAA2B,EAAE;AACrE,YAAY,WAAW,EAAE,IAAI,iBAAiB,EAAE;AAChD,YAAY,kBAAkB,EAAE,IAAI,uBAAuB,EAAE;AAC7D,YAAY,WAAW,EAAE,IAAI,iBAAiB,EAAE;AAChD,YAAY,gBAAgB,EAAE,IAAI,sBAAsB,EAAE;AAC1D,YAAY,uBAAuB,EAAE,IAAI,4BAA4B,EAAE;AACvE,YAAY,iBAAiB,EAAE,IAAI,uBAAuB,EAAE;AAC5D,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,oBAAoB,CAAC,UAAU,EAAE;AAC3C,QAAQ,MAAM,MAAM,GAAG,MAAMC,uBAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACxD,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,YAAY,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC9D,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3C,SAAS,SAAS;AAClB,YAAY,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AACrC,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,IAAI,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,YAAY,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AACxE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACjF,SAAS;AACT;AACA,QAAQ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACrD,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;AACnF;AACA,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5D,YAAY,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACjF,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,OAAO,IAAI,CAAC;AAC3B,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,4BAA4B,CAAC,IAAI,EAAE;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,YAAY,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AACxE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACjF,SAAS;AACT;AACA,QAAQ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACrD,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;AACnF;AACA,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5D,YAAY,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/E;AACA,YAAY,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,gBAAgB,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC;AAC5C,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;AAC1C,YAAY,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1E,YAAY,QAAQ,IAAI,SAAS,CAAC;AAClC,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,OAAO,IAAI,CAAC;AAC3B,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,wBAAwB,CAAC,MAAM,EAAE;AAC3C,QAAQ,IAAI,aAAa,GAAG,EAAE,CAAC;AAC/B,QAAQ,MAAM,MAAM,GAAG,MAAMA,uBAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACxD;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,CAAC,aAAa,CAAC;AACvC,gBAAgB,qBAAqB,EAAE,IAAI;AAC3C,aAAa,CAAC,CAAC;AACf;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;AACvD,gBAAgB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAClE;AACA,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChE,gBAAgB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxD,gBAAgB,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC9C,gBAAgB,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAChD;AACA,gBAAgB,MAAM,IAAI,CAAC,MAAM,CAAC;AAClC,oBAAoB,aAAa,EAAE,OAAO;AAC1C,oBAAoB,QAAQ,EAAE,QAAQ;AACtC,iBAAiB,CAAC,CAAC,OAAO,CAAC;AAC3B;AACA,gBAAgB,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI;AAC1D,oBAAoB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;AAC7D,iBAAiB,CAAC,CAAC;AACnB;AACA,gBAAgB,IAAI,IAAI,EAAE;AAC1B,oBAAoB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChE,oBAAoB,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7D,iBAAiB;AACjB;AACA,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,aAAa;AACb,SAAS,SAAS;AAClB,YAAY,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AACrC,SAAS;AACT;AACA,QAAQ,OAAO,aAAa,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACtC,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACnD,SAAS;AACT;AACA,QAAQ,IAAI,EAAE,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,IAAI,CAAC,EAAE;AAC7D,YAAY,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACnD,SAAS;AACT;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACjD;AACA,QAAQ,IAAI,QAAQ,KAAK,iBAAiB,EAAE;AAC5C,YAAY,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;AAC3D,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,WAAW,EAAE;AACnE,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACnD,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AACvF,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,YAAY,GAAG;AAC7B,YAAY;AACZ,gBAAgB,IAAI,EAAE,aAAa;AACnC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,kBAAkB;AACtC,oBAAoB,eAAe;AACnC,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,sBAAsB;AAC1C,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,kBAAkB;AACxC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,kBAAkB;AACtC,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,eAAe;AACrC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,uBAAuB;AAC3C,oBAAoB,WAAW;AAC/B,oBAAoB,oBAAoB;AACxC,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,cAAc;AACpC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,yBAAyB;AAC7C,oBAAoB,+DAA+D;AACnF,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,qBAAqB;AAC3C,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,+CAA+C;AACnE,oBAAoB,mBAAmB;AACvC;AACA,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,iBAAiB;AACvC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,2BAA2B;AAC/C,oBAAoB,qDAAqD;AACzE,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,gBAAgB;AACtC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,sCAAsC;AAC1D,oBAAoB,sCAAsC;AAC1D,oBAAoB,sBAAsB;AAC1C,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,uBAAuB;AAC7C,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,qCAAqC;AACzD,oBAAoB,mCAAmC;AACvD,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,gBAAgB;AACpC,oBAAoB,kCAAkC;AACtD,oBAAoB,8BAA8B;AAClD,oBAAoB,qCAAqC;AACzD,oBAAoB,8BAA8B;AAClD,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,eAAe;AACrC,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,8CAA8C;AAClE,oBAAoB,mDAAmD;AACvE,oBAAoB,0BAA0B;AAC9C,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,sBAAsB;AAC5C,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,WAAW;AAC/B,oBAAoB,mCAAmC;AACvD,oBAAoB,iCAAiC;AACrD,oBAAoB,kBAAkB;AACtC,oBAAoB,mBAAmB;AACvC,oBAAoB,4BAA4B;AAChD,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;AACzC,YAAY,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxC,oBAAoB,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtE,oBAAoB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,oBAAoB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACjF,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACrD;AACA,YAAY,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;AACjF;AACA,YAAY,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnE;AACA,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACnC,gBAAgB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACnC,gBAAgB,IAAI,EAAE,aAAa;AACnC,aAAa,CAAC;AACd,SAAS,CAAC,OAAO,KAAK,EAAE;AACxB,YAAY,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjC,YAAY,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5D,SAAS;AACT,KAAK;AACL;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]}