{
  "version": 3,
  "sources": ["../../../../../shared/node_modules/core-js/internals/global-this.js", "../../../../../shared/node_modules/core-js/internals/fails.js", "../../../../../shared/node_modules/core-js/internals/descriptors.js", "../../../../../shared/node_modules/core-js/internals/function-bind-native.js", "../../../../../shared/node_modules/core-js/internals/function-call.js", "../../../../../shared/node_modules/core-js/internals/object-property-is-enumerable.js", "../../../../../shared/node_modules/core-js/internals/create-property-descriptor.js", "../../../../../shared/node_modules/core-js/internals/function-uncurry-this.js", "../../../../../shared/node_modules/core-js/internals/classof-raw.js", "../../../../../shared/node_modules/core-js/internals/indexed-object.js", "../../../../../shared/node_modules/core-js/internals/is-null-or-undefined.js", "../../../../../shared/node_modules/core-js/internals/require-object-coercible.js", "../../../../../shared/node_modules/core-js/internals/to-indexed-object.js", "../../../../../shared/node_modules/core-js/internals/is-callable.js", "../../../../../shared/node_modules/core-js/internals/is-object.js", "../../../../../shared/node_modules/core-js/internals/get-built-in.js", "../../../../../shared/node_modules/core-js/internals/object-is-prototype-of.js", "../../../../../shared/node_modules/core-js/internals/environment-user-agent.js", "../../../../../shared/node_modules/core-js/internals/environment-v8-version.js", "../../../../../shared/node_modules/core-js/internals/symbol-constructor-detection.js", "../../../../../shared/node_modules/core-js/internals/use-symbol-as-uid.js", "../../../../../shared/node_modules/core-js/internals/is-symbol.js", "../../../../../shared/node_modules/core-js/internals/try-to-string.js", "../../../../../shared/node_modules/core-js/internals/a-callable.js", "../../../../../shared/node_modules/core-js/internals/get-method.js", "../../../../../shared/node_modules/core-js/internals/ordinary-to-primitive.js", "../../../../../shared/node_modules/core-js/internals/is-pure.js", "../../../../../shared/node_modules/core-js/internals/define-global-property.js", "../../../../../shared/node_modules/core-js/internals/shared-store.js", "../../../../../shared/node_modules/core-js/internals/shared.js", "../../../../../shared/node_modules/core-js/internals/to-object.js", "../../../../../shared/node_modules/core-js/internals/has-own-property.js", "../../../../../shared/node_modules/core-js/internals/uid.js", "../../../../../shared/node_modules/core-js/internals/well-known-symbol.js", "../../../../../shared/node_modules/core-js/internals/to-primitive.js", "../../../../../shared/node_modules/core-js/internals/to-property-key.js", "../../../../../shared/node_modules/core-js/internals/document-create-element.js", "../../../../../shared/node_modules/core-js/internals/ie8-dom-define.js", "../../../../../shared/node_modules/core-js/internals/object-get-own-property-descriptor.js", "../../../../../shared/node_modules/core-js/internals/v8-prototype-define-bug.js", "../../../../../shared/node_modules/core-js/internals/an-object.js", "../../../../../shared/node_modules/core-js/internals/object-define-property.js", "../../../../../shared/node_modules/core-js/internals/create-non-enumerable-property.js", "../../../../../shared/node_modules/core-js/internals/function-name.js", "../../../../../shared/node_modules/core-js/internals/inspect-source.js", "../../../../../shared/node_modules/core-js/internals/weak-map-basic-detection.js", "../../../../../shared/node_modules/core-js/internals/shared-key.js", "../../../../../shared/node_modules/core-js/internals/hidden-keys.js", "../../../../../shared/node_modules/core-js/internals/internal-state.js", "../../../../../shared/node_modules/core-js/internals/make-built-in.js", "../../../../../shared/node_modules/core-js/internals/define-built-in.js", "../../../../../shared/node_modules/core-js/internals/math-trunc.js", "../../../../../shared/node_modules/core-js/internals/to-integer-or-infinity.js", "../../../../../shared/node_modules/core-js/internals/to-absolute-index.js", "../../../../../shared/node_modules/core-js/internals/to-length.js", "../../../../../shared/node_modules/core-js/internals/length-of-array-like.js", "../../../../../shared/node_modules/core-js/internals/array-includes.js", "../../../../../shared/node_modules/core-js/internals/object-keys-internal.js", "../../../../../shared/node_modules/core-js/internals/enum-bug-keys.js", "../../../../../shared/node_modules/core-js/internals/object-get-own-property-names.js", "../../../../../shared/node_modules/core-js/internals/object-get-own-property-symbols.js", "../../../../../shared/node_modules/core-js/internals/own-keys.js", "../../../../../shared/node_modules/core-js/internals/copy-constructor-properties.js", "../../../../../shared/node_modules/core-js/internals/is-forced.js", "../../../../../shared/node_modules/core-js/internals/export.js", "../../../../../shared/node_modules/core-js/internals/to-string-tag-support.js", "../../../../../shared/node_modules/core-js/internals/classof.js", "../../../../../shared/node_modules/core-js/internals/to-string.js", "../../../../../shared/node_modules/core-js/internals/object-keys.js", "../../../../../shared/node_modules/core-js/internals/object-define-properties.js", "../../../../../shared/node_modules/core-js/internals/html.js", "../../../../../shared/node_modules/core-js/internals/object-create.js", "../../../../../shared/node_modules/core-js/internals/array-slice.js", "../../../../../shared/node_modules/core-js/internals/object-get-own-property-names-external.js", "../../../../../shared/node_modules/core-js/internals/define-built-in-accessor.js", "../../../../../shared/node_modules/core-js/internals/well-known-symbol-wrapped.js", "../../../../../shared/node_modules/core-js/internals/path.js", "../../../../../shared/node_modules/core-js/internals/well-known-symbol-define.js", "../../../../../shared/node_modules/core-js/internals/symbol-define-to-primitive.js", "../../../../../shared/node_modules/core-js/internals/set-to-string-tag.js", "../../../../../shared/node_modules/core-js/internals/function-uncurry-this-clause.js", "../../../../../shared/node_modules/core-js/internals/function-bind-context.js", "../../../../../shared/node_modules/core-js/internals/is-array.js", "../../../../../shared/node_modules/core-js/internals/is-constructor.js", "../../../../../shared/node_modules/core-js/internals/array-species-constructor.js", "../../../../../shared/node_modules/core-js/internals/array-species-create.js", "../../../../../shared/node_modules/core-js/internals/array-iteration.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.constructor.js", "../../../../../shared/node_modules/core-js/internals/symbol-registry-detection.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.for.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.key-for.js", "../../../../../shared/node_modules/core-js/internals/function-apply.js", "../../../../../shared/node_modules/core-js/internals/get-json-replacer-function.js", "../../../../../shared/node_modules/core-js/modules/es.json.stringify.js", "../../../../../shared/node_modules/core-js/modules/es.object.get-own-property-symbols.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.description.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.async-iterator.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.has-instance.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.iterator.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.match.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.match-all.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.replace.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.search.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.species.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.split.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.to-primitive.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.to-string-tag.js", "../../../../../shared/node_modules/core-js/modules/es.symbol.unscopables.js", "../../../../../shared/node_modules/core-js/internals/function-uncurry-this-accessor.js", "../../../../../shared/node_modules/core-js/internals/is-possible-prototype.js", "../../../../../shared/node_modules/core-js/internals/a-possible-prototype.js", "../../../../../shared/node_modules/core-js/internals/object-set-prototype-of.js", "../../../../../shared/node_modules/core-js/internals/proxy-accessor.js", "../../../../../shared/node_modules/core-js/internals/inherit-if-required.js", "../../../../../shared/node_modules/core-js/internals/normalize-string-argument.js", "../../../../../shared/node_modules/core-js/internals/install-error-cause.js", "../../../../../shared/node_modules/core-js/internals/error-stack-clear.js", "../../../../../shared/node_modules/core-js/internals/error-stack-installable.js", "../../../../../shared/node_modules/core-js/internals/error-stack-install.js", "../../../../../shared/node_modules/core-js/internals/wrap-error-constructor-with-cause.js", "../../../../../shared/node_modules/core-js/modules/es.error.cause.js", "../../../../../shared/node_modules/core-js/internals/error-to-string.js", "../../../../../shared/node_modules/core-js/modules/es.error.to-string.js", "../../../../../shared/node_modules/core-js/internals/correct-prototype-getter.js", "../../../../../shared/node_modules/core-js/internals/object-get-prototype-of.js", "../../../../../shared/node_modules/core-js/internals/iterators.js", "../../../../../shared/node_modules/core-js/internals/is-array-iterator-method.js", "../../../../../shared/node_modules/core-js/internals/get-iterator-method.js", "../../../../../shared/node_modules/core-js/internals/get-iterator.js", "../../../../../shared/node_modules/core-js/internals/iterator-close.js", "../../../../../shared/node_modules/core-js/internals/iterate.js", "../../../../../shared/node_modules/core-js/modules/es.aggregate-error.constructor.js", "../../../../../shared/node_modules/core-js/modules/es.aggregate-error.js", "../../../../../shared/node_modules/core-js/modules/es.aggregate-error.cause.js", "../../../../../shared/node_modules/core-js/internals/add-to-unscopables.js", "../../../../../shared/node_modules/core-js/modules/es.array.at.js", "../../../../../shared/node_modules/core-js/internals/does-not-exceed-safe-integer.js", "../../../../../shared/node_modules/core-js/internals/create-property.js", "../../../../../shared/node_modules/core-js/internals/array-method-has-species-support.js", "../../../../../shared/node_modules/core-js/modules/es.array.concat.js", "../../../../../shared/node_modules/core-js/internals/delete-property-or-throw.js", "../../../../../shared/node_modules/core-js/internals/array-copy-within.js", "../../../../../shared/node_modules/core-js/modules/es.array.copy-within.js", "../../../../../shared/node_modules/core-js/internals/array-method-is-strict.js", "../../../../../shared/node_modules/core-js/modules/es.array.every.js", "../../../../../shared/node_modules/core-js/internals/array-fill.js", "../../../../../shared/node_modules/core-js/modules/es.array.fill.js", "../../../../../shared/node_modules/core-js/modules/es.array.filter.js", "../../../../../shared/node_modules/core-js/modules/es.array.find.js", "../../../../../shared/node_modules/core-js/modules/es.array.find-index.js", "../../../../../shared/node_modules/core-js/internals/array-iteration-from-last.js", "../../../../../shared/node_modules/core-js/modules/es.array.find-last.js", "../../../../../shared/node_modules/core-js/modules/es.array.find-last-index.js", "../../../../../shared/node_modules/core-js/internals/flatten-into-array.js", "../../../../../shared/node_modules/core-js/modules/es.array.flat.js", "../../../../../shared/node_modules/core-js/modules/es.array.flat-map.js", "../../../../../shared/node_modules/core-js/internals/array-for-each.js", "../../../../../shared/node_modules/core-js/modules/es.array.for-each.js", "../../../../../shared/node_modules/core-js/internals/call-with-safe-iteration-closing.js", "../../../../../shared/node_modules/core-js/internals/array-from.js", "../../../../../shared/node_modules/core-js/internals/check-correctness-of-iteration.js", "../../../../../shared/node_modules/core-js/modules/es.array.from.js", "../../../../../shared/node_modules/core-js/modules/es.array.includes.js", "../../../../../shared/node_modules/core-js/modules/es.array.index-of.js", "../../../../../shared/node_modules/core-js/modules/es.array.is-array.js", "../../../../../shared/node_modules/core-js/internals/iterators-core.js", "../../../../../shared/node_modules/core-js/internals/iterator-create-constructor.js", "../../../../../shared/node_modules/core-js/internals/iterator-define.js", "../../../../../shared/node_modules/core-js/internals/create-iter-result-object.js", "../../../../../shared/node_modules/core-js/modules/es.array.iterator.js", "../../../../../shared/node_modules/core-js/modules/es.array.join.js", "../../../../../shared/node_modules/core-js/internals/array-last-index-of.js", "../../../../../shared/node_modules/core-js/modules/es.array.last-index-of.js", "../../../../../shared/node_modules/core-js/modules/es.array.map.js", "../../../../../shared/node_modules/core-js/modules/es.array.of.js", "../../../../../shared/node_modules/core-js/internals/array-set-length.js", "../../../../../shared/node_modules/core-js/modules/es.array.push.js", "../../../../../shared/node_modules/core-js/internals/array-reduce.js", "../../../../../shared/node_modules/core-js/internals/environment.js", "../../../../../shared/node_modules/core-js/internals/environment-is-node.js", "../../../../../shared/node_modules/core-js/modules/es.array.reduce.js", "../../../../../shared/node_modules/core-js/modules/es.array.reduce-right.js", "../../../../../shared/node_modules/core-js/modules/es.array.reverse.js", "../../../../../shared/node_modules/core-js/modules/es.array.slice.js", "../../../../../shared/node_modules/core-js/modules/es.array.some.js", "../../../../../shared/node_modules/core-js/internals/array-sort.js", "../../../../../shared/node_modules/core-js/internals/environment-ff-version.js", "../../../../../shared/node_modules/core-js/internals/environment-is-ie-or-edge.js", "../../../../../shared/node_modules/core-js/internals/environment-webkit-version.js", "../../../../../shared/node_modules/core-js/modules/es.array.sort.js", "../../../../../shared/node_modules/core-js/internals/set-species.js", "../../../../../shared/node_modules/core-js/modules/es.array.species.js", "../../../../../shared/node_modules/core-js/modules/es.array.splice.js", "../../../../../shared/node_modules/core-js/internals/array-to-reversed.js", "../../../../../shared/node_modules/core-js/modules/es.array.to-reversed.js", "../../../../../shared/node_modules/core-js/internals/array-from-constructor-and-list.js", "../../../../../shared/node_modules/core-js/internals/get-built-in-prototype-method.js", "../../../../../shared/node_modules/core-js/modules/es.array.to-sorted.js", "../../../../../shared/node_modules/core-js/modules/es.array.to-spliced.js", "../../../../../shared/node_modules/core-js/modules/es.array.unscopables.flat.js", "../../../../../shared/node_modules/core-js/modules/es.array.unscopables.flat-map.js", "../../../../../shared/node_modules/core-js/modules/es.array.unshift.js", "../../../../../shared/node_modules/core-js/internals/array-with.js", "../../../../../shared/node_modules/core-js/modules/es.array.with.js", "../../../../../shared/node_modules/core-js/internals/array-buffer-basic-detection.js", "../../../../../shared/node_modules/core-js/internals/define-built-ins.js", "../../../../../shared/node_modules/core-js/internals/an-instance.js", "../../../../../shared/node_modules/core-js/internals/to-index.js", "../../../../../shared/node_modules/core-js/internals/math-sign.js", "../../../../../shared/node_modules/core-js/internals/math-round-ties-to-even.js", "../../../../../shared/node_modules/core-js/internals/math-float-round.js", "../../../../../shared/node_modules/core-js/internals/math-fround.js", "../../../../../shared/node_modules/core-js/internals/ieee754.js", "../../../../../shared/node_modules/core-js/internals/array-buffer.js", "../../../../../shared/node_modules/core-js/modules/es.array-buffer.constructor.js", "../../../../../shared/node_modules/core-js/internals/array-buffer-view-core.js", "../../../../../shared/node_modules/core-js/modules/es.array-buffer.is-view.js", "../../../../../shared/node_modules/core-js/modules/es.array-buffer.slice.js", "../../../../../shared/node_modules/core-js/modules/es.data-view.constructor.js", "../../../../../shared/node_modules/core-js/modules/es.data-view.js", "../../../../../shared/node_modules/core-js/internals/array-buffer-byte-length.js", "../../../../../shared/node_modules/core-js/internals/array-buffer-is-detached.js", "../../../../../shared/node_modules/core-js/modules/es.array-buffer.detached.js", "../../../../../shared/node_modules/core-js/internals/array-buffer-not-detached.js", "../../../../../shared/node_modules/core-js/internals/get-built-in-node-module.js", "../../../../../shared/node_modules/core-js/internals/structured-clone-proper-transfer.js", "../../../../../shared/node_modules/core-js/internals/detach-transferable.js", "../../../../../shared/node_modules/core-js/internals/array-buffer-transfer.js", "../../../../../shared/node_modules/core-js/modules/es.array-buffer.transfer.js", "../../../../../shared/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js", "../../../../../shared/node_modules/core-js/modules/es.date.get-year.js", "../../../../../shared/node_modules/core-js/modules/es.date.now.js", "../../../../../shared/node_modules/core-js/modules/es.date.set-year.js", "../../../../../shared/node_modules/core-js/modules/es.date.to-gmt-string.js", "../../../../../shared/node_modules/core-js/internals/string-repeat.js", "../../../../../shared/node_modules/core-js/internals/string-pad.js", "../../../../../shared/node_modules/core-js/internals/date-to-iso-string.js", "../../../../../shared/node_modules/core-js/modules/es.date.to-iso-string.js", "../../../../../shared/node_modules/core-js/modules/es.date.to-json.js", "../../../../../shared/node_modules/core-js/internals/date-to-primitive.js", "../../../../../shared/node_modules/core-js/modules/es.date.to-primitive.js", "../../../../../shared/node_modules/core-js/modules/es.date.to-string.js", "../../../../../shared/node_modules/core-js/modules/es.escape.js", "../../../../../shared/node_modules/core-js/internals/function-bind.js", "../../../../../shared/node_modules/core-js/modules/es.function.bind.js", "../../../../../shared/node_modules/core-js/modules/es.function.has-instance.js", "../../../../../shared/node_modules/core-js/modules/es.function.name.js", "../../../../../shared/node_modules/core-js/modules/es.global-this.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.constructor.js", "../../../../../shared/node_modules/core-js/internals/get-iterator-direct.js", "../../../../../shared/node_modules/core-js/internals/not-a-nan.js", "../../../../../shared/node_modules/core-js/internals/to-positive-integer.js", "../../../../../shared/node_modules/core-js/internals/iterator-create-proxy.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.drop.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.every.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.filter.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.find.js", "../../../../../shared/node_modules/core-js/internals/get-iterator-flattenable.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.flat-map.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.for-each.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.from.js", "../../../../../shared/node_modules/core-js/internals/iterator-map.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.map.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.reduce.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.some.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.take.js", "../../../../../shared/node_modules/core-js/modules/es.iterator.to-array.js", "../../../../../shared/node_modules/core-js/modules/es.json.to-string-tag.js", "../../../../../shared/node_modules/core-js/internals/array-buffer-non-extensible.js", "../../../../../shared/node_modules/core-js/internals/object-is-extensible.js", "../../../../../shared/node_modules/core-js/internals/freezing.js", "../../../../../shared/node_modules/core-js/internals/internal-metadata.js", "../../../../../shared/node_modules/core-js/internals/collection.js", "../../../../../shared/node_modules/core-js/internals/collection-strong.js", "../../../../../shared/node_modules/core-js/modules/es.map.constructor.js", "../../../../../shared/node_modules/core-js/modules/es.map.js", "../../../../../shared/node_modules/core-js/internals/map-helpers.js", "../../../../../shared/node_modules/core-js/modules/es.map.group-by.js", "../../../../../shared/node_modules/core-js/internals/math-log1p.js", "../../../../../shared/node_modules/core-js/modules/es.math.acosh.js", "../../../../../shared/node_modules/core-js/modules/es.math.asinh.js", "../../../../../shared/node_modules/core-js/modules/es.math.atanh.js", "../../../../../shared/node_modules/core-js/modules/es.math.cbrt.js", "../../../../../shared/node_modules/core-js/modules/es.math.clz32.js", "../../../../../shared/node_modules/core-js/internals/math-expm1.js", "../../../../../shared/node_modules/core-js/modules/es.math.cosh.js", "../../../../../shared/node_modules/core-js/modules/es.math.expm1.js", "../../../../../shared/node_modules/core-js/modules/es.math.fround.js", "../../../../../shared/node_modules/core-js/modules/es.math.hypot.js", "../../../../../shared/node_modules/core-js/modules/es.math.imul.js", "../../../../../shared/node_modules/core-js/internals/math-log10.js", "../../../../../shared/node_modules/core-js/modules/es.math.log10.js", "../../../../../shared/node_modules/core-js/modules/es.math.log1p.js", "../../../../../shared/node_modules/core-js/internals/math-log2.js", "../../../../../shared/node_modules/core-js/modules/es.math.log2.js", "../../../../../shared/node_modules/core-js/modules/es.math.sign.js", "../../../../../shared/node_modules/core-js/modules/es.math.sinh.js", "../../../../../shared/node_modules/core-js/modules/es.math.tanh.js", "../../../../../shared/node_modules/core-js/modules/es.math.to-string-tag.js", "../../../../../shared/node_modules/core-js/modules/es.math.trunc.js", "../../../../../shared/node_modules/core-js/internals/this-number-value.js", "../../../../../shared/node_modules/core-js/internals/whitespaces.js", "../../../../../shared/node_modules/core-js/internals/string-trim.js", "../../../../../shared/node_modules/core-js/modules/es.number.constructor.js", "../../../../../shared/node_modules/core-js/modules/es.number.epsilon.js", "../../../../../shared/node_modules/core-js/internals/number-is-finite.js", "../../../../../shared/node_modules/core-js/modules/es.number.is-finite.js", "../../../../../shared/node_modules/core-js/internals/is-integral-number.js", "../../../../../shared/node_modules/core-js/modules/es.number.is-integer.js", "../../../../../shared/node_modules/core-js/modules/es.number.is-nan.js", "../../../../../shared/node_modules/core-js/modules/es.number.is-safe-integer.js", "../../../../../shared/node_modules/core-js/modules/es.number.max-safe-integer.js", "../../../../../shared/node_modules/core-js/modules/es.number.min-safe-integer.js", "../../../../../shared/node_modules/core-js/internals/number-parse-float.js", "../../../../../shared/node_modules/core-js/modules/es.number.parse-float.js", "../../../../../shared/node_modules/core-js/internals/number-parse-int.js", "../../../../../shared/node_modules/core-js/modules/es.number.parse-int.js", "../../../../../shared/node_modules/core-js/modules/es.number.to-exponential.js", "../../../../../shared/node_modules/core-js/modules/es.number.to-fixed.js", "../../../../../shared/node_modules/core-js/modules/es.number.to-precision.js", "../../../../../shared/node_modules/core-js/internals/object-assign.js", "../../../../../shared/node_modules/core-js/modules/es.object.assign.js", "../../../../../shared/node_modules/core-js/modules/es.object.create.js", "../../../../../shared/node_modules/core-js/internals/object-prototype-accessors-forced.js", "../../../../../shared/node_modules/core-js/modules/es.object.define-getter.js", "../../../../../shared/node_modules/core-js/modules/es.object.define-properties.js", "../../../../../shared/node_modules/core-js/modules/es.object.define-property.js", "../../../../../shared/node_modules/core-js/modules/es.object.define-setter.js", "../../../../../shared/node_modules/core-js/internals/object-to-array.js", "../../../../../shared/node_modules/core-js/modules/es.object.entries.js", "../../../../../shared/node_modules/core-js/modules/es.object.freeze.js", "../../../../../shared/node_modules/core-js/modules/es.object.from-entries.js", "../../../../../shared/node_modules/core-js/modules/es.object.get-own-property-descriptor.js", "../../../../../shared/node_modules/core-js/modules/es.object.get-own-property-descriptors.js", "../../../../../shared/node_modules/core-js/modules/es.object.get-own-property-names.js", "../../../../../shared/node_modules/core-js/modules/es.object.get-prototype-of.js", "../../../../../shared/node_modules/core-js/modules/es.object.group-by.js", "../../../../../shared/node_modules/core-js/modules/es.object.has-own.js", "../../../../../shared/node_modules/core-js/internals/same-value.js", "../../../../../shared/node_modules/core-js/modules/es.object.is.js", "../../../../../shared/node_modules/core-js/modules/es.object.is-extensible.js", "../../../../../shared/node_modules/core-js/modules/es.object.is-frozen.js", "../../../../../shared/node_modules/core-js/modules/es.object.is-sealed.js", "../../../../../shared/node_modules/core-js/modules/es.object.keys.js", "../../../../../shared/node_modules/core-js/modules/es.object.lookup-getter.js", "../../../../../shared/node_modules/core-js/modules/es.object.lookup-setter.js", "../../../../../shared/node_modules/core-js/modules/es.object.prevent-extensions.js", "../../../../../shared/node_modules/core-js/modules/es.object.proto.js", "../../../../../shared/node_modules/core-js/modules/es.object.seal.js", "../../../../../shared/node_modules/core-js/modules/es.object.set-prototype-of.js", "../../../../../shared/node_modules/core-js/internals/object-to-string.js", "../../../../../shared/node_modules/core-js/modules/es.object.to-string.js", "../../../../../shared/node_modules/core-js/modules/es.object.values.js", "../../../../../shared/node_modules/core-js/modules/es.parse-float.js", "../../../../../shared/node_modules/core-js/modules/es.parse-int.js", "../../../../../shared/node_modules/core-js/internals/a-constructor.js", "../../../../../shared/node_modules/core-js/internals/species-constructor.js", "../../../../../shared/node_modules/core-js/internals/validate-arguments-length.js", "../../../../../shared/node_modules/core-js/internals/environment-is-ios.js", "../../../../../shared/node_modules/core-js/internals/task.js", "../../../../../shared/node_modules/core-js/internals/safe-get-built-in.js", "../../../../../shared/node_modules/core-js/internals/queue.js", "../../../../../shared/node_modules/core-js/internals/environment-is-ios-pebble.js", "../../../../../shared/node_modules/core-js/internals/environment-is-webos-webkit.js", "../../../../../shared/node_modules/core-js/internals/microtask.js", "../../../../../shared/node_modules/core-js/internals/host-report-errors.js", "../../../../../shared/node_modules/core-js/internals/perform.js", "../../../../../shared/node_modules/core-js/internals/promise-native-constructor.js", "../../../../../shared/node_modules/core-js/internals/promise-constructor-detection.js", "../../../../../shared/node_modules/core-js/internals/new-promise-capability.js", "../../../../../shared/node_modules/core-js/modules/es.promise.constructor.js", "../../../../../shared/node_modules/core-js/internals/promise-statics-incorrect-iteration.js", "../../../../../shared/node_modules/core-js/modules/es.promise.all.js", "../../../../../shared/node_modules/core-js/modules/es.promise.catch.js", "../../../../../shared/node_modules/core-js/modules/es.promise.race.js", "../../../../../shared/node_modules/core-js/modules/es.promise.reject.js", "../../../../../shared/node_modules/core-js/internals/promise-resolve.js", "../../../../../shared/node_modules/core-js/modules/es.promise.resolve.js", "../../../../../shared/node_modules/core-js/modules/es.promise.js", "../../../../../shared/node_modules/core-js/modules/es.promise.all-settled.js", "../../../../../shared/node_modules/core-js/modules/es.promise.any.js", "../../../../../shared/node_modules/core-js/modules/es.promise.finally.js", "../../../../../shared/node_modules/core-js/modules/es.promise.try.js", "../../../../../shared/node_modules/core-js/modules/es.promise.with-resolvers.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.apply.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.construct.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.define-property.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.delete-property.js", "../../../../../shared/node_modules/core-js/internals/is-data-descriptor.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.get.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.get-prototype-of.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.has.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.is-extensible.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.own-keys.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.prevent-extensions.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.set.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.set-prototype-of.js", "../../../../../shared/node_modules/core-js/modules/es.reflect.to-string-tag.js", "../../../../../shared/node_modules/core-js/internals/is-regexp.js", "../../../../../shared/node_modules/core-js/internals/regexp-flags.js", "../../../../../shared/node_modules/core-js/internals/regexp-get-flags.js", "../../../../../shared/node_modules/core-js/internals/regexp-sticky-helpers.js", "../../../../../shared/node_modules/core-js/internals/regexp-unsupported-dot-all.js", "../../../../../shared/node_modules/core-js/internals/regexp-unsupported-ncg.js", "../../../../../shared/node_modules/core-js/modules/es.regexp.constructor.js", "../../../../../shared/node_modules/core-js/modules/es.regexp.dot-all.js", "../../../../../shared/node_modules/core-js/internals/regexp-exec.js", "../../../../../shared/node_modules/core-js/modules/es.regexp.exec.js", "../../../../../shared/node_modules/core-js/modules/es.regexp.flags.js", "../../../../../shared/node_modules/core-js/modules/es.regexp.sticky.js", "../../../../../shared/node_modules/core-js/modules/es.regexp.test.js", "../../../../../shared/node_modules/core-js/modules/es.regexp.to-string.js", "../../../../../shared/node_modules/core-js/modules/es.set.constructor.js", "../../../../../shared/node_modules/core-js/modules/es.set.js", "../../../../../shared/node_modules/core-js/internals/set-helpers.js", "../../../../../shared/node_modules/core-js/internals/a-set.js", "../../../../../shared/node_modules/core-js/internals/iterate-simple.js", "../../../../../shared/node_modules/core-js/internals/set-iterate.js", "../../../../../shared/node_modules/core-js/internals/set-clone.js", "../../../../../shared/node_modules/core-js/internals/set-size.js", "../../../../../shared/node_modules/core-js/internals/get-set-record.js", "../../../../../shared/node_modules/core-js/internals/set-difference.js", "../../../../../shared/node_modules/core-js/internals/set-method-accept-set-like.js", "../../../../../shared/node_modules/core-js/modules/es.set.difference.v2.js", "../../../../../shared/node_modules/core-js/internals/set-intersection.js", "../../../../../shared/node_modules/core-js/modules/es.set.intersection.v2.js", "../../../../../shared/node_modules/core-js/internals/set-is-disjoint-from.js", "../../../../../shared/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js", "../../../../../shared/node_modules/core-js/internals/set-is-subset-of.js", "../../../../../shared/node_modules/core-js/modules/es.set.is-subset-of.v2.js", "../../../../../shared/node_modules/core-js/internals/set-is-superset-of.js", "../../../../../shared/node_modules/core-js/modules/es.set.is-superset-of.v2.js", "../../../../../shared/node_modules/core-js/internals/set-symmetric-difference.js", "../../../../../shared/node_modules/core-js/modules/es.set.symmetric-difference.v2.js", "../../../../../shared/node_modules/core-js/internals/set-union.js", "../../../../../shared/node_modules/core-js/modules/es.set.union.v2.js", "../../../../../shared/node_modules/core-js/modules/es.string.at-alternative.js", "../../../../../shared/node_modules/core-js/internals/string-multibyte.js", "../../../../../shared/node_modules/core-js/modules/es.string.code-point-at.js", "../../../../../shared/node_modules/core-js/internals/not-a-regexp.js", "../../../../../shared/node_modules/core-js/internals/correct-is-regexp-logic.js", "../../../../../shared/node_modules/core-js/modules/es.string.ends-with.js", "../../../../../shared/node_modules/core-js/modules/es.string.from-code-point.js", "../../../../../shared/node_modules/core-js/modules/es.string.includes.js", "../../../../../shared/node_modules/core-js/modules/es.string.is-well-formed.js", "../../../../../shared/node_modules/core-js/modules/es.string.iterator.js", "../../../../../shared/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../../../../../shared/node_modules/core-js/internals/advance-string-index.js", "../../../../../shared/node_modules/core-js/internals/regexp-exec-abstract.js", "../../../../../shared/node_modules/core-js/modules/es.string.match.js", "../../../../../shared/node_modules/core-js/modules/es.string.match-all.js", "../../../../../shared/node_modules/core-js/internals/string-pad-webkit-bug.js", "../../../../../shared/node_modules/core-js/modules/es.string.pad-end.js", "../../../../../shared/node_modules/core-js/modules/es.string.pad-start.js", "../../../../../shared/node_modules/core-js/modules/es.string.raw.js", "../../../../../shared/node_modules/core-js/modules/es.string.repeat.js", "../../../../../shared/node_modules/core-js/internals/get-substitution.js", "../../../../../shared/node_modules/core-js/modules/es.string.replace.js", "../../../../../shared/node_modules/core-js/modules/es.string.replace-all.js", "../../../../../shared/node_modules/core-js/modules/es.string.search.js", "../../../../../shared/node_modules/core-js/modules/es.string.split.js", "../../../../../shared/node_modules/core-js/modules/es.string.starts-with.js", "../../../../../shared/node_modules/core-js/modules/es.string.substr.js", "../../../../../shared/node_modules/core-js/modules/es.string.to-well-formed.js", "../../../../../shared/node_modules/core-js/internals/string-trim-forced.js", "../../../../../shared/node_modules/core-js/modules/es.string.trim.js", "../../../../../shared/node_modules/core-js/internals/string-trim-end.js", "../../../../../shared/node_modules/core-js/modules/es.string.trim-right.js", "../../../../../shared/node_modules/core-js/modules/es.string.trim-end.js", "../../../../../shared/node_modules/core-js/internals/string-trim-start.js", "../../../../../shared/node_modules/core-js/modules/es.string.trim-left.js", "../../../../../shared/node_modules/core-js/modules/es.string.trim-start.js", "../../../../../shared/node_modules/core-js/internals/create-html.js", "../../../../../shared/node_modules/core-js/internals/string-html-forced.js", "../../../../../shared/node_modules/core-js/modules/es.string.anchor.js", "../../../../../shared/node_modules/core-js/modules/es.string.big.js", "../../../../../shared/node_modules/core-js/modules/es.string.blink.js", "../../../../../shared/node_modules/core-js/modules/es.string.bold.js", "../../../../../shared/node_modules/core-js/modules/es.string.fixed.js", "../../../../../shared/node_modules/core-js/modules/es.string.fontcolor.js", "../../../../../shared/node_modules/core-js/modules/es.string.fontsize.js", "../../../../../shared/node_modules/core-js/modules/es.string.italics.js", "../../../../../shared/node_modules/core-js/modules/es.string.link.js", "../../../../../shared/node_modules/core-js/modules/es.string.small.js", "../../../../../shared/node_modules/core-js/modules/es.string.strike.js", "../../../../../shared/node_modules/core-js/modules/es.string.sub.js", "../../../../../shared/node_modules/core-js/modules/es.string.sup.js", "../../../../../shared/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js", "../../../../../shared/node_modules/core-js/internals/to-offset.js", "../../../../../shared/node_modules/core-js/internals/to-uint8-clamped.js", "../../../../../shared/node_modules/core-js/internals/is-big-int-array.js", "../../../../../shared/node_modules/core-js/internals/to-big-int.js", "../../../../../shared/node_modules/core-js/internals/typed-array-from.js", "../../../../../shared/node_modules/core-js/internals/typed-array-constructor.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.float32-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.float64-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.int8-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.int16-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.int32-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.uint8-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.uint16-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.uint32-array.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.at.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.copy-within.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.every.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.fill.js", "../../../../../shared/node_modules/core-js/internals/typed-array-from-same-type-and-list.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.filter.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.find.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.find-index.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.find-last.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.find-last-index.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.for-each.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.from.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.includes.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.index-of.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.iterator.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.join.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.last-index-of.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.map.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.of.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.reduce.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.reduce-right.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.reverse.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.set.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.slice.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.some.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.sort.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.subarray.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.to-locale-string.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.to-reversed.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.to-sorted.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.to-string.js", "../../../../../shared/node_modules/core-js/modules/es.typed-array.with.js", "../../../../../shared/node_modules/core-js/modules/es.unescape.js", "../../../../../shared/node_modules/core-js/internals/collection-weak.js", "../../../../../shared/node_modules/core-js/modules/es.weak-map.constructor.js", "../../../../../shared/node_modules/core-js/modules/es.weak-map.js", "../../../../../shared/node_modules/core-js/modules/es.weak-set.constructor.js", "../../../../../shared/node_modules/core-js/modules/es.weak-set.js", "../../../../../shared/node_modules/core-js/internals/base64-map.js", "../../../../../shared/node_modules/core-js/modules/web.atob.js", "../../../../../shared/node_modules/core-js/modules/web.btoa.js", "../../../../../shared/node_modules/core-js/internals/dom-iterables.js", "../../../../../shared/node_modules/core-js/internals/dom-token-list-prototype.js", "../../../../../shared/node_modules/core-js/modules/web.dom-collections.for-each.js", "../../../../../shared/node_modules/core-js/modules/web.dom-collections.iterator.js", "../../../../../shared/node_modules/core-js/internals/dom-exception-constants.js", "../../../../../shared/node_modules/core-js/modules/web.dom-exception.constructor.js", "../../../../../shared/node_modules/core-js/modules/web.dom-exception.stack.js", "../../../../../shared/node_modules/core-js/modules/web.dom-exception.to-string-tag.js", "../../../../../shared/node_modules/core-js/modules/web.clear-immediate.js", "../../../../../shared/node_modules/core-js/internals/schedulers-fix.js", "../../../../../shared/node_modules/core-js/modules/web.set-immediate.js", "../../../../../shared/node_modules/core-js/modules/web.immediate.js", "../../../../../shared/node_modules/core-js/modules/web.queue-microtask.js", "../../../../../shared/node_modules/core-js/modules/web.self.js", "../../../../../shared/node_modules/core-js/modules/web.structured-clone.js", "../../../../../shared/node_modules/core-js/modules/web.set-interval.js", "../../../../../shared/node_modules/core-js/modules/web.set-timeout.js", "../../../../../shared/node_modules/core-js/modules/web.timers.js", "../../../../../shared/node_modules/core-js/internals/url-constructor-detection.js", "../../../../../shared/node_modules/core-js/internals/string-punycode-to-ascii.js", "../../../../../shared/node_modules/core-js/modules/web.url-search-params.constructor.js", "../../../../../shared/node_modules/core-js/modules/web.url.constructor.js", "../../../../../shared/node_modules/core-js/modules/web.url.js", "../../../../../shared/node_modules/core-js/modules/web.url.can-parse.js", "../../../../../shared/node_modules/core-js/modules/web.url.parse.js", "../../../../../shared/node_modules/core-js/modules/web.url.to-json.js", "../../../../../shared/node_modules/core-js/modules/web.url-search-params.js", "../../../../../shared/node_modules/core-js/modules/web.url-search-params.delete.js", "../../../../../shared/node_modules/core-js/modules/web.url-search-params.has.js", "../../../../../shared/node_modules/core-js/modules/web.url-search-params.size.js", "../../../../../shared/node_modules/core-js/stable/index.js", "../../../../../shared/node_modules/regenerator-runtime/runtime.js", "../../../../../shared/node_modules/chartkick/dist/chartkick.js", "../../../../../shared/node_modules/aos/dist/aos.js", "../../../../../shared/node_modules/@rails/actioncable/src/adapters.js", "../../../../../shared/node_modules/@rails/actioncable/src/logger.js", "../../../../../shared/node_modules/@rails/actioncable/src/connection_monitor.js", "../../../../../shared/node_modules/@rails/actioncable/src/internal.js", "../../../../../shared/node_modules/@rails/actioncable/src/connection.js", "../../../../../shared/node_modules/@rails/actioncable/src/subscription.js", "../../../../../shared/node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../../../shared/node_modules/@rails/actioncable/src/subscriptions.js", "../../../../../shared/node_modules/@rails/actioncable/src/consumer.js", "../../../../../shared/node_modules/@rails/actioncable/src/index.js", "../../../../../shared/node_modules/flatpickr/dist/plugins/monthSelect/index.js", "../../../../../shared/node_modules/flatpickr/dist/plugins/monthSelect/style.css", "../../../../../shared/node_modules/flatpickr/dist/plugins/rangePlugin.js", "../../../../../shared/node_modules/flatpickr/dist/flatpickr.css", "../../../../../shared/node_modules/apexcharts/dist/apexcharts.common.js", "../../javascript/application.js", "../../../../../shared/node_modules/chartkick/chart.js/chart.esm.js", "../../../../../shared/node_modules/@kurkle/color/dist/color.esm.js", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.core.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.math.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.collection.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.extras.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.easing.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.color.ts", "../../../../../shared/node_modules/chart.js/src/core/core.animations.defaults.js", "../../../../../shared/node_modules/chart.js/src/core/core.layouts.defaults.js", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.intl.ts", "../../../../../shared/node_modules/chart.js/src/core/core.ticks.js", "../../../../../shared/node_modules/chart.js/src/core/core.scale.defaults.js", "../../../../../shared/node_modules/chart.js/src/core/core.defaults.js", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.canvas.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.options.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.config.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.curve.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.dom.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.interpolation.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.rtl.ts", "../../../../../shared/node_modules/chart.js/src/helpers/helpers.segment.js", "../../../../../shared/node_modules/chart.js/src/core/core.animator.js", "../../../../../shared/node_modules/chart.js/src/core/core.animation.js", "../../../../../shared/node_modules/chart.js/src/core/core.animations.js", "../../../../../shared/node_modules/chart.js/src/core/core.datasetController.js", "../../../../../shared/node_modules/chart.js/src/controllers/controller.bar.js", "../../../../../shared/node_modules/chart.js/src/controllers/controller.bubble.js", "../../../../../shared/node_modules/chart.js/src/controllers/controller.doughnut.js", "../../../../../shared/node_modules/chart.js/src/controllers/controller.line.js", "../../../../../shared/node_modules/chart.js/src/controllers/controller.polarArea.js", "../../../../../shared/node_modules/chart.js/src/controllers/controller.pie.js", "../../../../../shared/node_modules/chart.js/src/controllers/controller.radar.js", "../../../../../shared/node_modules/chart.js/src/controllers/controller.scatter.js", "../../../../../shared/node_modules/chart.js/src/core/core.adapters.ts", "../../../../../shared/node_modules/chart.js/src/core/core.interaction.js", "../../../../../shared/node_modules/chart.js/src/core/core.layouts.js", "../../../../../shared/node_modules/chart.js/src/platform/platform.base.js", "../../../../../shared/node_modules/chart.js/src/platform/platform.basic.js", "../../../../../shared/node_modules/chart.js/src/platform/platform.dom.js", "../../../../../shared/node_modules/chart.js/src/platform/index.js", "../../../../../shared/node_modules/chart.js/src/core/core.element.ts", "../../../../../shared/node_modules/chart.js/src/core/core.scale.autoskip.js", "../../../../../shared/node_modules/chart.js/src/core/core.scale.js", "../../../../../shared/node_modules/chart.js/src/core/core.typedRegistry.js", "../../../../../shared/node_modules/chart.js/src/core/core.registry.js", "../../../../../shared/node_modules/chart.js/src/core/core.plugins.js", "../../../../../shared/node_modules/chart.js/src/core/core.config.js", "../../../../../shared/node_modules/chart.js/src/core/core.controller.js", "../../../../../shared/node_modules/chart.js/src/elements/element.arc.ts", "../../../../../shared/node_modules/chart.js/src/elements/element.line.js", "../../../../../shared/node_modules/chart.js/src/elements/element.point.ts", "../../../../../shared/node_modules/chart.js/src/elements/element.bar.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.colors.ts", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.decimation.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.filler/filler.segment.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.filler/filler.helper.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.filler/filler.options.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.filler/filler.target.stack.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.filler/simpleArc.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.filler/filler.target.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.filler/filler.drawing.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.filler/index.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.legend.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.title.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.subtitle.js", "../../../../../shared/node_modules/chart.js/src/plugins/plugin.tooltip.js", "../../../../../shared/node_modules/chart.js/src/scales/scale.category.js", "../../../../../shared/node_modules/chart.js/src/scales/scale.linearbase.js", "../../../../../shared/node_modules/chart.js/src/scales/scale.linear.js", "../../../../../shared/node_modules/chart.js/src/scales/scale.logarithmic.js", "../../../../../shared/node_modules/chart.js/src/scales/scale.radialLinear.js", "../../../../../shared/node_modules/chart.js/src/scales/scale.time.js", "../../../../../shared/node_modules/chart.js/src/scales/scale.timeseries.js", "../../../../../shared/node_modules/chart.js/src/index.ts", "../../../../../shared/node_modules/chart.js/auto/auto.js", "../../../../../shared/node_modules/date-fns/constants.js", "../../../../../shared/node_modules/date-fns/constructFrom.js", "../../../../../shared/node_modules/date-fns/toDate.js", "../../../../../shared/node_modules/date-fns/addDays.js", "../../../../../shared/node_modules/date-fns/addMonths.js", "../../../../../shared/node_modules/date-fns/addMilliseconds.js", "../../../../../shared/node_modules/date-fns/addHours.js", "../../../../../shared/node_modules/date-fns/_lib/defaultOptions.js", "../../../../../shared/node_modules/date-fns/startOfWeek.js", "../../../../../shared/node_modules/date-fns/startOfISOWeek.js", "../../../../../shared/node_modules/date-fns/getISOWeekYear.js", "../../../../../shared/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "../../../../../shared/node_modules/date-fns/_lib/normalizeDates.js", "../../../../../shared/node_modules/date-fns/startOfDay.js", "../../../../../shared/node_modules/date-fns/differenceInCalendarDays.js", "../../../../../shared/node_modules/date-fns/startOfISOWeekYear.js", "../../../../../shared/node_modules/date-fns/addMinutes.js", "../../../../../shared/node_modules/date-fns/addQuarters.js", "../../../../../shared/node_modules/date-fns/addSeconds.js", "../../../../../shared/node_modules/date-fns/addWeeks.js", "../../../../../shared/node_modules/date-fns/addYears.js", "../../../../../shared/node_modules/date-fns/compareAsc.js", "../../../../../shared/node_modules/date-fns/isDate.js", "../../../../../shared/node_modules/date-fns/isValid.js", "../../../../../shared/node_modules/date-fns/differenceInCalendarMonths.js", "../../../../../shared/node_modules/date-fns/differenceInCalendarYears.js", "../../../../../shared/node_modules/date-fns/differenceInDays.js", "../../../../../shared/node_modules/date-fns/_lib/getRoundingMethod.js", "../../../../../shared/node_modules/date-fns/differenceInHours.js", "../../../../../shared/node_modules/date-fns/differenceInMilliseconds.js", "../../../../../shared/node_modules/date-fns/differenceInMinutes.js", "../../../../../shared/node_modules/date-fns/endOfDay.js", "../../../../../shared/node_modules/date-fns/endOfMonth.js", "../../../../../shared/node_modules/date-fns/isLastDayOfMonth.js", "../../../../../shared/node_modules/date-fns/differenceInMonths.js", "../../../../../shared/node_modules/date-fns/differenceInQuarters.js", "../../../../../shared/node_modules/date-fns/differenceInSeconds.js", "../../../../../shared/node_modules/date-fns/differenceInWeeks.js", "../../../../../shared/node_modules/date-fns/differenceInYears.js", "../../../../../shared/node_modules/date-fns/startOfQuarter.js", "../../../../../shared/node_modules/date-fns/startOfMonth.js", "../../../../../shared/node_modules/date-fns/endOfYear.js", "../../../../../shared/node_modules/date-fns/startOfYear.js", "../../../../../shared/node_modules/date-fns/endOfHour.js", "../../../../../shared/node_modules/date-fns/endOfWeek.js", "../../../../../shared/node_modules/date-fns/endOfMinute.js", "../../../../../shared/node_modules/date-fns/endOfQuarter.js", "../../../../../shared/node_modules/date-fns/endOfSecond.js", "../../../../../shared/node_modules/date-fns/locale/en-US/_lib/formatDistance.js", "../../../../../shared/node_modules/date-fns/locale/_lib/buildFormatLongFn.js", "../../../../../shared/node_modules/date-fns/locale/en-US/_lib/formatLong.js", "../../../../../shared/node_modules/date-fns/locale/en-US/_lib/formatRelative.js", "../../../../../shared/node_modules/date-fns/locale/_lib/buildLocalizeFn.js", "../../../../../shared/node_modules/date-fns/locale/en-US/_lib/localize.js", "../../../../../shared/node_modules/date-fns/locale/_lib/buildMatchFn.js", "../../../../../shared/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js", "../../../../../shared/node_modules/date-fns/locale/en-US/_lib/match.js", "../../../../../shared/node_modules/date-fns/locale/en-US.js", "../../../../../shared/node_modules/date-fns/getDayOfYear.js", "../../../../../shared/node_modules/date-fns/getISOWeek.js", "../../../../../shared/node_modules/date-fns/getWeekYear.js", "../../../../../shared/node_modules/date-fns/startOfWeekYear.js", "../../../../../shared/node_modules/date-fns/getWeek.js", "../../../../../shared/node_modules/date-fns/_lib/addLeadingZeros.js", "../../../../../shared/node_modules/date-fns/_lib/format/lightFormatters.js", "../../../../../shared/node_modules/date-fns/_lib/format/formatters.js", "../../../../../shared/node_modules/date-fns/_lib/format/longFormatters.js", "../../../../../shared/node_modules/date-fns/_lib/protectedTokens.js", "../../../../../shared/node_modules/date-fns/format.js", "../../../../../shared/node_modules/date-fns/getDefaultOptions.js", "../../../../../shared/node_modules/date-fns/getISODay.js", "../../../../../shared/node_modules/date-fns/transpose.js", "../../../../../shared/node_modules/date-fns/parse/_lib/Setter.js", "../../../../../shared/node_modules/date-fns/parse/_lib/Parser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/EraParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/constants.js", "../../../../../shared/node_modules/date-fns/parse/_lib/utils.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/YearParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/QuarterParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/MonthParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js", "../../../../../shared/node_modules/date-fns/setWeek.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js", "../../../../../shared/node_modules/date-fns/setISOWeek.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/DateParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js", "../../../../../shared/node_modules/date-fns/setDay.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/DayParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js", "../../../../../shared/node_modules/date-fns/setISODay.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/ISODayParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/AMPMParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/MinuteParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/SecondParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js", "../../../../../shared/node_modules/date-fns/parse/_lib/parsers.js", "../../../../../shared/node_modules/date-fns/parse.js", "../../../../../shared/node_modules/date-fns/startOfHour.js", "../../../../../shared/node_modules/date-fns/startOfMinute.js", "../../../../../shared/node_modules/date-fns/startOfSecond.js", "../../../../../shared/node_modules/date-fns/parseISO.js", "../../../../../shared/node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js", "../../../../../shared/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/theme_controller.js", "../../javascript/controllers/alert_controller.js", "../../../../../shared/node_modules/@stimulus-components/animated-number/dist/stimulus-animated-number.mjs", "../../javascript/controllers/amount_validator_controller.js", "../../javascript/controllers/aos_controller.js", "../../javascript/controllers/apply_gst_controller.js", "../../../../../shared/node_modules/@stimulus-components/auto-submit/dist/stimulus-auto-submit.mjs", "../../../../../shared/node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../javascript/controllers/bulk_delivery/bulk_delivery_update_controller.js", "../../javascript/controllers/bulk_delivery/color_changer_controller.js", "../../javascript/controllers/bulk_delivery/delivery_controller.js", "../../javascript/controllers/bulk_delivery_navigate_controller.js", "../../javascript/controllers/bulk_delivery_payment_list_controller.js", "../../javascript/controllers/customer_filter_confirm_box_controller.js", "../../javascript/controllers/customer_leaves_controller.js", "../../javascript/controllers/customer_product_controller.js", "../../javascript/controllers/customer_event_booking_controller.js", "../../javascript/controllers/agency_customer_event_checkout_controller.js", "../../../../../shared/node_modules/swiper/shared/ssr-window.esm.mjs", "../../../../../shared/node_modules/swiper/shared/utils.mjs", "../../../../../shared/node_modules/swiper/shared/swiper-core.mjs", "../../../../../shared/node_modules/swiper/modules/virtual.mjs", "../../../../../shared/node_modules/swiper/modules/keyboard.mjs", "../../../../../shared/node_modules/swiper/modules/mousewheel.mjs", "../../../../../shared/node_modules/swiper/shared/create-element-if-not-defined.mjs", "../../../../../shared/node_modules/swiper/modules/navigation.mjs", "../../../../../shared/node_modules/swiper/shared/classes-to-selector.mjs", "../../../../../shared/node_modules/swiper/modules/pagination.mjs", "../../../../../shared/node_modules/swiper/modules/scrollbar.mjs", "../../../../../shared/node_modules/swiper/modules/parallax.mjs", "../../../../../shared/node_modules/swiper/modules/zoom.mjs", "../../../../../shared/node_modules/swiper/modules/controller.mjs", "../../../../../shared/node_modules/swiper/modules/a11y.mjs", "../../../../../shared/node_modules/swiper/modules/history.mjs", "../../../../../shared/node_modules/swiper/modules/hash-navigation.mjs", "../../../../../shared/node_modules/swiper/modules/autoplay.mjs", "../../../../../shared/node_modules/swiper/modules/thumbs.mjs", "../../../../../shared/node_modules/swiper/modules/free-mode.mjs", "../../../../../shared/node_modules/swiper/modules/grid.mjs", "../../../../../shared/node_modules/swiper/modules/manipulation.mjs", "../../../../../shared/node_modules/swiper/shared/effect-init.mjs", "../../../../../shared/node_modules/swiper/shared/effect-target.mjs", "../../../../../shared/node_modules/swiper/shared/effect-virtual-transition-end.mjs", "../../../../../shared/node_modules/swiper/modules/effect-fade.mjs", "../../../../../shared/node_modules/swiper/modules/effect-cube.mjs", "../../../../../shared/node_modules/swiper/shared/create-shadow.mjs", "../../../../../shared/node_modules/swiper/modules/effect-flip.mjs", "../../../../../shared/node_modules/swiper/modules/effect-coverflow.mjs", "../../../../../shared/node_modules/swiper/modules/effect-creative.mjs", "../../../../../shared/node_modules/swiper/modules/effect-cards.mjs", "../../../../../shared/node_modules/swiper/swiper-bundle.mjs", "../../../../../shared/node_modules/@stimulus-components/carousel/dist/stimulus-carousel.mjs", "../../../../../shared/node_modules/@stimulus-components/clipboard/dist/stimulus-clipboard.mjs", "../../javascript/controllers/date_range_controller.js", "../../javascript/controllers/delete_user_controller.js", "../../javascript/controllers/dialog_modal_controller.js", "../../javascript/controllers/dropdown_controller.js", "../../javascript/controllers/employee_payments_controller.js", "../../javascript/controllers/employee_wallet_amount_controller.js", "../../javascript/controllers/event_controller.js", "../../javascript/controllers/event_jar_booking_controller.js", "../../javascript/controllers/gateway_controller.js", "../../javascript/controllers/monthly_card_filter_controller.js", "../../javascript/controllers/multi_select_controller.js", "../../javascript/controllers/checkbox_select_all_controller.js", "../../javascript/controllers/expence_controller.js", "../../javascript/controllers/fancy_select_controller.js", "../../javascript/controllers/fetch_agency_user_controller.js", "../../javascript/controllers/fetch_customer_controller.js", "../../javascript/controllers/fetch_event_product_bookings_controller.js", "../../javascript/controllers/flash_remove_controller.js", "../../javascript/controllers/mobile_blur_controller.js", "../../javascript/controllers/mobile_no_validator_controller.js", "../../javascript/controllers/marketing_lead_modal_controller.js", "../../javascript/controllers/image_preview_controller.js", "../../javascript/controllers/nav_toggle_controller.js", "../../javascript/controllers/tabs_controller.js", "../../javascript/controllers/number_increment_decrement_controller.js", "../../javascript/controllers/opening_delivery_controller.js", "../../javascript/controllers/opening_amount_controller.js", "../../javascript/controllers/payment_reminder_controller.js", "../../javascript/controllers/print_reports_controller.js", "../../javascript/controllers/product_confirm_box_controller.js", "../../javascript/controllers/product_images_preview_controller.js", "../../javascript/controllers/profiles_controller.js", "../../javascript/controllers/product_inventory_controller.js", "../../javascript/controllers/profit_and_loss_controller.js", "../../javascript/controllers/randomize_mobile_no_controller.js", "../../javascript/controllers/report_page_size_controller.js", "../../javascript/controllers/reports_controller.js", "../../javascript/controllers/request_reports_controller.js", "../../javascript/controllers/schedule_delivery_controller.js", "../../javascript/controllers/sms_settings_controller.js", "../../javascript/controllers/search_filter_controller.js", "../../javascript/controllers/turbo_frame_loader_controller.js", "../../javascript/controllers/loader_controller.js", "../../../../../shared/node_modules/sortablejs/modular/sortable.esm.js", "../../javascript/controllers/sortable_controller.js", "../../javascript/controllers/scroll_controller.js", "../../javascript/controllers/settings_nav_controller.js", "../../javascript/controllers/toggle_no_of_customer_controller.js", "../../javascript/controllers/user_permission_controller.js", "../../javascript/controllers/verify_otp_controller.js", "../../javascript/controllers/visibility_controller.js", "../../javascript/controllers/fetch_group_controller.js", "../../javascript/controllers/password_visibility_controller.js", "../../javascript/controllers/warn_and_block_controller.js", "../../javascript/controllers/bulk_deliveries_controller.js", "../../../../../shared/node_modules/flatpickr/dist/esm/types/options.js", "../../../../../shared/node_modules/flatpickr/dist/esm/l10n/default.js", "../../../../../shared/node_modules/flatpickr/dist/esm/utils/index.js", "../../../../../shared/node_modules/flatpickr/dist/esm/utils/dom.js", "../../../../../shared/node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../../../shared/node_modules/flatpickr/dist/esm/utils/dates.js", "../../../../../shared/node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../../../shared/node_modules/flatpickr/dist/esm/index.js", "../../javascript/controllers/month_picker_controller.js", "../../javascript/controllers/date_picker_controller.js", "../../javascript/controllers/date_range_picker_controller.js", "../../javascript/controllers/date_time_picker_controller.js", "../../javascript/controllers/tickets_controller.js", "../../javascript/controllers/graps_controller.js", "../../javascript/controllers/nested_form_controller.js", "../../javascript/controllers/banner_item_controller.js", "../../javascript/controllers/row_sort_controller.js", "../../javascript/controllers/online_product_form_controller.js", "../../javascript/controllers/online_discount_form_controller.js", "../../javascript/controllers/tab_controller.js", "../../javascript/controllers/shop_modal_controller.js", "../../javascript/controllers/panel_tabs_controller.js", "../../javascript/controllers/tag_input_controller.js", "../../javascript/controllers/index.js", "../../../../../shared/node_modules/trix/src/trix/config/attachments.js", "../../../../../shared/node_modules/trix/src/trix/config/block_attributes.js", "../../../../../shared/node_modules/trix/src/trix/config/browser.js", "../../../../../shared/node_modules/trix/src/trix/config/dompurify.js", "../../../../../shared/node_modules/trix/src/trix/config/lang.js", "../../../../../shared/node_modules/trix/src/trix/config/file_size_formatting.js", "../../../../../shared/node_modules/trix/src/trix/constants.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/extend.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/dom.js", "../../../../../shared/node_modules/trix/src/trix/config/input.js", "../../../../../shared/node_modules/trix/src/trix/config/key_names.js", "../../../../../shared/node_modules/trix/src/trix/config/parser.js", "../../../../../shared/node_modules/trix/src/trix/config/text_attributes.js", "../../../../../shared/node_modules/trix/src/trix/config/toolbar.js", "../../../../../shared/node_modules/trix/src/trix/config/undo.js", "../../../../../shared/node_modules/trix/src/trix/config/css.js", "../../../../../shared/node_modules/trix/src/trix/core/basic_object.js", "../../../../../shared/node_modules/trix/src/trix/core/utilities/utf16_string.js", "../../../../../shared/node_modules/trix/src/trix/core/object.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/arrays.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/bidi.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/config.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/custom_elements.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/events.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/functions.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/objects.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/ranges.js", "../../../../../shared/node_modules/trix/src/trix/observers/selection_change_observer.js", "../../../../../shared/node_modules/trix/src/trix/core/helpers/strings.js", "../../../../../shared/node_modules/trix/src/trix/core/collections/hash.js", "../../../../../shared/node_modules/trix/src/trix/core/collections/object_group.js", "../../../../../shared/node_modules/trix/src/trix/core/collections/object_map.js", "../../../../../shared/node_modules/trix/src/trix/core/collections/element_store.js", "../../../../../shared/node_modules/trix/src/trix/core/utilities/operation.js", "../../../../../shared/node_modules/trix/src/trix/views/object_view.js", "../../../../../shared/node_modules/trix/node_modules/dompurify/dist/purify.es.mjs", "../../../../../shared/node_modules/trix/src/trix/models/html_sanitizer.js", "../../../../../shared/node_modules/trix/src/trix/views/attachment_view.js", "../../../../../shared/node_modules/trix/src/trix/views/previewable_attachment_view.js", "../../../../../shared/node_modules/trix/src/trix/views/piece_view.js", "../../../../../shared/node_modules/trix/src/trix/views/text_view.js", "../../../../../shared/node_modules/trix/src/trix/views/block_view.js", "../../../../../shared/node_modules/trix/src/trix/views/document_view.js", "../../../../../shared/node_modules/trix/src/trix/models/piece.js", "../../../../../shared/node_modules/trix/src/trix/operations/image_preload_operation.js", "../../../../../shared/node_modules/trix/src/trix/models/attachment.js", "../../../../../shared/node_modules/trix/src/trix/models/attachment_piece.js", "../../../../../shared/node_modules/trix/src/trix/models/string_piece.js", "../../../../../shared/node_modules/trix/src/trix/models/splittable_list.js", "../../../../../shared/node_modules/trix/src/trix/models/text.js", "../../../../../shared/node_modules/trix/src/trix/models/block.js", "../../../../../shared/node_modules/trix/src/trix/models/document.js", "../../../../../shared/node_modules/trix/src/trix/models/html_parser.js", "../../../../../shared/node_modules/trix/src/trix/core/serialization.js", "../../../../../shared/node_modules/trix/src/trix/models/managed_attachment.js", "../../../../../shared/node_modules/trix/src/trix/models/attachment_manager.js", "../../../../../shared/node_modules/trix/src/trix/models/line_break_insertion.js", "../../../../../shared/node_modules/trix/src/trix/models/composition.js", "../../../../../shared/node_modules/trix/src/trix/models/undo_manager.js", "../../../../../shared/node_modules/trix/src/trix/filters/filter.js", "../../../../../shared/node_modules/trix/src/trix/filters/attachment_gallery_filter.js", "../../../../../shared/node_modules/trix/src/trix/models/editor.js", "../../../../../shared/node_modules/trix/src/trix/models/location_mapper.js", "../../../../../shared/node_modules/trix/src/trix/models/point_mapper.js", "../../../../../shared/node_modules/trix/src/trix/models/selection_manager.js", "../../../../../shared/node_modules/trix/src/trix/controllers/attachment_editor_controller.js", "../../../../../shared/node_modules/trix/src/trix/controllers/composition_controller.js", "../../../../../shared/node_modules/trix/src/trix/controllers/controller.js", "../../../../../shared/node_modules/trix/src/trix/observers/mutation_observer.js", "../../../../../shared/node_modules/trix/src/trix/operations/file_verification_operation.js", "../../../../../shared/node_modules/trix/src/trix/models/flaky_android_keyboard_detector.js", "../../../../../shared/node_modules/trix/src/trix/controllers/input_controller.js", "../../../../../shared/node_modules/trix/src/trix/controllers/level_0_input_controller.js", "../../../../../shared/node_modules/trix/src/trix/controllers/level_2_input_controller.js", "../../../../../shared/node_modules/trix/src/trix/controllers/toolbar_controller.js", "../../../../../shared/node_modules/trix/src/trix/controllers/editor_controller.js", "../../../../../shared/node_modules/trix/src/trix/elements/trix_toolbar_element.js", "../../../../../shared/node_modules/trix/src/trix/elements/trix_editor_element.js", "../../../../../shared/node_modules/trix/src/trix/trix.js", "../../../../../shared/node_modules/@rails/actiontext/app/assets/javascripts/actiontext.esm.js"],
  "sourcesContent": ["'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n", "'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n", "'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n", "'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n", "'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n  !Symbol.sham &&\n  typeof Symbol.iterator == 'symbol';\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n", "'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n", "'use strict';\nmodule.exports = false;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    globalThis[key] = value;\n  } return value;\n};\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n  version: '3.40.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '\u00A9 2014-2025 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.40.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n", "'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n  return store[key] || (store[key] = value || {});\n};\n", "'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n", "'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n", "'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n", "'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    if (length === 0) return !IS_INCLUDES && -1;\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n", "'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n", "'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = globalThis;\n  } else if (STATIC) {\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n", "'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n  activeXDocument = null;\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n", "'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) === 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n", "'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis;\n", "'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n", "'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, [], argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n", "'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? $Array : C;\n};\n", "'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE === 1;\n  var IS_FILTER = TYPE === 2;\n  var IS_SOME = TYPE === 3;\n  var IS_EVERY = TYPE === 4;\n  var IS_FIND_INDEX = TYPE === 6;\n  var IS_FILTER_REJECT = TYPE === 7;\n  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(self);\n    var boundFunction = bind(callbackfn, that);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = globalThis.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = globalThis.RangeError;\nvar TypeError = globalThis.TypeError;\nvar QObject = globalThis.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      var $this = this === undefined ? globalThis : this;\n      if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;\n      var descriptor = createPropertyDescriptor(1, value);\n      try {\n        setSymbolDescriptor($this, tag, descriptor);\n      } catch (error) {\n        if (!(error instanceof RangeError)) throw error;\n        fallbackDefineProperty($this, tag, descriptor);\n      }\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    defineBuiltInAccessor(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n", "'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n  if (isCallable(replacer)) return replacer;\n  if (!isArray(replacer)) return;\n  var rawLength = replacer.length;\n  var keys = [];\n  for (var i = 0; i < rawLength; i++) {\n    var element = replacer[i];\n    if (typeof element == 'string') push(keys, element);\n    else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n  }\n  var keysLength = keys.length;\n  var root = true;\n  return function (key, value) {\n    if (root) {\n      root = false;\n      return value;\n    }\n    if (isArray(this)) return value;\n    for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n  };\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')('stringify detection');\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) !== '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) !== '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = getReplacerFunction(replacer);\n  if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n  args[1] = function (key, value) {\n    // some old implementations (like WebKit) could pass numbers as keys\n    if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n    if (!isSymbol(value)) return value;\n  };\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n", "// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = globalThis.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n    var result = isPrototypeOf(SymbolPrototype, this)\n      // eslint-disable-next-line sonarjs/inconsistent-function-call -- ok\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  SymbolWrapper.prototype = SymbolPrototype;\n  SymbolPrototype.constructor = SymbolWrapper;\n\n  var NATIVE_SYMBOL = String(NativeSymbol('description detection')) === 'Symbol(description detection)';\n  var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n  var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  var replace = uncurryThis(''.replace);\n  var stringSlice = uncurryThis(''.slice);\n\n  defineBuiltInAccessor(SymbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = thisSymbolValue(this);\n      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n      var string = symbolDescriptiveString(symbol);\n      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, constructor: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n", "'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n  return isObject(argument) || argument === null;\n};\n", "'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (isPossiblePrototype(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n", "'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    requireObjectCoercible(O);\n    aPossiblePrototype(proto);\n    if (!isObject(O)) return O;\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n", "'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = new Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n", "'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n  if (ERROR_STACK_INSTALLABLE) {\n    if (captureStackTrace) captureStackTrace(error, C);\n    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n  }\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n  var STACK_TRACE_LIMIT = 'stackTraceLimit';\n  var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n  var path = FULL_NAME.split('.');\n  var ERROR_NAME = path[path.length - 1];\n  var OriginalError = getBuiltIn.apply(null, path);\n\n  if (!OriginalError) return;\n\n  var OriginalErrorPrototype = OriginalError.prototype;\n\n  // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n  if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n  if (!FORCED) return OriginalError;\n\n  var BaseError = getBuiltIn('Error');\n\n  var WrappedError = wrapper(function (a, b) {\n    var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n    var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n    if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n    installErrorStack(result, WrappedError, result.stack, 2);\n    if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n    if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n    return result;\n  });\n\n  WrappedError.prototype = OriginalErrorPrototype;\n\n  if (ERROR_NAME !== 'Error') {\n    if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n    else copyConstructorProperties(WrappedError, BaseError, { name: true });\n  } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n    proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n    proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n  }\n\n  copyConstructorProperties(WrappedError, OriginalError);\n\n  if (!IS_PURE) try {\n    // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n    if (OriginalErrorPrototype.name !== ERROR_NAME) {\n      createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n    }\n    OriginalErrorPrototype.constructor = WrappedError;\n  } catch (error) { /* empty */ }\n\n  return WrappedError;\n};\n", "'use strict';\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = globalThis[WEB_ASSEMBLY];\n\n// eslint-disable-next-line es/no-error-cause -- feature detection\nvar FORCED = new Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  var O = {};\n  O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n  $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  if (WebAssembly && WebAssembly[ERROR_NAME]) {\n    var O = {};\n    O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n    $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n  }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n  return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n  return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n  return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n  return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n  return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n  return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n  return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n  return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n  return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n  return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\n\nvar nativeErrorToString = Error.prototype.toString;\n\nvar INCORRECT_TO_STRING = fails(function () {\n  if (DESCRIPTORS) {\n    // Chrome 32- incorrectly call accessor\n    // eslint-disable-next-line es/no-object-create, es/no-object-defineproperty -- safe\n    var object = Object.create(Object.defineProperty({}, 'name', { get: function () {\n      return this === object;\n    } }));\n    if (nativeErrorToString.call(object) !== 'true') return true;\n  }\n  // FF10- does not properly handle non-strings\n  return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\n    // IE8 does not properly handle defaults\n    || nativeErrorToString.call({}) !== 'Error';\n});\n\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\n  var O = anObject(this);\n  var name = normalizeStringArgument(O.name, 'Error');\n  var message = normalizeStringArgument(O.message);\n  return !name ? message : !message ? name : name + ': ' + message;\n} : nativeErrorToString;\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar errorToString = require('../internals/error-to-string');\n\nvar ErrorPrototype = Error.prototype;\n\n// `Error.prototype.toString` method fix\n// https://tc39.es/ecma262/#sec-error.prototype.tostring\nif (ErrorPrototype.toString !== errorToString) {\n  defineBuiltIn(ErrorPrototype, 'toString', errorToString);\n}\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", "'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n  var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n  var that;\n  if (setPrototypeOf) {\n    that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n  } else {\n    that = isInstance ? this : create(AggregateErrorPrototype);\n    createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n  }\n  if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n  installErrorStack(that, $AggregateError, that.stack, 1);\n  if (arguments.length > 2) installErrorCause(that, arguments[2]);\n  var errorsArray = [];\n  iterate(errors, push, { that: errorsArray });\n  createNonEnumerableProperty(that, 'errors', errorsArray);\n  return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n  constructor: createPropertyDescriptor(1, $AggregateError),\n  message: createPropertyDescriptor(1, ''),\n  name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n  AggregateError: $AggregateError\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar fails = require('../internals/fails');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar AGGREGATE_ERROR = 'AggregateError';\nvar $AggregateError = getBuiltIn(AGGREGATE_ERROR);\n\nvar FORCED = !fails(function () {\n  return $AggregateError([1]).errors[0] !== 1;\n}) && fails(function () {\n  return $AggregateError([1], AGGREGATE_ERROR, { cause: 7 }).cause !== 7;\n});\n\n// https://tc39.es/ecma262/#sec-aggregate-error\n$({ global: true, constructor: true, arity: 2, forced: FORCED }, {\n  AggregateError: wrapErrorConstructorWithCause(AGGREGATE_ERROR, function (init) {\n    // eslint-disable-next-line no-unused-vars -- required for functions `.length`\n    return function AggregateError(errors, message) { return apply(init, this, arguments); };\n  }, FORCED, true)\n});\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.at` method\n// https://tc39.es/ecma262/#sec-array.prototype.at\n$({ target: 'Array', proto: true }, {\n  at: function at(index) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : O[k];\n  }\n});\n\naddToUnscopables('at');\n", "'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n  else object[key] = value;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        doesNotExceedSafeInteger(n + len);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        doesNotExceedSafeInteger(n + 1);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n", "'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n", "'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n  var O = toObject(this);\n  var len = lengthOfArrayLike(O);\n  var to = toAbsoluteIndex(target, len);\n  var from = toAbsoluteIndex(start, len);\n  var end = arguments.length > 2 ? arguments[2] : undefined;\n  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n  var inc = 1;\n  if (from < to && to < from + count) {\n    inc = -1;\n    from += count - 1;\n    to += count - 1;\n  }\n  while (count-- > 0) {\n    if (from in O) O[to] = O[from];\n    else deletePropertyOrThrow(O, to);\n    to += inc;\n    from += inc;\n  } return O;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n  copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = lengthOfArrayLike(O);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n  fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n", "'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-find -- testing\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n", "'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\n// eslint-disable-next-line es/no-array-prototype-findindex -- testing\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  findIndex: function findIndex(callbackfn /* , that = undefined */) {\n    return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_FIND_LAST_INDEX = TYPE === 1;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var index = lengthOfArrayLike(self);\n    var boundFunction = bind(callbackfn, that);\n    var value, result;\n    while (index-- > 0) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (result) switch (TYPE) {\n        case 0: return value; // findLast\n        case 1: return index; // findLastIndex\n      }\n    }\n    return IS_FIND_LAST_INDEX ? -1 : undefined;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.findLast` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLast: createMethod(0),\n  // `Array.prototype.findLastIndex` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLastIndex: createMethod(1)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlast\n$({ target: 'Array', proto: true }, {\n  findLast: function findLast(callbackfn /* , that = undefined */) {\n    return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\naddToUnscopables('findLast');\n", "'use strict';\nvar $ = require('../internals/export');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlastindex\n$({ target: 'Array', proto: true }, {\n  findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {\n    return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\naddToUnscopables('findLastIndex');\n", "'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n  var targetIndex = start;\n  var sourceIndex = 0;\n  var mapFn = mapper ? bind(mapper, thisArg) : false;\n  var element, elementLen;\n\n  while (sourceIndex < sourceLen) {\n    if (sourceIndex in source) {\n      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n      if (depth > 0 && isArray(element)) {\n        elementLen = lengthOfArrayLike(element);\n        targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n      } else {\n        doesNotExceedSafeInteger(targetIndex + 1);\n        target[targetIndex] = element;\n      }\n\n      targetIndex++;\n    }\n    sourceIndex++;\n  }\n  return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n", "'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n  flat: function flat(/* depthArg = 1 */) {\n    var depthArg = arguments.length ? arguments[0] : undefined;\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n    return A;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n  flatMap: function flatMap(callbackfn /* , thisArg */) {\n    var O = toObject(this);\n    var sourceLen = lengthOfArrayLike(O);\n    var A;\n    aCallable(callbackfn);\n    A = arraySpeciesCreate(O, 0);\n    A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n    return A;\n  }\n});\n", "'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n", "'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach !== forEach }, {\n  forEach: forEach\n});\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n    result = IS_CONSTRUCTOR ? new this() : [];\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  try {\n    if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  } catch (error) { return false; } // workaround of old WebKit + `eval` bug\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n  // eslint-disable-next-line es/no-array-prototype-includes -- detection\n  return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n", "'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    }\n\n    return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n", "'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = null;\n    return createIterResultObject(undefined, true);\n  }\n  switch (state.kind) {\n    case 'keys': return createIterResultObject(index, false);\n    case 'values': return createIterResultObject(target[index], false);\n  } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  join: function join(separator) {\n    return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n", "'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n  // convert -0 to +0\n  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n  var O = toIndexedObject(this);\n  var length = lengthOfArrayLike(O);\n  if (length === 0) return -1;\n  var index = length - 1;\n  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n  if (index < 0) index = length + index;\n  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n  return -1;\n} : $lastIndexOf;\n", "'use strict';\nvar $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n  lastIndexOf: lastIndexOf\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isConstructor = require('../internals/is-constructor');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\n\nvar ISNT_GENERIC = fails(function () {\n  function F() { /* empty */ }\n  // eslint-disable-next-line es/no-array-of -- safe\n  return !($Array.of.call(F) instanceof F);\n});\n\n// `Array.of` method\n// https://tc39.es/ecma262/#sec-array.of\n// WebKit Array.of isn't generic\n$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {\n  of: function of(/* ...args */) {\n    var index = 0;\n    var argumentsLength = arguments.length;\n    var result = new (isConstructor(this) ? this : $Array)(argumentsLength);\n    while (argumentsLength > index) createProperty(result, index, arguments[index++]);\n    result.length = argumentsLength;\n    return result;\n  }\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\nvar REDUCE_EMPTY = 'Reduce of empty array with no initial value';\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    aCallable(callbackfn);\n    if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw new $TypeError(REDUCE_EMPTY);\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n", "'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n  return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n  if (userAgentStartsWith('Bun/')) return 'BUN';\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n  if (userAgentStartsWith('Deno/')) return 'DENO';\n  if (userAgentStartsWith('Node.js/')) return 'NODE';\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n  if (classof(globalThis.process) === 'process') return 'NODE';\n  if (globalThis.window && globalThis.document) return 'BROWSER';\n  return 'REST';\n})();\n", "'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n", "'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $reduceRight = require('../internals/array-reduce').right;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduceRight');\n\n// `Array.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduceright\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n    return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n  reverse: function reverse() {\n    // eslint-disable-next-line no-self-assign -- dirty hack\n    if (isArray(this)) this.length = this.length;\n    return nativeReverse(this);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === $Array || Constructor === undefined) {\n        return nativeSlice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar arraySlice = require('../internals/array-slice');\n\nvar floor = Math.floor;\n\nvar sort = function (array, comparefn) {\n  var length = array.length;\n\n  if (length < 8) {\n    // insertion sort\n    var i = 1;\n    var element, j;\n\n    while (i < length) {\n      j = i;\n      element = array[i];\n      while (j && comparefn(array[j - 1], element) > 0) {\n        array[j] = array[--j];\n      }\n      if (j !== i++) array[j] = element;\n    }\n  } else {\n    // merge sort\n    var middle = floor(length / 2);\n    var left = sort(arraySlice(array, 0, middle), comparefn);\n    var right = sort(arraySlice(array, middle), comparefn);\n    var llength = left.length;\n    var rlength = right.length;\n    var lindex = 0;\n    var rindex = 0;\n\n    while (lindex < llength || rindex < rlength) {\n      array[lindex + rindex] = (lindex < llength && rindex < rlength)\n        ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n        : lindex < llength ? left[lindex++] : right[rindex++];\n    }\n  }\n\n  return array;\n};\n\nmodule.exports = sort;\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n", "'use strict';\nvar UA = require('../internals/environment-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = lengthOfArrayLike(items);\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n    return array;\n  }\n});\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n", "'use strict';\nvar setSpecies = require('../internals/set-species');\n\n// `Array[@@species]` getter\n// https://tc39.es/ecma262/#sec-get-array-@@species\nsetSpecies('Array');\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    setArrayLength(O, len - actualDeleteCount + insertCount);\n    return A;\n  }\n});\n", "'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n  var len = lengthOfArrayLike(O);\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = O[len - k - 1];\n  return A;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar $Array = Array;\n\n// `Array.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-array.prototype.toreversed\n$({ target: 'Array', proto: true }, {\n  toReversed: function toReversed() {\n    return arrayToReversed(toIndexedObject(this), $Array);\n  }\n});\n\naddToUnscopables('toReversed');\n", "'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list, $length) {\n  var index = 0;\n  var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = function (CONSTRUCTOR, METHOD) {\n  var Constructor = globalThis[CONSTRUCTOR];\n  var Prototype = Constructor && Constructor.prototype;\n  return Prototype && Prototype[METHOD];\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar $Array = Array;\nvar sort = uncurryThis(getBuiltInPrototypeMethod('Array', 'sort'));\n\n// `Array.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-array.prototype.tosorted\n$({ target: 'Array', proto: true }, {\n  toSorted: function toSorted(compareFn) {\n    if (compareFn !== undefined) aCallable(compareFn);\n    var O = toIndexedObject(this);\n    var A = arrayFromConstructorAndList($Array, O);\n    return sort(A, compareFn);\n  }\n});\n\naddToUnscopables('toSorted');\n", "'use strict';\nvar $ = require('../internals/export');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $Array = Array;\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.toSpliced` method\n// https://tc39.es/ecma262/#sec-array.prototype.tospliced\n$({ target: 'Array', proto: true }, {\n  toSpliced: function toSpliced(start, deleteCount /* , ...items */) {\n    var O = toIndexedObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var k = 0;\n    var insertCount, actualDeleteCount, newLen, A;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    newLen = doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = $Array(newLen);\n\n    for (; k < actualStart; k++) A[k] = O[k];\n    for (; k < actualStart + insertCount; k++) A[k] = arguments[k - actualStart + 2];\n    for (; k < newLen; k++) A[k] = O[k + actualDeleteCount - insertCount];\n\n    return A;\n  }\n});\n\naddToUnscopables('toSpliced');\n", "'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n", "'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\n\n// IE8-\nvar INCORRECT_RESULT = [].unshift(0) !== 1;\n\n// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).unshift();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();\n\n// `Array.prototype.unshift` method\n// https://tc39.es/ecma262/#sec-array.prototype.unshift\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  unshift: function unshift(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    if (argCount) {\n      doesNotExceedSafeInteger(len + argCount);\n      var k = len;\n      while (k--) {\n        var to = k + argCount;\n        if (k in O) O[to] = O[k];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (var j = 0; j < argCount; j++) {\n        O[j] = arguments[j];\n      }\n    } return setArrayLength(O, len + argCount);\n  }\n});\n", "'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n  if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n  return A;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar arrayWith = require('../internals/array-with');\nvar toIndexedObject = require('../internals/to-indexed-object');\n\nvar $Array = Array;\n\n// `Array.prototype.with` method\n// https://tc39.es/ecma262/#sec-array.prototype.with\n$({ target: 'Array', proto: true }, {\n  'with': function (index, value) {\n    return arrayWith(toIndexedObject(this), $Array, index, value);\n  }\n});\n", "'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n", "'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw new $RangeError('Wrong length or index');\n  return length;\n};\n", "'use strict';\n// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n  var n = +x;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return n === 0 || n !== n ? n : n < 0 ? -1 : 1;\n};\n", "'use strict';\nvar EPSILON = 2.220446049250313e-16; // Number.EPSILON\nvar INVERSE_EPSILON = 1 / EPSILON;\n\nmodule.exports = function (n) {\n  return n + INVERSE_EPSILON - INVERSE_EPSILON;\n};\n", "'use strict';\nvar sign = require('../internals/math-sign');\nvar roundTiesToEven = require('../internals/math-round-ties-to-even');\n\nvar abs = Math.abs;\n\nvar EPSILON = 2.220446049250313e-16; // Number.EPSILON\n\nmodule.exports = function (x, FLOAT_EPSILON, FLOAT_MAX_VALUE, FLOAT_MIN_VALUE) {\n  var n = +x;\n  var absolute = abs(n);\n  var s = sign(n);\n  if (absolute < FLOAT_MIN_VALUE) return s * roundTiesToEven(absolute / FLOAT_MIN_VALUE / FLOAT_EPSILON) * FLOAT_MIN_VALUE * FLOAT_EPSILON;\n  var a = (1 + FLOAT_EPSILON / EPSILON) * absolute;\n  var result = a - (a - absolute);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (result > FLOAT_MAX_VALUE || result !== result) return s * Infinity;\n  return s * result;\n};\n", "'use strict';\nvar floatRound = require('../internals/math-float-round');\n\nvar FLOAT32_EPSILON = 1.1920928955078125e-7; // 2 ** -23;\nvar FLOAT32_MAX_VALUE = 3.4028234663852886e+38; // 2 ** 128 - 2 ** 104\nvar FLOAT32_MIN_VALUE = 1.1754943508222875e-38; // 2 ** -126;\n\n// `Math.fround` method implementation\n// https://tc39.es/ecma262/#sec-math.fround\n// eslint-disable-next-line es/no-math-fround -- safe\nmodule.exports = Math.fround || function fround(x) {\n  return floatRound(x, FLOAT32_EPSILON, FLOAT32_MAX_VALUE, FLOAT32_MIN_VALUE);\n};\n", "'use strict';\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = $Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number !== number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number !== number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    c = pow(2, -exponent);\n    if (number * c < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent += eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  while (mantissaLength >= 8) {\n    buffer[index++] = mantissa & 255;\n    mantissa /= 256;\n    mantissaLength -= 8;\n  }\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  while (exponentLength > 0) {\n    buffer[index++] = exponent & 255;\n    exponent /= 256;\n    exponentLength -= 8;\n  }\n  buffer[index - 1] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  while (nBits > 0) {\n    exponent = exponent * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  while (nBits > 0) {\n    mantissa = mantissa * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa += pow(2, mantissaLength);\n    exponent -= eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar fround = require('../internals/math-fround');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\nvar setInternalState = InternalStateModule.set;\nvar NativeArrayBuffer = globalThis[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = globalThis[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = globalThis.Array;\nvar RangeError = globalThis.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(fround(number), 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key, getInternalState) {\n  defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\n    configurable: true,\n    get: function () {\n      return getInternalState(this)[key];\n    }\n  });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var store = getInternalDataViewState(view);\n  var intIndex = toIndex(index);\n  var boolIsLittleEndian = !!isLittleEndian;\n  if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);\n  var bytes = store.bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = arraySlice(bytes, start, start + count);\n  return boolIsLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var store = getInternalDataViewState(view);\n  var intIndex = toIndex(index);\n  var pack = conversion(+value);\n  var boolIsLittleEndian = !!isLittleEndian;\n  if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX);\n  var bytes = store.bytes;\n  var start = intIndex + store.byteOffset;\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, ArrayBufferPrototype);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      type: ARRAY_BUFFER,\n      bytes: fill(Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) {\n      this.byteLength = byteLength;\n      this.detached = false;\n    }\n  };\n\n  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, DataViewPrototype);\n    anInstance(buffer, ArrayBufferPrototype);\n    var bufferState = getInternalArrayBufferState(buffer);\n    var bufferLength = bufferState.byteLength;\n    var offset = toIntegerOrInfinity(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      type: DATA_VIEW,\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset,\n      bytes: bufferState.bytes\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  DataViewPrototype = $DataView[PROTOTYPE];\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\n    addGetter($DataView, 'buffer', getInternalDataViewState);\n    addGetter($DataView, 'byteLength', getInternalDataViewState);\n    addGetter($DataView, 'byteOffset', getInternalDataViewState);\n  }\n\n  defineBuiltIns(DataViewPrototype, {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\n    }\n  });\n} else {\n  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n  /* eslint-disable no-new, sonarjs/inconsistent-function-call -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n  })) {\n    /* eslint-enable no-new, sonarjs/inconsistent-function-call -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, ArrayBufferPrototype);\n      return inheritIfRequired(new NativeArrayBuffer(toIndex(length)), this, $ArrayBuffer);\n    };\n\n    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n\n    copyConstructorProperties($ArrayBuffer, NativeArrayBuffer);\n  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf(DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = globalThis[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n", "'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n  var proto = getPrototypeOf(it);\n  if (!isObject(proto)) return;\n  var state = getInternalState(proto);\n  return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = globalThis[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = globalThis[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = globalThis[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = globalThis[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = globalThis[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw new TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n    configurable: true,\n    get: function () {\n      return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n    }\n  });\n  for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n    createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  getTypedArrayConstructor: getTypedArrayConstructor,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\n// `ArrayBuffer.isView` method\n// https://tc39.es/ecma262/#sec-arraybuffer.isview\n$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n  isView: ArrayBufferViewCore.isView\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (nativeArrayBufferSlice && end === undefined) {\n      return nativeArrayBufferSlice(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new ArrayBuffer(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      setUint8(viewTarget, index++, getUint8(viewSource, first++));\n    } return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\n\n// `DataView` constructor\n// https://tc39.es/ecma262/#sec-dataview-constructor\n$({ global: true, constructor: true, forced: !NATIVE_ARRAY_BUFFER }, {\n  DataView: ArrayBufferModule.DataView\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.data-view.constructor');\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar TypeError = globalThis.TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n  return O.byteLength;\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n  try {\n    // eslint-disable-next-line no-new -- thrower\n    new DataView(O);\n    return false;\n  } catch (error) {\n    return true;\n  }\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\n// `ArrayBuffer.prototype.detached` getter\n// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n    configurable: true,\n    get: function detached() {\n      return isDetached(this);\n    }\n  });\n}\n", "'use strict';\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n  return it;\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar IS_NODE = require('../internals/environment-is-node');\n\nmodule.exports = function (name) {\n  if (IS_NODE) {\n    try {\n      return globalThis.process.getBuiltinModule(name);\n    } catch (error) { /* empty */ }\n    try {\n      // eslint-disable-next-line no-new-func -- safe\n      return Function('return require(\"' + name + '\")')();\n    } catch (error) { /* empty */ }\n  }\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/environment-v8-version');\nvar ENVIRONMENT = require('../internals/environment');\n\nvar structuredClone = globalThis.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n  // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n  var buffer = new ArrayBuffer(8);\n  var clone = structuredClone(buffer, { transfer: [buffer] });\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar getBuiltInNodeModule = require('../internals/get-built-in-node-module');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar $ArrayBuffer = globalThis.ArrayBuffer;\nvar $MessageChannel = globalThis.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n  detach = function (transferable) {\n    structuredClone(transferable, { transfer: [transferable] });\n  };\n} else if ($ArrayBuffer) try {\n  if (!$MessageChannel) {\n    WorkerThreads = getBuiltInNodeModule('worker_threads');\n    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n  }\n\n  if ($MessageChannel) {\n    channel = new $MessageChannel();\n    buffer = new $ArrayBuffer(2);\n\n    $detach = function (transferable) {\n      channel.port1.postMessage(null, [transferable]);\n    };\n\n    if (buffer.byteLength === 2) {\n      $detach(buffer);\n      if (buffer.byteLength === 0) detach = $detach;\n    }\n  }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar notDetached = require('../internals/array-buffer-not-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n  var byteLength = arrayBufferByteLength(arrayBuffer);\n  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n  var fixedLength = !isResizable || !isResizable(arrayBuffer);\n  var newBuffer;\n  notDetached(arrayBuffer);\n  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n  }\n  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n    newBuffer = slice(arrayBuffer, 0, newByteLength);\n  } else {\n    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n    newBuffer = new ArrayBuffer(newByteLength, options);\n    var a = new DataView(arrayBuffer);\n    var b = new DataView(newBuffer);\n    var copyLength = min(newByteLength, byteLength);\n    for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n  }\n  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n  return newBuffer;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n  transfer: function transfer() {\n    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n  transferToFixedLength: function transferToFixedLength() {\n    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\n// IE8- non-standard case\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-date-prototype-getyear-setyear -- detection\n  return new Date(16e11).getYear() !== 120;\n});\n\nvar getFullYear = uncurryThis(Date.prototype.getFullYear);\n\n// `Date.prototype.getYear` method\n// https://tc39.es/ecma262/#sec-date.prototype.getyear\n$({ target: 'Date', proto: true, forced: FORCED }, {\n  getYear: function getYear() {\n    return getFullYear(this) - 1900;\n  }\n});\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Date = Date;\nvar thisTimeValue = uncurryThis($Date.prototype.getTime);\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n  now: function now() {\n    return thisTimeValue(new $Date());\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar DatePrototype = Date.prototype;\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\nvar setFullYear = uncurryThis(DatePrototype.setFullYear);\n\n// `Date.prototype.setYear` method\n// https://tc39.es/ecma262/#sec-date.prototype.setyear\n$({ target: 'Date', proto: true }, {\n  setYear: function setYear(year) {\n    // validate\n    thisTimeValue(this);\n    var yi = toIntegerOrInfinity(year);\n    var yyyy = yi >= 0 && yi <= 99 ? yi + 1900 : yi;\n    return setFullYear(this, yyyy);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Date.prototype.toGMTString` method\n// https://tc39.es/ecma262/#sec-date.prototype.togmtstring\n$({ target: 'Date', proto: true }, {\n  toGMTString: Date.prototype.toUTCString\n});\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n  var str = toString(requireObjectCoercible(this));\n  var result = '';\n  var n = toIntegerOrInfinity(count);\n  if (n < 0 || n === Infinity) throw new $RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n", "'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n  return function ($this, maxLength, fillString) {\n    var S = toString(requireObjectCoercible($this));\n    var intMaxLength = toLength(maxLength);\n    var stringLength = S.length;\n    var fillStr = fillString === undefined ? ' ' : toString(fillString);\n    var fillLen, stringFiller;\n    if (intMaxLength <= stringLength || fillStr === '') return S;\n    fillLen = intMaxLength - stringLength;\n    stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n    if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n    return IS_END ? S + stringFiller : stringFiller + S;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.padStart` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padstart\n  start: createMethod(false),\n  // `String.prototype.padEnd` method\n  // https://tc39.es/ecma262/#sec-string.prototype.padend\n  end: createMethod(true)\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar padStart = require('../internals/string-pad').start;\n\nvar $RangeError = RangeError;\nvar $isFinite = isFinite;\nvar abs = Math.abs;\nvar DatePrototype = Date.prototype;\nvar nativeDateToISOString = DatePrototype.toISOString;\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\nvar getUTCDate = uncurryThis(DatePrototype.getUTCDate);\nvar getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear);\nvar getUTCHours = uncurryThis(DatePrototype.getUTCHours);\nvar getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds);\nvar getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes);\nvar getUTCMonth = uncurryThis(DatePrototype.getUTCMonth);\nvar getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds);\n\n// `Date.prototype.toISOString` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit fails here:\nmodule.exports = (fails(function () {\n  return nativeDateToISOString.call(new Date(-5e13 - 1)) !== '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n  nativeDateToISOString.call(new Date(NaN));\n})) ? function toISOString() {\n  if (!$isFinite(thisTimeValue(this))) throw new $RangeError('Invalid time value');\n  var date = this;\n  var year = getUTCFullYear(date);\n  var milliseconds = getUTCMilliseconds(date);\n  var sign = year < 0 ? '-' : year > 9999 ? '+' : '';\n  return sign + padStart(abs(year), sign ? 6 : 4, 0) +\n    '-' + padStart(getUTCMonth(date) + 1, 2, 0) +\n    '-' + padStart(getUTCDate(date), 2, 0) +\n    'T' + padStart(getUTCHours(date), 2, 0) +\n    ':' + padStart(getUTCMinutes(date), 2, 0) +\n    ':' + padStart(getUTCSeconds(date), 2, 0) +\n    '.' + padStart(milliseconds, 3, 0) +\n    'Z';\n} : nativeDateToISOString;\n", "'use strict';\nvar $ = require('../internals/export');\nvar toISOString = require('../internals/date-to-iso-string');\n\n// `Date.prototype.toISOString` method\n// https://tc39.es/ecma262/#sec-date.prototype.toisostring\n// PhantomJS / old WebKit has a broken implementations\n$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {\n  toISOString: toISOString\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar FORCED = fails(function () {\n  return new Date(NaN).toJSON() !== null\n    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n});\n\n// `Date.prototype.toJSON` method\n// https://tc39.es/ecma262/#sec-date.prototype.tojson\n$({ target: 'Date', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  toJSON: function toJSON(key) {\n    var O = toObject(this);\n    var pv = toPrimitive(O, 'number');\n    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n  }\n});\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar $TypeError = TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n  anObject(this);\n  if (hint === 'string' || hint === 'default') hint = 'string';\n  else if (hint !== 'number') throw new $TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n  defineBuiltIn(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar thisTimeValue = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) !== INVALID_DATE) {\n  defineBuiltIn(DatePrototype, TO_STRING, function toString() {\n    var value = thisTimeValue(this);\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return value === value ? nativeDateToString(this) : INVALID_DATE;\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar exec = uncurryThis(/./.exec);\nvar numberToString = uncurryThis(1.0.toString);\nvar toUpperCase = uncurryThis(''.toUpperCase);\n\nvar raw = /[\\w*+\\-./@]/;\n\nvar hex = function (code, length) {\n  var result = numberToString(code, 16);\n  while (result.length < length) result = '0' + result;\n  return result;\n};\n\n// `escape` method\n// https://tc39.es/ecma262/#sec-escape-string\n$({ global: true }, {\n  escape: function escape(string) {\n    var str = toString(string);\n    var result = '';\n    var length = str.length;\n    var index = 0;\n    var chr, code;\n    while (index < length) {\n      chr = charAt(str, index++);\n      if (exec(raw, chr)) {\n        result += chr;\n      } else {\n        code = charCodeAt(chr, 0);\n        if (code < 256) {\n          result += '%' + hex(code, 2);\n        } else {\n          result += '%u' + toUpperCase(hex(code, 4));\n        }\n      }\n    } return result;\n  }\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!hasOwn(factories, argsLength)) {\n    var list = [];\n    var i = 0;\n    for (; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n  var F = aCallable(this);\n  var Prototype = F.prototype;\n  var partArgs = arraySlice(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = concat(partArgs, arraySlice(arguments));\n    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n  };\n  if (isObject(Prototype)) boundFunction.prototype = Prototype;\n  return boundFunction;\n};\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n// eslint-disable-next-line es/no-function-prototype-bind -- detection\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar definePropertyModule = require('../internals/object-define-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar makeBuiltIn = require('../internals/make-built-in');\n\nvar HAS_INSTANCE = wellKnownSymbol('hasInstance');\nvar FunctionPrototype = Function.prototype;\n\n// `Function.prototype[@@hasInstance]` method\n// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance\nif (!(HAS_INSTANCE in FunctionPrototype)) {\n  definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: makeBuiltIn(function (O) {\n    if (!isCallable(this) || !isObject(O)) return false;\n    var P = this.prototype;\n    return isObject(P) ? isPrototypeOf(P, O) : O instanceof this;\n  }, HAS_INSTANCE) });\n}\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n  defineBuiltInAccessor(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return regExpExec(nameRE, functionToString(this))[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: globalThis.globalThis !== globalThis }, {\n  globalThis: globalThis\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n  || !isCallable(NativeIterator)\n  || NativeIterator.prototype !== IteratorPrototype\n  // FF44- non-standard `Iterator` passes previous tests\n  || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n  anInstance(this, IteratorPrototype);\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n  if (DESCRIPTORS) {\n    defineBuiltInAccessor(IteratorPrototype, key, {\n      configurable: true,\n      get: function () {\n        return value;\n      },\n      set: function (replacement) {\n        anObject(this);\n        if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n        if (hasOwn(this, key)) this[key] = replacement;\n        else createProperty(this, key, replacement);\n      }\n    });\n  } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n  Iterator: IteratorConstructor\n});\n", "'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n  return {\n    iterator: obj,\n    next: obj.next,\n    done: false\n  };\n};\n", "'use strict';\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (it === it) return it;\n  throw new $RangeError('NaN is not allowed');\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n  return defineBuiltIns(create(IteratorPrototype), {\n    next: function next() {\n      var state = getInternalState(this);\n      // for simplification:\n      //   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n      //   for `%IteratorHelperPrototype%.next` - just a value\n      if (IS_ITERATOR) return state.nextHandler();\n      if (state.done) return createIterResultObject(undefined, true);\n      try {\n        var result = state.nextHandler();\n        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n      } catch (error) {\n        state.done = true;\n        throw error;\n      }\n    },\n    'return': function () {\n      var state = getInternalState(this);\n      var iterator = state.iterator;\n      state.done = true;\n      if (IS_ITERATOR) {\n        var returnMethod = getMethod(iterator, 'return');\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n      }\n      if (state.inner) try {\n        iteratorClose(state.inner.iterator, 'normal');\n      } catch (error) {\n        return iteratorClose(iterator, 'throw', error);\n      }\n      if (iterator) iteratorClose(iterator, 'normal');\n      return createIterResultObject(undefined, true);\n    }\n  });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n  var IteratorProxy = function Iterator(record, state) {\n    if (state) {\n      state.iterator = record.iterator;\n      state.next = record.next;\n    } else state = record;\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n    state.nextHandler = nextHandler;\n    state.counter = 0;\n    state.done = false;\n    setInternalState(this, state);\n  };\n\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n  return IteratorProxy;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar notANaN = require('../internals/not-a-nan');\nvar toPositiveInteger = require('../internals/to-positive-integer');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var next = this.next;\n  var result, done;\n  while (this.remaining) {\n    this.remaining--;\n    result = anObject(call(next, iterator));\n    done = this.done = !!result.done;\n    if (done) return;\n  }\n  result = anObject(call(next, iterator));\n  done = this.done = !!result.done;\n  if (!done) return result.value;\n});\n\n// `Iterator.prototype.drop` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.drop\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  drop: function drop(limit) {\n    anObject(this);\n    var remaining = toPositiveInteger(notANaN(+limit));\n    return new IteratorProxy(getIteratorDirect(this), {\n      remaining: remaining\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.every` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.every\n$({ target: 'Iterator', proto: true, real: true }, {\n  every: function every(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return !iterate(record, function (value, stop) {\n      if (!predicate(value, counter++)) return stop();\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var predicate = this.predicate;\n  var next = this.next;\n  var result, done, value;\n  while (true) {\n    result = anObject(call(next, iterator));\n    done = this.done = !!result.done;\n    if (done) return;\n    value = result.value;\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n  }\n});\n\n// `Iterator.prototype.filter` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.filter\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  filter: function filter(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    return new IteratorProxy(getIteratorDirect(this), {\n      predicate: predicate\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.find` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.find\n$({ target: 'Iterator', proto: true, real: true }, {\n  find: function find(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return iterate(record, function (value, stop) {\n      if (predicate(value, counter++)) return stop(value);\n    }, { IS_RECORD: true, INTERRUPTED: true }).result;\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (obj, stringHandling) {\n  if (!stringHandling || typeof obj !== 'string') anObject(obj);\n  var method = getIteratorMethod(obj);\n  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var mapper = this.mapper;\n  var result, inner;\n\n  while (true) {\n    if (inner = this.inner) try {\n      result = anObject(call(inner.next, inner.iterator));\n      if (!result.done) return result.value;\n      this.inner = null;\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n    result = anObject(call(this.next, iterator));\n\n    if (this.done = !!result.done) return;\n\n    try {\n      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\n  }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  flatMap: function flatMap(mapper) {\n    anObject(this);\n    aCallable(mapper);\n    return new IteratorProxy(getIteratorDirect(this), {\n      mapper: mapper,\n      inner: null\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.foreach\n$({ target: 'Iterator', proto: true, real: true }, {\n  forEach: function forEach(fn) {\n    anObject(this);\n    aCallable(fn);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    iterate(record, function (value) {\n      fn(value, counter++);\n    }, { IS_RECORD: true });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  return call(this.next, this.iterator);\n}, true);\n\n// `Iterator.from` method\n// https://tc39.es/ecma262/#sec-iterator.from\n$({ target: 'Iterator', stat: true, forced: IS_PURE }, {\n  from: function from(O) {\n    var iteratorRecord = getIteratorFlattenable(typeof O == 'string' ? toObject(O) : O, true);\n    return isPrototypeOf(IteratorPrototype, iteratorRecord.iterator)\n      ? iteratorRecord.iterator\n      : new IteratorProxy(iteratorRecord);\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var result = anObject(call(this.next, iterator));\n  var done = this.done = !!result.done;\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n  anObject(this);\n  aCallable(mapper);\n  return new IteratorProxy(getIteratorDirect(this), {\n    mapper: mapper\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar map = require('../internals/iterator-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Iterator.prototype.map` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.map\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  map: map\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar $TypeError = TypeError;\n\n// `Iterator.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.reduce\n$({ target: 'Iterator', proto: true, real: true }, {\n  reduce: function reduce(reducer /* , initialValue */) {\n    anObject(this);\n    aCallable(reducer);\n    var record = getIteratorDirect(this);\n    var noInitial = arguments.length < 2;\n    var accumulator = noInitial ? undefined : arguments[1];\n    var counter = 0;\n    iterate(record, function (value) {\n      if (noInitial) {\n        noInitial = false;\n        accumulator = value;\n      } else {\n        accumulator = reducer(accumulator, value, counter);\n      }\n      counter++;\n    }, { IS_RECORD: true });\n    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\n    return accumulator;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true }, {\n  some: function some(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    var record = getIteratorDirect(this);\n    var counter = 0;\n    return iterate(record, function (value, stop) {\n      if (predicate(value, counter++)) return stop();\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar notANaN = require('../internals/not-a-nan');\nvar toPositiveInteger = require('../internals/to-positive-integer');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  if (!this.remaining--) {\n    this.done = true;\n    return iteratorClose(iterator, 'normal', undefined);\n  }\n  var result = anObject(call(this.next, iterator));\n  var done = this.done = !!result.done;\n  if (!done) return result.value;\n});\n\n// `Iterator.prototype.take` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.take\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  take: function take(limit) {\n    anObject(this);\n    var remaining = toPositiveInteger(notANaN(+limit));\n    return new IteratorProxy(getIteratorDirect(this), {\n      remaining: remaining\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar iterate = require('../internals/iterate');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar push = [].push;\n\n// `Iterator.prototype.toArray` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.toarray\n$({ target: 'Iterator', proto: true, real: true }, {\n  toArray: function toArray() {\n    var result = [];\n    iterate(getIteratorDirect(anObject(this)), push, { that: result, IS_RECORD: true });\n    return result;\n  }\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(globalThis.JSON, 'JSON', true);\n", "'use strict';\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n  if (typeof ArrayBuffer == 'function') {\n    var buffer = new ArrayBuffer(8);\n    // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n  }\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n  if (!isObject(it)) return false;\n  if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return false;\n  return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = uncurryThis([].splice);\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = globalThis[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n    defineBuiltIn(NativePrototype, KEY,\n      KEY === 'add' ? function add(value) {\n        uncurriedNativeMethod(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY === 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY === 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY === 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, NativePrototype);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n", "'use strict';\nvar create = require('../internals/object-create');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: null,\n        last: null,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: null,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key === key) return entry;\n      }\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = null;\n          entry = entry.next;\n        }\n        state.first = state.last = null;\n        state.index = create(null);\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first === entry) state.first = next;\n          if (state.last === entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', {\n      configurable: true,\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return Constructor;\n  },\n  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: null\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = null;\n        return createIterResultObject(undefined, true);\n      }\n      // return step by kind\n      if (kind === 'keys') return createIterResultObject(entry.key, false);\n      if (kind === 'values') return createIterResultObject(entry.value, false);\n      return createIterResultObject([entry.key, entry.value], false);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n", "'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-map -- safe\nvar MapPrototype = Map.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-map -- safe\n  Map: Map,\n  set: uncurryThis(MapPrototype.set),\n  get: uncurryThis(MapPrototype.get),\n  has: uncurryThis(MapPrototype.has),\n  remove: uncurryThis(MapPrototype['delete']),\n  proto: MapPrototype\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar iterate = require('../internals/iterate');\nvar MapHelpers = require('../internals/map-helpers');\nvar IS_PURE = require('../internals/is-pure');\nvar fails = require('../internals/fails');\n\nvar Map = MapHelpers.Map;\nvar has = MapHelpers.has;\nvar get = MapHelpers.get;\nvar set = MapHelpers.set;\nvar push = uncurryThis([].push);\n\nvar DOES_NOT_WORK_WITH_PRIMITIVES = IS_PURE || fails(function () {\n  return Map.groupBy('ab', function (it) {\n    return it;\n  }).get('a').length !== 1;\n});\n\n// `Map.groupBy` method\n// https://tc39.es/ecma262/#sec-map.groupby\n$({ target: 'Map', stat: true, forced: IS_PURE || DOES_NOT_WORK_WITH_PRIMITIVES }, {\n  groupBy: function groupBy(items, callbackfn) {\n    requireObjectCoercible(items);\n    aCallable(callbackfn);\n    var map = new Map();\n    var k = 0;\n    iterate(items, function (value) {\n      var key = callbackfn(value, k++);\n      if (!has(map, key)) set(map, key, [value]);\n      else push(get(map, key), value);\n    });\n    return map;\n  }\n});\n", "'use strict';\nvar log = Math.log;\n\n// `Math.log1p` method implementation\n// https://tc39.es/ecma262/#sec-math.log1p\n// eslint-disable-next-line es/no-math-log1p -- safe\nmodule.exports = Math.log1p || function log1p(x) {\n  var n = +x;\n  return n > -1e-8 && n < 1e-8 ? n - n * n / 2 : log(1 + n);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// eslint-disable-next-line es/no-math-acosh -- required for testing\nvar $acosh = Math.acosh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\nvar LN2 = Math.LN2;\n\nvar FORCED = !$acosh\n  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n  || Math.floor($acosh(Number.MAX_VALUE)) !== 710\n  // Tor Browser bug: Math.acosh(Infinity) -> NaN\n  || $acosh(Infinity) !== Infinity;\n\n// `Math.acosh` method\n// https://tc39.es/ecma262/#sec-math.acosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  acosh: function acosh(x) {\n    var n = +x;\n    return n < 1 ? NaN : n > 94906265.62425156\n      ? log(n) + LN2\n      : log1p(n - 1 + sqrt(n - 1) * sqrt(n + 1));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-asinh -- required for testing\nvar $asinh = Math.asinh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\n\nfunction asinh(x) {\n  var n = +x;\n  return !isFinite(n) || n === 0 ? n : n < 0 ? -asinh(-n) : log(n + sqrt(n * n + 1));\n}\n\nvar FORCED = !($asinh && 1 / $asinh(0) > 0);\n\n// `Math.asinh` method\n// https://tc39.es/ecma262/#sec-math.asinh\n// Tor Browser bug: Math.asinh(0) -> -0\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  asinh: asinh\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-atanh -- required for testing\nvar $atanh = Math.atanh;\nvar log = Math.log;\n\nvar FORCED = !($atanh && 1 / $atanh(-0) < 0);\n\n// `Math.atanh` method\n// https://tc39.es/ecma262/#sec-math.atanh\n// Tor Browser bug: Math.atanh(-0) -> 0\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  atanh: function atanh(x) {\n    var n = +x;\n    return n === 0 ? n : log((1 + n) / (1 - n)) / 2;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.es/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n  cbrt: function cbrt(x) {\n    var n = +x;\n    return sign(n) * pow(abs(n), 1 / 3);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\nvar floor = Math.floor;\nvar log = Math.log;\nvar LOG2E = Math.LOG2E;\n\n// `Math.clz32` method\n// https://tc39.es/ecma262/#sec-math.clz32\n$({ target: 'Math', stat: true }, {\n  clz32: function clz32(x) {\n    var n = x >>> 0;\n    return n ? 31 - floor(log(n + 0.5) * LOG2E) : 32;\n  }\n});\n", "'use strict';\n// eslint-disable-next-line es/no-math-expm1 -- safe\nvar $expm1 = Math.expm1;\nvar exp = Math.exp;\n\n// `Math.expm1` method implementation\n// https://tc39.es/ecma262/#sec-math.expm1\nmodule.exports = (!$expm1\n  // Old FF bug\n  // eslint-disable-next-line no-loss-of-precision -- required for old engines\n  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n  // Tor Browser bug\n  || $expm1(-2e-17) !== -2e-17\n) ? function expm1(x) {\n  var n = +x;\n  return n === 0 ? n : n > -1e-6 && n < 1e-6 ? n + n * n / 2 : exp(n) - 1;\n} : $expm1;\n", "'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// eslint-disable-next-line es/no-math-cosh -- required for testing\nvar $cosh = Math.cosh;\nvar abs = Math.abs;\nvar E = Math.E;\n\nvar FORCED = !$cosh || $cosh(710) === Infinity;\n\n// `Math.cosh` method\n// https://tc39.es/ecma262/#sec-math.cosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  cosh: function cosh(x) {\n    var t = expm1(abs(x) - 1) + 1;\n    return (t + 1 / (t * E * E)) * (E / 2);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\n// `Math.expm1` method\n// https://tc39.es/ecma262/#sec-math.expm1\n// eslint-disable-next-line es/no-math-expm1 -- required for testing\n$({ target: 'Math', stat: true, forced: expm1 !== Math.expm1 }, { expm1: expm1 });\n", "'use strict';\nvar $ = require('../internals/export');\nvar fround = require('../internals/math-fround');\n\n// `Math.fround` method\n// https://tc39.es/ecma262/#sec-math.fround\n$({ target: 'Math', stat: true }, { fround: fround });\n", "'use strict';\nvar $ = require('../internals/export');\n\n// eslint-disable-next-line es/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  hypot: function hypot(value1, value2) {\n    var sum = 0;\n    var i = 0;\n    var aLen = arguments.length;\n    var larg = 0;\n    var arg, div;\n    while (i < aLen) {\n      arg = abs(arguments[i++]);\n      if (larg < arg) {\n        div = larg / arg;\n        sum = sum * div * div + 1;\n        larg = arg;\n      } else if (arg > 0) {\n        div = arg / larg;\n        sum += div * div;\n      } else sum += arg;\n    }\n    return larg === Infinity ? Infinity : larg * sqrt(sum);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-math-imul -- required for testing\nvar $imul = Math.imul;\n\nvar FORCED = fails(function () {\n  return $imul(0xFFFFFFFF, 5) !== -5 || $imul.length !== 2;\n});\n\n// `Math.imul` method\n// https://tc39.es/ecma262/#sec-math.imul\n// some WebKit versions fails with big numbers, some has wrong arity\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  imul: function imul(x, y) {\n    var UINT16 = 0xFFFF;\n    var xn = +x;\n    var yn = +y;\n    var xl = UINT16 & xn;\n    var yl = UINT16 & yn;\n    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n  }\n});\n", "'use strict';\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// eslint-disable-next-line es/no-math-log10 -- safe\nmodule.exports = Math.log10 || function log10(x) {\n  return log(x) * LOG10E;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar log10 = require('../internals/math-log10');\n\n// `Math.log10` method\n// https://tc39.es/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n  log10: log10\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar log1p = require('../internals/math-log1p');\n\n// `Math.log1p` method\n// https://tc39.es/ecma262/#sec-math.log1p\n$({ target: 'Math', stat: true }, { log1p: log1p });\n", "'use strict';\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n// eslint-disable-next-line es/no-math-log2 -- safe\nmodule.exports = Math.log2 || function log2(x) {\n  return log(x) / LN2;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar log2 = require('../internals/math-log2');\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n  log2: log2\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n  sign: sign\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar expm1 = require('../internals/math-expm1');\n\nvar abs = Math.abs;\nvar exp = Math.exp;\nvar E = Math.E;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-math-sinh -- required for testing\n  return Math.sinh(-2e-17) !== -2e-17;\n});\n\n// `Math.sinh` method\n// https://tc39.es/ecma262/#sec-math.sinh\n// V8 near Chromium 38 has a problem with very small numbers\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  sinh: function sinh(x) {\n    var n = +x;\n    return abs(n) < 1 ? (expm1(n) - expm1(-n)) / 2 : (exp(n - 1) - exp(-n - 1)) * (E / 2);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar expm1 = require('../internals/math-expm1');\n\nvar exp = Math.exp;\n\n// `Math.tanh` method\n// https://tc39.es/ecma262/#sec-math.tanh\n$({ target: 'Math', stat: true }, {\n  tanh: function tanh(x) {\n    var n = +x;\n    var a = expm1(n);\n    var b = expm1(-n);\n    return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (exp(n) + exp(-n));\n  }\n});\n", "'use strict';\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n", "'use strict';\nvar $ = require('../internals/export');\nvar trunc = require('../internals/math-trunc');\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n  trunc: trunc\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n", "'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = globalThis[NUMBER];\nvar PureNumberNamespace = path[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = globalThis.TypeError;\nvar stringSlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = charCodeAt(it, 0);\n    if (first === 43 || first === 45) {\n      third = charCodeAt(it, 2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (charCodeAt(it, 1)) {\n        // fast equal of /^0b[01]+$/i\n        case 66:\n        case 98:\n          radix = 2;\n          maxCode = 49;\n          break;\n        // fast equal of /^0o[0-7]+$/i\n        case 79:\n        case 111:\n          radix = 8;\n          maxCode = 55;\n          break;\n        default:\n          return +it;\n      }\n      digits = stringSlice(it, 2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = charCodeAt(digits, index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nvar FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));\n\nvar calledWithNew = function (dummy) {\n  // includes check on 1..constructor(foo) case\n  return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nvar NumberWrapper = function Number(value) {\n  var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n  return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;\n};\n\nNumberWrapper.prototype = NumberPrototype;\nif (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED }, {\n  Number: NumberWrapper\n});\n\n// Use `internal/copy-constructor-properties` helper in `core-js@4`\nvar copyConstructorProperties = function (target, source) {\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n\nif (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);\nif (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  EPSILON: Math.pow(2, -52)\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar globalIsFinite = globalThis.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n  return typeof it == 'number' && globalIsFinite(it);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n  isInteger: isIntegralNumber\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.es/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    return number !== number;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\nvar abs = Math.abs;\n\n// `Number.isSafeInteger` method\n// https://tc39.es/ecma262/#sec-number.issafeinteger\n$({ target: 'Number', stat: true }, {\n  isSafeInteger: function isSafeInteger(number) {\n    return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n  MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = globalThis.parseFloat;\nvar Symbol = globalThis.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(toString(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && charAt(trimmedString, 0) === '-' ? -0 : result;\n} : $parseFloat;\n", "'use strict';\nvar $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat !== parseFloat }, {\n  parseFloat: parseFloat\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = globalThis.parseInt;\nvar Symbol = globalThis.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n", "'use strict';\nvar $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n// eslint-disable-next-line es/no-number-parseint -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseInt !== parseInt }, {\n  parseInt: parseInt\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar log10 = require('../internals/math-log10');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar $isFinite = isFinite;\nvar abs = Math.abs;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar round = Math.round;\nvar nativeToExponential = uncurryThis(1.0.toExponential);\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\n\n// Edge 17-\nvar ROUNDS_PROPERLY = nativeToExponential(-6.9e-11, 4) === '-6.9000e-11'\n  // IE11- && Edge 14-\n  && nativeToExponential(1.255, 2) === '1.25e+0'\n  // FF86-, V8 ~ Chrome 49-50\n  && nativeToExponential(12345, 3) === '1.235e+4'\n  // FF86-, V8 ~ Chrome 49-50\n  && nativeToExponential(25, 0) === '3e+1';\n\n// IE8-\nvar throwsOnInfinityFraction = function () {\n  return fails(function () {\n    nativeToExponential(1, Infinity);\n  }) && fails(function () {\n    nativeToExponential(1, -Infinity);\n  });\n};\n\n// Safari <11 && FF <50\nvar properNonFiniteThisCheck = function () {\n  return !fails(function () {\n    nativeToExponential(Infinity, Infinity);\n    nativeToExponential(NaN, Infinity);\n  });\n};\n\nvar FORCED = !ROUNDS_PROPERLY || !throwsOnInfinityFraction() || !properNonFiniteThisCheck();\n\n// `Number.prototype.toExponential` method\n// https://tc39.es/ecma262/#sec-number.prototype.toexponential\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toExponential: function toExponential(fractionDigits) {\n    var x = thisNumberValue(this);\n    if (fractionDigits === undefined) return nativeToExponential(x);\n    var f = toIntegerOrInfinity(fractionDigits);\n    if (!$isFinite(x)) return String(x);\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (f < 0 || f > 20) throw new $RangeError('Incorrect fraction digits');\n    if (ROUNDS_PROPERLY) return nativeToExponential(x, f);\n    var s = '';\n    var m, e, c, d;\n    if (x < 0) {\n      s = '-';\n      x = -x;\n    }\n    if (x === 0) {\n      e = 0;\n      m = repeat('0', f + 1);\n    } else {\n      // this block is based on https://gist.github.com/SheetJSDev/1100ad56b9f856c95299ed0e068eea08\n      // TODO: improve accuracy with big fraction digits\n      var l = log10(x);\n      e = floor(l);\n      var w = pow(10, e - f);\n      var n = round(x / w);\n      if (2 * x >= (2 * n + 1) * w) {\n        n += 1;\n      }\n      if (n >= pow(10, f + 1)) {\n        n /= 10;\n        e += 1;\n      }\n      m = $String(n);\n    }\n    if (f !== 0) {\n      m = stringSlice(m, 0, 1) + '.' + stringSlice(m, 1);\n    }\n    if (e === 0) {\n      c = '+';\n      d = '0';\n    } else {\n      c = e > 0 ? '+' : '-';\n      d = $String(abs(e));\n    }\n    m += 'e' + c + d;\n    return s + m;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar nativeToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n  var n = 0;\n  var x2 = x;\n  while (x2 >= 4096) {\n    n += 12;\n    x2 /= 4096;\n  }\n  while (x2 >= 2) {\n    n += 1;\n    x2 /= 2;\n  } return n;\n};\n\nvar multiply = function (data, n, c) {\n  var index = -1;\n  var c2 = c;\n  while (++index < 6) {\n    c2 += n * data[index];\n    data[index] = c2 % 1e7;\n    c2 = floor(c2 / 1e7);\n  }\n};\n\nvar divide = function (data, n) {\n  var index = 6;\n  var c = 0;\n  while (--index >= 0) {\n    c += data[index];\n    data[index] = floor(c / n);\n    c = (c % n) * 1e7;\n  }\n};\n\nvar dataToString = function (data) {\n  var index = 6;\n  var s = '';\n  while (--index >= 0) {\n    if (s !== '' || index === 0 || data[index] !== 0) {\n      var t = $String(data[index]);\n      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n    }\n  } return s;\n};\n\nvar FORCED = fails(function () {\n  return nativeToFixed(0.00008, 3) !== '0.000' ||\n    nativeToFixed(0.9, 0) !== '1' ||\n    nativeToFixed(1.255, 2) !== '1.25' ||\n    nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toFixed: function toFixed(fractionDigits) {\n    var number = thisNumberValue(this);\n    var fractDigits = toIntegerOrInfinity(fractionDigits);\n    var data = [0, 0, 0, 0, 0, 0];\n    var sign = '';\n    var result = '0';\n    var e, z, j, k;\n\n    // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n    if (fractDigits < 0 || fractDigits > 20) throw new $RangeError('Incorrect fraction digits');\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (number !== number) return 'NaN';\n    if (number <= -1e21 || number >= 1e21) return $String(number);\n    if (number < 0) {\n      sign = '-';\n      number = -number;\n    }\n    if (number > 1e-21) {\n      e = log(number * pow(2, 69, 1)) - 69;\n      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n      z *= 0x10000000000000;\n      e = 52 - e;\n      if (e > 0) {\n        multiply(data, 0, z);\n        j = fractDigits;\n        while (j >= 7) {\n          multiply(data, 1e7, 0);\n          j -= 7;\n        }\n        multiply(data, pow(10, j, 1), 0);\n        j = e - 1;\n        while (j >= 23) {\n          divide(data, 1 << 23);\n          j -= 23;\n        }\n        divide(data, 1 << j);\n        multiply(data, 1, 1);\n        divide(data, 2);\n        result = dataToString(data);\n      } else {\n        multiply(data, 0, z);\n        multiply(data, 1 << -e, 0);\n        result = dataToString(data) + repeat('0', fractDigits);\n      }\n    }\n    if (fractDigits > 0) {\n      k = result.length;\n      result = sign + (k <= fractDigits\n        ? '0.' + repeat('0', fractDigits - k) + result\n        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n    } else {\n      result = sign + result;\n    } return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar nativeToPrecision = uncurryThis(1.0.toPrecision);\n\nvar FORCED = fails(function () {\n  // IE7-\n  return nativeToPrecision(1, undefined) !== '1';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToPrecision({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.es/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toPrecision: function toPrecision(precision) {\n    return precision === undefined\n      ? nativeToPrecision(thisNumberValue(this))\n      : nativeToPrecision(thisNumberValue(this), precision);\n  }\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol('assign detection');\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  // eslint-disable-next-line es/no-array-prototype-foreach -- safe\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n", "'use strict';\nvar $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n", "'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n", "'use strict';\n/* eslint-disable no-undef, no-useless-call, sonarjs/no-reference-error -- required for testing */\n/* eslint-disable es/no-legacy-object-prototype-accessor-methods -- required for testing */\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\n// Forced replacement object prototype accessors methods\nmodule.exports = IS_PURE || !fails(function () {\n  // This feature detection crashes old WebKit\n  // https://github.com/zloirock/core-js/issues/232\n  if (WEBKIT && WEBKIT < 535) return;\n  var key = Math.random();\n  // In FF throws only define methods\n  __defineSetter__.call(null, key, function () { /* empty */ });\n  delete globalThis[key];\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineGetter__: function __defineGetter__(P, getter) {\n      definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true });\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar definePropertyModule = require('../internals/object-define-property');\n\n// `Object.prototype.__defineSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineSetter__: function __defineSetter__(P, setter) {\n      definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true });\n    }\n  });\n}\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys\n// of `null` prototype objects\nvar IE_BUG = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-create -- safe\n  var O = Object.create(null);\n  O[2] = 2;\n  return !propertyIsEnumerable(O, 2);\n});\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  freeze: function freeze(it) {\n    return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://tc39.es/ecma262/#sec-object.fromentries\n$({ target: 'Object', stat: true }, {\n  fromEntries: function fromEntries(iterable) {\n    var obj = {};\n    iterate(iterable, function (k, v) {\n      createProperty(obj, k, v);\n    }, { AS_ENTRIES: true });\n    return obj;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FORCED = !DESCRIPTORS || fails(function () { nativeGetOwnPropertyDescriptor(1); });\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\n// eslint-disable-next-line es/no-object-getownpropertynames -- required for testing\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  getOwnPropertyNames: getOwnPropertyNames\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toPropertyKey = require('../internals/to-property-key');\nvar iterate = require('../internals/iterate');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-groupby -- testing\nvar nativeGroupBy = Object.groupBy;\nvar create = getBuiltIn('Object', 'create');\nvar push = uncurryThis([].push);\n\nvar DOES_NOT_WORK_WITH_PRIMITIVES = !nativeGroupBy || fails(function () {\n  return nativeGroupBy('ab', function (it) {\n    return it;\n  }).a.length !== 1;\n});\n\n// `Object.groupBy` method\n// https://tc39.es/ecma262/#sec-object.groupby\n$({ target: 'Object', stat: true, forced: DOES_NOT_WORK_WITH_PRIMITIVES }, {\n  groupBy: function groupBy(items, callbackfn) {\n    requireObjectCoercible(items);\n    aCallable(callbackfn);\n    var obj = create(null);\n    var k = 0;\n    iterate(items, function (value) {\n      var key = toPropertyKey(callbackfn(value, k++));\n      // in some IE versions, `hasOwnProperty` returns incorrect result on integer keys\n      // but since it's a `null` prototype object, we can safely use `in`\n      if (key in obj) push(obj[key], value);\n      else obj[key] = [value];\n    });\n    return obj;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\n\n// `Object.hasOwn` method\n// https://tc39.es/ecma262/#sec-object.hasown\n$({ target: 'Object', stat: true }, {\n  hasOwn: hasOwn\n});\n", "'use strict';\n// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n  is: is\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $isExtensible = require('../internals/object-is-extensible');\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\n// eslint-disable-next-line es/no-object-isextensible -- safe\n$({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, {\n  isExtensible: $isExtensible\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isfrozen -- safe\nvar $isFrozen = Object.isFrozen;\n\nvar FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function () { $isFrozen(1); });\n\n// `Object.isFrozen` method\n// https://tc39.es/ecma262/#sec-object.isfrozen\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  isFrozen: function isFrozen(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return true;\n    return $isFrozen ? $isFrozen(it) : false;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-issealed -- safe\nvar $isSealed = Object.isSealed;\n\nvar FORCED = ARRAY_BUFFER_NON_EXTENSIBLE || fails(function () { $isSealed(1); });\n\n// `Object.isSealed` method\n// https://tc39.es/ecma262/#sec-object.issealed\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  isSealed: function isSealed(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return true;\n    return $isSealed ? $isSealed(it) : false;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupGetter__: function __lookupGetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FORCED = require('../internals/object-prototype-accessors-forced');\nvar toObject = require('../internals/to-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Object.prototype.__lookupSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupSetter__: function __lookupSetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-preventextensions -- safe\nvar $preventExtensions = Object.preventExtensions;\nvar FAILS_ON_PRIMITIVES = fails(function () { $preventExtensions(1); });\n\n// `Object.preventExtensions` method\n// https://tc39.es/ecma262/#sec-object.preventextensions\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(it) {\n    return $preventExtensions && isObject(it) ? $preventExtensions(onFreeze(it)) : it;\n  }\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isObject = require('../internals/is-object');\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\nvar toObject = require('../internals/to-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nvar getPrototypeOf = Object.getPrototypeOf;\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nvar setPrototypeOf = Object.setPrototypeOf;\nvar ObjectPrototype = Object.prototype;\nvar PROTO = '__proto__';\n\n// `Object.prototype.__proto__` accessor\n// https://tc39.es/ecma262/#sec-object.prototype.__proto__\nif (DESCRIPTORS && getPrototypeOf && setPrototypeOf && !(PROTO in ObjectPrototype)) try {\n  defineBuiltInAccessor(ObjectPrototype, PROTO, {\n    configurable: true,\n    get: function __proto__() {\n      return getPrototypeOf(toObject(this));\n    },\n    set: function __proto__(proto) {\n      var O = requireObjectCoercible(this);\n      if (isPossiblePrototype(proto) && isObject(O)) {\n        setPrototypeOf(O, proto);\n      }\n    }\n  });\n} catch (error) { /* empty */ }\n", "'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-seal -- safe\nvar $seal = Object.seal;\nvar FAILS_ON_PRIMITIVES = fails(function () { $seal(1); });\n\n// `Object.seal` method\n// https://tc39.es/ecma262/#sec-object.seal\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  seal: function seal(it) {\n    return $seal && isObject(it) ? $seal(onFreeze(it)) : it;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat !== $parseFloat }, {\n  parseFloat: $parseFloat\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt !== $parseInt }, {\n  parseInt: $parseInt\n});\n", "'use strict';\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a constructor');\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n", "'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw new $TypeError('Not enough arguments');\n  return passed;\n};\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = globalThis.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    globalThis.addEventListener &&\n    isCallable(globalThis.postMessage) &&\n    !globalThis.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    globalThis.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nmodule.exports = function (name) {\n  if (!DESCRIPTORS) return globalThis[name];\n  var descriptor = getOwnPropertyDescriptor(globalThis, name);\n  return descriptor && descriptor.value;\n};\n", "'use strict';\nvar Queue = function () {\n  this.head = null;\n  this.tail = null;\n};\n\nQueue.prototype = {\n  add: function (item) {\n    var entry = { item: item, next: null };\n    var tail = this.tail;\n    if (tail) tail.next = entry;\n    else this.head = entry;\n    this.tail = entry;\n  },\n  get: function () {\n    var entry = this.head;\n    if (entry) {\n      var next = this.head = entry.next;\n      if (next === null) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n", "'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar bind = require('../internals/function-bind-context');\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/environment-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/environment-is-webos-webkit');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar MutationObserver = globalThis.MutationObserver || globalThis.WebKitMutationObserver;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar Promise = globalThis.Promise;\nvar microtask = safeGetBuiltIn('queueMicrotask');\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n  var queue = new Queue();\n\n  var flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (fn = queue.get()) try {\n      fn();\n    } catch (error) {\n      if (queue.head) notify();\n      throw error;\n    }\n    if (parent) parent.enter();\n  };\n\n  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n    toggle = true;\n    node = document.createTextNode('');\n    new MutationObserver(flush).observe(node, { characterData: true });\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    promise = Promise.resolve(undefined);\n    // workaround of WebKit ~ iOS Safari 10.1 bug\n    promise.constructor = Promise;\n    then = bind(promise.then, promise);\n    notify = function () {\n      then(flush);\n    };\n  // Node.js without promises\n  } else if (IS_NODE) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessage\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    // `webpack` dev server bug on IE global methods - use bind(fn, global)\n    macrotask = bind(macrotask, globalThis);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n\n  microtask = function (fn) {\n    if (!queue.head) notify();\n    queue.add(fn);\n  };\n}\n\nmodule.exports = microtask;\n", "'use strict';\nmodule.exports = function (a, b) {\n  try {\n    // eslint-disable-next-line no-console -- safe\n    arguments.length === 1 ? console.error(a) : console.error(a, b);\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n", "'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis.Promise;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ENVIRONMENT = require('../internals/environment');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(globalThis.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n  // We can't detect it synchronously, so just check versions\n  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n  // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n  if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n  // We can't use @@species feature detection in V8 since it causes\n  // deoptimization and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n    // Detect correctness of subclassing with @@species support\n    var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n    var FakePromise = function (exec) {\n      exec(function () { /* empty */ }, function () { /* empty */ });\n    };\n    var constructor = promise.constructor = {};\n    constructor[SPECIES] = FakePromise;\n    SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n    if (!SUBCLASSING) return true;\n  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n  } return !GLOBAL_CORE_JS_PROMISE && (ENVIRONMENT === 'BROWSER' || ENVIRONMENT === 'DENO') && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n  CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n  REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n  SUBCLASSING: SUBCLASSING\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aCallable(resolve);\n  this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/environment-is-node');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = globalThis.TypeError;\nvar document = globalThis.document;\nvar process = globalThis.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && globalThis.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n  var value = state.value;\n  var ok = state.state === FULFILLED;\n  var handler = ok ? reaction.ok : reaction.fail;\n  var resolve = reaction.resolve;\n  var reject = reaction.reject;\n  var domain = reaction.domain;\n  var result, then, exited;\n  try {\n    if (handler) {\n      if (!ok) {\n        if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n        state.rejection = HANDLED;\n      }\n      if (handler === true) result = value;\n      else {\n        if (domain) domain.enter();\n        result = handler(value); // can throw\n        if (domain) {\n          domain.exit();\n          exited = true;\n        }\n      }\n      if (result === reaction.promise) {\n        reject(new TypeError('Promise-chain cycle'));\n      } else if (then = isThenable(result)) {\n        call(then, result, resolve, reject);\n      } else resolve(result);\n    } else reject(value);\n  } catch (error) {\n    if (domain && !exited) domain.exit();\n    reject(error);\n  }\n};\n\nvar notify = function (state, isReject) {\n  if (state.notified) return;\n  state.notified = true;\n  microtask(function () {\n    var reactions = state.reactions;\n    var reaction;\n    while (reaction = reactions.get()) {\n      callReaction(reaction, state);\n    }\n    state.notified = false;\n    if (isReject && !state.rejection) onUnhandled(state);\n  });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n  var event, handler;\n  if (DISPATCH_EVENT) {\n    event = document.createEvent('Event');\n    event.promise = promise;\n    event.reason = reason;\n    event.initEvent(name, false, true);\n    globalThis.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = globalThis['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    var value = state.value;\n    var IS_UNHANDLED = isUnhandled(state);\n    var result;\n    if (IS_UNHANDLED) {\n      result = perform(function () {\n        if (IS_NODE) {\n          process.emit('unhandledRejection', value, promise);\n        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n      if (result.error) throw result.value;\n    }\n  });\n};\n\nvar isUnhandled = function (state) {\n  return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n  call(task, globalThis, function () {\n    var promise = state.facade;\n    if (IS_NODE) {\n      process.emit('rejectionHandled', promise);\n    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n  });\n};\n\nvar bind = function (fn, state, unwrap) {\n  return function (value) {\n    fn(state, value, unwrap);\n  };\n};\n\nvar internalReject = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  state.value = value;\n  state.state = REJECTED;\n  notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n  if (state.done) return;\n  state.done = true;\n  if (unwrap) state = unwrap;\n  try {\n    if (state.facade === value) throw new TypeError(\"Promise can't be resolved itself\");\n    var then = isThenable(value);\n    if (then) {\n      microtask(function () {\n        var wrapper = { done: false };\n        try {\n          call(then, value,\n            bind(internalResolve, wrapper, state),\n            bind(internalReject, wrapper, state)\n          );\n        } catch (error) {\n          internalReject(wrapper, error, state);\n        }\n      });\n    } else {\n      state.value = value;\n      state.state = FULFILLED;\n      notify(state, false);\n    }\n  } catch (error) {\n    internalReject({ done: false }, error, state);\n  }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n  // 25.4.3.1 Promise(executor)\n  PromiseConstructor = function Promise(executor) {\n    anInstance(this, PromisePrototype);\n    aCallable(executor);\n    call(Internal, this);\n    var state = getInternalPromiseState(this);\n    try {\n      executor(bind(internalResolve, state), bind(internalReject, state));\n    } catch (error) {\n      internalReject(state, error);\n    }\n  };\n\n  PromisePrototype = PromiseConstructor.prototype;\n\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  Internal = function Promise(executor) {\n    setInternalState(this, {\n      type: PROMISE,\n      done: false,\n      notified: false,\n      parent: false,\n      reactions: new Queue(),\n      rejection: false,\n      state: PENDING,\n      value: null\n    });\n  };\n\n  // `Promise.prototype.then` method\n  // https://tc39.es/ecma262/#sec-promise.prototype.then\n  Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n    var state = getInternalPromiseState(this);\n    var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n    state.parent = true;\n    reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n    reaction.fail = isCallable(onRejected) && onRejected;\n    reaction.domain = IS_NODE ? process.domain : undefined;\n    if (state.state === PENDING) state.reactions.add(reaction);\n    else microtask(function () {\n      callReaction(reaction, state);\n    });\n    return reaction.promise;\n  });\n\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    var state = getInternalPromiseState(promise);\n    this.promise = promise;\n    this.resolve = bind(internalResolve, state);\n    this.reject = bind(internalReject, state);\n  };\n\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === PromiseConstructor || C === PromiseWrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n\n  if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n    nativeThen = NativePromisePrototype.then;\n\n    if (!NATIVE_PROMISE_SUBCLASSING) {\n      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n      defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n        var that = this;\n        return new PromiseConstructor(function (resolve, reject) {\n          call(nativeThen, that, resolve, reject);\n        }).then(onFulfilled, onRejected);\n      // https://github.com/zloirock/core-js/issues/640\n      }, { unsafe: true });\n    }\n\n    // make `.constructor === Promise` work for native promise-based APIs\n    try {\n      delete NativePromisePrototype.constructor;\n    } catch (error) { /* empty */ }\n\n    // make `instanceof Promise` work for native promise-based APIs\n    if (setPrototypeOf) {\n      setPrototypeOf(NativePromisePrototype, PromisePrototype);\n    }\n  }\n}\n\n// `Promise` constructor\n// https://tc39.es/ecma262/#sec-promise-executor\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n", "'use strict';\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call($promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n  'catch': function (onRejected) {\n    return this.then(undefined, onRejected);\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['catch'];\n  if (NativePromisePrototype['catch'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      var $promiseResolve = aCallable(C.resolve);\n      iterate(iterable, function (promise) {\n        call($promiseResolve, C, promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  reject: function reject(r) {\n    var capability = newPromiseCapabilityModule.f(this);\n    var capabilityReject = capability.reject;\n    capabilityReject(r);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n  resolve: function resolve(x) {\n    return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n  }\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  allSettled: function allSettled(iterable) {\n    var C = this;\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var values = [];\n      var counter = 0;\n      var remaining = 1;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyCalled = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'fulfilled', value: value };\n          --remaining || resolve(values);\n        }, function (error) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[index] = { status: 'rejected', reason: error };\n          --remaining || resolve(values);\n        });\n      });\n      --remaining || resolve(values);\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n  any: function any(iterable) {\n    var C = this;\n    var AggregateError = getBuiltIn('AggregateError');\n    var capability = newPromiseCapabilityModule.f(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var promiseResolve = aCallable(C.resolve);\n      var errors = [];\n      var counter = 0;\n      var remaining = 1;\n      var alreadyResolved = false;\n      iterate(iterable, function (promise) {\n        var index = counter++;\n        var alreadyRejected = false;\n        remaining++;\n        call(promiseResolve, C, promise).then(function (value) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyResolved = true;\n          resolve(value);\n        }, function (error) {\n          if (alreadyRejected || alreadyResolved) return;\n          alreadyRejected = true;\n          errors[index] = error;\n          --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n        });\n      });\n      --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n    });\n    if (result.error) reject(result.value);\n    return capability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n  // eslint-disable-next-line unicorn/no-thenable -- required for testing\n  NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n  'finally': function (onFinally) {\n    var C = speciesConstructor(this, getBuiltIn('Promise'));\n    var isFunction = isCallable(onFinally);\n    return this.then(\n      isFunction ? function (x) {\n        return promiseResolve(C, onFinally()).then(function () { return x; });\n      } : onFinally,\n      isFunction ? function (e) {\n        return promiseResolve(C, onFinally()).then(function () { throw e; });\n      } : onFinally\n    );\n  }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n  var method = getBuiltIn('Promise').prototype['finally'];\n  if (NativePromisePrototype['finally'] !== method) {\n    defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar slice = require('../internals/array-slice');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar aCallable = require('../internals/a-callable');\nvar perform = require('../internals/perform');\n\nvar Promise = globalThis.Promise;\n\nvar ACCEPT_ARGUMENTS = false;\n// Avoiding the use of polyfills of the previous iteration of this proposal\n// that does not accept arguments of the callback\nvar FORCED = !Promise || !Promise['try'] || perform(function () {\n  Promise['try'](function (argument) {\n    ACCEPT_ARGUMENTS = argument === 8;\n  }, 8);\n}).error || !ACCEPT_ARGUMENTS;\n\n// `Promise.try` method\n// https://tc39.es/ecma262/#sec-promise.try\n$({ target: 'Promise', stat: true, forced: FORCED }, {\n  'try': function (callbackfn /* , ...args */) {\n    var args = arguments.length > 1 ? slice(arguments, 1) : [];\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    var result = perform(function () {\n      return apply(aCallable(callbackfn), undefined, args);\n    });\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n    return promiseCapability.promise;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\n// `Promise.withResolvers` method\n// https://tc39.es/ecma262/#sec-promise.withResolvers\n$({ target: 'Promise', stat: true }, {\n  withResolvers: function withResolvers() {\n    var promiseCapability = newPromiseCapabilityModule.f(this);\n    return {\n      promise: promiseCapability.promise,\n      resolve: promiseCapability.resolve,\n      reject: promiseCapability.reject\n    };\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar functionApply = require('../internals/function-apply');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  Reflect.apply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n  apply: function apply(target, thisArgument, argumentsList) {\n    return functionApply(aCallable(target), thisArgument, anObject(argumentsList));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target === newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar fails = require('../internals/fails');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\nvar ERROR_INSTEAD_OF_FALSE = fails(function () {\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });\n});\n\n// `Reflect.defineProperty` method\n// https://tc39.es/ecma262/#sec-reflect.defineproperty\n$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {\n  defineProperty: function defineProperty(target, propertyKey, attributes) {\n    anObject(target);\n    var key = toPropertyKey(propertyKey);\n    anObject(attributes);\n    try {\n      definePropertyModule.f(target, key, attributes);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n  deleteProperty: function deleteProperty(target, propertyKey) {\n    var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n    return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n  }\n});\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n  return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n  var receiver = arguments.length < 3 ? target : arguments[2];\n  var descriptor, prototype;\n  if (anObject(target) === receiver) return target[propertyKey];\n  descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n  if (descriptor) return isDataDescriptor(descriptor)\n    ? descriptor.value\n    : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n  get: get\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\n\n// `Reflect.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor\n$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n    return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(target) {\n    return objectGetPrototypeOf(anObject(target));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\n\n// `Reflect.has` method\n// https://tc39.es/ecma262/#sec-reflect.has\n$({ target: 'Reflect', stat: true }, {\n  has: function has(target, propertyKey) {\n    return propertyKey in target;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar $isExtensible = require('../internals/object-is-extensible');\n\n// `Reflect.isExtensible` method\n// https://tc39.es/ecma262/#sec-reflect.isextensible\n$({ target: 'Reflect', stat: true }, {\n  isExtensible: function isExtensible(target) {\n    anObject(target);\n    return $isExtensible(target);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar ownKeys = require('../internals/own-keys');\n\n// `Reflect.ownKeys` method\n// https://tc39.es/ecma262/#sec-reflect.ownkeys\n$({ target: 'Reflect', stat: true }, {\n  ownKeys: ownKeys\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar anObject = require('../internals/an-object');\nvar FREEZING = require('../internals/freezing');\n\n// `Reflect.preventExtensions` method\n// https://tc39.es/ecma262/#sec-reflect.preventextensions\n$({ target: 'Reflect', stat: true, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(target) {\n    anObject(target);\n    try {\n      var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');\n      if (objectPreventExtensions) objectPreventExtensions(target);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar fails = require('../internals/fails');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\n// `Reflect.set` method\n// https://tc39.es/ecma262/#sec-reflect.set\nfunction set(target, propertyKey, V /* , receiver */) {\n  var receiver = arguments.length < 4 ? target : arguments[3];\n  var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  var existingDescriptor, prototype, setter;\n  if (!ownDescriptor) {\n    if (isObject(prototype = getPrototypeOf(target))) {\n      return set(prototype, propertyKey, V, receiver);\n    }\n    ownDescriptor = createPropertyDescriptor(0);\n  }\n  if (isDataDescriptor(ownDescriptor)) {\n    if (ownDescriptor.writable === false || !isObject(receiver)) return false;\n    if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {\n      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n      existingDescriptor.value = V;\n      definePropertyModule.f(receiver, propertyKey, existingDescriptor);\n    } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));\n  } else {\n    setter = ownDescriptor.set;\n    if (setter === undefined) return false;\n    call(setter, receiver, V);\n  } return true;\n}\n\n// MS Edge 17-18 Reflect.set allows setting the property to object\n// with non-writable property on the prototype\nvar MS_EDGE_BUG = fails(function () {\n  var Constructor = function () { /* empty */ };\n  var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });\n  // eslint-disable-next-line es/no-reflect -- required for testing\n  return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;\n});\n\n$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {\n  set: set\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\nvar objectSetPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Reflect.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.setprototypeof\nif (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {\n  setPrototypeOf: function setPrototypeOf(target, proto) {\n    anObject(target);\n    aPossiblePrototype(proto);\n    try {\n      objectSetPrototypeOf(target, proto);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(globalThis.Reflect, 'Reflect', true);\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n  var flags = R.flags;\n  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n    ? call(regExpFlags, R) : flags;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') !== null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = globalThis.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = globalThis.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only proper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n  (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n    re2[MATCH] = false;\n    // RegExp constructor can alter flags and IsRegExp works correct with @@match\n    // eslint-disable-next-line sonarjs/inconsistent-function-call -- required for testing\n    return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i';\n  }));\n\nvar handleDotAll = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var brackets = false;\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      result += chr + charAt(string, ++index);\n      continue;\n    }\n    if (!brackets && chr === '.') {\n      result += '[\\\\s\\\\S]';\n    } else {\n      if (chr === '[') {\n        brackets = true;\n      } else if (chr === ']') {\n        brackets = false;\n      } result += chr;\n    }\n  } return result;\n};\n\nvar handleNCG = function (string) {\n  var length = string.length;\n  var index = 0;\n  var result = '';\n  var named = [];\n  var names = create(null);\n  var brackets = false;\n  var ncg = false;\n  var groupid = 0;\n  var groupname = '';\n  var chr;\n  for (; index <= length; index++) {\n    chr = charAt(string, index);\n    if (chr === '\\\\') {\n      chr += charAt(string, ++index);\n    } else if (chr === ']') {\n      brackets = false;\n    } else if (!brackets) switch (true) {\n      case chr === '[':\n        brackets = true;\n        break;\n      case chr === '(':\n        result += chr;\n        // ignore non-capturing groups\n        if (stringSlice(string, index + 1, index + 3) === '?:') {\n          continue;\n        }\n        if (exec(IS_NCG, stringSlice(string, index + 1))) {\n          index += 2;\n          ncg = true;\n        }\n        groupid++;\n        continue;\n      case chr === '>' && ncg:\n        if (groupname === '' || hasOwn(names, groupname)) {\n          throw new SyntaxError('Invalid capture group name');\n        }\n        names[groupname] = true;\n        named[named.length] = [groupname, groupid];\n        ncg = false;\n        groupname = '';\n        continue;\n    }\n    if (ncg) groupname += chr;\n    else result += chr;\n  } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n  var RegExpWrapper = function RegExp(pattern, flags) {\n    var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n    var patternIsRegExp = isRegExp(pattern);\n    var flagsAreUndefined = flags === undefined;\n    var groups = [];\n    var rawPattern = pattern;\n    var rawFlags, dotAll, sticky, handled, result, state;\n\n    if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n      return pattern;\n    }\n\n    if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n      pattern = pattern.source;\n      if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n    }\n\n    pattern = pattern === undefined ? '' : toString(pattern);\n    flags = flags === undefined ? '' : toString(flags);\n    rawPattern = pattern;\n\n    if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n      dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n      if (dotAll) flags = replace(flags, /s/g, '');\n    }\n\n    rawFlags = flags;\n\n    if (MISSED_STICKY && 'sticky' in re1) {\n      sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n      if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n    }\n\n    if (UNSUPPORTED_NCG) {\n      handled = handleNCG(pattern);\n      pattern = handled[0];\n      groups = handled[1];\n    }\n\n    result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n    if (dotAll || sticky || groups.length) {\n      state = enforceInternalState(result);\n      if (dotAll) {\n        state.dotAll = true;\n        state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n      }\n      if (sticky) state.sticky = true;\n      if (groups.length) state.groups = groups;\n    }\n\n    if (pattern !== rawPattern) try {\n      // fails in old engines, but we have no alternatives for unsupported regex syntax\n      createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n    } catch (error) { /* empty */ }\n\n    return result;\n  };\n\n  for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n    proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n  }\n\n  RegExpPrototype.constructor = RegExpWrapper;\n  RegExpWrapper.prototype = RegExpPrototype;\n  defineBuiltIn(globalThis, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n  defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n    configurable: true,\n    get: function dotAll() {\n      if (this === RegExpPrototype) return;\n      // We can't use InternalStateModule.getterFor because\n      // we don't add metadata for regexps created by a literal.\n      if (classof(this) === 'RegExp') {\n        return !!getInternalState(this).dotAll;\n      }\n      throw new $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n", "'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = globalThis.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && MISSED_STICKY) {\n  defineBuiltInAccessor(RegExpPrototype, 'sticky', {\n    configurable: true,\n    get: function sticky() {\n      if (this === RegExpPrototype) return;\n      // We can't use InternalStateModule.getterFor because\n      // we don't add metadata for regexps created by a literal.\n      if (classof(this) === 'RegExp') {\n        return !!getInternalState(this).sticky;\n      }\n      throw new $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar anObject = require('../internals/an-object');\nvar toString = require('../internals/to-string');\n\nvar DELEGATES_TO_EXEC = function () {\n  var execCalled = false;\n  var re = /[ac]/;\n  re.exec = function () {\n    execCalled = true;\n    return /./.exec.apply(this, arguments);\n  };\n  return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n  test: function (S) {\n    var R = anObject(this);\n    var string = toString(S);\n    var exec = R.exec;\n    if (!isCallable(exec)) return call(nativeTest, R, string);\n    var result = call(exec, R, string);\n    if (result === null) return false;\n    anObject(result);\n    return true;\n  }\n});\n", "'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var pattern = $toString(R.source);\n    var flags = $toString(getRegExpFlags(R));\n    return '/' + pattern + '/' + flags;\n  }, { unsafe: true });\n}\n", "'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n  // eslint-disable-next-line es/no-set -- safe\n  Set: Set,\n  add: uncurryThis(SetPrototype.add),\n  has: uncurryThis(SetPrototype.has),\n  remove: uncurryThis(SetPrototype['delete']),\n  proto: SetPrototype\n};\n", "'use strict';\nvar has = require('../internals/set-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n  has(it);\n  return it;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n  var next = record.next;\n  var step, result;\n  while (!(step = call(next, iterator)).done) {\n    result = fn(step.value);\n    if (result !== undefined) return result;\n  }\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar SetHelpers = require('../internals/set-helpers');\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n", "'use strict';\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n  var result = new Set();\n  iterate(set, function (it) {\n    add(result, it);\n  });\n  return result;\n};\n", "'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar SetHelpers = require('../internals/set-helpers');\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n  return set.size;\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar call = require('../internals/function-call');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n  this.set = set;\n  this.size = max(intSize, 0);\n  this.has = aCallable(set.has);\n  this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n  getIterator: function () {\n    return getIteratorDirect(anObject(call(this.keys, this.set)));\n  },\n  includes: function (it) {\n    return call(this.has, this.set, it);\n  }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n  anObject(obj);\n  var numSize = +obj.size;\n  // NOTE: If size is undefined, then numSize will be NaN\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n  var intSize = toIntegerOrInfinity(numSize);\n  if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n  return new SetRecord(obj, intSize);\n};\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  var result = clone(O);\n  if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n    if (otherRec.includes(e)) remove(result, e);\n  });\n  else iterateSimple(otherRec.getIterator(), function (e) {\n    if (has(O, e)) remove(result, e);\n  });\n  return result;\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nvar createSetLike = function (size) {\n  return {\n    size: size,\n    has: function () {\n      return false;\n    },\n    keys: function () {\n      return {\n        next: function () {\n          return { done: true };\n        }\n      };\n    }\n  };\n};\n\nvar createSetLikeWithInfinitySize = function (size) {\n  return {\n    size: size,\n    has: function () {\n      return true;\n    },\n    keys: function () {\n      throw new Error('e');\n    }\n  };\n};\n\nmodule.exports = function (name, callback) {\n  var Set = getBuiltIn('Set');\n  try {\n    new Set()[name](createSetLike(0));\n    try {\n      // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it\n      // https://github.com/tc39/proposal-set-methods/pull/88\n      new Set()[name](createSetLike(-1));\n      return false;\n    } catch (error2) {\n      if (!callback) return true;\n      // early V8 implementation bug\n      // https://issues.chromium.org/issues/351332634\n      try {\n        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\n        return false;\n      } catch (error) {\n        var set = new Set();\n        set.add(1);\n        set.add(2);\n        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n      }\n    }\n  } catch (error) {\n    return false;\n  }\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar difference = require('../internals/set-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\n  return result.size === 0;\n});\n\n// `Set.prototype.difference` method\n// https://tc39.es/ecma262/#sec-set.prototype.difference\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  difference: difference\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  var result = new Set();\n\n  if (size(O) > otherRec.size) {\n    iterateSimple(otherRec.getIterator(), function (e) {\n      if (has(O, e)) add(result, e);\n    });\n  } else {\n    iterateSet(O, function (e) {\n      if (otherRec.includes(e)) add(result, e);\n    });\n  }\n\n  return result;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar intersection = require('../internals/set-intersection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n  return result.size === 2 && result.has(1) && result.has(2);\n}) || fails(function () {\n  // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing\n  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://tc39.es/ecma262/#sec-set.prototype.intersection\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  intersection: intersection\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n    if (otherRec.includes(e)) return false;\n  }, true) !== false;\n  var iterator = otherRec.getIterator();\n  return iterateSimple(iterator, function (e) {\n    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n  }) !== false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isDisjointFrom = require('../internals/set-is-disjoint-from');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\n  return !result;\n});\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  isDisjointFrom: isDisjointFrom\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) > otherRec.size) return false;\n  return iterate(O, function (e) {\n    if (!otherRec.includes(e)) return false;\n  }, true) !== false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isSubsetOf = require('../internals/set-is-subset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\n  return result;\n});\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issubsetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  isSubsetOf: isSubsetOf\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n  var O = aSet(this);\n  var otherRec = getSetRecord(other);\n  if (size(O) < otherRec.size) return false;\n  var iterator = otherRec.getIterator();\n  return iterateSimple(iterator, function (e) {\n    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n  }) !== false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar isSupersetOf = require('../internals/set-is-superset-of');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\n  return !result;\n});\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issupersetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n  isSupersetOf: isSupersetOf\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n  var O = aSet(this);\n  var keysIter = getSetRecord(other).getIterator();\n  var result = clone(O);\n  iterateSimple(keysIter, function (e) {\n    if (has(O, e)) remove(result, e);\n    else add(result, e);\n  });\n  return result;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n  symmetricDifference: symmetricDifference\n});\n", "'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n  var O = aSet(this);\n  var keysIter = getSetRecord(other).getIterator();\n  var result = clone(O);\n  iterateSimple(keysIter, function (it) {\n    add(result, it);\n  });\n  return result;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar union = require('../internals/set-union');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.union` method\n// https://tc39.es/ecma262/#sec-set.prototype.union\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n  union: union\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-string-prototype-at -- safe\n  return '\uD842\uDFB7'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://tc39.es/ecma262/#sec-string.prototype.at\n$({ target: 'String', proto: true, forced: FORCED }, {\n  at: function at(index) {\n    var S = toString(requireObjectCoercible(this));\n    var len = S.length;\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : charAt(S, k);\n  }\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n  codePointAt: function codePointAt(pos) {\n    return codeAt(this, pos);\n  }\n});\n", "'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  endsWith: function endsWith(searchString /* , endPosition = @length */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n    var len = that.length;\n    var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n    var search = toString(searchString);\n    return slice(that, end - search.length, end) === search;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar $RangeError = RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  fromCodePoint: function fromCodePoint(x) {\n    var elements = [];\n    var length = arguments.length;\n    var i = 0;\n    var code;\n    while (length > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw new $RangeError(code + ' is not a valid code point');\n      elements[i] = code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n    } return join(elements, '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `String.prototype.isWellFormed` method\n// https://tc39.es/ecma262/#sec-string.prototype.iswellformed\n$({ target: 'String', proto: true }, {\n  isWellFormed: function isWellFormed() {\n    var S = toString(requireObjectCoercible(this));\n    var length = S.length;\n    for (var i = 0; i < length; i++) {\n      var charCode = charCodeAt(S, i);\n      // single UTF-16 code unit\n      if ((charCode & 0xF800) !== 0xD800) continue;\n      // unpaired surrogate\n      if (charCode >= 0xDC00 || ++i >= length || (charCodeAt(S, i) & 0xFC00) !== 0xDC00) return false;\n    } return true;\n  }\n});\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegExp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) !== 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () {\n      execCalled = true;\n      return null;\n    };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n        }\n        return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n", "'use strict';\n/* eslint-disable es/no-string-prototype-matchall -- safe */\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar classof = require('../internals/classof-raw');\nvar isRegExp = require('../internals/is-regexp');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getMethod = require('../internals/get-method');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar InternalStateModule = require('../internals/internal-state');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar nativeMatchAll = uncurryThis(''.matchAll);\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {\n  nativeMatchAll('a', /./);\n});\n\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {\n  setInternalState(this, {\n    type: REGEXP_STRING_ITERATOR,\n    regexp: regexp,\n    string: string,\n    global: $global,\n    unicode: fullUnicode,\n    done: false\n  });\n}, REGEXP_STRING, function next() {\n  var state = getInternalState(this);\n  if (state.done) return createIterResultObject(undefined, true);\n  var R = state.regexp;\n  var S = state.string;\n  var match = regExpExec(R, S);\n  if (match === null) {\n    state.done = true;\n    return createIterResultObject(undefined, true);\n  }\n  if (state.global) {\n    if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n    return createIterResultObject(match, false);\n  }\n  state.done = true;\n  return createIterResultObject(match, false);\n});\n\nvar $matchAll = function (string) {\n  var R = anObject(this);\n  var S = toString(string);\n  var C = speciesConstructor(R, RegExp);\n  var flags = toString(getRegExpFlags(R));\n  var matcher, $global, fullUnicode;\n  matcher = new C(C === RegExp ? R.source : R, flags);\n  $global = !!~stringIndexOf(flags, 'g');\n  fullUnicode = !!~stringIndexOf(flags, 'u');\n  matcher.lastIndex = toLength(R.lastIndex);\n  return new $RegExpStringIterator(matcher, S, $global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n  matchAll: function matchAll(regexp) {\n    var O = requireObjectCoercible(this);\n    var flags, S, matcher, rx;\n    if (!isNullOrUndefined(regexp)) {\n      if (isRegExp(regexp)) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(regexp)));\n        if (!~stringIndexOf(flags, 'g')) throw new $TypeError('`.matchAll` does not allow non-global regexes');\n      }\n      if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n      matcher = getMethod(regexp, MATCH_ALL);\n      if (matcher === undefined && IS_PURE && classof(regexp) === 'RegExp') matcher = $matchAll;\n      if (matcher) return call(matcher, regexp, O);\n    } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll(O, regexp);\n    S = toString(O);\n    rx = new RegExp(regexp, 'g');\n    return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);\n  }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll);\n", "'use strict';\n// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/environment-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n", "'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n    return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n  padStart: function padStart(maxLength /* , fillString = ' ' */) {\n    return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toObject = require('../internals/to-object');\nvar toString = require('../internals/to-string');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar push = uncurryThis([].push);\nvar join = uncurryThis([].join);\n\n// `String.raw` method\n// https://tc39.es/ecma262/#sec-string.raw\n$({ target: 'String', stat: true }, {\n  raw: function raw(template) {\n    var rawTemplate = toIndexedObject(toObject(template).raw);\n    var literalSegments = lengthOfArrayLike(rawTemplate);\n    if (!literalSegments) return '';\n    var argumentsLength = arguments.length;\n    var elements = [];\n    var i = 0;\n    while (true) {\n      push(elements, toString(rawTemplate[i++]));\n      if (i === literalSegments) return join(elements, '');\n      if (i < argumentsLength) push(elements, toString(arguments[i]));\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n  repeat: repeat\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (charAt(ch, 0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return stringSlice(str, 0, position);\n      case \"'\": return stringSlice(str, tailPos);\n      case '<':\n        capture = namedCaptures[stringSlice(ch, 1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n", "'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n      return replacer\n        ? call(replacer, searchValue, O, replaceValue)\n        : call(nativeReplace, toString(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (string, replaceValue) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (\n        typeof replaceValue == 'string' &&\n        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n        stringIndexOf(replaceValue, '$<') === -1\n      ) {\n        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var functionalReplace = isCallable(replaceValue);\n      if (!functionalReplace) replaceValue = toString(replaceValue);\n\n      var global = rx.global;\n      var fullUnicode;\n      if (global) {\n        fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n\n      var results = [];\n      var result;\n      while (true) {\n        result = regExpExec(rx, S);\n        if (result === null) break;\n\n        push(results, result);\n        if (!global) break;\n\n        var matchStr = toString(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = toString(result[0]);\n        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n        var captures = [];\n        var replacement;\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = concat([matched], captures, position, S);\n          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n          replacement = toString(apply(replaceValue, undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n\n      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n  replaceAll: function replaceAll(searchValue, replaceValue) {\n    var O = requireObjectCoercible(this);\n    var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, position, replacement;\n    var endOfLastMatch = 0;\n    var result = '';\n    if (!isNullOrUndefined(searchValue)) {\n      IS_REG_EXP = isRegExp(searchValue);\n      if (IS_REG_EXP) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n        if (!~indexOf(flags, 'g')) throw new $TypeError('`.replaceAll` does not allow non-global regexes');\n      }\n      replacer = getMethod(searchValue, REPLACE);\n      if (replacer) return call(replacer, searchValue, O, replaceValue);\n      if (IS_PURE && IS_REG_EXP) return replace(toString(O), searchValue, replaceValue);\n    }\n    string = toString(O);\n    searchString = toString(searchValue);\n    functionalReplace = isCallable(replaceValue);\n    if (!functionalReplace) replaceValue = toString(replaceValue);\n    searchLength = searchString.length;\n    advanceBy = max(1, searchLength);\n    position = indexOf(string, searchString);\n    while (position !== -1) {\n      replacement = functionalReplace\n        ? toString(replaceValue(searchString, position, string))\n        : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n      result += stringSlice(string, endOfLastMatch, position) + replacement;\n      endOfLastMatch = position + searchLength;\n      position = position + advanceBy > string.length ? -1 : indexOf(string, searchString, position + advanceBy);\n    }\n    if (endOfLastMatch < string.length) {\n      result += stringSlice(string, endOfLastMatch);\n    }\n    return result;\n  }\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.es/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\n      return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeSearch, rx, S);\n\n      if (res.done) return res.value;\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar push = uncurryThis([].push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar BUGGY = 'abbc'.split(/(b)*/)[1] === 'c' ||\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  'test'.split(/(?:)/, -1).length !== 4 ||\n  'ab'.split(/(?:ab)*/).length !== 2 ||\n  '.'.split(/(.?)(.?)/).length !== 4 ||\n  // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n  '.'.split(/()()/).length > 1 ||\n  ''.split(/.?/).length;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit = '0'.split(undefined, 0).length ? function (separator, limit) {\n    return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n  } : nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n      return splitter\n        ? call(splitter, separator, O, limit)\n        : call(internalSplit, toString(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (string, limit) {\n      var rx = anObject(this);\n      var S = toString(string);\n\n      if (!BUGGY) {\n        var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n        if (res.done) return res.value;\n      }\n\n      var C = speciesConstructor(rx, RegExp);\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return regExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          push(A, stringSlice(S, p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            push(A, z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      push(A, stringSlice(S, p));\n      return A;\n    }\n  ];\n}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n  var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n  return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = toString(requireObjectCoercible(this));\n    notARegExp(searchString);\n    var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = toString(searchString);\n    return stringSlice(that, index, index + search.length) === search;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\n\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\nvar min = Math.min;\n\n// eslint-disable-next-line unicorn/prefer-string-slice -- required for testing\nvar FORCED = !''.substr || 'ab'.substr(-1) !== 'b';\n\n// `String.prototype.substr` method\n// https://tc39.es/ecma262/#sec-string.prototype.substr\n$({ target: 'String', proto: true, forced: FORCED }, {\n  substr: function substr(start, length) {\n    var that = toString(requireObjectCoercible(this));\n    var size = that.length;\n    var intStart = toIntegerOrInfinity(start);\n    var intLength, intEnd;\n    if (intStart === Infinity) intStart = 0;\n    if (intStart < 0) intStart = max(size + intStart, 0);\n    intLength = length === undefined ? size : toIntegerOrInfinity(length);\n    if (intLength <= 0 || intLength === Infinity) return '';\n    intEnd = min(intStart + intLength, size);\n    return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar $Array = Array;\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\n// eslint-disable-next-line es/no-string-prototype-towellformed -- safe\nvar $toWellFormed = ''.toWellFormed;\nvar REPLACEMENT_CHARACTER = '\\uFFFD';\n\n// Safari bug\nvar TO_STRING_CONVERSION_BUG = $toWellFormed && fails(function () {\n  return call($toWellFormed, 1) !== '1';\n});\n\n// `String.prototype.toWellFormed` method\n// https://tc39.es/ecma262/#sec-string.prototype.towellformed\n$({ target: 'String', proto: true, forced: TO_STRING_CONVERSION_BUG }, {\n  toWellFormed: function toWellFormed() {\n    var S = toString(requireObjectCoercible(this));\n    if (TO_STRING_CONVERSION_BUG) return call($toWellFormed, S);\n    var length = S.length;\n    var result = $Array(length);\n    for (var i = 0; i < length; i++) {\n      var charCode = charCodeAt(S, i);\n      // single UTF-16 code unit\n      if ((charCode & 0xF800) !== 0xD800) result[i] = charAt(S, i);\n      // unpaired surrogate\n      else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = REPLACEMENT_CHARACTER;\n      // surrogate pair\n      else {\n        result[i] = charAt(S, i);\n        result[++i] = charAt(S, i);\n      }\n    } return join(result, '');\n  }\n});\n", "'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n", "'use strict';\nvar $trimEnd = require('../internals/string-trim').end;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n  return $trimEnd(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n", "'use strict';\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n  trimRight: trimEnd\n});\n", "'use strict';\n// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-right');\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n  trimEnd: trimEnd\n});\n", "'use strict';\nvar $trimStart = require('../internals/string-trim').start;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimStart, trimLeft }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// https://tc39.es/ecma262/#String.prototype.trimleft\nmodule.exports = forcedStringTrimMethod('trimStart') ? function trimStart() {\n  return $trimStart(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimStart;\n", "'use strict';\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimLeft` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimleft\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, {\n  trimLeft: trimStart\n});\n", "'use strict';\n// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-left');\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, {\n  trimStart: trimStart\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n  var S = toString(requireObjectCoercible(string));\n  var p1 = '<' + tag;\n  if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    var test = ''[METHOD_NAME]('\"');\n    return test !== test.toLowerCase() || test.split('\"').length > 3;\n  });\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n  anchor: function anchor(name) {\n    return createHTML(this, 'a', 'name', name);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.big` method\n// https://tc39.es/ecma262/#sec-string.prototype.big\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {\n  big: function big() {\n    return createHTML(this, 'big', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.blink` method\n// https://tc39.es/ecma262/#sec-string.prototype.blink\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {\n  blink: function blink() {\n    return createHTML(this, 'blink', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.bold` method\n// https://tc39.es/ecma262/#sec-string.prototype.bold\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {\n  bold: function bold() {\n    return createHTML(this, 'b', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n  fixed: function fixed() {\n    return createHTML(this, 'tt', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontcolor` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontcolor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {\n  fontcolor: function fontcolor(color) {\n    return createHTML(this, 'font', 'color', color);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fontsize` method\n// https://tc39.es/ecma262/#sec-string.prototype.fontsize\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {\n  fontsize: function fontsize(size) {\n    return createHTML(this, 'font', 'size', size);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n  italics: function italics() {\n    return createHTML(this, 'i', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n  link: function link(url) {\n    return createHTML(this, 'a', 'href', url);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n  small: function small() {\n    return createHTML(this, 'small', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n  strike: function strike() {\n    return createHTML(this, 'strike', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sub` method\n// https://tc39.es/ecma262/#sec-string.prototype.sub\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {\n  sub: function sub() {\n    return createHTML(this, 'sub', '', '');\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.sup` method\n// https://tc39.es/ecma262/#sec-string.prototype.sup\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {\n  sup: function sup() {\n    return createHTML(this, 'sup', '', '');\n  }\n});\n", "'use strict';\n/* eslint-disable no-new, sonarjs/inconsistent-function-call -- required for testing */\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar Int8Array = globalThis.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n", "'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw new $RangeError('Wrong offset');\n  return offset;\n};\n", "'use strict';\nvar round = Math.round;\n\nmodule.exports = function (it) {\n  var value = round(it);\n  return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n};\n", "'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n  var klass = classof(it);\n  return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n  var prim = toPrimitive(argument, 'number');\n  if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n  // eslint-disable-next-line es/no-bigint -- safe\n  return BigInt(prim);\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar toBigInt = require('../internals/to-big-int');\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var C = aConstructor(this);\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    O = [];\n    while (!(step = call(next, iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2]);\n  }\n  length = lengthOfArrayLike(O);\n  result = new (aTypedArrayConstructor(C))(length);\n  thisIsBigIntArray = isBigIntArray(result);\n  for (i = 0; length > i; i++) {\n    value = mapping ? mapfn(O[i], i) : O[i];\n    // FF30- typed arrays doesn't properly convert objects to typed array values\n    result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n  }\n  return result;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toUint8Clamped = require('../internals/to-uint8-clamped');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar RangeError = globalThis.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar addGetter = function (it, key) {\n  defineBuiltInAccessor(it, key, {\n    configurable: true,\n    get: function () {\n      return getInternalState(this)[key];\n    }\n  });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && !isSymbol(key)\n    && key in target\n    && isIntegralNumber(+key)\n    && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  key = toPropertyKey(key);\n  return isTypedArrayIndex(target, key)\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  key = toPropertyKey(key);\n  if (isTypedArrayIndex(target, key)\n    && isObject(descriptor)\n    && hasOwn(descriptor, 'value')\n    && !hasOwn(descriptor, 'get')\n    && !hasOwn(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = globalThis[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructorPrototype);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw new RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw new RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw new RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return arrayFromConstructorAndList(TypedArrayConstructor, data);\n        } else {\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructorPrototype);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return arrayFromConstructorAndList(TypedArrayConstructor, data);\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor;\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n  return function Float32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n  return function Float64Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n  return function Int8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n  return function Int16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n  return function Int32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8ClampedArray(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n}, true);\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n  return function Uint16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n  return function Uint32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\nexportTypedArrayMethod('at', function at(index) {\n  var O = aTypedArray(this);\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n  return (k < 0 || k >= len) ? undefined : O[k];\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n  var count = 0;\n  // eslint-disable-next-line es/no-typed-arrays -- safe\n  new Int8Array(2).fill({ valueOf: function () { return count++; } });\n  return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  var length = arguments.length;\n  aTypedArray(this);\n  var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n  return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n", "'use strict';\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar getTypedArrayConstructor = require('../internals/array-buffer-view-core').getTypedArrayConstructor;\n\nmodule.exports = function (instance, list) {\n  return arrayFromConstructorAndList(getTypedArrayConstructor(instance), list);\n};\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSameTypeAndList = require('../internals/typed-array-from-same-type-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSameTypeAndList(this, list);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n  return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n  return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = globalThis.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n  TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n  && TypedArrayPrototype.values\n  && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n  && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n  return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n  return $join(aTypedArray(this), separator);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  var length = arguments.length;\n  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (getTypedArrayConstructor(O))(length);\n  });\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.of` method\n// https://tc39.es/ecma262/#sec-%typedarray%.of\nexportTypedArrayStaticMethod('of', function of(/* ...items */) {\n  var index = 0;\n  var length = arguments.length;\n  var result = new (aTypedArrayConstructor(this))(length);\n  while (length > index) result[index] = arguments[index++];\n  return result;\n}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = globalThis.RangeError;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw new RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = arraySlice(aTypedArray(this), start, end);\n  var C = getTypedArrayConstructor(this);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = globalThis.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n  nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n  nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 74;\n  if (FF) return FF < 67;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 602;\n\n  var array = new Uint16Array(516);\n  var expected = Array(516);\n  var index, mod;\n\n  for (index = 0; index < 516; index++) {\n    mod = index % 4;\n    array[index] = 515 - index;\n    expected[index] = index - 2 * mod + 3;\n  }\n\n  nativeSort(array, function (a, b) {\n    return (a / 4 | 0) - (b / 4 | 0);\n  });\n\n  for (index = 0; index < 516; index++) {\n    if (array[index] !== expected[index]) return true;\n  }\n});\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (y !== y) return -1;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (x !== x) return 1;\n    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n    return x > y;\n  };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  if (comparefn !== undefined) aCallable(comparefn);\n  if (STABLE_SORT) return nativeSort(this, comparefn);\n\n  return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  var C = getTypedArrayConstructor(O);\n  return new C(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = globalThis.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return apply(\n    $toLocaleString,\n    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n    arraySlice(arguments)\n  );\n}, FORCED);\n", "'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n  return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n", "'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n  if (compareFn !== undefined) aCallable(compareFn);\n  var O = aTypedArray(this);\n  var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n  return sort(A, compareFn);\n});\n", "'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = globalThis.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return join(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n", "'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n  try {\n    // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n    new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n  } catch (error) {\n    // some early implementations, like WebKit, does not follow the final semantic\n    // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n    return error === 8;\n  }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n  var O = aTypedArray(this);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n  return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\n\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar stringSlice = uncurryThis(''.slice);\n\nvar hex2 = /^[\\da-f]{2}$/i;\nvar hex4 = /^[\\da-f]{4}$/i;\n\n// `unescape` method\n// https://tc39.es/ecma262/#sec-unescape-string\n$({ global: true }, {\n  unescape: function unescape(string) {\n    var str = toString(string);\n    var result = '';\n    var length = str.length;\n    var index = 0;\n    var chr, part;\n    while (index < length) {\n      chr = charAt(str, index++);\n      if (chr === '%') {\n        if (charAt(str, index) === 'u') {\n          part = stringSlice(str, index + 1, index + 5);\n          if (exec(hex4, part)) {\n            result += fromCharCode(parseInt(part, 16));\n            index += 5;\n            continue;\n          }\n        } else {\n          part = stringSlice(str, index, index + 2);\n          if (exec(hex2, part)) {\n            result += fromCharCode(parseInt(part, 16));\n            index += 2;\n            continue;\n          }\n        }\n      }\n      result += chr;\n    } return result;\n  }\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar hasOwn = require('../internals/has-own-property');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (state) {\n  return state.frozen || (state.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n  this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n  return find(store.entries, function (it) {\n    return it[0] === key;\n  });\n};\n\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.entries.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = findIndex(this.entries, function (it) {\n      return it[0] === key;\n    });\n    if (~index) splice(this.entries, index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        id: id++,\n        frozen: null\n      });\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var data = getWeakData(anObject(key), true);\n      if (data === true) uncaughtFrozenStore(state).set(key, value);\n      else data[state.id] = value;\n      return that;\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n      // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n      'delete': function (key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n        return data && hasOwn(data, state.id) && delete data[state.id];\n      },\n      // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n      // https://tc39.es/ecma262/#sec-weakset.prototype.has\n      has: function has(key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state).has(key);\n        return data && hasOwn(data, state.id);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `WeakMap.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n      get: function get(key) {\n        var state = getInternalState(this);\n        if (isObject(key)) {\n          var data = getWeakData(key);\n          if (data === true) return uncaughtFrozenStore(state).get(key);\n          if (data) return data[state.id];\n        }\n      },\n      // `WeakMap.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n      set: function set(key, value) {\n        return define(this, key, value);\n      }\n    } : {\n      // `WeakSet.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-weakset.prototype.add\n      add: function add(value) {\n        return define(this, value, true);\n      }\n    });\n\n    return Constructor;\n  }\n};\n", "'use strict';\nvar FREEZING = require('../internals/freezing');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar fails = require('../internals/fails');\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\n\nvar $Object = Object;\n// eslint-disable-next-line es/no-array-isarray -- safe\nvar isArray = Array.isArray;\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = $Object.isExtensible;\n// eslint-disable-next-line es/no-object-isfrozen -- safe\nvar isFrozen = $Object.isFrozen;\n// eslint-disable-next-line es/no-object-issealed -- safe\nvar isSealed = $Object.isSealed;\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar freeze = $Object.freeze;\n// eslint-disable-next-line es/no-object-seal -- safe\nvar seal = $Object.seal;\n\nvar IS_IE11 = !globalThis.ActiveXObject && 'ActiveXObject' in globalThis;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n  return function WeakMap() {\n    return init(this, arguments.length ? arguments[0] : undefined);\n  };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\nvar WeakMapPrototype = $WeakMap.prototype;\nvar nativeSet = uncurryThis(WeakMapPrototype.set);\n\n// Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them\nvar hasMSEdgeFreezingBug = function () {\n  return FREEZING && fails(function () {\n    var frozenArray = freeze([]);\n    nativeSet(new $WeakMap(), frozenArray, 1);\n    return !isFrozen(frozenArray);\n  });\n};\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP) if (IS_IE11) {\n  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n  InternalMetadataModule.enable();\n  var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n  var nativeHas = uncurryThis(WeakMapPrototype.has);\n  var nativeGet = uncurryThis(WeakMapPrototype.get);\n  defineBuiltIns(WeakMapPrototype, {\n    'delete': function (key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeDelete(this, key) || state.frozen['delete'](key);\n      } return nativeDelete(this, key);\n    },\n    has: function has(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) || state.frozen.has(key);\n      } return nativeHas(this, key);\n    },\n    get: function get(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n      } return nativeGet(this, key);\n    },\n    set: function set(key, value) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n      } else nativeSet(this, key, value);\n      return this;\n    }\n  });\n// Chakra Edge frozen keys fix\n} else if (hasMSEdgeFreezingBug()) {\n  defineBuiltIns(WeakMapPrototype, {\n    set: function set(key, value) {\n      var arrayIntegrityLevel;\n      if (isArray(key)) {\n        if (isFrozen(key)) arrayIntegrityLevel = freeze;\n        else if (isSealed(key)) arrayIntegrityLevel = seal;\n      }\n      nativeSet(this, key, value);\n      if (arrayIntegrityLevel) arrayIntegrityLevel(key);\n      return this;\n    }\n  });\n}\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-map.constructor');\n", "'use strict';\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\n\n// `WeakSet` constructor\n// https://tc39.es/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n  return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-set.constructor');\n", "'use strict';\nvar commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\nvar base64Alphabet = commonAlphabet + '+/';\nvar base64UrlAlphabet = commonAlphabet + '-_';\n\nvar inverse = function (characters) {\n  // TODO: use `Object.create(null)` in `core-js@4`\n  var result = {};\n  var index = 0;\n  for (; index < 64; index++) result[characters.charAt(index)] = index;\n  return result;\n};\n\nmodule.exports = {\n  i2c: base64Alphabet,\n  c2i: inverse(base64Alphabet),\n  i2cUrl: base64UrlAlphabet,\n  c2iUrl: inverse(base64UrlAlphabet)\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar c2i = require('../internals/base64-map').c2i;\n\nvar disallowed = /[^\\d+/a-z]/i;\nvar whitespaces = /[\\t\\n\\f\\r ]+/g;\nvar finalEq = /[=]{1,2}$/;\n\nvar $atob = getBuiltIn('atob');\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar exec = uncurryThis(disallowed.exec);\n\nvar BASIC = !!$atob && !fails(function () {\n  return $atob('aGk=') !== 'hi';\n});\n\nvar NO_SPACES_IGNORE = BASIC && fails(function () {\n  return $atob(' ') !== '';\n});\n\nvar NO_ENCODING_CHECK = BASIC && !fails(function () {\n  $atob('a');\n});\n\nvar NO_ARG_RECEIVING_CHECK = BASIC && !fails(function () {\n  $atob();\n});\n\nvar WRONG_ARITY = BASIC && $atob.length !== 1;\n\nvar FORCED = !BASIC || NO_SPACES_IGNORE || NO_ENCODING_CHECK || NO_ARG_RECEIVING_CHECK || WRONG_ARITY;\n\n// `atob` method\n// https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob\n$({ global: true, bind: true, enumerable: true, forced: FORCED }, {\n  atob: function atob(data) {\n    validateArgumentsLength(arguments.length, 1);\n    // `webpack` dev server bug on IE global methods - use call(fn, global, ...)\n    if (BASIC && !NO_SPACES_IGNORE && !NO_ENCODING_CHECK) return call($atob, globalThis, data);\n    var string = replace(toString(data), whitespaces, '');\n    var output = '';\n    var position = 0;\n    var bc = 0;\n    var length, chr, bs;\n    if (string.length % 4 === 0) {\n      string = replace(string, finalEq, '');\n    }\n    length = string.length;\n    if (length % 4 === 1 || exec(disallowed, string)) {\n      throw new (getBuiltIn('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError');\n    }\n    while (position < length) {\n      chr = charAt(string, position++);\n      bs = bc % 4 ? bs * 64 + c2i[chr] : c2i[chr];\n      if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6));\n    } return output;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar i2c = require('../internals/base64-map').i2c;\n\nvar $btoa = getBuiltIn('btoa');\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\nvar BASIC = !!$btoa && !fails(function () {\n  return $btoa('hi') !== 'aGk=';\n});\n\nvar NO_ARG_RECEIVING_CHECK = BASIC && !fails(function () {\n  $btoa();\n});\n\nvar WRONG_ARG_CONVERSION = BASIC && fails(function () {\n  return $btoa(null) !== 'bnVsbA==';\n});\n\nvar WRONG_ARITY = BASIC && $btoa.length !== 1;\n\n// `btoa` method\n// https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa\n$({ global: true, bind: true, enumerable: true, forced: !BASIC || NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY }, {\n  btoa: function btoa(data) {\n    validateArgumentsLength(arguments.length, 1);\n    // `webpack` dev server bug on IE global methods - use call(fn, global, ...)\n    if (BASIC) return call($btoa, globalThis, toString(data));\n    var string = toString(data);\n    var output = '';\n    var position = 0;\n    var map = i2c;\n    var block, charCode;\n    while (charAt(string, position) || (map = '=', position % 1)) {\n      charCode = charCodeAt(string, position += 3 / 4);\n      if (charCode > 0xFF) {\n        throw new (getBuiltIn('DOMException'))('The string contains characters outside of the Latin1 range', 'InvalidCharacterError');\n      }\n      block = block << 8 | charCode;\n      output += charAt(map, 63 & block >> 8 - position % 1 * 8);\n    } return output;\n  }\n});\n", "'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n", "'use strict';\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n", "'use strict';\nmodule.exports = {\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar getBuiltInNodeModule = require('../internals/get-built-in-node-module');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar errorToString = require('../internals/error-to-string');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar InternalStateModule = require('../internals/internal-state');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar DATA_CLONE_ERR = 'DATA_CLONE_ERR';\nvar Error = getBuiltIn('Error');\n// NodeJS < 17.0 does not expose `DOMException` to global\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {\n  try {\n    // NodeJS < 15.0 does not expose `MessageChannel` to global\n    var MessageChannel = getBuiltIn('MessageChannel') || getBuiltInNodeModule('worker_threads').MessageChannel;\n    // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe\n    new MessageChannel().port1.postMessage(new WeakMap());\n  } catch (error) {\n    if (error.name === DATA_CLONE_ERR && error.code === 25) return error.constructor;\n  }\n})();\nvar NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;\nvar ErrorPrototype = Error.prototype;\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);\nvar HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\n\nvar codeFor = function (name) {\n  return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;\n};\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var code = codeFor(name);\n  setInternalState(this, {\n    type: DOM_EXCEPTION,\n    name: name,\n    message: message,\n    code: code\n  });\n  if (!DESCRIPTORS) {\n    this.name = name;\n    this.message = message;\n    this.code = code;\n  }\n  if (HAS_STACK) {\n    var error = new Error(message);\n    error.name = DOM_EXCEPTION;\n    defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  }\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);\n\nvar createGetterDescriptor = function (get) {\n  return { enumerable: true, configurable: true, get: get };\n};\n\nvar getterFor = function (key) {\n  return createGetterDescriptor(function () {\n    return getInternalState(this)[key];\n  });\n};\n\nif (DESCRIPTORS) {\n  // `DOMException.prototype.code` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));\n  // `DOMException.prototype.message` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));\n  // `DOMException.prototype.name` getter\n  defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));\n}\n\ndefineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));\n\n// FF36- DOMException is a function, but can't be constructed\nvar INCORRECT_CONSTRUCTOR = fails(function () {\n  return !(new NativeDOMException() instanceof Error);\n});\n\n// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs\nvar INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {\n  return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';\n});\n\n// Deno 1.6.3- DOMException.prototype.code just missed\nvar INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {\n  return new NativeDOMException(1, 'DataCloneError').code !== 25;\n});\n\n// Deno 1.6.3- DOMException constants just missed\nvar MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR\n  || NativeDOMException[DATA_CLONE_ERR] !== 25\n  || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;\n\nvar FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;\n\n// `DOMException` constructor\n// https://webidl.spec.whatwg.org/#idl-DOMException\n$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {\n  defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);\n}\n\nif (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {\n  defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {\n    return codeFor(anObject(this).name);\n  }));\n}\n\n// `DOMException` constants\nfor (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n  var constant = DOMExceptionConstants[key];\n  var constantName = constant.s;\n  var descriptor = createPropertyDescriptor(6, constant.c);\n  if (!hasOwn(PolyfilledDOMException, constantName)) {\n    defineProperty(PolyfilledDOMException, constantName, descriptor);\n  }\n  if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {\n    defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var that = new NativeDOMException(message, name);\n  var error = new Error(message);\n  error.name = DOM_EXCEPTION;\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  inheritIfRequired(that, this, $DOMException);\n  return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n  if (!IS_PURE) {\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n  }\n\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n    var constant = DOMExceptionConstants[key];\n    var constantName = constant.s;\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n    }\n  }\n}\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\nvar DOM_EXCEPTION = 'DOMException';\n\n// `DOMException.prototype[@@toStringTag]` property\nsetToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: globalThis.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n", "'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENVIRONMENT = require('../internals/environment');\nvar USER_AGENT = require('../internals/environment-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = globalThis.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENVIRONMENT === 'BUN' && (function () {\n  var version = globalThis.Bun.version.split('.');\n  return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = globalThis.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: globalThis.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar microtask = require('../internals/microtask');\nvar aCallable = require('../internals/a-callable');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar fails = require('../internals/fails');\nvar DESCRIPTORS = require('../internals/descriptors');\n\n// Bun ~ 1.0.30 bug\n// https://github.com/oven-sh/bun/issues/9249\nvar WRONG_ARITY = fails(function () {\n  // getOwnPropertyDescriptor for prevent experimental warning in Node 11\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  return DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, 'queueMicrotask').value.length !== 1;\n});\n\n// `queueMicrotask` method\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask\n$({ global: true, enumerable: true, dontCallGetSet: true, forced: WRONG_ARITY }, {\n  queueMicrotask: function queueMicrotask(fn) {\n    validateArgumentsLength(arguments.length, 1);\n    microtask(aCallable(fn));\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar INCORRECT_VALUE = globalThis.self !== globalThis;\n\n// `self` getter\n// https://html.spec.whatwg.org/multipage/window-object.html#dom-self\ntry {\n  if (DESCRIPTORS) {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    var descriptor = Object.getOwnPropertyDescriptor(globalThis, 'self');\n    // some engines have `self`, but with incorrect descriptor\n    // https://github.com/denoland/deno/issues/15765\n    if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\n      defineBuiltInAccessor(globalThis, 'self', {\n        get: function self() {\n          return globalThis;\n        },\n        set: function self(value) {\n          if (this !== globalThis) throw new $TypeError('Illegal invocation');\n          defineProperty(globalThis, 'self', {\n            value: value,\n            writable: true,\n            configurable: true,\n            enumerable: true\n          });\n        },\n        configurable: true,\n        enumerable: true\n      });\n    }\n  } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\n    self: globalThis\n  });\n} catch (error) { /* empty */ }\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar uid = require('../internals/uid');\nvar isCallable = require('../internals/is-callable');\nvar isConstructor = require('../internals/is-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar iterate = require('../internals/iterate');\nvar anObject = require('../internals/an-object');\nvar classof = require('../internals/classof');\nvar hasOwn = require('../internals/has-own-property');\nvar createProperty = require('../internals/create-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar MapHelpers = require('../internals/map-helpers');\nvar SetHelpers = require('../internals/set-helpers');\nvar setIterate = require('../internals/set-iterate');\nvar detachTransferable = require('../internals/detach-transferable');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar Object = globalThis.Object;\nvar Array = globalThis.Array;\nvar Date = globalThis.Date;\nvar Error = globalThis.Error;\nvar TypeError = globalThis.TypeError;\nvar PerformanceMark = globalThis.PerformanceMark;\nvar DOMException = getBuiltIn('DOMException');\nvar Map = MapHelpers.Map;\nvar mapHas = MapHelpers.has;\nvar mapGet = MapHelpers.get;\nvar mapSet = MapHelpers.set;\nvar Set = SetHelpers.Set;\nvar setAdd = SetHelpers.add;\nvar setHas = SetHelpers.has;\nvar objectKeys = getBuiltIn('Object', 'keys');\nvar push = uncurryThis([].push);\nvar thisBooleanValue = uncurryThis(true.valueOf);\nvar thisNumberValue = uncurryThis(1.0.valueOf);\nvar thisStringValue = uncurryThis(''.valueOf);\nvar thisTimeValue = uncurryThis(Date.prototype.getTime);\nvar PERFORMANCE_MARK = uid('structuredClone');\nvar DATA_CLONE_ERROR = 'DataCloneError';\nvar TRANSFERRING = 'Transferring';\n\nvar checkBasicSemantic = function (structuredCloneImplementation) {\n  return !fails(function () {\n    var set1 = new globalThis.Set([7]);\n    var set2 = structuredCloneImplementation(set1);\n    var number = structuredCloneImplementation(Object(7));\n    return set2 === set1 || !set2.has(7) || !isObject(number) || +number !== 7;\n  }) && structuredCloneImplementation;\n};\n\nvar checkErrorsCloning = function (structuredCloneImplementation, $Error) {\n  return !fails(function () {\n    var error = new $Error();\n    var test = structuredCloneImplementation({ a: error, b: error });\n    return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);\n  });\n};\n\n// https://github.com/whatwg/html/pull/5749\nvar checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {\n  return !fails(function () {\n    var test = structuredCloneImplementation(new globalThis.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\n    return test.name !== 'AggregateError' || test.errors[0] !== 1 || test.message !== PERFORMANCE_MARK || test.cause !== 3;\n  });\n};\n\n// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+\n// FF<103 and Safari implementations can't clone errors\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n// FF103 can clone errors, but `.stack` of clone is an empty string\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762\n// FF104+ fixed it on usual errors, but not on DOMExceptions\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321\n// Chrome <102 returns `null` if cloned object contains multiple references to one error\n// https://bugs.chromium.org/p/v8/issues/detail?id=12542\n// NodeJS implementation can't clone DOMExceptions\n// https://github.com/nodejs/node/issues/41038\n// only FF103+ supports new (html/5749) error cloning semantic\nvar nativeStructuredClone = globalThis.structuredClone;\n\nvar FORCED_REPLACEMENT = IS_PURE\n  || !checkErrorsCloning(nativeStructuredClone, Error)\n  || !checkErrorsCloning(nativeStructuredClone, DOMException)\n  || !checkNewErrorsCloningSemantic(nativeStructuredClone);\n\n// Chrome 82+, Safari 14.1+, Deno 1.11+\n// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`\n// Chrome returns `null` if cloned object contains multiple references to one error\n// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround\n// Safari implementation can't clone errors\n// Deno 1.2-1.10 implementations too naive\n// NodeJS 16.0+ does not have `PerformanceMark` constructor\n// NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive\n// and can't clone, for example, `RegExp` or some boxed primitives\n// https://github.com/nodejs/node/issues/40840\n// no one of those implementations supports new (html/5749) error cloning semantic\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\n  return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\n});\n\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\n\nvar throwUncloneable = function (type) {\n  throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\n};\n\nvar throwUnpolyfillable = function (type, action) {\n  throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\n};\n\nvar tryNativeRestrictedStructuredClone = function (value, type) {\n  if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type);\n  return nativeRestrictedStructuredClone(value);\n};\n\nvar createDataTransfer = function () {\n  var dataTransfer;\n  try {\n    dataTransfer = new globalThis.DataTransfer();\n  } catch (error) {\n    try {\n      dataTransfer = new globalThis.ClipboardEvent('').clipboardData;\n    } catch (error2) { /* empty */ }\n  }\n  return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;\n};\n\nvar cloneBuffer = function (value, map, $type) {\n  if (mapHas(map, value)) return mapGet(map, value);\n\n  var type = $type || classof(value);\n  var clone, length, options, source, target, i;\n\n  if (type === 'SharedArrayBuffer') {\n    if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value);\n    // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\n    else clone = value;\n  } else {\n    var DataView = globalThis.DataView;\n\n    // `ArrayBuffer#slice` is not available in IE10\n    // `ArrayBuffer#slice` and `DataView` are not available in old FF\n    if (!DataView && !isCallable(value.slice)) throwUnpolyfillable('ArrayBuffer');\n    // detached buffers throws in `DataView` and `.slice`\n    try {\n      if (isCallable(value.slice) && !value.resizable) {\n        clone = value.slice(0);\n      } else {\n        length = value.byteLength;\n        options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined;\n        // eslint-disable-next-line es/no-resizable-and-growable-arraybuffers -- safe\n        clone = new ArrayBuffer(length, options);\n        source = new DataView(value);\n        target = new DataView(clone);\n        for (i = 0; i < length; i++) {\n          target.setUint8(i, source.getUint8(i));\n        }\n      }\n    } catch (error) {\n      throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\n    }\n  }\n\n  mapSet(map, value, clone);\n\n  return clone;\n};\n\nvar cloneView = function (value, type, offset, length, map) {\n  var C = globalThis[type];\n  // in some old engines like Safari 9, typeof C is 'object'\n  // on Uint8ClampedArray or some other constructors\n  if (!isObject(C)) throwUnpolyfillable(type);\n  return new C(cloneBuffer(value.buffer, map), offset, length);\n};\n\nvar structuredCloneInternal = function (value, map) {\n  if (isSymbol(value)) throwUncloneable('Symbol');\n  if (!isObject(value)) return value;\n  // effectively preserves circular references\n  if (map) {\n    if (mapHas(map, value)) return mapGet(map, value);\n  } else map = new Map();\n\n  var type = classof(value);\n  var C, name, cloned, dataTransfer, i, length, keys, key;\n\n  switch (type) {\n    case 'Array':\n      cloned = Array(lengthOfArrayLike(value));\n      break;\n    case 'Object':\n      cloned = {};\n      break;\n    case 'Map':\n      cloned = new Map();\n      break;\n    case 'Set':\n      cloned = new Set();\n      break;\n    case 'RegExp':\n      // in this block because of a Safari 14.1 bug\n      // old FF does not clone regexes passed to the constructor, so get the source and flags directly\n      cloned = new RegExp(value.source, getRegExpFlags(value));\n      break;\n    case 'Error':\n      name = value.name;\n      switch (name) {\n        case 'AggregateError':\n          cloned = new (getBuiltIn(name))([]);\n          break;\n        case 'EvalError':\n        case 'RangeError':\n        case 'ReferenceError':\n        case 'SuppressedError':\n        case 'SyntaxError':\n        case 'TypeError':\n        case 'URIError':\n          cloned = new (getBuiltIn(name))();\n          break;\n        case 'CompileError':\n        case 'LinkError':\n        case 'RuntimeError':\n          cloned = new (getBuiltIn('WebAssembly', name))();\n          break;\n        default:\n          cloned = new Error();\n      }\n      break;\n    case 'DOMException':\n      cloned = new DOMException(value.message, value.name);\n      break;\n    case 'ArrayBuffer':\n    case 'SharedArrayBuffer':\n      cloned = cloneBuffer(value, map, type);\n      break;\n    case 'DataView':\n    case 'Int8Array':\n    case 'Uint8Array':\n    case 'Uint8ClampedArray':\n    case 'Int16Array':\n    case 'Uint16Array':\n    case 'Int32Array':\n    case 'Uint32Array':\n    case 'Float16Array':\n    case 'Float32Array':\n    case 'Float64Array':\n    case 'BigInt64Array':\n    case 'BigUint64Array':\n      length = type === 'DataView' ? value.byteLength : value.length;\n      cloned = cloneView(value, type, value.byteOffset, length, map);\n      break;\n    case 'DOMQuad':\n      try {\n        cloned = new DOMQuad(\n          structuredCloneInternal(value.p1, map),\n          structuredCloneInternal(value.p2, map),\n          structuredCloneInternal(value.p3, map),\n          structuredCloneInternal(value.p4, map)\n        );\n      } catch (error) {\n        cloned = tryNativeRestrictedStructuredClone(value, type);\n      }\n      break;\n    case 'File':\n      if (nativeRestrictedStructuredClone) try {\n        cloned = nativeRestrictedStructuredClone(value);\n        // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612\n        if (classof(cloned) !== type) cloned = undefined;\n      } catch (error) { /* empty */ }\n      if (!cloned) try {\n        cloned = new File([value], value.name, value);\n      } catch (error) { /* empty */ }\n      if (!cloned) throwUnpolyfillable(type);\n      break;\n    case 'FileList':\n      dataTransfer = createDataTransfer();\n      if (dataTransfer) {\n        for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\n          dataTransfer.items.add(structuredCloneInternal(value[i], map));\n        }\n        cloned = dataTransfer.files;\n      } else cloned = tryNativeRestrictedStructuredClone(value, type);\n      break;\n    case 'ImageData':\n      // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\n      try {\n        cloned = new ImageData(\n          structuredCloneInternal(value.data, map),\n          value.width,\n          value.height,\n          { colorSpace: value.colorSpace }\n        );\n      } catch (error) {\n        cloned = tryNativeRestrictedStructuredClone(value, type);\n      } break;\n    default:\n      if (nativeRestrictedStructuredClone) {\n        cloned = nativeRestrictedStructuredClone(value);\n      } else switch (type) {\n        case 'BigInt':\n          // can be a 3rd party polyfill\n          cloned = Object(value.valueOf());\n          break;\n        case 'Boolean':\n          cloned = Object(thisBooleanValue(value));\n          break;\n        case 'Number':\n          cloned = Object(thisNumberValue(value));\n          break;\n        case 'String':\n          cloned = Object(thisStringValue(value));\n          break;\n        case 'Date':\n          cloned = new Date(thisTimeValue(value));\n          break;\n        case 'Blob':\n          try {\n            cloned = value.slice(0, value.size, value.type);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMPoint':\n        case 'DOMPointReadOnly':\n          C = globalThis[type];\n          try {\n            cloned = C.fromPoint\n              ? C.fromPoint(value)\n              : new C(value.x, value.y, value.z, value.w);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMRect':\n        case 'DOMRectReadOnly':\n          C = globalThis[type];\n          try {\n            cloned = C.fromRect\n              ? C.fromRect(value)\n              : new C(value.x, value.y, value.width, value.height);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMMatrix':\n        case 'DOMMatrixReadOnly':\n          C = globalThis[type];\n          try {\n            cloned = C.fromMatrix\n              ? C.fromMatrix(value)\n              : new C(value);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'AudioData':\n        case 'VideoFrame':\n          if (!isCallable(value.clone)) throwUnpolyfillable(type);\n          try {\n            cloned = value.clone();\n          } catch (error) {\n            throwUncloneable(type);\n          } break;\n        case 'CropTarget':\n        case 'CryptoKey':\n        case 'FileSystemDirectoryHandle':\n        case 'FileSystemFileHandle':\n        case 'FileSystemHandle':\n        case 'GPUCompilationInfo':\n        case 'GPUCompilationMessage':\n        case 'ImageBitmap':\n        case 'RTCCertificate':\n        case 'WebAssembly.Module':\n          throwUnpolyfillable(type);\n          // break omitted\n        default:\n          throwUncloneable(type);\n      }\n  }\n\n  mapSet(map, value, cloned);\n\n  switch (type) {\n    case 'Array':\n    case 'Object':\n      keys = objectKeys(value);\n      for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n        key = keys[i];\n        createProperty(cloned, key, structuredCloneInternal(value[key], map));\n      } break;\n    case 'Map':\n      value.forEach(function (v, k) {\n        mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map));\n      });\n      break;\n    case 'Set':\n      value.forEach(function (v) {\n        setAdd(cloned, structuredCloneInternal(v, map));\n      });\n      break;\n    case 'Error':\n      createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map));\n      if (hasOwn(value, 'cause')) {\n        createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map));\n      }\n      if (name === 'AggregateError') {\n        cloned.errors = structuredCloneInternal(value.errors, map);\n      } else if (name === 'SuppressedError') {\n        cloned.error = structuredCloneInternal(value.error, map);\n        cloned.suppressed = structuredCloneInternal(value.suppressed, map);\n      } // break omitted\n    case 'DOMException':\n      if (ERROR_STACK_INSTALLABLE) {\n        createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map));\n      }\n  }\n\n  return cloned;\n};\n\nvar tryToTransfer = function (rawTransfer, map) {\n  if (!isObject(rawTransfer)) throw new TypeError('Transfer option cannot be converted to a sequence');\n\n  var transfer = [];\n\n  iterate(rawTransfer, function (value) {\n    push(transfer, anObject(value));\n  });\n\n  var i = 0;\n  var length = lengthOfArrayLike(transfer);\n  var buffers = new Set();\n  var value, type, C, transferred, canvas, context;\n\n  while (i < length) {\n    value = transfer[i++];\n\n    type = classof(value);\n\n    if (type === 'ArrayBuffer' ? setHas(buffers, value) : mapHas(map, value)) {\n      throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n    }\n\n    if (type === 'ArrayBuffer') {\n      setAdd(buffers, value);\n      continue;\n    }\n\n    if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n      transferred = nativeStructuredClone(value, { transfer: [value] });\n    } else switch (type) {\n      case 'ImageBitmap':\n        C = globalThis.OffscreenCanvas;\n        if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\n        try {\n          canvas = new C(value.width, value.height);\n          context = canvas.getContext('bitmaprenderer');\n          context.transferFromImageBitmap(value);\n          transferred = canvas.transferToImageBitmap();\n        } catch (error) { /* empty */ }\n        break;\n      case 'AudioData':\n      case 'VideoFrame':\n        if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\n        try {\n          transferred = value.clone();\n          value.close();\n        } catch (error) { /* empty */ }\n        break;\n      case 'MediaSourceHandle':\n      case 'MessagePort':\n      case 'MIDIAccess':\n      case 'OffscreenCanvas':\n      case 'ReadableStream':\n      case 'RTCDataChannel':\n      case 'TransformStream':\n      case 'WebTransportReceiveStream':\n      case 'WebTransportSendStream':\n      case 'WritableStream':\n        throwUnpolyfillable(type, TRANSFERRING);\n    }\n\n    if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\n\n    mapSet(map, value, transferred);\n  }\n\n  return buffers;\n};\n\nvar detachBuffers = function (buffers) {\n  setIterate(buffers, function (buffer) {\n    if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n      nativeRestrictedStructuredClone(buffer, { transfer: [buffer] });\n    } else if (isCallable(buffer.transfer)) {\n      buffer.transfer();\n    } else if (detachTransferable) {\n      detachTransferable(buffer);\n    } else {\n      throwUnpolyfillable('ArrayBuffer', TRANSFERRING);\n    }\n  });\n};\n\n// `structuredClone` method\n// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone\n$({ global: true, enumerable: true, sham: !PROPER_STRUCTURED_CLONE_TRANSFER, forced: FORCED_REPLACEMENT }, {\n  structuredClone: function structuredClone(value /* , { transfer } */) {\n    var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;\n    var transfer = options ? options.transfer : undefined;\n    var map, buffers;\n\n    if (transfer !== undefined) {\n      map = new Map();\n      buffers = tryToTransfer(transfer, map);\n    }\n\n    var clone = structuredCloneInternal(value, map);\n\n    // since of an issue with cloning views of transferred buffers, we a forced to detach them later\n    // https://github.com/zloirock/core-js/issues/1265\n    if (buffers) detachBuffers(buffers);\n\n    return clone;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar schedulersFix = require('../internals/schedulers-fix');\n\nvar setInterval = schedulersFix(globalThis.setInterval, true);\n\n// Bun / IE9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: globalThis.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar schedulersFix = require('../internals/schedulers-fix');\n\nvar setTimeout = schedulersFix(globalThis.setTimeout, true);\n\n// Bun / IE9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: globalThis.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.set-interval');\nrequire('../modules/web.set-timeout');\n", "'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n  var url = new URL('b?a=1&b=2&c=3', 'https://a');\n  var params = url.searchParams;\n  var params2 = new URLSearchParams('a=1&a=2&b=3');\n  var result = '';\n  url.pathname = 'c%20d';\n  params.forEach(function (value, key) {\n    params['delete']('b');\n    result += key + value;\n  });\n  params2['delete']('a', 2);\n  // `undefined` case is a Chromium 117 bug\n  // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n  params2['delete']('b', undefined);\n  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n    || (!params.size && (IS_PURE || !DESCRIPTORS))\n    || !params.sort\n    || url.href !== 'https://a/c%20d?a=1&c=3'\n    || params.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !params[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('https://\u0442\u0435\u0441\u0442').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('https://a#\u0431').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('https://x', undefined).host !== 'x';\n});\n", "'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = charCodeAt(string, counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = charCodeAt(string, counter++);\n      if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.\n        push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        push(output, value);\n        counter--;\n      }\n    } else {\n      push(output, value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  while (delta > baseMinusTMin * tMax >> 1) {\n    delta = floor(delta / baseMinusTMin);\n    k += base;\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      push(output, fromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    push(output, delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw new $RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw new $RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue === n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        var k = base;\n        while (true) {\n          var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n          k += base;\n        }\n\n        push(output, fromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n        delta = 0;\n        handledCPCount++;\n      }\n    }\n\n    delta++;\n    n++;\n  }\n  return join(output, '');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n  }\n  return join(encoded, '.');\n};\n", "'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.string.from-code-point');\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar safeGetBuiltIn = require('../internals/safe-get-built-in');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar TypeError = globalThis.TypeError;\nvar encodeURIComponent = globalThis.encodeURIComponent;\nvar fromCharCode = String.fromCharCode;\nvar fromCodePoint = getBuiltIn('String', 'fromCodePoint');\nvar $parseInt = parseInt;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar plus = /\\+/g;\nvar FALLBACK_REPLACER = '\\uFFFD';\nvar VALID_HEX = /^[0-9a-f]+$/i;\n\nvar parseHexOctet = function (string, start) {\n  var substr = stringSlice(string, start, start + 2);\n  if (!exec(VALID_HEX, substr)) return NaN;\n\n  return $parseInt(substr, 16);\n};\n\nvar getLeadingOnes = function (octet) {\n  var count = 0;\n  for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) {\n    count++;\n  }\n  return count;\n};\n\nvar utf8Decode = function (octets) {\n  var codePoint = null;\n\n  switch (octets.length) {\n    case 1:\n      codePoint = octets[0];\n      break;\n    case 2:\n      codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F);\n      break;\n    case 3:\n      codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F);\n      break;\n    case 4:\n      codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F);\n      break;\n  }\n\n  return codePoint > 0x10FFFF ? null : codePoint;\n};\n\nvar decode = function (input) {\n  input = replace(input, plus, ' ');\n  var length = input.length;\n  var result = '';\n  var i = 0;\n\n  while (i < length) {\n    var decodedChar = charAt(input, i);\n\n    if (decodedChar === '%') {\n      if (charAt(input, i + 1) === '%' || i + 3 > length) {\n        result += '%';\n        i++;\n        continue;\n      }\n\n      var octet = parseHexOctet(input, i + 1);\n\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (octet !== octet) {\n        result += decodedChar;\n        i++;\n        continue;\n      }\n\n      i += 2;\n      var byteSequenceLength = getLeadingOnes(octet);\n\n      if (byteSequenceLength === 0) {\n        decodedChar = fromCharCode(octet);\n      } else {\n        if (byteSequenceLength === 1 || byteSequenceLength > 4) {\n          result += FALLBACK_REPLACER;\n          i++;\n          continue;\n        }\n\n        var octets = [octet];\n        var sequenceIndex = 1;\n\n        while (sequenceIndex < byteSequenceLength) {\n          i++;\n          if (i + 3 > length || charAt(input, i) !== '%') break;\n\n          var nextByte = parseHexOctet(input, i + 1);\n\n          // eslint-disable-next-line no-self-compare -- NaN check\n          if (nextByte !== nextByte) {\n            i += 3;\n            break;\n          }\n          if (nextByte > 191 || nextByte < 128) break;\n\n          push(octets, nextByte);\n          i += 2;\n          sequenceIndex++;\n        }\n\n        if (octets.length !== byteSequenceLength) {\n          result += FALLBACK_REPLACER;\n          continue;\n        }\n\n        var codePoint = utf8Decode(octets);\n        if (codePoint === null) {\n          result += FALLBACK_REPLACER;\n        } else {\n          decodedChar = fromCodePoint(codePoint);\n        }\n      }\n    }\n\n    result += decodedChar;\n    i++;\n  }\n\n  return result;\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replacements[match];\n};\n\nvar serialize = function (it) {\n  return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    target: getInternalParamsState(params).entries,\n    index: 0,\n    kind: kind\n  });\n}, URL_SEARCH_PARAMS, function next() {\n  var state = getInternalIteratorState(this);\n  var target = state.target;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = null;\n    return createIterResultObject(undefined, true);\n  }\n  var entry = target[index];\n  switch (state.kind) {\n    case 'keys': return createIterResultObject(entry.key, false);\n    case 'values': return createIterResultObject(entry.value, false);\n  } return createIterResultObject([entry.key, entry.value], false);\n}, true);\n\nvar URLSearchParamsState = function (init) {\n  this.entries = [];\n  this.url = null;\n\n  if (init !== undefined) {\n    if (isObject(init)) this.parseObject(init);\n    else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n  }\n};\n\nURLSearchParamsState.prototype = {\n  type: URL_SEARCH_PARAMS,\n  bindURL: function (url) {\n    this.url = url;\n    this.update();\n  },\n  parseObject: function (object) {\n    var entries = this.entries;\n    var iteratorMethod = getIteratorMethod(object);\n    var iterator, next, step, entryIterator, entryNext, first, second;\n\n    if (iteratorMethod) {\n      iterator = getIterator(object, iteratorMethod);\n      next = iterator.next;\n      while (!(step = call(next, iterator)).done) {\n        entryIterator = getIterator(anObject(step.value));\n        entryNext = entryIterator.next;\n        if (\n          (first = call(entryNext, entryIterator)).done ||\n          (second = call(entryNext, entryIterator)).done ||\n          !call(entryNext, entryIterator).done\n        ) throw new TypeError('Expected sequence with length 2');\n        push(entries, { key: $toString(first.value), value: $toString(second.value) });\n      }\n    } else for (var key in object) if (hasOwn(object, key)) {\n      push(entries, { key: key, value: $toString(object[key]) });\n    }\n  },\n  parseQuery: function (query) {\n    if (query) {\n      var entries = this.entries;\n      var attributes = split(query, '&');\n      var index = 0;\n      var attribute, entry;\n      while (index < attributes.length) {\n        attribute = attributes[index++];\n        if (attribute.length) {\n          entry = split(attribute, '=');\n          push(entries, {\n            key: decode(shift(entry)),\n            value: decode(join(entry, '='))\n          });\n        }\n      }\n    }\n  },\n  serialize: function () {\n    var entries = this.entries;\n    var result = [];\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      push(result, serialize(entry.key) + '=' + serialize(entry.value));\n    } return join(result, '&');\n  },\n  update: function () {\n    this.entries.length = 0;\n    this.parseQuery(this.url.query);\n  },\n  updateURL: function () {\n    if (this.url) this.url.update();\n  }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsPrototype);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  var state = setInternalState(this, new URLSearchParamsState(init));\n  if (!DESCRIPTORS) this.size = state.entries.length;\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    var state = getInternalParamsState(this);\n    validateArgumentsLength(arguments.length, 2);\n    push(state.entries, { key: $toString(name), value: $toString(value) });\n    if (!DESCRIPTORS) this.length++;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name /* , value */) {\n    var state = getInternalParamsState(this);\n    var length = validateArgumentsLength(arguments.length, 1);\n    var entries = state.entries;\n    var key = $toString(name);\n    var $value = length < 2 ? undefined : arguments[1];\n    var value = $value === undefined ? $value : $toString($value);\n    var index = 0;\n    while (index < entries.length) {\n      var entry = entries[index];\n      if (entry.key === key && (value === undefined || entry.value === value)) {\n        splice(entries, index, 1);\n        if (value !== undefined) break;\n      } else index++;\n    }\n    if (!DESCRIPTORS) this.size = entries.length;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    var entries = getInternalParamsState(this).entries;\n    validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    var entries = getInternalParamsState(this).entries;\n    validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) push(result, entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name /* , value */) {\n    var entries = getInternalParamsState(this).entries;\n    var length = validateArgumentsLength(arguments.length, 1);\n    var key = $toString(name);\n    var $value = length < 2 ? undefined : arguments[1];\n    var value = $value === undefined ? $value : $toString($value);\n    var index = 0;\n    while (index < entries.length) {\n      var entry = entries[index++];\n      if (entry.key === key && (value === undefined || entry.value === value)) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    var state = getInternalParamsState(this);\n    validateArgumentsLength(arguments.length, 1);\n    var entries = state.entries;\n    var found = false;\n    var key = $toString(name);\n    var val = $toString(value);\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) splice(entries, index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) push(entries, { key: key, value: val });\n    if (!DESCRIPTORS) this.size = entries.length;\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    arraySort(state.entries, function (a, b) {\n      return a.key > b.key ? 1 : -1;\n    });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n  return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n  get: function size() {\n    return getInternalParamsState(this).entries.length;\n  },\n  configurable: true,\n  enumerable: true\n});\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n  var headersHas = uncurryThis(HeadersPrototype.has);\n  var headersSet = uncurryThis(HeadersPrototype.set);\n\n  var wrapRequestOptions = function (init) {\n    if (isObject(init)) {\n      var body = init.body;\n      var headers;\n      if (classof(body) === URL_SEARCH_PARAMS) {\n        headers = init.headers ? new Headers(init.headers) : new Headers();\n        if (!headersHas(headers, 'content-type')) {\n          headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n        return create(init, {\n          body: createPropertyDescriptor(0, $toString(body)),\n          headers: createPropertyDescriptor(0, headers)\n        });\n      }\n    } return init;\n  };\n\n  if (isCallable(nativeFetch)) {\n    $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n      fetch: function fetch(input /* , init */) {\n        return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n      }\n    });\n  }\n\n  if (isCallable(NativeRequest)) {\n    var RequestConstructor = function Request(input /* , init */) {\n      anInstance(this, RequestPrototype);\n      return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n    };\n\n    RequestPrototype.constructor = RequestConstructor;\n    RequestConstructor.prototype = RequestPrototype;\n\n    $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n", "'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar globalThis = require('../internals/global-this');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = globalThis.URL;\nvar TypeError = globalThis.TypeError;\nvar parseInt = globalThis.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+/;\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n  var parts = split(input, '.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] === '') {\n    parts.length--;\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part === '') return input;\n    radix = 10;\n    if (part.length > 1 && charAt(part, 0) === '0') {\n      radix = exec(HEX_START, part) ? 16 : 8;\n      part = stringSlice(part, radix === 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input;\n      number = parseInt(part, radix);\n    }\n    push(numbers, number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index === partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = pop(numbers);\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var chr = function () {\n    return charAt(input, pointer);\n  };\n\n  if (chr() === ':') {\n    if (charAt(input, 1) !== ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (chr()) {\n    if (pieceIndex === 8) return;\n    if (chr() === ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && exec(HEX, chr())) {\n      value = value * 16 + parseInt(chr(), 16);\n      pointer++;\n      length++;\n    }\n    if (chr() === '.') {\n      if (length === 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (chr()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (chr() === '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!exec(DIGIT, chr())) return;\n        while (exec(DIGIT, chr())) {\n          number = parseInt(chr(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece === 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++;\n      }\n      if (numbersSeen !== 4) return;\n      break;\n    } else if (chr() === ':') {\n      pointer++;\n      if (!chr()) return;\n    } else if (chr()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex !== 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex !== 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  return currLength > maxLength ? currStart : maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      unshift(result, host % 256);\n      host = floor(host / 256);\n    }\n    return join(result, '.');\n  }\n\n  // ipv6\n  if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += numberToString(host[index], 16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  }\n\n  return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n  var code = codeAt(chr, 0);\n  return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length === 2 && exec(ALPHA, charAt(string, 0))\n    && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n    string.length === 2 ||\n    ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n  return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n  segment = toLowerCase(segment);\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n  var urlString = $toString(url);\n  var baseState, failure, searchParams;\n  if (isBase) {\n    failure = this.parse(urlString);\n    if (failure) throw new TypeError(failure);\n    this.searchParams = null;\n  } else {\n    if (base !== undefined) baseState = new URLState(base, true);\n    failure = this.parse(urlString, null, baseState);\n    if (failure) throw new TypeError(failure);\n    searchParams = getInternalSearchParamsState(new URLSearchParams());\n    searchParams.bindURL(this);\n    this.searchParams = searchParams;\n  }\n};\n\nURLState.prototype = {\n  type: 'URL',\n  // https://url.spec.whatwg.org/#url-parsing\n  // eslint-disable-next-line max-statements -- TODO\n  parse: function (input, stateOverride, base) {\n    var url = this;\n    var state = stateOverride || SCHEME_START;\n    var pointer = 0;\n    var buffer = '';\n    var seenAt = false;\n    var seenBracket = false;\n    var seenPasswordToken = false;\n    var codePoints, chr, bufferCodePoints, failure;\n\n    input = $toString(input);\n\n    if (!stateOverride) {\n      url.scheme = '';\n      url.username = '';\n      url.password = '';\n      url.host = null;\n      url.port = null;\n      url.path = [];\n      url.query = null;\n      url.fragment = null;\n      url.cannotBeABaseURL = false;\n      input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\n      input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\n    }\n\n    input = replace(input, TAB_AND_NEW_LINE, '');\n\n    codePoints = arrayFrom(input);\n\n    while (pointer <= codePoints.length) {\n      chr = codePoints[pointer];\n      switch (state) {\n        case SCHEME_START:\n          if (chr && exec(ALPHA, chr)) {\n            buffer += toLowerCase(chr);\n            state = SCHEME;\n          } else if (!stateOverride) {\n            state = NO_SCHEME;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case SCHEME:\n          if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) {\n            buffer += toLowerCase(chr);\n          } else if (chr === ':') {\n            if (stateOverride && (\n              (url.isSpecial() !== hasOwn(specialSchemes, buffer)) ||\n              (buffer === 'file' && (url.includesCredentials() || url.port !== null)) ||\n              (url.scheme === 'file' && !url.host)\n            )) return;\n            url.scheme = buffer;\n            if (stateOverride) {\n              if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null;\n              return;\n            }\n            buffer = '';\n            if (url.scheme === 'file') {\n              state = FILE;\n            } else if (url.isSpecial() && base && base.scheme === url.scheme) {\n              state = SPECIAL_RELATIVE_OR_AUTHORITY;\n            } else if (url.isSpecial()) {\n              state = SPECIAL_AUTHORITY_SLASHES;\n            } else if (codePoints[pointer + 1] === '/') {\n              state = PATH_OR_AUTHORITY;\n              pointer++;\n            } else {\n              url.cannotBeABaseURL = true;\n              push(url.path, '');\n              state = CANNOT_BE_A_BASE_URL_PATH;\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            state = NO_SCHEME;\n            pointer = 0;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case NO_SCHEME:\n          if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME;\n          if (base.cannotBeABaseURL && chr === '#') {\n            url.scheme = base.scheme;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            url.cannotBeABaseURL = true;\n            state = FRAGMENT;\n            break;\n          }\n          state = base.scheme === 'file' ? FILE : RELATIVE;\n          continue;\n\n        case SPECIAL_RELATIVE_OR_AUTHORITY:\n          if (chr === '/' && codePoints[pointer + 1] === '/') {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n            pointer++;\n          } else {\n            state = RELATIVE;\n            continue;\n          } break;\n\n        case PATH_OR_AUTHORITY:\n          if (chr === '/') {\n            state = AUTHORITY;\n            break;\n          } else {\n            state = PATH;\n            continue;\n          }\n\n        case RELATIVE:\n          url.scheme = base.scheme;\n          if (chr === EOF) {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n          } else if (chr === '/' || (chr === '\\\\' && url.isSpecial())) {\n            state = RELATIVE_SLASH;\n          } else if (chr === '?') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = '';\n            state = QUERY;\n          } else if (chr === '#') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.path.length--;\n            state = PATH;\n            continue;\n          } break;\n\n        case RELATIVE_SLASH:\n          if (url.isSpecial() && (chr === '/' || chr === '\\\\')) {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          } else if (chr === '/') {\n            state = AUTHORITY;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            state = PATH;\n            continue;\n          } break;\n\n        case SPECIAL_AUTHORITY_SLASHES:\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue;\n          pointer++;\n          break;\n\n        case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n          if (chr !== '/' && chr !== '\\\\') {\n            state = AUTHORITY;\n            continue;\n          } break;\n\n        case AUTHORITY:\n          if (chr === '@') {\n            if (seenAt) buffer = '%40' + buffer;\n            seenAt = true;\n            bufferCodePoints = arrayFrom(buffer);\n            for (var i = 0; i < bufferCodePoints.length; i++) {\n              var codePoint = bufferCodePoints[i];\n              if (codePoint === ':' && !seenPasswordToken) {\n                seenPasswordToken = true;\n                continue;\n              }\n              var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n              if (seenPasswordToken) url.password += encodedCodePoints;\n              else url.username += encodedCodePoints;\n            }\n            buffer = '';\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial())\n          ) {\n            if (seenAt && buffer === '') return INVALID_AUTHORITY;\n            pointer -= arrayFrom(buffer).length + 1;\n            buffer = '';\n            state = HOST;\n          } else buffer += chr;\n          break;\n\n        case HOST:\n        case HOSTNAME:\n          if (stateOverride && url.scheme === 'file') {\n            state = FILE_HOST;\n            continue;\n          } else if (chr === ':' && !seenBracket) {\n            if (buffer === '') return INVALID_HOST;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PORT;\n            if (stateOverride === HOSTNAME) return;\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial())\n          ) {\n            if (url.isSpecial() && buffer === '') return INVALID_HOST;\n            if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PATH_START;\n            if (stateOverride) return;\n            continue;\n          } else {\n            if (chr === '[') seenBracket = true;\n            else if (chr === ']') seenBracket = false;\n            buffer += chr;\n          } break;\n\n        case PORT:\n          if (exec(DIGIT, chr)) {\n            buffer += chr;\n          } else if (\n            chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n            (chr === '\\\\' && url.isSpecial()) ||\n            stateOverride\n          ) {\n            if (buffer !== '') {\n              var port = parseInt(buffer, 10);\n              if (port > 0xFFFF) return INVALID_PORT;\n              url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n              buffer = '';\n            }\n            if (stateOverride) return;\n            state = PATH_START;\n            continue;\n          } else return INVALID_PORT;\n          break;\n\n        case FILE:\n          url.scheme = 'file';\n          if (chr === '/' || chr === '\\\\') state = FILE_SLASH;\n          else if (base && base.scheme === 'file') {\n            switch (chr) {\n              case EOF:\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = base.query;\n                break;\n              case '?':\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = '';\n                state = QUERY;\n                break;\n              case '#':\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.query = base.query;\n                url.fragment = '';\n                state = FRAGMENT;\n                break;\n              default:\n                if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n                  url.host = base.host;\n                  url.path = arraySlice(base.path);\n                  url.shortenPath();\n                }\n                state = PATH;\n                continue;\n            }\n          } else {\n            state = PATH;\n            continue;\n          } break;\n\n        case FILE_SLASH:\n          if (chr === '/' || chr === '\\\\') {\n            state = FILE_HOST;\n            break;\n          }\n          if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n            if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n            else url.host = base.host;\n          }\n          state = PATH;\n          continue;\n\n        case FILE_HOST:\n          if (chr === EOF || chr === '/' || chr === '\\\\' || chr === '?' || chr === '#') {\n            if (!stateOverride && isWindowsDriveLetter(buffer)) {\n              state = PATH;\n            } else if (buffer === '') {\n              url.host = '';\n              if (stateOverride) return;\n              state = PATH_START;\n            } else {\n              failure = url.parseHost(buffer);\n              if (failure) return failure;\n              if (url.host === 'localhost') url.host = '';\n              if (stateOverride) return;\n              buffer = '';\n              state = PATH_START;\n            } continue;\n          } else buffer += chr;\n          break;\n\n        case PATH_START:\n          if (url.isSpecial()) {\n            state = PATH;\n            if (chr !== '/' && chr !== '\\\\') continue;\n          } else if (!stateOverride && chr === '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (!stateOverride && chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            state = PATH;\n            if (chr !== '/') continue;\n          } break;\n\n        case PATH:\n          if (\n            chr === EOF || chr === '/' ||\n            (chr === '\\\\' && url.isSpecial()) ||\n            (!stateOverride && (chr === '?' || chr === '#'))\n          ) {\n            if (isDoubleDot(buffer)) {\n              url.shortenPath();\n              if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else if (isSingleDot(buffer)) {\n              if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else {\n              if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n                if (url.host) url.host = '';\n                buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n              }\n              push(url.path, buffer);\n            }\n            buffer = '';\n            if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) {\n              while (url.path.length > 1 && url.path[0] === '') {\n                shift(url.path);\n              }\n            }\n            if (chr === '?') {\n              url.query = '';\n              state = QUERY;\n            } else if (chr === '#') {\n              url.fragment = '';\n              state = FRAGMENT;\n            }\n          } else {\n            buffer += percentEncode(chr, pathPercentEncodeSet);\n          } break;\n\n        case CANNOT_BE_A_BASE_URL_PATH:\n          if (chr === '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case QUERY:\n          if (!stateOverride && chr === '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr !== EOF) {\n            if (chr === \"'\" && url.isSpecial()) url.query += '%27';\n            else if (chr === '#') url.query += '%23';\n            else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case FRAGMENT:\n          if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n          break;\n      }\n\n      pointer++;\n    }\n  },\n  // https://url.spec.whatwg.org/#host-parsing\n  parseHost: function (input) {\n    var result, codePoints, index;\n    if (charAt(input, 0) === '[') {\n      if (charAt(input, input.length - 1) !== ']') return INVALID_HOST;\n      result = parseIPv6(stringSlice(input, 1, -1));\n      if (!result) return INVALID_HOST;\n      this.host = result;\n    // opaque host\n    } else if (!this.isSpecial()) {\n      if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n      result = '';\n      codePoints = arrayFrom(input);\n      for (index = 0; index < codePoints.length; index++) {\n        result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n      }\n      this.host = result;\n    } else {\n      input = toASCII(input);\n      if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n      result = parseIPv4(input);\n      if (result === null) return INVALID_HOST;\n      this.host = result;\n    }\n  },\n  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n  cannotHaveUsernamePasswordPort: function () {\n    return !this.host || this.cannotBeABaseURL || this.scheme === 'file';\n  },\n  // https://url.spec.whatwg.org/#include-credentials\n  includesCredentials: function () {\n    return this.username !== '' || this.password !== '';\n  },\n  // https://url.spec.whatwg.org/#is-special\n  isSpecial: function () {\n    return hasOwn(specialSchemes, this.scheme);\n  },\n  // https://url.spec.whatwg.org/#shorten-a-urls-path\n  shortenPath: function () {\n    var path = this.path;\n    var pathSize = path.length;\n    if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) {\n      path.length--;\n    }\n  },\n  // https://url.spec.whatwg.org/#concept-url-serializer\n  serialize: function () {\n    var url = this;\n    var scheme = url.scheme;\n    var username = url.username;\n    var password = url.password;\n    var host = url.host;\n    var port = url.port;\n    var path = url.path;\n    var query = url.query;\n    var fragment = url.fragment;\n    var output = scheme + ':';\n    if (host !== null) {\n      output += '//';\n      if (url.includesCredentials()) {\n        output += username + (password ? ':' + password : '') + '@';\n      }\n      output += serializeHost(host);\n      if (port !== null) output += ':' + port;\n    } else if (scheme === 'file') output += '//';\n    output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n    if (query !== null) output += '?' + query;\n    if (fragment !== null) output += '#' + fragment;\n    return output;\n  },\n  // https://url.spec.whatwg.org/#dom-url-href\n  setHref: function (href) {\n    var failure = this.parse(href);\n    if (failure) throw new TypeError(failure);\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-origin\n  getOrigin: function () {\n    var scheme = this.scheme;\n    var port = this.port;\n    if (scheme === 'blob') try {\n      return new URLConstructor(scheme.path[0]).origin;\n    } catch (error) {\n      return 'null';\n    }\n    if (scheme === 'file' || !this.isSpecial()) return 'null';\n    return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n  },\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  getProtocol: function () {\n    return this.scheme + ':';\n  },\n  setProtocol: function (protocol) {\n    this.parse($toString(protocol) + ':', SCHEME_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-username\n  getUsername: function () {\n    return this.username;\n  },\n  setUsername: function (username) {\n    var codePoints = arrayFrom($toString(username));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.username = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-password\n  getPassword: function () {\n    return this.password;\n  },\n  setPassword: function (password) {\n    var codePoints = arrayFrom($toString(password));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.password = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-host\n  getHost: function () {\n    var host = this.host;\n    var port = this.port;\n    return host === null ? ''\n      : port === null ? serializeHost(host)\n      : serializeHost(host) + ':' + port;\n  },\n  setHost: function (host) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(host, HOST);\n  },\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  getHostname: function () {\n    var host = this.host;\n    return host === null ? '' : serializeHost(host);\n  },\n  setHostname: function (hostname) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(hostname, HOSTNAME);\n  },\n  // https://url.spec.whatwg.org/#dom-url-port\n  getPort: function () {\n    var port = this.port;\n    return port === null ? '' : $toString(port);\n  },\n  setPort: function (port) {\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    port = $toString(port);\n    if (port === '') this.port = null;\n    else this.parse(port, PORT);\n  },\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  getPathname: function () {\n    var path = this.path;\n    return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n  },\n  setPathname: function (pathname) {\n    if (this.cannotBeABaseURL) return;\n    this.path = [];\n    this.parse(pathname, PATH_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-search\n  getSearch: function () {\n    var query = this.query;\n    return query ? '?' + query : '';\n  },\n  setSearch: function (search) {\n    search = $toString(search);\n    if (search === '') {\n      this.query = null;\n    } else {\n      if (charAt(search, 0) === '?') search = stringSlice(search, 1);\n      this.query = '';\n      this.parse(search, QUERY);\n    }\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  getSearchParams: function () {\n    return this.searchParams.facade;\n  },\n  // https://url.spec.whatwg.org/#dom-url-hash\n  getHash: function () {\n    var fragment = this.fragment;\n    return fragment ? '#' + fragment : '';\n  },\n  setHash: function (hash) {\n    hash = $toString(hash);\n    if (hash === '') {\n      this.fragment = null;\n      return;\n    }\n    if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1);\n    this.fragment = '';\n    this.parse(hash, FRAGMENT);\n  },\n  update: function () {\n    this.query = this.searchParams.serialize() || null;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLPrototype);\n  var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n  var state = setInternalState(that, new URLState(url, false, base));\n  if (!DESCRIPTORS) {\n    that.href = state.serialize();\n    that.origin = state.getOrigin();\n    that.protocol = state.getProtocol();\n    that.username = state.getUsername();\n    that.password = state.getPassword();\n    that.host = state.getHost();\n    that.hostname = state.getHostname();\n    that.port = state.getPort();\n    that.pathname = state.getPathname();\n    that.search = state.getSearch();\n    that.searchParams = state.getSearchParams();\n    that.hash = state.getHash();\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n  return {\n    get: function () {\n      return getInternalURLState(this)[getter]();\n    },\n    set: setter && function (value) {\n      return getInternalURLState(this)[setter](value);\n    },\n    configurable: true,\n    enumerable: true\n  };\n};\n\nif (DESCRIPTORS) {\n  // `URL.prototype.href` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-href\n  defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n  // `URL.prototype.origin` getter\n  // https://url.spec.whatwg.org/#dom-url-origin\n  defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n  // `URL.prototype.protocol` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n  // `URL.prototype.username` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-username\n  defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n  // `URL.prototype.password` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-password\n  defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n  // `URL.prototype.host` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-host\n  defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n  // `URL.prototype.hostname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n  // `URL.prototype.port` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-port\n  defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n  // `URL.prototype.pathname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n  // `URL.prototype.search` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-search\n  defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n  // `URL.prototype.searchParams` getter\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n  // `URL.prototype.hash` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hash\n  defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar toString = require('../internals/to-string');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\n\nvar URL = getBuiltIn('URL');\n\n// https://github.com/nodejs/node/issues/47505\n// https://github.com/denoland/deno/issues/18893\nvar THROWS_WITHOUT_ARGUMENTS = USE_NATIVE_URL && fails(function () {\n  URL.canParse();\n});\n\n// Bun ~ 1.0.30 bug\n// https://github.com/oven-sh/bun/issues/9250\nvar WRONG_ARITY = fails(function () {\n  return URL.canParse.length !== 1;\n});\n\n// `URL.canParse` method\n// https://url.spec.whatwg.org/#dom-url-canparse\n$({ target: 'URL', stat: true, forced: !THROWS_WITHOUT_ARGUMENTS || WRONG_ARITY }, {\n  canParse: function canParse(url) {\n    var length = validateArgumentsLength(arguments.length, 1);\n    var urlString = toString(url);\n    var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n    try {\n      return !!new URL(urlString, base);\n    } catch (error) {\n      return false;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar toString = require('../internals/to-string');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\n\nvar URL = getBuiltIn('URL');\n\n// `URL.parse` method\n// https://url.spec.whatwg.org/#dom-url-canparse\n$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\n  parse: function parse(url) {\n    var length = validateArgumentsLength(arguments.length, 1);\n    var urlString = toString(url);\n    var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n    try {\n      return new URL(urlString, base);\n    } catch (error) {\n      return null;\n    }\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n  toJSON: function toJSON() {\n    return call(URL.prototype.toString, this);\n  }\n});\n", "'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $delete(this, name);\n    var entries = [];\n    forEach(this, function (v, k) { // also validates `this`\n      push(entries, { key: k, value: v });\n    });\n    validateArgumentsLength(length, 1);\n    var key = toString(name);\n    var value = toString($value);\n    var index = 0;\n    var dindex = 0;\n    var found = false;\n    var entriesLength = entries.length;\n    var entry;\n    while (index < entriesLength) {\n      entry = entries[index++];\n      if (found || entry.key === key) {\n        found = true;\n        $delete(this, entry.key);\n      } else dindex++;\n    }\n    while (dindex < entriesLength) {\n      entry = entries[dindex++];\n      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n    }\n  }, { enumerable: true, unsafe: true });\n}\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n    var length = arguments.length;\n    var $value = length < 2 ? undefined : arguments[1];\n    if (length && $value === undefined) return $has(this, name);\n    var values = getAll(this, name); // also validates `this`\n    validateArgumentsLength(length, 1);\n    var value = toString($value);\n    var index = 0;\n    while (index < values.length) {\n      if (values[index++] === value) return true;\n    } return false;\n  }, { enumerable: true, unsafe: true });\n}\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n    get: function size() {\n      var count = 0;\n      forEach(this, function () { count++; });\n      return count;\n    },\n    configurable: true,\n    enumerable: true\n  });\n}\n", "'use strict';\nrequire('../modules/es.symbol');\nrequire('../modules/es.symbol.description');\nrequire('../modules/es.symbol.async-iterator');\nrequire('../modules/es.symbol.has-instance');\nrequire('../modules/es.symbol.is-concat-spreadable');\nrequire('../modules/es.symbol.iterator');\nrequire('../modules/es.symbol.match');\nrequire('../modules/es.symbol.match-all');\nrequire('../modules/es.symbol.replace');\nrequire('../modules/es.symbol.search');\nrequire('../modules/es.symbol.species');\nrequire('../modules/es.symbol.split');\nrequire('../modules/es.symbol.to-primitive');\nrequire('../modules/es.symbol.to-string-tag');\nrequire('../modules/es.symbol.unscopables');\nrequire('../modules/es.error.cause');\nrequire('../modules/es.error.to-string');\nrequire('../modules/es.aggregate-error');\nrequire('../modules/es.aggregate-error.cause');\nrequire('../modules/es.array.at');\nrequire('../modules/es.array.concat');\nrequire('../modules/es.array.copy-within');\nrequire('../modules/es.array.every');\nrequire('../modules/es.array.fill');\nrequire('../modules/es.array.filter');\nrequire('../modules/es.array.find');\nrequire('../modules/es.array.find-index');\nrequire('../modules/es.array.find-last');\nrequire('../modules/es.array.find-last-index');\nrequire('../modules/es.array.flat');\nrequire('../modules/es.array.flat-map');\nrequire('../modules/es.array.for-each');\nrequire('../modules/es.array.from');\nrequire('../modules/es.array.includes');\nrequire('../modules/es.array.index-of');\nrequire('../modules/es.array.is-array');\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.array.join');\nrequire('../modules/es.array.last-index-of');\nrequire('../modules/es.array.map');\nrequire('../modules/es.array.of');\nrequire('../modules/es.array.push');\nrequire('../modules/es.array.reduce');\nrequire('../modules/es.array.reduce-right');\nrequire('../modules/es.array.reverse');\nrequire('../modules/es.array.slice');\nrequire('../modules/es.array.some');\nrequire('../modules/es.array.sort');\nrequire('../modules/es.array.species');\nrequire('../modules/es.array.splice');\nrequire('../modules/es.array.to-reversed');\nrequire('../modules/es.array.to-sorted');\nrequire('../modules/es.array.to-spliced');\nrequire('../modules/es.array.unscopables.flat');\nrequire('../modules/es.array.unscopables.flat-map');\nrequire('../modules/es.array.unshift');\nrequire('../modules/es.array.with');\nrequire('../modules/es.array-buffer.constructor');\nrequire('../modules/es.array-buffer.is-view');\nrequire('../modules/es.array-buffer.slice');\nrequire('../modules/es.data-view');\nrequire('../modules/es.array-buffer.detached');\nrequire('../modules/es.array-buffer.transfer');\nrequire('../modules/es.array-buffer.transfer-to-fixed-length');\nrequire('../modules/es.date.get-year');\nrequire('../modules/es.date.now');\nrequire('../modules/es.date.set-year');\nrequire('../modules/es.date.to-gmt-string');\nrequire('../modules/es.date.to-iso-string');\nrequire('../modules/es.date.to-json');\nrequire('../modules/es.date.to-primitive');\nrequire('../modules/es.date.to-string');\nrequire('../modules/es.escape');\nrequire('../modules/es.function.bind');\nrequire('../modules/es.function.has-instance');\nrequire('../modules/es.function.name');\nrequire('../modules/es.global-this');\nrequire('../modules/es.iterator.constructor');\nrequire('../modules/es.iterator.drop');\nrequire('../modules/es.iterator.every');\nrequire('../modules/es.iterator.filter');\nrequire('../modules/es.iterator.find');\nrequire('../modules/es.iterator.flat-map');\nrequire('../modules/es.iterator.for-each');\nrequire('../modules/es.iterator.from');\nrequire('../modules/es.iterator.map');\nrequire('../modules/es.iterator.reduce');\nrequire('../modules/es.iterator.some');\nrequire('../modules/es.iterator.take');\nrequire('../modules/es.iterator.to-array');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.json.to-string-tag');\nrequire('../modules/es.map');\nrequire('../modules/es.map.group-by');\nrequire('../modules/es.math.acosh');\nrequire('../modules/es.math.asinh');\nrequire('../modules/es.math.atanh');\nrequire('../modules/es.math.cbrt');\nrequire('../modules/es.math.clz32');\nrequire('../modules/es.math.cosh');\nrequire('../modules/es.math.expm1');\nrequire('../modules/es.math.fround');\nrequire('../modules/es.math.hypot');\nrequire('../modules/es.math.imul');\nrequire('../modules/es.math.log10');\nrequire('../modules/es.math.log1p');\nrequire('../modules/es.math.log2');\nrequire('../modules/es.math.sign');\nrequire('../modules/es.math.sinh');\nrequire('../modules/es.math.tanh');\nrequire('../modules/es.math.to-string-tag');\nrequire('../modules/es.math.trunc');\nrequire('../modules/es.number.constructor');\nrequire('../modules/es.number.epsilon');\nrequire('../modules/es.number.is-finite');\nrequire('../modules/es.number.is-integer');\nrequire('../modules/es.number.is-nan');\nrequire('../modules/es.number.is-safe-integer');\nrequire('../modules/es.number.max-safe-integer');\nrequire('../modules/es.number.min-safe-integer');\nrequire('../modules/es.number.parse-float');\nrequire('../modules/es.number.parse-int');\nrequire('../modules/es.number.to-exponential');\nrequire('../modules/es.number.to-fixed');\nrequire('../modules/es.number.to-precision');\nrequire('../modules/es.object.assign');\nrequire('../modules/es.object.create');\nrequire('../modules/es.object.define-getter');\nrequire('../modules/es.object.define-properties');\nrequire('../modules/es.object.define-property');\nrequire('../modules/es.object.define-setter');\nrequire('../modules/es.object.entries');\nrequire('../modules/es.object.freeze');\nrequire('../modules/es.object.from-entries');\nrequire('../modules/es.object.get-own-property-descriptor');\nrequire('../modules/es.object.get-own-property-descriptors');\nrequire('../modules/es.object.get-own-property-names');\nrequire('../modules/es.object.get-prototype-of');\nrequire('../modules/es.object.group-by');\nrequire('../modules/es.object.has-own');\nrequire('../modules/es.object.is');\nrequire('../modules/es.object.is-extensible');\nrequire('../modules/es.object.is-frozen');\nrequire('../modules/es.object.is-sealed');\nrequire('../modules/es.object.keys');\nrequire('../modules/es.object.lookup-getter');\nrequire('../modules/es.object.lookup-setter');\nrequire('../modules/es.object.prevent-extensions');\nrequire('../modules/es.object.proto');\nrequire('../modules/es.object.seal');\nrequire('../modules/es.object.set-prototype-of');\nrequire('../modules/es.object.to-string');\nrequire('../modules/es.object.values');\nrequire('../modules/es.parse-float');\nrequire('../modules/es.parse-int');\nrequire('../modules/es.promise');\nrequire('../modules/es.promise.all-settled');\nrequire('../modules/es.promise.any');\nrequire('../modules/es.promise.finally');\nrequire('../modules/es.promise.try');\nrequire('../modules/es.promise.with-resolvers');\nrequire('../modules/es.reflect.apply');\nrequire('../modules/es.reflect.construct');\nrequire('../modules/es.reflect.define-property');\nrequire('../modules/es.reflect.delete-property');\nrequire('../modules/es.reflect.get');\nrequire('../modules/es.reflect.get-own-property-descriptor');\nrequire('../modules/es.reflect.get-prototype-of');\nrequire('../modules/es.reflect.has');\nrequire('../modules/es.reflect.is-extensible');\nrequire('../modules/es.reflect.own-keys');\nrequire('../modules/es.reflect.prevent-extensions');\nrequire('../modules/es.reflect.set');\nrequire('../modules/es.reflect.set-prototype-of');\nrequire('../modules/es.reflect.to-string-tag');\nrequire('../modules/es.regexp.constructor');\nrequire('../modules/es.regexp.dot-all');\nrequire('../modules/es.regexp.exec');\nrequire('../modules/es.regexp.flags');\nrequire('../modules/es.regexp.sticky');\nrequire('../modules/es.regexp.test');\nrequire('../modules/es.regexp.to-string');\nrequire('../modules/es.set');\nrequire('../modules/es.set.difference.v2');\nrequire('../modules/es.set.intersection.v2');\nrequire('../modules/es.set.is-disjoint-from.v2');\nrequire('../modules/es.set.is-subset-of.v2');\nrequire('../modules/es.set.is-superset-of.v2');\nrequire('../modules/es.set.symmetric-difference.v2');\nrequire('../modules/es.set.union.v2');\nrequire('../modules/es.string.at-alternative');\nrequire('../modules/es.string.code-point-at');\nrequire('../modules/es.string.ends-with');\nrequire('../modules/es.string.from-code-point');\nrequire('../modules/es.string.includes');\nrequire('../modules/es.string.is-well-formed');\nrequire('../modules/es.string.iterator');\nrequire('../modules/es.string.match');\nrequire('../modules/es.string.match-all');\nrequire('../modules/es.string.pad-end');\nrequire('../modules/es.string.pad-start');\nrequire('../modules/es.string.raw');\nrequire('../modules/es.string.repeat');\nrequire('../modules/es.string.replace');\nrequire('../modules/es.string.replace-all');\nrequire('../modules/es.string.search');\nrequire('../modules/es.string.split');\nrequire('../modules/es.string.starts-with');\nrequire('../modules/es.string.substr');\nrequire('../modules/es.string.to-well-formed');\nrequire('../modules/es.string.trim');\nrequire('../modules/es.string.trim-end');\nrequire('../modules/es.string.trim-start');\nrequire('../modules/es.string.anchor');\nrequire('../modules/es.string.big');\nrequire('../modules/es.string.blink');\nrequire('../modules/es.string.bold');\nrequire('../modules/es.string.fixed');\nrequire('../modules/es.string.fontcolor');\nrequire('../modules/es.string.fontsize');\nrequire('../modules/es.string.italics');\nrequire('../modules/es.string.link');\nrequire('../modules/es.string.small');\nrequire('../modules/es.string.strike');\nrequire('../modules/es.string.sub');\nrequire('../modules/es.string.sup');\nrequire('../modules/es.typed-array.float32-array');\nrequire('../modules/es.typed-array.float64-array');\nrequire('../modules/es.typed-array.int8-array');\nrequire('../modules/es.typed-array.int16-array');\nrequire('../modules/es.typed-array.int32-array');\nrequire('../modules/es.typed-array.uint8-array');\nrequire('../modules/es.typed-array.uint8-clamped-array');\nrequire('../modules/es.typed-array.uint16-array');\nrequire('../modules/es.typed-array.uint32-array');\nrequire('../modules/es.typed-array.at');\nrequire('../modules/es.typed-array.copy-within');\nrequire('../modules/es.typed-array.every');\nrequire('../modules/es.typed-array.fill');\nrequire('../modules/es.typed-array.filter');\nrequire('../modules/es.typed-array.find');\nrequire('../modules/es.typed-array.find-index');\nrequire('../modules/es.typed-array.find-last');\nrequire('../modules/es.typed-array.find-last-index');\nrequire('../modules/es.typed-array.for-each');\nrequire('../modules/es.typed-array.from');\nrequire('../modules/es.typed-array.includes');\nrequire('../modules/es.typed-array.index-of');\nrequire('../modules/es.typed-array.iterator');\nrequire('../modules/es.typed-array.join');\nrequire('../modules/es.typed-array.last-index-of');\nrequire('../modules/es.typed-array.map');\nrequire('../modules/es.typed-array.of');\nrequire('../modules/es.typed-array.reduce');\nrequire('../modules/es.typed-array.reduce-right');\nrequire('../modules/es.typed-array.reverse');\nrequire('../modules/es.typed-array.set');\nrequire('../modules/es.typed-array.slice');\nrequire('../modules/es.typed-array.some');\nrequire('../modules/es.typed-array.sort');\nrequire('../modules/es.typed-array.subarray');\nrequire('../modules/es.typed-array.to-locale-string');\nrequire('../modules/es.typed-array.to-reversed');\nrequire('../modules/es.typed-array.to-sorted');\nrequire('../modules/es.typed-array.to-string');\nrequire('../modules/es.typed-array.with');\nrequire('../modules/es.unescape');\nrequire('../modules/es.weak-map');\nrequire('../modules/es.weak-set');\nrequire('../modules/web.atob');\nrequire('../modules/web.btoa');\nrequire('../modules/web.dom-collections.for-each');\nrequire('../modules/web.dom-collections.iterator');\nrequire('../modules/web.dom-exception.constructor');\nrequire('../modules/web.dom-exception.stack');\nrequire('../modules/web.dom-exception.to-string-tag');\nrequire('../modules/web.immediate');\nrequire('../modules/web.queue-microtask');\nrequire('../modules/web.self');\nrequire('../modules/web.structured-clone');\nrequire('../modules/web.timers');\nrequire('../modules/web.url');\nrequire('../modules/web.url.can-parse');\nrequire('../modules/web.url.parse');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nrequire('../modules/web.url-search-params.delete');\nrequire('../modules/web.url-search-params.has');\nrequire('../modules/web.url-search-params.size');\n\nmodule.exports = require('../internals/path');\n", "/**\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", "/*!\n * Chartkick.js\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * v4.2.0\n * MIT License\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chartkick = factory());\n})(this, (function () { 'use strict';\n\n  function isArray(variable) {\n    return Object.prototype.toString.call(variable) === \"[object Array]\";\n  }\n\n  function isFunction(variable) {\n    return variable instanceof Function;\n  }\n\n  function isPlainObject(variable) {\n    // protect against prototype pollution, defense 2\n    return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n  }\n\n  // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n  function extend(target, source) {\n    var key;\n    for (key in source) {\n      // protect against prototype pollution, defense 1\n      if (key === \"__proto__\") { continue; }\n\n      if (isPlainObject(source[key]) || isArray(source[key])) {\n        if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n          target[key] = {};\n        }\n        if (isArray(source[key]) && !isArray(target[key])) {\n          target[key] = [];\n        }\n        extend(target[key], source[key]);\n      } else if (source[key] !== undefined) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  function merge(obj1, obj2) {\n    var target = {};\n    extend(target, obj1);\n    extend(target, obj2);\n    return target;\n  }\n\n  var DATE_PATTERN = /^(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)$/i;\n\n  function negativeValues(series) {\n    var i, j, data;\n    for (i = 0; i < series.length; i++) {\n      data = series[i].data;\n      for (j = 0; j < data.length; j++) {\n        if (data[j][1] < 0) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  function toStr(n) {\n    return \"\" + n;\n  }\n\n  function toFloat(n) {\n    return parseFloat(n);\n  }\n\n  function toDate(n) {\n    var matches, year, month, day;\n    if (typeof n !== \"object\") {\n      if (typeof n === \"number\") {\n        n = new Date(n * 1000); // ms\n      } else {\n        n = toStr(n);\n        if ((matches = n.match(DATE_PATTERN))) {\n          year = parseInt(matches[1], 10);\n          month = parseInt(matches[3], 10) - 1;\n          day = parseInt(matches[5], 10);\n          return new Date(year, month, day);\n        } else {\n          // try our best to get the str into iso8601\n          // TODO be smarter about this\n          var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n          // Date.parse returns milliseconds if valid and NaN if invalid\n          n = new Date(Date.parse(str) || n);\n        }\n      }\n    }\n    return n;\n  }\n\n  function toArr(n) {\n    if (!isArray(n)) {\n      var arr = [], i;\n      for (i in n) {\n        if (n.hasOwnProperty(i)) {\n          arr.push([i, n[i]]);\n        }\n      }\n      n = arr;\n    }\n    return n;\n  }\n\n  function jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n    return function (chart, opts, chartOptions) {\n      var series = chart.data;\n      var options = merge({}, defaultOptions);\n      options = merge(options, chartOptions || {});\n\n      if (chart.singleSeriesFormat || \"legend\" in opts) {\n        hideLegend(options, opts.legend, chart.singleSeriesFormat);\n      }\n\n      if (opts.title) {\n        setTitle(options, opts.title);\n      }\n\n      // min\n      if (\"min\" in opts) {\n        setMin(options, opts.min);\n      } else if (!negativeValues(series)) {\n        setMin(options, 0);\n      }\n\n      // max\n      if (opts.max) {\n        setMax(options, opts.max);\n      }\n\n      if (\"stacked\" in opts) {\n        setStacked(options, opts.stacked);\n      }\n\n      if (opts.colors) {\n        options.colors = opts.colors;\n      }\n\n      if (opts.xtitle) {\n        setXtitle(options, opts.xtitle);\n      }\n\n      if (opts.ytitle) {\n        setYtitle(options, opts.ytitle);\n      }\n\n      // merge library last\n      options = merge(options, opts.library || {});\n\n      return options;\n    };\n  }\n\n  function sortByTime(a, b) {\n    return a[0].getTime() - b[0].getTime();\n  }\n\n  function sortByNumberSeries(a, b) {\n    return a[0] - b[0];\n  }\n\n  function sortByNumber(a, b) {\n    return a - b;\n  }\n\n  function isMinute(d) {\n    return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n  }\n\n  function isHour(d) {\n    return isMinute(d) && d.getMinutes() === 0;\n  }\n\n  function isDay(d) {\n    return isHour(d) && d.getHours() === 0;\n  }\n\n  function isWeek(d, dayOfWeek) {\n    return isDay(d) && d.getDay() === dayOfWeek;\n  }\n\n  function isMonth(d) {\n    return isDay(d) && d.getDate() === 1;\n  }\n\n  function isYear(d) {\n    return isMonth(d) && d.getMonth() === 0;\n  }\n\n  function isDate(obj) {\n    return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n  }\n\n  function isNumber(obj) {\n    return typeof obj === \"number\";\n  }\n\n  var byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\n  function formatValue(pre, value, options, axis) {\n    pre = pre || \"\";\n    if (options.prefix) {\n      if (value < 0) {\n        value = value * -1;\n        pre += \"-\";\n      }\n      pre += options.prefix;\n    }\n\n    var suffix = options.suffix || \"\";\n    var precision = options.precision;\n    var round = options.round;\n\n    if (options.byteScale) {\n      var suffixIdx;\n      var baseValue = axis ? options.byteScale : value;\n\n      if (baseValue >= 1152921504606846976) {\n        value /= 1152921504606846976;\n        suffixIdx = 6;\n      } else if (baseValue >= 1125899906842624) {\n        value /= 1125899906842624;\n        suffixIdx = 5;\n      } else if (baseValue >= 1099511627776) {\n        value /= 1099511627776;\n        suffixIdx = 4;\n      } else if (baseValue >= 1073741824) {\n        value /= 1073741824;\n        suffixIdx = 3;\n      } else if (baseValue >= 1048576) {\n        value /= 1048576;\n        suffixIdx = 2;\n      } else if (baseValue >= 1024) {\n        value /= 1024;\n        suffixIdx = 1;\n      } else {\n        suffixIdx = 0;\n      }\n\n      // TODO handle manual precision case\n      if (precision === undefined && round === undefined) {\n        if (value >= 1023.5) {\n          if (suffixIdx < byteSuffixes.length - 1) {\n            value = 1.0;\n            suffixIdx += 1;\n          }\n        }\n        precision = value >= 1000 ? 4 : 3;\n      }\n      suffix = \" \" + byteSuffixes[suffixIdx];\n    }\n\n    if (precision !== undefined && round !== undefined) {\n      throw Error(\"Use either round or precision, not both\");\n    }\n\n    if (!axis) {\n      if (precision !== undefined) {\n        value = value.toPrecision(precision);\n        if (!options.zeros) {\n          value = parseFloat(value);\n        }\n      }\n\n      if (round !== undefined) {\n        if (round < 0) {\n          var num = Math.pow(10, -1 * round);\n          value = parseInt((1.0 * value / num).toFixed(0)) * num;\n        } else {\n          value = value.toFixed(round);\n          if (!options.zeros) {\n            value = parseFloat(value);\n          }\n        }\n      }\n    }\n\n    if (options.thousands || options.decimal) {\n      value = toStr(value);\n      var parts = value.split(\".\");\n      value = parts[0];\n      if (options.thousands) {\n        value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n      }\n      if (parts.length > 1) {\n        value += (options.decimal || \".\") + parts[1];\n      }\n    }\n\n    return pre + value + suffix;\n  }\n\n  function seriesOption(chart, series, option) {\n    if (option in series) {\n      return series[option];\n    } else if (option in chart.options) {\n      return chart.options[option];\n    }\n    return null;\n  }\n\n  function allZeros(data) {\n    var i, j, d;\n    for (i = 0; i < data.length; i++) {\n      d = data[i].data;\n      for (j = 0; j < d.length; j++) {\n        if (d[j][1] != 0) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  var baseOptions = {\n    maintainAspectRatio: false,\n    animation: false,\n    plugins: {\n      legend: {},\n      tooltip: {\n        displayColors: false,\n        callbacks: {}\n      },\n      title: {\n        font: {\n          size: 20\n        },\n        color: \"#333\"\n      }\n    },\n    interaction: {}\n  };\n\n  var defaultOptions$2 = {\n    scales: {\n      y: {\n        ticks: {\n          maxTicksLimit: 4\n        },\n        title: {\n          font: {\n            size: 16\n          },\n          color: \"#333\"\n        },\n        grid: {}\n      },\n      x: {\n        grid: {\n          drawOnChartArea: false\n        },\n        title: {\n          font: {\n            size: 16\n          },\n          color: \"#333\"\n        },\n        time: {},\n        ticks: {}\n      }\n    }\n  };\n\n  // http://there4.io/2012/05/02/google-chart-color-list/\n  var defaultColors = [\n    \"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\",\n    \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\",\n    \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"\n  ];\n\n  var hideLegend$2 = function (options, legend, hideLegend) {\n    if (legend !== undefined) {\n      options.plugins.legend.display = !!legend;\n      if (legend && legend !== true) {\n        options.plugins.legend.position = legend;\n      }\n    } else if (hideLegend) {\n      options.plugins.legend.display = false;\n    }\n  };\n\n  var setTitle$2 = function (options, title) {\n    options.plugins.title.display = true;\n    options.plugins.title.text = title;\n  };\n\n  var setMin$2 = function (options, min) {\n    if (min !== null) {\n      options.scales.y.min = toFloat(min);\n    }\n  };\n\n  var setMax$2 = function (options, max) {\n    options.scales.y.max = toFloat(max);\n  };\n\n  var setBarMin$1 = function (options, min) {\n    if (min !== null) {\n      options.scales.x.min = toFloat(min);\n    }\n  };\n\n  var setBarMax$1 = function (options, max) {\n    options.scales.x.max = toFloat(max);\n  };\n\n  var setStacked$2 = function (options, stacked) {\n    options.scales.x.stacked = !!stacked;\n    options.scales.y.stacked = !!stacked;\n  };\n\n  var setXtitle$2 = function (options, title) {\n    options.scales.x.title.display = true;\n    options.scales.x.title.text = title;\n  };\n\n  var setYtitle$2 = function (options, title) {\n    options.scales.y.title.display = true;\n    options.scales.y.title.text = title;\n  };\n\n  // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n  var addOpacity = function (hex, opacity) {\n    var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n  };\n\n  // check if not null or undefined\n  // https://stackoverflow.com/a/27757708/1177228\n  var notnull = function (x) {\n    return x != null;\n  };\n\n  var setLabelSize = function (chart, data, options) {\n    var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n    if (maxLabelSize > 25) {\n      maxLabelSize = 25;\n    } else if (maxLabelSize < 10) {\n      maxLabelSize = 10;\n    }\n    if (!options.scales.x.ticks.callback) {\n      options.scales.x.ticks.callback = function (value) {\n        value = toStr(this.getLabelForValue(value));\n        if (value.length > maxLabelSize) {\n          return value.substring(0, maxLabelSize - 2) + \"...\";\n        } else {\n          return value;\n        }\n      };\n    }\n  };\n\n  var setFormatOptions$1 = function (chart, options, chartType) {\n    var formatOptions = {\n      prefix: chart.options.prefix,\n      suffix: chart.options.suffix,\n      thousands: chart.options.thousands,\n      decimal: chart.options.decimal,\n      precision: chart.options.precision,\n      round: chart.options.round,\n      zeros: chart.options.zeros\n    };\n\n    if (chart.options.bytes) {\n      var series = chart.data;\n      if (chartType === \"pie\") {\n        series = [{data: series}];\n      }\n\n      // calculate max\n      var max = 0;\n      for (var i = 0; i < series.length; i++) {\n        var s = series[i];\n        for (var j = 0; j < s.data.length; j++) {\n          if (s.data[j][1] > max) {\n            max = s.data[j][1];\n          }\n        }\n      }\n\n      // calculate scale\n      var scale = 1;\n      while (max >= 1024) {\n        scale *= 1024;\n        max /= 1024;\n      }\n\n      // set step size\n      formatOptions.byteScale = scale;\n    }\n\n    if (chartType !== \"pie\") {\n      var axis = options.scales.y;\n      if (chartType === \"bar\") {\n        axis = options.scales.x;\n      }\n\n      if (formatOptions.byteScale) {\n        if (!axis.ticks.stepSize) {\n          axis.ticks.stepSize = formatOptions.byteScale / 2;\n        }\n        if (!axis.ticks.maxTicksLimit) {\n          axis.ticks.maxTicksLimit = 4;\n        }\n      }\n\n      if (!axis.ticks.callback) {\n        axis.ticks.callback = function (value) {\n          return formatValue(\"\", value, formatOptions, true);\n        };\n      }\n    }\n\n    if (!options.plugins.tooltip.callbacks.label) {\n      if (chartType === \"scatter\") {\n        options.plugins.tooltip.callbacks.label = function (context) {\n          var label = context.dataset.label || '';\n          if (label) {\n            label += ': ';\n          }\n          return label + '(' + context.label + ', ' + context.formattedValue + ')';\n        };\n      } else if (chartType === \"bubble\") {\n        options.plugins.tooltip.callbacks.label = function (context) {\n          var label = context.dataset.label || '';\n          if (label) {\n            label += ': ';\n          }\n          var dataPoint = context.raw;\n          return label + '(' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.v + ')';\n        };\n      } else if (chartType === \"pie\") {\n        // need to use separate label for pie charts\n        options.plugins.tooltip.callbacks.label = function (context) {\n          var dataLabel = context.label;\n          var value = ': ';\n\n          if (isArray(dataLabel)) {\n            // show value on first line of multiline label\n            // need to clone because we are changing the value\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n\n          return formatValue(dataLabel, context.parsed, formatOptions);\n        };\n      } else {\n        var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n        options.plugins.tooltip.callbacks.label = function (context) {\n          // don't show null values for stacked charts\n          if (context.parsed[valueLabel] === null) {\n            return;\n          }\n\n          var label = context.dataset.label || '';\n          if (label) {\n            label += ': ';\n          }\n          return formatValue(label, context.parsed[valueLabel], formatOptions);\n        };\n      }\n    }\n  };\n\n  var jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\n  var createDataTable = function (chart, options, chartType) {\n    var datasets = [];\n    var labels = [];\n\n    var colors = chart.options.colors || defaultColors;\n\n    var day = true;\n    var week = true;\n    var dayOfWeek;\n    var month = true;\n    var year = true;\n    var hour = true;\n    var minute = true;\n\n    var series = chart.data;\n\n    var max = 0;\n    if (chartType === \"bubble\") {\n      for (var i$1 = 0; i$1 < series.length; i$1++) {\n        var s$1 = series[i$1];\n        for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {\n          if (s$1.data[j$1][2] > max) {\n            max = s$1.data[j$1][2];\n          }\n        }\n      }\n    }\n\n    var i, j, s, d, key, rows = [], rows2 = [];\n\n    if (chartType === \"bar\" || chartType === \"column\" || (chart.xtype !== \"number\" && chart.xtype !== \"bubble\")) {\n      var sortedLabels = [];\n\n      for (i = 0; i < series.length; i++) {\n        s = series[i];\n\n        for (j = 0; j < s.data.length; j++) {\n          d = s.data[j];\n          key = chart.xtype == \"datetime\" ? d[0].getTime() : d[0];\n          if (!rows[key]) {\n            rows[key] = new Array(series.length);\n          }\n          rows[key][i] = toFloat(d[1]);\n          if (sortedLabels.indexOf(key) === -1) {\n            sortedLabels.push(key);\n          }\n        }\n      }\n\n      if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n        sortedLabels.sort(sortByNumber);\n      }\n\n      for (j = 0; j < series.length; j++) {\n        rows2.push([]);\n      }\n\n      var value;\n      var k;\n      for (k = 0; k < sortedLabels.length; k++) {\n        i = sortedLabels[k];\n        if (chart.xtype === \"datetime\") {\n          value = new Date(toFloat(i));\n          // TODO make this efficient\n          day = day && isDay(value);\n          if (!dayOfWeek) {\n            dayOfWeek = value.getDay();\n          }\n          week = week && isWeek(value, dayOfWeek);\n          month = month && isMonth(value);\n          year = year && isYear(value);\n          hour = hour && isHour(value);\n          minute = minute && isMinute(value);\n        } else {\n          value = i;\n        }\n        labels.push(value);\n        for (j = 0; j < series.length; j++) {\n          // Chart.js doesn't like undefined\n          rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);\n        }\n      }\n    } else {\n      for (var i$2 = 0; i$2 < series.length; i$2++) {\n        var s$2 = series[i$2];\n        var d$1 = [];\n        for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {\n          var point = {\n            x: toFloat(s$2.data[j$2][0]),\n            y: toFloat(s$2.data[j$2][1])\n          };\n          if (chartType === \"bubble\") {\n            point.r = toFloat(s$2.data[j$2][2]) * 20 / max;\n            // custom attribute, for tooltip\n            point.v = s$2.data[j$2][2];\n          }\n          d$1.push(point);\n        }\n        rows2.push(d$1);\n      }\n    }\n\n    var color;\n    var backgroundColor;\n\n    for (i = 0; i < series.length; i++) {\n      s = series[i];\n\n      // use colors for each bar for single series format\n      if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n        color = colors;\n        backgroundColor = [];\n        for (var j$3 = 0; j$3 < colors.length; j$3++) {\n          backgroundColor[j$3] = addOpacity(color[j$3], 0.5);\n        }\n      } else {\n        color = s.color || colors[i];\n        backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n      }\n\n      var dataset = {\n        label: s.name || \"\",\n        data: rows2[i],\n        fill: chartType === \"area\",\n        borderColor: color,\n        backgroundColor: backgroundColor,\n        borderWidth: 2\n      };\n\n      var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n      if (pointChart) {\n        dataset.pointBackgroundColor = color;\n        dataset.pointHoverBackgroundColor = color;\n        dataset.pointHitRadius = 50;\n      }\n\n      if (chartType === \"bubble\") {\n        dataset.pointBackgroundColor = backgroundColor;\n        dataset.pointHoverBackgroundColor = backgroundColor;\n        dataset.pointHoverBorderWidth = 2;\n      }\n\n      if (s.stack) {\n        dataset.stack = s.stack;\n      }\n\n      var curve = seriesOption(chart, s, \"curve\");\n      if (curve === false) {\n        dataset.tension = 0;\n      } else if (pointChart) {\n        dataset.tension = 0.4;\n      }\n\n      var points = seriesOption(chart, s, \"points\");\n      if (points === false) {\n        dataset.pointRadius = 0;\n        dataset.pointHoverRadius = 0;\n      }\n\n      dataset = merge(dataset, chart.options.dataset || {});\n      dataset = merge(dataset, s.library || {});\n      dataset = merge(dataset, s.dataset || {});\n\n      datasets.push(dataset);\n    }\n\n    var xmin = chart.options.xmin;\n    var xmax = chart.options.xmax;\n\n    if (chart.xtype === \"datetime\") {\n      if (notnull(xmin)) {\n        options.scales.x.min = toDate(xmin).getTime();\n      }\n      if (notnull(xmax)) {\n        options.scales.x.max = toDate(xmax).getTime();\n      }\n    } else if (chart.xtype === \"number\") {\n      if (notnull(xmin)) {\n        options.scales.x.min = xmin;\n      }\n      if (notnull(xmax)) {\n        options.scales.x.max = xmax;\n      }\n    }\n\n    // for empty datetime chart\n    if (chart.xtype === \"datetime\" && labels.length === 0) {\n      if (notnull(xmin)) {\n        labels.push(toDate(xmin));\n      }\n      if (notnull(xmax)) {\n        labels.push(toDate(xmax));\n      }\n      day = false;\n      week = false;\n      month = false;\n      year = false;\n      hour = false;\n      minute = false;\n    }\n\n    if (chart.xtype === \"datetime\" && labels.length > 0) {\n      var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n      var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n      for (i = 1; i < labels.length; i++) {\n        var value$1 = labels[i].getTime();\n        if (value$1 < minTime) {\n          minTime = value$1;\n        }\n        if (value$1 > maxTime) {\n          maxTime = value$1;\n        }\n      }\n\n      var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n      if (!options.scales.x.time.unit) {\n        var step;\n        if (year || timeDiff > 365 * 10) {\n          options.scales.x.time.unit = \"year\";\n          step = 365;\n        } else if (month || timeDiff > 30 * 10) {\n          options.scales.x.time.unit = \"month\";\n          step = 30;\n        } else if (day || timeDiff > 10) {\n          options.scales.x.time.unit = \"day\";\n          step = 1;\n        } else if (hour || timeDiff > 0.5) {\n          options.scales.x.time.displayFormats = {hour: \"MMM d, h a\"};\n          options.scales.x.time.unit = \"hour\";\n          step = 1 / 24.0;\n        } else if (minute) {\n          options.scales.x.time.displayFormats = {minute: \"h:mm a\"};\n          options.scales.x.time.unit = \"minute\";\n          step = 1 / 24.0 / 60.0;\n        }\n\n        if (step && timeDiff > 0) {\n          // width not available for hidden elements\n          var width = chart.element.offsetWidth;\n          if (width > 0) {\n            var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n            if (week && step === 1) {\n              unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n            }\n            options.scales.x.time.stepSize = unitStepSize;\n          }\n        }\n      }\n\n      if (!options.scales.x.time.tooltipFormat) {\n        if (day) {\n          options.scales.x.time.tooltipFormat = \"PP\";\n        } else if (hour) {\n          options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n        } else if (minute) {\n          options.scales.x.time.tooltipFormat = \"h:mm a\";\n        }\n      }\n    }\n\n    var data = {\n      labels: labels,\n      datasets: datasets\n    };\n\n    return data;\n  };\n\n  var defaultExport$2 = function defaultExport(library) {\n    this.name = \"chartjs\";\n    this.library = library;\n  };\n\n  defaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n    var chartOptions = {};\n    // fix for https://github.com/chartjs/Chart.js/issues/2441\n    if (!chart.options.max && allZeros(chart.data)) {\n      chartOptions.max = 1;\n    }\n\n    var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n    setFormatOptions$1(chart, options, chartType);\n\n    var data = createDataTable(chart, options, chartType || \"line\");\n\n    if (chart.xtype === \"number\") {\n      options.scales.x.type = options.scales.x.type || \"linear\";\n      options.scales.x.position = options.scales.x.position ||\"bottom\";\n    } else {\n      options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n    }\n\n    this.drawChart(chart, \"line\", data, options);\n  };\n\n  defaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {\n    var options = merge({}, baseOptions);\n    if (chart.options.donut) {\n      options.cutout = \"50%\";\n    }\n\n    if (\"legend\" in chart.options) {\n      hideLegend$2(options, chart.options.legend);\n    }\n\n    if (chart.options.title) {\n      setTitle$2(options, chart.options.title);\n    }\n\n    options = merge(options, chart.options.library || {});\n    setFormatOptions$1(chart, options, \"pie\");\n\n    var labels = [];\n    var values = [];\n    for (var i = 0; i < chart.data.length; i++) {\n      var point = chart.data[i];\n      labels.push(point[0]);\n      values.push(point[1]);\n    }\n\n    var dataset = {\n      data: values,\n      backgroundColor: chart.options.colors || defaultColors\n    };\n    dataset = merge(dataset, chart.options.dataset || {});\n\n    var data = {\n      labels: labels,\n      datasets: [dataset]\n    };\n\n    this.drawChart(chart, \"pie\", data, options);\n  };\n\n  defaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n    var options;\n    if (chartType === \"bar\") {\n      var barOptions = merge(baseOptions, defaultOptions$2);\n      barOptions.indexAxis = \"y\";\n\n      // ensure gridlines have proper orientation\n      barOptions.scales.x.grid.drawOnChartArea = true;\n      barOptions.scales.y.grid.drawOnChartArea = false;\n      delete barOptions.scales.y.ticks.maxTicksLimit;\n\n      options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n    } else {\n      options = jsOptions$2(chart, chart.options);\n    }\n    setFormatOptions$1(chart, options, chartType);\n    var data = createDataTable(chart, options, \"column\");\n    if (chartType !== \"bar\") {\n      setLabelSize(chart, data, options);\n    }\n    this.drawChart(chart, \"bar\", data, options);\n  };\n\n  defaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n    this.renderLineChart(chart, \"area\");\n  };\n\n  defaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n    this.renderColumnChart(chart, \"bar\");\n  };\n\n  defaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {\n    chartType = chartType || \"scatter\";\n\n    var options = jsOptions$2(chart, chart.options);\n    setFormatOptions$1(chart, options, chartType);\n\n    if (!(\"showLine\" in options)) {\n      options.showLine = false;\n    }\n\n    var data = createDataTable(chart, options, chartType);\n\n    options.scales.x.type = options.scales.x.type || \"linear\";\n    options.scales.x.position = options.scales.x.position || \"bottom\";\n\n    // prevent grouping hover and tooltips\n    if (!(\"mode\" in options.interaction)) {\n      options.interaction.mode = \"nearest\";\n    }\n\n    this.drawChart(chart, chartType, data, options);\n  };\n\n  defaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n    this.renderScatterChart(chart, \"bubble\");\n  };\n\n  defaultExport$2.prototype.destroy = function destroy (chart) {\n    if (chart.chart) {\n      chart.chart.destroy();\n    }\n  };\n\n  defaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {\n    this.destroy(chart);\n    if (chart.destroyed) { return; }\n\n    var chartOptions = {\n      type: type,\n      data: data,\n      options: options\n    };\n\n    if (chart.options.code) {\n      window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n    }\n\n    chart.element.innerHTML = \"<canvas></canvas>\";\n    var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n    chart.chart = new this.library(ctx, chartOptions);\n  };\n\n  var defaultOptions$1 = {\n    chart: {},\n    xAxis: {\n      title: {\n        text: null\n      },\n      labels: {\n        style: {\n          fontSize: \"12px\"\n        }\n      }\n    },\n    yAxis: {\n      title: {\n        text: null\n      },\n      labels: {\n        style: {\n          fontSize: \"12px\"\n        }\n      }\n    },\n    title: {\n      text: null\n    },\n    credits: {\n      enabled: false\n    },\n    legend: {\n      borderWidth: 0\n    },\n    tooltip: {\n      style: {\n        fontSize: \"12px\"\n      }\n    },\n    plotOptions: {\n      areaspline: {},\n      area: {},\n      series: {\n        marker: {}\n      }\n    },\n    time: {\n      useUTC: false\n    }\n  };\n\n  var hideLegend$1 = function (options, legend, hideLegend) {\n    if (legend !== undefined) {\n      options.legend.enabled = !!legend;\n      if (legend && legend !== true) {\n        if (legend === \"top\" || legend === \"bottom\") {\n          options.legend.verticalAlign = legend;\n        } else {\n          options.legend.layout = \"vertical\";\n          options.legend.verticalAlign = \"middle\";\n          options.legend.align = legend;\n        }\n      }\n    } else if (hideLegend) {\n      options.legend.enabled = false;\n    }\n  };\n\n  var setTitle$1 = function (options, title) {\n    options.title.text = title;\n  };\n\n  var setMin$1 = function (options, min) {\n    options.yAxis.min = min;\n  };\n\n  var setMax$1 = function (options, max) {\n    options.yAxis.max = max;\n  };\n\n  var setStacked$1 = function (options, stacked) {\n    var stackedValue = stacked ? (stacked === true ? \"normal\" : stacked) : null;\n    options.plotOptions.series.stacking = stackedValue;\n    options.plotOptions.area.stacking = stackedValue;\n    options.plotOptions.areaspline.stacking = stackedValue;\n  };\n\n  var setXtitle$1 = function (options, title) {\n    options.xAxis.title.text = title;\n  };\n\n  var setYtitle$1 = function (options, title) {\n    options.yAxis.title.text = title;\n  };\n\n  var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\n  var setFormatOptions = function(chart, options, chartType) {\n    var formatOptions = {\n      prefix: chart.options.prefix,\n      suffix: chart.options.suffix,\n      thousands: chart.options.thousands,\n      decimal: chart.options.decimal,\n      precision: chart.options.precision,\n      round: chart.options.round,\n      zeros: chart.options.zeros\n    };\n\n    // skip when axis is an array (like with min/max)\n    if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n      options.yAxis.labels.formatter = function () {\n        return formatValue(\"\", this.value, formatOptions);\n      };\n    }\n\n    if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n      options.tooltip.pointFormatter = function () {\n        return '<span style=\"color:' + this.color + '\">\\u25CF</span> ' + formatValue(this.series.name + ': <b>', this.y, formatOptions) + '</b><br/>';\n      };\n    }\n  };\n\n  var defaultExport$1 = function defaultExport(library) {\n    this.name = \"highcharts\";\n    this.library = library;\n  };\n\n  defaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n    chartType = chartType || \"spline\";\n    var chartOptions = {};\n    if (chartType === \"areaspline\") {\n      chartOptions = {\n        plotOptions: {\n          areaspline: {\n            stacking: \"normal\"\n          },\n          area: {\n            stacking: \"normal\"\n          },\n          series: {\n            marker: {\n              enabled: false\n            }\n          }\n        }\n      };\n    }\n\n    if (chart.options.curve === false) {\n      if (chartType === \"areaspline\") {\n        chartType = \"area\";\n      } else if (chartType === \"spline\") {\n        chartType = \"line\";\n      }\n    }\n\n    var options = jsOptions$1(chart, chart.options, chartOptions), data, i, j;\n    if (chart.xtype === \"number\") {\n      options.xAxis.type = options.xAxis.type || \"linear\";\n    } else {\n      options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n    }\n    if (!options.chart.type) {\n      options.chart.type = chartType;\n    }\n    setFormatOptions(chart, options, chartType);\n\n    var series = chart.data;\n    for (i = 0; i < series.length; i++) {\n      series[i].name = series[i].name || \"Value\";\n      data = series[i].data;\n      if (chart.xtype === \"datetime\") {\n        for (j = 0; j < data.length; j++) {\n          data[j][0] = data[j][0].getTime();\n        }\n      }\n      series[i].marker = {symbol: \"circle\"};\n      if (chart.options.points === false) {\n        series[i].marker.enabled = false;\n      }\n    }\n\n    this.drawChart(chart, series, options);\n  };\n\n  defaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {\n    var options = jsOptions$1(chart, chart.options, {});\n    options.chart.type = \"scatter\";\n    this.drawChart(chart, chart.data, options);\n  };\n\n  defaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {\n    var chartOptions = merge(defaultOptions$1, {});\n\n    if (chart.options.colors) {\n      chartOptions.colors = chart.options.colors;\n    }\n    if (chart.options.donut) {\n      chartOptions.plotOptions = {pie: {innerSize: \"50%\"}};\n    }\n\n    if (\"legend\" in chart.options) {\n      hideLegend$1(chartOptions, chart.options.legend);\n    }\n\n    if (chart.options.title) {\n      setTitle$1(chartOptions, chart.options.title);\n    }\n\n    var options = merge(chartOptions, chart.options.library || {});\n    setFormatOptions(chart, options, \"pie\");\n    var series = [{\n      type: \"pie\",\n      name: chart.options.label || \"Value\",\n      data: chart.data\n    }];\n\n    this.drawChart(chart, series, options);\n  };\n\n  defaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n    chartType = chartType || \"column\";\n    var series = chart.data;\n    var options = jsOptions$1(chart, chart.options), i, j, s, d, rows = [], categories = [];\n    options.chart.type = chartType;\n    setFormatOptions(chart, options, chartType);\n\n    for (i = 0; i < series.length; i++) {\n      s = series[i];\n\n      for (j = 0; j < s.data.length; j++) {\n        d = s.data[j];\n        if (!rows[d[0]]) {\n          rows[d[0]] = new Array(series.length);\n          categories.push(d[0]);\n        }\n        rows[d[0]][i] = d[1];\n      }\n    }\n\n    if (chart.xtype === \"number\") {\n      categories.sort(sortByNumber);\n    }\n\n    options.xAxis.categories = categories;\n\n    var newSeries = [], d2;\n    for (i = 0; i < series.length; i++) {\n      d = [];\n      for (j = 0; j < categories.length; j++) {\n        d.push(rows[categories[j]][i] || 0);\n      }\n\n      d2 = {\n        name: series[i].name || \"Value\",\n        data: d\n      };\n      if (series[i].stack) {\n        d2.stack = series[i].stack;\n      }\n\n      newSeries.push(d2);\n    }\n\n    this.drawChart(chart, newSeries, options);\n  };\n\n  defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n    this.renderColumnChart(chart, \"bar\");\n  };\n\n  defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n    this.renderLineChart(chart, \"areaspline\");\n  };\n\n  defaultExport$1.prototype.destroy = function destroy (chart) {\n    if (chart.chart) {\n      chart.chart.destroy();\n    }\n  };\n\n  defaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {\n    this.destroy(chart);\n    if (chart.destroyed) { return; }\n\n    options.chart.renderTo = chart.element.id;\n    options.series = data;\n\n    if (chart.options.code) {\n      window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n    }\n\n    chart.chart = new this.library.Chart(options);\n  };\n\n  var loaded = {};\n  var callbacks = [];\n\n  // Set chart options\n  var defaultOptions = {\n    chartArea: {},\n    fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n    pointSize: 6,\n    legend: {\n      textStyle: {\n        fontSize: 12,\n        color: \"#444\"\n      },\n      alignment: \"center\",\n      position: \"right\"\n    },\n    curveType: \"function\",\n    hAxis: {\n      textStyle: {\n        color: \"#666\",\n        fontSize: 12\n      },\n      titleTextStyle: {},\n      gridlines: {\n        color: \"transparent\"\n      },\n      baselineColor: \"#ccc\",\n      viewWindow: {}\n    },\n    vAxis: {\n      textStyle: {\n        color: \"#666\",\n        fontSize: 12\n      },\n      titleTextStyle: {},\n      baselineColor: \"#ccc\",\n      viewWindow: {}\n    },\n    tooltip: {\n      textStyle: {\n        color: \"#666\",\n        fontSize: 12\n      }\n    }\n  };\n\n  var hideLegend = function (options, legend, hideLegend) {\n    if (legend !== undefined) {\n      var position;\n      if (!legend) {\n        position = \"none\";\n      } else if (legend === true) {\n        position = \"right\";\n      } else {\n        position = legend;\n      }\n      options.legend.position = position;\n    } else if (hideLegend) {\n      options.legend.position = \"none\";\n    }\n  };\n\n  var setTitle = function (options, title) {\n    options.title = title;\n    options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n  };\n\n  var setMin = function (options, min) {\n    options.vAxis.viewWindow.min = min;\n  };\n\n  var setMax = function (options, max) {\n    options.vAxis.viewWindow.max = max;\n  };\n\n  var setBarMin = function (options, min) {\n    options.hAxis.viewWindow.min = min;\n  };\n\n  var setBarMax = function (options, max) {\n    options.hAxis.viewWindow.max = max;\n  };\n\n  var setStacked = function (options, stacked) {\n    options.isStacked = stacked ? stacked : false;\n  };\n\n  var setXtitle = function (options, title) {\n    options.hAxis.title = title;\n    options.hAxis.titleTextStyle.italic = false;\n  };\n\n  var setYtitle = function (options, title) {\n    options.vAxis.title = title;\n    options.vAxis.titleTextStyle.italic = false;\n  };\n\n  var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\n  var resize = function (callback) {\n    if (window.attachEvent) {\n      window.attachEvent(\"onresize\", callback);\n    } else if (window.addEventListener) {\n      window.addEventListener(\"resize\", callback, true);\n    }\n    callback();\n  };\n\n  var defaultExport = function defaultExport(library) {\n    this.name = \"google\";\n    this.library = library;\n  };\n\n  defaultExport.prototype.renderLineChart = function renderLineChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {};\n\n      if (chart.options.curve === false) {\n        chartOptions.curveType = \"none\";\n      }\n\n      if (chart.options.points === false) {\n        chartOptions.pointSize = 0;\n      }\n\n      var options = jsOptions(chart, chart.options, chartOptions);\n      var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n      this$1$1.drawChart(chart, \"LineChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderPieChart = function renderPieChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {\n        chartArea: {\n          top: \"10%\",\n          height: \"80%\"\n        },\n        legend: {}\n      };\n      if (chart.options.colors) {\n        chartOptions.colors = chart.options.colors;\n      }\n      if (chart.options.donut) {\n        chartOptions.pieHole = 0.5;\n      }\n      if (\"legend\" in chart.options) {\n        hideLegend(chartOptions, chart.options.legend);\n      }\n      if (chart.options.title) {\n        setTitle(chartOptions, chart.options.title);\n      }\n      var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n      var data = new this$1$1.library.visualization.DataTable();\n      data.addColumn(\"string\", \"\");\n      data.addColumn(\"number\", \"Value\");\n      data.addRows(chart.data);\n\n      this$1$1.drawChart(chart, \"PieChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var options = jsOptions(chart, chart.options);\n      var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n      this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderBarChart = function renderBarChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {\n        hAxis: {\n          gridlines: {\n            color: \"#ccc\"\n          }\n        }\n      };\n      var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n      var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n      this$1$1.drawChart(chart, \"BarChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {\n        isStacked: true,\n        pointSize: 0,\n        areaOpacity: 0.5\n      };\n\n      var options = jsOptions(chart, chart.options, chartOptions);\n      var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n      this$1$1.drawChart(chart, \"AreaChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, \"geochart\", function () {\n      var chartOptions = {\n        legend: \"none\",\n        colorAxis: {\n          colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n        }\n      };\n      var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n      var data = new this$1$1.library.visualization.DataTable();\n      data.addColumn(\"string\", \"\");\n      data.addColumn(\"number\", chart.options.label || \"Value\");\n      data.addRows(chart.data);\n\n      this$1$1.drawChart(chart, \"GeoChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {};\n      var options = jsOptions(chart, chart.options, chartOptions);\n\n      var series = chart.data, rows2 = [], i, j, data, d;\n      for (i = 0; i < series.length; i++) {\n        series[i].name = series[i].name || \"Value\";\n        d = series[i].data;\n        for (j = 0; j < d.length; j++) {\n          var row = new Array(series.length + 1);\n          row[0] = d[j][0];\n          row[i + 1] = d[j][1];\n          rows2.push(row);\n        }\n      }\n\n      data = new this$1$1.library.visualization.DataTable();\n      data.addColumn(\"number\", \"\");\n      for (i = 0; i < series.length; i++) {\n        data.addColumn(\"number\", series[i].name);\n      }\n      data.addRows(rows2);\n\n      this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderTimeline = function renderTimeline (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, \"timeline\", function () {\n      var chartOptions = {\n        legend: \"none\"\n      };\n\n      if (chart.options.colors) {\n        chartOptions.colors = chart.options.colors;\n      }\n      var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n      var data = new this$1$1.library.visualization.DataTable();\n      data.addColumn({type: \"string\", id: \"Name\"});\n      data.addColumn({type: \"date\", id: \"Start\"});\n      data.addColumn({type: \"date\", id: \"End\"});\n      data.addRows(chart.data);\n\n      chart.element.style.lineHeight = \"normal\";\n\n      this$1$1.drawChart(chart, \"Timeline\", data, options);\n    });\n  };\n\n  // TODO remove resize events\n  defaultExport.prototype.destroy = function destroy (chart) {\n    if (chart.chart) {\n      chart.chart.clearChart();\n    }\n  };\n\n  defaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {\n    this.destroy(chart);\n    if (chart.destroyed) { return; }\n\n    if (chart.options.code) {\n      window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n    }\n\n    chart.chart = new this.library.visualization[type](chart.element);\n    resize(function () {\n      chart.chart.draw(data, options);\n    });\n  };\n\n  defaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {\n      var this$1$1 = this;\n\n    if (!callback) {\n      callback = pack;\n      pack = \"corechart\";\n    }\n\n    callbacks.push({pack: pack, callback: callback});\n\n    if (loaded[pack]) {\n      this.runCallbacks();\n    } else {\n      loaded[pack] = true;\n\n      // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n      var loadOptions = {\n        packages: [pack],\n        callback: function () { this$1$1.runCallbacks(); }\n      };\n      var config = chart.__config();\n      if (config.language) {\n        loadOptions.language = config.language;\n      }\n      if (pack === \"geochart\" && config.mapsApiKey) {\n        loadOptions.mapsApiKey = config.mapsApiKey;\n      }\n\n      this.library.charts.load(\"current\", loadOptions);\n    }\n  };\n\n  defaultExport.prototype.runCallbacks = function runCallbacks () {\n    var cb, call;\n    for (var i = 0; i < callbacks.length; i++) {\n      cb = callbacks[i];\n      call = this.library.visualization && ((cb.pack === \"corechart\" && this.library.visualization.LineChart) || (cb.pack === \"timeline\" && this.library.visualization.Timeline) || (cb.pack === \"geochart\" && this.library.visualization.GeoChart));\n      if (call) {\n        cb.callback();\n        callbacks.splice(i, 1);\n        i--;\n      }\n    }\n  };\n\n  // cant use object as key\n  defaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n    var i, j, s, d, key, rows = [], sortedLabels = [];\n    for (i = 0; i < series.length; i++) {\n      s = series[i];\n      series[i].name = series[i].name || \"Value\";\n\n      for (j = 0; j < s.data.length; j++) {\n        d = s.data[j];\n        key = (columnType === \"datetime\") ? d[0].getTime() : d[0];\n        if (!rows[key]) {\n          rows[key] = new Array(series.length);\n          sortedLabels.push(key);\n        }\n        rows[key][i] = toFloat(d[1]);\n      }\n    }\n\n    var rows2 = [];\n    var day = true;\n    var value;\n    for (j = 0; j < sortedLabels.length; j++) {\n      i = sortedLabels[j];\n      if (columnType === \"datetime\") {\n        value = new Date(toFloat(i));\n        day = day && isDay(value);\n      } else if (columnType === \"number\") {\n        value = toFloat(i);\n      } else {\n        value = i;\n      }\n      rows2.push([value].concat(rows[i]));\n    }\n    if (columnType === \"datetime\") {\n      rows2.sort(sortByTime);\n    } else if (columnType === \"number\") {\n      rows2.sort(sortByNumberSeries);\n\n      for (i = 0; i < rows2.length; i++) {\n        rows2[i][0] = toStr(rows2[i][0]);\n      }\n\n      columnType = \"string\";\n    }\n\n    // create datatable\n    var data = new this.library.visualization.DataTable();\n    columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n    data.addColumn(columnType, \"\");\n    for (i = 0; i < series.length; i++) {\n      data.addColumn(\"number\", series[i].name);\n    }\n    data.addRows(rows2);\n\n    return data;\n  };\n\n  function formatSeriesData(data, keyType) {\n    var r = [], j, keyFunc;\n\n    if (keyType === \"number\") {\n      keyFunc = toFloat;\n    } else if (keyType === \"datetime\") {\n      keyFunc = toDate;\n    } else {\n      keyFunc = toStr;\n    }\n\n    if (keyType === \"bubble\") {\n      for (j = 0; j < data.length; j++) {\n        r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);\n      }\n    } else {\n      for (j = 0; j < data.length; j++) {\n        r.push([keyFunc(data[j][0]), toFloat(data[j][1])]);\n      }\n    }\n\n    if (keyType === \"datetime\") {\n      r.sort(sortByTime);\n    } else if (keyType === \"number\") {\n      r.sort(sortByNumberSeries);\n    }\n\n    return r;\n  }\n\n  function detectXType(series, noDatetime, options) {\n    if (dataEmpty(series)) {\n      if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n        return \"datetime\";\n      } else {\n        return \"number\";\n      }\n    } else if (detectXTypeWithFunction(series, isNumber)) {\n      return \"number\";\n    } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n      return \"datetime\";\n    } else {\n      return \"string\";\n    }\n  }\n\n  function detectXTypeWithFunction(series, func) {\n    var i, j, data;\n    for (i = 0; i < series.length; i++) {\n      data = toArr(series[i].data);\n      for (j = 0; j < data.length; j++) {\n        if (!func(data[j][0])) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  // creates a shallow copy of each element of the array\n  // elements are expected to be objects\n  function copySeries(series) {\n    var newSeries = [], i, j;\n    for (i = 0; i < series.length; i++) {\n      var copy = {};\n      for (j in series[i]) {\n        if (series[i].hasOwnProperty(j)) {\n          copy[j] = series[i][j];\n        }\n      }\n      newSeries.push(copy);\n    }\n    return newSeries;\n  }\n\n  function processSeries(chart, keyType, noDatetime) {\n    var i;\n\n    var opts = chart.options;\n    var series = chart.rawData;\n\n    // see if one series or multiple\n    chart.singleSeriesFormat = (!isArray(series) || typeof series[0] !== \"object\" || isArray(series[0]));\n    if (chart.singleSeriesFormat) {\n      series = [{name: opts.label, data: series}];\n    }\n\n    // convert to array\n    // must come before dataEmpty check\n    series = copySeries(series);\n    for (i = 0; i < series.length; i++) {\n      series[i].data = toArr(series[i].data);\n    }\n\n    chart.xtype = keyType ? keyType : (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n    // right format\n    for (i = 0; i < series.length; i++) {\n      series[i].data = formatSeriesData(series[i].data, chart.xtype);\n    }\n\n    return series;\n  }\n\n  function processSimple(chart) {\n    var perfectData = toArr(chart.rawData), i;\n    for (i = 0; i < perfectData.length; i++) {\n      perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n    }\n    return perfectData;\n  }\n\n  function dataEmpty(data, chartType) {\n    if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n      return data.length === 0;\n    } else {\n      for (var i = 0; i < data.length; i++) {\n        if (data[i].data.length > 0) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n\n  function addDownloadButton(chart) {\n    var element = chart.element;\n    var link = document.createElement(\"a\");\n\n    var download = chart.options.download;\n    if (download === true) {\n      download = {};\n    } else if (typeof download === \"string\") {\n      download = {filename: download};\n    }\n    link.download = download.filename || \"chart.png\"; // https://caniuse.com/download\n\n    link.style.position = \"absolute\";\n    link.style.top = \"20px\";\n    link.style.right = \"20px\";\n    link.style.zIndex = 1000;\n    link.style.lineHeight = \"20px\";\n    link.target = \"_blank\"; // for safari\n    var image = document.createElement(\"img\");\n    image.alt = \"Download\";\n    image.style.border = \"none\";\n    // icon from font-awesome\n    // http://fa2png.io/\n    image.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==\";\n    link.appendChild(image);\n    element.style.position = \"relative\";\n\n    chart.__downloadAttached = true;\n\n    // mouseenter\n    chart.__enterEvent = addEvent(element, \"mouseover\", function(e) {\n      var related = e.relatedTarget;\n      // check download option again to ensure it wasn't changed\n      if ((!related || (related !== this && !childOf(this, related))) && chart.options.download) {\n        link.href = chart.toImage(download);\n        element.appendChild(link);\n      }\n    });\n\n    // mouseleave\n    chart.__leaveEvent = addEvent(element, \"mouseout\", function(e) {\n      var related = e.relatedTarget;\n      if (!related || (related !== this && !childOf(this, related))) {\n        if (link.parentNode) {\n          link.parentNode.removeChild(link);\n        }\n      }\n    });\n  }\n\n  // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser\n  function addEvent(elem, event, fn) {\n    if (elem.addEventListener) {\n      elem.addEventListener(event, fn, false);\n      return fn;\n    } else {\n      var fn2 = function() {\n        // set the this pointer same as addEventListener when fn is called\n        return(fn.call(elem, window.event));\n      };\n      elem.attachEvent(\"on\" + event, fn2);\n      return fn2;\n    }\n  }\n\n  function removeEvent(elem, event, fn) {\n    if (elem.removeEventListener) {\n      elem.removeEventListener(event, fn, false);\n    } else {\n      elem.detachEvent(\"on\" + event, fn);\n    }\n  }\n\n  // https://gist.github.com/shawnbot/4166283\n  function childOf(p, c) {\n    if (p === c) { return false; }\n    while (c && c !== p) { c = c.parentNode; }\n    return c === p;\n  }\n\n  var pendingRequests = [], runningRequests = 0, maxRequests = 4;\n\n  function pushRequest(url, success, error) {\n    pendingRequests.push([url, success, error]);\n    runNext();\n  }\n\n  function runNext() {\n    if (runningRequests < maxRequests) {\n      var request = pendingRequests.shift();\n      if (request) {\n        runningRequests++;\n        getJSON(request[0], request[1], request[2]);\n        runNext();\n      }\n    }\n  }\n\n  function requestComplete() {\n    runningRequests--;\n    runNext();\n  }\n\n  function getJSON(url, success, error) {\n    ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {\n      var message = (typeof errorThrown === \"string\") ? errorThrown : errorThrown.message;\n      error(message);\n    });\n  }\n\n  function ajaxCall(url, success, error) {\n    var $ = window.jQuery || window.Zepto || window.$;\n\n    if ($ && $.ajax) {\n      $.ajax({\n        dataType: \"json\",\n        url: url,\n        success: success,\n        error: error,\n        complete: requestComplete\n      });\n    } else {\n      var xhr = new XMLHttpRequest();\n      xhr.open(\"GET\", url, true);\n      xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      xhr.onload = function () {\n        requestComplete();\n        if (xhr.status === 200) {\n          success(JSON.parse(xhr.responseText), xhr.statusText, xhr);\n        } else {\n          error(xhr, \"error\", xhr.statusText);\n        }\n      };\n      xhr.send();\n    }\n  }\n\n  var config = {};\n  var adapters = [];\n\n  // helpers\n\n  function setText(element, text) {\n    if (document.body.innerText) {\n      element.innerText = text;\n    } else {\n      element.textContent = text;\n    }\n  }\n\n  // TODO remove prefix for all messages\n  function chartError(element, message, noPrefix) {\n    if (!noPrefix) {\n      message = \"Error Loading Chart: \" + message;\n    }\n    setText(element, message);\n    element.style.color = \"#ff0000\";\n  }\n\n  function errorCatcher(chart) {\n    try {\n      chart.__render();\n    } catch (err) {\n      chartError(chart.element, err.message);\n      throw err;\n    }\n  }\n\n  function fetchDataSource(chart, dataSource, showLoading) {\n    // only show loading message for urls and callbacks\n    if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n      setText(chart.element, chart.options.loading);\n    }\n\n    if (typeof dataSource === \"string\") {\n      pushRequest(dataSource, function (data) {\n        chart.rawData = data;\n        errorCatcher(chart);\n      }, function (message) {\n        chartError(chart.element, message);\n      });\n    } else if (typeof dataSource === \"function\") {\n      try {\n        dataSource(function (data) {\n          chart.rawData = data;\n          errorCatcher(chart);\n        }, function (message) {\n          chartError(chart.element, message, true);\n        });\n      } catch (err) {\n        chartError(chart.element, err, true);\n      }\n    } else {\n      chart.rawData = dataSource;\n      errorCatcher(chart);\n    }\n  }\n\n  function getAdapterType(library) {\n    if (library) {\n      if (library.product === \"Highcharts\") {\n        return defaultExport$1;\n      } else if (library.charts) {\n        return defaultExport;\n      } else if (isFunction(library)) {\n        return defaultExport$2;\n      }\n    }\n    throw new Error(\"Unknown adapter\");\n  }\n\n  function addAdapter(library) {\n    var adapterType = getAdapterType(library);\n    var adapter = new adapterType(library);\n\n    if (adapters.indexOf(adapter) === -1) {\n      adapters.push(adapter);\n    }\n  }\n\n  function loadAdapters() {\n    if (\"Chart\" in window) {\n      addAdapter(window.Chart);\n    }\n\n    if (\"Highcharts\" in window) {\n      addAdapter(window.Highcharts);\n    }\n\n    if (window.google && window.google.charts) {\n      addAdapter(window.google);\n    }\n  }\n\n  function renderChart(chartType, chart) {\n    if (dataEmpty(chart.data, chartType)) {\n      var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || \"No data\";\n      setText(chart.element, message);\n    } else {\n      callAdapter(chartType, chart);\n      if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n        addDownloadButton(chart);\n      }\n    }\n  }\n\n  // TODO remove chartType if cross-browser way\n  // to get the name of the chart class\n  function callAdapter(chartType, chart) {\n    var i, adapter, fnName, adapterName;\n    fnName = \"render\" + chartType;\n    adapterName = chart.options.adapter;\n\n    loadAdapters();\n\n    for (i = 0; i < adapters.length; i++) {\n      adapter = adapters[i];\n      if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n        chart.adapter = adapter.name;\n        chart.__adapterObject = adapter;\n        return adapter[fnName](chart);\n      }\n    }\n\n    if (adapters.length > 0) {\n      throw new Error(\"No charting library found for \" + chartType);\n    } else {\n      throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n    }\n  }\n\n  // define classes\n\n  var Chart = function Chart(element, dataSource, options) {\n    var elementId;\n    if (typeof element === \"string\") {\n      elementId = element;\n      element = document.getElementById(element);\n      if (!element) {\n        throw new Error(\"No element with id \" + elementId);\n      }\n    }\n    this.element = element;\n    this.options = merge(Chartkick.options, options || {});\n    this.dataSource = dataSource;\n\n    Chartkick.charts[element.id] = this;\n\n    fetchDataSource(this, dataSource, true);\n\n    if (this.options.refresh) {\n      this.startRefresh();\n    }\n  };\n\n  Chart.prototype.getElement = function getElement () {\n    return this.element;\n  };\n\n  Chart.prototype.getDataSource = function getDataSource () {\n    return this.dataSource;\n  };\n\n  Chart.prototype.getData = function getData () {\n    return this.data;\n  };\n\n  Chart.prototype.getOptions = function getOptions () {\n    return this.options;\n  };\n\n  Chart.prototype.getChartObject = function getChartObject () {\n    return this.chart;\n  };\n\n  Chart.prototype.getAdapter = function getAdapter () {\n    return this.adapter;\n  };\n\n  Chart.prototype.updateData = function updateData (dataSource, options) {\n    this.dataSource = dataSource;\n    if (options) {\n      this.__updateOptions(options);\n    }\n    fetchDataSource(this, dataSource, true);\n  };\n\n  Chart.prototype.setOptions = function setOptions (options) {\n    this.__updateOptions(options);\n    this.redraw();\n  };\n\n  Chart.prototype.redraw = function redraw () {\n    fetchDataSource(this, this.rawData);\n  };\n\n  Chart.prototype.refreshData = function refreshData () {\n    if (typeof this.dataSource === \"string\") {\n      // prevent browser from caching\n      var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n      var url = this.dataSource + sep + \"_=\" + (new Date()).getTime();\n      fetchDataSource(this, url);\n    } else if (typeof this.dataSource === \"function\") {\n      fetchDataSource(this, this.dataSource);\n    }\n  };\n\n  Chart.prototype.startRefresh = function startRefresh () {\n      var this$1$1 = this;\n\n    var refresh = this.options.refresh;\n\n    if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n      throw new Error(\"Data source must be a URL or callback for refresh\");\n    }\n\n    if (!this.intervalId) {\n      if (refresh) {\n        this.intervalId = setInterval( function () {\n          this$1$1.refreshData();\n        }, refresh * 1000);\n      } else {\n        throw new Error(\"No refresh interval\");\n      }\n    }\n  };\n\n  Chart.prototype.stopRefresh = function stopRefresh () {\n    if (this.intervalId) {\n      clearInterval(this.intervalId);\n      this.intervalId = null;\n    }\n  };\n\n  Chart.prototype.toImage = function toImage (download) {\n    if (this.adapter === \"chartjs\") {\n      if (download && download.background && download.background !== \"transparent\") {\n        // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n        var canvas = this.chart.canvas;\n        var ctx = this.chart.ctx;\n        var tmpCanvas = document.createElement(\"canvas\");\n        var tmpCtx = tmpCanvas.getContext(\"2d\");\n        tmpCanvas.width = ctx.canvas.width;\n        tmpCanvas.height = ctx.canvas.height;\n        tmpCtx.fillStyle = download.background;\n        tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n        tmpCtx.drawImage(canvas, 0, 0);\n        return tmpCanvas.toDataURL(\"image/png\");\n      } else {\n        return this.chart.toBase64Image();\n      }\n    } else {\n      throw new Error(\"Feature only available for Chart.js\");\n    }\n  };\n\n  Chart.prototype.destroy = function destroy () {\n    this.destroyed = true;\n    this.stopRefresh();\n\n    if (this.__adapterObject) {\n      this.__adapterObject.destroy(this);\n    }\n\n    if (this.__enterEvent) {\n      removeEvent(this.element, \"mouseover\", this.__enterEvent);\n    }\n\n    if (this.__leaveEvent) {\n      removeEvent(this.element, \"mouseout\", this.__leaveEvent);\n    }\n  };\n\n  Chart.prototype.__updateOptions = function __updateOptions (options) {\n    var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n    this.options = merge(Chartkick.options, options);\n    if (updateRefresh) {\n      this.stopRefresh();\n      this.startRefresh();\n    }\n  };\n\n  Chart.prototype.__render = function __render () {\n    this.data = this.__processData();\n    renderChart(this.__chartName(), this);\n  };\n\n  Chart.prototype.__config = function __config () {\n    return config;\n  };\n\n  var LineChart = /*@__PURE__*/(function (Chart) {\n    function LineChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) LineChart.__proto__ = Chart;\n    LineChart.prototype = Object.create( Chart && Chart.prototype );\n    LineChart.prototype.constructor = LineChart;\n\n    LineChart.prototype.__processData = function __processData () {\n      return processSeries(this);\n    };\n\n    LineChart.prototype.__chartName = function __chartName () {\n      return \"LineChart\";\n    };\n\n    return LineChart;\n  }(Chart));\n\n  var PieChart = /*@__PURE__*/(function (Chart) {\n    function PieChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) PieChart.__proto__ = Chart;\n    PieChart.prototype = Object.create( Chart && Chart.prototype );\n    PieChart.prototype.constructor = PieChart;\n\n    PieChart.prototype.__processData = function __processData () {\n      return processSimple(this);\n    };\n\n    PieChart.prototype.__chartName = function __chartName () {\n      return \"PieChart\";\n    };\n\n    return PieChart;\n  }(Chart));\n\n  var ColumnChart = /*@__PURE__*/(function (Chart) {\n    function ColumnChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) ColumnChart.__proto__ = Chart;\n    ColumnChart.prototype = Object.create( Chart && Chart.prototype );\n    ColumnChart.prototype.constructor = ColumnChart;\n\n    ColumnChart.prototype.__processData = function __processData () {\n      return processSeries(this, null, true);\n    };\n\n    ColumnChart.prototype.__chartName = function __chartName () {\n      return \"ColumnChart\";\n    };\n\n    return ColumnChart;\n  }(Chart));\n\n  var BarChart = /*@__PURE__*/(function (Chart) {\n    function BarChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) BarChart.__proto__ = Chart;\n    BarChart.prototype = Object.create( Chart && Chart.prototype );\n    BarChart.prototype.constructor = BarChart;\n\n    BarChart.prototype.__processData = function __processData () {\n      return processSeries(this, null, true);\n    };\n\n    BarChart.prototype.__chartName = function __chartName () {\n      return \"BarChart\";\n    };\n\n    return BarChart;\n  }(Chart));\n\n  var AreaChart = /*@__PURE__*/(function (Chart) {\n    function AreaChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) AreaChart.__proto__ = Chart;\n    AreaChart.prototype = Object.create( Chart && Chart.prototype );\n    AreaChart.prototype.constructor = AreaChart;\n\n    AreaChart.prototype.__processData = function __processData () {\n      return processSeries(this);\n    };\n\n    AreaChart.prototype.__chartName = function __chartName () {\n      return \"AreaChart\";\n    };\n\n    return AreaChart;\n  }(Chart));\n\n  var GeoChart = /*@__PURE__*/(function (Chart) {\n    function GeoChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) GeoChart.__proto__ = Chart;\n    GeoChart.prototype = Object.create( Chart && Chart.prototype );\n    GeoChart.prototype.constructor = GeoChart;\n\n    GeoChart.prototype.__processData = function __processData () {\n      return processSimple(this);\n    };\n\n    GeoChart.prototype.__chartName = function __chartName () {\n      return \"GeoChart\";\n    };\n\n    return GeoChart;\n  }(Chart));\n\n  var ScatterChart = /*@__PURE__*/(function (Chart) {\n    function ScatterChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) ScatterChart.__proto__ = Chart;\n    ScatterChart.prototype = Object.create( Chart && Chart.prototype );\n    ScatterChart.prototype.constructor = ScatterChart;\n\n    ScatterChart.prototype.__processData = function __processData () {\n      return processSeries(this, \"number\");\n    };\n\n    ScatterChart.prototype.__chartName = function __chartName () {\n      return \"ScatterChart\";\n    };\n\n    return ScatterChart;\n  }(Chart));\n\n  var BubbleChart = /*@__PURE__*/(function (Chart) {\n    function BubbleChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) BubbleChart.__proto__ = Chart;\n    BubbleChart.prototype = Object.create( Chart && Chart.prototype );\n    BubbleChart.prototype.constructor = BubbleChart;\n\n    BubbleChart.prototype.__processData = function __processData () {\n      return processSeries(this, \"bubble\");\n    };\n\n    BubbleChart.prototype.__chartName = function __chartName () {\n      return \"BubbleChart\";\n    };\n\n    return BubbleChart;\n  }(Chart));\n\n  var Timeline = /*@__PURE__*/(function (Chart) {\n    function Timeline () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) Timeline.__proto__ = Chart;\n    Timeline.prototype = Object.create( Chart && Chart.prototype );\n    Timeline.prototype.constructor = Timeline;\n\n    Timeline.prototype.__processData = function __processData () {\n      var i, data = this.rawData;\n      for (i = 0; i < data.length; i++) {\n        data[i][1] = toDate(data[i][1]);\n        data[i][2] = toDate(data[i][2]);\n      }\n      return data;\n    };\n\n    Timeline.prototype.__chartName = function __chartName () {\n      return \"Timeline\";\n    };\n\n    return Timeline;\n  }(Chart));\n\n  var Chartkick = {\n    LineChart: LineChart,\n    PieChart: PieChart,\n    ColumnChart: ColumnChart,\n    BarChart: BarChart,\n    AreaChart: AreaChart,\n    GeoChart: GeoChart,\n    ScatterChart: ScatterChart,\n    BubbleChart: BubbleChart,\n    Timeline: Timeline,\n    charts: {},\n    configure: function (options) {\n      for (var key in options) {\n        if (options.hasOwnProperty(key)) {\n          config[key] = options[key];\n        }\n      }\n    },\n    setDefaultOptions: function (opts) {\n      Chartkick.options = opts;\n    },\n    eachChart: function (callback) {\n      for (var chartId in Chartkick.charts) {\n        if (Chartkick.charts.hasOwnProperty(chartId)) {\n          callback(Chartkick.charts[chartId]);\n        }\n      }\n    },\n    destroyAll: function() {\n      for (var chartId in Chartkick.charts) {\n        if (Chartkick.charts.hasOwnProperty(chartId)) {\n          Chartkick.charts[chartId].destroy();\n          delete Chartkick.charts[chartId];\n        }\n      }\n    },\n    config: config,\n    options: {},\n    adapters: adapters,\n    addAdapter: addAdapter,\n    use: function(adapter) {\n      addAdapter(adapter);\n      return Chartkick;\n    }\n  };\n\n  // not ideal, but allows for simpler integration\n  if (typeof window !== \"undefined\" && !window.Chartkick) {\n    window.Chartkick = Chartkick;\n\n    // clean up previous charts before Turbolinks loads new page\n    document.addEventListener(\"turbolinks:before-render\", function() {\n      if (config.autoDestroy !== false) {\n        Chartkick.destroyAll();\n      }\n    });\n    document.addEventListener(\"turbo:before-render\", function() {\n      if (config.autoDestroy !== false) {\n        Chartkick.destroyAll();\n      }\n    });\n\n    // use setTimeout so charting library can come later in same JS file\n    setTimeout(function() {\n      window.dispatchEvent(new Event(\"chartkick:load\"));\n    }, 0);\n  }\n\n  // backwards compatibility for esm require\n  Chartkick.default = Chartkick;\n\n  return Chartkick;\n\n}));\n", "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=n(1),a=(o(r),n(6)),u=o(a),c=n(7),s=o(c),f=n(8),d=o(f),l=n(9),p=o(l),m=n(10),b=o(m),v=n(11),y=o(v),g=n(14),h=o(g),w=[],k=!1,x={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,startEvent:\"DOMContentLoaded\",throttleDelay:99,debounceDelay:50,disableMutationObserver:!1},j=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n      aos: MutationObserver is not supported on this browser,\\n      code mutations observing has been disabled.\\n      You may have to call \"refreshHard()\" by yourself.\\n    '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;t<e.length;t+=1){if(o=e[t],o.dataset&&o.dataset.aos)return!0;if(i=o.children&&n(o.children))return!0}return!1}function o(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}function i(){return!!o()}function r(e,t){var n=window.document,i=o(),r=new i(a);u=t,r.observe(n.documentElement,{childList:!0,subtree:!0,removedNodes:!0})}function a(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),o=Array.prototype.slice.call(e.removedNodes),i=t.concat(o);if(n(i))return u()})}Object.defineProperty(t,\"__esModule\",{value:!0});var u=function(){};t.default={isSupported:i,ready:r}},function(e,t){\"use strict\";function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function o(){return navigator.userAgent||navigator.vendor||window.opera||\"\"}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),r=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,a=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,u=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,c=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,s=function(){function e(){n(this,e)}return i(e,[{key:\"phone\",value:function(){var e=o();return!(!r.test(e)&&!a.test(e.substr(0,4)))}},{key:\"mobile\",value:function(){var e=o();return!(!u.test(e)&&!c.test(e.substr(0,4)))}},{key:\"tablet\",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new s},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e,t,n){var o=e.node.getAttribute(\"data-aos-once\");t>e.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});", "export default {\n  logger: typeof console !== \"undefined\" ? console : undefined,\n  WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordMessage() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\",\n    \"remote\": \"remote\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  triedToReconnect() {\n    return this.monitor.reconnectAttempts > 0\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    this.monitor.recordMessage()\n    switch (type) {\n      case message_types.welcome:\n        if (this.triedToReconnect()) {\n          this.reconnectAttempted = true\n        }\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return null\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        if (this.reconnectAttempted) {\n          this.reconnectAttempted = false\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n        } else {\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n        }\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n    this.subprotocols = []\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n\n  addSubProtocol(subprotocol) {\n    this.subprotocols = [...this.subprotocols, subprotocol]\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.monthSelectPlugin = factory());\n}(this, (function () { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\n\n    var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n\n    function clearNode(node) {\n        while (node.firstChild)\n            node.removeChild(node.firstChild);\n    }\n    function getEventTarget(event) {\n        try {\n            if (typeof event.composedPath === \"function\") {\n                var path = event.composedPath();\n                return path[0];\n            }\n            return event.target;\n        }\n        catch (error) {\n            return event.target;\n        }\n    }\n\n    var defaultConfig = {\n        shorthand: false,\n        dateFormat: \"F Y\",\n        altFormat: \"F Y\",\n        theme: \"light\",\n    };\n    function monthSelectPlugin(pluginConfig) {\n        var config = __assign(__assign({}, defaultConfig), pluginConfig);\n        return function (fp) {\n            fp.config.dateFormat = config.dateFormat;\n            fp.config.altFormat = config.altFormat;\n            var self = { monthsContainer: null };\n            function clearUnnecessaryDOMElements() {\n                if (!fp.rContainer)\n                    return;\n                clearNode(fp.rContainer);\n                for (var index = 0; index < fp.monthElements.length; index++) {\n                    var element = fp.monthElements[index];\n                    if (!element.parentNode)\n                        continue;\n                    element.parentNode.removeChild(element);\n                }\n            }\n            function build() {\n                if (!fp.rContainer)\n                    return;\n                self.monthsContainer = fp._createElement(\"div\", \"flatpickr-monthSelect-months\");\n                self.monthsContainer.tabIndex = -1;\n                buildMonths();\n                fp.rContainer.appendChild(self.monthsContainer);\n                fp.calendarContainer.classList.add(\"flatpickr-monthSelect-theme-\" + config.theme);\n            }\n            function buildMonths() {\n                if (!self.monthsContainer)\n                    return;\n                clearNode(self.monthsContainer);\n                var frag = document.createDocumentFragment();\n                for (var i = 0; i < 12; i++) {\n                    var month = fp.createDay(\"flatpickr-monthSelect-month\", new Date(fp.currentYear, i), 0, i);\n                    if (month.dateObj.getMonth() === new Date().getMonth() &&\n                        month.dateObj.getFullYear() === new Date().getFullYear())\n                        month.classList.add(\"today\");\n                    month.textContent = monthToStr(i, config.shorthand, fp.l10n);\n                    month.addEventListener(\"click\", selectMonth);\n                    frag.appendChild(month);\n                }\n                self.monthsContainer.appendChild(frag);\n                if (fp.config.minDate &&\n                    fp.currentYear === fp.config.minDate.getFullYear())\n                    fp.prevMonthNav.classList.add(\"flatpickr-disabled\");\n                else\n                    fp.prevMonthNav.classList.remove(\"flatpickr-disabled\");\n                if (fp.config.maxDate &&\n                    fp.currentYear === fp.config.maxDate.getFullYear())\n                    fp.nextMonthNav.classList.add(\"flatpickr-disabled\");\n                else\n                    fp.nextMonthNav.classList.remove(\"flatpickr-disabled\");\n            }\n            function bindEvents() {\n                fp._bind(fp.prevMonthNav, \"click\", function (e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    fp.changeYear(fp.currentYear - 1);\n                    selectYear();\n                    buildMonths();\n                });\n                fp._bind(fp.nextMonthNav, \"click\", function (e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    fp.changeYear(fp.currentYear + 1);\n                    selectYear();\n                    buildMonths();\n                });\n                fp._bind(self.monthsContainer, \"mouseover\", function (e) {\n                    if (fp.config.mode === \"range\")\n                        fp.onMouseOver(getEventTarget(e), \"flatpickr-monthSelect-month\");\n                });\n            }\n            function setCurrentlySelected() {\n                if (!fp.rContainer)\n                    return;\n                if (!fp.selectedDates.length)\n                    return;\n                var currentlySelected = fp.rContainer.querySelectorAll(\".flatpickr-monthSelect-month.selected\");\n                for (var index = 0; index < currentlySelected.length; index++) {\n                    currentlySelected[index].classList.remove(\"selected\");\n                }\n                var targetMonth = fp.selectedDates[0].getMonth();\n                var month = fp.rContainer.querySelector(\".flatpickr-monthSelect-month:nth-child(\" + (targetMonth + 1) + \")\");\n                if (month) {\n                    month.classList.add(\"selected\");\n                }\n            }\n            function selectYear() {\n                var selectedDate = fp.selectedDates[0];\n                if (selectedDate) {\n                    selectedDate = new Date(selectedDate);\n                    selectedDate.setFullYear(fp.currentYear);\n                    if (fp.config.minDate && selectedDate < fp.config.minDate) {\n                        selectedDate = fp.config.minDate;\n                    }\n                    if (fp.config.maxDate && selectedDate > fp.config.maxDate) {\n                        selectedDate = fp.config.maxDate;\n                    }\n                    fp.currentYear = selectedDate.getFullYear();\n                }\n                fp.currentYearElement.value = String(fp.currentYear);\n                if (fp.rContainer) {\n                    var months = fp.rContainer.querySelectorAll(\".flatpickr-monthSelect-month\");\n                    months.forEach(function (month) {\n                        month.dateObj.setFullYear(fp.currentYear);\n                        if ((fp.config.minDate && month.dateObj < fp.config.minDate) ||\n                            (fp.config.maxDate && month.dateObj > fp.config.maxDate)) {\n                            month.classList.add(\"flatpickr-disabled\");\n                        }\n                        else {\n                            month.classList.remove(\"flatpickr-disabled\");\n                        }\n                    });\n                }\n                setCurrentlySelected();\n            }\n            function selectMonth(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                var eventTarget = getEventTarget(e);\n                if (!(eventTarget instanceof Element))\n                    return;\n                if (eventTarget.classList.contains(\"flatpickr-disabled\"))\n                    return;\n                if (eventTarget.classList.contains(\"notAllowed\"))\n                    return; // necessary??\n                setMonth(eventTarget.dateObj);\n                if (fp.config.closeOnSelect) {\n                    var single = fp.config.mode === \"single\";\n                    var range = fp.config.mode === \"range\" && fp.selectedDates.length === 2;\n                    if (single || range)\n                        fp.close();\n                }\n            }\n            function setMonth(date) {\n                var selectedDate = new Date(fp.currentYear, date.getMonth(), date.getDate());\n                var selectedDates = [];\n                switch (fp.config.mode) {\n                    case \"single\":\n                        selectedDates = [selectedDate];\n                        break;\n                    case \"multiple\":\n                        selectedDates.push(selectedDate);\n                        break;\n                    case \"range\":\n                        if (fp.selectedDates.length === 2) {\n                            selectedDates = [selectedDate];\n                        }\n                        else {\n                            selectedDates = fp.selectedDates.concat([selectedDate]);\n                            selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n                        }\n                        break;\n                }\n                fp.setDate(selectedDates, true);\n                setCurrentlySelected();\n            }\n            var shifts = {\n                37: -1,\n                39: 1,\n                40: 3,\n                38: -3,\n            };\n            function onKeyDown(_, __, ___, e) {\n                var shouldMove = shifts[e.keyCode] !== undefined;\n                if (!shouldMove && e.keyCode !== 13) {\n                    return;\n                }\n                if (!fp.rContainer || !self.monthsContainer)\n                    return;\n                var currentlySelected = fp.rContainer.querySelector(\".flatpickr-monthSelect-month.selected\");\n                var index = Array.prototype.indexOf.call(self.monthsContainer.children, document.activeElement);\n                if (index === -1) {\n                    var target = currentlySelected || self.monthsContainer.firstElementChild;\n                    target.focus();\n                    index = target.$i;\n                }\n                if (shouldMove) {\n                    self.monthsContainer.children[(12 + index + shifts[e.keyCode]) % 12].focus();\n                }\n                else if (e.keyCode === 13 &&\n                    self.monthsContainer.contains(document.activeElement)) {\n                    setMonth(document.activeElement.dateObj);\n                }\n            }\n            function closeHook() {\n                var _a;\n                if (((_a = fp.config) === null || _a === void 0 ? void 0 : _a.mode) === \"range\" && fp.selectedDates.length === 1)\n                    fp.clear(false);\n                if (!fp.selectedDates.length)\n                    buildMonths();\n            }\n            // Help the prev/next year nav honor config.minDate (see 3fa5a69)\n            function stubCurrentMonth() {\n                config._stubbedCurrentMonth = fp._initialDate.getMonth();\n                fp._initialDate.setMonth(config._stubbedCurrentMonth);\n                fp.currentMonth = config._stubbedCurrentMonth;\n            }\n            function unstubCurrentMonth() {\n                if (!config._stubbedCurrentMonth)\n                    return;\n                fp._initialDate.setMonth(config._stubbedCurrentMonth);\n                fp.currentMonth = config._stubbedCurrentMonth;\n                delete config._stubbedCurrentMonth;\n            }\n            function destroyPluginInstance() {\n                if (self.monthsContainer !== null) {\n                    var months = self.monthsContainer.querySelectorAll(\".flatpickr-monthSelect-month\");\n                    for (var index = 0; index < months.length; index++) {\n                        months[index].removeEventListener(\"click\", selectMonth);\n                    }\n                }\n            }\n            return {\n                onParseConfig: function () {\n                    fp.config.enableTime = false;\n                },\n                onValueUpdate: setCurrentlySelected,\n                onKeyDown: onKeyDown,\n                onReady: [\n                    stubCurrentMonth,\n                    clearUnnecessaryDOMElements,\n                    build,\n                    bindEvents,\n                    setCurrentlySelected,\n                    function () {\n                        fp.config.onClose.push(closeHook);\n                        fp.loadedPlugins.push(\"monthSelect\");\n                    },\n                ],\n                onDestroy: [\n                    unstubCurrentMonth,\n                    destroyPluginInstance,\n                    function () {\n                        fp.config.onClose = fp.config.onClose.filter(function (hook) { return hook !== closeHook; });\n                    },\n                ],\n            };\n        };\n    }\n\n    return monthSelectPlugin;\n\n})));\n", ".flatpickr-monthSelect-months {\n  margin: 10px 1px 3px 1px;\n  flex-wrap: wrap;\n}\n\n.flatpickr-monthSelect-month {\n  background: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  color: #393939;\n  cursor: pointer;\n  display: inline-block;\n  font-weight: 400;\n  margin: 0.5px;\n  justify-content: center;\n  padding: 10px;\n  position: relative;\n  -webkit-box-pack: center;\n  -webkit-justify-content: center;\n  -ms-flex-pack: center;\n  text-align: center;\n  width: 33%;\n}\n\n.flatpickr-monthSelect-month.flatpickr-disabled {\n\tcolor: #eee;\n}\n\n.flatpickr-monthSelect-month.flatpickr-disabled:hover,\n.flatpickr-monthSelect-month.flatpickr-disabled:focus {\n\tcursor: not-allowed;\n\tbackground: none !important;\n}\n\n.flatpickr-monthSelect-theme-dark {\n  background: #3f4458;\n}\n\n.flatpickr-monthSelect-theme-dark .flatpickr-current-month input.cur-year {\n  color: #fff;\n}\n\n.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-prev-month,\n.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-next-month {\n  color: #fff;\n  fill: #fff;\n}\n\n.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month {\n  color: rgba(255, 255, 255, 0.95);\n}\n\n.flatpickr-monthSelect-month.today {\n  border-color: #959ea9;\n}\n\n.flatpickr-monthSelect-month.inRange,\n.flatpickr-monthSelect-month.inRange.today,\n.flatpickr-monthSelect-month:hover,\n.flatpickr-monthSelect-month:focus {\n  background: #e6e6e6;\n  cursor: pointer;\n  outline: 0;\n  border-color: #e6e6e6;\n}\n\n.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.inRange,\n.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:hover,\n.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:focus {\n  background: #646c8c;\n  border-color: #646c8c;\n}\n\n.flatpickr-monthSelect-month.today:hover,\n.flatpickr-monthSelect-month.today:focus {\n  background: #959ea9;\n  border-color: #959ea9;\n  color: #fff;\n}\n\n.flatpickr-monthSelect-month.selected,\n.flatpickr-monthSelect-month.startRange,\n.flatpickr-monthSelect-month.endRange {\n  background-color: #569ff7;\n  box-shadow: none;\n  color: #fff;\n  border-color: #569ff7;\n}\n\n.flatpickr-monthSelect-month.startRange {\n  border-radius: 50px 0 0 50px;\n}\n\n.flatpickr-monthSelect-month.endRange {\n  border-radius: 0 50px 50px 0;\n}\n\n.flatpickr-monthSelect-month.startRange.endRange {\n  border-radius: 50px;\n}\n\n.flatpickr-monthSelect-month.inRange {\n  border-radius: 0;\n  box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\n}\n\n.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.selected,\n.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.startRange,\n.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.endRange {\n  background: #80cbc4;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n  color: #fff;\n  border-color: #80cbc4;\n}\n", "(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.rangePlugin = factory());\n}(this, (function () { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n\r\n    function __spreadArrays() {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    }\n\n    function rangePlugin(config) {\n        if (config === void 0) { config = {}; }\n        return function (fp) {\n            var dateFormat = \"\", secondInput, _secondInputFocused, _prevDates;\n            var createSecondInput = function () {\n                if (config.input) {\n                    secondInput =\n                        config.input instanceof Element\n                            ? config.input\n                            : window.document.querySelector(config.input);\n                    if (!secondInput) {\n                        fp.config.errorHandler(new Error(\"Invalid input element specified\"));\n                        return;\n                    }\n                    if (fp.config.wrap) {\n                        secondInput = secondInput.querySelector(\"[data-input]\");\n                    }\n                }\n                else {\n                    secondInput = fp._input.cloneNode();\n                    secondInput.removeAttribute(\"id\");\n                    secondInput._flatpickr = undefined;\n                }\n                if (secondInput.value) {\n                    var parsedDate = fp.parseDate(secondInput.value);\n                    if (parsedDate)\n                        fp.selectedDates.push(parsedDate);\n                }\n                secondInput.setAttribute(\"data-fp-omit\", \"\");\n                if (fp.config.clickOpens) {\n                    fp._bind(secondInput, [\"focus\", \"click\"], function () {\n                        if (fp.selectedDates[1]) {\n                            fp.latestSelectedDateObj = fp.selectedDates[1];\n                            fp._setHoursFromDate(fp.selectedDates[1]);\n                            fp.jumpToDate(fp.selectedDates[1]);\n                        }\n                        _secondInputFocused = true;\n                        fp.isOpen = false;\n                        fp.open(undefined, config.position === \"left\" ? fp._input : secondInput);\n                    });\n                    fp._bind(fp._input, [\"focus\", \"click\"], function (e) {\n                        e.preventDefault();\n                        fp.isOpen = false;\n                        fp.open();\n                    });\n                }\n                if (fp.config.allowInput)\n                    fp._bind(secondInput, \"keydown\", function (e) {\n                        if (e.key === \"Enter\") {\n                            fp.setDate([fp.selectedDates[0], secondInput.value], true, dateFormat);\n                            secondInput.click();\n                        }\n                    });\n                if (!config.input)\n                    fp._input.parentNode &&\n                        fp._input.parentNode.insertBefore(secondInput, fp._input.nextSibling);\n            };\n            var plugin = {\n                onParseConfig: function () {\n                    fp.config.mode = \"range\";\n                    dateFormat = fp.config.altInput\n                        ? fp.config.altFormat\n                        : fp.config.dateFormat;\n                },\n                onReady: function () {\n                    createSecondInput();\n                    fp.config.ignoredFocusElements.push(secondInput);\n                    if (fp.config.allowInput) {\n                        fp._input.removeAttribute(\"readonly\");\n                        secondInput.removeAttribute(\"readonly\");\n                    }\n                    else {\n                        secondInput.setAttribute(\"readonly\", \"readonly\");\n                    }\n                    fp._bind(fp._input, \"focus\", function () {\n                        fp.latestSelectedDateObj = fp.selectedDates[0];\n                        fp._setHoursFromDate(fp.selectedDates[0]);\n                        _secondInputFocused = false;\n                        fp.jumpToDate(fp.selectedDates[0]);\n                    });\n                    if (fp.config.allowInput)\n                        fp._bind(fp._input, \"keydown\", function (e) {\n                            if (e.key === \"Enter\")\n                                fp.setDate([fp._input.value, fp.selectedDates[1]], true, dateFormat);\n                        });\n                    fp.setDate(fp.selectedDates, false);\n                    plugin.onValueUpdate(fp.selectedDates);\n                    fp.loadedPlugins.push(\"range\");\n                },\n                onPreCalendarPosition: function () {\n                    if (_secondInputFocused) {\n                        fp._positionElement = secondInput;\n                        setTimeout(function () {\n                            fp._positionElement = fp._input;\n                        }, 0);\n                    }\n                },\n                onChange: function () {\n                    if (!fp.selectedDates.length) {\n                        setTimeout(function () {\n                            if (fp.selectedDates.length)\n                                return;\n                            secondInput.value = \"\";\n                            _prevDates = [];\n                        }, 10);\n                    }\n                    if (_secondInputFocused) {\n                        setTimeout(function () {\n                            secondInput.focus();\n                        }, 0);\n                    }\n                },\n                onDestroy: function () {\n                    if (!config.input)\n                        secondInput.parentNode &&\n                            secondInput.parentNode.removeChild(secondInput);\n                },\n                onValueUpdate: function (selDates) {\n                    var _a, _b, _c;\n                    if (!secondInput)\n                        return;\n                    _prevDates =\n                        !_prevDates || selDates.length >= _prevDates.length\n                            ? __spreadArrays(selDates) : _prevDates;\n                    if (_prevDates.length > selDates.length) {\n                        var newSelectedDate = selDates[0];\n                        var newDates = _secondInputFocused\n                            ? [_prevDates[0], newSelectedDate]\n                            : [newSelectedDate, _prevDates[1]];\n                        if (newDates[0].getTime() > newDates[1].getTime()) {\n                            if (_secondInputFocused) {\n                                newDates[0] = newDates[1];\n                            }\n                            else {\n                                newDates[1] = newDates[0];\n                            }\n                        }\n                        fp.setDate(newDates, false);\n                        _prevDates = __spreadArrays(newDates);\n                    }\n                    _a = fp.selectedDates.map(function (d) { return fp.formatDate(d, dateFormat); }), _b = _a[0], fp._input.value = _b === void 0 ? \"\" : _b, _c = _a[1], secondInput.value = _c === void 0 ? \"\" : _c;\n                },\n            };\n            return plugin;\n        };\n    }\n\n    return rangePlugin;\n\n})));\n", ".flatpickr-calendar {\n  background: transparent;\n  opacity: 0;\n  display: none;\n  text-align: center;\n  visibility: hidden;\n  padding: 0;\n  -webkit-animation: none;\n          animation: none;\n  direction: ltr;\n  border: 0;\n  font-size: 14px;\n  line-height: 24px;\n  border-radius: 5px;\n  position: absolute;\n  width: 307.875px;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  background: #fff;\n  -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\n          box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\n}\n.flatpickr-calendar.open,\n.flatpickr-calendar.inline {\n  opacity: 1;\n  max-height: 640px;\n  visibility: visible;\n}\n.flatpickr-calendar.open {\n  display: inline-block;\n  z-index: 99999;\n}\n.flatpickr-calendar.animate.open {\n  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\n          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\n}\n.flatpickr-calendar.inline {\n  display: block;\n  position: relative;\n  top: 2px;\n}\n.flatpickr-calendar.static {\n  position: absolute;\n  top: calc(100% + 2px);\n}\n.flatpickr-calendar.static.open {\n  z-index: 999;\n  display: block;\n}\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {\n  -webkit-box-shadow: none !important;\n          box-shadow: none !important;\n}\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {\n  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\n          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\n}\n.flatpickr-calendar .hasWeeks .dayContainer,\n.flatpickr-calendar .hasTime .dayContainer {\n  border-bottom: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.flatpickr-calendar .hasWeeks .dayContainer {\n  border-left: 0;\n}\n.flatpickr-calendar.hasTime .flatpickr-time {\n  height: 40px;\n  border-top: 1px solid #e6e6e6;\n}\n.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {\n  height: auto;\n}\n.flatpickr-calendar:before,\n.flatpickr-calendar:after {\n  position: absolute;\n  display: block;\n  pointer-events: none;\n  border: solid transparent;\n  content: '';\n  height: 0;\n  width: 0;\n  left: 22px;\n}\n.flatpickr-calendar.rightMost:before,\n.flatpickr-calendar.arrowRight:before,\n.flatpickr-calendar.rightMost:after,\n.flatpickr-calendar.arrowRight:after {\n  left: auto;\n  right: 22px;\n}\n.flatpickr-calendar.arrowCenter:before,\n.flatpickr-calendar.arrowCenter:after {\n  left: 50%;\n  right: 50%;\n}\n.flatpickr-calendar:before {\n  border-width: 5px;\n  margin: 0 -5px;\n}\n.flatpickr-calendar:after {\n  border-width: 4px;\n  margin: 0 -4px;\n}\n.flatpickr-calendar.arrowTop:before,\n.flatpickr-calendar.arrowTop:after {\n  bottom: 100%;\n}\n.flatpickr-calendar.arrowTop:before {\n  border-bottom-color: #e6e6e6;\n}\n.flatpickr-calendar.arrowTop:after {\n  border-bottom-color: #fff;\n}\n.flatpickr-calendar.arrowBottom:before,\n.flatpickr-calendar.arrowBottom:after {\n  top: 100%;\n}\n.flatpickr-calendar.arrowBottom:before {\n  border-top-color: #e6e6e6;\n}\n.flatpickr-calendar.arrowBottom:after {\n  border-top-color: #fff;\n}\n.flatpickr-calendar:focus {\n  outline: 0;\n}\n.flatpickr-wrapper {\n  position: relative;\n  display: inline-block;\n}\n.flatpickr-months {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n}\n.flatpickr-months .flatpickr-month {\n  background: transparent;\n  color: rgba(0,0,0,0.9);\n  fill: rgba(0,0,0,0.9);\n  height: 34px;\n  line-height: 1;\n  text-align: center;\n  position: relative;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  overflow: hidden;\n  -webkit-box-flex: 1;\n  -webkit-flex: 1;\n      -ms-flex: 1;\n          flex: 1;\n}\n.flatpickr-months .flatpickr-prev-month,\n.flatpickr-months .flatpickr-next-month {\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  text-decoration: none;\n  cursor: pointer;\n  position: absolute;\n  top: 0;\n  height: 34px;\n  padding: 10px;\n  z-index: 3;\n  color: rgba(0,0,0,0.9);\n  fill: rgba(0,0,0,0.9);\n}\n.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,\n.flatpickr-months .flatpickr-next-month.flatpickr-disabled {\n  display: none;\n}\n.flatpickr-months .flatpickr-prev-month i,\n.flatpickr-months .flatpickr-next-month i {\n  position: relative;\n}\n.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,\n.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {\n/*\n      /*rtl:begin:ignore*/\n/*\n      */\n  left: 0;\n/*\n      /*rtl:end:ignore*/\n/*\n      */\n}\n/*\n      /*rtl:begin:ignore*/\n/*\n      /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,\n.flatpickr-months .flatpickr-next-month.flatpickr-next-month {\n/*\n      /*rtl:begin:ignore*/\n/*\n      */\n  right: 0;\n/*\n      /*rtl:end:ignore*/\n/*\n      */\n}\n/*\n      /*rtl:begin:ignore*/\n/*\n      /*rtl:end:ignore*/\n.flatpickr-months .flatpickr-prev-month:hover,\n.flatpickr-months .flatpickr-next-month:hover {\n  color: #959ea9;\n}\n.flatpickr-months .flatpickr-prev-month:hover svg,\n.flatpickr-months .flatpickr-next-month:hover svg {\n  fill: #f64747;\n}\n.flatpickr-months .flatpickr-prev-month svg,\n.flatpickr-months .flatpickr-next-month svg {\n  width: 14px;\n  height: 14px;\n}\n.flatpickr-months .flatpickr-prev-month svg path,\n.flatpickr-months .flatpickr-next-month svg path {\n  -webkit-transition: fill 0.1s;\n  transition: fill 0.1s;\n  fill: inherit;\n}\n.numInputWrapper {\n  position: relative;\n  height: auto;\n}\n.numInputWrapper input,\n.numInputWrapper span {\n  display: inline-block;\n}\n.numInputWrapper input {\n  width: 100%;\n}\n.numInputWrapper input::-ms-clear {\n  display: none;\n}\n.numInputWrapper input::-webkit-outer-spin-button,\n.numInputWrapper input::-webkit-inner-spin-button {\n  margin: 0;\n  -webkit-appearance: none;\n}\n.numInputWrapper span {\n  position: absolute;\n  right: 0;\n  width: 14px;\n  padding: 0 4px 0 2px;\n  height: 50%;\n  line-height: 50%;\n  opacity: 0;\n  cursor: pointer;\n  border: 1px solid rgba(57,57,57,0.15);\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n}\n.numInputWrapper span:hover {\n  background: rgba(0,0,0,0.1);\n}\n.numInputWrapper span:active {\n  background: rgba(0,0,0,0.2);\n}\n.numInputWrapper span:after {\n  display: block;\n  content: \"\";\n  position: absolute;\n}\n.numInputWrapper span.arrowUp {\n  top: 0;\n  border-bottom: 0;\n}\n.numInputWrapper span.arrowUp:after {\n  border-left: 4px solid transparent;\n  border-right: 4px solid transparent;\n  border-bottom: 4px solid rgba(57,57,57,0.6);\n  top: 26%;\n}\n.numInputWrapper span.arrowDown {\n  top: 50%;\n}\n.numInputWrapper span.arrowDown:after {\n  border-left: 4px solid transparent;\n  border-right: 4px solid transparent;\n  border-top: 4px solid rgba(57,57,57,0.6);\n  top: 40%;\n}\n.numInputWrapper span svg {\n  width: inherit;\n  height: auto;\n}\n.numInputWrapper span svg path {\n  fill: rgba(0,0,0,0.5);\n}\n.numInputWrapper:hover {\n  background: rgba(0,0,0,0.05);\n}\n.numInputWrapper:hover span {\n  opacity: 1;\n}\n.flatpickr-current-month {\n  font-size: 135%;\n  line-height: inherit;\n  font-weight: 300;\n  color: inherit;\n  position: absolute;\n  width: 75%;\n  left: 12.5%;\n  padding: 7.48px 0 0 0;\n  line-height: 1;\n  height: 34px;\n  display: inline-block;\n  text-align: center;\n  -webkit-transform: translate3d(0px, 0px, 0px);\n          transform: translate3d(0px, 0px, 0px);\n}\n.flatpickr-current-month span.cur-month {\n  font-family: inherit;\n  font-weight: 700;\n  color: inherit;\n  display: inline-block;\n  margin-left: 0.5ch;\n  padding: 0;\n}\n.flatpickr-current-month span.cur-month:hover {\n  background: rgba(0,0,0,0.05);\n}\n.flatpickr-current-month .numInputWrapper {\n  width: 6ch;\n  width: 7ch\\0;\n  display: inline-block;\n}\n.flatpickr-current-month .numInputWrapper span.arrowUp:after {\n  border-bottom-color: rgba(0,0,0,0.9);\n}\n.flatpickr-current-month .numInputWrapper span.arrowDown:after {\n  border-top-color: rgba(0,0,0,0.9);\n}\n.flatpickr-current-month input.cur-year {\n  background: transparent;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  color: inherit;\n  cursor: text;\n  padding: 0 0 0 0.5ch;\n  margin: 0;\n  display: inline-block;\n  font-size: inherit;\n  font-family: inherit;\n  font-weight: 300;\n  line-height: inherit;\n  height: auto;\n  border: 0;\n  border-radius: 0;\n  vertical-align: initial;\n  -webkit-appearance: textfield;\n  -moz-appearance: textfield;\n  appearance: textfield;\n}\n.flatpickr-current-month input.cur-year:focus {\n  outline: 0;\n}\n.flatpickr-current-month input.cur-year[disabled],\n.flatpickr-current-month input.cur-year[disabled]:hover {\n  font-size: 100%;\n  color: rgba(0,0,0,0.5);\n  background: transparent;\n  pointer-events: none;\n}\n.flatpickr-current-month .flatpickr-monthDropdown-months {\n  appearance: menulist;\n  background: transparent;\n  border: none;\n  border-radius: 0;\n  box-sizing: border-box;\n  color: inherit;\n  cursor: pointer;\n  font-size: inherit;\n  font-family: inherit;\n  font-weight: 300;\n  height: auto;\n  line-height: inherit;\n  margin: -1px 0 0 0;\n  outline: none;\n  padding: 0 0 0 0.5ch;\n  position: relative;\n  vertical-align: initial;\n  -webkit-box-sizing: border-box;\n  -webkit-appearance: menulist;\n  -moz-appearance: menulist;\n  width: auto;\n}\n.flatpickr-current-month .flatpickr-monthDropdown-months:focus,\n.flatpickr-current-month .flatpickr-monthDropdown-months:active {\n  outline: none;\n}\n.flatpickr-current-month .flatpickr-monthDropdown-months:hover {\n  background: rgba(0,0,0,0.05);\n}\n.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {\n  background-color: transparent;\n  outline: none;\n  padding: 0;\n}\n.flatpickr-weekdays {\n  background: transparent;\n  text-align: center;\n  overflow: hidden;\n  width: 100%;\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n      -ms-flex-align: center;\n          align-items: center;\n  height: 28px;\n}\n.flatpickr-weekdays .flatpickr-weekdaycontainer {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-flex: 1;\n  -webkit-flex: 1;\n      -ms-flex: 1;\n          flex: 1;\n}\nspan.flatpickr-weekday {\n  cursor: default;\n  font-size: 90%;\n  background: transparent;\n  color: rgba(0,0,0,0.54);\n  line-height: 1;\n  margin: 0;\n  text-align: center;\n  display: block;\n  -webkit-box-flex: 1;\n  -webkit-flex: 1;\n      -ms-flex: 1;\n          flex: 1;\n  font-weight: bolder;\n}\n.dayContainer,\n.flatpickr-weeks {\n  padding: 1px 0 0 0;\n}\n.flatpickr-days {\n  position: relative;\n  overflow: hidden;\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: start;\n  -webkit-align-items: flex-start;\n      -ms-flex-align: start;\n          align-items: flex-start;\n  width: 307.875px;\n}\n.flatpickr-days:focus {\n  outline: 0;\n}\n.dayContainer {\n  padding: 0;\n  outline: 0;\n  text-align: left;\n  width: 307.875px;\n  min-width: 307.875px;\n  max-width: 307.875px;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  display: inline-block;\n  display: -ms-flexbox;\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: flex;\n  -webkit-flex-wrap: wrap;\n          flex-wrap: wrap;\n  -ms-flex-wrap: wrap;\n  -ms-flex-pack: justify;\n  -webkit-justify-content: space-around;\n          justify-content: space-around;\n  -webkit-transform: translate3d(0px, 0px, 0px);\n          transform: translate3d(0px, 0px, 0px);\n  opacity: 1;\n}\n.dayContainer + .dayContainer {\n  -webkit-box-shadow: -1px 0 0 #e6e6e6;\n          box-shadow: -1px 0 0 #e6e6e6;\n}\n.flatpickr-day {\n  background: none;\n  border: 1px solid transparent;\n  border-radius: 150px;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  color: #393939;\n  cursor: pointer;\n  font-weight: 400;\n  width: 14.2857143%;\n  -webkit-flex-basis: 14.2857143%;\n      -ms-flex-preferred-size: 14.2857143%;\n          flex-basis: 14.2857143%;\n  max-width: 39px;\n  height: 39px;\n  line-height: 39px;\n  margin: 0;\n  display: inline-block;\n  position: relative;\n  -webkit-box-pack: center;\n  -webkit-justify-content: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  text-align: center;\n}\n.flatpickr-day.inRange,\n.flatpickr-day.prevMonthDay.inRange,\n.flatpickr-day.nextMonthDay.inRange,\n.flatpickr-day.today.inRange,\n.flatpickr-day.prevMonthDay.today.inRange,\n.flatpickr-day.nextMonthDay.today.inRange,\n.flatpickr-day:hover,\n.flatpickr-day.prevMonthDay:hover,\n.flatpickr-day.nextMonthDay:hover,\n.flatpickr-day:focus,\n.flatpickr-day.prevMonthDay:focus,\n.flatpickr-day.nextMonthDay:focus {\n  cursor: pointer;\n  outline: 0;\n  background: #e6e6e6;\n  border-color: #e6e6e6;\n}\n.flatpickr-day.today {\n  border-color: #959ea9;\n}\n.flatpickr-day.today:hover,\n.flatpickr-day.today:focus {\n  border-color: #959ea9;\n  background: #959ea9;\n  color: #fff;\n}\n.flatpickr-day.selected,\n.flatpickr-day.startRange,\n.flatpickr-day.endRange,\n.flatpickr-day.selected.inRange,\n.flatpickr-day.startRange.inRange,\n.flatpickr-day.endRange.inRange,\n.flatpickr-day.selected:focus,\n.flatpickr-day.startRange:focus,\n.flatpickr-day.endRange:focus,\n.flatpickr-day.selected:hover,\n.flatpickr-day.startRange:hover,\n.flatpickr-day.endRange:hover,\n.flatpickr-day.selected.prevMonthDay,\n.flatpickr-day.startRange.prevMonthDay,\n.flatpickr-day.endRange.prevMonthDay,\n.flatpickr-day.selected.nextMonthDay,\n.flatpickr-day.startRange.nextMonthDay,\n.flatpickr-day.endRange.nextMonthDay {\n  background: #569ff7;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  color: #fff;\n  border-color: #569ff7;\n}\n.flatpickr-day.selected.startRange,\n.flatpickr-day.startRange.startRange,\n.flatpickr-day.endRange.startRange {\n  border-radius: 50px 0 0 50px;\n}\n.flatpickr-day.selected.endRange,\n.flatpickr-day.startRange.endRange,\n.flatpickr-day.endRange.endRange {\n  border-radius: 0 50px 50px 0;\n}\n.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),\n.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),\n.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {\n  -webkit-box-shadow: -10px 0 0 #569ff7;\n          box-shadow: -10px 0 0 #569ff7;\n}\n.flatpickr-day.selected.startRange.endRange,\n.flatpickr-day.startRange.startRange.endRange,\n.flatpickr-day.endRange.startRange.endRange {\n  border-radius: 50px;\n}\n.flatpickr-day.inRange {\n  border-radius: 0;\n  -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\n          box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\n}\n.flatpickr-day.flatpickr-disabled,\n.flatpickr-day.flatpickr-disabled:hover,\n.flatpickr-day.prevMonthDay,\n.flatpickr-day.nextMonthDay,\n.flatpickr-day.notAllowed,\n.flatpickr-day.notAllowed.prevMonthDay,\n.flatpickr-day.notAllowed.nextMonthDay {\n  color: rgba(57,57,57,0.3);\n  background: transparent;\n  border-color: transparent;\n  cursor: default;\n}\n.flatpickr-day.flatpickr-disabled,\n.flatpickr-day.flatpickr-disabled:hover {\n  cursor: not-allowed;\n  color: rgba(57,57,57,0.1);\n}\n.flatpickr-day.week.selected {\n  border-radius: 0;\n  -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\n          box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\n}\n.flatpickr-day.hidden {\n  visibility: hidden;\n}\n.rangeMode .flatpickr-day {\n  margin-top: 1px;\n}\n.flatpickr-weekwrapper {\n  float: left;\n}\n.flatpickr-weekwrapper .flatpickr-weeks {\n  padding: 0 12px;\n  -webkit-box-shadow: 1px 0 0 #e6e6e6;\n          box-shadow: 1px 0 0 #e6e6e6;\n}\n.flatpickr-weekwrapper .flatpickr-weekday {\n  float: none;\n  width: 100%;\n  line-height: 28px;\n}\n.flatpickr-weekwrapper span.flatpickr-day,\n.flatpickr-weekwrapper span.flatpickr-day:hover {\n  display: block;\n  width: 100%;\n  max-width: none;\n  color: rgba(57,57,57,0.3);\n  background: transparent;\n  cursor: default;\n  border: none;\n}\n.flatpickr-innerContainer {\n  display: block;\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  overflow: hidden;\n}\n.flatpickr-rContainer {\n  display: inline-block;\n  padding: 0;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n}\n.flatpickr-time {\n  text-align: center;\n  outline: 0;\n  display: block;\n  height: 0;\n  line-height: 40px;\n  max-height: 40px;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  overflow: hidden;\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: -ms-flexbox;\n  display: flex;\n}\n.flatpickr-time:after {\n  content: \"\";\n  display: table;\n  clear: both;\n}\n.flatpickr-time .numInputWrapper {\n  -webkit-box-flex: 1;\n  -webkit-flex: 1;\n      -ms-flex: 1;\n          flex: 1;\n  width: 40%;\n  height: 40px;\n  float: left;\n}\n.flatpickr-time .numInputWrapper span.arrowUp:after {\n  border-bottom-color: #393939;\n}\n.flatpickr-time .numInputWrapper span.arrowDown:after {\n  border-top-color: #393939;\n}\n.flatpickr-time.hasSeconds .numInputWrapper {\n  width: 26%;\n}\n.flatpickr-time.time24hr .numInputWrapper {\n  width: 49%;\n}\n.flatpickr-time input {\n  background: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  border: 0;\n  border-radius: 0;\n  text-align: center;\n  margin: 0;\n  padding: 0;\n  height: inherit;\n  line-height: inherit;\n  color: #393939;\n  font-size: 14px;\n  position: relative;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  -webkit-appearance: textfield;\n  -moz-appearance: textfield;\n  appearance: textfield;\n}\n.flatpickr-time input.flatpickr-hour {\n  font-weight: bold;\n}\n.flatpickr-time input.flatpickr-minute,\n.flatpickr-time input.flatpickr-second {\n  font-weight: 400;\n}\n.flatpickr-time input:focus {\n  outline: 0;\n  border: 0;\n}\n.flatpickr-time .flatpickr-time-separator,\n.flatpickr-time .flatpickr-am-pm {\n  height: inherit;\n  float: left;\n  line-height: inherit;\n  color: #393939;\n  font-weight: bold;\n  width: 2%;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  -webkit-align-self: center;\n      -ms-flex-item-align: center;\n          align-self: center;\n}\n.flatpickr-time .flatpickr-am-pm {\n  outline: 0;\n  width: 18%;\n  cursor: pointer;\n  text-align: center;\n  font-weight: 400;\n}\n.flatpickr-time input:hover,\n.flatpickr-time .flatpickr-am-pm:hover,\n.flatpickr-time input:focus,\n.flatpickr-time .flatpickr-am-pm:focus {\n  background: #eee;\n}\n.flatpickr-input[readonly] {\n  cursor: pointer;\n}\n@-webkit-keyframes fpFadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -20px, 0);\n            transform: translate3d(0, -20px, 0);\n  }\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n@keyframes fpFadeInDown {\n  from {\n    opacity: 0;\n    -webkit-transform: translate3d(0, -20px, 0);\n            transform: translate3d(0, -20px, 0);\n  }\n  to {\n    opacity: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n", "/*!\n * ApexCharts v3.54.1\n * (c) 2018-2024 ApexCharts\n * Released under the MIT License.\n */\n\"use strict\";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=Array(e);i<e;i++)a[i]=t[i];return a}function e(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function a(t,e){for(var i=0;i<e.length;i++){var a=e[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(t,x(a.key),a)}}function s(t,e,i){return e&&a(t.prototype,e),i&&a(t,i),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function r(t,e){var i=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!i){if(Array.isArray(t)||(i=v(t))||e&&t&&\"number\"==typeof t.length){i&&(t=i);var a=0,s=function(){};return{s:s,n:function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(t){throw t},f:s}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var r,o=!0,n=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){n=!0,r=t},f:function(){try{o||null==i.return||i.return()}finally{if(n)throw r}}}}function o(t){var i=c();return function(){var a,s=l(t);if(i){var r=l(this).constructor;a=Reflect.construct(s,arguments,r)}else a=s.apply(this,arguments);return function(t,i){if(i&&(\"object\"==typeof i||\"function\"==typeof i))return i;if(void 0!==i)throw new TypeError(\"Derived constructors may only return object or undefined\");return e(t)}(this,a)}}function n(t,e,i){return(e=x(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function h(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&u(t,e)}function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function g(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?d(Object(i),!0).forEach((function(e){n(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):d(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function u(t,e){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},u(t,e)}function f(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=i){var a,s,r,o,n=[],l=!0,h=!1;try{if(r=(i=i.call(t)).next,0===e){if(Object(i)!==i)return;l=!1}else for(;!(l=(a=r.call(i)).done)&&(n.push(a.value),n.length!==e);l=!0);}catch(t){h=!0,s=t}finally{try{if(!l&&null!=i.return&&(o=i.return(),Object(o)!==o))return}finally{if(h)throw s}}return n}}(t,e)||v(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(e)||v(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function x(t){var e=function(t,e){if(\"object\"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var a=i.call(t,e||\"default\");if(\"object\"!=typeof a)return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===e?String:Number)(t)}(t,\"string\");return\"symbol\"==typeof e?e:e+\"\"}function b(t){return b=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},b(t)}function v(e,i){if(e){if(\"string\"==typeof e)return t(e,i);var a={}.toString.call(e).slice(8,-1);return\"Object\"===a&&e.constructor&&(a=e.constructor.name),\"Map\"===a||\"Set\"===a?Array.from(e):\"Arguments\"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?t(e,i):void 0}}var m=function(){function t(){i(this,t)}return s(t,[{key:\"shadeRGBColor\",value:function(t,e){var i=e.split(\",\"),a=t<0?0:255,s=t<0?-1*t:t,r=parseInt(i[0].slice(4),10),o=parseInt(i[1],10),n=parseInt(i[2],10);return\"rgb(\"+(Math.round((a-r)*s)+r)+\",\"+(Math.round((a-o)*s)+o)+\",\"+(Math.round((a-n)*s)+n)+\")\"}},{key:\"shadeHexColor\",value:function(t,e){var i=parseInt(e.slice(1),16),a=t<0?0:255,s=t<0?-1*t:t,r=i>>16,o=i>>8&255,n=255&i;return\"#\"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-o)*s)+o)+(Math.round((a-n)*s)+n)).toString(16).slice(1)}},{key:\"shadeColor\",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:\"bind\",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:\"isObject\",value:function(t){return t&&\"object\"===b(t)&&!Array.isArray(t)&&null!=t}},{key:\"is\",value:function(t,e){return Object.prototype.toString.call(e)===\"[object \"+t+\"]\"}},{key:\"listToArray\",value:function(t){var e,i=[];for(e=0;e<t.length;e++)i[e]=t[e];return i}},{key:\"extend\",value:function(t,e){var i=this;\"function\"!=typeof Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;i<arguments.length;i++){var a=arguments[i];if(null!=a)for(var s in a)a.hasOwnProperty(s)&&(e[s]=a[s])}return e});var a=Object.assign({},t);return this.isObject(t)&&this.isObject(e)&&Object.keys(e).forEach((function(s){i.isObject(e[s])&&s in t?a[s]=i.extend(t[s],e[s]):Object.assign(a,n({},s,e[s]))})),a}},{key:\"extendArray\",value:function(e,i){var a=[];return e.map((function(e){a.push(t.extend(i,e))})),e=a}},{key:\"monthMod\",value:function(t){return t%12}},{key:\"clone\",value:function(e){if(t.is(\"Array\",e)){for(var i=[],a=0;a<e.length;a++)i[a]=this.clone(e[a]);return i}if(t.is(\"Null\",e))return null;if(t.is(\"Date\",e))return e;if(\"object\"===b(e)){var s={};for(var r in e)e.hasOwnProperty(r)&&(s[r]=this.clone(e[r]));return s}return e}},{key:\"log10\",value:function(t){return Math.log(t)/Math.LN10}},{key:\"roundToBase10\",value:function(t){return Math.pow(10,Math.floor(Math.log10(t)))}},{key:\"roundToBase\",value:function(t,e){return Math.pow(e,Math.floor(Math.log(t)/Math.log(e)))}},{key:\"parseNumber\",value:function(t){return null===t?t:parseFloat(t)}},{key:\"stripNumber\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return Number.isInteger(t)?t:parseFloat(t.toPrecision(e))}},{key:\"randomId\",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:\"noExponents\",value:function(t){var e=String(t).split(/[eE]/);if(1===e.length)return e[0];var i=\"\",a=t<0?\"-\":\"\",s=e[0].replace(\".\",\"\"),r=Number(e[1])+1;if(r<0){for(i=a+\"0.\";r++;)i+=\"0\";return i+s.replace(/^-/,\"\")}for(r-=s.length;r--;)i+=\"0\";return s+i}},{key:\"getDimensions\",value:function(t){var e=getComputedStyle(t,null),i=t.clientHeight,a=t.clientWidth;return i-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),[a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i]}},{key:\"getBoundingClientRect\",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:t.clientWidth,height:t.clientHeight,x:e.left,y:e.top}}},{key:\"getLargestStringFromArr\",value:function(t){return t.reduce((function(t,e){return Array.isArray(e)&&(e=e.reduce((function(t,e){return t.length>e.length?t:e}))),t.length>e.length?t:e}),0)}},{key:\"hexToRgba\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"#999999\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;\"#\"!==t.substring(0,1)&&(t=\"#999999\");var i=t.replace(\"#\",\"\");i=i.match(new RegExp(\"(.{\"+i.length/3+\"})\",\"g\"));for(var a=0;a<i.length;a++)i[a]=parseInt(1===i[a].length?i[a]+i[a]:i[a],16);return void 0!==e&&i.push(e),\"rgba(\"+i.join(\",\")+\")\"}},{key:\"getOpacityFromRGBA\",value:function(t){return parseFloat(t.replace(/^.*,(.+)\\)/,\"$1\"))}},{key:\"rgb2hex\",value:function(t){return(t=t.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i))&&4===t.length?\"#\"+(\"0\"+parseInt(t[1],10).toString(16)).slice(-2)+(\"0\"+parseInt(t[2],10).toString(16)).slice(-2)+(\"0\"+parseInt(t[3],10).toString(16)).slice(-2):\"\"}},{key:\"isColorHex\",value:function(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(t)}},{key:\"getPolygonPos\",value:function(t,e){for(var i=[],a=2*Math.PI/e,s=0;s<e;s++){var r={};r.x=t*Math.sin(s*a),r.y=-t*Math.cos(s*a),i.push(r)}return i}},{key:\"polarToCartesian\",value:function(t,e,i,a){var s=(a-90)*Math.PI/180;return{x:t+i*Math.cos(s),y:e+i*Math.sin(s)}}},{key:\"escapeString\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"x\",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\\=?;:'\",.<>{}[\\]\\\\/]/gi,e)}},{key:\"negToZero\",value:function(t){return t<0?0:t}},{key:\"moveIndexInArray\",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:\"extractNumber\",value:function(t){return parseFloat(t.replace(/[^\\d.]*/g,\"\"))}},{key:\"findAncestor\",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:\"setELstyles\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:\"preciseAddition\",value:function(t,e){var i=(String(t).split(\".\")[1]||\"\").length,a=(String(e).split(\".\")[1]||\"\").length,s=Math.pow(10,Math.max(i,a));return(Math.round(t*s)+Math.round(e*s))/s}},{key:\"isNumber\",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:\"isFloat\",value:function(t){return Number(t)===t&&t%1!=0}},{key:\"isSafari\",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:\"isFirefox\",value:function(){return navigator.userAgent.toLowerCase().indexOf(\"firefox\")>-1}},{key:\"isMsEdge\",value:function(){var t=window.navigator.userAgent,e=t.indexOf(\"Edge/\");return e>0&&parseInt(t.substring(e+5,t.indexOf(\".\",e)),10)}},{key:\"getGCD\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));for(t=Math.round(Math.abs(t)*a),e=Math.round(Math.abs(e)*a);e;){var s=e;e=t%e,t=s}return t/a}},{key:\"getPrimeFactors\",value:function(t){for(var e=[],i=2;t>=2;)t%i==0?(e.push(i),t/=i):i++;return e}},{key:\"mod\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));return(t=Math.round(Math.abs(t)*a))%(e=Math.round(Math.abs(e)*a))/a}}]),t}(),y=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return s(t,[{key:\"setEasingFunctions\",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case\"linear\":t=\"-\";break;case\"easein\":t=\"<\";break;case\"easeout\":t=\">\";break;case\"easeinout\":default:t=\"<>\";break;case\"swing\":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case\"bounce\":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case\"elastic\":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=t}}},{key:\"animateLine\",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:\"animateMarker\",value:function(t,e,i,a){t.attr({opacity:0}).animate(e,i).attr({opacity:1}).afterAll((function(){a()}))}},{key:\"animateRect\",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:\"animatePathsGradually\",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,o=t.pathTo,n=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&\"bar\"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,\"line\"!==h.config.chart.type||h.globals.comboCharts?s:\"stroke\",r,o,n,l*c)}},{key:\"showDelayedElements\",value:function(){this.w.globals.delayedElements.forEach((function(t){var e=t.el;e.classList.remove(\"apexcharts-element-hidden\"),e.classList.add(\"apexcharts-hidden-element-shown\")}))}},{key:\"animationCompleted\",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),\"function\"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:\"morphSVG\",value:function(t,e,i,a,s,r,o,n){var l=this,h=this.w;s||(s=t.attr(\"pathFrom\")),r||(r=t.attr(\"pathTo\"));var c=function(t){return\"radar\"===h.config.chart.type&&(o=1),\"M 0 \".concat(h.globals.gridHeight)};(!s||s.indexOf(\"undefined\")>-1||s.indexOf(\"NaN\")>-1)&&(s=c()),(!r||r.indexOf(\"undefined\")>-1||r.indexOf(\"NaN\")>-1)&&(r=c()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,n).plot(s).animate(o,h.globals.easing,n).plot(r).afterAll((function(){m.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):\"none\"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),w=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getDefaultFilter\",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size(\"120%\",\"180%\",\"-5%\",\"-40%\"),\"none\"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"addNormalFilter\",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains(\"apexcharts-marker\")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"addLightenFilter\",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:\"linear\",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node)}},{key:\"addDarkenFilter\",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:\"linear\",slope:r}})})),t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node)}},{key:\"applyFilter\",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case\"none\":this.addNormalFilter(t,e);break;case\"lighten\":this.addLightenFilter(t,e,{intensity:a});break;case\"darken\":this.addDarkenFilter(t,e,{intensity:a})}}},{key:\"addShadow\",value:function(t,e,i){var a,s=this.w,r=i.blur,o=i.top,n=i.left,l=i.color,h=i.opacity;if((null===(a=s.config.chart.dropShadow.enabledOnSeries)||void 0===a?void 0:a.length)>0&&-1===s.config.chart.dropShadow.enabledOnSeries.indexOf(e))return t;var c=t.flood(Array.isArray(l)?l[e]:l,h).composite(t.sourceAlpha,\"in\").offset(n,o).gaussianBlur(r).merge(t.source);return t.blend(t.source,c)}},{key:\"dropShadow\",value:function(t,e){var i,a,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=e.top,o=e.left,n=e.blur,l=e.color,h=e.opacity,c=e.noUserSpaceOnUse,d=this.w;if(t.unfilter(!0),m.isMsEdge()&&\"radialBar\"===d.config.chart.type)return t;if((null===(i=d.config.chart.dropShadow.enabledOnSeries)||void 0===i?void 0:i.length)>0&&-1===(null===(a=d.config.chart.dropShadow.enabledOnSeries)||void 0===a?void 0:a.indexOf(s)))return t;return l=Array.isArray(l)?l[s]:l,t.filter((function(t){var e=null;e=m.isSafari()||m.isFirefox()||m.isMsEdge()?t.flood(l,h).composite(t.sourceAlpha,\"in\").offset(o,r).gaussianBlur(n):t.flood(l,h).composite(t.sourceAlpha,\"in\").offset(o,r).gaussianBlur(n).merge(t.source),t.blend(t.source,e)})),c||t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node),t}},{key:\"setSelectionFilter\",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute(\"selected\",!0);var s=a.config.states.active.filter;\"none\"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:\"_scaleFilterSize\",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:\"200%\",height:\"200%\",x:\"-50%\",y:\"-50%\"})}}]),t}(),k=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"roundPathCorners\",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,o=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/o))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}t.indexOf(\"NaN\")>-1&&(t=\"\");var o=t.split(/[,\\s]/).reduce((function(t,e){var i=e.match(\"([a-zA-Z])(.+)\");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),n=[];if(o.length>1){var l=r(o[0]),h=null;\"Z\"==o[o.length-1][0]&&o[0].length>2&&(h=[\"L\",l.x,l.y],o[o.length-1]=h),n.push(o[0]);for(var c=1;c<o.length;c++){var d=n[n.length-1],g=o[c],u=g==h?o[1]:o[c+1];if(u&&d&&d.length>2&&\"L\"==g[0]&&u.length>2&&\"L\"==u[0]){var f,p,x=r(d),b=r(g),v=r(u);f=i(b,x,e),p=i(b,v,e),s(g,f),g.origPoint=b,n.push(g);var m=a(f,b,.5),y=a(b,p,.5),w=[\"C\",m.x,m.y,y.x,y.y,p.x,p.y];w.origPoint=b,n.push(w)}else n.push(g)}if(h){var k=r(n[n.length-1]);n.push([\"Z\"]),s(n[0],k)}}else n=o;return n.reduce((function(t,e){return t+e.join(\" \")+\" \"}),\"\")}},{key:\"drawLine\",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"#a8a8a8\",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:\"butt\";return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,\"stroke-dasharray\":r,\"stroke-width\":o,\"stroke-linecap\":n})}},{key:\"drawRect\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"#fefefe\",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:o,\"stroke-width\":null!==n?n:0,stroke:null!==l?l:\"none\",\"stroke-dasharray\":h}),c.node.setAttribute(\"fill\",r),c}},{key:\"drawPolygon\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#e1e1e1\",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"none\";return this.w.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,\"stroke-width\":i})}},{key:\"drawCircle\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t<0&&(t=0);var i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:\"drawPath\",value:function(t){var e=t.d,i=void 0===e?\"\":e,a=t.stroke,s=void 0===a?\"#a8a8a8\":a,r=t.strokeWidth,o=void 0===r?1:r,n=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,f=void 0===u?null:u,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf(\"undefined\")>-1||i.indexOf(\"NaN\")>-1)&&(i=\"M 0 \".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:n,\"fill-opacity\":h,stroke:s,\"stroke-opacity\":d,\"stroke-linecap\":f,\"stroke-width\":o,\"stroke-dasharray\":x,class:g})}},{key:\"group\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:\"move\",value:function(t,e){var i=[\"M\",t,e].join(\" \");return i}},{key:\"line\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[\" L\",t,e].join(\" \"):\"H\"===i?a=[\" H\",t].join(\" \"):\"V\"===i&&(a=[\" V\",e].join(\" \")),a}},{key:\"curve\",value:function(t,e,i,a,s,r){var o=[\"C\",t,e,i,a,s,r].join(\" \");return o}},{key:\"quadraticCurve\",value:function(t,e,i,a){return[\"Q\",t,e,i,a].join(\" \")}},{key:\"arc\",value:function(t,e,i,a,s,r,o){var n=\"A\";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(n=\"a\");var l=[n,t,e,i,a,s,r,o].join(\" \");return l}},{key:\"renderPaths\",value:function(t){var e,i=t.j,a=t.realIndex,s=t.pathFrom,r=t.pathTo,o=t.stroke,n=t.strokeWidth,l=t.strokeLinecap,h=t.fill,c=t.animationDelay,d=t.initialSpeed,u=t.dataChangeSpeed,f=t.className,p=t.chartType,x=t.shouldClipToGrid,b=void 0===x||x,v=t.bindEventsOnPaths,m=void 0===v||v,k=t.drawShadow,A=void 0===k||k,S=this.w,C=new w(this.ctx),L=new y(this.ctx),P=this.w.config.chart.animations.enabled,M=P&&this.w.config.chart.animations.dynamicAnimation.enabled,I=!!(P&&!S.globals.resized||M&&S.globals.dataChanged&&S.globals.shouldAnimate);I?e=s:(e=r,S.globals.animationEnded=!0);var T=S.config.stroke.dashArray,z=0;z=Array.isArray(T)?T[a]:S.config.stroke.dashArray;var X=this.drawPath({d:e,stroke:o,strokeWidth:n,fill:h,fillOpacity:1,classes:f,strokeLinecap:l,strokeDashArray:z});if(X.attr(\"index\",a),b&&(\"bar\"===p&&!S.globals.isHorizontal||S.globals.comboCharts?X.attr({\"clip-path\":\"url(#gridRectBarMask\".concat(S.globals.cuid,\")\")}):X.attr({\"clip-path\":\"url(#gridRectMask\".concat(S.globals.cuid,\")\")})),\"none\"!==S.config.states.normal.filter.type)C.getDefaultFilter(X,a);else if(S.config.chart.dropShadow.enabled&&A){var E=S.config.chart.dropShadow;C.dropShadow(X,E,a)}m&&(X.node.addEventListener(\"mouseenter\",this.pathMouseEnter.bind(this,X)),X.node.addEventListener(\"mouseleave\",this.pathMouseLeave.bind(this,X)),X.node.addEventListener(\"mousedown\",this.pathMouseDown.bind(this,X))),X.attr({pathTo:r,pathFrom:s});var Y={el:X,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:h,strokeWidth:n,delay:c};return!P||S.globals.resized||S.globals.dataChanged?!S.globals.resized&&S.globals.dataChanged||L.showDelayedElements():L.animatePathsGradually(g(g({},Y),{},{speed:d})),S.globals.dataChanged&&M&&I&&L.animatePathsGradually(g(g({},Y),{},{speed:u})),X}},{key:\"drawPattern\",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"#a8a8a8\",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,(function(r){\"horizontalLines\"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):\"verticalLines\"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):\"slantedLines\"===t?r.line(0,0,e,i).stroke({color:a,width:s}):\"squares\"===t?r.rect(e,i).fill(\"none\").stroke({color:a,width:s}):\"circles\"===t&&r.circle(e).fill(\"none\").stroke({color:a,width:s})}))}},{key:\"drawGradient\",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf(\"#\")&&(e=m.hexToRgba(e,a)),i.length<9&&0===i.indexOf(\"#\")&&(i=m.hexToRgba(i,s));var d=0,g=1,u=1,f=null;null!==n&&(d=void 0!==n[0]?n[0]/100:0,g=void 0!==n[1]?n[1]/100:1,u=void 0!==n[2]?n[2]/100:1,f=void 0!==n[3]?n[3]/100:null);var p=!(\"donut\"!==c.config.chart.type&&\"pie\"!==c.config.chart.type&&\"polarArea\"!==c.config.chart.type&&\"bubble\"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(p?\"radial\":\"linear\",(function(t){t.at(d,e,a),t.at(g,i,s),t.at(u,i,s),null!==f&&t.at(f,e,a)})):c.globals.dom.Paper.gradient(p?\"radial\":\"linear\",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),p){var x=c.globals.gridWidth/2,b=c.globals.gridHeight/2;\"bubble\"!==c.config.chart.type?r.attr({gradientUnits:\"userSpaceOnUse\",cx:x,cy:b,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else\"vertical\"===t?r.from(0,0).to(0,1):\"diagonal\"===t?r.from(0,0).to(1,1):\"horizontal\"===t?r.from(0,1).to(1,1):\"diagonal2\"===t&&r.from(1,0).to(0,1);return r}},{key:\"getTextBasedOnMaxWidth\",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),o=r.width/e.length,n=Math.floor(i/o);return i<r.width?e.slice(0,n-3)+\"...\":e}},{key:\"drawText\",value:function(t){var e=this,i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.fontSize,n=t.fontFamily,l=t.fontWeight,h=t.foreColor,c=t.opacity,d=t.maxWidth,u=t.cssClass,f=void 0===u?\"\":u,p=t.isPlainText,x=void 0===p||p,b=t.dominantBaseline,v=void 0===b?\"auto\":b,m=this.w;void 0===s&&(s=\"\");var y=s;r||(r=\"start\"),h&&h.length||(h=m.config.chart.foreColor),n=n||m.config.chart.fontFamily,l=l||\"regular\";var w,k={maxWidth:d,fontSize:o=o||\"11px\",fontFamily:n};return Array.isArray(s)?w=m.globals.dom.Paper.text((function(t){for(var i=0;i<s.length;i++)y=s[i],d&&(y=e.getTextBasedOnMaxWidth(g({text:s[i]},k))),0===i?t.tspan(y):t.tspan(y).newLine()})):(d&&(y=this.getTextBasedOnMaxWidth(g({text:s},k))),w=x?m.globals.dom.Paper.plain(s):m.globals.dom.Paper.text((function(t){return t.tspan(y)}))),w.attr({x:i,y:a,\"text-anchor\":r,\"dominant-baseline\":v,\"font-size\":o,\"font-family\":n,\"font-weight\":l,fill:h,class:\"apexcharts-text \"+f}),w.node.style.fontFamily=n,w.node.style.opacity=c,w}},{key:\"getMarkerPath\",value:function(t,e,i,a){var s=\"\";switch(i){case\"cross\":s=\"M \".concat(t-(a/=1.4),\" \").concat(e-a,\" L \").concat(t+a,\" \").concat(e+a,\"  M \").concat(t-a,\" \").concat(e+a,\" L \").concat(t+a,\" \").concat(e-a);break;case\"plus\":s=\"M \".concat(t-(a/=1.12),\" \").concat(e,\" L \").concat(t+a,\" \").concat(e,\"  M \").concat(t,\" \").concat(e-a,\" L \").concat(t,\" \").concat(e+a);break;case\"star\":case\"sparkle\":var r=5;a*=1.15,\"sparkle\"===i&&(a/=1.1,r=4);for(var o=Math.PI/r,n=0;n<=2*r;n++){var l=n*o,h=n%2==0?a:a/2;s+=(0===n?\"M\":\"L\")+(t+h*Math.sin(l))+\",\"+(e-h*Math.cos(l))}s+=\"Z\";break;case\"triangle\":s=\"M \".concat(t,\" \").concat(e-a,\" \\n             L \").concat(t+a,\" \").concat(e+a,\" \\n             L \").concat(t-a,\" \").concat(e+a,\" \\n             Z\");break;case\"square\":case\"rect\":s=\"M \".concat(t-(a/=1.125),\" \").concat(e-a,\" \\n           L \").concat(t+a,\" \").concat(e-a,\" \\n           L \").concat(t+a,\" \").concat(e+a,\" \\n           L \").concat(t-a,\" \").concat(e+a,\" \\n           Z\");break;case\"diamond\":a*=1.05,s=\"M \".concat(t,\" \").concat(e-a,\" \\n             L \").concat(t+a,\" \").concat(e,\" \\n             L \").concat(t,\" \").concat(e+a,\" \\n             L \").concat(t-a,\" \").concat(e,\" \\n            Z\");break;case\"line\":s=\"M \".concat(t-(a/=1.1),\" \").concat(e,\" \\n           L \").concat(t+a,\" \").concat(e);break;default:a*=2,s=\"M \".concat(t,\", \").concat(e,\" \\n           m -\").concat(a/2,\", 0 \\n           a \").concat(a/2,\",\").concat(a/2,\" 0 1,0 \").concat(a,\",0 \\n           a \").concat(a/2,\",\").concat(a/2,\" 0 1,0 -\").concat(a,\",0\")}return s}},{key:\"drawMarkerShape\",value:function(t,e,i,a,s){var r=this.drawPath({d:this.getMarkerPath(t,e,i,a,s),stroke:s.pointStrokeColor,strokeDashArray:s.pointStrokeDashArray,strokeWidth:s.pointStrokeWidth,fill:s.pointFillColor,fillOpacity:s.pointFillOpacity,strokeOpacity:s.pointStrokeOpacity});return r.attr({cx:t,cy:e,shape:s.shape,class:s.class?s.class:\"\"}),r}},{key:\"drawMarker\",value:function(t,e,i){t=t||0;var a=i.pSize||0;return m.isNumber(e)||(a=0,e=0),this.drawMarkerShape(t,e,null==i?void 0:i.shape,a,g(g({},i),\"line\"===i.shape||\"plus\"===i.shape||\"cross\"===i.shape?{pointStrokeColor:i.pointFillColor,pointStrokeOpacity:i.pointFillOpacity}:{}))}},{key:\"pathMouseEnter\",value:function(t,e){var i=this.w,a=new w(this.ctx),s=parseInt(t.node.getAttribute(\"index\"),10),r=parseInt(t.node.getAttribute(\"j\"),10);if(\"function\"==typeof i.config.chart.events.dataPointMouseEnter&&i.config.chart.events.dataPointMouseEnter(e,this.ctx,{seriesIndex:s,dataPointIndex:r,w:i}),this.ctx.events.fireEvent(\"dataPointMouseEnter\",[e,this.ctx,{seriesIndex:s,dataPointIndex:r,w:i}]),(\"none\"===i.config.states.active.filter.type||\"true\"!==t.node.getAttribute(\"selected\"))&&\"none\"!==i.config.states.hover.filter.type&&!i.globals.isTouchDevice){var o=i.config.states.hover.filter;a.applyFilter(t,s,o.type,o.value)}}},{key:\"pathMouseLeave\",value:function(t,e){var i=this.w,a=new w(this.ctx),s=parseInt(t.node.getAttribute(\"index\"),10),r=parseInt(t.node.getAttribute(\"j\"),10);\"function\"==typeof i.config.chart.events.dataPointMouseLeave&&i.config.chart.events.dataPointMouseLeave(e,this.ctx,{seriesIndex:s,dataPointIndex:r,w:i}),this.ctx.events.fireEvent(\"dataPointMouseLeave\",[e,this.ctx,{seriesIndex:s,dataPointIndex:r,w:i}]),\"none\"!==i.config.states.active.filter.type&&\"true\"===t.node.getAttribute(\"selected\")||\"none\"!==i.config.states.hover.filter.type&&a.getDefaultFilter(t,s)}},{key:\"pathMouseDown\",value:function(t,e){var i=this.w,a=new w(this.ctx),s=parseInt(t.node.getAttribute(\"index\"),10),r=parseInt(t.node.getAttribute(\"j\"),10),o=\"false\";if(\"true\"===t.node.getAttribute(\"selected\")){if(t.node.setAttribute(\"selected\",\"false\"),i.globals.selectedDataPoints[s].indexOf(r)>-1){var n=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(n,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(\".apexcharts-series path\").members,h=i.globals.dom.Paper.select(\".apexcharts-series circle, .apexcharts-series rect\").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute(\"selected\",\"false\"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute(\"selected\",\"true\"),o=\"true\",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if(\"true\"===o){var d=i.config.states.active.filter;if(\"none\"!==d)a.applyFilter(t,s,d.type,d.value);else if(\"none\"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else if(\"none\"!==i.config.states.active.filter.type)if(\"none\"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}\"function\"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent(\"dataPointSelection\",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:\"rotateAroundCenter\",value:function(t){var e={};return t&&\"function\"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:\"getTextRects\",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,o=this.drawText({x:-200,y:-200,text:t,textAnchor:\"start\",fontSize:e,fontFamily:i,foreColor:\"#fff\",opacity:0});a&&o.attr(\"transform\",a),r.globals.dom.Paper.add(o);var n=o.bbox();return s||(n=o.node.getBoundingClientRect()),o.remove(),{width:n.width,height:n.height}}},{key:\"placeTextWithEllipsis\",value:function(t,e,i){if(\"function\"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+\"...\");t.textContent=\".\"}}}],[{key:\"setAttrs\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),A=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getStackedSeriesTotals\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a<e.globals.series[e.globals.maxValsInArrayIndex].length;a++){for(var s=0,r=0;r<e.globals.series.length;r++)void 0!==e.globals.series[r][a]&&-1===t.indexOf(r)&&(s+=e.globals.series[r][a]);i.push(s)}return i}},{key:\"getSeriesTotalByIndex\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:\"getStackedSeriesTotalsByGroups\",value:function(){var t=this,e=this.w,i=[];return e.globals.seriesGroups.forEach((function(a){var s=[];e.config.series.forEach((function(t,i){a.indexOf(e.globals.seriesNames[i])>-1&&s.push(i)}));var r=e.globals.series.map((function(t,e){return-1===s.indexOf(e)?e:-1})).filter((function(t){return-1!==t}));i.push(t.getStackedSeriesTotals(r))})),i}},{key:\"setSeriesYAxisMappings\",value:function(){var t=this.w.globals,e=this.w.config,i=[],a=[],s=[],r=t.series.length>e.yaxis.length||e.yaxis.some((function(t){return Array.isArray(t.seriesName)}));e.series.forEach((function(t,e){s.push(e),a.push(null)})),e.yaxis.forEach((function(t,e){i[e]=[]}));var o=[];e.yaxis.forEach((function(t,a){var n=!1;if(t.seriesName){var l=[];Array.isArray(t.seriesName)?l=t.seriesName:l.push(t.seriesName),l.forEach((function(t){e.series.forEach((function(e,o){if(e.name===t){var l=o;a===o||r?!r||s.indexOf(o)>-1?i[a].push([a,o]):console.warn(\"Series '\"+e.name+\"' referenced more than once in what looks like the new style. That is, when using either seriesName: [], or when there are more series than yaxes.\"):(i[o].push([o,a]),l=a),n=!0,-1!==(l=s.indexOf(l))&&s.splice(l,1)}}))}))}n||o.push(a)})),i=i.map((function(t,e){var i=[];return t.forEach((function(t){a[t[1]]=t[0],i.push(t[1])})),i}));for(var n=e.yaxis.length-1,l=0;l<o.length&&(n=o[l],i[n]=[],s);l++){var h=s[0];s.shift(),i[n].push(h),a[h]=n}s.forEach((function(t){i[n].push(t),a[t]=n})),t.seriesYAxisMap=i.map((function(t){return t})),t.seriesYAxisReverseMap=a.map((function(t){return t})),t.seriesYAxisMap.forEach((function(t,i){t.forEach((function(t){e.series[t]&&void 0===e.series[t].group&&(e.series[t].group=\"apexcharts-axis-\".concat(i.toString()))}))}))}},{key:\"isSeriesNull\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:\"seriesHaveSameValues\",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:\"getCategoryLabels\",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:\"getLargestSeries\",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:\"getLargestMarkerSize\",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(t.config.markers.hover.size>0?e=t.config.markers.hover.size:e+=t.config.markers.hover.sizeOffset),t.globals.markers.largestSize=e,e}},{key:\"getSeriesTotals\",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;a<t.length;a++)i+=t[a];else i+=t;return i}))}},{key:\"getSeriesTotalsXRange\",value:function(t,e){var i=this.w;return i.globals.series.map((function(a,s){for(var r=0,o=0;o<a.length;o++)i.globals.seriesX[s][o]>t&&i.globals.seriesX[s][o]<e&&(r+=a[o]);return r}))}},{key:\"getPercentSeries\",value:function(){var t=this.w;t.globals.seriesPercent=t.globals.series.map((function(e,i){var a=[];if(Array.isArray(e))for(var s=0;s<e.length;s++){var r=t.globals.stackedSeriesTotals[s],o=0;r&&(o=100*e[s]/r),a.push(o)}else{var n=100*e/t.globals.seriesTotals.reduce((function(t,e){return t+e}),0);a.push(n)}return a}))}},{key:\"getCalculatedRatios\",value:function(){var t,e,i,a=this,s=this.w,r=s.globals,o=[],n=0,l=[],h=.1,c=0;if(r.yRange=[],r.isMultipleYAxis)for(var d=0;d<r.minYArr.length;d++)r.yRange.push(Math.abs(r.minYArr[d]-r.maxYArr[d])),l.push(0);else r.yRange.push(Math.abs(r.minY-r.maxY));r.xRange=Math.abs(r.maxX-r.minX),r.zRange=Math.abs(r.maxZ-r.minZ);for(var g=0;g<r.yRange.length;g++)o.push(r.yRange[g]/r.gridHeight);if(e=r.xRange/r.gridWidth,t=r.yRange/r.gridWidth,i=r.xRange/r.gridHeight,(n=r.zRange/r.gridHeight*16)||(n=1),r.minY!==Number.MIN_VALUE&&0!==Math.abs(r.minY)&&(r.hasNegs=!0),s.globals.seriesYAxisReverseMap.length>0){var u=function(t,e){var i=s.config.yaxis[s.globals.seriesYAxisReverseMap[e]],r=t<0?-1:1;return t=Math.abs(t),i.logarithmic&&(t=a.getBaseLog(i.logBase,t)),-r*t/o[e]};if(r.isMultipleYAxis){l=[];for(var f=0;f<o.length;f++)l.push(u(r.minYArr[f],f))}else(l=[]).push(u(r.minY,0)),r.minY!==Number.MIN_VALUE&&0!==Math.abs(r.minY)&&(h=-r.minY/t,c=r.minX/e)}else(l=[]).push(0),h=0,c=0;return{yRatio:o,invertedYRatio:t,zRatio:n,xRatio:e,invertedXRatio:i,baseLineInvertedY:h,baseLineY:l,baseLineX:c}}},{key:\"getLogSeries\",value:function(t){var e=this,i=this.w;return i.globals.seriesLog=t.map((function(t,a){var s=i.globals.seriesYAxisReverseMap[a];return i.config.yaxis[s]&&i.config.yaxis[s].logarithmic?t.map((function(t){return null===t?null:e.getLogVal(i.config.yaxis[s].logBase,t,a)})):t})),i.globals.invalidLogScale?t:i.globals.seriesLog}},{key:\"getBaseLog\",value:function(t,e){return Math.log(e)/Math.log(t)}},{key:\"getLogVal\",value:function(t,e,i){if(e<=0)return 0;var a=this.w,s=0===a.globals.minYArr[i]?-1:this.getBaseLog(t,a.globals.minYArr[i]),r=(0===a.globals.maxYArr[i]?0:this.getBaseLog(t,a.globals.maxYArr[i]))-s;return e<1?e/r:(this.getBaseLog(t,e)-s)/r}},{key:\"getLogYRatios\",value:function(t){var e=this,i=this.w,a=this.w.globals;return a.yLogRatio=t.slice(),a.logYRange=a.yRange.map((function(t,s){var r=i.globals.seriesYAxisReverseMap[s];if(i.config.yaxis[r]&&e.w.config.yaxis[r].logarithmic){var o,n=-Number.MAX_VALUE,l=Number.MIN_VALUE;return a.seriesLog.forEach((function(t,e){t.forEach((function(t){i.config.yaxis[e]&&i.config.yaxis[e].logarithmic&&(n=Math.max(t,n),l=Math.min(t,l))}))})),o=Math.pow(a.yRange[s],Math.abs(l-n)/a.yRange[s]),a.yLogRatio[s]=o/a.gridHeight,o}})),a.invalidLogScale?t.slice():a.yLogRatio}},{key:\"drawSeriesByGroup\",value:function(t,e,i,a){var s=this.w,r=[];return t.series.length>0&&e.forEach((function(e){var o=[],n=[];t.i.forEach((function(i,a){s.config.series[i].group===e&&(o.push(t.series[a]),n.push(i))})),o.length>0&&r.push(a.draw(o,i,n))})),r}}],[{key:\"checkComboSeries\",value:function(t,e){var i=!1,a=0,s=0;return void 0===e&&(e=\"line\"),t.length&&void 0!==t[0].type&&t.forEach((function(t){\"bar\"!==t.type&&\"column\"!==t.type&&\"candlestick\"!==t.type&&\"boxPlot\"!==t.type||a++,void 0!==t.type&&t.type!==e&&s++})),s>0&&(i=!0),{comboBarCount:a,comboCharts:i}}},{key:\"extendArrayProps\",value:function(t,e,i){var a,s,r,o,n,l;(null!==(a=e)&&void 0!==a&&a.yaxis&&(e=t.extendYAxis(e,i)),null!==(s=e)&&void 0!==s&&s.annotations)&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),null!==(r=e)&&void 0!==r&&null!==(o=r.annotations)&&void 0!==o&&o.xaxis&&(e=t.extendXAxisAnnotations(e)),null!==(n=e)&&void 0!==n&&null!==(l=n.annotations)&&void 0!==l&&l.points&&(e=t.extendPointAnnotations(e)));return e}}]),t}(),S=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e}return s(t,[{key:\"setOrientations\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if(\"vertical\"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='\".concat(a,\"']\"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute(\"x\",parseFloat(s.getAttribute(\"x\"))-r.height+4);var o=\"top\"===t.label.position?r.width:-r.width;s.setAttribute(\"y\",parseFloat(s.getAttribute(\"y\"))+o);var n=this.annoCtx.graphics.rotateAroundCenter(s),l=n.x,h=n.y;s.setAttribute(\"transform\",\"rotate(-90 \".concat(l,\" \").concat(h,\")\"))}}}},{key:\"addBackgroundToAnno\",value:function(t,e){var i=this.w;if(!t||!e.label.text||!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(\".apexcharts-grid\").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding,o=r.left,n=r.right,l=r.top,h=r.bottom;if(\"vertical\"===e.label.orientation){var c=[o,n,l,h];l=c[0],h=c[1],o=c[2],n=c[3]}var d=s.left-a.left-o,g=s.top-a.top-l,u=this.annoCtx.graphics.drawRect(d-i.globals.barPadForNumericAxis,g,s.width+o+n,s.height+l+h,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&u.node.classList.add(e.id),u}},{key:\"annotationsBackground\",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations .apexcharts-\").concat(s,\"-annotation-label[rel='\").concat(a,\"']\"));if(r){var o=r.parentNode,n=t.addBackgroundToAnno(r,i);n&&(o.insertBefore(n.node,r),i.label.mouseEnter&&n.node.addEventListener(\"mouseenter\",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&n.node.addEventListener(\"mouseleave\",i.label.mouseLeave.bind(t,i)),i.label.click&&n.node.addEventListener(\"click\",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.forEach((function(t,e){return i(t,e,\"xaxis\")})),e.config.annotations.yaxis.forEach((function(t,e){return i(t,e,\"yaxis\")})),e.config.annotations.points.forEach((function(t,e){return i(t,e,\"point\")}))}},{key:\"getY1Y2\",value:function(t,e){var i,a=this.w,s=\"y1\"===t?e.y:e.y2,r=!1;if(this.annoCtx.invertAxis){var o=a.config.xaxis.convertedCatToNumeric?a.globals.categoryLabels:a.globals.labels,n=o.indexOf(s),l=a.globals.dom.baseEl.querySelector(\".apexcharts-yaxis-texts-g text:nth-child(\".concat(n+1,\")\"));i=l?parseFloat(l.getAttribute(\"y\")):(a.globals.gridHeight/o.length-1)*(n+1)-a.globals.barHeight,void 0!==e.seriesIndex&&a.globals.barHeight&&(i-=a.globals.barHeight/2*(a.globals.series.length-1)-a.globals.barHeight*e.seriesIndex)}else{var h,c=a.globals.seriesYAxisMap[e.yAxisIndex][0],d=a.config.yaxis[e.yAxisIndex].logarithmic?new A(this.annoCtx.ctx).getLogVal(a.config.yaxis[e.yAxisIndex].logBase,s,c)/a.globals.yLogRatio[c]:(s-a.globals.minYArr[c])/(a.globals.yRange[c]/a.globals.gridHeight);i=a.globals.gridHeight-Math.min(Math.max(d,0),a.globals.gridHeight),r=d>a.globals.gridHeight||d<0,!e.marker||void 0!==e.y&&null!==e.y||(i=0),null!==(h=a.config.yaxis[e.yAxisIndex])&&void 0!==h&&h.reversed&&(i=d)}return\"string\"==typeof s&&s.includes(\"px\")&&(i=parseFloat(s)),{yP:i,clipped:r}}},{key:\"getX1X2\",value:function(t,e){var i=this.w,a=\"x1\"===t?e.x:e.x2,s=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,r=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,o=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,n=!1,l=this.annoCtx.inversedReversedAxis?(r-a)/(o/i.globals.gridWidth):(a-s)/(o/i.globals.gridWidth);return\"category\"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||i.config.chart.sparkline.enabled||(l=this.getStringX(a)),\"string\"==typeof a&&a.includes(\"px\")&&(l=parseFloat(a)),null==a&&e.marker&&(l=i.globals.gridWidth),void 0!==e.seriesIndex&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(l-=i.globals.barWidth/2*(i.globals.series.length-1)-i.globals.barWidth*e.seriesIndex),l>i.globals.gridWidth?(l=i.globals.gridWidth,n=!0):l<0&&(l=0,n=!0),{x:l,clipped:n}}},{key:\"getStringX\",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.map((function(t){return Array.isArray(t)?t.join(\" \"):t})).indexOf(t),s=e.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g text:nth-child(\".concat(a+1,\")\"));return s&&(i=parseFloat(s.getAttribute(\"x\"))),i}}]),t}(),C=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new S(this.annoCtx)}return s(t,[{key:\"addXaxisAnnotation\",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2(\"x1\",t),o=r.x,n=r.clipped,l=!0,h=t.label.text,c=t.strokeDashArray;if(m.isNumber(o)){if(null===t.x2||void 0===t.x2){if(!n){var d=this.annoCtx.graphics.drawLine(o+t.offsetX,0+t.offsetY,o+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,c,t.borderWidth);e.appendChild(d.node),t.id&&d.node.classList.add(t.id)}}else{var g=this.helpers.getX1X2(\"x2\",t);if(a=g.x,l=g.clipped,!n||!l){if(a<o){var u=o;o=a,a=u}var f=this.annoCtx.graphics.drawRect(o+t.offsetX,0+t.offsetY,a-o,s.globals.gridHeight+t.offsetY,0,t.fillColor,t.opacity,1,t.borderColor,c);f.node.classList.add(\"apexcharts-annotation-rect\"),f.attr(\"clip-path\",\"url(#gridRectMask\".concat(s.globals.cuid,\")\")),e.appendChild(f.node),t.id&&f.node.classList.add(t.id)}}if(!n||!l){var p=this.annoCtx.graphics.getTextRects(h,parseFloat(t.label.style.fontSize)),x=\"top\"===t.label.position?4:\"center\"===t.label.position?s.globals.gridHeight/2+(\"vertical\"===t.label.orientation?p.width/2:0):s.globals.gridHeight,b=this.annoCtx.graphics.drawText({x:o+t.label.offsetX,y:x+t.label.offsetY-(\"vertical\"===t.label.orientation?\"top\"===t.label.position?p.width/2-12:-p.width/2:0),text:h,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-xaxis-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});b.attr({rel:i}),e.appendChild(b.node),this.annoCtx.helpers.setOrientations(t,i)}}}},{key:\"drawXAxisAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-xaxis-annotations\"});return e.config.annotations.xaxis.map((function(e,a){t.addXaxisAnnotation(e,i.node,a)})),i}}]),t}(),L=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return s(t,[{key:\"isValidDate\",value:function(t){return\"number\"!=typeof t&&!isNaN(this.parseDate(t))}},{key:\"getTimeStamp\",value:function(t){return Date.parse(t)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toISOString().substr(0,25)).getTime():new Date(t).getTime():t}},{key:\"getDate\",value:function(t){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toUTCString()):new Date(t)}},{key:\"parseDate\",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getTimeStamp(t);var i=Date.parse(t.replace(/-/g,\"/\").replace(/[a-z]+/gi,\" \"));return i=this.getTimeStamp(i)}},{key:\"parseDateWithTimezone\",value:function(t){return Date.parse(t.replace(/-/g,\"/\").replace(/[a-z]+/gi,\" \"))}},{key:\"formatDate\",value:function(t,e){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=[\"\\0\"].concat(p(i.months)),r=[\"\\x01\"].concat(p(i.shortMonths)),o=[\"\\x02\"].concat(p(i.days)),n=[\"\\x03\"].concat(p(i.shortDays));function l(t,e){var i=t+\"\";for(e=e||2;i.length<e;)i=\"0\"+i;return i}var h=a?t.getUTCFullYear():t.getFullYear();e=(e=(e=e.replace(/(^|[^\\\\])yyyy+/g,\"$1\"+h)).replace(/(^|[^\\\\])yy/g,\"$1\"+h.toString().substr(2,2))).replace(/(^|[^\\\\])y/g,\"$1\"+h);var c=(a?t.getUTCMonth():t.getMonth())+1;e=(e=(e=(e=e.replace(/(^|[^\\\\])MMMM+/g,\"$1\"+s[0])).replace(/(^|[^\\\\])MMM/g,\"$1\"+r[0])).replace(/(^|[^\\\\])MM/g,\"$1\"+l(c))).replace(/(^|[^\\\\])M/g,\"$1\"+c);var d=a?t.getUTCDate():t.getDate();e=(e=(e=(e=e.replace(/(^|[^\\\\])dddd+/g,\"$1\"+o[0])).replace(/(^|[^\\\\])ddd/g,\"$1\"+n[0])).replace(/(^|[^\\\\])dd/g,\"$1\"+l(d))).replace(/(^|[^\\\\])d/g,\"$1\"+d);var g=a?t.getUTCHours():t.getHours(),u=g>12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\\\])HH+/g,\"$1\"+l(g))).replace(/(^|[^\\\\])H/g,\"$1\"+g)).replace(/(^|[^\\\\])hh+/g,\"$1\"+l(u))).replace(/(^|[^\\\\])h/g,\"$1\"+u);var f=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\\\])mm+/g,\"$1\"+l(f))).replace(/(^|[^\\\\])m/g,\"$1\"+f);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\\\])ss+/g,\"$1\"+l(x))).replace(/(^|[^\\\\])s/g,\"$1\"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\\\])fff+/g,\"$1\"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\\\])ff/g,\"$1\"+l(b)),b=Math.round(b/10);var v=g<12?\"AM\":\"PM\";e=(e=(e=e.replace(/(^|[^\\\\])f/g,\"$1\"+b)).replace(/(^|[^\\\\])TT+/g,\"$1\"+v)).replace(/(^|[^\\\\])T/g,\"$1\"+v.charAt(0));var m=v.toLowerCase();e=(e=e.replace(/(^|[^\\\\])tt+/g,\"$1\"+m)).replace(/(^|[^\\\\])t/g,\"$1\"+m.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?\"Z\":y>0?\"+\":\"-\";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+\":\"+l(k)}e=e.replace(/(^|[^\\\\])K/g,\"$1\"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],\"g\"),o[A])).replace(new RegExp(n[0],\"g\"),n[A])).replace(new RegExp(s[0],\"g\"),s[c])).replace(new RegExp(r[0],\"g\"),r[c])).replace(/\\\\(.)/g,\"$1\")}},{key:\"getTimeUnitsfromTimestamp\",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),o=this.formatDate(s,\"yyyy MM dd HH mm ss fff\").split(\" \"),n=this.formatDate(r,\"yyyy MM dd HH mm ss fff\").split(\" \");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(n[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(n[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(n[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(n[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(n[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(n[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(n[0],10)}}},{key:\"isLeapYear\",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:\"calculcateLastDaysOfMonth\",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:\"determineDaysOfYear\",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:\"determineRemainingDaysOfYear\",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:\"determineDaysOfMonths\",value:function(t,e){var i=30;switch(t=m.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),P=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.tooltipKeyFormat=\"dd MMM\"}return s(t,[{key:\"xLabelFormat\",value:function(t,e,i,a){var s=this.w;if(\"datetime\"===s.config.xaxis.type&&void 0===s.config.xaxis.labels.formatter&&void 0===s.config.tooltip.x.formatter){var r=new L(this.ctx);return r.formatDate(r.getDate(e),s.config.tooltip.x.format)}return t(e,i,a)}},{key:\"defaultGeneralFormatter\",value:function(t){return Array.isArray(t)?t.map((function(t){return t})):t}},{key:\"defaultYFormatter\",value:function(t,e,i){var a=this.w;if(m.isNumber(t))if(0!==a.globals.yValueDecimal)t=t.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:a.globals.yValueDecimal);else{var s=t.toFixed(0);t=t==s?s:t.toFixed(1)}return t}},{key:\"setLabelFormatters\",value:function(){var t=this,e=this.w;return e.globals.xaxisTooltipFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttKeyFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttZFormatter=function(t){return t},e.globals.legendFormatter=function(e){return t.defaultGeneralFormatter(e)},void 0!==e.config.xaxis.labels.formatter?e.globals.xLabelFormatter=e.config.xaxis.labels.formatter:e.globals.xLabelFormatter=function(t){if(m.isNumber(t)){if(!e.config.xaxis.convertedCatToNumeric&&\"numeric\"===e.config.xaxis.type){if(m.isNumber(e.config.xaxis.decimalsInFloat))return t.toFixed(e.config.xaxis.decimalsInFloat);var i=e.globals.maxX-e.globals.minX;return i>0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},\"function\"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,\"function\"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:\"heatmapLabelFormatters\",value:function(){var t=this.w;if(\"heatmap\"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),M=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"getLabel\",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"12px\",o=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],n=this.w,l=void 0===t[a]?\"\":t[a],h=l,c=n.globals.xLabelFormatter,d=n.config.xaxis.labels.formatter,g=!1,u=new P(this.ctx),f=l;o&&(h=u.xLabelFormat(c,l,f,{i:a,dateFormatter:new L(this.ctx).formatDate,w:n}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new L(this.ctx).formatDate,w:n})));var p,x;e.length>0?(p=e[a].unit,x=null,e.forEach((function(t){\"month\"===t.unit?x=\"year\":\"day\"===t.unit?x=\"month\":\"hour\"===t.unit?x=\"day\":\"minute\"===t.unit&&(x=\"hour\")})),g=x===p,i=e[a].position,h=e[a].value):\"datetime\"===n.config.xaxis.type&&void 0===d&&(h=\"\"),void 0===h&&(h=\"\"),h=Array.isArray(h)?h:h.toString();var b=new k(this.ctx),v={};v=n.globals.rotateXLabels&&o?b.getTextRects(h,parseInt(r,10),null,\"rotate(\".concat(n.config.xaxis.labels.rotate,\" 0 0)\"),!1):b.getTextRects(h,parseInt(r,10));var m=!n.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&(\"NaN\"===String(h)||s.indexOf(h)>=0&&m)&&(h=\"\"),{x:i,text:h,textRect:v,isBold:g}}},{key:\"checkLabelBasedOnTickamount\",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return\"dataPoints\"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=\"\"),e}},{key:\"checkForOverflowingLabels\",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=\"\"),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=\"\"),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var o=s[s.length-1];e.x<o.textRect.width/(r.globals.rotateXLabels?Math.abs(r.config.xaxis.labels.rotate)/12:1.01)+o.x&&(e.text=\"\")}return e}},{key:\"checkForReversedLabels\",value:function(t,e){var i=this.w;return i.config.yaxis[t]&&i.config.yaxis[t].reversed&&e.reverse(),e}},{key:\"yAxisAllSeriesCollapsed\",value:function(t){var e=this.w.globals;return!e.seriesYAxisMap[t].some((function(t){return-1===e.collapsedSeriesIndices.indexOf(t)}))}},{key:\"translateYAxisIndex\",value:function(t){var e=this.w,i=e.globals,a=e.config.yaxis;return i.series.length>a.length||a.some((function(t){return Array.isArray(t.seriesName)}))?t:i.seriesYAxisReverseMap[t]}},{key:\"isYAxisHidden\",value:function(t){var e=this.w,i=e.config.yaxis[t];if(!i.show||this.yAxisAllSeriesCollapsed(t))return!0;if(!i.showForNullSeries){var a=e.globals.seriesYAxisMap[t],s=new A(this.ctx);return a.every((function(t){return s.isSeriesNull(t)}))}return!1}},{key:\"getYAxisForeColor\",value:function(t,e){var i=this.w;return Array.isArray(t)&&i.globals.yAxisScale[e]&&this.ctx.theme.pushExtraColors(t,i.globals.yAxisScale[e].result.length,!1),t}},{key:\"drawYAxisTicks\",value:function(t,e,i,a,s,r,o){var n=this.w,l=new k(this.ctx),h=n.globals.translateY+n.config.yaxis[s].labels.offsetY;if(n.globals.isBarHorizontal?h=0:\"heatmap\"===n.config.chart.type&&(h+=r/2),a.show&&e>0){!0===n.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=l.drawLine(t+i.offsetX-a.width+a.offsetX,h+a.offsetY,t+i.offsetX+a.offsetX,h+a.offsetY,a.color);o.add(d),h+=r}}}}]),t}(),I=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new S(this.annoCtx),this.axesUtils=new M(this.annoCtx)}return s(t,[{key:\"addYaxisAnnotation\",value:function(t,e,i){var a,s=this.w,r=t.strokeDashArray,o=this.helpers.getY1Y2(\"y1\",t),n=o.yP,l=o.clipped,h=!0,c=!1,d=t.label.text;if(null===t.y2||void 0===t.y2){if(!l){c=!0;var g=this.annoCtx.graphics.drawLine(0+t.offsetX,n+t.offsetY,this._getYAxisAnnotationWidth(t),n+t.offsetY,t.borderColor,r,t.borderWidth);e.appendChild(g.node),t.id&&g.node.classList.add(t.id)}}else{if(a=(o=this.helpers.getY1Y2(\"y2\",t)).yP,h=o.clipped,a>n){var u=n;n=a,a=u}if(!l||!h){c=!0;var f=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),n-a,0,t.fillColor,t.opacity,1,t.borderColor,r);f.node.classList.add(\"apexcharts-annotation-rect\"),f.attr(\"clip-path\",\"url(#gridRectMask\".concat(s.globals.cuid,\")\")),e.appendChild(f.node),t.id&&f.node.classList.add(t.id)}}if(c){var p=\"right\"===t.label.position?s.globals.gridWidth:\"center\"===t.label.position?s.globals.gridWidth/2:0,x=this.annoCtx.graphics.drawText({x:p+t.label.offsetX,y:(null!=a?a:n)+t.label.offsetY-3,text:d,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-yaxis-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});x.attr({rel:i}),e.appendChild(x.node)}}},{key:\"_getYAxisAnnotationWidth\",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf(\"%\")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:\"drawYAxisAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-yaxis-annotations\"});return e.config.annotations.yaxis.forEach((function(e,a){e.yAxisIndex=t.axesUtils.translateYAxisIndex(e.yAxisIndex),t.axesUtils.isYAxisHidden(e.yAxisIndex)&&t.axesUtils.yAxisAllSeriesCollapsed(e.yAxisIndex)||t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),T=function(){function t(e){i(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new S(this.annoCtx)}return s(t,[{key:\"addPointAnnotation\",value:function(t,e,i){if(!(this.w.globals.collapsedSeriesIndices.indexOf(t.seriesIndex)>-1)){var a=this.helpers.getX1X2(\"x1\",t),s=a.x,r=a.clipped,o=(a=this.helpers.getY1Y2(\"y1\",t)).yP,n=a.clipped;if(m.isNumber(s)&&!n&&!r){var l={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:\"apexcharts-point-annotation-marker \".concat(t.marker.cssClass,\" \").concat(t.id?t.id:\"\")},h=this.annoCtx.graphics.drawMarker(s+t.marker.offsetX,o+t.marker.offsetY,l);e.appendChild(h.node);var c=t.label.text?t.label.text:\"\",d=this.annoCtx.graphics.drawText({x:s+t.label.offsetX,y:o+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:c,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-point-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});if(d.attr({rel:i}),e.appendChild(d.node),t.customSVG.SVG){var g=this.annoCtx.graphics.group({class:\"apexcharts-point-annotations-custom-svg \"+t.customSVG.cssClass});g.attr({transform:\"translate(\".concat(s+t.customSVG.offsetX,\", \").concat(o+t.customSVG.offsetY,\")\")}),g.node.innerHTML=t.customSVG.SVG,e.appendChild(g.node)}if(t.image.path){var u=t.image.width?t.image.width:20,f=t.image.height?t.image.height:20;h=this.annoCtx.addImage({x:s+t.image.offsetX-u/2,y:o+t.image.offsetY-f/2,width:u,height:f,path:t.image.path,appendTo:\".apexcharts-point-annotations\"})}t.mouseEnter&&h.node.addEventListener(\"mouseenter\",t.mouseEnter.bind(this,t)),t.mouseLeave&&h.node.addEventListener(\"mouseleave\",t.mouseLeave.bind(this,t)),t.click&&h.node.addEventListener(\"click\",t.click.bind(this,t))}}}},{key:\"drawPointAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-point-annotations\"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var z={name:\"en\",options:{months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],toolbar:{exportToSVG:\"Download SVG\",exportToPNG:\"Download PNG\",exportToCSV:\"Download CSV\",menu:\"Menu\",selection:\"Selection\",selectionZoom:\"Selection Zoom\",zoomIn:\"Zoom In\",zoomOut:\"Zoom Out\",pan:\"Panning\",reset:\"Reset Zoom\"}}},X=function(){function t(){i(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,showDuplicates:!1,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:\"11px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"},formatter:void 0},axisBorder:{show:!1,color:\"#e0e0e0\",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:\"#e0e0e0\",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:\"11px\",fontWeight:900,fontFamily:void 0,cssClass:\"\"}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:\"front\",stroke:{color:\"#b6b6b6\",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:\"#fff\",strokeWidth:2,strokeColor:\"#333\",shape:\"circle\",offsetX:0,offsetY:0,cssClass:\"\"},label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"middle\",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:\"100%\",yAxisIndex:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"end\",position:\"right\",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"middle\",orientation:\"vertical\",position:\"top\",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:\"\",textAnchor:\"start\",foreColor:void 0,fontSize:\"13px\",fontFamily:void 0,fontWeight:400,appendTo:\".apexcharts-annotations\",backgroundColor:\"transparent\",borderColor:\"#c2c2c2\",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return s(t,[{key:\"init\",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:\"easeinout\",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:\"\",locales:[z],defaultLocale:\"en\",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:\"#000\",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:\"#373d3f\",fontFamily:\"Helvetica, Arial, sans-serif\",height:\"auto\",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:\"x\",fill:{color:\"#24292e\",opacity:.1},stroke:{width:1,color:\"#24292e\",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:\"normal\",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:\",\",headerCategory:\"category\",headerValue:\"value\",categoryFormatter:void 0,valueFormatter:void 0},png:{filename:void 0},svg:{filename:void 0},scale:void 0,width:void 0},autoSelected:\"zoom\"},type:\"line\",width:\"100%\",zoom:{enabled:!0,type:\"x\",autoScaleYaxis:!1,allowMouseWheelZoom:!0,zoomedArea:{fill:{color:\"#90CAF9\",opacity:.4},stroke:{color:\"#0D47A1\",opacity:.4,width:1}}}},plotOptions:{line:{isSlopeChart:!1},area:{fillTo:\"origin\"},bar:{horizontal:!1,columnWidth:\"70%\",barHeight:\"70%\",distributed:!1,borderRadius:0,borderRadiusApplication:\"around\",borderRadiusWhenStacked:\"last\",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:\"top\",maxItems:100,hideOverflowingLabels:!0,orientation:\"horizontal\",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:\"#373d3f\",fontSize:\"12px\",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:\"#00B746\",downward:\"#EF403C\"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:\"#00E396\",lower:\"#008FFB\"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,borderRadius:4,dataLabels:{format:\"scale\"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:\"50%\",background:\"transparent\",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:\"front\",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:\"#f2f2f2\",strokeWidth:\"97%\",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:\"14px\",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+\"%\"}},total:{show:!1,label:\"Total\",fontSize:\"16px\",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+\"%\"}}},barLabels:{enabled:!1,offsetX:0,offsetY:0,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:\"16px\",formatter:function(t){return t},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:\"65%\",background:\"transparent\",labels:{show:!1,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:\"20px\",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:\"Total\",fontSize:\"16px\",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:\"#e8e8e8\"},spokes:{strokeWidth:1,connectorColors:\"#e8e8e8\"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:\"#e8e8e8\",connectorColors:\"#e8e8e8\",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:\"\"},textAnchor:\"middle\",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:\"12px\",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:\"#fff\",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:\"#fff\",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.45}},fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:\"squares\",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:\"#e0e0e0\",strokeDashArray:0,position:\"back\",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:\"bottom\",horizontalAlign:\"center\",inverseOrder:!1,fontSize:\"12px\",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{size:7,fillColors:void 0,strokeWidth:1,shape:void 0,offsetX:0,offsetY:0,customHTML:void 0,onClick:void 0},itemMargin:{horizontal:5,vertical:4},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:\"#fff\",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:\"circle\",offsetX:0,offsetY:0,showNullDataPoints:!0,onClick:void 0,onDblClick:void 0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:\"center\",verticalAlign:\"middle\",offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"14px\",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:\"none\",value:0}},hover:{filter:{type:\"lighten\",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:\"darken\",value:.5}}},title:{text:void 0,align:\"left\",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:\"14px\",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:\"left\",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:\"12px\",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:\"smooth\",lineCap:\"butt\",width:2,colors:void 0,dashArray:0,fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!1,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:\"light\",cssClass:\"\",style:{fontSize:\"12px\",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:\"dd MMM\",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+\": \":\"\"}}},z:{formatter:void 0,title:\"Size: \"},marker:{show:!0,fillColors:void 0},items:{display:\"flex\"},fixed:{enabled:!1,position:\"topRight\",offsetX:0,offsetY:0}},xaxis:{type:\"category\",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:\"12px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:\"yyyy\",month:\"MMM 'yy\",day:\"dd MMM\",hour:\"HH:mm\",minute:\"HH:mm:ss\",second:\"HH:mm:ss\"}},group:{groups:[],style:{colors:[],fontSize:\"12px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"}},axisBorder:{show:!0,color:\"#e0e0e0\",width:\"100%\",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:\"#e0e0e0\",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:\"on\",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:\"bottom\",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"12px\",fontWeight:900,fontFamily:void 0,cssClass:\"\"}},crosshairs:{show:!0,width:1,position:\"back\",opacity:.9,stroke:{color:\"#b6b6b6\",width:1,dashArray:3},fill:{type:\"solid\",color:\"#B1B9C4\",gradient:{colorFrom:\"#D8E3F0\",colorTo:\"#BED1E6\",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:\"12px\",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:\"\",palette:\"palette1\",monochrome:{enabled:!1,color:\"#008FFB\",shadeTo:\"light\",shadeIntensity:.65}}}}}]),t}(),E=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.graphics=new k(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new S(this),this.xAxisAnnotations=new C(this),this.yAxisAnnotations=new I(this),this.pointsAnnotations=new T(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return s(t,[{key:\"drawAxesAnnotations\",value:function(){var t=this.w;if(t.globals.axisCharts&&t.globals.dataPoints){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],o=[i.node,e.node,a.node],n=0;n<3;n++)t.globals.dom.elGraphical.add(r[n]),!s||t.globals.resized||t.globals.dataChanged||\"scatter\"!==t.config.chart.type&&\"bubble\"!==t.config.chart.type&&t.globals.dataPoints>1&&o[n].classList.add(\"apexcharts-element-hidden\"),t.globals.delayedElements.push({el:o[n],index:0});this.helpers.annotationsBackground()}}},{key:\"drawImageAnnos\",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:\"drawTextAnnos\",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:\"addXaxisAnnotation\",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:\"addYaxisAnnotation\",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:\"addPointAnnotation\",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:\"addText\",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.foreColor,n=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,f=t.borderRadius,p=t.borderColor,x=t.appendTo,b=void 0===x?\".apexcharts-svg\":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||\"start\",fontSize:n||\"12px\",fontWeight:h||\"regular\",fontFamily:l||L.config.chart.fontFamily,foreColor:o||L.config.chart.foreColor,cssClass:c}),M=L.globals.dom.baseEl.querySelector(b);M&&M.appendChild(P.node);var I=P.bbox();if(s){var T=this.graphics.drawRect(I.x-m,I.y-C,I.width+m+w,I.height+A+C,f,d||\"transparent\",1,g,p,u);M.insertBefore(T.node,P.node)}}},{key:\"addImage\",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,o=t.y,n=void 0===o?0:o,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?\".apexcharts-svg\":g,f=i.globals.dom.Paper.image(a);f.size(h,d).move(r,n);var p=i.globals.dom.baseEl.querySelector(u);return p&&p.appendChild(f.node),f}},{key:\"addXaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"xaxis\",contextMethod:i.addXaxisAnnotation}),i}},{key:\"addYaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"yaxis\",contextMethod:i.addYaxisAnnotation}),i}},{key:\"addPointAnnotationExternal\",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"point\",contextMethod:i.addPointAnnotation}),i}},{key:\"addAnnotationExternal\",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,n=o.w,l=n.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations\")),h=l.childNodes.length+1,c=new X,d=Object.assign({},\"xaxis\"===s?c.xAxisAnnotation:\"yaxis\"===s?c.yAxisAnnotation:c.pointAnnotation),g=m.extend(d,e);switch(s){case\"xaxis\":this.addXaxisAnnotation(g,l,h);break;case\"yaxis\":this.addYaxisAnnotation(g,l,h);break;case\"point\":this.addPointAnnotation(g,l,h)}var u=n.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations .apexcharts-\").concat(s,\"-annotation-label[rel='\").concat(h,\"']\")),f=this.helpers.addBackgroundToAnno(u,g);return f&&l.insertBefore(f.node,u),i&&n.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:m.randomId(),method:r,label:\"addAnnotation\",params:e}),a}},{key:\"clearAnnotations\",value:function(t){for(var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations\"),a=e.globals.memory.methodsToExec.length-1;a>=0;a--)\"addText\"!==e.globals.memory.methodsToExec[a].label&&\"addAnnotation\"!==e.globals.memory.methodsToExec[a].label||e.globals.memory.methodsToExec.splice(a,1);i=m.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:\"removeAnnotation\",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(\".\".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),Y=function(t){var e,i=t.isTimeline,a=t.ctx,s=t.seriesIndex,r=t.dataPointIndex,o=t.y1,n=t.y2,l=t.w,h=l.globals.seriesRangeStart[s][r],c=l.globals.seriesRangeEnd[s][r],d=l.globals.labels[r],g=l.config.series[s].name?l.config.series[s].name:\"\",u=l.globals.ttKeyFormatter,f=l.config.tooltip.y.title.formatter,p={w:l,seriesIndex:s,dataPointIndex:r,start:h,end:c};(\"function\"==typeof f&&(g=f(g,p)),null!==(e=l.config.series[s].data[r])&&void 0!==e&&e.x&&(d=l.config.series[s].data[r].x),i)||\"datetime\"===l.config.xaxis.type&&(d=new P(a).xLabelFormat(l.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new L(a).formatDate,w:l}));\"function\"==typeof u&&(d=u(d,p)),Number.isFinite(o)&&Number.isFinite(n)&&(h=o,c=n);var x=\"\",b=\"\",v=l.globals.colors[s];if(void 0===l.config.tooltip.x.formatter)if(\"datetime\"===l.config.xaxis.type){var m=new L(a);x=m.formatDate(m.getDate(h),l.config.tooltip.x.format),b=m.formatDate(m.getDate(c),l.config.tooltip.x.format)}else x=h,b=c;else x=l.config.tooltip.x.formatter(h),b=l.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:x,endVal:b,ylabel:d,color:v,seriesName:g}},R=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,o=t.seriesIndex,n=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(o);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[o][n]),c='<span class=\"value start-value\">\\n  '.concat(s,'\\n  </span> <span class=\"separator\">-</span> <span class=\"value end-value\">\\n  ').concat(r,\"\\n  </span>\");return'<div class=\"apexcharts-tooltip-rangebar\"><div> <span class=\"series-name\" style=\"color: '+e+'\">'+(i||\"\")+'</span></div><div> <span class=\"category\">'+a+\": </span> \"+(t.w.globals.comboCharts?\"rangeArea\"===t.w.config.series[o].type||\"rangeBar\"===t.w.config.series[o].type?c:\"<span>\".concat(h,\"</span>\"):c)+\" </div></div>\"},F=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"hideYAxis\",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text=\"\",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:\"line\",value:function(){return{chart:{animations:{easing:\"swing\"}},dataLabels:{enabled:!1},stroke:{width:5,curve:\"straight\"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:\"sparkline\",value:function(t){this.hideYAxis();return m.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:\"slope\",value:function(){return this.hideYAxis(),{chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!0,formatter:function(t,e){var i=e.w.config.series[e.seriesIndex].name;return null!==t?i+\": \"+t:\"\"},background:{enabled:!1},offsetX:-5},grid:{xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{position:\"top\",labels:{style:{fontSize:14,fontWeight:900}},tooltip:{enabled:!1},crosshairs:{show:!1}},markers:{size:8,hover:{sizeOffset:1}},legend:{show:!1},tooltip:{shared:!1,intersect:!0,followCursor:!0},stroke:{width:5,curve:\"straight\"}}}},{key:\"bar\",value:function(){return{chart:{stacked:!1,animations:{easing:\"swing\"}},plotOptions:{bar:{dataLabels:{position:\"center\"}}},dataLabels:{style:{colors:[\"#fff\"]},background:{enabled:!1}},stroke:{width:0,lineCap:\"round\"},fill:{opacity:.85},legend:{markers:{shape:\"square\"}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:\"between\",crosshairs:{width:\"barWidth\",position:\"back\",fill:{type:\"gradient\"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:\"funnel\",value:function(){return this.hideYAxis(),g(g({},this.bar()),{},{chart:{animations:{easing:\"linear\",speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:\"around\",borderRadius:0,dataLabels:{position:\"center\"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:\"candlestick\",value:function(){var t=this;return{stroke:{width:1,colors:[\"#333\"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,[\"Open\",\"High\",\"\",\"Low\",\"Close\"],\"candlestick\")}},states:{active:{filter:{type:\"none\"}}},xaxis:{crosshairs:{width:1}}}}},{key:\"boxPlot\",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:[\"#24292e\"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,[\"Minimum\",\"Q1\",\"Median\",\"Q3\",\"Maximum\"],\"boxPlot\")}},markers:{size:7,strokeWidth:1,strokeColors:\"#111\"},xaxis:{crosshairs:{width:1}}}}},{key:\"rangeBar\",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:\"square\"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:\"center\"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?\"rangeBar\"===s.config.series[i].type||\"rangeArea\"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:[\"#fff\"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var e=Y(g(g({},t),{},{isTimeline:!0})),i=e.color,a=e.seriesName,s=e.ylabel,r=e.startVal,o=e.endVal;return R(g(g({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:o}))}(t):function(t){var e=Y(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,o=e.end;return R(g(g({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:o}))}(t)}},xaxis:{tickPlacement:\"between\",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:\"dumbbell\",value:function(t){var e,i;return null!==(e=t.plotOptions.bar)&&void 0!==e&&e.barHeight||(t.plotOptions.bar.barHeight=2),null!==(i=t.plotOptions.bar)&&void 0!==i&&i.columnWidth||(t.plotOptions.bar.columnWidth=2),t}},{key:\"area\",value:function(){return{stroke:{width:4,fill:{type:\"solid\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:\"gradient\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:\"rangeArea\",value:function(){return{stroke:{curve:\"straight\",width:0},fill:{type:\"solid\",opacity:.6},markers:{size:0},states:{hover:{filter:{type:\"none\"}},active:{filter:{type:\"none\"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var e=Y(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,o=e.end;return R(g(g({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:o}))}(t)}}}}},{key:\"brush\",value:function(t){return m.extend(t,{chart:{toolbar:{autoSelected:\"selection\",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:\"stacked100\",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),\"bar\"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return\"number\"==typeof t&&t?t.toFixed(0)+\"%\":t}),t}},{key:\"stackedBars\",value:function(){var t=this.bar();return g(g({},t),{},{plotOptions:g(g({},t.plotOptions),{},{bar:g(g({},t.plotOptions.bar),{},{borderRadiusApplication:\"end\",borderRadiusWhenStacked:\"last\"})})})}},{key:\"convertCatToNumeric\",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:\"convertCatToNumericXaxis\",value:function(t,e,i){t.xaxis.type=\"numeric\",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return m.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return m.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||\"dataPoints\",t}},{key:\"bubble\",value:function(){return{dataLabels:{style:{colors:[\"#fff\"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:\"solid\",gradient:{shade:\"light\",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:\"scatter\",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:\"heatmap\",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:[\"#fff\"]}},stroke:{colors:[\"#fff\"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:\"top\",markers:{shape:\"square\"}},grid:{padding:{right:20}}}}},{key:\"treemap\",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:[\"#fff\"]}},stroke:{show:!0,width:2,colors:[\"#fff\"]},legend:{show:!1},fill:{opacity:1,gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:\"pie\",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"light\",stops:[0,100]}},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"donut\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"light\",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"polarArea\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"radar\",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:\"11px\"}},stroke:{width:2},markers:{size:5,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},xaxis:{labels:{formatter:function(t){return t},style:{colors:[\"#a8a8a8\"],fontSize:\"11px\"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:\"radialBar\",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:\"dark\",shadeIntensity:.4,inverseColors:!1,type:\"diagonal2\",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:\"right\"},tooltip:{enabled:!1,fillSeriesColor:!0},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}},{key:\"_getBoxTooltip\",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],o=t.globals.seriesCandleH[e][i],n=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'<div class=\"apexcharts-custom-tooltip\">\\n          '.concat(t.config.series[e].name?t.config.series[e].name:\"series-\"+(e+1),\": <strong>\").concat(t.globals.series[e][i],\"</strong>\\n        </div>\"):'<div class=\"apexcharts-tooltip-box apexcharts-tooltip-'.concat(t.config.chart.type,'\">')+\"<div>\".concat(a[0],': <span class=\"value\">')+r+\"</span></div>\"+\"<div>\".concat(a[1],': <span class=\"value\">')+o+\"</span></div>\"+(n?\"<div>\".concat(a[2],': <span class=\"value\">')+n+\"</span></div>\":\"\")+\"<div>\".concat(a[3],': <span class=\"value\">')+l+\"</span></div>\"+\"<div>\".concat(a[4],': <span class=\"value\">')+h+\"</span></div></div>\"}}]),t}(),D=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"init\",value:function(t){var e=t.responsiveOverride,i=this.opts,a=new X,s=new F(i);this.chartType=i.chart.type,i=this.extendYAxis(i),i=this.extendAnnotations(i);var r=a.init(),o={};if(i&&\"object\"===b(i)){var n,l,h,c,d,g,u,f,p,x,v={};v=-1!==[\"line\",\"area\",\"bar\",\"candlestick\",\"boxPlot\",\"rangeBar\",\"rangeArea\",\"bubble\",\"scatter\",\"heatmap\",\"treemap\",\"pie\",\"polarArea\",\"donut\",\"radar\",\"radialBar\"].indexOf(i.chart.type)?s[i.chart.type]():s.line(),null!==(n=i.plotOptions)&&void 0!==n&&null!==(l=n.bar)&&void 0!==l&&l.isFunnel&&(v=s.funnel()),i.chart.stacked&&\"bar\"===i.chart.type&&(v=s.stackedBars()),null!==(h=i.chart.brush)&&void 0!==h&&h.enabled&&(v=s.brush(v)),null!==(c=i.plotOptions)&&void 0!==c&&null!==(d=c.line)&&void 0!==d&&d.isSlopeChart&&(v=s.slope()),i.chart.stacked&&\"100%\"===i.chart.stackType&&(i=s.stacked100(i)),null!==(g=i.plotOptions)&&void 0!==g&&null!==(u=g.bar)&&void 0!==u&&u.isDumbbell&&(i=s.dumbbell(i)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(i),i.xaxis=i.xaxis||window.Apex.xaxis||{},e||(i.xaxis.convertedCatToNumeric=!1),(null!==(f=(i=this.checkForCatToNumericXAxis(this.chartType,v,i)).chart.sparkline)&&void 0!==f&&f.enabled||null!==(p=window.Apex.chart)&&void 0!==p&&null!==(x=p.sparkline)&&void 0!==x&&x.enabled)&&(v=s.sparkline(v)),o=m.extend(r,v)}var y=m.extend(o,window.Apex);return r=m.extend(y,i),r=this.handleUserInputErrors(r)}},{key:\"checkForCatToNumericXAxis\",value:function(t,e,i){var a,s,r=new F(i),o=(\"bar\"===t||\"boxPlot\"===t)&&(null===(a=i.plotOptions)||void 0===a||null===(s=a.bar)||void 0===s?void 0:s.horizontal),n=\"pie\"===t||\"polarArea\"===t||\"donut\"===t||\"radar\"===t||\"radialBar\"===t||\"heatmap\"===t,l=\"datetime\"!==i.xaxis.type&&\"numeric\"!==i.xaxis.type,h=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return o||n||!l||\"between\"===h||(i=r.convertCatToNumeric(i)),i}},{key:\"extendYAxis\",value:function(t,e){var i=new X;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=m.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[m.extend(i.yAxis,t.yaxis)]:t.yaxis=m.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name=\"series-\".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=m.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn(\"A multi-series logarithmic chart should have equal number of series and y-axes\"),t}},{key:\"extendAnnotations\",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:\"extendYAxisAnnotations\",value:function(t){var e=new X;return t.annotations.yaxis=m.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:\"extendXAxisAnnotations\",value:function(t){var e=new X;return t.annotations.xaxis=m.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:\"extendPointAnnotations\",value:function(t){var e=new X;return t.annotations.points=m.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:\"checkForDarkTheme\",value:function(t){t.theme&&\"dark\"===t.theme.mode&&(t.tooltip||(t.tooltip={}),\"light\"!==t.tooltip.theme&&(t.tooltip.theme=\"dark\"),t.chart.foreColor||(t.chart.foreColor=\"#f6f7f8\"),t.theme.palette||(t.theme.palette=\"palette4\"))}},{key:\"handleUserInputErrors\",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error(\"tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.\");if(\"bar\"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error(\"Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false\");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return\"bar\"!==e.chart.type&&\"rangeBar\"!==e.chart.type||e.tooltip.shared&&\"barWidth\"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width=\"tickWidth\"),\"candlestick\"!==e.chart.type&&\"boxPlot\"!==e.chart.type||e.yaxis[0].reversed&&(console.warn(\"Reversed y-axis in \".concat(e.chart.type,\" chart is not supported.\")),e.yaxis[0].reversed=!1),e}}]),t}(),H=function(){function t(){i(this,t)}return s(t,[{key:\"initGlobalVars\",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasXaxisGroups=!1,t.groups=[],t.barGroups=[],t.lineGroups=[],t.areaGroups=[],t.hasSeriesGroups=!1,t.seriesGroups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.lastWheelExecution=0,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0,t.multiAxisTickAmount=0}},{key:\"globalVars\",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:\"ontouchstart\"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],invalidLogScale:!1,ignoreYAxisIndexes:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:\"zoom\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:\"pan\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:\"selection\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:\"http://www.w3.org/2000/svg\",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,isSlopeChart:t.plotOptions.line.isSlopeChart,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,niceScaleAllowedMagMsd:[[1,1,2,5,5,5,10,10,10,10,10],[1,1,2,5,5,5,10,10,10,10,10]],niceScaleDefaultTicks:[1,2,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,12,12,12,12,12,12,12,12,12,24],seriesYAxisMap:[],seriesYAxisReverseMap:[]}}},{key:\"init\",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=m.extend({},t),e.initialSeries=m.clone(t.series),e.lastXAxis=m.clone(e.initialConfig.xaxis),e.lastYAxis=m.clone(e.initialConfig.yaxis),e}}]),t}(),O=function(){function t(e){i(this,t),this.opts=e}return s(t,[{key:\"init\",value:function(){var t=new D(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new H).init(t)}}}]),t}(),N=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0,this.patternIDs=[]}return s(t,[{key:\"clippedImgArea\",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,o=t.image,n=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(n=i.fill.image.width+1,l=i.fill.image.height):(n=r+1,l=r):(n=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,\"pattern\");k.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:\"userSpaceOnUse\",width:n+\"px\",height:l+\"px\"});var c=document.createElementNS(e.globals.SVGNS,\"image\");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,\"href\",o),k.setAttrs(c,{x:0,y:0,preserveAspectRatio:\"none\",width:n+\"px\",height:l+\"px\"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:\"getSeriesIndex\",value:function(t){var e=this.w,i=e.config.chart.type;return(\"bar\"===i||\"rangeBar\"===i)&&e.config.plotOptions.bar.distributed||\"heatmap\"===i||\"treemap\"===i?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:\"fillPath\",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),\"function\"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var n=t.fillType?t.fillType:this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color),o||(o=\"#fff\",console.warn(\"undefined color - ApexCharts\"));var h=o;if(-1===o.indexOf(\"rgb\")?o.length<9&&(h=m.hexToRgba(o,l)):o.indexOf(\"rgba\")>-1&&(l=m.getOpacityFromRGBA(o)),t.opacity&&(l=t.opacity),\"pattern\"===n&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:l,defaultColor:h})),\"gradient\"===n&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:l,i:this.seriesIndex})),\"image\"===n){var c=r.fill.image.src,d=t.patternID?t.patternID:\"\",g=\"pattern\".concat(e.globals.cuid).concat(t.seriesNumber+1).concat(d);-1===this.patternIDs.indexOf(g)&&(this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber<c.length?c[t.seriesNumber]:c[0]:c,width:t.width?t.width:void 0,height:t.height?t.height:void 0,patternUnits:t.patternUnits,patternID:g}),this.patternIDs.push(g)),i=\"url(#\".concat(g,\")\")}else i=\"gradient\"===n?s:\"pattern\"===n?a:h;return t.solid&&(i=h),i}},{key:\"getFillType\",value:function(t){var e=this.w;return Array.isArray(e.config.fill.type)?e.config.fill.type[t]:e.config.fill.type}},{key:\"getFillColors\",value:function(){var t=this.w,e=t.config,i=this.opts,a=[];return t.globals.comboCharts?\"line\"===t.config.series[this.seriesIndex].type?Array.isArray(t.globals.stroke.colors)?a=t.globals.stroke.colors:a.push(t.globals.stroke.colors):Array.isArray(t.globals.fill.colors)?a=t.globals.fill.colors:a.push(t.globals.fill.colors):\"line\"===e.chart.type?Array.isArray(t.globals.stroke.colors)?a=t.globals.stroke.colors:a.push(t.globals.stroke.colors):Array.isArray(t.globals.fill.colors)?a=t.globals.fill.colors:a.push(t.globals.fill.colors),void 0!==i.fillColors&&(a=[],Array.isArray(i.fillColors)?a=i.fillColors.slice():a.push(i.fillColors)),a}},{key:\"handlePatternFill\",value:function(t){var e=t.fillConfig,i=t.patternFill,a=t.fillColor,s=t.fillOpacity,r=t.defaultColor,o=this.w.config.fill;e&&(o=e);var n=this.opts,l=new k(this.ctx),h=Array.isArray(o.pattern.strokeWidth)?o.pattern.strokeWidth[this.seriesIndex]:o.pattern.strokeWidth,c=a;Array.isArray(o.pattern.style)?i=void 0!==o.pattern.style[n.seriesNumber]?l.drawPattern(o.pattern.style[n.seriesNumber],o.pattern.width,o.pattern.height,c,h,s):r:i=l.drawPattern(o.pattern.style,o.pattern.width,o.pattern.height,c,h,s);return i}},{key:\"handleGradientFill\",value:function(t){var e=t.fillColor,i=t.fillOpacity,a=t.fillConfig,s=t.i,r=this.w.config.fill;a&&(r=g(g({},r),a));var o,n=this.opts,l=new k(this.ctx),h=new m,c=r.gradient.type,d=e,u=void 0===r.gradient.opacityFrom?i:Array.isArray(r.gradient.opacityFrom)?r.gradient.opacityFrom[s]:r.gradient.opacityFrom;d.indexOf(\"rgba\")>-1&&(u=m.getOpacityFromRGBA(d));var f=void 0===r.gradient.opacityTo?i:Array.isArray(r.gradient.opacityTo)?r.gradient.opacityTo[s]:r.gradient.opacityTo;if(void 0===r.gradient.gradientToColors||0===r.gradient.gradientToColors.length)o=\"dark\"===r.gradient.shade?h.shadeColor(-1*parseFloat(r.gradient.shadeIntensity),e.indexOf(\"rgb\")>-1?m.rgb2hex(e):e):h.shadeColor(parseFloat(r.gradient.shadeIntensity),e.indexOf(\"rgb\")>-1?m.rgb2hex(e):e);else if(r.gradient.gradientToColors[n.seriesNumber]){var p=r.gradient.gradientToColors[n.seriesNumber];o=p,p.indexOf(\"rgba\")>-1&&(f=m.getOpacityFromRGBA(p))}else o=e;if(r.gradient.gradientFrom&&(d=r.gradient.gradientFrom),r.gradient.gradientTo&&(o=r.gradient.gradientTo),r.gradient.inverseColors){var x=d;d=o,o=x}return d.indexOf(\"rgb\")>-1&&(d=m.rgb2hex(d)),o.indexOf(\"rgb\")>-1&&(o=m.rgb2hex(o)),l.drawGradient(c,d,o,u,f,n.size,r.gradient.stops,r.gradient.colorStops,s)}}]),t}(),W=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"setGlobalMarkerSize\",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length<t.globals.series.length+1)for(var e=0;e<=t.globals.series.length;e++)void 0===t.globals.markers.size[e]&&t.globals.markers.size.push(t.globals.markers.size[0])}else t.globals.markers.size=t.config.series.map((function(e){return t.config.markers.size}))}},{key:\"plotChartMarkers\",value:function(t,e,i,a){var s,r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=this.w,n=e,l=t,h=null,c=new k(this.ctx),d=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||d)&&(h=c.group({class:r||d?\"\":\"apexcharts-series-markers\"})).attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(o.globals.cuid,\")\")),Array.isArray(l.x))for(var g=0;g<l.x.length;g++){var u=i;1===i&&0===g&&(u=0),1===i&&1===g&&(u=1);var f=\"apexcharts-marker\";if(\"line\"!==o.config.chart.type&&\"area\"!==o.config.chart.type||o.globals.comboCharts||o.config.tooltip.intersect||(f+=\" no-pointer-events\"),(Array.isArray(o.config.markers.size)?o.globals.markers.size[e]>0:o.config.markers.size>0)||r||d){m.isNumber(l.y[g])?f+=\" w\".concat(m.randomId()):f=\"apexcharts-nullpoint\";var p=this.getMarkerConfig({cssClass:f,seriesIndex:e,dataPointIndex:u});o.config.series[n].data[u]&&(o.config.series[n].data[u].fillColor&&(p.pointFillColor=o.config.series[n].data[u].fillColor),o.config.series[n].data[u].strokeColor&&(p.pointStrokeColor=o.config.series[n].data[u].strokeColor)),void 0!==a&&(p.pSize=a),(l.x[g]<-o.globals.markers.largestSize||l.x[g]>o.globals.gridWidth+o.globals.markers.largestSize||l.y[g]<-o.globals.markers.largestSize||l.y[g]>o.globals.gridHeight+o.globals.markers.largestSize)&&(p.pSize=0),(s=c.drawMarker(l.x[g],l.y[g],p)).attr(\"rel\",u),s.attr(\"j\",u),s.attr(\"index\",e),s.node.setAttribute(\"default-marker-size\",p.pSize),new w(this.ctx).setSelectionFilter(s,e,u),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([l.x[g],l.y[g]])}return h}},{key:\"getMarkerConfig\",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.radius,o=void 0===r?null:r,n=t.size,l=void 0===n?null:n,h=t.strokeWidth,c=void 0===h?null:h,d=this.w,g=this.getMarkerStyle(i),u=null===l?d.globals.markers.size[i]:l,f=d.config.markers;return null!==s&&f.discrete.length&&f.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(g.pointStrokeColor=t.strokeColor,g.pointFillColor=t.fillColor,u=t.size,g.pointShape=t.shape)})),{pSize:null===o?u:o,pRadius:null!==o?o:f.radius,pointStrokeWidth:null!==c?c:Array.isArray(f.strokeWidth)?f.strokeWidth[i]:f.strokeWidth,pointStrokeColor:g.pointStrokeColor,pointFillColor:g.pointFillColor,shape:g.pointShape||(Array.isArray(f.shape)?f.shape[i]:f.shape),class:e,pointStrokeOpacity:Array.isArray(f.strokeOpacity)?f.strokeOpacity[i]:f.strokeOpacity,pointStrokeDashArray:Array.isArray(f.strokeDashArray)?f.strokeDashArray[i]:f.strokeDashArray,pointFillOpacity:Array.isArray(f.fillOpacity)?f.fillOpacity[i]:f.fillOpacity,seriesIndex:i}}},{key:\"addEvents\",value:function(t){var e=this.w,i=new k(this.ctx);t.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener(\"click\",e.config.markers.onClick),t.node.addEventListener(\"dblclick\",e.config.markers.onDblClick),t.node.addEventListener(\"touchstart\",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:\"getMarkerStyle\",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),B=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled}return s(t,[{key:\"draw\",value:function(t,e,i){var a=this.w,s=new k(this.ctx),r=i.realIndex,o=i.pointsPos,n=i.zRatio,l=i.elParent,h=s.group({class:\"apexcharts-series-markers apexcharts-series-\".concat(a.config.chart.type)});if(h.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(a.globals.cuid,\")\")),Array.isArray(o.x))for(var c=0;c<o.x.length;c++){var d=e+1,g=!0;0===e&&0===c&&(d=0),0===e&&1===c&&(d=1);var u=a.globals.markers.size[r];if(n!==1/0){var f=a.config.plotOptions.bubble;u=a.globals.seriesZ[r][d],f.zScaling&&(u/=n),f.minBubbleRadius&&u<f.minBubbleRadius&&(u=f.minBubbleRadius),f.maxBubbleRadius&&u>f.maxBubbleRadius&&(u=f.maxBubbleRadius)}var p=o.x[c],x=o.y[c];if(u=u||0,null!==x&&void 0!==a.globals.series[r][d]||(g=!1),g){var b=this.drawPoint(p,x,u,r,d,e);h.add(b)}l.add(h)}}},{key:\"drawPoint\",value:function(t,e,i,a,s,r){var o=this.w,n=a,l=new y(this.ctx),h=new w(this.ctx),c=new N(this.ctx),d=new W(this.ctx),g=new k(this.ctx),u=d.getMarkerConfig({cssClass:\"apexcharts-marker\",seriesIndex:n,dataPointIndex:s,radius:\"bubble\"===o.config.chart.type||o.globals.comboCharts&&o.config.series[a]&&\"bubble\"===o.config.series[a].type?i:null}),f=c.fillPath({seriesNumber:a,dataPointIndex:s,color:u.pointFillColor,patternUnits:\"objectBoundingBox\",value:o.globals.series[a][r]}),p=g.drawMarker(t,e,u);if(o.config.series[n].data[s]&&o.config.series[n].data[s].fillColor&&(f=o.config.series[n].data[s].fillColor),p.attr({fill:f}),o.config.chart.dropShadow.enabled){var x=o.config.chart.dropShadow;h.dropShadow(p,x,a)}if(!this.initialAnim||o.globals.dataChanged||o.globals.resized)o.globals.animationEnded=!0;else{var b=o.config.chart.animations.speed;l.animateMarker(p,b,o.globals.easing,(function(){window.setTimeout((function(){l.animationCompleted(p)}),100)}))}return p.attr({rel:s,j:s,index:a,\"default-marker-size\":u.pSize}),h.setSelectionFilter(p,a,s),d.addEvents(p),p.node.classList.add(\"apexcharts-marker\"),p}},{key:\"centerTextInBubble\",value:function(t){var e=this.w;return{y:t+=parseInt(e.config.dataLabels.style.fontSize,10)/4}}}]),t}(),G=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"dataLabelsCorrection\",value:function(t,e,i,a,s,r,o){var n=this.w,l=!1,h=new k(this.ctx).getTextRects(i,o),c=h.width,d=h.height;e<0&&(e=0),e>n.globals.gridHeight+d&&(e=n.globals.gridHeight+d/2),void 0===n.globals.dataLabelsRects[a]&&(n.globals.dataLabelsRects[a]=[]),n.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var g=n.globals.dataLabelsRects[a].length-2,u=void 0!==n.globals.lastDrawnDataLabelsIndexes[a]?n.globals.lastDrawnDataLabelsIndexes[a][n.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==n.globals.dataLabelsRects[a][g]){var f=n.globals.dataLabelsRects[a][u];(t>f.x+f.width||e>f.y+f.height||e+d<f.y||t+c<f.x)&&(l=!0)}return(0===s||r)&&(l=!0),{x:t,y:e,textRects:h,drawnextLabel:l}}},{key:\"drawDataLabel\",value:function(t){var e=this,i=t.type,a=t.pos,s=t.i,r=t.j,o=t.isRangeStart,n=t.strokeWidth,l=void 0===n?2:n,h=this.w,c=new k(this.ctx),d=h.config.dataLabels,g=0,u=0,f=r,p=null;if(-1!==h.globals.collapsedSeriesIndices.indexOf(s)||!d.enabled||!Array.isArray(a.x))return p;p=c.group({class:\"apexcharts-data-labels\"});for(var x=0;x<a.x.length;x++)if(g=a.x[x]+d.offsetX,u=a.y[x]+d.offsetY+l,!isNaN(g)){1===r&&0===x&&(f=0),1===r&&1===x&&(f=1);var b=h.globals.series[s][f];\"rangeArea\"===i&&(b=o?h.globals.seriesRangeStart[s][f]:h.globals.seriesRangeEnd[s][f]);var v=\"\",m=function(t){return h.config.dataLabels.formatter(t,{ctx:e.ctx,seriesIndex:s,dataPointIndex:f,w:h})};if(\"bubble\"===h.config.chart.type)v=m(b=h.globals.seriesZ[s][f]),u=a.y[x],u=new B(this.ctx).centerTextInBubble(u,s,f).y;else void 0!==b&&(v=m(b));var y=h.config.dataLabels.textAnchor;h.globals.isSlopeChart&&(y=0===f?\"end\":f===h.config.series[s].data.length-1?\"start\":\"middle\"),this.plotDataLabelsText({x:g,y:u,text:v,i:s,j:f,parent:p,offsetCorrection:!0,dataLabelsConfig:h.config.dataLabels,textAnchor:y})}return p}},{key:\"plotDataLabelsText\",value:function(t){var e=this.w,i=new k(this.ctx),a=t.x,s=t.y,r=t.i,o=t.j,n=t.text,l=t.textAnchor,h=t.fontSize,c=t.parent,d=t.dataLabelsConfig,g=t.color,u=t.alwaysDrawDataLabel,f=t.offsetCorrection,p=t.className,x=null;if(Array.isArray(e.config.dataLabels.enabledOnSeries)&&e.config.dataLabels.enabledOnSeries.indexOf(r)<0)return x;var b={x:a,y:s,drawnextLabel:!0,textRects:null};f&&(b=this.dataLabelsCorrection(a,s,n,r,o,u,parseInt(d.style.fontSize,10))),e.globals.zoomed||(a=b.x,s=b.y),b.textRects&&(a<-20-b.textRects.width||a>e.globals.gridWidth+b.textRects.width+30)&&(n=\"\");var v=e.globals.dataLabels.style.colors[r];((\"bar\"===e.config.chart.type||\"rangeBar\"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(v=e.globals.dataLabels.style.colors[o]),\"function\"==typeof v&&(v=v({series:e.globals.series,seriesIndex:r,dataPointIndex:o,w:e})),g&&(v=g);var m=d.offsetX,y=d.offsetY;if(\"bar\"!==e.config.chart.type&&\"rangeBar\"!==e.config.chart.type||(m=0,y=0),e.globals.isSlopeChart&&(0!==o&&(m=-2*d.offsetX+5),0!==o&&o!==e.config.series[r].data.length-1&&(m=0)),b.drawnextLabel){if((x=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+m,y:s+y,foreColor:v,textAnchor:l||d.textAnchor,text:n,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||\"normal\"})).attr({class:p||\"apexcharts-datalabel\",cx:a,cy:s}),d.dropShadow.enabled){var A=d.dropShadow;new w(this.ctx).dropShadow(x,A)}c.add(x),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(o)}return x}},{key:\"addBackgroundToDataLabel\",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,o=e.width,n=e.height,l=new k(this.ctx).drawRect(e.x-s,e.y-r/2,o+2*s,n+r,a.borderRadius,\"transparent\"!==i.config.chart.background&&i.config.chart.background?i.config.chart.background:\"#fff\",a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new w(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:\"dataLabelsBackground\",value:function(){var t=this.w;if(\"bubble\"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-datalabels text\"),i=0;i<e.length;i++){var a=e[i],s=a.getBBox(),r=null;if(s.width&&s.height&&(r=this.addBackgroundToDataLabel(a,s)),r){a.parentNode.insertBefore(r.node,a);var o=a.getAttribute(\"fill\");t.config.chart.animations.enabled&&!t.globals.resized&&!t.globals.dataChanged?r.animate().attr({fill:o}):r.attr({fill:o}),a.setAttribute(\"fill\",t.config.dataLabels.background.foreColor)}}}},{key:\"bringForward\",value:function(){for(var t=this.w,e=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-datalabels\"),i=t.globals.dom.baseEl.querySelector(\".apexcharts-plot-series:last-child\"),a=0;a<e.length;a++)i&&i.insertBefore(e[a],i.nextSibling)}}]),t}(),V=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.legendInactiveClass=\"legend-mouseover-inactive\"}return s(t,[{key:\"getAllSeriesEls\",value:function(){return this.w.globals.dom.baseEl.getElementsByClassName(\"apexcharts-series\")}},{key:\"getSeriesByName\",value:function(t){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-inner .apexcharts-series[seriesName='\".concat(m.escapeString(t),\"']\"))}},{key:\"isSeriesHidden\",value:function(t){var e=this.getSeriesByName(t),i=parseInt(e.getAttribute(\"data:realIndex\"),10);return{isHidden:e.classList.contains(\"apexcharts-series-collapsed\"),realIndex:i}}},{key:\"addCollapsedClassToSeries\",value:function(t,e){var i=this.w;function a(i){for(var a=0;a<i.length;a++)i[a].index===e&&t.node.classList.add(\"apexcharts-series-collapsed\")}a(i.globals.collapsedSeries),a(i.globals.ancillaryCollapsedSeries)}},{key:\"toggleSeries\",value:function(t){var e=this.isSeriesHidden(t);return this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex,e.isHidden),e.isHidden}},{key:\"showSeries\",value:function(t){var e=this.isSeriesHidden(t);e.isHidden&&this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex,!0)}},{key:\"hideSeries\",value:function(t){var e=this.isSeriesHidden(t);e.isHidden||this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex,!1)}},{key:\"resetSeries\",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=m.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:\"emptyCollapsedSeries\",value:function(t){for(var e=this.w,i=0;i<t.length;i++)e.globals.collapsedSeriesIndices.indexOf(i)>-1&&(t[i].data=[]);return t}},{key:\"highlightSeries\",value:function(t){var e=this.w,i=this.getSeriesByName(t),a=parseInt(null==i?void 0:i.getAttribute(\"data:realIndex\"),10),s=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-series, .apexcharts-datalabels, .apexcharts-yaxis\"),r=null,o=null,n=null;if(e.globals.axisCharts||\"radialBar\"===e.config.chart.type)if(e.globals.axisCharts){r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(a,\"']\")),o=e.globals.dom.baseEl.querySelector(\".apexcharts-datalabels[data\\\\:realIndex='\".concat(a,\"']\"));var l=e.globals.seriesYAxisReverseMap[a];n=e.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(l,\"']\"))}else r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(a+1,\"']\"));else r=e.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(a+1,\"'] path\"));for(var h=0;h<s.length;h++)s[h].classList.add(this.legendInactiveClass);if(r)e.globals.axisCharts||r.parentNode.classList.remove(this.legendInactiveClass),r.classList.remove(this.legendInactiveClass),null!==o&&o.classList.remove(this.legendInactiveClass),null!==n&&n.classList.remove(this.legendInactiveClass);else for(var c=0;c<s.length;c++)s[c].classList.remove(this.legendInactiveClass)}},{key:\"toggleSeriesOnHover\",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(\".apexcharts-series, .apexcharts-datalabels, .apexcharts-yaxis\");if(\"mousemove\"===t.type){var s=parseInt(e.getAttribute(\"rel\"),10)-1;this.highlightSeries(i.globals.seriesNames[s])}else if(\"mouseout\"===t.type)for(var r=0;r<a.length;r++)a[r].classList.remove(this.legendInactiveClass)}},{key:\"highlightRangeInSeries\",value:function(t,e){var i=this,a=this.w,s=a.globals.dom.baseEl.getElementsByClassName(\"apexcharts-heatmap-rect\"),r=function(t){for(var e=0;e<s.length;e++)s[e].classList[t](i.legendInactiveClass)};if(\"mousemove\"===t.type){var o=parseInt(e.getAttribute(\"rel\"),10)-1;r(\"add\");var n=a.config.plotOptions.heatmap.colorScale.ranges;!function(t,e){for(var a=0;a<s.length;a++){var r=Number(s[a].getAttribute(\"val\"));r>=t.from&&(r<t.to||t.to===e&&r===e)&&s[a].classList.remove(i.legendInactiveClass)}}(n[o],n.reduce((function(t,e){return Math.max(t,e.to)}),0))}else\"mouseout\"===t.type&&r(\"remove\")}},{key:\"getActiveConfigSeriesIndex\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"asc\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r=\"asc\"===t?0:s.length-1;\"asc\"===t?r<s.length:r>=0;\"asc\"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:\"getBarSeriesIndices\",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return\"bar\"===t.type||\"column\"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:\"getPreviousPaths\",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute(\"data:realIndex\")},o=0;o<s.length;o++)if(s[o].hasAttribute(\"pathTo\")){var n=s[o].getAttribute(\"pathTo\");r.paths.push({d:n})}t.globals.previousPaths.push(r)}t.globals.previousPaths=[];[\"line\",\"area\",\"bar\",\"rangebar\",\"rangeArea\",\"candlestick\",\"radar\"].forEach((function(i){for(var a,s=(a=i,t.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(a,\"-series .apexcharts-series\"))),r=0;r<s.length;r++)e(s,r,i)})),this.handlePrevBubbleScatterPaths(\"bubble\"),this.handlePrevBubbleScatterPaths(\"scatter\");var i=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(t.config.chart.type,\" .apexcharts-series\"));if(i.length>0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(t.config.chart.type,\" .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] rect\")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e(\"x\")),y:parseFloat(e(\"y\")),width:parseFloat(e(\"width\")),height:parseFloat(e(\"height\"))};a.push({rect:s,color:i[t].getAttribute(\"color\")})},r=0;r<i.length;r++)s(r);t.globals.previousPaths.push(a)},s=0;s<i.length;s++)a(s);t.globals.axisCharts||(t.globals.previousPaths=t.globals.series)}},{key:\"handlePrevBubbleScatterPaths\",value:function(t){var e=this.w,i=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(t,\"-series .apexcharts-series\"));if(i.length>0)for(var a=0;a<i.length;a++){for(var s=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(t,\"-series .apexcharts-series[data\\\\:realIndex='\").concat(a,\"'] circle\")),r=[],o=0;o<s.length;o++)r.push({x:s[o].getAttribute(\"cx\"),y:s[o].getAttribute(\"cy\"),r:s[o].getAttribute(\"r\")});e.globals.previousPaths.push(r)}}},{key:\"clearPreviousPaths\",value:function(){var t=this.w;t.globals.previousPaths=[],t.globals.allSeriesCollapsed=!1}},{key:\"handleNoData\",value:function(){var t=this.w,e=t.config.noData,i=new k(this.ctx),a=t.globals.svgWidth/2,s=t.globals.svgHeight/2,r=\"middle\";if(t.globals.noData=!0,t.globals.animationEnded=!0,\"left\"===e.align?(a=10,r=\"start\"):\"right\"===e.align&&(a=t.globals.svgWidth-10,r=\"end\"),\"top\"===e.verticalAlign?s=50:\"bottom\"===e.verticalAlign&&(s=t.globals.svgHeight-50),a+=e.offsetX,s=s+parseInt(e.style.fontSize,10)+2+e.offsetY,void 0!==e.text&&\"\"!==e.text){var o=i.drawText({x:a,y:s,text:e.text,textAnchor:r,fontSize:e.style.fontSize,fontFamily:e.style.fontFamily,foreColor:e.style.color,opacity:1,class:\"apexcharts-text-nodata\"});t.globals.dom.Paper.add(o)}}},{key:\"setNullSeriesToZeroValues\",value:function(t){for(var e=this.w,i=0;i<t.length;i++)if(0===t[i].length)for(var a=0;a<t[e.globals.maxValsInArrayIndex].length;a++)t[i].push(0);return t}},{key:\"hasAllSeriesEqualX\",value:function(){for(var t=!0,e=this.w,i=this.filteredSeriesX(),a=0;a<i.length-1;a++)if(i[a][0]!==i[a+1][0]){t=!1;break}return e.globals.allSeriesHasEqualX=t,t}},{key:\"filteredSeriesX\",value:function(){var t=this.w.globals.seriesX.map((function(t){return t.length>0?t:[]}));return t}}]),t}(),_=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new A(this.ctx)}return s(t,[{key:\"isMultiFormat\",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:\"isFormatXY\",value:function(){var t=this.w.config.series.slice(),e=new V(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:\"isFormat2DArray\",value:function(){var t=this.w.config.series.slice(),e=new V(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:\"handleFormat2DArray\",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s=\"boxPlot\"===i.chart.type||\"boxPlot\"===i.series[e].type,r=0;r<t[e].data.length;r++)if(void 0!==t[e].data[r][1]&&(Array.isArray(t[e].data[r][1])&&4===t[e].data[r][1].length&&!s?this.twoDSeries.push(m.parseNumber(t[e].data[r][1][3])):t[e].data[r].length>=5?this.twoDSeries.push(m.parseNumber(t[e].data[r][4])):this.twoDSeries.push(m.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),\"datetime\"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var n=0;n<t[e].data.length;n++)void 0!==t[e].data[n][2]&&(this.threeDSeries.push(t[e].data[n][2]),a.isDataXYZ=!0)}},{key:\"handleFormatXY\",value:function(t,e){var i=this.w.config,a=this.w.globals,s=new L(this.ctx),r=e;a.collapsedSeriesIndices.indexOf(e)>-1&&(r=this.activeSeriesIndex);for(var o=0;o<t[e].data.length;o++)void 0!==t[e].data[o].y&&(Array.isArray(t[e].data[o].y)?this.twoDSeries.push(m.parseNumber(t[e].data[o].y[t[e].data[o].y.length-1])):this.twoDSeries.push(m.parseNumber(t[e].data[o].y))),void 0!==t[e].data[o].goals&&Array.isArray(t[e].data[o].goals)?(void 0===this.seriesGoals[e]&&(this.seriesGoals[e]=[]),this.seriesGoals[e].push(t[e].data[o].goals)):(void 0===this.seriesGoals[e]&&(this.seriesGoals[e]=[]),this.seriesGoals[e].push(null));for(var n=0;n<t[r].data.length;n++){var l=\"string\"==typeof t[r].data[n].x,h=Array.isArray(t[r].data[n].x),c=!h&&!!s.isValidDate(t[r].data[n].x);if(l||c)if(l||i.xaxis.convertedCatToNumeric){var d=a.isBarHorizontal&&a.isRangeData;\"datetime\"!==i.xaxis.type||d?(this.fallbackToCategory=!0,this.twoDSeriesX.push(t[r].data[n].x),isNaN(t[r].data[n].x)||\"category\"===this.w.config.xaxis.type||\"string\"==typeof t[r].data[n].x||(a.isXNumeric=!0)):this.twoDSeriesX.push(s.parseDate(t[r].data[n].x))}else\"datetime\"===i.xaxis.type?this.twoDSeriesX.push(s.parseDate(t[r].data[n].x.toString())):(a.dataFormatXNumeric=!0,a.isXNumeric=!0,this.twoDSeriesX.push(parseFloat(t[r].data[n].x)));else h?(this.fallbackToCategory=!0,this.twoDSeriesX.push(t[r].data[n].x)):(a.isXNumeric=!0,a.dataFormatXNumeric=!0,this.twoDSeriesX.push(t[r].data[n].x))}if(t[e].data[0]&&void 0!==t[e].data[0].z){for(var g=0;g<t[e].data.length;g++)this.threeDSeries.push(t[e].data[g].z);a.isDataXYZ=!0}}},{key:\"handleRangeData\",value:function(t,e){var i=this.w.globals,a={};return this.isFormat2DArray()?a=this.handleRangeDataFormat(\"array\",t,e):this.isFormatXY()&&(a=this.handleRangeDataFormat(\"xy\",t,e)),i.seriesRangeStart.push(void 0===a.start?[]:a.start),i.seriesRangeEnd.push(void 0===a.end?[]:a.end),i.seriesRange.push(a.rangeUniques),i.seriesRange.forEach((function(t,e){t&&t.forEach((function(t,e){t.y.forEach((function(e,i){for(var a=0;a<t.y.length;a++)if(i!==a){var s=e.y1,r=e.y2,o=t.y[a].y1;s<=t.y[a].y2&&o<=r&&(t.overlaps.indexOf(e.rangeName)<0&&t.overlaps.push(e.rangeName),t.overlaps.indexOf(t.y[a].rangeName)<0&&t.overlaps.push(t.y[a].rangeName))}}))}))})),a}},{key:\"handleCandleStickBoxData\",value:function(t,e){var i=this.w.globals,a={};return this.isFormat2DArray()?a=this.handleCandleStickBoxDataFormat(\"array\",t,e):this.isFormatXY()&&(a=this.handleCandleStickBoxDataFormat(\"xy\",t,e)),i.seriesCandleO[e]=a.o,i.seriesCandleH[e]=a.h,i.seriesCandleM[e]=a.m,i.seriesCandleL[e]=a.l,i.seriesCandleC[e]=a.c,a}},{key:\"handleRangeDataFormat\",value:function(t,e,i){var a=[],s=[],r=e[i].data.filter((function(t,e,i){return e===i.findIndex((function(e){return e.x===t.x}))})).map((function(t,e){return{x:t.x,overlaps:[],y:[]}}));if(\"array\"===t)for(var o=0;o<e[i].data.length;o++)Array.isArray(e[i].data[o])?(a.push(e[i].data[o][1][0]),s.push(e[i].data[o][1][1])):(a.push(e[i].data[o]),s.push(e[i].data[o]));else if(\"xy\"===t)for(var n=function(t){var o=Array.isArray(e[i].data[t].y),n=m.randomId(),l=e[i].data[t].x,h={y1:o?e[i].data[t].y[0]:e[i].data[t].y,y2:o?e[i].data[t].y[1]:e[i].data[t].y,rangeName:n};e[i].data[t].rangeName=n;var c=r.findIndex((function(t){return t.x===l}));r[c].y.push(h),a.push(h.y1),s.push(h.y2)},l=0;l<e[i].data.length;l++)n(l);return{start:a,end:s,rangeUniques:r}}},{key:\"handleCandleStickBoxDataFormat\",value:function(t,e,i){var a=this.w,s=\"boxPlot\"===a.config.chart.type||\"boxPlot\"===a.config.series[i].type,r=[],o=[],n=[],l=[],h=[];if(\"array\"===t)if(s&&6===e[i].data[0].length||!s&&5===e[i].data[0].length)for(var c=0;c<e[i].data.length;c++)r.push(e[i].data[c][1]),o.push(e[i].data[c][2]),s?(n.push(e[i].data[c][3]),l.push(e[i].data[c][4]),h.push(e[i].data[c][5])):(l.push(e[i].data[c][3]),h.push(e[i].data[c][4]));else for(var d=0;d<e[i].data.length;d++)Array.isArray(e[i].data[d][1])&&(r.push(e[i].data[d][1][0]),o.push(e[i].data[d][1][1]),s?(n.push(e[i].data[d][1][2]),l.push(e[i].data[d][1][3]),h.push(e[i].data[d][1][4])):(l.push(e[i].data[d][1][2]),h.push(e[i].data[d][1][3])));else if(\"xy\"===t)for(var g=0;g<e[i].data.length;g++)Array.isArray(e[i].data[g].y)&&(r.push(e[i].data[g].y[0]),o.push(e[i].data[g].y[1]),s?(n.push(e[i].data[g].y[2]),l.push(e[i].data[g].y[3]),h.push(e[i].data[g].y[4])):(l.push(e[i].data[g].y[2]),h.push(e[i].data[g].y[3])));return{o:r,h:o,m:n,l:l,c:h}}},{key:\"parseDataAxisCharts\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new L(i),o=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar=\"rangeBar\"===a.chart.type&&s.isBarHorizontal,s.hasXaxisGroups=\"category\"===a.xaxis.type&&a.xaxis.group.groups.length>0,s.hasXaxisGroups&&(s.groups=a.xaxis.group.groups),t.forEach((function(t,e){void 0!==t.name?s.seriesNames.push(t.name):s.seriesNames.push(\"series-\"+parseInt(e+1,10))})),this.coreUtils.setSeriesYAxisMappings();var n=[],l=p(new Set(a.series.map((function(t){return t.group}))));a.series.forEach((function(t,e){var i=l.indexOf(t.group);n[i]||(n[i]=[]),n[i].push(s.seriesNames[e])})),s.seriesGroups=n;for(var h=function(){for(var t=0;t<o.length;t++)if(\"string\"==typeof o[t]){if(!r.isValidDate(o[t]))throw new Error(\"You have provided invalid Date format. Please provide a valid JavaScript Date\");e.twoDSeriesX.push(r.parseDate(o[t]))}else e.twoDSeriesX.push(o[t])},c=0;c<t.length;c++){if(this.twoDSeries=[],this.twoDSeriesX=[],this.threeDSeries=[],void 0===t[c].data)return void console.error(\"It is a possibility that you may have not included 'data' property in series.\");if(\"rangeBar\"!==a.chart.type&&\"rangeArea\"!==a.chart.type&&\"rangeBar\"!==t[c].type&&\"rangeArea\"!==t[c].type||(s.isRangeData=!0,\"rangeBar\"!==a.chart.type&&\"rangeArea\"!==a.chart.type||this.handleRangeData(t,c)),this.isMultiFormat())this.isFormat2DArray()?this.handleFormat2DArray(t,c):this.isFormatXY()&&this.handleFormatXY(t,c),\"candlestick\"!==a.chart.type&&\"candlestick\"!==t[c].type&&\"boxPlot\"!==a.chart.type&&\"boxPlot\"!==t[c].type||this.handleCandleStickBoxData(t,c),s.series.push(this.twoDSeries),s.labels.push(this.twoDSeriesX),s.seriesX.push(this.twoDSeriesX),s.seriesGoals=this.seriesGoals,c!==this.activeSeriesIndex||this.fallbackToCategory||(s.isXNumeric=!0);else{\"datetime\"===a.xaxis.type?(s.isXNumeric=!0,h(),s.seriesX.push(this.twoDSeriesX)):\"numeric\"===a.xaxis.type&&(s.isXNumeric=!0,o.length>0&&(this.twoDSeriesX=o,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var d=t[c].data.map((function(t){return m.parseNumber(t)}));s.series.push(d)}s.seriesZ.push(this.threeDSeries),void 0!==t[c].color?s.seriesColors.push(t[c].color):s.seriesColors.push(void 0)}return this.w}},{key:\"parseDataNonAxisCharts\",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a<e.series.length;a++)void 0===e.seriesNames[a]&&e.seriesNames.push(\"series-\"+(a+1));return this.w}},{key:\"handleExternalLabelsData\",value:function(t){var e=this.w.config,i=this.w.globals;if(e.xaxis.categories.length>0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),e.xaxis.convertedCatToNumeric)new F(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:\"_generateExternalLabels\",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),o=0;o<s[r].length;o++)a.push(o+1);else for(var n=0;n<e.series[e.maxValsInArrayIndex].length;n++)a.push(n+1);e.seriesX=[];for(var l=0;l<t.length;l++)e.seriesX.push(a);this.w.globals.isBarHorizontal||(e.isXNumeric=!0)}if(0===a.length){a=e.axisCharts?[]:e.series.map((function(t,e){return e+1}));for(var h=0;h<t.length;h++)e.seriesX.push(a)}e.labels=a,i.xaxis.convertedCatToNumeric&&(e.categoryLabels=a.map((function(t){return i.xaxis.labels.formatter(t)}))),e.noLabelsProvided=!0}},{key:\"parseData\",value:function(t){var e=this.w,i=e.config,a=e.globals;if(this.excludeCollapsedSeriesInYAxis(),this.fallbackToCategory=!1,this.ctx.core.resetGlobals(),this.ctx.core.isMultipleY(),a.axisCharts?(this.parseDataAxisCharts(t),this.coreUtils.getLargestSeries()):this.parseDataNonAxisCharts(t),i.chart.stacked){var s=new V(this.ctx);a.series=s.setNullSeriesToZeroValues(a.series)}this.coreUtils.getSeriesTotals(),a.axisCharts&&(a.stackedSeriesTotals=this.coreUtils.getStackedSeriesTotals(),a.stackedSeriesTotalsByGroups=this.coreUtils.getStackedSeriesTotalsByGroups()),this.coreUtils.getPercentSeries(),a.dataFormatXNumeric||a.isXNumeric&&(\"numeric\"!==i.xaxis.type||0!==i.labels.length||0!==i.xaxis.categories.length)||this.handleExternalLabelsData(t);for(var r=this.coreUtils.getCategoryLabels(a.labels),o=0;o<r.length;o++)if(Array.isArray(r[o])){a.isMultiLineX=!0;break}}},{key:\"excludeCollapsedSeriesInYAxis\",value:function(){var t=this.w,e=[];t.globals.seriesYAxisMap.forEach((function(i,a){var s=0;i.forEach((function(e){-1!==t.globals.collapsedSeriesIndices.indexOf(e)&&s++})),s>0&&s==i.length&&e.push(a)})),t.globals.ignoreYAxisIndexes=e.map((function(t){return t}))}}]),t}(),U=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"scaleSvgNode\",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,\"width\")),a=parseFloat(t.getAttributeNS(null,\"height\"));t.setAttributeNS(null,\"width\",i*e),t.setAttributeNS(null,\"height\",a*e),t.setAttributeNS(null,\"viewBox\",\"0 0 \"+i+\" \"+a)}},{key:\"getSvgString\",value:function(){var t=this;return new Promise((function(e){var i=t.w,a=i.config.chart.toolbar.export.width,s=i.config.chart.toolbar.export.scale||a/i.globals.svgWidth;s||(s=1);var r=t.w.globals.dom.Paper.svg(),o=t.w.globals.dom.Paper.node.cloneNode(!0);1!==s&&t.scaleSvgNode(o,s),t.convertImagesToBase64(o).then((function(){r=(new XMLSerializer).serializeToString(o),e(r.replace(/&nbsp;/g,\"&#160;\"))}))}))}},{key:\"convertImagesToBase64\",value:function(t){var e=this,i=t.getElementsByTagName(\"image\"),a=Array.from(i).map((function(t){var i=t.getAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\");return i&&!i.startsWith(\"data:\")?e.getBase64FromUrl(i).then((function(e){t.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",e)})).catch((function(t){console.error(\"Error converting image to base64:\",t)})):Promise.resolve()}));return Promise.all(a)}},{key:\"getBase64FromUrl\",value:function(t){return new Promise((function(e,i){var a=new Image;a.crossOrigin=\"Anonymous\",a.onload=function(){var t=document.createElement(\"canvas\");t.width=a.width,t.height=a.height,t.getContext(\"2d\").drawImage(a,0,0),e(t.toDataURL())},a.onerror=i,a.src=t}))}},{key:\"cleanup\",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-xcrosshairs\"),i=t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-ycrosshairs\"),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-zoom-rect, .apexcharts-selection-rect\");Array.prototype.forEach.call(a,(function(t){t.setAttribute(\"width\",0)})),e&&e[0]&&(e[0].setAttribute(\"x\",-500),e[0].setAttribute(\"x1\",-500),e[0].setAttribute(\"x2\",-500)),i&&i[0]&&(i[0].setAttribute(\"y\",-100),i[0].setAttribute(\"y1\",-100),i[0].setAttribute(\"y2\",-100))}},{key:\"svgUrl\",value:function(){var t=this;return new Promise((function(e){t.cleanup(),t.getSvgString().then((function(t){var i=new Blob([t],{type:\"image/svg+xml;charset=utf-8\"});e(URL.createObjectURL(i))}))}))}},{key:\"dataURI\",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1;e.cleanup();var r=document.createElement(\"canvas\");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var o=\"transparent\"!==a.config.chart.background&&a.config.chart.background?a.config.chart.background:\"#fff\",n=r.getContext(\"2d\");n.fillStyle=o,n.fillRect(0,0,r.width*s,r.height*s),e.getSvgString().then((function(t){var e=\"data:image/svg+xml,\"+encodeURIComponent(t),a=new Image;a.crossOrigin=\"anonymous\",a.onload=function(){if(n.drawImage(a,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL(\"image/png\");i({imgURI:e})}},a.src=e}))}))}},{key:\"exportToSVG\",value:function(){var t=this;this.svgUrl().then((function(e){t.triggerDownload(e,t.w.config.chart.toolbar.export.svg.filename,\".svg\")}))}},{key:\"exportToPng\",value:function(){var t=this,e=this.w.config.chart.toolbar.export.scale,i=this.w.config.chart.toolbar.export.width,a=e?{scale:e}:i?{width:i}:void 0;this.dataURI(a).then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+\".png\"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,\".png\")}))}},{key:\"exportToCSV\",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?\",\":s,o=t.lineDelimiter,n=void 0===o?\"\\n\":o,l=this.w;i||(i=l.config.series);var h,c,d=[],g=[],u=\"\",f=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),x=function(t){return\"function\"==typeof l.config.chart.toolbar.export.csv.categoryFormatter?l.config.chart.toolbar.export.csv.categoryFormatter(t):\"datetime\"===l.config.xaxis.type&&String(t).length>=10?new Date(t).toDateString():m.isNumber(t)?t:t.split(r).join(\"\")},b=function(t){return\"function\"==typeof l.config.chart.toolbar.export.csv.valueFormatter?l.config.chart.toolbar.export.csv.valueFormatter(t):t},v=Math.max.apply(Math,p(i.map((function(t){return t.data?t.data.length:0})))),y=new _(this.ctx),w=new M(this.ctx),k=function(t){var i=\"\";if(l.globals.axisCharts){if(\"category\"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new V(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=w.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;\"datetime\"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return null===i?\"nullvalue\":(Array.isArray(i)&&(i=i.join(\" \")),m.isNumber(i)?i:i.split(r).join(\"\"))},A=function(t,e){if(d.length&&0===e&&g.push(d.join(r)),t.data){t.data=t.data.length&&t.data||p(Array(v)).map((function(){return\"\"}));for(var a=0;a<t.data.length;a++){d=[];var s=k(a);if(\"nullvalue\"!==s){if(s||(y.isFormatXY()?s=i[e].data[a].x:y.isFormat2DArray()&&(s=i[e].data[a]?i[e].data[a][0]:\"\")),0===e){d.push(x(s));for(var o=0;o<l.globals.series.length;o++){var n,h=y.isFormatXY()?null===(n=i[o].data[a])||void 0===n?void 0:n.y:f[o][a];d.push(b(h))}}(\"candlestick\"===l.config.chart.type||t.type&&\"candlestick\"===t.type)&&(d.pop(),d.push(l.globals.seriesCandleO[e][a]),d.push(l.globals.seriesCandleH[e][a]),d.push(l.globals.seriesCandleL[e][a]),d.push(l.globals.seriesCandleC[e][a])),(\"boxPlot\"===l.config.chart.type||t.type&&\"boxPlot\"===t.type)&&(d.pop(),d.push(l.globals.seriesCandleO[e][a]),d.push(l.globals.seriesCandleH[e][a]),d.push(l.globals.seriesCandleM[e][a]),d.push(l.globals.seriesCandleL[e][a]),d.push(l.globals.seriesCandleC[e][a])),\"rangeBar\"===l.config.chart.type&&(d.pop(),d.push(l.globals.seriesRangeStart[e][a]),d.push(l.globals.seriesRangeEnd[e][a])),d.length&&g.push(d.join(r))}}}};d.push(l.config.chart.toolbar.export.csv.headerCategory),\"boxPlot\"===l.config.chart.type?(d.push(\"minimum\"),d.push(\"q1\"),d.push(\"median\"),d.push(\"q3\"),d.push(\"maximum\")):\"candlestick\"===l.config.chart.type?(d.push(\"open\"),d.push(\"high\"),d.push(\"low\"),d.push(\"close\")):\"rangeBar\"===l.config.chart.type?(d.push(\"minimum\"),d.push(\"maximum\")):i.map((function(t,e){var i=(t.name?t.name:\"series-\".concat(e))+\"\";l.globals.axisCharts&&d.push(i.split(r).join(\"\")?i.split(r).join(\"\"):\"series-\".concat(e))})),l.globals.axisCharts||(d.push(l.config.chart.toolbar.export.csv.headerValue),g.push(d.join(r))),l.globals.allSeriesHasEqualX||!l.globals.axisCharts||l.config.xaxis.categories.length||l.config.labels.length?i.map((function(t,e){l.globals.axisCharts?A(t,e):((d=[]).push(x(l.globals.labels[e])),d.push(b(f[e])),g.push(d.join(r)))})):(h=new Set,c={},i.forEach((function(t,e){null==t||t.data.forEach((function(t){var a,s;if(y.isFormatXY())a=t.x,s=t.y;else{if(!y.isFormat2DArray())return;a=t[0],s=t[1]}c[a]||(c[a]=Array(i.length).fill(\"\")),c[a][e]=b(s),h.add(a)}))})),d.length&&g.push(d.join(r)),Array.from(h).sort().forEach((function(t){g.push([x(t),c[t].join(r)])}))),u+=g.join(n),this.triggerDownload(\"data:text/csv; charset=utf-8,\"+encodeURIComponent(\"\\ufeff\"+u),a||l.config.chart.toolbar.export.csv.filename,\".csv\")}},{key:\"triggerDownload\",value:function(t,e,i){var a=document.createElement(\"a\");a.href=t,a.download=(e||this.w.globals.chartID)+i,document.body.appendChild(a),a.click(),document.body.removeChild(a)}}]),t}(),q=function(){function t(e,a){i(this,t),this.ctx=e,this.elgrid=a,this.w=e.w;var s=this.w;this.axesUtils=new M(e),this.xaxisLabels=s.globals.labels.slice(),s.globals.timescaleLabels.length>0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],\"top\"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf(\"%\")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return s(t,[{key:\"drawXaxis\",value:function(){var t=this.w,e=new k(this.ctx),i=e.group({class:\"apexcharts-xaxis\",transform:\"translate(\".concat(t.config.xaxis.offsetX,\", \").concat(t.config.xaxis.offsetY,\")\")}),a=e.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(t.globals.translateXAxisX,\", \").concat(t.globals.translateXAxisY,\")\")});i.add(a);for(var s=[],r=0;r<this.xaxisLabels.length;r++)s.push(this.xaxisLabels[r]);if(this.drawXAxisLabelAndGroup(!0,e,a,s,t.globals.isXNumeric,(function(t,e){return e})),t.globals.hasXaxisGroups){var o=t.globals.groups;s=[];for(var n=0;n<o.length;n++)s.push(o[n].title);var l={};t.config.xaxis.group.style&&(l.xaxisFontSize=t.config.xaxis.group.style.fontSize,l.xaxisFontFamily=t.config.xaxis.group.style.fontFamily,l.xaxisForeColors=t.config.xaxis.group.style.colors,l.fontWeight=t.config.xaxis.group.style.fontWeight,l.cssClass=t.config.xaxis.group.style.cssClass),this.drawXAxisLabelAndGroup(!1,e,a,s,!1,(function(t,e){return o[t].cols*e}),l)}if(void 0!==t.config.xaxis.title.text){var h=e.group({class:\"apexcharts-xaxis-title\"}),c=e.drawText({x:t.globals.gridWidth/2+t.config.xaxis.title.offsetX,y:this.offY+parseFloat(this.xaxisFontSize)+(\"bottom\"===t.config.xaxis.position?t.globals.xAxisLabelsHeight:-t.globals.xAxisLabelsHeight-10)+t.config.xaxis.title.offsetY,text:t.config.xaxis.title.text,textAnchor:\"middle\",fontSize:t.config.xaxis.title.style.fontSize,fontFamily:t.config.xaxis.title.style.fontFamily,fontWeight:t.config.xaxis.title.style.fontWeight,foreColor:t.config.xaxis.title.style.color,cssClass:\"apexcharts-xaxis-title-text \"+t.config.xaxis.title.style.cssClass});h.add(c),i.add(h)}if(t.config.xaxis.axisBorder.show){var d=t.globals.barPadForNumericAxis,g=e.drawLine(t.globals.padHorizontal+t.config.xaxis.axisBorder.offsetX-d,this.offY,this.xaxisBorderWidth+d,this.offY,t.config.xaxis.axisBorder.color,0,this.xaxisBorderHeight);this.elgrid&&this.elgrid.elGridBorders&&t.config.grid.show?this.elgrid.elGridBorders.add(g):i.add(g)}return i}},{key:\"drawXAxisLabelAndGroup\",value:function(t,e,i,a,s,r){var o,n=this,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,g=l.xaxisFontSize||this.xaxisFontSize,u=l.xaxisFontFamily||this.xaxisFontFamily,f=l.xaxisForeColors||this.xaxisForeColors,p=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m=\"category\"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;o=d.globals.gridWidth/Math.min(y,v-1),b=b+r(0,o)/2+d.config.xaxis.labels.offsetX}else o=d.globals.gridWidth/m,b=b+r(0,o)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,o)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&o/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=n.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,g,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&\"top\"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(g)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&\"dataPoints\"!==d.config.xaxis.tickAmount&&\"datetime\"!==d.config.xaxis.type?n.axesUtils.checkLabelBasedOnTickamount(s,y,v):n.axesUtils.checkForOverflowingLabels(s,y,v,h,c);if(d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:n.offY+d.config.xaxis.labels.offsetY+w-(\"top\"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:\"middle\",fontWeight:y.isBold?600:p,fontSize:g,fontFamily:u,foreColor:Array.isArray(f)?t&&d.config.xaxis.convertedCatToNumeric?f[d.globals.minX+s-1]:f[s]:f,isPlainText:!1,cssClass:(t?\"apexcharts-xaxis-label \":\"apexcharts-xaxis-group-label \")+x});if(i.add(k),k.on(\"click\",(function(t){if(\"function\"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,n.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,\"title\");A.textContent=Array.isArray(y.text)?y.text.join(\" \"):y.text,k.node.appendChild(A),\"\"!==y.text&&(h.push(y.text),c.push(y))}}s<v-1&&(b+=r(s+1,o))},k=0;k<=v-1;k++)w(k)}},{key:\"drawXaxisInversed\",value:function(t){var e,i,a=this,s=this.w,r=new k(this.ctx),o=s.config.yaxis[0].opposite?s.globals.translateYAxisX[t]:0,n=r.group({class:\"apexcharts-yaxis apexcharts-xaxis-inversed\",rel:t}),l=r.group({class:\"apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g\",transform:\"translate(\"+o+\", 0)\"});n.add(l);var h=[];if(s.config.yaxis[t].show)for(var c=0;c<this.xaxisLabels.length;c++)h.push(this.xaxisLabels[c]);e=s.globals.gridHeight/h.length,i=-e/2.2;var d=s.globals.yLabelFormatters[0],g=s.config.yaxis[0].labels;if(g.show)for(var u=function(o){var n=void 0===h[o]?\"\":h[o];n=d(n,{seriesIndex:t,dataPointIndex:o,w:s});var c=a.axesUtils.getYAxisForeColor(g.style.colors,t),u=0;Array.isArray(n)&&(u=n.length/2*parseInt(g.style.fontSize,10));var f=g.offsetX-15,p=\"end\";a.yaxis.opposite&&(p=\"start\"),\"left\"===s.config.yaxis[0].labels.align?(f=g.offsetX,p=\"start\"):\"center\"===s.config.yaxis[0].labels.align?(f=g.offsetX,p=\"middle\"):\"right\"===s.config.yaxis[0].labels.align&&(p=\"end\");var x=r.drawText({x:f,y:i+e+g.offsetY-u,text:n,textAnchor:p,foreColor:Array.isArray(c)?c[o]:c,fontSize:g.style.fontSize,fontFamily:g.style.fontFamily,fontWeight:g.style.fontWeight,isPlainText:!1,cssClass:\"apexcharts-yaxis-label \"+g.style.cssClass,maxWidth:g.maxWidth});l.add(x),x.on(\"click\",(function(t){if(\"function\"==typeof s.config.chart.events.xAxisLabelClick){var e=Object.assign({},s,{labelIndex:o});s.config.chart.events.xAxisLabelClick(t,a.ctx,e)}}));var b=document.createElementNS(s.globals.SVGNS,\"title\");if(b.textContent=Array.isArray(n)?n.join(\" \"):n,x.node.appendChild(b),0!==s.config.yaxis[t].labels.rotate){var v=r.rotateAroundCenter(x.node);x.node.setAttribute(\"transform\",\"rotate(\".concat(s.config.yaxis[t].labels.rotate,\" 0 \").concat(v.y,\")\"))}i+=e},f=0;f<=h.length-1;f++)u(f);if(void 0!==s.config.yaxis[0].title.text){var p=r.group({class:\"apexcharts-yaxis-title apexcharts-xaxis-title-inversed\",transform:\"translate(\"+o+\", 0)\"}),x=r.drawText({x:s.config.yaxis[0].title.offsetX,y:s.globals.gridHeight/2+s.config.yaxis[0].title.offsetY,text:s.config.yaxis[0].title.text,textAnchor:\"middle\",foreColor:s.config.yaxis[0].title.style.color,fontSize:s.config.yaxis[0].title.style.fontSize,fontWeight:s.config.yaxis[0].title.style.fontWeight,fontFamily:s.config.yaxis[0].title.style.fontFamily,cssClass:\"apexcharts-yaxis-title-text \"+s.config.yaxis[0].title.style.cssClass});p.add(x),n.add(p)}var b=0;this.isCategoryBarHorizontal&&s.config.yaxis[0].opposite&&(b=s.globals.gridWidth);var v=s.config.xaxis.axisBorder;if(v.show){var m=r.drawLine(s.globals.padHorizontal+v.offsetX+b,1+v.offsetY,s.globals.padHorizontal+v.offsetX+b,s.globals.gridHeight+v.offsetY,v.color,0);this.elgrid&&this.elgrid.elGridBorders&&s.config.grid.show?this.elgrid.elGridBorders.add(m):n.add(m)}return s.config.yaxis[0].axisTicks.show&&this.axesUtils.drawYAxisTicks(b,h.length,s.config.yaxis[0].axisBorder,s.config.yaxis[0].axisTicks,0,e,n),n}},{key:\"drawXaxisTicks\",value:function(t,e,i){var a=this.w,s=t;if(!(t<0||t-2>a.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,\"top\"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var o=new k(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(o),o.node.classList.add(\"apexcharts-xaxis-tick\")}}}},{key:\"getXAxisTicksPositions\",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s<i;s++)a=this.xaxisLabels[s].position,e.push(a);else for(var r=i,o=0;o<r;o++){var n=r;t.globals.isXNumeric&&\"bar\"!==t.config.chart.type&&(n-=1),a+=t.globals.gridWidth/n,e.push(a)}return e}},{key:\"xAxisLabelCorrections\",value:function(){var t=this.w,e=new k(this.ctx),i=t.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g\"),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-xaxis-texts-g text:not(.apexcharts-xaxis-group-label)\"),s=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis-inversed text\"),r=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-xaxis-inversed-texts-g text tspan\");if(t.globals.rotateXLabels||t.config.xaxis.labels.rotateAlways)for(var o=0;o<a.length;o++){var n=e.rotateAroundCenter(a[o]);n.y=n.y-1,n.x=n.x+1,a[o].setAttribute(\"transform\",\"rotate(\".concat(t.config.xaxis.labels.rotate,\" \").concat(n.x,\" \").concat(n.y,\")\")),a[o].setAttribute(\"text-anchor\",\"end\");i.setAttribute(\"transform\",\"translate(0, \".concat(-10,\")\"));var l=a[o].childNodes;t.config.xaxis.labels.trim&&Array.prototype.forEach.call(l,(function(i){e.placeTextWithEllipsis(i,i.textContent,t.globals.xAxisLabelsHeight-(\"bottom\"===t.config.legend.position?20:10))}))}else!function(){for(var i=t.globals.gridWidth/(t.globals.labels.length+1),s=0;s<a.length;s++){var r=a[s].childNodes;t.config.xaxis.labels.trim&&\"datetime\"!==t.config.xaxis.type&&Array.prototype.forEach.call(r,(function(t){e.placeTextWithEllipsis(t,t.textContent,i)}))}}();if(s.length>0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d<r.length;d++)e.placeTextWithEllipsis(r[d],r[d].textContent,t.config.yaxis[0].labels.maxWidth-(t.config.yaxis[0].title.text?2*parseFloat(t.config.yaxis[0].title.style.fontSize):0)-15)}}}]),t}(),Z=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.xaxisLabels=a.globals.labels.slice(),this.axesUtils=new M(e),this.isRangeBar=a.globals.seriesRange.length&&a.globals.isBarHorizontal,a.globals.timescaleLabels.length>0&&(this.xaxisLabels=a.globals.timescaleLabels.slice())}return s(t,[{key:\"drawGridArea\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new k(this.ctx);t||(t=i.group({class:\"apexcharts-grid\"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,\"transparent\"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,\"transparent\");return t.add(s),t.add(a),t}},{key:\"drawGrid\",value:function(){if(this.w.globals.axisCharts){var t=this.renderGrid();return this.drawGridArea(t.el),t}return null}},{key:\"createGridMask\",value:function(){var t=this.w,e=t.globals,i=new k(this.ctx),a=Array.isArray(t.config.stroke.width)?Math.max.apply(Math,p(t.config.stroke.width)):t.config.stroke.width,s=function(t){var i=document.createElementNS(e.SVGNS,\"clipPath\");return i.setAttribute(\"id\",t),i};e.dom.elGridRectMask=s(\"gridRectMask\".concat(e.cuid)),e.dom.elGridRectBarMask=s(\"gridRectBarMask\".concat(e.cuid)),e.dom.elGridRectMarkerMask=s(\"gridRectMarkerMask\".concat(e.cuid)),e.dom.elForecastMask=s(\"forecastMask\".concat(e.cuid)),e.dom.elNonForecastMask=s(\"nonForecastMask\".concat(e.cuid));var r=0,o=0;([\"bar\",\"rangeBar\",\"candlestick\",\"boxPlot\"].includes(t.config.chart.type)||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(r=Math.max(t.config.grid.padding.left,e.barPadForNumericAxis),o=Math.max(t.config.grid.padding.right,e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(0,0,e.gridWidth,e.gridHeight,0,\"#fff\"),e.dom.elGridRectBar=i.drawRect(-a/2-r-2,-a/2-2,e.gridWidth+a+o+r+4,e.gridHeight+a+4,0,\"#fff\");var n=t.globals.markers.largestSize;e.dom.elGridRectMarker=i.drawRect(-n,-n,e.gridWidth+2*n,e.gridHeight+2*n,0,\"#fff\"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectBarMask.appendChild(e.dom.elGridRectBar.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var l=e.dom.baseEl.querySelector(\"defs\");l.appendChild(e.dom.elGridRectMask),l.appendChild(e.dom.elGridRectBarMask),l.appendChild(e.dom.elGridRectMarkerMask),l.appendChild(e.dom.elForecastMask),l.appendChild(e.dom.elNonForecastMask)}},{key:\"_drawGridLines\",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||\"radar\"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:o,parent:n});var h=0;if(l.globals.hasXaxisGroups&&\"between\"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,g=0;d<e&&g<c.length;g++)d+=c[g].cols;d===e&&(h=.6*l.globals.xAxisLabelsHeight)}}new q(this.ctx).drawXaxisTicks(i,h,l.globals.dom.elGraphical)}}},{key:\"_drawGridLine\",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w,h=n.node.classList.contains(\"apexcharts-gridlines-horizontal\"),c=l.globals.barPadForNumericAxis,d=0===a&&0===r||0===i&&0===s||a===l.globals.gridHeight&&r===l.globals.gridHeight||l.globals.isBarHorizontal&&(0===e||e===o-1),g=new k(this).drawLine(i-(h?c:0),a,s+(h?c:0),r,l.config.grid.borderColor,l.config.grid.strokeDashArray);g.node.classList.add(\"apexcharts-gridline\"),d&&l.config.grid.show?this.elGridBorders.add(g):n.add(g)}},{key:\"_drawGridBandRect\",value:function(t){var e=t.c,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.type,n=this.w,l=new k(this.ctx),h=n.globals.barPadForNumericAxis,c=n.config.grid[o].colors[e],d=l.drawRect(i-(\"row\"===o?h:0),a,s+(\"row\"===o?2*h:0),r,0,c,n.config.grid[o].opacity);this.elg.add(d),d.attr(\"clip-path\",\"url(#gridRectMask\".concat(n.globals.cuid,\")\")),d.node.classList.add(\"apexcharts-grid-\".concat(o))}},{key:\"_drawXYLines\",value:function(t){var e=this,i=t.xCount,a=t.tickAmount,s=this.w;if(s.config.grid.xaxis.lines.show||s.config.xaxis.axisTicks.show){var r,o=s.globals.padHorizontal,n=s.globals.gridHeight;s.globals.timescaleLabels.length?function(t){for(var a=t.xC,s=t.x1,r=t.y1,o=t.x2,n=t.y2,l=0;l<a;l++)s=e.xaxisLabels[l].position,o=e.xaxisLabels[l].position,e._drawGridLines({i:l,x1:s,y1:r,x2:o,y2:n,xCount:i,parent:e.elgridLinesV})}({xC:i,x1:o,y1:0,x2:r,y2:n}):(s.globals.isXNumeric&&(i=s.globals.xAxisScale.result.length),function(t){for(var a=t.xC,r=t.x1,o=t.y1,n=t.x2,l=t.y2,h=0;h<a+(s.globals.isXNumeric?0:1);h++)0===h&&1===a&&1===s.globals.dataPoints&&(n=r=s.globals.gridWidth/2),e._drawGridLines({i:h,x1:r,y1:o,x2:n,y2:l,xCount:i,parent:e.elgridLinesV}),n=r+=s.globals.gridWidth/(s.globals.isXNumeric?a-1:a)}({xC:i,x1:o,y1:0,x2:r,y2:n}))}if(s.config.grid.yaxis.lines.show){var l=0,h=0,c=s.globals.gridWidth,d=a+1;this.isRangeBar&&(d=s.globals.labels.length);for(var g=0;g<d+(this.isRangeBar?1:0);g++)this._drawGridLine({i:g,xCount:d+(this.isRangeBar?1:0),x1:0,y1:l,x2:c,y2:h,parent:this.elgridLinesH}),h=l+=s.globals.gridHeight/(this.isRangeBar?d:a)}}},{key:\"_drawInvertedXYLines\",value:function(t){var e=t.xCount,i=this.w;if(i.config.grid.xaxis.lines.show||i.config.xaxis.axisTicks.show)for(var a,s=i.globals.padHorizontal,r=i.globals.gridHeight,o=0;o<e+1;o++){i.config.grid.xaxis.lines.show&&this._drawGridLine({i:o,xCount:e+1,x1:s,y1:0,x2:a,y2:r,parent:this.elgridLinesV}),new q(this.ctx).drawXaxisTicks(s,0,i.globals.dom.elGraphical),a=s+=i.globals.gridWidth/e}if(i.config.grid.yaxis.lines.show)for(var n=0,l=0,h=i.globals.gridWidth,c=0;c<i.globals.dataPoints+1;c++)this._drawGridLine({i:c,xCount:i.globals.dataPoints+1,x1:0,y1:n,x2:h,y2:l,parent:this.elgridLinesH}),l=n+=i.globals.gridHeight/i.globals.dataPoints}},{key:\"renderGrid\",value:function(){var t=this.w,e=t.globals,i=new k(this.ctx);this.elg=i.group({class:\"apexcharts-grid\"}),this.elgridLinesH=i.group({class:\"apexcharts-gridlines-horizontal\"}),this.elgridLinesV=i.group({class:\"apexcharts-gridlines-vertical\"}),this.elGridBorders=i.group({class:\"apexcharts-grid-borders\"}),this.elg.add(this.elgridLinesH),this.elg.add(this.elgridLinesV),t.config.grid.show||(this.elgridLinesV.hide(),this.elgridLinesH.hide(),this.elGridBorders.hide());for(var a=0;a<e.seriesYAxisMap.length&&e.ignoreYAxisIndexes.includes(a);)a++;a===e.seriesYAxisMap.length&&(a=0);var s,r=e.yAxisScale[a].result.length-1;if(!e.isBarHorizontal||this.isRangeBar){var o,n,l;if(s=this.xaxisLabels.length,this.isRangeBar)r=e.labels.length,t.config.xaxis.tickAmount&&t.config.xaxis.labels.formatter&&(s=t.config.xaxis.tickAmount),(null===(o=e.yAxisScale)||void 0===o||null===(n=o[a])||void 0===n||null===(l=n.result)||void 0===l?void 0:l.length)>0&&\"datetime\"!==t.config.xaxis.type&&(s=e.yAxisScale[a].result.length-1);this._drawXYLines({xCount:s,tickAmount:r})}else s=r,r=e.xTickAmount,this._drawInvertedXYLines({xCount:s,tickAmount:r});return this.drawGridBands(s,r),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.gridWidth/s}}},{key:\"drawGridBands\",value:function(t,e){var i,a,s=this,r=this.w;if((null===(i=r.config.grid.row.colors)||void 0===i?void 0:i.length)>0&&function(t,i,a,o,n,l){for(var h=0,c=0;h<i;h++,c++)c>=r.config.grid[t].colors.length&&(c=0),s._drawGridBandRect({c:c,x1:a,y1:o,x2:n,y2:l,type:t}),o+=r.globals.gridHeight/e}(\"row\",e,0,0,r.globals.gridWidth,r.globals.gridHeight/e),(null===(a=r.config.grid.column.colors)||void 0===a?void 0:a.length)>0){var o=r.globals.isBarHorizontal||\"on\"!==r.config.xaxis.tickPlacement||\"category\"!==r.config.xaxis.type&&!r.config.xaxis.convertedCatToNumeric?t:t-1;r.globals.isXNumeric&&(o=r.globals.xAxisScale.result.length-1);for(var n=r.globals.padHorizontal,l=r.globals.padHorizontal+r.globals.gridWidth/o,h=r.globals.gridHeight,c=0,d=0;c<t;c++,d++){var g;if(d>=r.config.grid.column.colors.length&&(d=0),\"datetime\"===r.config.xaxis.type)n=this.xaxisLabels[c].position,l=((null===(g=this.xaxisLabels[c+1])||void 0===g?void 0:g.position)||r.globals.gridWidth)-this.xaxisLabels[c].position;this._drawGridBandRect({c:d,x1:n,y1:0,x2:l,y2:h,type:\"column\"}),n+=r.globals.gridWidth/o}}}}]),t}(),$=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.coreUtils=new A(this.ctx)}return s(t,[{key:\"niceScale\",value:function(t,e){var i,a,s,r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=1e-11,l=this.w,h=l.globals;h.isBarHorizontal?(i=l.config.xaxis,a=Math.max((h.svgWidth-100)/25,2)):(i=l.config.yaxis[o],a=Math.max((h.svgHeight-100)/15,2)),m.isNumber(a)||(a=10),s=void 0!==i.min&&null!==i.min,r=void 0!==i.max&&null!==i.min;var c=void 0!==i.stepSize&&null!==i.stepSize,d=void 0!==i.tickAmount&&null!==i.tickAmount,g=d?i.tickAmount:h.niceScaleDefaultTicks[Math.min(Math.round(a/2),h.niceScaleDefaultTicks.length-1)];if(h.isMultipleYAxis&&!d&&h.multiAxisTickAmount>0&&(g=h.multiAxisTickAmount,d=!0),g=\"dataPoints\"===g?h.dataPoints-1:Math.abs(Math.round(g)),(t===Number.MIN_VALUE&&0===e||!m.isNumber(t)&&!m.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)&&(t=m.isNumber(i.min)?i.min:0,e=m.isNumber(i.max)?i.max:t+g,h.allSeriesCollapsed=!1),t>e){console.warn(\"axis.min cannot be greater than axis.max: swapping min and max\");var u=e;e=t,t=u}else t===e&&(t=0===t?0:t-1,e=0===e?2:e+1);var f=[];g<1&&(g=1);var p=g,x=Math.abs(e-t);!s&&t>0&&t/x<.15&&(t=0,s=!0),!r&&e<0&&-e/x<.15&&(e=0,r=!0);var b=(x=Math.abs(e-t))/p,v=b,y=Math.floor(Math.log10(v)),w=Math.pow(10,y),k=Math.ceil(v/w);if(b=v=(k=h.niceScaleAllowedMagMsd[0===h.yValueDecimal?0:1][k])*w,h.isBarHorizontal&&i.stepSize&&\"datetime\"!==i.type?(b=i.stepSize,c=!0):c&&(b=i.stepSize),c&&i.forceNiceScale){var A=Math.floor(Math.log10(b));b*=Math.pow(10,y-A)}if(s&&r){var S=x/p;if(d)if(c)if(0!=m.mod(x,b)){var C=m.getGCD(b,S);b=S/C<10?C:S}else 0==m.mod(b,S)?b=S:(S=b,d=!1);else b=S;else if(c)0==m.mod(x,b)?S=b:b=S;else if(0==m.mod(x,b))S=b;else{S=x/(p=Math.ceil(x/b));var L=m.getGCD(x,b);x/L<a&&(S=L),b=S}p=Math.round(x/b)}else{if(s||r){if(r)if(d)t=e-b*p;else{var P=t;t=b*Math.floor(t/b),Math.abs(e-t)/m.getGCD(x,b)>a&&(t=e-b*g,t+=b*Math.floor((P-t)/b))}else if(s)if(d)e=t+b*p;else{var M=e;e=b*Math.ceil(e/b),Math.abs(e-t)/m.getGCD(x,b)>a&&(e=t+b*g,e+=b*Math.ceil((M-e)/b))}}else if(h.isMultipleYAxis&&d){var I=b*Math.floor(t/b),T=I+b*p;T<e&&(b*=2),T=e,e=(t=I)+b*p,x=Math.abs(e-t),t>0&&t<Math.abs(T-e)&&(t=0,e=b*p),e<0&&-e<Math.abs(I-t)&&(e=0,t=-b*p)}else t=b*Math.floor(t/b),e=b*Math.ceil(e/b);x=Math.abs(e-t),b=m.getGCD(x,b),p=Math.round(x/b)}if(d||s||r||(p=Math.ceil((x-n)/(b+n)))>16&&m.getPrimeFactors(p).length<2&&p++,!d&&i.forceNiceScale&&0===h.yValueDecimal&&p>x&&(p=x,b=Math.round(x/p)),p>a&&(!d&&!c||i.forceNiceScale)){var z=m.getPrimeFactors(p),X=z.length-1,E=p;t:for(var Y=0;Y<X;Y++)for(var R=0;R<=X-Y;R++){for(var F=Math.min(R+Y,X),D=E,H=1,O=R;O<=F;O++)H*=z[O];if((D/=H)<a){E=D;break t}}b=E===p?x:x/E,p=Math.round(x/b)}h.isMultipleYAxis&&0==h.multiAxisTickAmount&&h.ignoreYAxisIndexes.indexOf(o)<0&&(h.multiAxisTickAmount=p);var N=t-b,W=b*n;do{N+=b,f.push(m.stripNumber(N,7))}while(e-N>W);return{result:f,niceMin:f[0],niceMax:f[f.length-1]}}},{key:\"linearScale\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,r=Math.abs(e-t),o=[];if(t===e)return{result:o=[t],niceMin:o[0],niceMax:o[o.length-1]};\"dataPoints\"===(i=this._adjustTicksForSmallRange(i,a,r))&&(i=this.w.globals.dataPoints-1),s||(s=r/i),s=Math.round(10*(s+Number.EPSILON))/10,i===Number.MAX_VALUE&&(i=5,s=1);for(var n=t;i>=0;)o.push(n),n=m.preciseAddition(n,s),i-=1;return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:\"logarithmicScaleNice\",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r<s;r++)a.push(Math.pow(i,r));return{result:a,niceMin:a[0],niceMax:a[a.length-1]}}},{key:\"logarithmicScale\",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.log(e)/Math.log(i),r=Math.log(t)/Math.log(i),o=s-r,n=Math.round(o),l=o/n,h=0,c=r;h<n;h++,c+=l)a.push(Math.pow(i,c));return a.push(Math.pow(i,s)),{result:a,niceMin:t,niceMax:e}}},{key:\"_adjustTicksForSmallRange\",value:function(t,e,i){var a=t;if(void 0!==e&&this.w.config.yaxis[e].labels.formatter&&void 0===this.w.config.yaxis[e].tickAmount){var s=Number(this.w.config.yaxis[e].labels.formatter(1));m.isNumber(s)&&0===this.w.globals.yValueDecimal&&(a=Math.ceil(i))}return a<t?a:t}},{key:\"setYScaleForIndex\",value:function(t,e,i){var a=this.w.globals,s=this.w.config,r=a.isBarHorizontal?s.xaxis:s.yaxis[t];void 0===a.yAxisScale[t]&&(a.yAxisScale[t]=[]);var o=Math.abs(i-e);r.logarithmic&&o<=5&&(a.invalidLogScale=!0),r.logarithmic&&o>5?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase)):i!==-Number.MAX_VALUE&&m.isNumber(i)&&e!==Number.MAX_VALUE&&m.isNumber(e)?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.niceScale(e,i,t)):a.yAxisScale[t]=this.niceScale(Number.MIN_VALUE,0,t)}},{key:\"setXScale\",value:function(t,e){var i=this.w,a=i.globals,s=Math.abs(e-t);if(e!==-Number.MAX_VALUE&&m.isNumber(e)){var r=a.xTickAmount+1;s<10&&s>1&&(r=s),a.xAxisScale=this.linearScale(t,e,r,0,i.config.xaxis.stepSize)}else a.xAxisScale=this.linearScale(0,10,10);return a.xAxisScale}},{key:\"scaleMultipleYAxes\",value:function(){var t=this,e=this.w.config,i=this.w.globals;this.coreUtils.setSeriesYAxisMappings();var a=i.seriesYAxisMap,s=i.minYArr,r=i.maxYArr;i.allSeriesCollapsed=!0,i.barGroups=[],a.forEach((function(a,o){var n=[];a.forEach((function(t){var i=e.series[t].group;n.indexOf(i)<0&&n.push(i)})),a.length>0?function(){var l,h,c=Number.MAX_VALUE,d=-Number.MAX_VALUE,g=c,u=d;if(e.chart.stacked)!function(){var t=new Array(i.dataPoints).fill(0),s=[],r=[],f=[];n.forEach((function(){s.push(t.map((function(){return Number.MIN_VALUE}))),r.push(t.map((function(){return Number.MIN_VALUE}))),f.push(t.map((function(){return Number.MIN_VALUE})))}));for(var p=function(t){!l&&e.series[a[t]].type&&(l=e.series[a[t]].type);var c=a[t];h=e.series[c].group?e.series[c].group:\"axis-\".concat(o),!(i.collapsedSeriesIndices.indexOf(c)<0&&i.ancillaryCollapsedSeriesIndices.indexOf(c)<0)||(i.allSeriesCollapsed=!1,n.forEach((function(t,a){if(e.series[c].group===t)for(var o=0;o<i.series[c].length;o++){var n=i.series[c][o];n>=0?r[a][o]+=n:f[a][o]+=n,s[a][o]+=n,g=Math.min(g,n),u=Math.max(u,n)}}))),\"bar\"!==l&&\"column\"!==l||i.barGroups.push(h)},x=0;x<a.length;x++)p(x);l||(l=e.chart.type),\"bar\"===l||\"column\"===l?n.forEach((function(t,e){c=Math.min(c,Math.min.apply(null,f[e])),d=Math.max(d,Math.max.apply(null,r[e]))})):(n.forEach((function(t,e){g=Math.min(g,Math.min.apply(null,s[e])),u=Math.max(u,Math.max.apply(null,s[e]))})),c=g,d=u),c===Number.MIN_VALUE&&d===Number.MIN_VALUE&&(d=-Number.MAX_VALUE)}();else for(var f=0;f<a.length;f++){var p=a[f];c=Math.min(c,s[p]),d=Math.max(d,r[p]),!(i.collapsedSeriesIndices.indexOf(p)<0&&i.ancillaryCollapsedSeriesIndices.indexOf(p)<0)||(i.allSeriesCollapsed=!1)}void 0!==e.yaxis[o].min&&(c=\"function\"==typeof e.yaxis[o].min?e.yaxis[o].min(c):e.yaxis[o].min),void 0!==e.yaxis[o].max&&(d=\"function\"==typeof e.yaxis[o].max?e.yaxis[o].max(d):e.yaxis[o].max),i.barGroups=i.barGroups.filter((function(t,e,i){return i.indexOf(t)===e})),t.setYScaleForIndex(o,c,d),a.forEach((function(t){s[t]=i.yAxisScale[o].niceMin,r[t]=i.yAxisScale[o].niceMax}))}():t.setYScaleForIndex(o,0,-Number.MAX_VALUE)}))}}]),t}(),J=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.scales=new $(e)}return s(t,[{key:\"init\",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:\"getMinYMaxY\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;\"candlestick\"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):\"boxPlot\"===s.chart.type?(h=r.seriesCandleO,c=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);var d=!1;if(r.seriesX.length>=a){var g,u=null===(g=r.brushSource)||void 0===g?void 0:g.w.config.chart.brush;(s.chart.zoom.enabled&&s.chart.zoom.autoScaleYaxis||null!=u&&u.enabled&&null!=u&&u.autoScaleYaxis)&&(d=!0)}for(var f=t;f<a;f++){r.dataPoints=Math.max(r.dataPoints,l[f].length);var p=s.series[f].type;r.categoryLabels.length&&(r.dataPoints=r.categoryLabels.filter((function(t){return void 0!==t})).length),r.labels.length&&\"datetime\"!==s.xaxis.type&&0!==r.series.reduce((function(t,e){return t+e.length}),0)&&(r.dataPoints=Math.max(r.dataPoints,r.labels.length));var x=0,b=l[f].length-1;if(d){if(s.xaxis.min)for(;x<b&&r.seriesX[f][x]<s.xaxis.min;x++);if(s.xaxis.max)for(;b>x&&r.seriesX[f][b]>s.xaxis.max;b--);}for(var v=x;v<=b&&v<r.series[f].length;v++){var y=l[f][v];if(null!==y&&m.isNumber(y)){switch(void 0!==c[f][v]&&(o=Math.max(o,c[f][v]),e=Math.min(e,c[f][v])),void 0!==h[f][v]&&(e=Math.min(e,h[f][v]),i=Math.max(i,h[f][v])),p){case\"candlestick\":void 0!==r.seriesCandleC[f][v]&&(o=Math.max(o,r.seriesCandleH[f][v]),e=Math.min(e,r.seriesCandleL[f][v]));break;case\"boxPlot\":void 0!==r.seriesCandleC[f][v]&&(o=Math.max(o,r.seriesCandleC[f][v]),e=Math.min(e,r.seriesCandleO[f][v]))}p&&\"candlestick\"!==p&&\"boxPlot\"!==p&&\"rangeArea\"!==p&&\"rangeBar\"!==p&&(o=Math.max(o,r.series[f][v]),e=Math.min(e,r.series[f][v])),i=o,r.seriesGoals[f]&&r.seriesGoals[f][v]&&Array.isArray(r.seriesGoals[f][v])&&r.seriesGoals[f][v].forEach((function(t){n!==Number.MIN_VALUE&&(n=Math.min(n,t.value),e=n),o=Math.max(o,t.value),i=o})),m.isFloat(y)&&(y=m.noExponents(y),r.yValueDecimal=Math.max(r.yValueDecimal,y.toString().split(\".\")[1].length)),n>h[f][v]&&h[f][v]<0&&(n=h[f][v])}else r.hasNullValues=!0}\"bar\"!==p&&\"column\"!==p||(n<0&&o<0&&(o=0,i=Math.max(i,0)),n===Number.MIN_VALUE&&(n=0,e=Math.min(e,0)))}return\"rangeBar\"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(n=e),\"bar\"===s.chart.type&&(n<0&&o<0&&(o=0),n===Number.MIN_VALUE&&(n=0)),{minY:n,maxY:o,lowestY:e,highestY:i}}},{key:\"setYRange\",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i,a=Number.MAX_VALUE;if(t.isMultipleYAxis){a=Number.MAX_VALUE;for(var s=0;s<t.series.length;s++)i=this.getMinYMaxY(s),t.minYArr[s]=i.lowestY,t.maxYArr[s]=i.highestY,a=Math.min(a,i.lowestY)}if(i=this.getMinYMaxY(0,a,null,t.series.length),\"bar\"===e.chart.type?(t.minY=i.minY,t.maxY=i.maxY):(t.minY=i.lowestY,t.maxY=i.highestY),a=i.lowestY,e.chart.stacked&&this._setStackedMinMax(),\"line\"===e.chart.type||\"area\"===e.chart.type||\"scatter\"===e.chart.type||\"candlestick\"===e.chart.type||\"boxPlot\"===e.chart.type||\"rangeBar\"===e.chart.type&&!t.isBarHorizontal?t.minY===Number.MIN_VALUE&&a!==-Number.MAX_VALUE&&a!==t.maxY&&(t.minY=a):t.minY=t.minY!==Number.MIN_VALUE?Math.min(i.minY,t.minY):i.minY,e.yaxis.forEach((function(e,i){void 0!==e.max&&(\"number\"==typeof e.max?t.maxYArr[i]=e.max:\"function\"==typeof e.max&&(t.maxYArr[i]=e.max(t.isMultipleYAxis?t.maxYArr[i]:t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&(\"number\"==typeof e.min?t.minYArr[i]=e.min:\"function\"==typeof e.min&&(t.minYArr[i]=e.min(t.isMultipleYAxis?t.minYArr[i]===Number.MIN_VALUE?0:t.minYArr[i]:t.minY)),t.minY=t.minYArr[i])})),t.isBarHorizontal){[\"min\",\"max\"].forEach((function(i){void 0!==e.xaxis[i]&&\"number\"==typeof e.xaxis[i]&&(\"min\"===i?t.minY=e.xaxis[i]:t.maxY=e.xaxis[i])}))}return t.isMultipleYAxis?(this.scales.scaleMultipleYAxes(),t.minY=a):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.minY,t.maxYArr[0]=t.maxY),t.barGroups=[],t.lineGroups=[],t.areaGroups=[],e.series.forEach((function(i){switch(i.type||e.chart.type){case\"bar\":case\"column\":t.barGroups.push(i.group);break;case\"line\":t.lineGroups.push(i.group);break;case\"area\":t.areaGroups.push(i.group)}})),t.barGroups=t.barGroups.filter((function(t,e,i){return i.indexOf(t)===e})),t.lineGroups=t.lineGroups.filter((function(t,e,i){return i.indexOf(t)===e})),t.areaGroups=t.areaGroups.filter((function(t,e,i){return i.indexOf(t)===e})),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr,yAxisScale:t.yAxisScale}}},{key:\"setXRange\",value:function(){var t=this.w.globals,e=this.w.config,i=\"numeric\"===e.xaxis.type||\"datetime\"===e.xaxis.type||\"category\"===e.xaxis.type&&!t.noLabelsProvided||t.noLabelsProvided||t.isXNumeric;if(t.isXNumeric&&function(){for(var e=0;e<t.series.length;e++)if(t.labels[e])for(var i=0;i<t.labels[e].length;i++)null!==t.labels[e][i]&&m.isNumber(t.labels[e][i])&&(t.maxX=Math.max(t.maxX,t.labels[e][i]),t.initialMaxX=Math.max(t.maxX,t.labels[e][i]),t.minX=Math.min(t.minX,t.labels[e][i]),t.initialMinX=Math.min(t.minX,t.labels[e][i]))}(),t.noLabelsProvided&&0===e.xaxis.categories.length&&(t.maxX=t.labels[t.labels.length-1],t.initialMaxX=t.labels[t.labels.length-1],t.minX=1,t.initialMinX=1),t.isXNumeric||t.noLabelsProvided||t.dataFormatXNumeric){var a=10;if(void 0===e.xaxis.tickAmount)a=Math.round(t.svgWidth/150),\"numeric\"===e.xaxis.type&&t.dataPoints<30&&(a=t.dataPoints-1),a>t.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1);else if(\"dataPoints\"===e.xaxis.tickAmount){if(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric){var s=t.maxX-t.minX;s<30&&(a=s-1)}}else a=e.xaxis.tickAmount;if(t.xTickAmount=a,void 0!==e.xaxis.max&&\"number\"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&\"number\"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var r=[],o=t.minX-1;o<t.maxX;o++)r.push(o+1);t.xAxisScale={result:r,niceMin:r[0],niceMax:r[r.length-1]}}else t.xAxisScale=this.scales.setXScale(t.minX,t.maxX);else t.xAxisScale=this.scales.linearScale(0,a,a,0,e.xaxis.stepSize),t.noLabelsProvided&&t.labels.length>0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1,0,e.xaxis.stepSize),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:\"setZRange\",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e<t.series.length;e++)if(void 0!==t.seriesZ[e])for(var i=0;i<t.seriesZ[e].length;i++)null!==t.seriesZ[e][i]&&m.isNumber(t.seriesZ[e][i])&&(t.maxZ=Math.max(t.maxZ,t.seriesZ[e][i]),t.minZ=Math.min(t.minZ,t.seriesZ[e][i]))}},{key:\"_handleSingleDataPoint\",value:function(){var t=this.w.globals,e=this.w.config;if(t.minX===t.maxX){var i=new L(this.ctx);if(\"datetime\"===e.xaxis.type){var a=i.getDate(t.minX);e.xaxis.labels.datetimeUTC?a.setUTCDate(a.getUTCDate()-2):a.setDate(a.getDate()-2),t.minX=new Date(a).getTime();var s=i.getDate(t.maxX);e.xaxis.labels.datetimeUTC?s.setUTCDate(s.getUTCDate()+2):s.setDate(s.getDate()+2),t.maxX=new Date(s).getTime()}else(\"numeric\"===e.xaxis.type||\"category\"===e.xaxis.type&&!t.noLabelsProvided)&&(t.minX=t.minX-2,t.initialMinX=t.minX,t.maxX=t.maxX+2,t.initialMaxX=t.maxX)}}},{key:\"_getMinXDiff\",value:function(){var t=this.w.globals;t.isXNumeric&&t.seriesX.forEach((function(e,i){1===e.length&&e.push(t.seriesX[t.maxValsInArrayIndex][t.seriesX[t.maxValsInArrayIndex].length-1]);var a=e.slice();a.sort((function(t,e){return t-e})),a.forEach((function(e,i){if(i>0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:\"_setStackedMinMax\",value:function(){var t=this,e=this.w.globals;if(e.series.length){var i=e.seriesGroups;i.length||(i=[this.w.globals.seriesNames.map((function(t){return t}))]);var a={},s={};i.forEach((function(i){a[i]=[],s[i]=[],t.w.config.series.map((function(t,a){return i.indexOf(e.seriesNames[a])>-1?a:null})).filter((function(t){return null!==t})).forEach((function(r){for(var o=0;o<e.series[e.maxValsInArrayIndex].length;o++){var n,l,h,c;void 0===a[i][o]&&(a[i][o]=0,s[i][o]=0),(t.w.config.chart.stacked&&!e.comboCharts||t.w.config.chart.stacked&&e.comboCharts&&(!t.w.config.chart.stackOnlyBar||\"bar\"===(null===(n=t.w.config.series)||void 0===n||null===(l=n[r])||void 0===l?void 0:l.type)||\"column\"===(null===(h=t.w.config.series)||void 0===h||null===(c=h[r])||void 0===c?void 0:c.type)))&&null!==e.series[r][o]&&m.isNumber(e.series[r][o])&&(e.series[r][o]>0?a[i][o]+=parseFloat(e.series[r][o])+1e-4:s[i][o]+=parseFloat(e.series[r][o]))}}))})),Object.entries(a).forEach((function(t){var i=f(t,1)[0];a[i].forEach((function(t,r){e.maxY=Math.max(e.maxY,a[i][r]),e.minY=Math.min(e.minY,s[i][r])}))}))}}}]),t}(),Q=function(){function t(e,a){i(this,t),this.ctx=e,this.elgrid=a,this.w=e.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xAxisoffX=\"bottom\"===s.config.xaxis.position?s.globals.gridHeight:0,this.drawnLabels=[],this.axesUtils=new M(e)}return s(t,[{key:\"drawYaxis\",value:function(t){var e=this.w,i=new k(this.ctx),a=e.config.yaxis[t].labels.style,s=a.fontSize,r=a.fontFamily,o=a.fontWeight,n=i.group({class:\"apexcharts-yaxis\",rel:t,transform:\"translate(\".concat(e.globals.translateYAxisX[t],\", 0)\")});if(this.axesUtils.isYAxisHidden(t))return n;var l=i.group({class:\"apexcharts-yaxis-texts-g\"});n.add(l);var h=e.globals.yAxisScale[t].result.length-1,c=e.globals.gridHeight/h,d=e.globals.yLabelFormatters[t],g=this.axesUtils.checkForReversedLabels(t,e.globals.yAxisScale[t].result.slice());if(e.config.yaxis[t].labels.show){var u=e.globals.translateY+e.config.yaxis[t].labels.offsetY;e.globals.isBarHorizontal?u=0:\"heatmap\"===e.config.chart.type&&(u-=c/2),u+=parseInt(s,10)/3;for(var f=h;f>=0;f--){var p=d(g[f],f,e),x=e.config.yaxis[t].labels.padding;e.config.yaxis[t].opposite&&0!==e.config.yaxis.length&&(x*=-1);var b=this.getTextAnchor(e.config.yaxis[t].labels.align,e.config.yaxis[t].opposite),v=this.axesUtils.getYAxisForeColor(a.colors,t),y=Array.isArray(v)?v[f]:v,w=m.listToArray(e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-label tspan\"))).map((function(t){return t.textContent})),A=i.drawText({x:x,y:u,text:w.includes(p)&&!e.config.yaxis[t].labels.showDuplicates?\"\":p,textAnchor:b,fontSize:s,fontFamily:r,fontWeight:o,maxWidth:e.config.yaxis[t].labels.maxWidth,foreColor:y,isPlainText:!1,cssClass:\"apexcharts-yaxis-label \".concat(a.cssClass)});l.add(A),this.addTooltip(A,p),0!==e.config.yaxis[t].labels.rotate&&this.rotateLabel(i,A,firstLabel,e.config.yaxis[t].labels.rotate),u+=c}}return this.addYAxisTitle(i,n,t),this.addAxisBorder(i,n,t,h,c),n}},{key:\"getTextAnchor\",value:function(t,e){return\"left\"===t?\"start\":\"center\"===t?\"middle\":\"right\"===t?\"end\":e?\"start\":\"end\"}},{key:\"addTooltip\",value:function(t,e){var i=document.createElementNS(this.w.globals.SVGNS,\"title\");i.textContent=Array.isArray(e)?e.join(\" \"):e,t.node.appendChild(i)}},{key:\"rotateLabel\",value:function(t,e,i,a){var s=t.rotateAroundCenter(i.node),r=t.rotateAroundCenter(e.node);e.node.setAttribute(\"transform\",\"rotate(\".concat(a,\" \").concat(s.x,\" \").concat(r.y,\")\"))}},{key:\"addYAxisTitle\",value:function(t,e,i){var a=this.w;if(void 0!==a.config.yaxis[i].title.text){var s=t.group({class:\"apexcharts-yaxis-title\"}),r=a.config.yaxis[i].opposite?a.globals.translateYAxisX[i]:0,o=t.drawText({x:r,y:a.globals.gridHeight/2+a.globals.translateY+a.config.yaxis[i].title.offsetY,text:a.config.yaxis[i].title.text,textAnchor:\"end\",foreColor:a.config.yaxis[i].title.style.color,fontSize:a.config.yaxis[i].title.style.fontSize,fontWeight:a.config.yaxis[i].title.style.fontWeight,fontFamily:a.config.yaxis[i].title.style.fontFamily,cssClass:\"apexcharts-yaxis-title-text \".concat(a.config.yaxis[i].title.style.cssClass)});s.add(o),e.add(s)}}},{key:\"addAxisBorder\",value:function(t,e,i,a,s){var r=this.w,o=r.config.yaxis[i].axisBorder,n=31+o.offsetX;if(r.config.yaxis[i].opposite&&(n=-31-o.offsetX),o.show){var l=t.drawLine(n,r.globals.translateY+o.offsetY-2,n,r.globals.gridHeight+r.globals.translateY+o.offsetY+2,o.color,0,o.width);e.add(l)}r.config.yaxis[i].axisTicks.show&&this.axesUtils.drawYAxisTicks(n,a,o,r.config.yaxis[i].axisTicks,i,s,e)}},{key:\"drawYaxisInversed\",value:function(t){var e=this.w,i=new k(this.ctx),a=i.group({class:\"apexcharts-xaxis apexcharts-yaxis-inversed\"}),s=i.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(e.globals.translateXAxisX,\", \").concat(e.globals.translateXAxisY,\")\")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,o=e.globals.gridWidth/r+.1,n=o+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=this.axesUtils.checkForReversedLabels(t,e.globals.yAxisScale[t].result.slice()),c=e.globals.timescaleLabels;if(c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),e.config.xaxis.labels.show)for(var d=c.length?0:r;c.length?d<c.length:d>=0;c.length?d++:d--){var g=l(h[d],d,e),u=e.globals.gridWidth+e.globals.padHorizontal-(n-o+e.config.xaxis.labels.offsetX);if(c.length){var f=this.axesUtils.getLabel(h,c,u,d,this.drawnLabels,this.xaxisFontSize);u=f.x,g=f.text,this.drawnLabels.push(f.text),0===d&&e.globals.skipFirstTimelinelabel&&(g=\"\"),d===h.length-1&&e.globals.skipLastTimelinelabel&&(g=\"\")}var p=i.drawText({x:u,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-(\"top\"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:g,textAnchor:\"middle\",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:\"apexcharts-xaxis-label \".concat(e.config.xaxis.labels.style.cssClass)});s.add(p),p.tspan(g),this.addTooltip(p,g),n+=o}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:\"inversedYAxisBorder\",value:function(t){var e=this.w,i=new k(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;\"bar\"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&e.config.grid.show?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:\"inversedYAxisTitleText\",value:function(t){var e=this.w,i=new k(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:\"apexcharts-xaxis-title apexcharts-yaxis-title-inversed\"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:\"middle\",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:\"apexcharts-xaxis-title-text \".concat(e.config.xaxis.title.style.cssClass)});a.add(s),t.add(a)}}},{key:\"yAxisTitleRotate\",value:function(t,e){var i=this.w,a=new k(this.ctx),s=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-texts-g\")),r=s?s.getBoundingClientRect():{width:0,height:0},o=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-title text\")),n=o?o.getBoundingClientRect():{width:0,height:0};if(o){var l=this.xPaddingForYAxisTitle(t,r,n,e);o.setAttribute(\"x\",l.xPos-(e?10:0));var h=a.rotateAroundCenter(o);o.setAttribute(\"transform\",\"rotate(\".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate,\" \").concat(h.x,\" \").concat(h.y,\")\"))}}},{key:\"xPaddingForYAxisTitle\",value:function(t,e,i,a){var s=this.w,r=0,o=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:r,padd:0}:(a?r=e.width+s.config.yaxis[t].title.offsetX+i.width/2+o/2:(r=-1*e.width+s.config.yaxis[t].title.offsetX+o/2+i.width/2,s.globals.isBarHorizontal&&(o=25,r=-1*e.width-s.config.yaxis[t].title.offsetX-o)),{xPos:r,padd:o})}},{key:\"setYAxisXPosition\",value:function(t,e){var i=this.w,a=0,s=0,r=18,o=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.forEach((function(n,l){var h=i.globals.ignoreYAxisIndexes.includes(l)||!n.show||n.floating||0===t[l].width,c=t[l].width+e[l].width;n.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-n.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+o,h||(o+=c+20),i.globals.translateYAxisX[l]=s-n.labels.offsetX+20):(a=i.globals.translateX-r,h||(r+=c+20),i.globals.translateYAxisX[l]=a+n.labels.offsetX)}))}},{key:\"setYAxisTextAlignments\",value:function(){var t=this.w;m.listToArray(t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-yaxis\")).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&!a.floating&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-texts-g\")),r=m.listToArray(t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-label\"))),o=s.getBoundingClientRect();r.forEach((function(t){t.setAttribute(\"text-anchor\",a.labels.align)})),\"left\"!==a.labels.align||a.opposite?\"center\"===a.labels.align?s.setAttribute(\"transform\",\"translate(\".concat(o.width/2*(a.opposite?1:-1),\", 0)\")):\"right\"===a.labels.align&&a.opposite&&s.setAttribute(\"transform\",\"translate(\".concat(o.width,\", 0)\")):s.setAttribute(\"transform\",\"translate(-\".concat(o.width,\", 0)\"))}}))}}]),t}(),K=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.documentEvent=m.bind(this.documentEvent,this)}return s(t,[{key:\"addEventListener\",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:\"removeEventListener\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:\"fireEvent\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r<s;r++)a[r].apply(null,e)}}},{key:\"setupEventHandlers\",value:function(){var t=this,e=this.w,i=this.ctx,a=e.globals.dom.baseEl.querySelector(e.globals.chartClass);this.ctx.eventList.forEach((function(t){a.addEventListener(t,(function(t){var a=Object.assign({},e,{seriesIndex:e.globals.axisCharts?e.globals.capturedSeriesIndex:0,dataPointIndex:e.globals.capturedDataPointIndex});\"mousemove\"===t.type||\"touchmove\"===t.type?\"function\"==typeof e.config.chart.events.mouseMove&&e.config.chart.events.mouseMove(t,i,a):\"mouseleave\"===t.type||\"touchleave\"===t.type?\"function\"==typeof e.config.chart.events.mouseLeave&&e.config.chart.events.mouseLeave(t,i,a):(\"mouseup\"===t.type&&1===t.which||\"touchend\"===t.type)&&(\"function\"==typeof e.config.chart.events.click&&e.config.chart.events.click(t,i,a),i.ctx.events.fireEvent(\"click\",[t,i,a]))}),{capture:!1,passive:!0})})),this.ctx.eventList.forEach((function(i){e.globals.dom.baseEl.addEventListener(i,t.documentEvent,{passive:!0})})),this.ctx.core.setupBrushHandler()}},{key:\"documentEvent\",value:function(t){var e=this.w,i=t.target.className;if(\"click\"===t.type){var a=e.globals.dom.baseEl.querySelector(\".apexcharts-menu\");a&&a.classList.contains(\"apexcharts-menu-open\")&&\"apexcharts-menu-icon\"!==i&&a.classList.remove(\"apexcharts-menu-open\")}e.globals.clientX=\"touchmove\"===t.type?t.touches[0].clientX:t.clientX,e.globals.clientY=\"touchmove\"===t.type?t.touches[0].clientY:t.clientY}}]),t}(),tt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"setCurrentLocaleValues\",value:function(t){var e=this.w.config.chart.locales;window.Apex.chart&&window.Apex.chart.locales&&window.Apex.chart.locales.length>0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error(\"Wrong locale name provided. Please make sure you set the correct locale name in options\");var a=m.extend(z,i);this.w.globals.locale=a.options}}]),t}(),et=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"drawAxis\",value:function(t,e){var i,a,s=this,r=this.w.globals,o=this.w.config,n=new q(this.ctx,e),l=new Q(this.ctx,e);r.axisCharts&&\"radar\"!==t&&(r.isBarHorizontal?(a=l.drawYaxisInversed(0),i=n.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=n.drawXaxis(),r.dom.elGraphical.add(i),o.yaxis.map((function(t,e){if(-1===r.ignoreYAxisIndexes.indexOf(e)&&(a=l.drawYaxis(e),r.dom.Paper.add(a),\"back\"===s.w.config.grid.position)){var i=r.dom.Paper.children()[1];i.remove(),r.dom.Paper.add(i)}}))))}}]),t}(),it=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"drawXCrosshairs\",value:function(){var t=this.w,e=new k(this.ctx),i=new w(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,o=a.colorFrom,n=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,g=s.left,u=s.top,f=s.blur,p=s.color,x=s.opacity,b=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){\"gradient\"===r&&(b=e.drawGradient(\"vertical\",o,n,l,h,null,c,null));var v=e.drawRect();1===t.config.xaxis.crosshairs.width&&(v=e.drawLine());var y=t.globals.gridHeight;(!m.isNumber(y)||y<0)&&(y=0);var A=t.config.xaxis.crosshairs.width;(!m.isNumber(A)||A<0)&&(A=0),v.attr({class:\"apexcharts-xcrosshairs\",x:0,y:0,y2:y,width:A,height:y,fill:b,filter:\"none\",\"fill-opacity\":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,\"stroke-width\":t.config.xaxis.crosshairs.stroke.width,\"stroke-dasharray\":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(v=i.dropShadow(v,{left:g,top:u,blur:f,color:p,opacity:x})),t.globals.dom.elGraphical.add(v)}}},{key:\"drawYCrosshairs\",value:function(){var t=this.w,e=new k(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:\"apexcharts-ycrosshairs\"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:\"apexcharts-ycrosshairs-hidden\"}),t.globals.dom.elGraphical.add(r)}}]),t}(),at=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"checkResponsiveConfig\",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new D({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var n=m.clone(i.globals.initialConfig);n.series=m.clone(i.config.series);var l=A.extendArrayProps(r,n,i);t=m.extend(l,t),t=m.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var h=0;h<s.length;h++)o<s[h].breakpoint&&(t=A.extendArrayProps(r,s[h].options,i),t=m.extend(i.config,t),e.overrideResponsiveOptions(t))};if(t){var n=A.extendArrayProps(r,t,i);n=m.extend(i.config,n),o(n=m.extend(n,t))}else o({})}}},{key:\"overrideResponsiveOptions\",value:function(t){var e=new D(t).init({responsiveOverride:!0});this.w.config=e}}]),t}(),st=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.colors=[],this.isColorFn=!1,this.isHeatmapDistributed=this.checkHeatmapDistributed(),this.isBarDistributed=this.checkBarDistributed()}return s(t,[{key:\"checkHeatmapDistributed\",value:function(){var t=this.w.config,e=t.chart,i=t.plotOptions;return\"treemap\"===e.type&&i.treemap&&i.treemap.distributed||\"heatmap\"===e.type&&i.heatmap&&i.heatmap.distributed}},{key:\"checkBarDistributed\",value:function(){var t=this.w.config,e=t.chart,i=t.plotOptions;return i.bar&&i.bar.distributed&&(\"bar\"===e.type||\"rangeBar\"===e.type)}},{key:\"init\",value:function(){this.setDefaultColors()}},{key:\"setDefaultColors\",value:function(){var t=this.w,e=new m;t.globals.dom.elWrap.classList.add(\"apexcharts-theme-\".concat(t.config.theme.mode));var i=p(t.config.colors||t.config.fill.colors||[]);t.globals.colors=this.getColors(i),this.applySeriesColors(t.globals.seriesColors,t.globals.colors),t.config.theme.monochrome.enabled&&(t.globals.colors=this.getMonochromeColors(t.config.theme.monochrome,t.globals.series,e));var a=t.globals.colors.slice();this.pushExtraColors(t.globals.colors),this.applyColorTypes([\"fill\",\"stroke\"],a),this.applyDataLabelsColors(a),this.applyRadarPolygonsColors(),this.applyMarkersColors(a)}},{key:\"getColors\",value:function(t){var e=this,i=this.w;return t&&0!==t.length?Array.isArray(t)&&t.length>0&&\"function\"==typeof t[0]?(this.isColorFn=!0,i.config.series.map((function(a,s){var r=t[s]||t[0];return\"function\"==typeof r?r({value:i.globals.axisCharts?i.globals.series[s][0]||0:i.globals.series[s],seriesIndex:s,dataPointIndex:s,w:e.w}):r}))):t:this.predefined()}},{key:\"applySeriesColors\",value:function(t,e){t.forEach((function(t,i){t&&(e[i]=t)}))}},{key:\"getMonochromeColors\",value:function(t,e,i){var a=t.color,s=t.shadeIntensity,r=t.shadeTo,o=this.isBarDistributed||this.isHeatmapDistributed?e[0].length*e.length:e.length,n=1/(o/s),l=0;return Array.from({length:o},(function(){var t=\"dark\"===r?i.shadeColor(-1*l,a):i.shadeColor(l,a);return l+=n,t}))}},{key:\"applyColorTypes\",value:function(t,e){var i=this,a=this.w;t.forEach((function(t){a.globals[t].colors=void 0===a.config[t].colors?i.isColorFn?a.config.colors:e:a.config[t].colors.slice(),i.pushExtraColors(a.globals[t].colors)}))}},{key:\"applyDataLabelsColors\",value:function(t){var e=this.w;e.globals.dataLabels.style.colors=void 0===e.config.dataLabels.style.colors?t:e.config.dataLabels.style.colors.slice(),this.pushExtraColors(e.globals.dataLabels.style.colors,50)}},{key:\"applyRadarPolygonsColors\",value:function(){var t=this.w;t.globals.radarPolygons.fill.colors=void 0===t.config.plotOptions.radar.polygons.fill.colors?[\"dark\"===t.config.theme.mode?\"#424242\":\"none\"]:t.config.plotOptions.radar.polygons.fill.colors.slice(),this.pushExtraColors(t.globals.radarPolygons.fill.colors,20)}},{key:\"applyMarkersColors\",value:function(t){var e=this.w;e.globals.markers.colors=void 0===e.config.markers.colors?t:e.config.markers.colors.slice(),this.pushExtraColors(e.globals.markers.colors)}},{key:\"pushExtraColors\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||\"heatmap\"===a.config.chart.type&&a.config.plotOptions.heatmap&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.length<s)for(var r=s-t.length,o=0;o<r;o++)t.push(t[o])}},{key:\"updateThemeOptions\",value:function(t){t.chart=t.chart||{},t.tooltip=t.tooltip||{};var e=t.theme.mode,i=\"dark\"===e?\"palette4\":\"light\"===e?\"palette1\":t.theme.palette||\"palette1\",a=\"dark\"===e?\"#f6f7f8\":\"light\"===e?\"#373d3f\":t.chart.foreColor||\"#373d3f\";return t.tooltip.theme=e||\"light\",t.chart.foreColor=a,t.theme.palette=i,t}},{key:\"predefined\",value:function(){var t={palette1:[\"#008FFB\",\"#00E396\",\"#FEB019\",\"#FF4560\",\"#775DD0\"],palette2:[\"#3f51b5\",\"#03a9f4\",\"#4caf50\",\"#f9ce1d\",\"#FF9800\"],palette3:[\"#33b2df\",\"#546E7A\",\"#d4526e\",\"#13d8aa\",\"#A5978B\"],palette4:[\"#4ecdc4\",\"#c7f464\",\"#81D4FA\",\"#fd6a6a\",\"#546E7A\"],palette5:[\"#2b908f\",\"#f9a3a4\",\"#90ee7e\",\"#fa4443\",\"#69d2e7\"],palette6:[\"#449DD1\",\"#F86624\",\"#EA3546\",\"#662E9B\",\"#C5D86D\"],palette7:[\"#D7263D\",\"#1B998B\",\"#2E294E\",\"#F46036\",\"#E2C044\"],palette8:[\"#662E9B\",\"#F86624\",\"#F9C80E\",\"#EA3546\",\"#43BCCD\"],palette9:[\"#5C4742\",\"#A5978B\",\"#8D5B4C\",\"#5A2A27\",\"#C4BBAF\"],palette10:[\"#A300D6\",\"#7D02EB\",\"#5653FE\",\"#2983FF\",\"#00B1F2\"],default:[\"#008FFB\",\"#00E396\",\"#FEB019\",\"#FF4560\",\"#775DD0\"]};return t[this.w.config.theme.palette]||t.default}}]),t}(),rt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"draw\",value:function(){this.drawTitleSubtitle(\"title\"),this.drawTitleSubtitle(\"subtitle\")}},{key:\"drawTitleSubtitle\",value:function(t){var e=this.w,i=\"title\"===t?e.config.title:e.config.subtitle,a=e.globals.svgWidth/2,s=i.offsetY,r=\"middle\";if(\"left\"===i.align?(a=10,r=\"start\"):\"right\"===i.align&&(a=e.globals.svgWidth-10,r=\"end\"),a+=i.offsetX,s=s+parseInt(i.style.fontSize,10)+i.margin/2,void 0!==i.text){var o=new k(this.ctx).drawText({x:a,y:s,text:i.text,textAnchor:r,fontSize:i.style.fontSize,fontFamily:i.style.fontFamily,fontWeight:i.style.fontWeight,foreColor:i.style.color,opacity:1});o.node.setAttribute(\"class\",\"apexcharts-\".concat(t,\"-text\")),e.globals.dom.Paper.add(o)}}}]),t}(),ot=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"getTitleSubtitleCoords\",value:function(t){var e=this.w,i=0,a=0,s=\"title\"===t?e.config.title.floating:e.config.subtitle.floating,r=e.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(t,\"-text\"));if(null!==r&&!s){var o=r.getBoundingClientRect();i=o.width,a=e.globals.axisCharts?o.height+5:o.height}return{width:i,height:a}}},{key:\"getLegendsRect\",value:function(){var t=this.w,e=t.globals.dom.elLegendWrap;t.config.legend.height||\"top\"!==t.config.legend.position&&\"bottom\"!==t.config.legend.position||(e.style.maxHeight=t.globals.svgHeight/2+\"px\");var i=Object.assign({},m.getBoundingClientRect(e));return null!==e&&!t.config.legend.floating&&t.config.legend.show?this.dCtx.lgRect={x:i.x,y:i.y,height:i.height,width:0===i.height?0:i.width}:this.dCtx.lgRect={x:0,y:0,height:0,width:0},\"left\"!==t.config.legend.position&&\"right\"!==t.config.legend.position||1.5*this.dCtx.lgRect.width>t.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:\"getDatalabelsRect\",value:function(){var t=this,e=this.w,i=[];e.config.series.forEach((function(s,r){s.data.forEach((function(s,o){var n;n=e.globals.series[r][o],a=e.config.dataLabels.formatter(n,{ctx:t.dCtx.ctx,seriesIndex:r,dataPointIndex:o,w:e}),i.push(a)}))}));var a=m.getLargestStringFromArr(i),s=new k(this.dCtx.ctx),r=e.config.dataLabels.style,o=s.getTextRects(a,parseInt(r.fontSize),r.fontFamily);return{width:1.05*o.width,height:o.height}}},{key:\"getLargestStringFromMultiArr\",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,p(a));i=e[a.indexOf(s)]}return i}}]),t}(),nt=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"getxAxisLabelsCoords\",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=\"left\"!==e.config.legend.position&&\"right\"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=m.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var n=new P(this.dCtx.ctx),l=r;r=n.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new L(this.dCtx.ctx).formatDate,w:e}),o=n.xLabelFormat(s,o,l,{i:void 0,dateFormatter:new L(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||\"\"===String(r).trim())&&(o=r=\"1\");var h=new k(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==o&&(d=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,\"rotate(\".concat(e.config.xaxis.labels.rotate,\" 0 0)\"),!1)};c=g(r),r!==o&&(d=g(o)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:\"getxAxisGroupLabelsCoords\",value:function(){var t,e=this.w;if(!e.globals.hasXaxisGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=m.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),n=new k(this.dCtx.ctx),l=n.getTextRects(r,a),h=l;return r!==o&&(h=n.getTextRects(o,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:\"getxAxisTitleCoords\",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new k(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:\"getxAxisTimeScaleLabelsCoords\",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error(\"You have possibly supplied invalid Date format. Please supply a valid JavaScript Date\"),0):t.length>e.length?t:e}),0);return 1.05*(t=new k(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:\"additionalPaddingXLabels\",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,o=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var n=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,n){s.yaxis.length>1&&function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)}(n)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var n=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+o/1.75-e.dCtx.yAxisWidthRight,h=n.position-o/1.75+e.dCtx.yAxisWidthLeft,c=\"right\"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||\"bar\"!==s.chart.type&&\"candlestick\"!==s.chart.type&&\"rangeBar\"!==s.chart.type&&\"boxPlot\"!==s.chart.type?10:o/1.75)&&(a.skipFirstTimelinelabel=!0)}else\"datetime\"===r?e.dCtx.gridPad.right<o&&!a.rotateXLabels&&(a.skipLastTimelinelabel=!0):\"datetime\"!==r&&e.dCtx.gridPad.right<o/2-e.dCtx.yAxisWidthRight&&!a.rotateXLabels&&!i.config.xaxis.labels.trim&&(e.dCtx.xPadRight=o/2+1)}(t)};s.yaxis.forEach((function(t,i){n?(e.dCtx.gridPad.left<o&&(e.dCtx.xPadLeft=o/2+1),e.dCtx.xPadRight=o/2+1):l(t,i)}))}}]),t}(),lt=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"getyAxisLabelsCoords\",value:function(){var t=this,e=this.w,i=[],a=10,s=new M(this.dCtx.ctx);return e.config.yaxis.map((function(r,o){var n={seriesIndex:o,dataPointIndex:-1,w:e},l=e.globals.yAxisScale[o],h=0;if(!s.isYAxisHidden(o)&&r.labels.show&&void 0!==r.labels.minWidth&&(h=r.labels.minWidth),!s.isYAxisHidden(o)&&r.labels.show&&l.result.length){var c=e.globals.yLabelFormatters[o],d=l.niceMin===Number.MIN_VALUE?0:l.niceMin,g=l.result.reduce((function(t,e){var i,a;return(null===(i=String(c(t,n)))||void 0===i?void 0:i.length)>(null===(a=String(c(e,n)))||void 0===a?void 0:a.length)?t:e}),d),u=g=c(g,n);if(void 0!==g&&0!==g.length||(g=l.niceMax),e.globals.isBarHorizontal){a=0;var f=e.globals.labels.slice();g=m.getLargestStringFromArr(f),g=c(g,{seriesIndex:o,dataPointIndex:-1,w:e}),u=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,f)}var p=new k(t.dCtx.ctx),x=\"rotate(\".concat(r.labels.rotate,\" 0 0)\"),b=p.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,x,!1),v=b;g!==u&&(v=p.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,x,!1)),i.push({width:(h>v.width||h>b.width?h:v.width>b.width?v.width:b.width)+a,height:v.height>b.height?v.height:b.height})}else i.push({width:0,height:0})})),i}},{key:\"getyAxisTitleCoords\",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new k(t.dCtx.ctx),r=\"rotate(\".concat(e.title.rotate,\" 0 0)\"),o=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})})),i}},{key:\"getTotalYAxisWidth\",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new M(this.dCtx.ctx),o=function(o,n){var l=t.config.yaxis[n].floating,h=0;o.width>0&&!l?(h=o.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(n)&&(h=h-o.width-s)):h=l||r.isYAxisHidden(n)?0:5,t.config.yaxis[n].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){o(t,e)})),t.globals.yTitleCoords.map((function(t,e){o(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),ht=function(){function t(e){i(this,t),this.w=e.w,this.dCtx=e}return s(t,[{key:\"gridPadForColumnsInNumericAxis\",value:function(t){var e=this.w,i=e.config,a=e.globals;if(a.noData||a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.series.length)return 0;var s=function(t){return[\"bar\",\"rangeBar\",\"candlestick\",\"boxPlot\"].includes(t)},r=i.chart.type,o=0,n=s(r)?i.series.length:1;a.comboBarCount>0&&(n=a.comboBarCount),a.collapsedSeries.forEach((function(t){s(t.type)&&(n-=1)})),i.chart.stacked&&(n=1);var l=s(r)||a.comboBarCount>0,h=Math.abs(a.initialMaxX-a.initialMinX);if(l&&a.isXNumeric&&!a.isBarHorizontal&&n>0&&0!==h){h<=3&&(h=a.dataPoints);var c=h/t,d=a.minXDiff&&a.minXDiff/c>0?a.minXDiff/c:0;d>t/2&&(d/=2),(o=d*parseInt(i.plotOptions.bar.columnWidth,10)/100)<1&&(o=1),a.barPadForNumericAxis=o}return o}},{key:\"gridPadFortitleSubtitle\",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!i.axisCharts?0:10;[\"title\",\"subtitle\"].forEach((function(s){void 0!==e.config[s].text?a+=e.config[s].margin:a+=t.dCtx.isSparkline||!i.axisCharts?0:5})),!e.config.legend.show||\"bottom\"!==e.config.legend.position||e.config.legend.floating||i.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords(\"title\"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords(\"subtitle\");i.gridHeight-=s.height+r.height+a,i.translateY+=s.height+r.height+a}},{key:\"setGridXPosForDualYAxis\",value:function(t,e){var i=this.w,a=new M(this.dCtx.ctx);i.config.yaxis.forEach((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX-=e[r].width+t[r].width+parseInt(s.labels.style.fontSize,10)/1.2+12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),ct=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new ot(this),this.dimYAxis=new lt(this),this.dimXAxis=new nt(this),this.dimGrid=new ht(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return s(t,[{key:\"plotCoords\",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.datalabelsCoords={width:0,height:0};var a=Array.isArray(e.config.stroke.width)?Math.max.apply(Math,p(e.config.stroke.width)):e.config.stroke.width;this.isSparkline&&((e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=f(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),this.gridPad.top=Math.max(a/2,this.gridPad.top),this.gridPad.bottom=Math.max(a/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var s=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*s,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(s>0?s:0),i.translateY=i.translateY+this.gridPad.top}},{key:\"setDimensionsForAxisCharts\",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();i.isSlopeChart&&(this.datalabelsCoords=this.dimHelpers.getDatalabelsRect()),e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n,o),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-n.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;(\"radar\"===e.config.chart.type||this.isSparkline)&&(l=0,h=0),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||\"treemap\"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||\"treemap\"===e.config.chart.type||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l+t.datalabelsCoords.width,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||\"treemap\"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l-2*t.datalabelsCoords.width};switch(\"top\"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case\"bottom\":i.translateY=c,d();break;case\"top\":i.translateY=this.lgRect.height+c,d();break;case\"left\":i.translateY=c,i.translateX=this.lgRect.width+l+this.datalabelsCoords.width,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-2*this.datalabelsCoords.width;break;case\"right\":i.translateY=c,i.translateX=l+this.datalabelsCoords.width,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-2*this.datalabelsCoords.width-5;break;default:throw new Error(\"Legend position not supported\")}this.dimGrid.setGridXPosForDualYAxis(s,a),new Q(this.ctx).setYAxisXPosition(a,s)}},{key:\"setDimensionsForNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s=\"pie\"===i.chart.type||\"polarArea\"===i.chart.type||\"donut\"===i.chart.type?\"pie\":\"radialBar\",r=i.plotOptions[s].offsetY,o=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating){e.gridHeight=e.svgHeight;var n=e.dom.elWrap.getBoundingClientRect().width;return e.gridWidth=Math.min(n,e.gridHeight),e.translateY=r,void(e.translateX=o+(e.svgWidth-e.gridWidth)/2)}switch(i.legend.position){case\"bottom\":e.gridHeight=e.svgHeight-this.lgRect.height,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case\"top\":e.gridHeight=e.svgHeight-this.lgRect.height,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case\"left\":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight=\"auto\"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+this.lgRect.width+a;break;case\"right\":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight=\"auto\"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+10;break;default:throw new Error(\"Legend position not supported\")}}},{key:\"conditionalChecksForAxisCoords\",value:function(t,e,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+t.height+e.height,o=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,n=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&\"bottom\"===a.config.legend.position?10:0;this.xAxisHeight=r*o+s*n+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeight<a.config.xaxis.labels.minHeight&&(this.xAxisHeight=a.config.xaxis.labels.minHeight),a.config.xaxis.floating&&(this.xAxisHeight=0);var h=0,c=0;a.config.yaxis.forEach((function(t){h+=t.labels.minWidth,c+=t.labels.maxWidth})),this.yAxisWidth<h&&(this.yAxisWidth=h),this.yAxisWidth>c&&(this.yAxisWidth=c)}}]),t}(),dt=function(){function t(e){i(this,t),this.w=e.w,this.lgCtx=e}return s(t,[{key:\"getLegendStyles\",value:function(){var t,e,i,a=document.createElement(\"style\");a.setAttribute(\"type\",\"text/css\");var s=(null===(t=this.lgCtx.ctx)||void 0===t||null===(e=t.opts)||void 0===e||null===(i=e.chart)||void 0===i?void 0:i.nonce)||this.w.config.chart.nonce;s&&a.setAttribute(\"nonce\",s);var r=document.createTextNode(\"\\n      .apexcharts-flip-y {\\n        transform: scaleY(-1) translateY(-100%);\\n        transform-origin: top;\\n        transform-box: fill-box;\\n      }\\n      .apexcharts-flip-x {\\n        transform: scaleX(-1);\\n        transform-origin: center;\\n        transform-box: fill-box;\\n      }\\n      .apexcharts-legend {\\n        display: flex;\\n        overflow: auto;\\n        padding: 0 10px;\\n      }\\n      .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\\n        flex-wrap: wrap\\n      }\\n      .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\\n        flex-direction: column;\\n        bottom: 0;\\n      }\\n      .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\\n        justify-content: flex-start;\\n      }\\n      .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\\n        justify-content: center;\\n      }\\n      .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\\n        justify-content: flex-end;\\n      }\\n      .apexcharts-legend-series {\\n        cursor: pointer;\\n        line-height: normal;\\n        display: flex;\\n        align-items: center;\\n      }\\n      .apexcharts-legend-text {\\n        position: relative;\\n        font-size: 14px;\\n      }\\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\\n        pointer-events: none;\\n      }\\n      .apexcharts-legend-marker {\\n        position: relative;\\n        display: flex;\\n        align-items: center;\\n        justify-content: center;\\n        cursor: pointer;\\n        margin-right: 1px;\\n      }\\n\\n      .apexcharts-legend-series.apexcharts-no-click {\\n        cursor: auto;\\n      }\\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\\n        display: none !important;\\n      }\\n      .apexcharts-inactive-legend {\\n        opacity: 0.45;\\n      }\");return a.appendChild(r),a}},{key:\"getLegendDimensions\",value:function(){var t=this.w.globals.dom.baseEl.querySelector(\".apexcharts-legend\").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:\"appendToForeignObject\",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:\"toggleDataSeries\",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||\"radialBar\"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\")),r=parseInt(s.getAttribute(\"data:realIndex\"),10)):(s=a.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(t+1,\"']\")),r=parseInt(s.getAttribute(\"rel\"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var o=a.globals.dom.Paper.select(\" .apexcharts-series[rel='\".concat(t+1,\"'] path\")),n=a.config.chart.type;if(\"pie\"===n||\"polarArea\"===n||\"donut\"===n){var l=a.config.plotOptions.pie.donut.labels;new k(this.lgCtx.ctx).pathMouseDown(o.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(o.members[0].node,l)}o.fire(\"click\")}}},{key:\"getSeriesAfterCollapsing\",value:function(t){var e=t.realIndex,i=this.w,a=i.globals,s=m.clone(i.config.series);if(a.axisCharts){var r=i.config.yaxis[a.seriesYAxisReverseMap[e]],o={index:e,data:s[e].data.slice(),type:s[e].type||i.config.chart.type};if(r&&r.show&&r.showAlways)a.ancillaryCollapsedSeriesIndices.indexOf(e)<0&&(a.ancillaryCollapsedSeries.push(o),a.ancillaryCollapsedSeriesIndices.push(e));else if(a.collapsedSeriesIndices.indexOf(e)<0){a.collapsedSeries.push(o),a.collapsedSeriesIndices.push(e);var n=a.risingSeries.indexOf(e);a.risingSeries.splice(n,1)}}else a.collapsedSeries.push({index:e,data:s[e]}),a.collapsedSeriesIndices.push(e);return a.allSeriesCollapsed=a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.config.series.length,this._getSeriesBasedOnCollapsedState(s)}},{key:\"hideSeries\",value:function(t){for(var e=t.seriesEl,i=t.realIndex,a=this.w,s=this.getSeriesAfterCollapsing({realIndex:i}),r=e.childNodes,o=0;o<r.length;o++)r[o].classList.contains(\"apexcharts-series-markers-wrap\")&&(r[o].classList.contains(\"apexcharts-hide\")?r[o].classList.remove(\"apexcharts-hide\"):r[o].classList.add(\"apexcharts-hide\"));this.lgCtx.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled)}},{key:\"riseCollapsedSeries\",value:function(t,e,i){var a=this.w,s=m.clone(a.config.series);if(t.length>0){for(var r=0;r<t.length;r++)t[r].index===i&&(a.globals.axisCharts?s[i].data=t[r].data.slice():s[i]=t[r].data,s[i].hidden=!1,t.splice(r,1),e.splice(r,1),a.globals.risingSeries.push(i));s=this._getSeriesBasedOnCollapsedState(s),this.lgCtx.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled)}}},{key:\"_getSeriesBasedOnCollapsedState\",value:function(t){var e=this.w,i=0;return e.globals.axisCharts?t.forEach((function(a,s){e.globals.collapsedSeriesIndices.indexOf(s)<0&&e.globals.ancillaryCollapsedSeriesIndices.indexOf(s)<0||(t[s].data=[],i++)})):t.forEach((function(a,s){!e.globals.collapsedSeriesIndices.indexOf(s)<0&&(t[s]=0,i++)})),e.globals.allSeriesCollapsed=i===t.length,t}}]),t}(),gt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed=\"bar\"===this.w.config.chart.type&&this.w.config.plotOptions.bar.distributed&&1===this.w.config.series.length,this.legendHelpers=new dt(this)}return s(t,[{key:\"init\",value:function(){var t=this.w,e=t.globals,i=t.config,a=i.legend.showForSingleSeries&&1===e.series.length||this.isBarsDistributed||e.series.length>1;if(this.legendHelpers.appendToForeignObject(),(a||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),\"bottom\"===i.legend.position||\"top\"===i.legend.position?this.legendAlignHorizontal():\"right\"!==i.legend.position&&\"left\"!==i.legend.position||this.legendAlignVertical()}}},{key:\"createLegendMarker\",value:function(t){var e=t.i,i=t.fillcolor,a=this.w,s=document.createElement(\"span\");s.classList.add(\"apexcharts-legend-marker\");var r=a.config.legend.markers.shape||a.config.markers.shape,o=r;Array.isArray(r)&&(o=r[e]);var n=Array.isArray(a.config.legend.markers.size)?parseFloat(a.config.legend.markers.size[e]):parseFloat(a.config.legend.markers.size),l=Array.isArray(a.config.legend.markers.offsetX)?parseFloat(a.config.legend.markers.offsetX[e]):parseFloat(a.config.legend.markers.offsetX),h=Array.isArray(a.config.legend.markers.offsetY)?parseFloat(a.config.legend.markers.offsetY[e]):parseFloat(a.config.legend.markers.offsetY),c=Array.isArray(a.config.legend.markers.strokeWidth)?parseFloat(a.config.legend.markers.strokeWidth[e]):parseFloat(a.config.legend.markers.strokeWidth),d=s.style;if(d.height=2*(n+c)+\"px\",d.width=2*(n+c)+\"px\",d.left=l+\"px\",d.top=h+\"px\",a.config.legend.markers.customHTML)d.background=\"transparent\",d.color=i[e],Array.isArray(a.config.legend.markers.customHTML)?a.config.legend.markers.customHTML[e]&&(s.innerHTML=a.config.legend.markers.customHTML[e]()):s.innerHTML=a.config.legend.markers.customHTML();else{var u=new W(this.ctx).getMarkerConfig({cssClass:\"apexcharts-legend-marker apexcharts-marker apexcharts-marker-\".concat(o),seriesIndex:e,strokeWidth:c,size:n}),f=SVG(s).size(\"100%\",\"100%\"),p=new k(this.ctx).drawMarker(0,0,g(g({},u),{},{pointFillColor:Array.isArray(i)?i[e]:u.pointFillColor,shape:o}));SVG.select(\".apexcharts-legend-marker.apexcharts-marker\").members.forEach((function(t){t.node.classList.contains(\"apexcharts-marker-triangle\")?t.node.style.transform=\"translate(50%, 45%)\":t.node.style.transform=\"translate(50%, 50%)\"})),f.add(p)}return s}},{key:\"drawLegends\",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.config.legend.markers.fillColors?e.config.legend.markers.fillColors.slice():e.globals.colors.slice();if(\"heatmap\"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+\" - \"+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,n=e.config.legend.inverseOrder,l=n?a.length-1:0;n?l>=0:l<=a.length-1;n?l--:l++){var h,c=o(a[l],{seriesIndex:l,w:e}),d=!1,g=!1;if(e.globals.collapsedSeries.length>0)for(var u=0;u<e.globals.collapsedSeries.length;u++)e.globals.collapsedSeries[u].index===l&&(d=!0);if(e.globals.ancillaryCollapsedSeriesIndices.length>0)for(var f=0;f<e.globals.ancillaryCollapsedSeriesIndices.length;f++)e.globals.ancillaryCollapsedSeriesIndices[f]===l&&(g=!0);var p=this.createLegendMarker({i:l,fillcolor:s});k.setAttrs(p,{rel:l+1,\"data:collapsed\":d||g}),(d||g)&&p.classList.add(\"apexcharts-inactive-legend\");var x=document.createElement(\"div\"),b=document.createElement(\"span\");b.classList.add(\"apexcharts-legend-text\"),b.innerHTML=Array.isArray(c)?c.join(\" \"):c;var v=e.config.legend.labels.useSeriesColors?e.globals.colors[l]:Array.isArray(e.config.legend.labels.colors)?null===(h=e.config.legend.labels.colors)||void 0===h?void 0:h[l]:e.config.legend.labels.colors;v||(v=e.config.chart.foreColor),b.style.color=v,b.style.fontSize=parseFloat(e.config.legend.fontSize)+\"px\",b.style.fontWeight=e.config.legend.fontWeight,b.style.fontFamily=i||e.config.chart.fontFamily,k.setAttrs(b,{rel:l+1,i:l,\"data:default-text\":encodeURIComponent(c),\"data:collapsed\":d||g}),x.appendChild(p),x.appendChild(b);var y=new A(this.ctx);if(!e.config.legend.showForZeroSeries)0===y.getSeriesTotalByIndex(l)&&y.seriesHaveSameValues(l)&&!y.isSeriesNull(l)&&-1===e.globals.collapsedSeriesIndices.indexOf(l)&&-1===e.globals.ancillaryCollapsedSeriesIndices.indexOf(l)&&x.classList.add(\"apexcharts-hidden-zero-series\");e.config.legend.showForNullSeries||y.isSeriesNull(l)&&-1===e.globals.collapsedSeriesIndices.indexOf(l)&&-1===e.globals.ancillaryCollapsedSeriesIndices.indexOf(l)&&x.classList.add(\"apexcharts-hidden-null-series\"),e.globals.dom.elLegendWrap.appendChild(x),e.globals.dom.elLegendWrap.classList.add(\"apexcharts-align-\".concat(e.config.legend.horizontalAlign)),e.globals.dom.elLegendWrap.classList.add(\"apx-legend-position-\"+e.config.legend.position),x.classList.add(\"apexcharts-legend-series\"),x.style.margin=\"\".concat(e.config.legend.itemMargin.vertical,\"px \").concat(e.config.legend.itemMargin.horizontal,\"px\"),e.globals.dom.elLegendWrap.style.width=e.config.legend.width?e.config.legend.width+\"px\":\"\",e.globals.dom.elLegendWrap.style.height=e.config.legend.height?e.config.legend.height+\"px\":\"\",k.setAttrs(x,{rel:l+1,seriesName:m.escapeString(a[l]),\"data:collapsed\":d||g}),(d||g)&&x.classList.add(\"apexcharts-inactive-legend\"),e.config.legend.onItemClick.toggleDataSeries||x.classList.add(\"apexcharts-no-click\")}e.globals.dom.elWrap.addEventListener(\"click\",t.onLegendClick,!0),e.config.legend.onItemHover.highlightDataSeries&&0===e.config.legend.customLegendItems.length&&(e.globals.dom.elWrap.addEventListener(\"mousemove\",t.onLegendHovered,!0),e.globals.dom.elWrap.addEventListener(\"mouseout\",t.onLegendHovered,!0))}},{key:\"setLegendWrapXY\",value:function(t,e){var i=this.w,a=i.globals.dom.elLegendWrap,s=a.clientHeight,r=0,o=0;if(\"bottom\"===i.config.legend.position)o=i.globals.svgHeight-Math.min(s,i.globals.svgHeight/2)-5;else if(\"top\"===i.config.legend.position){var n=new ct(this.ctx),l=n.dimHelpers.getTitleSubtitleCoords(\"title\").height,h=n.dimHelpers.getTitleSubtitleCoords(\"subtitle\").height;o=(l>0?l-10:0)+(h>0?h-10:0)}a.style.position=\"absolute\",r=r+t+i.config.legend.offsetX,o=o+e+i.config.legend.offsetY,a.style.left=r+\"px\",a.style.top=o+\"px\",\"right\"===i.config.legend.position&&(a.style.left=\"auto\",a.style.right=25+i.config.legend.offsetX+\"px\");[\"width\",\"height\"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+\"px\")}))}},{key:\"legendAlignHorizontal\",value:function(){var t=this.w;t.globals.dom.elLegendWrap.style.right=0;var e=new ct(this.ctx),i=e.dimHelpers.getTitleSubtitleCoords(\"title\"),a=e.dimHelpers.getTitleSubtitleCoords(\"subtitle\"),s=0;\"top\"===t.config.legend.position&&(s=i.height+a.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,s)}},{key:\"legendAlignVertical\",value:function(){var t=this.w,e=this.legendHelpers.getLegendDimensions(),i=0;\"left\"===t.config.legend.position&&(i=20),\"right\"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:\"onLegendHovered\",value:function(t){var e=this.w,i=t.target.classList.contains(\"apexcharts-legend-series\")||t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\");if(\"heatmap\"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute(\"rel\"),10)-1;this.ctx.events.fireEvent(\"legendHover\",[this.ctx,a,this.w]),new V(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains(\"apexcharts-inactive-legend\")&&i&&new V(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:\"onLegendClick\",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains(\"apexcharts-legend-series\")||t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\"))){var i=parseInt(t.target.getAttribute(\"rel\"),10)-1,a=\"true\"===t.target.getAttribute(\"data:collapsed\"),s=this.w.config.chart.events.legendClick;\"function\"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent(\"legendClick\",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;\"function\"==typeof r&&t.target.classList.contains(\"apexcharts-legend-marker\")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent(\"legendMarkerClick\",[this.ctx,i,this.w])),\"treemap\"!==e.config.chart.type&&\"heatmap\"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ut=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.ev=this.w.config.chart.events,this.selectedClass=\"apexcharts-selected\",this.localeValues=this.w.globals.locale.toolbar,this.minX=a.globals.minX,this.maxX=a.globals.maxX}return s(t,[{key:\"createToolbar\",value:function(){var t=this,e=this.w,i=function(){return document.createElement(\"div\")},a=i();if(a.setAttribute(\"class\",\"apexcharts-toolbar\"),a.style.top=e.config.chart.toolbar.offsetY+\"px\",a.style.right=3-e.config.chart.toolbar.offsetX+\"px\",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s<this.t.customIcons.length;s++)this.elCustomIcons.push(i());var r=[],o=function(i,a,s){var o=i.toLowerCase();t.t[o]&&e.config.chart.zoom.enabled&&r.push({el:a,icon:\"string\"==typeof t.t[o]?t.t[o]:s,title:t.localeValues[i],class:\"apexcharts-\".concat(o,\"-icon\")})};o(\"zoomIn\",this.elZoomIn,'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\\n</svg>\\n'),o(\"zoomOut\",this.elZoomOut,'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\\n</svg>\\n');var n=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:\"zoom\"===i?t.elZoom:t.elSelection,icon:\"string\"==typeof t.t[i]?t.t[i]:\"zoom\"===i?'<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\\n    <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/>\\n    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\\n    <path d=\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"/>\\n</svg>':'<svg fill=\"#6E8192\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n    <path d=\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z\"/>\\n</svg>',title:t.localeValues[\"zoom\"===i?\"selectionZoom\":\"selection\"],class:e.globals.isTouchDevice?\"apexcharts-element-hidden\":\"apexcharts-\".concat(i,\"-icon\")})};n(\"zoom\"),n(\"selection\"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:\"string\"==typeof this.t.pan?this.t.pan:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\\n    <defs>\\n        <path d=\"M0 0h24v24H0z\" id=\"a\"/>\\n    </defs>\\n    <clipPath id=\"b\">\\n        <use overflow=\"visible\" xlink:href=\"#a\"/>\\n    </clipPath>\\n    <path clip-path=\"url(#b)\" d=\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\"/>\\n</svg>',title:this.localeValues.pan,class:e.globals.isTouchDevice?\"apexcharts-element-hidden\":\"apexcharts-pan-icon\"}),o(\"reset\",this.elZoomReset,'<svg fill=\"#000000\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\\n    <path d=\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"/>\\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\\n</svg>'),this.t.download&&r.push({el:this.elMenuIcon,icon:\"string\"==typeof this.t.download?this.t.download:'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>',title:this.localeValues.menu,class:\"apexcharts-menu-icon\"});for(var l=0;l<this.elCustomIcons.length;l++)r.push({el:this.elCustomIcons[l],icon:this.t.customIcons[l].icon,title:this.t.customIcons[l].title,index:this.t.customIcons[l].index,class:\"apexcharts-toolbar-custom-icon \"+this.t.customIcons[l].class});r.forEach((function(t,e){t.index&&m.moveIndexInArray(r,e,t.index)}));for(var h=0;h<r.length;h++)k.setAttrs(r[h].el,{class:r[h].class,title:r[h].title}),r[h].el.innerHTML=r[h].icon,a.appendChild(r[h].el);this._createHamburgerMenu(a),e.globals.zoomEnabled?this.elZoom.classList.add(this.selectedClass):e.globals.panEnabled?this.elPan.classList.add(this.selectedClass):e.globals.selectionEnabled&&this.elSelection.classList.add(this.selectedClass),this.addToolbarEventListeners()}},{key:\"_createHamburgerMenu\",value:function(t){this.elMenuItems=[],t.appendChild(this.elMenu),k.setAttrs(this.elMenu,{class:\"apexcharts-menu\"});for(var e=[{name:\"exportSVG\",title:this.localeValues.exportToSVG},{name:\"exportPNG\",title:this.localeValues.exportToPNG},{name:\"exportCSV\",title:this.localeValues.exportToCSV}],i=0;i<e.length;i++)this.elMenuItems.push(document.createElement(\"div\")),this.elMenuItems[i].innerHTML=e[i].title,k.setAttrs(this.elMenuItems[i],{class:\"apexcharts-menu-item \".concat(e[i].name),title:e[i].title}),this.elMenu.appendChild(this.elMenuItems[i])}},{key:\"addToolbarEventListeners\",value:function(){var t=this;this.elZoomReset.addEventListener(\"click\",this.handleZoomReset.bind(this)),this.elSelection.addEventListener(\"click\",this.toggleZoomSelection.bind(this,\"selection\")),this.elZoom.addEventListener(\"click\",this.toggleZoomSelection.bind(this,\"zoom\")),this.elZoomIn.addEventListener(\"click\",this.handleZoomIn.bind(this)),this.elZoomOut.addEventListener(\"click\",this.handleZoomOut.bind(this)),this.elPan.addEventListener(\"click\",this.togglePanning.bind(this)),this.elMenuIcon.addEventListener(\"click\",this.toggleMenu.bind(this)),this.elMenuItems.forEach((function(e){e.classList.contains(\"exportSVG\")?e.addEventListener(\"click\",t.handleDownload.bind(t,\"svg\")):e.classList.contains(\"exportPNG\")?e.addEventListener(\"click\",t.handleDownload.bind(t,\"png\")):e.classList.contains(\"exportCSV\")&&e.addEventListener(\"click\",t.handleDownload.bind(t,\"csv\"))}));for(var e=0;e<this.t.customIcons.length;e++)this.elCustomIcons[e].addEventListener(\"click\",this.t.customIcons[e].click.bind(this,this.ctx,this.ctx.w))}},{key:\"toggleZoomSelection\",value:function(t){this.ctx.getSyncedCharts().forEach((function(e){e.ctx.toolbar.toggleOtherControls();var i=\"selection\"===t?e.ctx.toolbar.elSelection:e.ctx.toolbar.elZoom,a=\"selection\"===t?\"selectionEnabled\":\"zoomEnabled\";e.w.globals[a]=!e.w.globals[a],i.classList.contains(e.ctx.toolbar.selectedClass)?i.classList.remove(e.ctx.toolbar.selectedClass):i.classList.add(e.ctx.toolbar.selectedClass)}))}},{key:\"getToolbarIconsReference\",value:function(){var t=this.w;this.elZoom||(this.elZoom=t.globals.dom.baseEl.querySelector(\".apexcharts-zoom-icon\")),this.elPan||(this.elPan=t.globals.dom.baseEl.querySelector(\".apexcharts-pan-icon\")),this.elSelection||(this.elSelection=t.globals.dom.baseEl.querySelector(\".apexcharts-selection-icon\"))}},{key:\"enableZoomPanFromToolbar\",value:function(t){this.toggleOtherControls(),\"pan\"===t?this.w.globals.panEnabled=!0:this.w.globals.zoomEnabled=!0;var e=\"pan\"===t?this.elPan:this.elZoom,i=\"pan\"===t?this.elZoom:this.elPan;e&&e.classList.add(this.selectedClass),i&&i.classList.remove(this.selectedClass)}},{key:\"togglePanning\",value:function(){this.ctx.getSyncedCharts().forEach((function(t){t.ctx.toolbar.toggleOtherControls(),t.w.globals.panEnabled=!t.w.globals.panEnabled,t.ctx.toolbar.elPan.classList.contains(t.ctx.toolbar.selectedClass)?t.ctx.toolbar.elPan.classList.remove(t.ctx.toolbar.selectedClass):t.ctx.toolbar.elPan.classList.add(t.ctx.toolbar.selectedClass)}))}},{key:\"toggleOtherControls\",value:function(){var t=this,e=this.w;e.globals.panEnabled=!1,e.globals.zoomEnabled=!1,e.globals.selectionEnabled=!1,this.getToolbarIconsReference(),[this.elPan,this.elSelection,this.elZoom].forEach((function(e){e&&e.classList.remove(t.selectedClass)}))}},{key:\"handleZoomIn\",value:function(){var t=this.w;t.globals.isRangeBar&&(this.minX=t.globals.minY,this.maxX=t.globals.maxY);var e=(this.minX+this.maxX)/2,i=(this.minX+e)/2,a=(this.maxX+e)/2,s=this._getNewMinXMaxX(i,a);t.globals.disableZoomIn||this.zoomUpdateOptions(s.minX,s.maxX)}},{key:\"handleZoomOut\",value:function(){var t=this.w;if(t.globals.isRangeBar&&(this.minX=t.globals.minY,this.maxX=t.globals.maxY),!(\"datetime\"===t.config.xaxis.type&&new Date(this.minX).getUTCFullYear()<1e3)){var e=(this.minX+this.maxX)/2,i=this.minX-(e-this.minX),a=this.maxX-(e-this.maxX),s=this._getNewMinXMaxX(i,a);t.globals.disableZoomOut||this.zoomUpdateOptions(s.minX,s.maxX)}}},{key:\"_getNewMinXMaxX\",value:function(t,e){var i=this.w.config.xaxis.convertedCatToNumeric;return{minX:i?Math.floor(t):t,maxX:i?Math.floor(e):e}}},{key:\"zoomUpdateOptions\",value:function(t,e){var i=this.w;if(void 0!==t||void 0!==e){if(!(i.config.xaxis.convertedCatToNumeric&&(t<1&&(t=1,e=i.globals.dataPoints),e-t<2))){var a={min:t,max:e},s=this.getBeforeZoomRange(a);s&&(a=s.xaxis);var r={xaxis:a},o=m.clone(i.globals.initialConfig.yaxis);i.config.chart.group||(r.yaxis=o),this.w.globals.zoomed=!0,this.ctx.updateHelpers._updateOptions(r,!1,this.w.config.chart.animations.dynamicAnimation.enabled),this.zoomCallback(a,o)}}else this.handleZoomReset()}},{key:\"zoomCallback\",value:function(t,e){\"function\"==typeof this.ev.zoomed&&this.ev.zoomed(this.ctx,{xaxis:t,yaxis:e})}},{key:\"getBeforeZoomRange\",value:function(t,e){var i=null;return\"function\"==typeof this.ev.beforeZoom&&(i=this.ev.beforeZoom(this,{xaxis:t,yaxis:e})),i}},{key:\"toggleMenu\",value:function(){var t=this;window.setTimeout((function(){t.elMenu.classList.contains(\"apexcharts-menu-open\")?t.elMenu.classList.remove(\"apexcharts-menu-open\"):t.elMenu.classList.add(\"apexcharts-menu-open\")}),0)}},{key:\"handleDownload\",value:function(t){var e=this.w,i=new U(this.ctx);switch(t){case\"svg\":i.exportToSVG(this.ctx);break;case\"png\":i.exportToPng(this.ctx);break;case\"csv\":i.exportToCSV({series:e.config.series,columnDelimiter:e.config.chart.toolbar.export.csv.columnDelimiter})}}},{key:\"handleZoomReset\",value:function(t){this.ctx.getSyncedCharts().forEach((function(t){var e=t.w;if(e.globals.lastXAxis.min=e.globals.initialConfig.xaxis.min,e.globals.lastXAxis.max=e.globals.initialConfig.xaxis.max,t.updateHelpers.revertDefaultAxisMinMax(),\"function\"==typeof e.config.chart.events.beforeResetZoom){var i=e.config.chart.events.beforeResetZoom(t,e);i&&t.updateHelpers.revertDefaultAxisMinMax(i)}\"function\"==typeof e.config.chart.events.zoomed&&t.ctx.toolbar.zoomCallback({min:e.config.xaxis.min,max:e.config.xaxis.max}),e.globals.zoomed=!1;var a=t.ctx.series.emptyCollapsedSeries(m.clone(e.globals.initialSeries));t.updateHelpers._updateSeries(a,e.config.chart.animations.dynamicAnimation.enabled)}))}},{key:\"destroy\",value:function(){this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elZoomReset=null,this.elMenuIcon=null}}]),t}(),ft=function(t){h(a,ut);var e=o(a);function a(t){var s;return i(this,a),(s=e.call(this,t)).ctx=t,s.w=t.w,s.dragged=!1,s.graphics=new k(s.ctx),s.eventList=[\"mousedown\",\"mouseleave\",\"mousemove\",\"touchstart\",\"touchmove\",\"mouseup\",\"touchend\",\"wheel\"],s.clientX=0,s.clientY=0,s.startX=0,s.endX=0,s.dragX=0,s.startY=0,s.endY=0,s.dragY=0,s.moveDirection=\"none\",s.debounceTimer=null,s.debounceDelay=100,s.wheelDelay=400,s}return s(a,[{key:\"init\",value:function(t){var e=this,i=t.xyRatios,a=this.w,s=this;this.xyRatios=i,this.zoomRect=this.graphics.drawRect(0,0,0,0),this.selectionRect=this.graphics.drawRect(0,0,0,0),this.gridRect=a.globals.dom.baseEl.querySelector(\".apexcharts-grid\"),this.zoomRect.node.classList.add(\"apexcharts-zoom-rect\"),this.selectionRect.node.classList.add(\"apexcharts-selection-rect\"),a.globals.dom.elGraphical.add(this.zoomRect),a.globals.dom.elGraphical.add(this.selectionRect),\"x\"===a.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,minY:0,maxX:a.globals.gridWidth,maxY:a.globals.gridHeight}).on(\"dragmove\",this.selectionDragging.bind(this,\"dragging\")):\"y\"===a.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,maxX:a.globals.gridWidth}).on(\"dragmove\",this.selectionDragging.bind(this,\"dragging\")):this.slDraggableRect=this.selectionRect.draggable().on(\"dragmove\",this.selectionDragging.bind(this,\"dragging\")),this.preselectedSelection(),this.hoverArea=a.globals.dom.baseEl.querySelector(\"\".concat(a.globals.chartClass,\" .apexcharts-svg\")),this.hoverArea.classList.add(\"apexcharts-zoomable\"),this.eventList.forEach((function(t){e.hoverArea.addEventListener(t,s.svgMouseEvents.bind(s,i),{capture:!1,passive:!0})})),a.config.chart.zoom.allowMouseWheelZoom&&this.hoverArea.addEventListener(\"wheel\",s.mouseWheelEvent.bind(s),{capture:!1,passive:!1})}},{key:\"destroy\",value:function(){this.slDraggableRect&&(this.slDraggableRect.draggable(!1),this.slDraggableRect.off(),this.selectionRect.off()),this.selectionRect=null,this.zoomRect=null,this.gridRect=null}},{key:\"svgMouseEvents\",value:function(t,e){var i=this.w,a=this,s=this.ctx.toolbar,r=i.globals.zoomEnabled?i.config.chart.zoom.type:i.config.chart.selection.type,o=i.config.chart.toolbar.autoSelected;if(e.shiftKey?(this.shiftWasPressed=!0,s.enableZoomPanFromToolbar(\"pan\"===o?\"zoom\":\"pan\")):this.shiftWasPressed&&(s.enableZoomPanFromToolbar(o),this.shiftWasPressed=!1),e.target){var n,l=e.target.classList;if(e.target.parentNode&&null!==e.target.parentNode&&(n=e.target.parentNode.classList),!(l.contains(\"apexcharts-selection-rect\")||l.contains(\"apexcharts-legend-marker\")||l.contains(\"apexcharts-legend-text\")||n&&n.contains(\"apexcharts-toolbar\"))){if(a.clientX=\"touchmove\"===e.type||\"touchstart\"===e.type?e.touches[0].clientX:\"touchend\"===e.type?e.changedTouches[0].clientX:e.clientX,a.clientY=\"touchmove\"===e.type||\"touchstart\"===e.type?e.touches[0].clientY:\"touchend\"===e.type?e.changedTouches[0].clientY:e.clientY,\"mousedown\"===e.type&&1===e.which){var h=a.gridRect.getBoundingClientRect();a.startX=a.clientX-h.left,a.startY=a.clientY-h.top,a.dragged=!1,a.w.globals.mousedown=!0}if((\"mousemove\"===e.type&&1===e.which||\"touchmove\"===e.type)&&(a.dragged=!0,i.globals.panEnabled?(i.globals.selection=null,a.w.globals.mousedown&&a.panDragging({context:a,zoomtype:r,xyRatios:t})):(a.w.globals.mousedown&&i.globals.zoomEnabled||a.w.globals.mousedown&&i.globals.selectionEnabled)&&(a.selection=a.selectionDrawing({context:a,zoomtype:r}))),\"mouseup\"===e.type||\"touchend\"===e.type||\"mouseleave\"===e.type){var c,d=null===(c=a.gridRect)||void 0===c?void 0:c.getBoundingClientRect();d&&a.w.globals.mousedown&&(a.endX=a.clientX-d.left,a.endY=a.clientY-d.top,a.dragX=Math.abs(a.endX-a.startX),a.dragY=Math.abs(a.endY-a.startY),(i.globals.zoomEnabled||i.globals.selectionEnabled)&&a.selectionDrawn({context:a,zoomtype:r}),i.globals.panEnabled&&i.config.xaxis.convertedCatToNumeric&&a.delayedPanScrolled()),i.globals.zoomEnabled&&a.hideSelectionRect(this.selectionRect),a.dragged=!1,a.w.globals.mousedown=!1}this.makeSelectionRectDraggable()}}}},{key:\"mouseWheelEvent\",value:function(t){var e=this,i=this.w;t.preventDefault();var a=Date.now();a-i.globals.lastWheelExecution>this.wheelDelay&&(this.executeMouseWheelZoom(t),i.globals.lastWheelExecution=a),this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout((function(){a-i.globals.lastWheelExecution>e.wheelDelay&&(e.executeMouseWheelZoom(t),i.globals.lastWheelExecution=a)}),this.debounceDelay)}},{key:\"executeMouseWheelZoom\",value:function(t){var e,i=this.w;this.minX=i.globals.isRangeBar?i.globals.minY:i.globals.minX,this.maxX=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;var a=null===(e=this.gridRect)||void 0===e?void 0:e.getBoundingClientRect();if(a){var s,r,o,n=(t.clientX-a.left)/a.width,l=this.minX,h=this.maxX,c=h-l;if(t.deltaY<0){var d=l+n*c;r=d-(s=.5*c)/2,o=d+s/2}else r=l-(s=1.5*c)/2,o=h+s/2;if(!i.globals.isRangeBar){r=Math.max(r,i.globals.initialMinX),o=Math.min(o,i.globals.initialMaxX);var g=.01*(i.globals.initialMaxX-i.globals.initialMinX);if(o-r<g){var u=(r+o)/2;r=u-g/2,o=u+g/2}}var f=this._getNewMinXMaxX(r,o);isNaN(f.minX)||isNaN(f.maxX)||this.zoomUpdateOptions(f.minX,f.maxX)}}},{key:\"makeSelectionRectDraggable\",value:function(){var t=this.w;if(this.selectionRect){var e=this.selectionRect.node.getBoundingClientRect();e.width>0&&e.height>0&&this.slDraggableRect.selectize({points:\"l, r\",pointSize:8,pointType:\"rect\"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on(\"resizing\",this.selectionDragging.bind(this,\"resizing\"))}}},{key:\"preselectedSelection\",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a=t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i;t.globals.isRangeBar&&(i=(t.config.chart.selection.xaxis.min-t.globals.yAxisScale[0].niceMin)/e.invertedYRatio,a=(t.config.chart.selection.xaxis.max-t.config.chart.selection.xaxis.min)/e.invertedYRatio);var s={x:i,y:0,width:a,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),\"function\"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:\"drawSelectionRect\",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,o=void 0===r?0:r,n=t.translateY,l=void 0===n?0:n,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:\"translate(\"+o+\", \"+l+\")\"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,\"fill-opacity\":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,\"stroke-width\":h.config.chart.zoom.zoomedArea.stroke.width,\"stroke-opacity\":h.config.chart.zoom.zoomedArea.stroke.opacity}),k.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,\"fill-opacity\":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,\"stroke-width\":h.config.chart.selection.stroke.width,\"stroke-dasharray\":h.config.chart.selection.stroke.dashArray,\"stroke-opacity\":h.config.chart.selection.stroke.opacity}),k.setAttrs(d.node,g))}}},{key:\"hideSelectionRect\",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:\"selectionDrawing\",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),o=s.startX-1,n=s.startY,l=!1,h=!1,c=s.clientX-r.left-o,d=s.clientY-r.top-n,g={};return Math.abs(c+o)>a.globals.gridWidth?c=a.globals.gridWidth-o:s.clientX-r.left<0&&(c=o),o>s.clientX-r.left&&(l=!0,c=Math.abs(c)),n>s.clientY-r.top&&(h=!0,d=Math.abs(d)),g=\"x\"===i?{x:l?o-c:o,y:0,width:c,height:a.globals.gridHeight}:\"y\"===i?{x:0,y:h?n-d:n,width:a.globals.gridWidth,height:d}:{x:l?o-c:o,y:h?n-d:n,width:c,height:d},s.drawSelectionRect(g),s.selectionDragging(\"resizing\"),g}},{key:\"selectionDragging\",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,o=0;\"resizing\"===t&&(o=30);var n=function(t){return parseFloat(r.node.getAttribute(t))},l={x:n(\"x\"),y:n(\"y\"),width:n(\"width\"),height:n(\"height\")};a.globals.selection=l,\"function\"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t,e,o,n,l=i.gridRect.getBoundingClientRect(),h=r.node.getBoundingClientRect();a.globals.isRangeBar?(t=a.globals.yAxisScale[0].niceMin+(h.left-l.left)*s.invertedYRatio,e=a.globals.yAxisScale[0].niceMin+(h.right-l.left)*s.invertedYRatio,o=0,n=1):(t=a.globals.xAxisScale.niceMin+(h.left-l.left)*s.xRatio,e=a.globals.xAxisScale.niceMin+(h.right-l.left)*s.xRatio,o=a.globals.yAxisScale[0].niceMin+(l.bottom-h.bottom)*s.yRatio[0],n=a.globals.yAxisScale[0].niceMax-(h.top-l.top)*s.yRatio[0]);var c={xaxis:{min:t,max:e},yaxis:{min:o,max:n}};a.config.chart.events.selection(i.ctx,c),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,c)}),o))}},{key:\"selectionDrawn\",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var n=s.startX;s.startX=s.endX,s.endX=n}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=void 0,c=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,c=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var d=[],g=[];if(a.config.yaxis.forEach((function(t,e){var i=a.globals.seriesYAxisMap[e][0];d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[i]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[i]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var u=m.clone(a.globals.initialConfig.yaxis),f=m.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),\"xy\"!==i&&\"x\"!==i||(f={min:h,max:c}),\"xy\"!==i&&\"y\"!==i||u.forEach((function(t,e){u[e].min=g[e],u[e].max=d[e]})),o){var p=o.getBeforeZoomRange(f,u);p&&(f=p.xaxis?p.xaxis:f,u=p.yaxis?p.yaxis:u)}var x={xaxis:f};a.config.chart.group||(x.yaxis=u),s.ctx.updateHelpers._updateOptions(x,!1,s.w.config.chart.animations.dynamicAnimation.enabled),\"function\"==typeof a.config.chart.events.zoomed&&o.zoomCallback(f,u)}else if(a.globals.selectionEnabled){var b,v=null;b={min:h,max:c},\"xy\"!==i&&\"y\"!==i||(v=m.clone(a.config.yaxis)).forEach((function(t,e){v[e].min=g[e],v[e].max=d[e]})),a.globals.selection=s.selection,\"function\"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:b,yaxis:v})}}},{key:\"panDragging\",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection=\"left\":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection=\"right\":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection=\"up\":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection=\"down\")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=i.globals.isRangeBar?i.globals.minY:i.globals.minX,n=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(o,n)}},{key:\"delayedPanScrolled\",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;\"left\"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):\"right\"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:\"panScrolled\",value:function(t,e){var i=this.w,a=this.xyRatios,s=m.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,n=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,n=i.globals.maxY),\"left\"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=n+i.globals.gridWidth/15*r):\"right\"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=n-i.globals.gridWidth/15*r),i.globals.isRangeBar||(t<i.globals.initialMinX||e>i.globals.initialMaxX)&&(t=o,e=n);var l={xaxis:{min:t,max:e}};i.config.chart.group||(l.yaxis=s),this.updateScrolledChart(l,t,e)}},{key:\"updateScrolledChart\",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),\"function\"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),a}(),pt=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return s(t,[{key:\"getNearestValues\",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,o=i.getBoundingClientRect(),n=o.width,l=o.height,h=n/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=n/r.globals.dataPoints);var g=a-o.left-r.globals.barPadForNumericAxis,u=s-o.top;g<0||u<0||g>n||u>l?(e.classList.remove(\"hovering-zoom\"),e.classList.remove(\"hovering-pan\")):r.globals.zoomEnabled?(e.classList.remove(\"hovering-pan\"),e.classList.add(\"hovering-zoom\")):r.globals.panEnabled&&(e.classList.remove(\"hovering-zoom\"),e.classList.add(\"hovering-pan\"));var f=Math.round(g/h),p=Math.floor(u/c);d&&!r.config.xaxis.convertedCatToNumeric&&(f=Math.ceil(g/h),f-=1);var x=null,b=null,v=r.globals.seriesXvalues.map((function(t){return t.filter((function(t){return m.isNumber(t)}))})),y=r.globals.seriesYvalues.map((function(t){return t.filter((function(t){return m.isNumber(t)}))}));if(r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/n),A=u*(w.height/l);x=(b=this.closestInMultiArray(k,A,v,y)).index,f=b.j,null!==x&&(v=r.globals.seriesXvalues[x],f=(b=this.closestInArray(k,v)).index)}return r.globals.capturedSeriesIndex=null===x?-1:x,(!f||f<1)&&(f=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=p:r.globals.capturedDataPointIndex=f,{capturedSeries:x,j:r.globals.isBarHorizontal?p:f,hoverX:g,hoverY:u}}},{key:\"closestInMultiArray\",value:function(t,e,i,a){var s=this.w,r=0,o=null,n=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):o=0;var l=i[r][0],h=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a<=h&&(h=a,n=i)}))})),-1!==n){var c=a[r][n],d=Math.abs(e-c);o=r,a.forEach((function(t,i){var a=Math.abs(e-t[n]);a<=d&&(d=a,o=i)}))}return{index:o,j:n}}},{key:\"getFirstActiveXArray\",value:function(t){for(var e=this.w,i=0,a=t.map((function(t,e){return t.length>0?e:-1})),s=0;s<a.length;s++)if(-1!==a[s]&&-1===e.globals.collapsedSeriesIndices.indexOf(s)&&-1===e.globals.ancillaryCollapsedSeriesIndices.indexOf(s)){i=a[s];break}return i}},{key:\"closestInArray\",value:function(t,e){for(var i=e[0],a=null,s=Math.abs(t-i),r=0;r<e.length;r++){var o=Math.abs(t-e[r]);o<s&&(s=o,a=r)}return{index:a}}},{key:\"isXoverlap\",value:function(t){var e=[],i=this.w.globals.seriesX.filter((function(t){return void 0!==t[0]}));if(i.length>0)for(var a=0;a<i.length-1;a++)void 0!==i[a][t]&&void 0!==i[a+1][t]&&i[a][t]!==i[a+1][t]&&e.push(\"unEqual\");return 0===e.length}},{key:\"isInitialSeriesSameLen\",value:function(){for(var t=!0,e=this.w.globals.initialSeries,i=0;i<e.length-1;i++)if(e[i].data.length!==e[i+1].data.length){t=!1;break}return t}},{key:\"getBarsHeight\",value:function(t){return p(t).reduce((function(t,e){return t+e.getBBox().height}),0)}},{key:\"getElMarkers\",value:function(t){return\"number\"==typeof t?this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"'] .apexcharts-series-markers-wrap > *\")):this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers-wrap > *\")}},{key:\"getAllMarkers\",value:function(){var t=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers-wrap\");(t=p(t)).sort((function(t,e){var i=Number(t.getAttribute(\"data:realIndex\")),a=Number(e.getAttribute(\"data:realIndex\"));return a<i?1:a>i?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(\".apexcharts-marker\"))})),e}},{key:\"hasMarkers\",value:function(t){return this.getElMarkers(t).length>0}},{key:\"getPathFromPoint\",value:function(t,e){var i=Number(t.getAttribute(\"cx\")),a=Number(t.getAttribute(\"cy\")),s=t.getAttribute(\"shape\");return new k(this.ctx).getMarkerPath(i,a,s,e)}},{key:\"getElBars\",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series\")}},{key:\"hasBars\",value:function(){return this.getElBars().length>0}},{key:\"getHoverMarkerSize\",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:\"toggleAllTooltipSeriesGroups\",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-tooltip-series-group\"));for(var a=i.allTooltipSeriesGroups,s=0;s<a.length;s++)\"enable\"===t?(a[s].classList.add(\"apexcharts-active\"),a[s].style.display=e.config.tooltip.items.display):(a[s].classList.remove(\"apexcharts-active\"),a[s].style.display=\"none\")}}]),t}(),xt=function(){function t(e){i(this,t),this.w=e.w,this.ctx=e.ctx,this.ttCtx=e,this.tooltipUtil=new pt(e)}return s(t,[{key:\"drawSeriesTexts\",value:function(t){var e=t.shared,i=void 0===e||e,a=t.ttItems,s=t.i,r=void 0===s?0:s,o=t.j,n=void 0===o?null:o,l=t.y1,h=t.y2,c=t.e,d=this.w;void 0!==d.config.tooltip.custom?this.handleCustomTooltip({i:r,j:n,y1:l,y2:h,w:d}):this.toggleActiveInactiveSeries(i,r);var g=this.getValuesToPrint({i:r,j:n});this.printLabels({i:r,j:n,values:g,ttItems:a,shared:i,e:c});var u=this.ttCtx.getElTooltip();this.ttCtx.tooltipRect.ttWidth=u.getBoundingClientRect().width,this.ttCtx.tooltipRect.ttHeight=u.getBoundingClientRect().height}},{key:\"printLabels\",value:function(t){var e,i=this,a=t.i,s=t.j,r=t.values,o=t.ttItems,n=t.shared,l=t.e,h=this.w,c=[],d=function(t){return h.globals.seriesGoals[t]&&h.globals.seriesGoals[t][s]&&Array.isArray(h.globals.seriesGoals[t][s])},u=r.xVal,f=r.zVal,p=r.xAxisTTVal,x=\"\",b=h.globals.colors[a];null!==s&&h.config.plotOptions.bar.distributed&&(b=h.globals.colors[s]);for(var v=function(t,r){var v=i.getFormatters(a);x=i.getSeriesName({fn:v.yLbTitleFormatter,index:a,seriesIndex:a,j:s}),\"treemap\"===h.config.chart.type&&(x=v.yLbTitleFormatter(String(h.config.series[a].data[s].x),{series:h.globals.series,seriesIndex:a,dataPointIndex:s,w:h}));var m=h.config.tooltip.inverseOrder?r:t;if(h.globals.axisCharts){var y=function(t){var e,i,a,r;return h.globals.isRangeData?v.yLbFormatter(null===(e=h.globals.seriesRangeStart)||void 0===e||null===(i=e[t])||void 0===i?void 0:i[s],{series:h.globals.seriesRangeStart,seriesIndex:t,dataPointIndex:s,w:h})+\" - \"+v.yLbFormatter(null===(a=h.globals.seriesRangeEnd)||void 0===a||null===(r=a[t])||void 0===r?void 0:r[s],{series:h.globals.seriesRangeEnd,seriesIndex:t,dataPointIndex:s,w:h}):v.yLbFormatter(h.globals.series[t][s],{series:h.globals.series,seriesIndex:t,dataPointIndex:s,w:h})};if(n)v=i.getFormatters(m),x=i.getSeriesName({fn:v.yLbTitleFormatter,index:m,seriesIndex:a,j:s}),b=h.globals.colors[m],e=y(m),d(m)&&(c=h.globals.seriesGoals[m][s].map((function(t){return{attrs:t,val:v.yLbFormatter(t.value,{seriesIndex:m,dataPointIndex:s,w:h})}})));else{var w,k=null==l||null===(w=l.target)||void 0===w?void 0:w.getAttribute(\"fill\");k&&(-1!==k.indexOf(\"url\")?-1!==k.indexOf(\"Pattern\")&&(b=h.globals.dom.baseEl.querySelector(k.substr(4).slice(0,-1)).childNodes[0].getAttribute(\"stroke\")):b=k),e=y(a),d(a)&&Array.isArray(h.globals.seriesGoals[a][s])&&(c=h.globals.seriesGoals[a][s].map((function(t){return{attrs:t,val:v.yLbFormatter(t.value,{seriesIndex:a,dataPointIndex:s,w:h})}})))}}null===s&&(e=v.yLbFormatter(h.globals.series[a],g(g({},h),{},{seriesIndex:a,dataPointIndex:a}))),i.DOMHandling({i:a,t:m,j:s,ttItems:o,values:{val:e,goalVals:c,xVal:u,xAxisTTVal:p,zVal:f},seriesName:x,shared:n,pColor:b})},m=0,y=h.globals.series.length-1;m<h.globals.series.length;m++,y--)v(m,y)}},{key:\"getFormatters\",value:function(t){var e,i=this.w,a=i.globals.yLabelFormatters[t];return void 0!==i.globals.ttVal?Array.isArray(i.globals.ttVal)?(a=i.globals.ttVal[t]&&i.globals.ttVal[t].formatter,e=i.globals.ttVal[t]&&i.globals.ttVal[t].title&&i.globals.ttVal[t].title.formatter):(a=i.globals.ttVal.formatter,\"function\"==typeof i.globals.ttVal.title.formatter&&(e=i.globals.ttVal.title.formatter)):e=i.config.tooltip.y.title.formatter,\"function\"!=typeof a&&(a=i.globals.yLabelFormatters[0]?i.globals.yLabelFormatters[0]:function(t){return t}),\"function\"!=typeof e&&(e=function(t){return t}),{yLbFormatter:a,yLbTitleFormatter:e}}},{key:\"getSeriesName\",value:function(t){var e=t.fn,i=t.index,a=t.seriesIndex,s=t.j,r=this.w;return e(String(r.globals.seriesNames[i]),{series:r.globals.series,seriesIndex:a,dataPointIndex:s,w:r})}},{key:\"DOMHandling\",value:function(t){t.i;var e=t.t,i=t.j,a=t.ttItems,s=t.values,r=t.seriesName,o=t.shared,n=t.pColor,l=this.w,h=this.ttCtx,c=s.val,d=s.goalVals,g=s.xVal,u=s.xAxisTTVal,f=s.zVal,p=null;p=a[e].children,l.config.tooltip.fillSeriesColor&&(a[e].style.backgroundColor=n,p[0].style.display=\"none\"),h.showTooltipTitle&&(null===h.tooltipTitle&&(h.tooltipTitle=l.globals.dom.baseEl.querySelector(\".apexcharts-tooltip-title\")),h.tooltipTitle.innerHTML=g),h.isXAxisTooltipEnabled&&(h.xaxisTooltipText.innerHTML=\"\"!==u?u:g);var x=a[e].querySelector(\".apexcharts-tooltip-text-y-label\");x&&(x.innerHTML=r||\"\");var b=a[e].querySelector(\".apexcharts-tooltip-text-y-value\");b&&(b.innerHTML=void 0!==c?c:\"\"),p[0]&&p[0].classList.contains(\"apexcharts-tooltip-marker\")&&(l.config.tooltip.marker.fillColors&&Array.isArray(l.config.tooltip.marker.fillColors)&&(n=l.config.tooltip.marker.fillColors[e]),p[0].style.backgroundColor=n),l.config.tooltip.marker.show||(p[0].style.display=\"none\");var v=a[e].querySelector(\".apexcharts-tooltip-text-goals-label\"),m=a[e].querySelector(\".apexcharts-tooltip-text-goals-value\");if(d.length&&l.globals.seriesGoals[e]){var y=function(){var t=\"<div >\",e=\"<div>\";d.forEach((function(i,a){t+=' <div style=\"display: flex\"><span class=\"apexcharts-tooltip-marker\" style=\"background-color: '.concat(i.attrs.strokeColor,'; height: 3px; border-radius: 0; top: 5px;\"></span> ').concat(i.attrs.name,\"</div>\"),e+=\"<div>\".concat(i.val,\"</div>\")})),v.innerHTML=t+\"</div>\",m.innerHTML=e+\"</div>\"};o?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML=\"\",m.innerHTML=\"\"):y()}else v.innerHTML=\"\",m.innerHTML=\"\";null!==f&&(a[e].querySelector(\".apexcharts-tooltip-text-z-label\").innerHTML=l.config.tooltip.z.title,a[e].querySelector(\".apexcharts-tooltip-text-z-value\").innerHTML=void 0!==f?f:\"\");if(o&&p[0]){if(l.config.tooltip.hideEmptySeries){var w=a[e].querySelector(\".apexcharts-tooltip-marker\"),k=a[e].querySelector(\".apexcharts-tooltip-text\");0==parseFloat(c)?(w.style.display=\"none\",k.style.display=\"none\"):(w.style.display=\"block\",k.style.display=\"block\")}null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1||Array.isArray(h.tConfig.enabledOnSeries)&&-1===h.tConfig.enabledOnSeries.indexOf(e)?p[0].parentNode.style.display=\"none\":p[0].parentNode.style.display=l.config.tooltip.items.display}else Array.isArray(h.tConfig.enabledOnSeries)&&-1===h.tConfig.enabledOnSeries.indexOf(e)&&(p[0].parentNode.style.display=\"none\")}},{key:\"toggleActiveInactiveSeries\",value:function(t,e){var i=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups(\"enable\");else{this.tooltipUtil.toggleAllTooltipSeriesGroups(\"disable\");var a=i.globals.dom.baseEl.querySelector(\".apexcharts-tooltip-series-group-\".concat(e));a&&(a.classList.add(\"apexcharts-active\"),a.style.display=i.config.tooltip.items.display)}}},{key:\"getValuesToPrint\",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r=\"\",o=\"\",n=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&\"treemap\"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=new _(this.ctx).isFormatXY()?void 0!==a.config.series[e].data[i]?a.config.series[e].data[i].x:\"\":void 0!==a.globals.labels[i]?a.globals.labels[i]:\"\";var d=r;a.globals.isXNumeric&&\"datetime\"===a.config.xaxis.type?r=new P(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new L(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(n=c(a.globals.seriesZ[e][i],a)),o=\"function\"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(\" \"):l,xVal:Array.isArray(r)?r.join(\" \"):r,xAxisTTVal:Array.isArray(o)?o.join(\" \"):o,zVal:n}}},{key:\"handleCustomTooltip\",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,o=this.ttCtx.getElTooltip(),n=r.config.tooltip.custom;Array.isArray(n)&&n[e]&&(n=n[e]),o.innerHTML=n({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),bt=function(){function t(e){i(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return s(t,[{key:\"moveXCrosshairs\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,o=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/o*e),null===s||a.globals.isBarHorizontal||(s.setAttribute(\"x\",r),s.setAttribute(\"x1\",r),s.setAttribute(\"x2\",r),s.setAttribute(\"y2\",a.globals.gridHeight),s.classList.add(\"apexcharts-active\")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var n=r;\"tickWidth\"!==a.config.xaxis.crosshairs.width&&\"barWidth\"!==a.config.xaxis.crosshairs.width||(n=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(n)}}},{key:\"moveYCrosshairs\",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&k.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&k.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:\"moveXAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add(\"apexcharts-active\");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new k(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+\"px\",i.xaxisTooltip.style.left=t+\"px\",i.xaxisTooltip.style.top=a+\"px\"}}}},{key:\"moveYAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxistooltip\"));var a=parseInt(i.ycrosshairsHidden.getAttribute(\"y1\"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add(\"apexcharts-active\"),i.yaxisTTEls[t].style.top=s+\"px\",i.yaxisTTEls[t].style.left=o+e.config.yaxis[t].tooltip.offsetX+\"px\"):i.yaxisTTEls[t].classList.remove(\"apexcharts-active\")}},{key:\"moveTooltip\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),o=s.tooltipRect,n=null!==i?parseFloat(i):1,l=parseFloat(t)+n+5,h=parseFloat(e)+n/2;if(l>a.globals.gridWidth/2&&(l=l-o.ttWidth-n-10),l>a.globals.gridWidth-o.ttWidth-10&&(l=a.globals.gridWidth-o.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid().getBoundingClientRect();(l=s.e.clientX-c.left)>a.globals.gridWidth/2&&(l-=s.tooltipRect.ttWidth),(h=s.e.clientY+a.globals.translateY-c.top)>a.globals.gridHeight/2&&(h-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||o.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-o.ttHeight+a.globals.translateY);isNaN(l)||(l+=a.globals.translateX,r.style.left=l+\"px\",r.style.top=h+\"px\")}},{key:\"moveMarkers\",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(\" .apexcharts-series[data\\\\:realIndex='\".concat(t,\"'] .apexcharts-marker\")),r=0;r<s.length;r++)parseInt(s[r].getAttribute(\"rel\"),10)===e&&(a.marker.resetPointsSize(),a.marker.enlargeCurrentPoint(e,s[r]));else a.marker.resetPointsSize(),this.moveDynamicPointOnHover(e,t)}},{key:\"moveDynamicPointOnHover\",value:function(t,e){var i,a,s,r,o=this.w,n=this.ttCtx,l=new k(this.ctx),h=o.globals.pointsArray,c=n.tooltipUtil.getHoverMarkerSize(e),d=o.config.series[e].type;if(!d||\"column\"!==d&&\"candlestick\"!==d&&\"boxPlot\"!==d){s=null===(i=h[e][t])||void 0===i?void 0:i[0],r=(null===(a=h[e][t])||void 0===a?void 0:a[1])||0;var g=o.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(e,\"'] .apexcharts-series-markers path\"));if(g&&r<o.globals.gridHeight&&r>0){var u=g.getAttribute(\"shape\"),f=l.getMarkerPath(s,r,u,1.5*c);g.setAttribute(\"d\",f)}this.moveXCrosshairs(s),n.fixedTooltip||this.moveTooltip(s,r,c)}}},{key:\"moveDynamicPointsOnHover\",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,o=a.globals.pointsArray,n=new V(this.ctx),l=new k(this.ctx);e=n.getActiveConfigSeriesIndex(\"asc\",[\"line\",\"area\",\"scatter\",\"bubble\"]);var h=i.tooltipUtil.getHoverMarkerSize(e);o[e]&&(s=o[e][t][0],r=o[e][t][1]);var c=i.tooltipUtil.getAllMarkers();if(null!==c)for(var d=0;d<a.globals.series.length;d++){var g=o[d];if(a.globals.comboCharts&&void 0===g&&c.splice(d,0,null),g&&g.length){var u=o[d][t][1],f=void 0;c[d].setAttribute(\"cx\",s);var p=c[d].getAttribute(\"shape\");if(\"rangeArea\"===a.config.chart.type&&!a.globals.comboCharts){var x=t+a.globals.series[d].length;f=o[d][x][1],u-=Math.abs(u-f)/2}if(null!==u&&!isNaN(u)&&u<a.globals.gridHeight+h&&u+h>0){var b=l.getMarkerPath(s,u,p,h);c[d].setAttribute(\"d\",b)}else c[d].setAttribute(\"d\",\"\")}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,h)}},{key:\"moveStickyTooltipOverBars\",value:function(t,e){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length,r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new V(this.ctx).getActiveConfigSeriesIndex(\"desc\")+1);var o=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[rel='\".concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-candlestick-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-boxPlot-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-rangebar-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"']\"));o||\"number\"!=typeof e||(o=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[data\\\\:realIndex='\".concat(e,\"'] path[j='\").concat(t,\"'],\\n        .apexcharts-candlestick-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"'],\\n        .apexcharts-boxPlot-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"'],\\n        .apexcharts-rangebar-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"']\")));var n=o?parseFloat(o.getAttribute(\"cx\")):0,l=o?parseFloat(o.getAttribute(\"cy\")):0,h=o?parseFloat(o.getAttribute(\"barWidth\")):0,c=a.getElGrid().getBoundingClientRect(),d=o&&(o.classList.contains(\"apexcharts-candlestick-area\")||o.classList.contains(\"apexcharts-boxPlot-area\"));i.globals.isXNumeric?(o&&!d&&(n-=s%2!=0?h/2:0),o&&d&&i.globals.comboCharts&&(n-=h/2)):i.globals.isBarHorizontal||(n=a.xAxisTicksPositions[t-1]+a.dataPointsDividedWidth/2,isNaN(n)&&(n=a.xAxisTicksPositions[t]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?l-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?l=a.e.clientY-c.top-a.tooltipRect.ttHeight/2:l+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(l=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(n),a.fixedTooltip||this.moveTooltip(n,l||i.globals.gridHeight)}}]),t}(),vt=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new bt(e)}return s(t,[{key:\"drawDynamicPoints\",value:function(){var t=this.w,e=new k(this.ctx),i=new W(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\");a=p(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute(\"data:realIndex\"))-parseFloat(e.getAttribute(\"data:realIndex\"))}));for(var s=0;s<a.length;s++){var r=a[s].querySelector(\".apexcharts-series-markers-wrap\");if(null!==r){var o=void 0,n=\"apexcharts-marker w\".concat((Math.random()+1).toString(36).substring(4));\"line\"!==t.config.chart.type&&\"area\"!==t.config.chart.type||t.globals.comboCharts||t.config.tooltip.intersect||(n+=\" no-pointer-events\");var l=i.getMarkerConfig({cssClass:n,seriesIndex:Number(r.getAttribute(\"data:realIndex\"))});(o=e.drawMarker(0,0,l)).node.setAttribute(\"default-marker-size\",0);var h=document.createElementNS(t.globals.SVGNS,\"g\");h.classList.add(\"apexcharts-series-markers\"),h.appendChild(o.node),r.appendChild(h)}}}},{key:\"enlargeCurrentPoint\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;\"bubble\"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute(\"cx\"),o=e.getAttribute(\"cy\");if(null!==i&&null!==a&&(r=i,o=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if(\"radar\"===s.config.chart.type){var n=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-n.left}this.tooltipPosition.moveTooltip(r,o,s.config.markers.hover.size)}}},{key:\"enlargePoints\",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker\"),o=e.config.markers.hover.size,n=0;n<r.length;n++){var l=r[n].getAttribute(\"rel\"),h=r[n].getAttribute(\"index\");if(void 0===o&&(o=e.globals.markers.size[h]+e.config.markers.hover.sizeOffset),s===parseInt(l,10)){i.newPointSize(s,r[n]);var c=r[n].getAttribute(\"cx\"),d=r[n].getAttribute(\"cy\");i.tooltipPosition.moveXCrosshairs(c),a.fixedTooltip||i.tooltipPosition.moveTooltip(c,d,o)}else i.oldPointSize(r[n])}}},{key:\"newPointSize\",value:function(t,e){var i=this.w,a=i.config.markers.hover.size,s=0===t?e.parentNode.firstChild:e.parentNode.lastChild;if(\"0\"!==s.getAttribute(\"default-marker-size\")){var r=parseInt(s.getAttribute(\"index\"),10);void 0===a&&(a=i.globals.markers.size[r]+i.config.markers.hover.sizeOffset),a<0&&(a=0);var o=this.ttCtx.tooltipUtil.getPathFromPoint(e,a);e.setAttribute(\"d\",o)}}},{key:\"oldPointSize\",value:function(t){var e=parseFloat(t.getAttribute(\"default-marker-size\")),i=this.ttCtx.tooltipUtil.getPathFromPoint(t,e);t.setAttribute(\"d\",i)}},{key:\"resetPointsSize\",value:function(){for(var t=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker\"),e=0;e<t.length;e++){var i=parseFloat(t[e].getAttribute(\"default-marker-size\"));if(m.isNumber(i)&&i>=0){var a=this.ttCtx.tooltipUtil.getPathFromPoint(t[e],i);t[e].setAttribute(\"d\",a)}else t[e].setAttribute(\"d\",\"M0,0\")}}}]),t}(),mt=function(){function t(e){i(this,t),this.w=e.w;var a=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!a.globals.isBarHorizontal&&\"rangeBar\"===a.config.chart.type&&a.config.plotOptions.bar.rangeBarGroupRows}return s(t,[{key:\"getAttr\",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:\"handleHeatTreeTooltip\",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,o=this.ttCtx,n=this.w;if(e.target.classList.contains(\"apexcharts-\".concat(r,\"-rect\"))){var l=this.getAttr(e,\"i\"),h=this.getAttr(e,\"j\"),c=this.getAttr(e,\"cx\"),d=this.getAttr(e,\"cy\"),g=this.getAttr(e,\"width\"),u=this.getAttr(e,\"height\");if(o.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),n.globals.capturedSeriesIndex=l,n.globals.capturedDataPointIndex=h,a=c+o.tooltipRect.ttWidth/2+g,s=d+o.tooltipRect.ttHeight/2-u/2,o.tooltipPosition.moveXCrosshairs(c+g/2),a>n.globals.gridWidth/2&&(a=c-o.tooltipRect.ttWidth/2+g),o.w.config.tooltip.followCursor){var f=n.globals.dom.elWrap.getBoundingClientRect();a=n.globals.clientX-f.left-(a>n.globals.gridWidth/2?o.tooltipRect.ttWidth:0),s=n.globals.clientY-f.top-(s>n.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:\"handleMarkerTooltip\",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,n=this.w,l=this.ttCtx;if(a.target.classList.contains(\"apexcharts-marker\")){var h=parseInt(s.paths.getAttribute(\"cx\"),10),c=parseInt(s.paths.getAttribute(\"cy\"),10),d=parseFloat(s.paths.getAttribute(\"val\"));if(i=parseInt(s.paths.getAttribute(\"rel\"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute(\"rel\"),10)-1,l.intersect){var g=m.findAncestor(s.paths,\"apexcharts-series\");g&&(e=parseInt(g.getAttribute(\"data:realIndex\"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&n.config.tooltip.shared,e:a}),\"mouseup\"===a.type&&l.markerClick(a,e,i),n.globals.capturedSeriesIndex=e,n.globals.capturedDataPointIndex=i,r=h,o=c+n.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var u=l.getElGrid().getBoundingClientRect();o=l.e.clientY+n.globals.translateY-u.top}d<0&&(o=c),l.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:\"handleBarTooltip\",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=this.ttCtx,n=o.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=g,r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)&&(c=r.globals.svgHeight-o.tooltipRect.ttHeight);var u=parseInt(s.paths.parentNode.getAttribute(\"data:realIndex\"),10);if(r.globals.isMultipleYAxis?r.config.yaxis[u]&&r.config.yaxis[u].reversed:r.config.yaxis[0].reversed,h+o.tooltipRect.ttWidth>r.globals.gridWidth?h-=o.tooltipRect.ttWidth:h<0&&(h=0),o.w.config.tooltip.followCursor){var f=o.getElGrid().getBoundingClientRect();c=o.e.clientY-f.top}null===o.tooltip&&(o.tooltip=r.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\")),r.config.tooltip.shared||(r.globals.comboBarCount>0?o.tooltipPosition.moveXCrosshairs(l+i/2):o.tooltipPosition.moveXCrosshairs(l)),!o.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars())&&(c=c+r.globals.translateY-o.tooltipRect.ttHeight/2,n.style.left=h+r.globals.translateX+\"px\",n.style.top=c+\"px\")}},{key:\"getBarTooltipXY\",value:function(t){var e=this,i=t.e,a=t.opt,s=this.w,r=null,o=this.ttCtx,n=0,l=0,h=0,c=0,d=0,g=i.target.classList;if(g.contains(\"apexcharts-bar-area\")||g.contains(\"apexcharts-candlestick-area\")||g.contains(\"apexcharts-boxPlot-area\")||g.contains(\"apexcharts-rangebar-area\")){var u=i.target,f=u.getBoundingClientRect(),p=a.elGrid.getBoundingClientRect(),x=f.height;d=f.height;var b=f.width,v=parseInt(u.getAttribute(\"cx\"),10),m=parseInt(u.getAttribute(\"cy\"),10);c=parseFloat(u.getAttribute(\"barWidth\"));var y=\"touchmove\"===i.type?i.touches[0].clientX:i.clientX;r=parseInt(u.getAttribute(\"j\"),10),n=parseInt(u.parentNode.getAttribute(\"rel\"),10)-1;var w=u.getAttribute(\"data-range-y1\"),k=u.getAttribute(\"data-range-y2\");s.globals.comboCharts&&(n=parseInt(u.parentNode.getAttribute(\"data:realIndex\"),10));var A=function(t){return s.globals.isXNumeric?v-b/2:e.isVerticalGroupedRangeBar?v+b/2:v-o.dataPointsDividedWidth+b/2},S=function(){return m-o.dataPointsDividedHeight+x/2-o.tooltipRect.ttHeight/2};o.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:n,j:r,y1:w?parseInt(w,10):null,y2:k?parseInt(k,10):null,shared:!o.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(l=y-p.left+15,h=S()):(l=A(),h=i.clientY-p.top-o.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((l=v)<o.xyRatios.baseLineInvertedY&&(l=v-o.tooltipRect.ttWidth),h=S()):(l=A(),h=m)}return{x:l,y:h,barHeight:d,barWidth:c,i:n,j:r}}}]),t}(),yt=function(){function t(e){i(this,t),this.w=e.w,this.ttCtx=e}return s(t,[{key:\"drawXaxisTooltip\",value:function(){var t=this.w,e=this.ttCtx,i=\"bottom\"===t.config.xaxis.position;e.xaxisOffY=i?t.globals.gridHeight+1:-t.globals.xAxisHeight-t.config.xaxis.axisTicks.height+3;var a=i?\"apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom\":\"apexcharts-xaxistooltip apexcharts-xaxistooltip-top\",s=t.globals.dom.elWrap;e.isXAxisTooltipEnabled&&(null===t.globals.dom.baseEl.querySelector(\".apexcharts-xaxistooltip\")&&(e.xaxisTooltip=document.createElement(\"div\"),e.xaxisTooltip.setAttribute(\"class\",a+\" apexcharts-theme-\"+t.config.tooltip.theme),s.appendChild(e.xaxisTooltip),e.xaxisTooltipText=document.createElement(\"div\"),e.xaxisTooltipText.classList.add(\"apexcharts-xaxistooltip-text\"),e.xaxisTooltipText.style.fontFamily=t.config.xaxis.tooltip.style.fontFamily||t.config.chart.fontFamily,e.xaxisTooltipText.style.fontSize=t.config.xaxis.tooltip.style.fontSize,e.xaxisTooltip.appendChild(e.xaxisTooltipText)))}},{key:\"drawYaxisTooltip\",value:function(){for(var t=this.w,e=this.ttCtx,i=0;i<t.config.yaxis.length;i++){var a=t.config.yaxis[i].opposite||t.config.yaxis[i].crosshairs.opposite;e.yaxisOffX=a?t.globals.gridWidth+1:1;var s=\"apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i,a?\" apexcharts-yaxistooltip-right\":\" apexcharts-yaxistooltip-left\"),r=t.globals.dom.elWrap;null===t.globals.dom.baseEl.querySelector(\".apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i))&&(e.yaxisTooltip=document.createElement(\"div\"),e.yaxisTooltip.setAttribute(\"class\",s+\" apexcharts-theme-\"+t.config.tooltip.theme),r.appendChild(e.yaxisTooltip),0===i&&(e.yaxisTooltipText=[]),e.yaxisTooltipText[i]=document.createElement(\"div\"),e.yaxisTooltipText[i].classList.add(\"apexcharts-yaxistooltip-text\"),e.yaxisTooltip.appendChild(e.yaxisTooltipText[i]))}}},{key:\"setXCrosshairWidth\",value:function(){var t=this.w,e=this.ttCtx,i=e.getElXCrosshairs();if(e.xcrosshairsWidth=parseInt(t.config.xaxis.crosshairs.width,10),t.globals.comboCharts){var a=t.globals.dom.baseEl.querySelector(\".apexcharts-bar-area\");if(null!==a&&\"barWidth\"===t.config.xaxis.crosshairs.width){var s=parseFloat(a.getAttribute(\"barWidth\"));e.xcrosshairsWidth=s}else if(\"tickWidth\"===t.config.xaxis.crosshairs.width){var r=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/r}}else if(\"tickWidth\"===t.config.xaxis.crosshairs.width){var o=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/o}else if(\"barWidth\"===t.config.xaxis.crosshairs.width){var n=t.globals.dom.baseEl.querySelector(\".apexcharts-bar-area\");if(null!==n){var l=parseFloat(n.getAttribute(\"barWidth\"));e.xcrosshairsWidth=l}else e.xcrosshairsWidth=1}t.globals.isBarHorizontal&&(e.xcrosshairsWidth=0),null!==i&&e.xcrosshairsWidth>0&&i.setAttribute(\"width\",e.xcrosshairsWidth)}},{key:\"handleYCrosshair\",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs\"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs-hidden\")}},{key:\"drawYaxisTooltipText\",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals,o=r.seriesYAxisMap[t];if(a.yaxisTooltips[t]&&o.length>0){var n=r.yLabelFormatters[t],l=a.getElGrid().getBoundingClientRect(),h=o[0],c=0;i.yRatio.length>1&&(c=h);var d=(e-l.top)*i.yRatio[c],g=r.maxYArr[h]-r.minYArr[h],u=r.minYArr[h]+(g-d);s.config.yaxis[t].reversed&&(u=r.maxYArr[h]-(g-d)),a.tooltipPosition.moveYCrosshairs(e-l.top),a.yaxisTooltipText[t].innerHTML=n(u),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),wt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.tConfig=a.config.tooltip,this.tooltipUtil=new pt(this),this.tooltipLabels=new xt(this),this.tooltipPosition=new bt(this),this.marker=new vt(this),this.intersect=new mt(this),this.axesTooltip=new yt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!a.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return s(t,[{key:\"getElTooltip\",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\"):null}},{key:\"getElXCrosshairs\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-xcrosshairs\")}},{key:\"getElGrid\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-grid\")}},{key:\"drawTooltip\",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement(\"div\");if(i.classList.add(\"apexcharts-tooltip\"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add(\"apexcharts-theme-\".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new q(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&\"rangeBar\"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement(\"div\"),this.tooltipTitle.classList.add(\"apexcharts-tooltip-title\"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-legend-text\"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:\"createTTElements\",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var o=document.createElement(\"div\");o.classList.add(\"apexcharts-tooltip-series-group\",\"apexcharts-tooltip-series-group-\".concat(r)),o.style.order=i.config.tooltip.inverseOrder?t-r:r+1;var n=document.createElement(\"span\");n.classList.add(\"apexcharts-tooltip-marker\"),n.style.backgroundColor=i.globals.colors[r],o.appendChild(n);var l=document.createElement(\"div\");l.classList.add(\"apexcharts-tooltip-text\"),l.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,l.style.fontSize=e.tConfig.style.fontSize,[\"y\",\"goals\",\"z\"].forEach((function(t){var e=document.createElement(\"div\");e.classList.add(\"apexcharts-tooltip-\".concat(t,\"-group\"));var i=document.createElement(\"span\");i.classList.add(\"apexcharts-tooltip-text-\".concat(t,\"-label\")),e.appendChild(i);var a=document.createElement(\"span\");a.classList.add(\"apexcharts-tooltip-text-\".concat(t,\"-value\")),e.appendChild(a),l.appendChild(e)})),o.appendChild(l),s.appendChild(o),a.push(o)},o=0;o<t;o++)r(o);return a}},{key:\"addSVGEvents\",value:function(){var t=this.w,e=t.config.chart.type,i=this.getElTooltip(),a=!(\"bar\"!==e&&\"candlestick\"!==e&&\"boxPlot\"!==e&&\"rangeBar\"!==e),s=\"area\"===e||\"line\"===e||\"scatter\"===e||\"bubble\"===e||\"radar\"===e,r=t.globals.dom.Paper.node,o=this.getElGrid();o&&(this.seriesBound=o.getBoundingClientRect());var n,l=[],h=[],c={hoverArea:r,elGrid:o,tooltipEl:i,tooltipY:l,tooltipX:h,ttItems:this.ttItems};if(t.globals.axisCharts&&(s?n=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series[data\\\\:longestSeries='true'] .apexcharts-marker\"):a?n=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-boxPlot-area, .apexcharts-series .apexcharts-rangebar-area\"):\"heatmap\"!==e&&\"treemap\"!==e||(n=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap\")),n&&n.length))for(var d=0;d<n.length;d++)l.push(n[d].getAttribute(\"cy\")),h.push(n[d].getAttribute(\"cx\"));if(t.globals.xyCharts&&!this.showOnIntersect||t.globals.comboCharts&&!this.showOnIntersect||a&&this.tooltipUtil.hasBars()&&this.tConfig.shared)this.addPathsEventListeners([r],c);else if(a&&!t.globals.comboCharts||s&&this.showOnIntersect)this.addDatapointEventsListeners(c);else if(!t.globals.axisCharts||\"heatmap\"===e||\"treemap\"===e){var g=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\");this.addPathsEventListeners(g,c)}if(this.showOnIntersect){var u=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker\");u.length>0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:\"drawFixedTooltipRect\",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,o=this.tConfig.fixed.offsetY,n=this.tConfig.fixed.position.toLowerCase();return n.indexOf(\"right\")>-1&&(r=r+t.globals.svgWidth-a+10),n.indexOf(\"bottom\")>-1&&(o=o+t.globals.svgHeight-s-10),e.style.left=r+\"px\",e.style.top=o+\"px\",{x:r,y:o,ttWidth:a,ttHeight:s}}},{key:\"addDatapointEventsListeners\",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area\");this.addPathsEventListeners(e,t)}},{key:\"addPathsEventListeners\",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};[\"mousemove\",\"mouseup\",\"touchmove\",\"mouseout\",\"touchend\"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s<t.length;s++)a(s)}},{key:\"onSeriesHover\",value:function(t,e){var i=this,a=Date.now()-this.lastHoverTime;a>=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:\"seriesHover\",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:\"seriesHoverByContext\",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,o=this.getElTooltip(e);if(o){if(i.tooltipRect={x:0,y:0,ttWidth:o.getBoundingClientRect().width,ttHeight:o.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new V(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:\"axisChartsTooltips\",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=s.elGrid.getBoundingClientRect(),n=\"touchmove\"===a.type?a.touches[0].clientX:a.clientX,l=\"touchmove\"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=n,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,l<o.top||l>o.top+o.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute(\"index\"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=[];r.config.chart.group&&(g=this.ctx.getSyncedCharts());var u=r.globals.xyCharts||\"bar\"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(\"mousemove\"===a.type||\"touchmove\"===a.type||\"mouseup\"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add(\"apexcharts-active\");var f=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&f.length&&this.ycrosshairs.classList.add(\"apexcharts-active\"),u&&!this.showOnIntersect||g.length>1)this.handleStickyTooltip(a,n,l,s);else if(\"heatmap\"===r.config.chart.type||\"treemap\"===r.config.chart.type){var p=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=p.x,i=p.y,c.style.left=e+\"px\",c.style.top=i+\"px\"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var x=0;x<r.config.yaxis.length;x++)this.axesTooltip.drawYaxisTooltipText(x,l,this.xyRatios);r.globals.dom.baseEl.classList.add(\"apexcharts-tooltip-active\"),s.tooltipEl.classList.add(\"apexcharts-active\")}else\"mouseout\"!==a.type&&\"touchend\"!==a.type||this.handleMouseOut(s)}}},{key:\"nonAxisChartsTooltips\",value:function(t){var e=t.e,i=t.opt,a=t.tooltipRect,s=this.w,r=i.paths.getAttribute(\"rel\"),o=this.getElTooltip(),n=s.globals.dom.elWrap.getBoundingClientRect();if(\"mousemove\"===e.type||\"touchmove\"===e.type){s.globals.dom.baseEl.classList.add(\"apexcharts-tooltip-active\"),o.classList.add(\"apexcharts-active\"),this.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:parseInt(r,10)-1,shared:!1});var l=s.globals.clientX-n.left-a.ttWidth/2,h=s.globals.clientY-n.top-a.ttHeight-10;if(o.style.left=l+\"px\",o.style.top=h+\"px\",s.config.legend.tooltipHoverFormatter){var c=r-1,d=(0,s.config.legend.tooltipHoverFormatter)(this.legendLabels[c].getAttribute(\"data:default-text\"),{seriesIndex:c,dataPointIndex:c,w:s});this.legendLabels[c].innerHTML=d}}else\"mouseout\"!==e.type&&\"touchend\"!==e.type||(o.classList.remove(\"apexcharts-active\"),s.globals.dom.baseEl.classList.remove(\"apexcharts-tooltip-active\"),s.config.legend.tooltipHoverFormatter&&this.legendLabels.forEach((function(t){var e=t.getAttribute(\"data:default-text\");t.innerHTML=decodeURIComponent(e)})))}},{key:\"handleStickyTooltip\",value:function(t,e,i,a){var s=this.w,r=this.tooltipUtil.getNearestValues({context:this,hoverArea:a.hoverArea,elGrid:a.elGrid,clientX:e,clientY:i}),o=r.j,n=r.capturedSeries;s.globals.collapsedSeriesIndices.includes(n)&&(n=null);var l=a.elGrid.getBoundingClientRect();if(r.hoverX<0||r.hoverX>l.width)this.handleMouseOut(a);else if(null!==n)this.handleStickyCapturedSeries(t,n,a,o);else if(this.tooltipUtil.isXoverlap(o)||s.globals.isBarHorizontal){var h=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,h,o,a.ttItems)}}},{key:\"handleStickyCapturedSeries\",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);if(void 0!==s.globals.series[e][a])this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,r,a,i.ttItems)}}},{key:\"deactivateHoverFilter\",value:function(){for(var t=this.w,e=new k(this.ctx),i=t.globals.dom.Paper.select(\".apexcharts-bar-area\"),a=0;a<i.length;a++)e.pathMouseLeave(i[a])}},{key:\"handleMouseOut\",value:function(t){var e=this.w,i=this.getElXCrosshairs();if(e.globals.dom.baseEl.classList.remove(\"apexcharts-tooltip-active\"),t.tooltipEl.classList.remove(\"apexcharts-active\"),this.deactivateHoverFilter(),\"bubble\"!==e.config.chart.type&&this.marker.resetPointsSize(),null!==i&&i.classList.remove(\"apexcharts-active\"),null!==this.ycrosshairs&&this.ycrosshairs.classList.remove(\"apexcharts-active\"),this.isXAxisTooltipEnabled&&this.xaxisTooltip.classList.remove(\"apexcharts-active\"),this.yaxisTooltips.length){null===this.yaxisTTEls&&(this.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxistooltip\"));for(var a=0;a<this.yaxisTTEls.length;a++)this.yaxisTTEls[a].classList.remove(\"apexcharts-active\")}e.config.legend.tooltipHoverFormatter&&this.legendLabels.forEach((function(t){var e=t.getAttribute(\"data:default-text\");t.innerHTML=decodeURIComponent(e)}))}},{key:\"markerClick\",value:function(t,e,i){var a=this.w;\"function\"==typeof a.config.chart.events.markerClick&&a.config.chart.events.markerClick(t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:a}),this.ctx.events.fireEvent(\"markerClick\",[t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:a}])}},{key:\"create\",value:function(t,e,i,a,s){var r,o,n,l,h,c,d,u,f,p,x,b,v,m,y,w,A=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,S=this.w,C=e;\"mouseup\"===t.type&&this.markerClick(t,i,a),null===A&&(A=this.tConfig.shared);var L=this.tooltipUtil.hasMarkers(i),P=this.tooltipUtil.getElBars();if(S.config.legend.tooltipHoverFormatter){var M=S.config.legend.tooltipHoverFormatter,I=Array.from(this.legendLabels);I.forEach((function(t){var e=t.getAttribute(\"data:default-text\");t.innerHTML=decodeURIComponent(e)}));for(var T=0;T<I.length;T++){var z=I[T],X=parseInt(z.getAttribute(\"i\"),10),E=decodeURIComponent(z.getAttribute(\"data:default-text\")),Y=M(E,{seriesIndex:A?X:i,dataPointIndex:a,w:S});if(A)z.innerHTML=S.globals.collapsedSeriesIndices.indexOf(X)<0?Y:E;else if(z.innerHTML=X===i?Y:E,i===X)break}}var R=g(g({ttItems:s,i:i,j:a},void 0!==(null===(r=S.globals.seriesRange)||void 0===r||null===(o=r[i])||void 0===o||null===(n=o[a])||void 0===n||null===(l=n.y[0])||void 0===l?void 0:l.y1)&&{y1:null===(h=S.globals.seriesRange)||void 0===h||null===(c=h[i])||void 0===c||null===(d=c[a])||void 0===d||null===(u=d.y[0])||void 0===u?void 0:u.y1}),void 0!==(null===(f=S.globals.seriesRange)||void 0===f||null===(p=f[i])||void 0===p||null===(x=p[a])||void 0===x||null===(b=x.y[0])||void 0===b?void 0:b.y2)&&{y2:null===(v=S.globals.seriesRange)||void 0===v||null===(m=v[i])||void 0===m||null===(y=m[a])||void 0===y||null===(w=y.y[0])||void 0===w?void 0:w.y2});if(A){if(C.tooltipLabels.drawSeriesTexts(g(g({},R),{},{shared:!this.showOnIntersect&&this.tConfig.shared})),L)S.globals.markers.largestSize>0?C.marker.enlargePoints(a):C.tooltipPosition.moveDynamicPointsOnHover(a);else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(P),this.barSeriesHeight>0)){var F=new k(this.ctx),D=S.globals.dom.Paper.select(\".apexcharts-bar-area[j='\".concat(a,\"']\"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a,i);for(var H=0;H<D.length;H++)F.pathMouseEnter(D[H])}}else C.tooltipLabels.drawSeriesTexts(g({shared:!1},R)),this.tooltipUtil.hasBars()&&C.tooltipPosition.moveStickyTooltipOverBars(a,i),L&&C.tooltipPosition.moveMarkers(i,a)}}]),t}(),kt=function(){function t(e){i(this,t),this.w=e.w,this.barCtx=e,this.totalFormatter=this.w.config.plotOptions.bar.dataLabels.total.formatter,this.totalFormatter||(this.totalFormatter=this.w.config.dataLabels.formatter)}return s(t,[{key:\"handleBarDataLabels\",value:function(t){var e,i,a=t.x,s=t.y,r=t.y1,o=t.y2,n=t.i,l=t.j,h=t.realIndex,c=t.columnGroupIndex,d=t.series,u=t.barHeight,f=t.barWidth,p=t.barXPosition,x=t.barYPosition,b=t.visibleSeries,v=t.renderedPath,m=this.w,y=new k(this.barCtx.ctx),w=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[h]:this.barCtx.strokeWidth;m.globals.isXNumeric&&!m.globals.isBarHorizontal?(e=a+parseFloat(f*(b+1)),i=s+parseFloat(u*(b+1))-w):(e=a+parseFloat(f*b),i=s+parseFloat(u*b));var A,S=null,C=a,L=s,P={},M=m.config.dataLabels,I=this.barCtx.barOptions.dataLabels,T=this.barCtx.barOptions.dataLabels.total;void 0!==x&&this.barCtx.isRangeBar&&(i=x,L=x),void 0!==p&&this.barCtx.isVerticalGroupedRangeBar&&(e=p,C=p);var z=M.offsetX,X=M.offsetY,E={width:0,height:0};if(m.config.dataLabels.enabled){var Y=m.globals.series[n][l];E=y.getTextRects(m.config.dataLabels.formatter?m.config.dataLabels.formatter(Y,g(g({},m),{},{seriesIndex:n,dataPointIndex:l,w:m})):m.globals.yLabelFormatters[0](Y),parseFloat(M.style.fontSize))}var R={x:a,y:s,i:n,j:l,realIndex:h,columnGroupIndex:c,renderedPath:v,bcx:e,bcy:i,barHeight:u,barWidth:f,textRects:E,strokeWidth:w,dataLabelsX:C,dataLabelsY:L,dataLabelsConfig:M,barDataLabelsConfig:I,barTotalDataLabelsConfig:T,offX:z,offY:X};return P=this.barCtx.isHorizontal?this.calculateBarsDataLabelsPosition(R):this.calculateColumnsDataLabelsPosition(R),v.attr({cy:P.bcy,cx:P.bcx,j:l,val:m.globals.series[n][l],barHeight:u,barWidth:f}),A=this.drawCalculatedDataLabels({x:P.dataLabelsX,y:P.dataLabelsY,val:this.barCtx.isRangeBar?[r,o]:\"100%\"===m.config.chart.stackType?d[h][l]:m.globals.series[h][l],i:h,j:l,barWidth:f,barHeight:u,textRects:E,dataLabelsConfig:M}),m.config.chart.stacked&&T.enabled&&(S=this.drawTotalDataLabels({x:P.totalDataLabelsX,y:P.totalDataLabelsY,barWidth:f,barHeight:u,realIndex:h,textAnchor:P.totalDataLabelsAnchor,val:this.getStackedTotalDataLabel({realIndex:h,j:l}),dataLabelsConfig:M,barTotalDataLabelsConfig:T})),{dataLabels:A,totalDataLabels:S}}},{key:\"getStackedTotalDataLabel\",value:function(t){var e=t.realIndex,i=t.j,a=this.w,s=this.barCtx.stackedSeriesTotals[i];return this.totalFormatter&&(s=this.totalFormatter(s,g(g({},a),{},{seriesIndex:e,dataPointIndex:i,w:a}))),s}},{key:\"calculateColumnsDataLabelsPosition\",value:function(t){var e=this.w,i=t.i,a=t.j,s=t.realIndex;t.columnGroupIndex;var r,o,n=t.y,l=t.bcx,h=t.barWidth,c=t.barHeight,d=t.textRects,g=t.dataLabelsX,u=t.dataLabelsY,f=t.dataLabelsConfig,p=t.barDataLabelsConfig,x=t.barTotalDataLabelsConfig,b=t.strokeWidth,v=t.offX,m=t.offY,y=l;c=Math.abs(c);var w=\"vertical\"===e.config.plotOptions.bar.dataLabels.orientation,A=this.barCtx.barHelpers.getZeroValueEncounters({i:i,j:a}).zeroEncounters;l-=b/2;var S=e.globals.gridWidth/e.globals.dataPoints;if(this.barCtx.isVerticalGroupedRangeBar?g+=h/2:(g=e.globals.isXNumeric?l-h/2+v:l-S+h/2+v,A>0&&e.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(g-=h*A)),w){g=g+d.height/2-b/2-2}var C=e.globals.series[i][a]<0,L=n;switch(this.barCtx.isReversed&&(L=n+(C?c:-c)),p.position){case\"center\":u=w?C?L-c/2+m:L+c/2-m:C?L-c/2+d.height/2+m:L+c/2+d.height/2-m;break;case\"bottom\":u=w?C?L-c+m:L+c-m:C?L-c+d.height+b+m:L+c-d.height/2+b-m;break;case\"top\":u=w?C?L+m:L-m:C?L-d.height/2-m:L+d.height+m}if(this.barCtx.lastActiveBarSerieIndex===s&&x.enabled){var P=new k(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:s,j:a}),f.fontSize);r=C?L-P.height/2-m-x.offsetY+18:L+P.height+m+x.offsetY-18;var M=S;o=y+(e.globals.isXNumeric?-h*e.globals.barGroups.length/2:e.globals.barGroups.length*h/2-(e.globals.barGroups.length-1)*h-M)+x.offsetX}return e.config.chart.stacked||(u<0?u=0+b:u+d.height/3>e.globals.gridHeight&&(u=e.globals.gridHeight-b)),{bcx:l,bcy:n,dataLabelsX:g,dataLabelsY:u,totalDataLabelsX:o,totalDataLabelsY:r,totalDataLabelsAnchor:\"middle\"}}},{key:\"calculateBarsDataLabelsPosition\",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,o=t.bcy,n=t.barHeight,l=t.barWidth,h=t.textRects,c=t.dataLabelsX,d=t.strokeWidth,g=t.dataLabelsConfig,u=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,p=t.offX,x=t.offY,b=e.globals.gridHeight/e.globals.dataPoints;l=Math.abs(l);var v,m,y=o-(this.barCtx.isRangeBar?0:b)+n/2+h.height/2+x-3,w=\"start\",A=e.globals.series[a][s]<0,S=i;switch(this.barCtx.isReversed&&(S=i+(A?-l:l),w=A?\"start\":\"end\"),u.position){case\"center\":c=A?S+l/2-p:Math.max(h.width/2,S-l/2)+p;break;case\"bottom\":c=A?S+l-d-p:S-l+d+p;break;case\"top\":c=A?S-d-p:S-d+p}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var C=new k(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),g.fontSize);A?(v=S-d-p-f.offsetX,w=\"end\"):v=S+p+f.offsetX+(this.barCtx.isReversed?-(l+d):d),m=y-h.height/2+C.height/2+f.offsetY+d}return e.config.chart.stacked||(\"start\"===g.textAnchor?c-h.width<0?c=A?h.width+d:d:c+h.width>e.globals.gridWidth&&(c=A?e.globals.gridWidth-d:e.globals.gridWidth-h.width-d):\"middle\"===g.textAnchor?c-h.width/2<0?c=h.width/2+d:c+h.width/2>e.globals.gridWidth&&(c=e.globals.gridWidth-h.width/2-d):\"end\"===g.textAnchor&&(c<1?c=h.width+d:c+1>e.globals.gridWidth&&(c=e.globals.gridWidth-h.width-d))),{bcx:i,bcy:o,dataLabelsX:c,dataLabelsY:y,totalDataLabelsX:v,totalDataLabelsY:m,totalDataLabelsAnchor:w}}},{key:\"drawCalculatedDataLabels\",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.i,r=t.j,o=t.textRects,n=t.barHeight,l=t.barWidth,h=t.dataLabelsConfig,c=this.w,d=\"rotate(0)\";\"vertical\"===c.config.plotOptions.bar.dataLabels.orientation&&(d=\"rotate(-90, \".concat(e,\", \").concat(i,\")\"));var u=new G(this.barCtx.ctx),f=new k(this.barCtx.ctx),p=h.formatter,x=null,b=c.globals.collapsedSeriesIndices.indexOf(s)>-1;if(h.enabled&&!b){x=f.group({class:\"apexcharts-data-labels\",transform:d});var v=\"\";void 0!==a&&(v=p(a,g(g({},c),{},{seriesIndex:s,dataPointIndex:r,w:c}))),!a&&c.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(v=\"\");var m=c.globals.series[s][r]<0,y=c.config.plotOptions.bar.dataLabels.position;if(\"vertical\"===c.config.plotOptions.bar.dataLabels.orientation&&(\"top\"===y&&(h.textAnchor=m?\"end\":\"start\"),\"center\"===y&&(h.textAnchor=\"middle\"),\"bottom\"===y&&(h.textAnchor=m?\"end\":\"start\")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)l<f.getTextRects(v,parseFloat(h.style.fontSize)).width&&(v=\"\");c.config.chart.stacked&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels&&(this.barCtx.isHorizontal?o.width/1.6>Math.abs(l)&&(v=\"\"):o.height/1.6>Math.abs(n)&&(v=\"\"));var w=g({},h);this.barCtx.isHorizontal&&a<0&&(\"start\"===h.textAnchor?w.textAnchor=\"end\":\"end\"===h.textAnchor&&(w.textAnchor=\"start\")),u.plotDataLabelsText({x:e,y:i,text:v,i:s,j:r,parent:x,dataLabelsConfig:w,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:\"drawTotalDataLabels\",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.realIndex,r=t.textAnchor,o=t.barTotalDataLabelsConfig;this.w;var n,l=new k(this.barCtx.ctx);return o.enabled&&void 0!==e&&void 0!==i&&this.barCtx.lastActiveBarSerieIndex===s&&(n=l.drawText({x:e,y:i,foreColor:o.style.color,text:a,textAnchor:r,fontFamily:o.style.fontFamily,fontSize:o.style.fontSize,fontWeight:o.style.fontWeight})),n}}]),t}(),At=function(){function t(e){i(this,t),this.w=e.w,this.barCtx=e}return s(t,[{key:\"initVariables\",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i<t.length;i++)if(t[i].length>0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;a<t[i].length;a++)e.globals.seriesX[i][a]>e.globals.minX&&e.globals.seriesX[i][a]<e.globals.maxX&&this.barCtx.visibleItems++;else this.barCtx.visibleItems=e.globals.dataPoints;this.arrBorderRadius=this.createBorderRadiusArr(e.globals.series),0===this.barCtx.seriesLen&&(this.barCtx.seriesLen=1),this.barCtx.zeroSerieses=[],e.globals.comboCharts||this.checkZeroSeries({series:t})}},{key:\"initialPositions\",value:function(){var t,e,i,a,s,r,o,n,l=this.w,h=l.globals.dataPoints;this.barCtx.isRangeBar&&(h=l.globals.labels.length);var c=this.barCtx.seriesLen;if(l.config.plotOptions.bar.rangeBarGroupRows&&(c=1),this.barCtx.isHorizontal)s=(i=l.globals.gridHeight/h)/c,l.globals.isXNumeric&&(s=(i=l.globals.gridHeight/this.barCtx.totalItems)/this.barCtx.seriesLen),s=s*parseInt(this.barCtx.barOptions.barHeight,10)/100,-1===String(this.barCtx.barOptions.barHeight).indexOf(\"%\")&&(s=parseInt(this.barCtx.barOptions.barHeight,10)),n=this.barCtx.baseLineInvertedY+l.globals.padHorizontal+(this.barCtx.isReversed?l.globals.gridWidth:0)-(this.barCtx.isReversed?2*this.barCtx.baseLineInvertedY:0),this.barCtx.isFunnel&&(n=l.globals.gridWidth/2),e=(i-s*this.barCtx.seriesLen)/2;else{if(a=l.globals.gridWidth/this.barCtx.visibleItems,l.config.xaxis.convertedCatToNumeric&&(a=l.globals.gridWidth/l.globals.dataPoints),r=a/c*parseInt(this.barCtx.barOptions.columnWidth,10)/100,l.globals.isXNumeric){var d=this.barCtx.xRatio;l.globals.minXDiff&&.5!==l.globals.minXDiff&&l.globals.minXDiff/d>0&&(a=l.globals.minXDiff/d),(r=a/c*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}-1===String(this.barCtx.barOptions.columnWidth).indexOf(\"%\")&&(r=parseInt(this.barCtx.barOptions.columnWidth,10)),o=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.translationsIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return l.globals.barHeight=s,l.globals.barWidth=r,{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:o,zeroW:n}}},{key:\"initializeStackedPrevVars\",value:function(t){t.w.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].prevY=[],t[e].prevX=[],t[e].prevYF=[],t[e].prevXF=[],t[e].prevYVal=[],t[e].prevXVal=[]}))}},{key:\"initializeStackedXYVars\",value:function(t){t.w.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].xArrj=[],t[e].xArrjF=[],t[e].xArrjVal=[],t[e].yArrj=[],t[e].yArrjF=[],t[e].yArrjVal=[]}))}},{key:\"getPathFillColor\",value:function(t,e,i,a){var s,r,o,n,l,h=this.w,c=this.barCtx.ctx.fill,d=null,g=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(d=a.color)}));return null!==(s=h.config.series[e].data[i])&&void 0!==s&&s.fillColor&&(d=h.config.series[e].data[i].fillColor),c.fillPath({seriesNumber:this.barCtx.barOptions.distributed?g:a,dataPointIndex:i,color:d,value:t[e][i],fillConfig:null===(r=h.config.series[e].data[i])||void 0===r?void 0:r.fill,fillType:null!==(o=h.config.series[e].data[i])&&void 0!==o&&null!==(n=o.fill)&&void 0!==n&&n.type?null===(l=h.config.series[e].data[i])||void 0===l?void 0:l.fill.type:Array.isArray(h.config.fill.type)?h.config.fill.type[a]:h.config.fill.type})}},{key:\"getStrokeWidth\",value:function(t,e,i){var a=0,s=this.w;return this.barCtx.series[t][e]?this.barCtx.isNullValue=!1:this.barCtx.isNullValue=!0,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:\"createBorderRadiusArr\",value:function(t){var e=this.w,i=!this.w.config.chart.stacked||\"last\"!==e.config.plotOptions.bar.borderRadiusWhenStacked||e.config.plotOptions.bar.borderRadius<=0,a=t.length,s=t[0].length,o=Array.from({length:a},(function(){return Array(s).fill(i?\"top\":\"none\")}));if(i)return o;for(var n=0;n<s;n++){for(var l=[],h=[],c=0,d=0;d<a;d++){var g=t[d][n];g>0?(l.push(d),c++):g<0&&(h.push(d),c++)}if(l.length>0&&0===h.length)if(1===l.length)o[l[0]][n]=\"both\";else{var u,f=l[0],p=l[l.length-1],x=r(l);try{for(x.s();!(u=x.n()).done;){var b=u.value;o[b][n]=b===f?\"bottom\":b===p?\"top\":\"none\"}}catch(t){x.e(t)}finally{x.f()}}else if(h.length>0&&0===l.length)if(1===h.length)o[h[0]][n]=\"both\";else{var v,m=h[0],y=h[h.length-1],w=r(h);try{for(w.s();!(v=w.n()).done;){var k=v.value;o[k][n]=k===m?\"bottom\":k===y?\"top\":\"none\"}}catch(t){w.e(t)}finally{w.f()}}else if(l.length>0&&h.length>0){var A,S=l[l.length-1],C=r(l);try{for(C.s();!(A=C.n()).done;){var L=A.value;o[L][n]=L===S?\"top\":\"none\"}}catch(t){C.e(t)}finally{C.f()}var P,M=h[h.length-1],I=r(h);try{for(I.s();!(P=I.n()).done;){var T=P.value;o[T][n]=T===M?\"bottom\":\"none\"}}catch(t){I.e(t)}finally{I.f()}}else if(1===c){o[l[0]||h[0]][n]=\"both\"}}return o}},{key:\"barBackground\",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,o=t.y2,n=t.elSeries,l=this.w,h=new k(this.barCtx.ctx),c=new V(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==o?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);n.add(g),g.node.classList.add(\"apexcharts-backgroundBar\")}}},{key:\"getColumnPaths\",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,o=t.strokeWidth,n=t.isReversed,l=t.series,h=t.seriesGroup,c=t.realIndex,d=t.i,g=t.j,u=t.w,f=new k(this.barCtx.ctx);(o=Array.isArray(o)?o[c]:o)||(o=0);var p=i,x=a;null!==(e=u.config.series[c].data[g])&&void 0!==e&&e.columnWidthOffset&&(x=a-u.config.series[c].data[g].columnWidthOffset/2,p=i+u.config.series[c].data[g].columnWidthOffset);var b=o/2,v=x+b,m=x+p-b,y=(l[d][g]>=0?1:-1)*(n?-1:1);s+=.001-b*y,r+=.001+b*y;var w=f.move(v,s),A=f.move(v,s),S=f.line(m,s);if(u.globals.previousPaths.length>0&&(A=this.barCtx.getPreviousPath(c,g,!1)),w=w+f.line(v,r)+f.line(m,r)+S+(\"around\"===u.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][g]?\" Z\":\" z\"),A=A+f.line(v,s)+S+S+S+S+S+f.line(v,s)+(\"around\"===u.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][g]?\" Z\":\" z\"),\"none\"!==this.arrBorderRadius[c][g]&&(w=f.roundPathCorners(w,u.config.plotOptions.bar.borderRadius)),u.config.chart.stacked){var C=this.barCtx;(C=this.barCtx[h]).yArrj.push(r-b*y),C.yArrjF.push(Math.abs(s-r+o*y)),C.yArrjVal.push(this.barCtx.series[d][g])}return{pathTo:w,pathFrom:A}}},{key:\"getBarpaths\",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,o=t.strokeWidth,n=t.isReversed,l=t.series,h=t.seriesGroup,c=t.realIndex,d=t.i,g=t.j,u=t.w,f=new k(this.barCtx.ctx);(o=Array.isArray(o)?o[c]:o)||(o=0);var p=i,x=a;null!==(e=u.config.series[c].data[g])&&void 0!==e&&e.barHeightOffset&&(p=i-u.config.series[c].data[g].barHeightOffset/2,x=a+u.config.series[c].data[g].barHeightOffset);var b=o/2,v=p+b,m=p+x-b,y=(l[d][g]>=0?1:-1)*(n?-1:1);s+=.001+b*y,r+=.001-b*y;var w=f.move(s,v),A=f.move(s,v);u.globals.previousPaths.length>0&&(A=this.barCtx.getPreviousPath(c,g,!1));var S=f.line(s,m);if(w=w+f.line(r,v)+f.line(r,m)+S+(\"around\"===u.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][g]?\" Z\":\" z\"),A=A+f.line(s,v)+S+S+S+S+S+f.line(s,v)+(\"around\"===u.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[c][g]?\" Z\":\" z\"),\"none\"!==this.arrBorderRadius[c][g]&&(w=f.roundPathCorners(w,u.config.plotOptions.bar.borderRadius)),u.config.chart.stacked){var C=this.barCtx;(C=this.barCtx[h]).xArrj.push(r+b*y),C.xArrjF.push(Math.abs(s-r-o*y)),C.xArrjVal.push(this.barCtx.series[d][g])}return{pathTo:w,pathFrom:A}}},{key:\"checkZeroSeries\",value:function(t){for(var e=t.series,i=this.w,a=0;a<e.length;a++){for(var s=0,r=0;r<e[i.globals.maxValsInArrayIndex].length;r++)s+=e[a][r];0===s&&this.barCtx.zeroSerieses.push(a)}}},{key:\"getXForValue\",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),i}},{key:\"getYForValue\",value:function(t,e,i){var a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3]?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[i]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[i]:0)),a}},{key:\"getGoalValues\",value:function(t,e,i,a,s,r){var o=this,l=this.w,h=[],c=function(a,s){var l;h.push((n(l={},t,\"x\"===t?o.getXForValue(a,e,!1):o.getYForValue(a,i,r,!1)),n(l,\"attrs\",s),l))};if(l.globals.seriesGoals[a]&&l.globals.seriesGoals[a][s]&&Array.isArray(l.globals.seriesGoals[a][s])&&l.globals.seriesGoals[a][s].forEach((function(t){c(t.value,t)})),this.barCtx.barOptions.isDumbbell&&l.globals.seriesRange.length){var d=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:l.globals.colors,u={strokeHeight:\"x\"===t?0:l.globals.markers.size[a],strokeWidth:\"x\"===t?l.globals.markers.size[a]:0,strokeDashArray:0,strokeLineCap:\"round\",strokeColor:Array.isArray(d[a])?d[a][0]:d[a]};c(l.globals.seriesRangeStart[a][s],u),c(l.globals.seriesRangeEnd[a][s],g(g({},u),{},{strokeColor:Array.isArray(d[a])?d[a][1]:d[a]}))}return h}},{key:\"drawGoalLine\",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,o=t.barHeight,n=new k(this.barCtx.ctx),l=n.group({className:\"apexcharts-bar-goals-groups\"});l.node.classList.add(\"apexcharts-element-hidden\"),this.barCtx.w.globals.delayedElements.push({el:l.node}),l.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(this.barCtx.w.globals.cuid,\")\"));var h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){if(t.x>=-1&&t.x<=n.w.globals.gridWidth+1){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:o/2,a=i+e+o/2;h=n.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)}})):Array.isArray(s)&&s.forEach((function(t){if(t.y>=-1&&t.y<=n.w.globals.gridHeight+1){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=n.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)}})),l}},{key:\"drawBarShadow\",value:function(t){var e=t.prevPaths,i=t.currPaths,a=t.color,s=this.w,r=e.x,o=e.x1,n=e.barYPosition,l=i.x,h=i.x1,c=i.barYPosition,d=n+i.barHeight,g=new k(this.barCtx.ctx),u=new m,f=g.move(o,d)+g.line(r,d)+g.line(l,c)+g.line(h,c)+g.line(o,d)+(\"around\"===s.config.plotOptions.bar.borderRadiusApplication||\"both\"===this.arrBorderRadius[realIndex][j]?\" Z\":\" z\");return g.drawPath({d:f,fill:u.shadeColor(.5,m.rgb2hex(a)),stroke:\"none\",strokeWidth:0,fillOpacity:1,classes:\"apexcharts-bar-shadows\"})}},{key:\"getZeroValueEncounters\",value:function(t){var e,i=t.i,a=t.j,s=this.w,r=0,o=0;return(s.config.plotOptions.bar.horizontal?s.globals.series.map((function(t,e){return e})):(null===(e=s.globals.columnSeries)||void 0===e?void 0:e.i.map((function(t){return t})))||[]).forEach((function(t){var e=s.globals.seriesPercent[t][a];e&&r++,t<i&&0===e&&o++})),{nonZeroColumns:r,zeroEncounters:o}}},{key:\"getGroupIndex\",value:function(t){var e=this.w,i=e.globals.seriesGroups.findIndex((function(i){return i.indexOf(e.globals.seriesNames[t])>-1})),a=this.barCtx.columnGroupIndices,s=a.indexOf(i);return s<0&&(a.push(i),s=a.length-1),{groupIndex:i,columnGroupIndex:s}}}]),t}(),St=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.isRangeBar=s.globals.seriesRange.length&&this.isHorizontal,this.isVerticalGroupedRangeBar=!s.globals.isBarHorizontal&&s.globals.seriesRange.length&&s.config.plotOptions.bar.rangeBarGroupRows,this.isFunnel=this.barOptions.isFunnel,this.xyRatios=a,null!==this.xyRatios&&(this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.invertedXRatio=a.invertedXRatio,this.invertedYRatio=a.invertedYRatio,this.baseLineY=a.baseLineY,this.baseLineInvertedY=a.baseLineInvertedY),this.yaxisIndex=0,this.translationsIndex=0,this.seriesLen=0,this.pathArr=[];var r=new V(this.ctx);this.lastActiveBarSerieIndex=r.getActiveConfigSeriesIndex(\"desc\",[\"bar\",\"column\"]),this.columnGroupIndices=[];var o=r.getBarSeriesIndices(),n=new A(this.ctx);this.stackedSeriesTotals=n.getStackedSeriesTotals(this.w.config.series.map((function(t,e){return-1===o.indexOf(e)?e:-1})).filter((function(t){return-1!==t}))),this.barHelpers=new At(this)}return s(t,[{key:\"draw\",value:function(t,e){var i=this.w,a=new k(this.ctx),s=new A(this.ctx,i);t=s.getLogSeries(t),this.series=t,this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);var r=a.group({class:\"apexcharts-bar-series apexcharts-plot-series\"});i.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn(\"WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts\");for(var o=0,n=0;o<t.length;o++,n++){var l,h,c,d,u=void 0,f=void 0,p=[],x=[],b=i.globals.comboCharts?e[o]:o,v=this.barHelpers.getGroupIndex(b).columnGroupIndex,y=a.group({class:\"apexcharts-series\",rel:o+1,seriesName:m.escapeString(i.globals.seriesNames[b]),\"data:realIndex\":b});this.ctx.series.addCollapsedClassToSeries(y,b),t[o].length>0&&(this.visibleI=this.visibleI+1);var w=0,S=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[b],this.translationsIndex=b);var C=this.translationsIndex;this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var L=this.barHelpers.initialPositions();f=L.y,w=L.barHeight,h=L.yDivision,d=L.zeroW,u=L.x,S=L.barWidth,l=L.xDivision,c=L.zeroH,this.horizontal||x.push(u+S/2);var P=a.group({class:\"apexcharts-datalabels\",\"data:realIndex\":b});i.globals.delayedElements.push({el:P.node}),P.node.classList.add(\"apexcharts-element-hidden\");var M=a.group({class:\"apexcharts-bar-goals-markers\"}),I=a.group({class:\"apexcharts-bar-shadows\"});i.globals.delayedElements.push({el:I.node}),I.node.classList.add(\"apexcharts-element-hidden\");for(var T=0;T<t[o].length;T++){var z=this.barHelpers.getStrokeWidth(o,T,b),X=null,E={indexes:{i:o,j:T,realIndex:b,translationsIndex:C,bc:n},x:u,y:f,strokeWidth:z,elSeries:y};this.isHorizontal?(X=this.drawBarPaths(g(g({},E),{},{barHeight:w,zeroW:d,yDivision:h})),S=this.series[o][T]/this.invertedYRatio):(X=this.drawColumnPaths(g(g({},E),{},{xDivision:l,barWidth:S,zeroH:c})),w=this.series[o][T]/this.yRatio[C]);var Y=this.barHelpers.getPathFillColor(t,o,T,b);if(this.isFunnel&&this.barOptions.isFunnel3d&&this.pathArr.length&&T>0){var R=this.barHelpers.drawBarShadow({color:\"string\"==typeof Y&&-1===(null==Y?void 0:Y.indexOf(\"url\"))?Y:m.hexToRgba(i.globals.colors[o]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:X});R&&I.add(R)}this.pathArr.push(X);var F=this.barHelpers.drawGoalLine({barXPosition:X.barXPosition,barYPosition:X.barYPosition,goalX:X.goalX,goalY:X.goalY,barHeight:w,barWidth:S});F&&M.add(F),f=X.y,u=X.x,T>0&&x.push(u+S/2),p.push(f),this.renderSeries({realIndex:b,pathFill:Y,j:T,i:o,columnGroupIndex:v,pathFrom:X.pathFrom,pathTo:X.pathTo,strokeWidth:z,elSeries:y,x:u,y:f,series:t,barHeight:Math.abs(X.barHeight?X.barHeight:w),barWidth:Math.abs(X.barWidth?X.barWidth:S),elDataLabelsWrap:P,elGoalsMarkers:M,elBarShadows:I,visibleSeries:this.visibleI,type:\"bar\"})}i.globals.seriesXvalues[b]=x,i.globals.seriesYvalues[b]=p,r.add(y)}return r}},{key:\"renderSeries\",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,o=t.columnGroupIndex,n=t.pathFrom,l=t.pathTo,h=t.strokeWidth,c=t.elSeries,d=t.x,g=t.y,u=t.y1,f=t.y2,p=t.series,x=t.barHeight,b=t.barWidth,v=t.barXPosition,m=t.barYPosition,y=t.elDataLabelsWrap,A=t.elGoalsMarkers,S=t.elBarShadows,C=t.visibleSeries,L=t.type,P=t.classes,M=this.w,I=new k(this.ctx);if(!a){var T=\"function\"==typeof M.globals.stroke.colors[e]?function(t){var e,i=M.config.stroke.colors;return Array.isArray(i)&&i.length>0&&((e=i[t])||(e=\"\"),\"function\"==typeof e)?e({value:M.globals.series[t][s],dataPointIndex:s,w:M}):e}(e):M.globals.stroke.colors[e];a=this.barOptions.distributed?M.globals.stroke.colors[s]:T}M.config.series[r].data[s]&&M.config.series[r].data[s].strokeColor&&(a=M.config.series[r].data[s].strokeColor),this.isNullValue&&(i=\"none\");var z=s/M.config.chart.animations.animateGradually.delay*(M.config.chart.animations.speed/M.globals.dataPoints)/2.4,X=I.renderPaths({i:r,j:s,realIndex:e,pathFrom:n,pathTo:l,stroke:a,strokeWidth:h,strokeLineCap:M.config.stroke.lineCap,fill:i,animationDelay:z,initialSpeed:M.config.chart.animations.speed,dataChangeSpeed:M.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(L,\"-area \").concat(P),chartType:L});X.attr(\"clip-path\",\"url(#gridRectBarMask\".concat(M.globals.cuid,\")\"));var E=M.config.forecastDataPoints;E.count>0&&s>=M.globals.dataPoints-E.count&&(X.node.setAttribute(\"stroke-dasharray\",E.dashArray),X.node.setAttribute(\"stroke-width\",E.strokeWidth),X.node.setAttribute(\"fill-opacity\",E.fillOpacity)),void 0!==u&&void 0!==f&&(X.attr(\"data-range-y1\",u),X.attr(\"data-range-y2\",f)),new w(this.ctx).setSelectionFilter(X,e,s),c.add(X);var Y=new kt(this).handleBarDataLabels({x:d,y:g,y1:u,y2:f,i:r,j:s,series:p,realIndex:e,columnGroupIndex:o,barHeight:x,barWidth:b,barXPosition:v,barYPosition:m,renderedPath:X,visibleSeries:C});return null!==Y.dataLabels&&y.add(Y.dataLabels),Y.totalDataLabels&&y.add(Y.totalDataLabels),c.add(y),A&&c.add(A),S&&c.add(S),c}},{key:\"drawBarPaths\",value:function(t){var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=i.i,g=i.j;if(c.globals.isXNumeric)e=(n=(c.globals.seriesX[d][g]-c.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var u=0,f=0;c.globals.seriesPercent.forEach((function(t,e){t[g]&&u++,e<d&&0===t[g]&&f++})),u>0&&(a=this.seriesLen*a/u),e=n+a*this.visibleI,e-=a*f}else e=n+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[d][g],r)-r)/2),o=this.barHelpers.getXForValue(this.series[d][g],r);var p=this.barHelpers.getBarpaths({barYPosition:e,barHeight:a,x1:r,x2:o,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:i.realIndex,i:d,j:g,w:c});return c.globals.isXNumeric||(n+=l),this.barHelpers.barBackground({j:g,i:d,y1:e-a*this.visibleI,y2:a*this.seriesLen,elSeries:h}),{pathTo:p.pathTo,pathFrom:p.pathFrom,x1:r,x:o,y:n,goalX:this.barHelpers.getGoalValues(\"x\",r,null,d,g),barYPosition:e,barHeight:a}}},{key:\"drawColumnPaths\",value:function(t){var e,i=t.indexes,a=t.x,s=t.y,r=t.xDivision,o=t.barWidth,n=t.zeroH,l=t.strokeWidth,h=t.elSeries,c=this.w,d=i.realIndex,g=i.translationsIndex,u=i.i,f=i.j,p=i.bc;if(c.globals.isXNumeric){var x=this.getBarXForNumericXAxis({x:a,j:f,realIndex:d,barWidth:o});a=x.x,e=x.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var b=this.barHelpers.getZeroValueEncounters({i:u,j:f}),v=b.nonZeroColumns,m=b.zeroEncounters;v>0&&(o=this.seriesLen*o/v),e=a+o*this.visibleI,e-=o*m}else e=a+o*this.visibleI;s=this.barHelpers.getYForValue(this.series[u][f],n,g);var y=this.barHelpers.getColumnPaths({barXPosition:e,barWidth:o,y1:n,y2:s,strokeWidth:l,isReversed:this.isReversed,series:this.series,realIndex:d,i:u,j:f,w:c});return c.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:p,j:f,i:u,x1:e-l/2-o*this.visibleI,x2:o*this.seriesLen+l/2,elSeries:h}),{pathTo:y.pathTo,pathFrom:y.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues(\"y\",null,n,u,f,g),barXPosition:e,barWidth:o}}},{key:\"getBarXForNumericXAxis\",value:function(t){var e=t.x,i=t.barWidth,a=t.realIndex,s=t.j,r=this.w,o=a;return r.globals.seriesX[a].length||(o=r.globals.maxValsInArrayIndex),r.globals.seriesX[o][s]&&(e=(r.globals.seriesX[o][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:e+i*this.visibleI,x:e}}},{key:\"getPreviousPath\",value:function(t,e){for(var i,a=this.w,s=0;s<a.globals.previousPaths.length;s++){var r=a.globals.previousPaths[s];r.paths&&r.paths.length>0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),Ct=function(t){h(a,St);var e=o(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e){var i=this,a=this.w;this.graphics=new k(this.ctx),this.bar=new St(this.ctx,this.xyRatios);var s=new A(this.ctx,a);t=s.getLogSeries(t),this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),\"100%\"===a.config.chart.stackType&&(t=a.globals.comboCharts?e.map((function(t){return a.globals.seriesPercent[t]})):a.globals.seriesPercent.slice()),this.series=t,this.barHelpers.initializeStackedPrevVars(this);for(var r=this.graphics.group({class:\"apexcharts-bar-series apexcharts-plot-series\"}),o=0,n=0,l=function(s,l){var h=void 0,c=void 0,d=void 0,u=void 0,f=a.globals.comboCharts?e[s]:s,p=i.barHelpers.getGroupIndex(f),x=p.groupIndex,b=p.columnGroupIndex;i.groupCtx=i[a.globals.seriesGroups[x]];var v=[],y=[],w=0;i.yRatio.length>1&&(i.yaxisIndex=a.globals.seriesYAxisReverseMap[f][0],w=f),i.isReversed=a.config.yaxis[i.yaxisIndex]&&a.config.yaxis[i.yaxisIndex].reversed;var k=i.graphics.group({class:\"apexcharts-series\",seriesName:m.escapeString(a.globals.seriesNames[f]),rel:s+1,\"data:realIndex\":f});i.ctx.series.addCollapsedClassToSeries(k,f);var A=i.graphics.group({class:\"apexcharts-datalabels\",\"data:realIndex\":f}),S=i.graphics.group({class:\"apexcharts-bar-goals-markers\"}),C=0,L=0,P=i.initialPositions(o,n,h,c,d,u,w);n=P.y,C=P.barHeight,c=P.yDivision,u=P.zeroW,o=P.x,L=P.barWidth,h=P.xDivision,d=P.zeroH,a.globals.barHeight=C,a.globals.barWidth=L,i.barHelpers.initializeStackedXYVars(i),1===i.groupCtx.prevY.length&&i.groupCtx.prevY[0].every((function(t){return isNaN(t)}))&&(i.groupCtx.prevY[0]=i.groupCtx.prevY[0].map((function(){return d})),i.groupCtx.prevYF[0]=i.groupCtx.prevYF[0].map((function(){return 0})));for(var M=0;M<a.globals.dataPoints;M++){var I=i.barHelpers.getStrokeWidth(s,M,f),T={indexes:{i:s,j:M,realIndex:f,translationsIndex:w,bc:l},strokeWidth:I,x:o,y:n,elSeries:k,columnGroupIndex:b,seriesGroup:a.globals.seriesGroups[x]},z=null;i.isHorizontal?(z=i.drawStackedBarPaths(g(g({},T),{},{zeroW:u,barHeight:C,yDivision:c})),L=i.series[s][M]/i.invertedYRatio):(z=i.drawStackedColumnPaths(g(g({},T),{},{xDivision:h,barWidth:L,zeroH:d})),C=i.series[s][M]/i.yRatio[w]);var X=i.barHelpers.drawGoalLine({barXPosition:z.barXPosition,barYPosition:z.barYPosition,goalX:z.goalX,goalY:z.goalY,barHeight:C,barWidth:L});X&&S.add(X),n=z.y,o=z.x,v.push(o),y.push(n);var E=i.barHelpers.getPathFillColor(t,s,M,f),Y=\"\";a.globals.isBarHorizontal?\"bottom\"===i.barHelpers.arrBorderRadius[f][M]&&a.globals.series[f][M]>0&&(Y=\"apexcharts-flip-x\"):\"bottom\"===i.barHelpers.arrBorderRadius[f][M]&&a.globals.series[f][M]>0&&(Y=\"apexcharts-flip-y\"),k=i.renderSeries({realIndex:f,pathFill:E,j:M,i:s,columnGroupIndex:b,pathFrom:z.pathFrom,pathTo:z.pathTo,strokeWidth:I,elSeries:k,x:o,y:n,series:t,barHeight:C,barWidth:L,elDataLabelsWrap:A,elGoalsMarkers:S,type:\"bar\",visibleSeries:b,classes:Y})}a.globals.seriesXvalues[f]=v,a.globals.seriesYvalues[f]=y,i.groupCtx.prevY.push(i.groupCtx.yArrj),i.groupCtx.prevYF.push(i.groupCtx.yArrjF),i.groupCtx.prevYVal.push(i.groupCtx.yArrjVal),i.groupCtx.prevX.push(i.groupCtx.xArrj),i.groupCtx.prevXF.push(i.groupCtx.xArrjF),i.groupCtx.prevXVal.push(i.groupCtx.xArrjVal),r.add(k)},h=0,c=0;h<t.length;h++,c++)l(h,c);return r}},{key:\"initialPositions\",value:function(t,e,i,a,s,r,o){var n,l,h=this.w;if(this.isHorizontal){a=h.globals.gridHeight/h.globals.dataPoints;var c=h.config.plotOptions.bar.barHeight;n=-1===String(c).indexOf(\"%\")?parseInt(c,10):a*parseInt(c,10)/100,r=h.globals.padHorizontal+(this.isReversed?h.globals.gridWidth-this.baseLineInvertedY:this.baseLineInvertedY),e=(a-n)/2}else{l=i=h.globals.gridWidth/h.globals.dataPoints;var d=h.config.plotOptions.bar.columnWidth;h.globals.isXNumeric&&h.globals.dataPoints>1?l=(i=h.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:-1===String(d).indexOf(\"%\")?l=parseInt(d,10):l*=parseInt(d,10)/100,s=this.isReversed?this.baseLineY[o]:h.globals.gridHeight-this.baseLineY[o],t=h.globals.padHorizontal+(i-l)/2}var g=h.globals.barGroups.length||1;return{x:t,y:e,yDivision:a,xDivision:i,barHeight:n/g,barWidth:l/g,zeroH:s,zeroW:r}}},{key:\"drawStackedBarPaths\",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.columnGroupIndex,h=t.seriesGroup,c=t.yDivision,d=t.elSeries,g=this.w,u=n+l*a,f=i.i,p=i.j,x=i.realIndex,b=i.translationsIndex,v=0,m=0;m<this.groupCtx.prevXF.length;m++)v+=this.groupCtx.prevXF[m][p];var y;if((y=h.indexOf(g.config.series[x].name))>0){var w=r;this.groupCtx.prevXVal[y-1][p]<0?w=this.series[f][p]>=0?this.groupCtx.prevX[y-1][p]+v-2*(this.isReversed?v:0):this.groupCtx.prevX[y-1][p]:this.groupCtx.prevXVal[y-1][p]>=0&&(w=this.series[f][p]>=0?this.groupCtx.prevX[y-1][p]:this.groupCtx.prevX[y-1][p]-v+2*(this.isReversed?v:0)),e=w}else e=r;o=null===this.series[f][p]?e:e+this.series[f][p]/this.invertedYRatio-2*(this.isReversed?this.series[f][p]/this.invertedYRatio:0);var k=this.barHelpers.getBarpaths({barYPosition:u,barHeight:a,x1:e,x2:o,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:i.realIndex,seriesGroup:h,i:f,j:p,w:g});return this.barHelpers.barBackground({j:p,i:f,y1:u,y2:a,elSeries:d}),n+=c,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalX:this.barHelpers.getGoalValues(\"x\",r,null,f,p,b),barXPosition:e,barYPosition:u,x:o,y:n}}},{key:\"drawStackedColumnPaths\",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH,n=t.columnGroupIndex,l=t.seriesGroup,h=t.elSeries,c=this.w,d=e.i,g=e.j,u=e.bc,f=e.realIndex,p=e.translationsIndex;if(c.globals.isXNumeric){var x=c.globals.seriesX[f][g];x||(x=0),i=(x-c.globals.minX)/this.xRatio-r/2*c.globals.barGroups.length}for(var b,v=i+n*r,m=0,y=0;y<this.groupCtx.prevYF.length;y++)m+=isNaN(this.groupCtx.prevYF[y][g])?0:this.groupCtx.prevYF[y][g];var w=d;if(l&&(w=l.indexOf(c.globals.seriesNames[f])),w>0&&!c.globals.isXNumeric||w>0&&c.globals.isXNumeric&&c.globals.seriesX[f-1][g]===c.globals.seriesX[f][g]){var k,A,S,C=Math.min(this.yRatio.length+1,f+1);if(void 0!==this.groupCtx.prevY[w-1]&&this.groupCtx.prevY[w-1].length)for(var L=1;L<C;L++){var P;if(!isNaN(null===(P=this.groupCtx.prevY[w-L])||void 0===P?void 0:P[g])){S=this.groupCtx.prevY[w-L][g];break}}for(var M=1;M<C;M++){var I,T;if((null===(I=this.groupCtx.prevYVal[w-M])||void 0===I?void 0:I[g])<0){A=this.series[d][g]>=0?S-m+2*(this.isReversed?m:0):S;break}if((null===(T=this.groupCtx.prevYVal[w-M])||void 0===T?void 0:T[g])>=0){A=this.series[d][g]>=0?S:S+m-2*(this.isReversed?m:0);break}}void 0===A&&(A=c.globals.gridHeight),b=null!==(k=this.groupCtx.prevYF[0])&&void 0!==k&&k.every((function(t){return 0===t}))&&this.groupCtx.prevYF.slice(1,w).every((function(t){return t.every((function(t){return isNaN(t)}))}))?o:A}else b=o;a=this.series[d][g]?b-this.series[d][g]/this.yRatio[p]+2*(this.isReversed?this.series[d][g]/this.yRatio[p]:0):b;var z=this.barHelpers.getColumnPaths({barXPosition:v,barWidth:r,y1:b,y2:a,yRatio:this.yRatio[p],strokeWidth:this.strokeWidth,isReversed:this.isReversed,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:d,j:g,w:c});return this.barHelpers.barBackground({bc:u,j:g,i:d,x1:v,x2:r,elSeries:h}),{pathTo:z.pathTo,pathFrom:z.pathFrom,goalY:this.barHelpers.getGoalValues(\"y\",null,o,d,g),barXPosition:v,x:c.globals.isXNumeric?i:i+s,y:a}}}]),a}(),Lt=function(t){h(a,St);var e=o(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e,i){var a=this,s=this.w,r=new k(this.ctx),o=s.globals.comboCharts?e:s.config.chart.type,n=new N(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=s.config.plotOptions.bar.horizontal;var l=new A(this.ctx,s);t=l.getLogSeries(t),this.series=t,this.yRatio=l.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var h=r.group({class:\"apexcharts-\".concat(o,\"-series apexcharts-plot-series\")}),c=function(e){a.isBoxPlot=\"boxPlot\"===s.config.chart.type||\"boxPlot\"===s.config.series[e].type;var o,l,c,d,u=void 0,f=void 0,p=[],x=[],b=s.globals.comboCharts?i[e]:e,v=a.barHelpers.getGroupIndex(b).columnGroupIndex,y=r.group({class:\"apexcharts-series\",seriesName:m.escapeString(s.globals.seriesNames[b]),rel:e+1,\"data:realIndex\":b});a.ctx.series.addCollapsedClassToSeries(y,b),t[e].length>0&&(a.visibleI=a.visibleI+1);var w,k,A=0;a.yRatio.length>1&&(a.yaxisIndex=s.globals.seriesYAxisReverseMap[b][0],A=b);var S=a.barHelpers.initialPositions();f=S.y,w=S.barHeight,l=S.yDivision,d=S.zeroW,u=S.x,k=S.barWidth,o=S.xDivision,c=S.zeroH,x.push(u+k/2);for(var C=r.group({class:\"apexcharts-datalabels\",\"data:realIndex\":b}),L=function(i){var r=a.barHelpers.getStrokeWidth(e,i,b),h=null,m={indexes:{i:e,j:i,realIndex:b,translationsIndex:A},x:u,y:f,strokeWidth:r,elSeries:y};h=a.isHorizontal?a.drawHorizontalBoxPaths(g(g({},m),{},{yDivision:l,barHeight:w,zeroW:d})):a.drawVerticalBoxPaths(g(g({},m),{},{xDivision:o,barWidth:k,zeroH:c})),f=h.y,u=h.x,i>0&&x.push(u+k/2),p.push(f),h.pathTo.forEach((function(o,l){var c=!a.isBoxPlot&&a.candlestickOptions.wick.useFillColor?h.color[l]:s.globals.stroke.colors[e],d=n.fillPath({seriesNumber:b,dataPointIndex:i,color:h.color[l],value:t[e][i]});a.renderSeries({realIndex:b,pathFill:d,lineFill:c,j:i,i:e,pathFrom:h.pathFrom,pathTo:o,strokeWidth:r,elSeries:y,x:u,y:f,series:t,columnGroupIndex:v,barHeight:w,barWidth:k,elDataLabelsWrap:C,visibleSeries:a.visibleI,type:s.config.chart.type})}))},P=0;P<s.globals.dataPoints;P++)L(P);s.globals.seriesXvalues[b]=x,s.globals.seriesYvalues[b]=p,h.add(y)},d=0;d<t.length;d++)c(d);return h}},{key:\"drawVerticalBoxPaths\",value:function(t){var e=t.indexes,i=t.x;t.y;var a=t.xDivision,s=t.barWidth,r=t.zeroH,o=t.strokeWidth,n=this.w,l=new k(this.ctx),h=e.i,c=e.j,d=!0,g=n.config.plotOptions.candlestick.colors.upward,u=n.config.plotOptions.candlestick.colors.downward,f=\"\";this.isBoxPlot&&(f=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var p=this.yRatio[e.translationsIndex],x=e.realIndex,b=this.getOHLCValue(x,c),v=r,m=r;b.o>b.c&&(d=!1);var y=Math.min(b.o,b.c),w=Math.max(b.o,b.c),A=b.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[x][c]-n.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(y=r,w=r):(y=r-y/p,w=r-w/p,v=r-b.h/p,m=r-b.l/p,A=r-b.m/p);var C=l.move(S,r),L=l.move(S+s/2,y);return n.globals.previousPaths.length>0&&(L=this.getPreviousPath(x,c,!0)),C=this.isBoxPlot?[l.move(S,y)+l.line(S+s/2,y)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,y)+l.line(S+s,y)+l.line(S+s,A)+l.line(S,A)+l.line(S,y+o/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,m)+l.line(S+s-s/4,m)+l.line(S+s/4,m)+l.line(S+s/2,m)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,A)+\"z\"]:[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,v)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,y)+l.line(S+s/2,y)+l.line(S+s/2,m)+l.line(S+s/2,y)+l.line(S,y)+l.line(S,w-o/2)],L+=l.move(S,y),n.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:L,x:i,y:w,barXPosition:S,color:this.isBoxPlot?f:d?[g]:[u]}}},{key:\"drawHorizontalBoxPaths\",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,o=t.strokeWidth,n=this.w,l=new k(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var g=this.invertedYRatio,u=e.realIndex,f=this.getOHLCValue(u,c),p=r,x=r,b=Math.min(f.o,f.c),v=Math.max(f.o,f.c),m=f.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[u][c]-n.globals.minX)/this.invertedXRatio-s/2);var y=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,v=r):(b=r+b/g,v=r+v/g,p=r+f.h/g,x=r+f.l/g,m=r+f.m/g);var w=l.move(r,y),A=l.move(b,y+s/2);return n.globals.previousPaths.length>0&&(A=this.getPreviousPath(u,c,!0)),w=[l.move(b,y)+l.line(b,y+s/2)+l.line(p,y+s/2)+l.line(p,y+s/2-s/4)+l.line(p,y+s/2+s/4)+l.line(p,y+s/2)+l.line(b,y+s/2)+l.line(b,y+s)+l.line(m,y+s)+l.line(m,y)+l.line(b+o/2,y),l.move(m,y)+l.line(m,y+s)+l.line(v,y+s)+l.line(v,y+s/2)+l.line(x,y+s/2)+l.line(x,y+s-s/4)+l.line(x,y+s/4)+l.line(x,y+s/2)+l.line(v,y+s/2)+l.line(v,y)+l.line(m,y)+\"z\"],A+=l.move(b,y),n.globals.isXNumeric||(i+=a),{pathTo:w,pathFrom:A,x:v,y:i,barYPosition:y,color:d}}},{key:\"getOHLCValue\",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}]),a}(),Pt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"checkColorRange\",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:\"getShadeColor\",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,n=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?n.percent<0?n.percent/100*(1.25*o):(1-n.percent/100)*(1.25*o):n.percent<=0?1-(1+n.percent/100)*o:(1-n.percent/100)*o:(r=1-n.percent/100,\"treemap\"===t&&(r=(1-n.percent/100)*(1.25*o)));var l=n.color,h=new m;if(s.config.plotOptions[t].enableShades)if(\"dark\"===this.w.config.theme.mode){var c=h.shadeColor(-1*r,n.color);l=m.hexToRgba(m.isColorHex(c)?c:m.rgb2hex(c),s.config.fill.opacity)}else{var d=h.shadeColor(r,n.color);l=m.hexToRgba(m.isColorHex(d)?d:m.rgb2hex(d),s.config.fill.opacity)}return{color:l,colorProps:n}}},{key:\"determineColor\",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],o=r.colorScale.inverse?i:e;r.distributed&&\"treemap\"===a.config.chart.type&&(o=i);var n=a.globals.colors[o],l=null,h=Math.min.apply(Math,p(a.globals.series[e])),c=Math.max.apply(Math,p(a.globals.series[e]));r.distributed||\"heatmap\"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.min<a.globals.minY?r.colorScale.min:a.globals.minY,c=r.colorScale.max>a.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),g=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){n=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);g=100*s/(0===i?i-1e-6:i)}}));return{color:n,foreColor:l,percent:g}}},{key:\"calculateDataLabels\",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,o=t.colorProps,n=t.fontSize,l=this.w.config.dataLabels,h=new k(this.ctx),c=new G(this.ctx),d=null;if(l.enabled){d=h.group({class:\"apexcharts-data-labels\"});var g=l.offsetX,u=l.offsetY,f=i+g,p=a+parseFloat(l.style.fontSize)/3+u;c.plotDataLabelsText({x:f,y:p,text:e,i:s,j:r,color:o.foreColor,parent:d,fontSize:n,dataLabelsConfig:l})}return d}},{key:\"addListeners\",value:function(t){var e=new k(this.ctx);t.node.addEventListener(\"mouseenter\",e.pathMouseEnter.bind(this,t)),t.node.addEventListener(\"mouseleave\",e.pathMouseLeave.bind(this,t)),t.node.addEventListener(\"mousedown\",e.pathMouseDown.bind(this,t))}}]),t}(),Mt=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w,this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new Pt(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return s(t,[{key:\"draw\",value:function(t){var e=this.w,i=new k(this.ctx),a=i.group({class:\"apexcharts-heatmap\"});a.attr(\"clip-path\",\"url(#gridRectMask\".concat(e.globals.cuid,\")\"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,o=0,n=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(n=!0,l.reverse());for(var h=n?0:l.length-1;n?h<l.length:h>=0;n?h++:h--){var c=i.group({class:\"apexcharts-series apexcharts-heatmap-series\",seriesName:m.escapeString(e.globals.seriesNames[h]),rel:h+1,\"data:realIndex\":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new w(this.ctx).dropShadow(c,d,h)}for(var g=0,u=e.config.plotOptions.heatmap.shadeIntensity,f=0;f<l[h].length;f++){var p=this.helpers.getShadeColor(e.config.chart.type,h,f,this.negRange),x=p.color,b=p.colorProps;if(\"image\"===e.config.fill.type)x=new N(this.ctx).fillPath({seriesNumber:h,dataPointIndex:f,opacity:e.globals.hasNegs?b.percent<0?1-(1+b.percent/100):u+b.percent/100:b.percent/100,patternID:m.randomId(),width:e.config.fill.image.width?e.config.fill.image.width:s,height:e.config.fill.image.height?e.config.fill.image.height:r});var v=this.rectRadius,y=i.drawRect(g,o,s,r,v);if(y.attr({cx:g,cy:o}),y.node.classList.add(\"apexcharts-heatmap-rect\"),c.add(y),y.attr({fill:x,i:h,index:h,j:f,val:t[h][f],\"stroke-width\":this.strokeWidth,stroke:e.config.plotOptions.heatmap.useFillColorAsStroke?x:e.globals.stroke.colors[0],color:x}),this.helpers.addListeners(y),e.config.chart.animations.enabled&&!e.globals.dataChanged){var A=1;e.globals.resized||(A=e.config.chart.animations.speed),this.animateHeatMap(y,g,o,s,r,A)}if(e.globals.dataChanged){var S=1;if(this.dynamicAnim.enabled&&e.globals.shouldAnimate){S=this.dynamicAnim.speed;var C=e.globals.previousPaths[h]&&e.globals.previousPaths[h][f]&&e.globals.previousPaths[h][f].color;C||(C=\"rgba(255, 255, 255, 0)\"),this.animateHeatColor(y,m.isColorHex(C)?C:m.rgb2hex(C),m.isColorHex(x)?x:m.rgb2hex(x),S)}}var L=(0,e.config.dataLabels.formatter)(e.globals.series[h][f],{value:e.globals.series[h][f],seriesIndex:h,dataPointIndex:f,w:e}),P=this.helpers.calculateDataLabels({text:L,x:g+s/2,y:o+r/2,i:h,j:f,colorProps:b,series:l});null!==P&&c.add(P),g+=s}o+=r,a.add(c)}var M=e.globals.yAxisScale[0].result.slice();return e.config.yaxis[0].reversed?M.unshift(\"\"):M.push(\"\"),e.globals.yAxisScale[0].result=M,a}},{key:\"animateHeatMap\",value:function(t,e,i,a,s,r){var o=new y(this.ctx);o.animateRect(t,{x:e+a/2,y:i+s/2,width:0,height:0},{x:e,y:i,width:a,height:s},r,(function(){o.animationCompleted(t)}))}},{key:\"animateHeatColor\",value:function(t,e,i,a){t.attr({fill:e}).animate(a).attr({fill:i})}}]),t}(),It=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"drawYAxisTexts\",value:function(t,e,i,a){var s=this.w,r=s.config.yaxis[0],o=s.globals.yLabelFormatters[0];return new k(this.ctx).drawText({x:t+r.labels.offsetX,y:e+r.labels.offsetY,text:o(a,i),textAnchor:\"middle\",fontSize:r.labels.style.fontSize,fontFamily:r.labels.style.fontFamily,foreColor:Array.isArray(r.labels.style.colors)?r.labels.style.colors[i]:r.labels.style.colors})}}]),t}(),Tt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w;var a=this.w;this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels,this.lineColorArr=void 0!==a.globals.stroke.colors?a.globals.stroke.colors:a.globals.colors,this.defaultSize=Math.min(a.globals.gridWidth,a.globals.gridHeight),this.centerY=this.defaultSize/2,this.centerX=a.globals.gridWidth/2,\"radialBar\"===a.config.chart.type?this.fullAngle=360:this.fullAngle=Math.abs(a.config.plotOptions.pie.endAngle-a.config.plotOptions.pie.startAngle),this.initialAngle=a.config.plotOptions.pie.startAngle%this.fullAngle,a.globals.radialSize=this.defaultSize/2.05-a.config.stroke.width-(a.config.chart.sparkline.enabled?0:a.config.chart.dropShadow.blur),this.donutSize=a.globals.radialSize*parseInt(a.config.plotOptions.pie.donut.size,10)/100;var s=a.config.plotOptions.pie.customScale,r=a.globals.gridWidth/2,o=a.globals.gridHeight/2;this.translateX=r-r*s,this.translateY=o-o*s,this.dataLabelsGroup=new k(this.ctx).group({class:\"apexcharts-datalabels-group\",transform:\"translate(\".concat(this.translateX,\", \").concat(this.translateY,\") scale(\").concat(s,\")\")}),this.maxY=0,this.sliceLabels=[],this.sliceSizes=[],this.prevSectorAngleArr=[]}return s(t,[{key:\"draw\",value:function(t){var e=this,i=this.w,a=new k(this.ctx),s=a.group({class:\"apexcharts-pie\"});if(i.globals.noData)return s;for(var r=0,o=0;o<t.length;o++)r+=m.negToZero(t[o]);var n=[],l=a.group();0===r&&(r=1e-5),t.forEach((function(t){e.maxY=Math.max(e.maxY,t)})),i.config.yaxis[0].max&&(this.maxY=i.config.yaxis[0].max),\"back\"===i.config.grid.position&&\"polarArea\"===this.chartType&&this.drawPolarElements(s);for(var h=0;h<t.length;h++){var c=this.fullAngle*m.negToZero(t[h])/r;n.push(c),\"polarArea\"===this.chartType?(n[h]=this.fullAngle/t.length,this.sliceSizes.push(i.globals.radialSize*t[h]/this.maxY)):this.sliceSizes.push(i.globals.radialSize)}if(i.globals.dataChanged){for(var d,g=0,u=0;u<i.globals.previousPaths.length;u++)g+=m.negToZero(i.globals.previousPaths[u]);for(var f=0;f<i.globals.previousPaths.length;f++)d=this.fullAngle*m.negToZero(i.globals.previousPaths[f])/g,this.prevSectorAngleArr.push(d)}if(this.donutSize<0&&(this.donutSize=0),\"donut\"===this.chartType){var p=a.drawCircle(this.donutSize);p.attr({cx:this.centerX,cy:this.centerY,fill:i.config.plotOptions.pie.donut.background?i.config.plotOptions.pie.donut.background:\"transparent\"}),l.add(p)}var x=this.drawArcs(n,t);if(this.sliceLabels.forEach((function(t){x.add(t)})),l.attr({transform:\"translate(\".concat(this.translateX,\", \").concat(this.translateY,\") scale(\").concat(i.config.plotOptions.pie.customScale,\")\")}),l.add(x),s.add(l),this.donutDataLabels.show){var b=this.renderInnerDataLabels(this.dataLabelsGroup,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});s.add(b)}return\"front\"===i.config.grid.position&&\"polarArea\"===this.chartType&&this.drawPolarElements(s),s}},{key:\"drawArcs\",value:function(t,e){var i=this.w,a=new w(this.ctx),s=new k(this.ctx),r=new N(this.ctx),o=s.group({class:\"apexcharts-slices\"}),n=this.initialAngle,l=this.initialAngle,h=this.initialAngle,c=this.initialAngle;this.strokeWidth=i.config.stroke.show?i.config.stroke.width:0;for(var d=0;d<t.length;d++){var g=s.group({class:\"apexcharts-series apexcharts-pie-series\",seriesName:m.escapeString(i.globals.seriesNames[d]),rel:d+1,\"data:realIndex\":d});o.add(g),l=c,h=(n=h)+t[d],c=l+this.prevSectorAngleArr[d];var u=h<n?this.fullAngle+h-n:h-n,f=r.fillPath({seriesNumber:d,size:this.sliceSizes[d],value:e[d]}),p=this.getChangedPath(l,c),x=s.drawPath({d:p,stroke:Array.isArray(this.lineColorArr)?this.lineColorArr[d]:this.lineColorArr,strokeWidth:0,fill:f,fillOpacity:i.config.fill.opacity,classes:\"apexcharts-pie-area apexcharts-\".concat(this.chartType.toLowerCase(),\"-slice-\").concat(d)});if(x.attr({index:0,j:d}),a.setSelectionFilter(x,0,d),i.config.chart.dropShadow.enabled){var b=i.config.chart.dropShadow;a.dropShadow(x,b,d)}this.addListeners(x,this.donutDataLabels),k.setAttrs(x.node,{\"data:angle\":u,\"data:startAngle\":n,\"data:strokeWidth\":this.strokeWidth,\"data:value\":e[d]});var v={x:0,y:0};\"pie\"===this.chartType||\"polarArea\"===this.chartType?v=m.polarToCartesian(this.centerX,this.centerY,i.globals.radialSize/1.25+i.config.plotOptions.pie.dataLabels.offset,(n+u/2)%this.fullAngle):\"donut\"===this.chartType&&(v=m.polarToCartesian(this.centerX,this.centerY,(i.globals.radialSize+this.donutSize)/2+i.config.plotOptions.pie.dataLabels.offset,(n+u/2)%this.fullAngle)),g.add(x);var y=0;if(!this.initialAnim||i.globals.resized||i.globals.dataChanged?this.animBeginArr.push(0):(0===(y=u/this.fullAngle*i.config.chart.animations.speed)&&(y=1),this.animDur=y+this.animDur,this.animBeginArr.push(this.animDur)),this.dynamicAnim&&i.globals.dataChanged?this.animatePaths(x,{size:this.sliceSizes[d],endAngle:h,startAngle:n,prevStartAngle:l,prevEndAngle:c,animateStartingPos:!0,i:d,animBeginArr:this.animBeginArr,shouldSetPrevPaths:!0,dur:i.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(x,{size:this.sliceSizes[d],endAngle:h,startAngle:n,i:d,totalItems:t.length-1,animBeginArr:this.animBeginArr,dur:y}),i.config.plotOptions.pie.expandOnClick&&\"polarArea\"!==this.chartType&&x.node.addEventListener(\"mouseup\",this.pieClicked.bind(this,d)),void 0!==i.globals.selectedDataPoints[0]&&i.globals.selectedDataPoints[0].indexOf(d)>-1&&this.pieClicked(d),i.config.dataLabels.enabled){var A=v.x,S=v.y,C=100*u/this.fullAngle+\"%\";if(0!==u&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabel<t[d]){var L=i.config.dataLabels.formatter;void 0!==L&&(C=L(i.globals.seriesPercent[d][0],{seriesIndex:d,w:i}));var P=i.globals.dataLabels.style.colors[d],M=s.group({class:\"apexcharts-datalabels\"}),I=s.drawText({x:A,y:S,text:C,textAnchor:\"middle\",fontSize:i.config.dataLabels.style.fontSize,fontFamily:i.config.dataLabels.style.fontFamily,fontWeight:i.config.dataLabels.style.fontWeight,foreColor:P});if(M.add(I),i.config.dataLabels.dropShadow.enabled){var T=i.config.dataLabels.dropShadow;a.dropShadow(I,T)}I.node.classList.add(\"apexcharts-pie-label\"),i.config.chart.animations.animate&&!1===i.globals.resized&&(I.node.classList.add(\"apexcharts-pie-label-delay\"),I.node.style.animationDelay=i.config.chart.animations.speed/940+\"s\"),this.sliceLabels.push(M)}}}return o}},{key:\"addListeners\",value:function(t,e){var i=new k(this.ctx);t.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this,t)),t.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this,t)),t.node.addEventListener(\"mouseleave\",this.revertDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this,t)),this.donutDataLabels.total.showAlways||(t.node.addEventListener(\"mouseenter\",this.printDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener(\"mousedown\",this.printDataLabelsInner.bind(this,t.node,e)))}},{key:\"animatePaths\",value:function(t,e){var i=this.w,a=e.endAngle<e.startAngle?this.fullAngle+e.endAngle-e.startAngle:e.endAngle-e.startAngle,s=a,r=e.startAngle,o=e.startAngle;void 0!==e.prevStartAngle&&void 0!==e.prevEndAngle&&(r=e.prevEndAngle,s=e.prevEndAngle<e.prevStartAngle?this.fullAngle+e.prevEndAngle-e.prevStartAngle:e.prevEndAngle-e.prevStartAngle),e.i===i.config.series.length-1&&(a+o>this.fullAngle?e.endAngle=e.endAngle-(a+o):a+o<this.fullAngle&&(e.endAngle=e.endAngle+(this.fullAngle-(a+o)))),a===this.fullAngle&&(a=this.fullAngle-.01),this.animateArc(t,r,o,a,s,e)}},{key:\"animateArc\",value:function(t,e,i,a,s,r){var o,n=this,l=this.w,h=new y(this.ctx),c=r.size;(isNaN(e)||isNaN(s))&&(e=i,s=a,r.dur=0);var d=a,g=i,u=e<i?this.fullAngle+e-i:e-i;l.globals.dataChanged&&r.shouldSetPrevPaths&&r.prevEndAngle&&(o=n.getPiePath({me:n,startAngle:r.prevStartAngle,angle:r.prevEndAngle<r.prevStartAngle?this.fullAngle+r.prevEndAngle-r.prevStartAngle:r.prevEndAngle-r.prevStartAngle,size:c}),t.attr({d:o})),0!==r.dur?t.animate(r.dur,l.globals.easing,r.animBeginArr[r.i]).afterAll((function(){\"pie\"!==n.chartType&&\"donut\"!==n.chartType&&\"polarArea\"!==n.chartType||this.animate(l.config.chart.animations.dynamicAnimation.speed).attr({\"stroke-width\":n.strokeWidth}),r.i===l.config.series.length-1&&h.animationCompleted(t)})).during((function(l){d=u+(a-u)*l,r.animateStartingPos&&(d=s+(a-s)*l,g=e-s+(i-(e-s))*l),o=n.getPiePath({me:n,startAngle:g,angle:d,size:c}),t.node.setAttribute(\"data:pathOrig\",o),t.attr({d:o})})):(o=n.getPiePath({me:n,startAngle:g,angle:a,size:c}),r.isTrack||(l.globals.animationEnded=!0),t.node.setAttribute(\"data:pathOrig\",o),t.attr({d:o,\"stroke-width\":n.strokeWidth}))}},{key:\"pieClicked\",value:function(t){var e,i=this.w,a=this,s=a.sliceSizes[t]+(i.config.plotOptions.pie.expandOnClick?4:0),r=i.globals.dom.Paper.select(\".apexcharts-\".concat(a.chartType.toLowerCase(),\"-slice-\").concat(t)).members[0];if(\"true\"!==r.attr(\"data:pieClicked\")){var o=i.globals.dom.baseEl.getElementsByClassName(\"apexcharts-pie-area\");Array.prototype.forEach.call(o,(function(t){t.setAttribute(\"data:pieClicked\",\"false\");var e=t.getAttribute(\"data:pathOrig\");e&&t.setAttribute(\"d\",e)})),i.globals.capturedDataPointIndex=t,r.attr(\"data:pieClicked\",\"true\");var n=parseInt(r.attr(\"data:startAngle\"),10),l=parseInt(r.attr(\"data:angle\"),10);e=a.getPiePath({me:a,startAngle:n,angle:l,size:s}),360!==l&&r.plot(e)}else{r.attr({\"data:pieClicked\":\"false\"}),this.revertDataLabelsInner(r.node,this.donutDataLabels);var h=r.attr(\"data:pathOrig\");r.attr({d:h})}}},{key:\"getChangedPath\",value:function(t,e){var i=\"\";return this.dynamicAnim&&this.w.globals.dataChanged&&(i=this.getPiePath({me:this,startAngle:t,angle:e-t,size:this.size})),i}},{key:\"getPiePath\",value:function(t){var e,i=t.me,a=t.startAngle,s=t.angle,r=t.size,o=new k(this.ctx),n=a,l=Math.PI*(n-90)/180,h=s+a;Math.ceil(h)>=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(h=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(h)>this.fullAngle&&(h-=this.fullAngle);var c=Math.PI*(h-90)/180,d=i.centerX+r*Math.cos(l),g=i.centerY+r*Math.sin(l),u=i.centerX+r*Math.cos(c),f=i.centerY+r*Math.sin(c),p=m.polarToCartesian(i.centerX,i.centerY,i.donutSize,h),x=m.polarToCartesian(i.centerX,i.centerY,i.donutSize,n),b=s>180?1:0,v=[\"M\",d,g,\"A\",r,r,0,b,1,u,f];return e=\"donut\"===i.chartType?[].concat(v,[\"L\",p.x,p.y,\"A\",i.donutSize,i.donutSize,0,b,0,x.x,x.y,\"L\",d,g,\"z\"]).join(\" \"):\"pie\"===i.chartType||\"polarArea\"===i.chartType?[].concat(v,[\"L\",i.centerX,i.centerY,\"L\",d,g]).join(\" \"):[].concat(v).join(\" \"),o.roundPathCorners(e,2*this.strokeWidth)}},{key:\"drawPolarElements\",value:function(t){var e=this.w,i=new $(this.ctx),a=new k(this.ctx),s=new It(this.ctx),r=a.group(),o=a.group(),n=i.niceScale(0,Math.ceil(this.maxY),0),l=n.result.reverse(),h=n.result.length;this.maxY=n.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),g=0;g<h-1;g++){var u=a.drawCircle(c);if(u.attr({cx:this.centerX,cy:this.centerY,fill:\"none\",\"stroke-width\":e.config.plotOptions.polarArea.rings.strokeWidth,stroke:e.config.plotOptions.polarArea.rings.strokeColor}),e.config.yaxis[0].show){var f=s.drawYAxisTexts(this.centerX,this.centerY-c+parseInt(e.config.yaxis[0].labels.style.fontSize,10)/2,g,l[g]);o.add(f)}r.add(u),c-=d}this.drawSpokes(t),t.add(r),t.add(o)}},{key:\"renderInnerDataLabels\",value:function(t,e,i){var a=this.w,s=new k(this.ctx),r=e.total.show;t.node.innerHTML=\"\",t.node.style.opacity=i.opacity;var o,n,l=i.centerX,h=this.donutDataLabels.total.label?i.centerY:i.centerY-i.centerY/6;o=void 0===e.name.color?a.globals.colors[0]:e.name.color;var c=e.name.fontSize,d=e.name.fontFamily,g=e.name.fontWeight;n=void 0===e.value.color?a.config.chart.foreColor:e.value.color;var u=e.value.formatter,f=\"\",p=\"\";if(r?(o=e.total.color,c=e.total.fontSize,d=e.total.fontFamily,g=e.total.fontWeight,p=this.donutDataLabels.total.label?e.total.label:\"\",f=e.total.formatter(a)):1===a.globals.series.length&&(f=u(a.globals.series[0],a),p=a.globals.seriesNames[0]),p&&(p=e.name.formatter(p,e.total.show,a)),e.name.show){var x=s.drawText({x:l,y:h+parseFloat(e.name.offsetY),text:p,textAnchor:\"middle\",foreColor:o,fontSize:c,fontWeight:g,fontFamily:d});x.node.classList.add(\"apexcharts-datalabel-label\"),t.add(x)}if(e.value.show){var b=e.name.show?parseFloat(e.value.offsetY)+16:e.value.offsetY,v=s.drawText({x:l,y:h+b,text:f,textAnchor:\"middle\",foreColor:n,fontWeight:e.value.fontWeight,fontSize:e.value.fontSize,fontFamily:e.value.fontFamily});v.node.classList.add(\"apexcharts-datalabel-value\"),t.add(v)}return t}},{key:\"printInnerLabels\",value:function(t,e,i,a){var s,r=this.w;a?s=void 0===t.name.color?r.globals.colors[parseInt(a.parentNode.getAttribute(\"rel\"),10)-1]:t.name.color:r.globals.series.length>1&&t.total.show&&(s=t.total.color);var o=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-label\"),n=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-value\");i=(0,t.value.formatter)(i,r),a||\"function\"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=this.donutDataLabels.total.label?t.name.formatter(e,l,r):\"\",null!==o&&(o.textContent=e),null!==n&&(n.textContent=i),null!==o&&(o.style.fill=s)}},{key:\"printDataLabelsInner\",value:function(t,e){var i=this.w,a=t.getAttribute(\"data:value\"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute(\"rel\"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(\".apexcharts-datalabels-group\");null!==r&&(r.style.opacity=1)}},{key:\"drawSpokes\",value:function(t){var e=this,i=this.w,a=new k(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,n=0;n<i.globals.series.length;n++)r.push(m.polarToCartesian(this.centerX,this.centerY,i.globals.radialSize,i.config.plotOptions.pie.startAngle+o*n));r.forEach((function(i,r){var o=a.drawLine(i.x,i.y,e.centerX,e.centerY,Array.isArray(s.connectorColors)?s.connectorColors[r]:s.connectorColors);t.add(o)}))}}},{key:\"revertDataLabelsInner\",value:function(){var t=this.w;if(this.donutDataLabels.show){var e=t.globals.dom.Paper.select(\".apexcharts-datalabels-group\").members[0],i=this.renderInnerDataLabels(e,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});t.globals.dom.Paper.select(\".apexcharts-radialbar, .apexcharts-pie\").members[0].add(i)}}}]),t}(),zt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var a=this.w;this.graphics=new k(this.ctx),this.lineColorArr=void 0!==a.globals.stroke.colors?a.globals.stroke.colors:a.globals.colors,this.defaultSize=a.globals.svgHeight<a.globals.svgWidth?a.globals.gridHeight:a.globals.gridWidth,this.isLog=a.config.yaxis[0].logarithmic,this.logBase=a.config.yaxis[0].logBase,this.coreUtils=new A(this.ctx),this.maxValue=this.isLog?this.coreUtils.getLogVal(this.logBase,a.globals.maxY,0):a.globals.maxY,this.minValue=this.isLog?this.coreUtils.getLogVal(this.logBase,this.w.globals.minY,0):a.globals.minY,this.polygons=a.config.plotOptions.radar.polygons,this.strokeWidth=a.config.stroke.show?a.config.stroke.width:0,this.size=this.defaultSize/2.1-this.strokeWidth-a.config.chart.dropShadow.blur,a.config.xaxis.labels.show&&(this.size=this.size-a.globals.xAxisLabelsWidth/1.75),void 0!==a.config.plotOptions.radar.size&&(this.size=a.config.plotOptions.radar.size),this.dataRadiusOfPercent=[],this.dataRadius=[],this.angleArr=[],this.yaxisLabelsTextsPos=[]}return s(t,[{key:\"draw\",value:function(t){var e=this,i=this.w,a=new N(this.ctx),s=[],r=new G(this.ctx);t.length&&(this.dataPointsLen=t[i.globals.maxValsInArrayIndex].length),this.disAngle=2*Math.PI/this.dataPointsLen;var o=i.globals.gridWidth/2,n=i.globals.gridHeight/2,l=o+i.config.plotOptions.radar.offsetX,h=n+i.config.plotOptions.radar.offsetY,c=this.graphics.group({class:\"apexcharts-radar-series apexcharts-plot-series\",transform:\"translate(\".concat(l||0,\", \").concat(h||0,\")\")}),d=[],u=null,f=null;if(this.yaxisLabels=this.graphics.group({class:\"apexcharts-yaxis\"}),t.forEach((function(t,o){var n=t.length===i.globals.dataPoints,l=e.graphics.group().attr({class:\"apexcharts-series\",\"data:longestSeries\":n,seriesName:m.escapeString(i.globals.seriesNames[o]),rel:o+1,\"data:realIndex\":o});e.dataRadiusOfPercent[o]=[],e.dataRadius[o]=[],e.angleArr[o]=[],t.forEach((function(t,i){var a=Math.abs(e.maxValue-e.minValue);t-=e.minValue,e.isLog&&(t=e.coreUtils.getLogVal(e.logBase,t,0)),e.dataRadiusOfPercent[o][i]=t/a,e.dataRadius[o][i]=e.dataRadiusOfPercent[o][i]*e.size,e.angleArr[o][i]=i*e.disAngle})),d=e.getDataPointsPos(e.dataRadius[o],e.angleArr[o]);var h=e.createPaths(d,{x:0,y:0});u=e.graphics.group({class:\"apexcharts-series-markers-wrap apexcharts-element-hidden\"}),f=e.graphics.group({class:\"apexcharts-datalabels\",\"data:realIndex\":o}),i.globals.delayedElements.push({el:u.node,index:o});var c={i:o,realIndex:o,animationDelay:o,initialSpeed:i.config.chart.animations.speed,dataChangeSpeed:i.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-radar\",shouldClipToGrid:!1,bindEventsOnPaths:!1,stroke:i.globals.stroke.colors[o],strokeLineCap:i.config.stroke.lineCap},p=null;i.globals.previousPaths.length>0&&(p=e.getPreviousPath(o));for(var x=0;x<h.linePathsTo.length;x++){var b=e.graphics.renderPaths(g(g({},c),{},{pathFrom:null===p?h.linePathsFrom[x]:p,pathTo:h.linePathsTo[x],strokeWidth:Array.isArray(e.strokeWidth)?e.strokeWidth[o]:e.strokeWidth,fill:\"none\",drawShadow:!1}));l.add(b);var v=a.fillPath({seriesNumber:o}),y=e.graphics.renderPaths(g(g({},c),{},{pathFrom:null===p?h.areaPathsFrom[x]:p,pathTo:h.areaPathsTo[x],strokeWidth:0,fill:v,drawShadow:!1}));if(i.config.chart.dropShadow.enabled){var k=new w(e.ctx),A=i.config.chart.dropShadow;k.dropShadow(y,Object.assign({},A,{noUserSpaceOnUse:!0}),o)}l.add(y)}t.forEach((function(t,a){var s=new W(e.ctx).getMarkerConfig({cssClass:\"apexcharts-marker\",seriesIndex:o,dataPointIndex:a}),n=e.graphics.drawMarker(d[a].x,d[a].y,s);n.attr(\"rel\",a),n.attr(\"j\",a),n.attr(\"index\",o),n.node.setAttribute(\"default-marker-size\",s.pSize);var h=e.graphics.group({class:\"apexcharts-series-markers\"});h&&h.add(n),u.add(h),l.add(u);var c=i.config.dataLabels;if(c.enabled){var p=c.formatter(i.globals.series[o][a],{seriesIndex:o,dataPointIndex:a,w:i});r.plotDataLabelsText({x:d[a].x,y:d[a].y,text:p,textAnchor:\"middle\",i:o,j:o,parent:f,offsetCorrection:!1,dataLabelsConfig:g({},c)})}l.add(f)})),s.push(l)})),this.drawPolygons({parent:c}),i.config.xaxis.labels.show){var p=this.drawXAxisTexts();c.add(p)}return s.forEach((function(t){c.add(t)})),c.add(this.yaxisLabels),c}},{key:\"drawPolygons\",value:function(t){for(var e=this,i=this.w,a=t.parent,s=new It(this.ctx),r=i.globals.yAxisScale[0].result.reverse(),o=r.length,n=[],l=this.size/(o-1),h=0;h<o;h++)n[h]=l*h;n.reverse();var c=[],d=[];n.forEach((function(t,i){var a=m.getPolygonPos(t,e.dataPointsLen),s=\"\";a.forEach((function(t,a){if(0===i){var r=e.graphics.drawLine(t.x,t.y,0,0,Array.isArray(e.polygons.connectorColors)?e.polygons.connectorColors[a]:e.polygons.connectorColors);d.push(r)}0===a&&e.yaxisLabelsTextsPos.push({x:t.x,y:t.y}),s+=t.x+\",\"+t.y+\" \"})),c.push(s)})),c.forEach((function(t,s){var r=e.polygons.strokeColors,o=e.polygons.strokeWidth,n=e.graphics.drawPolygon(t,Array.isArray(r)?r[s]:r,Array.isArray(o)?o[s]:o,i.globals.radarPolygons.fill.colors[s]);a.add(n)})),d.forEach((function(t){a.add(t)})),i.config.yaxis[0].show&&this.yaxisLabelsTextsPos.forEach((function(t,i){var a=s.drawYAxisTexts(t.x,t.y,i,r[i]);e.yaxisLabels.add(a)}))}},{key:\"drawXAxisTexts\",value:function(){var t=this,e=this.w,i=e.config.xaxis.labels,a=this.graphics.group({class:\"apexcharts-xaxis\"}),s=m.getPolygonPos(this.size,this.dataPointsLen);return e.globals.labels.forEach((function(r,o){var n=e.config.xaxis.labels.formatter,l=new G(t.ctx);if(s[o]){var h=t.getTextPos(s[o],t.size),c=n(r,{seriesIndex:-1,dataPointIndex:o,w:e});l.plotDataLabelsText({x:h.newX,y:h.newY,text:c,textAnchor:h.textAnchor,i:o,j:o,parent:a,className:\"apexcharts-xaxis-label\",color:Array.isArray(i.style.colors)&&i.style.colors[o]?i.style.colors[o]:\"#a8a8a8\",dataLabelsConfig:g({textAnchor:h.textAnchor,dropShadow:{enabled:!1}},i),offsetCorrection:!1}).on(\"click\",(function(i){if(\"function\"==typeof e.config.chart.events.xAxisLabelClick){var a=Object.assign({},e,{labelIndex:o});e.config.chart.events.xAxisLabelClick(i,t.ctx,a)}}))}})),a}},{key:\"createPaths\",value:function(t,e){var i=this,a=[],s=[],r=[],o=[];if(t.length){s=[this.graphics.move(e.x,e.y)],o=[this.graphics.move(e.x,e.y)];var n=this.graphics.move(t[0].x,t[0].y),l=this.graphics.move(t[0].x,t[0].y);t.forEach((function(e,a){n+=i.graphics.line(e.x,e.y),l+=i.graphics.line(e.x,e.y),a===t.length-1&&(n+=\"Z\",l+=\"Z\")})),a.push(n),r.push(l)}return{linePathsFrom:s,linePathsTo:a,areaPathsFrom:o,areaPathsTo:r}}},{key:\"getTextPos\",value:function(t,e){var i=\"middle\",a=t.x,s=t.y;return Math.abs(t.x)>=10?t.x>0?(i=\"start\",a+=10):t.x<0&&(i=\"end\",a-=10):i=\"middle\",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:\"getPreviousPath\",value:function(t){for(var e=this.w,i=null,a=0;a<e.globals.previousPaths.length;a++){var s=e.globals.previousPaths[a];s.paths.length>0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:\"getDataPointsPos\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s<i;s++){var r={};r.x=t[s]*Math.sin(e[s]),r.y=-t[s]*Math.cos(e[s]),a.push(r)}return a}}]),t}(),Xt=function(t){h(r,Tt);var a=o(r);function r(t){var s;i(this,r),(s=a.call(this,t)).ctx=t,s.w=t.w,s.animBeginArr=[0],s.animDur=0;var o=s.w;return s.startAngle=o.config.plotOptions.radialBar.startAngle,s.endAngle=o.config.plotOptions.radialBar.endAngle,s.totalAngle=Math.abs(o.config.plotOptions.radialBar.endAngle-o.config.plotOptions.radialBar.startAngle),s.trackStartAngle=o.config.plotOptions.radialBar.track.startAngle,s.trackEndAngle=o.config.plotOptions.radialBar.track.endAngle,s.barLabels=s.w.config.plotOptions.radialBar.barLabels,s.donutDataLabels=s.w.config.plotOptions.radialBar.dataLabels,s.radialDataLabels=s.donutDataLabels,s.trackStartAngle||(s.trackStartAngle=s.startAngle),s.trackEndAngle||(s.trackEndAngle=s.endAngle),360===s.endAngle&&(s.endAngle=359.99),s.margin=parseInt(o.config.plotOptions.radialBar.track.margin,10),s.onBarLabelClick=s.onBarLabelClick.bind(e(s)),s}return s(r,[{key:\"draw\",value:function(t){var e=this.w,i=new k(this.ctx),a=i.group({class:\"apexcharts-radialbar\"});if(e.globals.noData)return a;var s=i.group(),r=this.defaultSize/2,o=e.globals.gridWidth/2,n=this.defaultSize/2.05;e.config.chart.sparkline.enabled||(n=n-e.config.stroke.width-e.config.chart.dropShadow.blur);var l=e.globals.fill.colors;if(e.config.plotOptions.radialBar.track.show){var h=this.drawTracks({size:n,centerX:o,centerY:r,colorArr:l,series:t});s.add(h)}var c=this.drawArcs({size:n,centerX:o,centerY:r,colorArr:l,series:t}),d=360;e.config.plotOptions.radialBar.startAngle<0&&(d=this.totalAngle);var g=(360-d)/360;if(e.globals.radialSize=n-n*g,this.radialDataLabels.value.show){var u=Math.max(this.radialDataLabels.value.offsetY,this.radialDataLabels.name.offsetY);e.globals.radialSize+=u*g}return s.add(c.g),\"front\"===e.config.plotOptions.radialBar.hollow.position&&(c.g.add(c.elHollow),c.dataLabels&&c.g.add(c.dataLabels)),a.add(s),a}},{key:\"drawTracks\",value:function(t){var e=this.w,i=new k(this.ctx),a=i.group({class:\"apexcharts-tracks\"}),s=new w(this.ctx),r=new N(this.ctx),o=this.getStrokeWidth(t);t.size=t.size-o/2;for(var n=0;n<t.series.length;n++){var l=i.group({class:\"apexcharts-radialbar-track apexcharts-track\"});a.add(l),l.attr({rel:n+1}),t.size=t.size-o-this.margin;var h=e.config.plotOptions.radialBar.track,c=r.fillPath({seriesNumber:0,size:t.size,fillColors:Array.isArray(h.background)?h.background[n]:h.background,solid:!0}),d=this.trackStartAngle,g=this.trackEndAngle;Math.abs(g)+Math.abs(d)>=360&&(g=360-Math.abs(this.startAngle)-.1);var u=i.drawPath({d:\"\",stroke:c,strokeWidth:o*parseInt(h.strokeWidth,10)/100,fill:\"none\",strokeOpacity:h.opacity,classes:\"apexcharts-radialbar-area\"});if(h.dropShadow.enabled){var f=h.dropShadow;s.dropShadow(u,f)}l.add(u),u.attr(\"id\",\"apexcharts-radialbarTrack-\"+n),this.animatePaths(u,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:n,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:\"drawArcs\",value:function(t){var e=this.w,i=new k(this.ctx),a=new N(this.ctx),s=new w(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var n=e.config.plotOptions.radialBar.hollow.background,l=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(n=this.drawHollowImage(t,r,l,n));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:n||\"transparent\"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var g=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(g=0);var u=null;if(this.radialDataLabels.show){var f=e.globals.dom.Paper.select(\".apexcharts-datalabels-group\").members[0];u=this.renderInnerDataLabels(f,this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:g})}\"back\"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),u&&r.add(u));var p=!1;e.config.plotOptions.radialBar.inverseOrder&&(p=!0);for(var x=p?t.series.length-1:0;p?x>=0:x<t.series.length;p?x--:x++){var b=i.group({class:\"apexcharts-series apexcharts-radial-series\",seriesName:m.escapeString(e.globals.seriesNames[x])});r.add(b),b.attr({rel:x+1,\"data:realIndex\":x}),this.ctx.series.addCollapsedClassToSeries(b,x),t.size=t.size-o-this.margin;var v=a.fillPath({seriesNumber:x,size:t.size,value:t.series[x]}),y=this.startAngle,A=void 0,S=m.negToZero(t.series[x]>100?100:t.series[x])/100,C=Math.round(this.totalAngle*S)+this.startAngle,L=void 0;e.globals.dataChanged&&(A=this.startAngle,L=Math.round(this.totalAngle*m.negToZero(e.globals.previousPaths[x])/100)+A),Math.abs(C)+Math.abs(y)>360&&(C-=.01),Math.abs(L)+Math.abs(A)>360&&(L-=.01);var P=C-y,M=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[x]:e.config.stroke.dashArray,I=i.drawPath({d:\"\",stroke:v,strokeWidth:o,fill:\"none\",fillOpacity:e.config.fill.opacity,classes:\"apexcharts-radialbar-area apexcharts-radialbar-slice-\"+x,strokeDashArray:M});if(k.setAttrs(I.node,{\"data:angle\":P,\"data:value\":t.series[x]}),e.config.chart.dropShadow.enabled){var T=e.config.chart.dropShadow;s.dropShadow(I,T,x)}if(s.setSelectionFilter(I,0,x),this.addListeners(I,this.radialDataLabels),b.add(I),I.attr({index:0,j:x}),this.barLabels.enabled){var z=m.polarToCartesian(t.centerX,t.centerY,t.size,y),X=this.barLabels.formatter(e.globals.seriesNames[x],{seriesIndex:x,w:e}),E=[\"apexcharts-radialbar-label\"];this.barLabels.onClick||E.push(\"apexcharts-no-click\");var Y=this.barLabels.useSeriesColors?e.globals.colors[x]:e.config.chart.foreColor;Y||(Y=e.config.chart.foreColor);var R=z.x+this.barLabels.offsetX,F=z.y+this.barLabels.offsetY,D=i.drawText({x:R,y:F,text:X,textAnchor:\"end\",dominantBaseline:\"middle\",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:Y,cssClass:E.join(\" \")});D.on(\"click\",this.onBarLabelClick),D.attr({rel:x+1}),0!==y&&D.attr({\"transform-origin\":\"\".concat(R,\" \").concat(F),transform:\"rotate(\".concat(y,\" 0 0)\")}),b.add(D)}var H=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(H=e.config.chart.animations.speed),e.globals.dataChanged&&(H=e.config.chart.animations.dynamicAnimation.speed),this.animDur=H/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(I,{centerX:t.centerX,centerY:t.centerY,endAngle:C,startAngle:y,prevEndAngle:L,prevStartAngle:A,size:t.size,i:x,totalItems:2,animBeginArr:this.animBeginArr,dur:H,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:u}}},{key:\"drawHollow\",value:function(t){var e=new k(this.ctx).drawCircle(2*t.size);return e.attr({class:\"apexcharts-radialbar-hollow\",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:\"drawHollowImage\",value:function(t,e,i,a){var s=this.w,r=new N(this.ctx),o=m.randomId(),n=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:n,patternID:\"pattern\".concat(s.globals.cuid).concat(o)}),a=\"url(#pattern\".concat(s.globals.cuid).concat(o,\")\");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:\"getStrokeWidth\",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}},{key:\"onBarLabelClick\",value:function(t){var e=parseInt(t.target.getAttribute(\"rel\"),10)-1,i=this.barLabels.onClick,a=this.w;i&&i(a.globals.seriesNames[e],{w:a,seriesIndex:e})}}]),r}(),Et=function(t){h(a,St);var e=o(a);function a(){return i(this,a),e.apply(this,arguments)}return s(a,[{key:\"draw\",value:function(t,e){var i=this.w,a=new k(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=i.globals.seriesRangeStart,this.seriesRangeEnd=i.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var s=a.group({class:\"apexcharts-rangebar-series apexcharts-plot-series\"}),r=0;r<t.length;r++){var o,n,l,h,c=void 0,d=void 0,u=i.globals.comboCharts?e[r]:r,f=this.barHelpers.getGroupIndex(u).columnGroupIndex,p=a.group({class:\"apexcharts-series\",seriesName:m.escapeString(i.globals.seriesNames[u]),rel:r+1,\"data:realIndex\":u});this.ctx.series.addCollapsedClassToSeries(p,u),t[r].length>0&&(this.visibleI=this.visibleI+1);var x=0,b=0,v=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[u][0],v=u);var y=this.barHelpers.initialPositions();d=y.y,h=y.zeroW,c=y.x,b=y.barWidth,x=y.barHeight,o=y.xDivision,n=y.yDivision,l=y.zeroH;for(var w=a.group({class:\"apexcharts-datalabels\",\"data:realIndex\":u}),A=a.group({class:\"apexcharts-rangebar-goals-markers\"}),S=0;S<i.globals.dataPoints;S++){var C=this.barHelpers.getStrokeWidth(r,S,u),L=this.seriesRangeStart[r][S],P=this.seriesRangeEnd[r][S],M=null,I=null,T=null,z={x:c,y:d,strokeWidth:C,elSeries:p},X=this.seriesLen;if(i.config.plotOptions.bar.rangeBarGroupRows&&(X=1),void 0===i.config.series[r].data[S])break;if(this.isHorizontal){T=d+x*this.visibleI;var E=(n-x*X)/2;if(i.config.series[r].data[S].x){var Y=this.detectOverlappingBars({i:r,j:S,barYPosition:T,srty:E,barHeight:x,yDivision:n,initPositions:y});x=Y.barHeight,T=Y.barYPosition}b=(M=this.drawRangeBarPaths(g({indexes:{i:r,j:S,realIndex:u},barHeight:x,barYPosition:T,zeroW:h,yDivision:n,y1:L,y2:P},z))).barWidth}else{i.globals.isXNumeric&&(c=(i.globals.seriesX[r][S]-i.globals.minX)/this.xRatio-b/2),I=c+b*this.visibleI;var R=(o-b*X)/2;if(i.config.series[r].data[S].x){var F=this.detectOverlappingBars({i:r,j:S,barXPosition:I,srtx:R,barWidth:b,xDivision:o,initPositions:y});b=F.barWidth,I=F.barXPosition}x=(M=this.drawRangeColumnPaths(g({indexes:{i:r,j:S,realIndex:u,translationsIndex:v},barWidth:b,barXPosition:I,zeroH:l,xDivision:o},z))).barHeight}var D=this.barHelpers.drawGoalLine({barXPosition:M.barXPosition,barYPosition:T,goalX:M.goalX,goalY:M.goalY,barHeight:x,barWidth:b});D&&A.add(D),d=M.y,c=M.x;var H=this.barHelpers.getPathFillColor(t,r,S,u),O=i.globals.stroke.colors[u];this.renderSeries({realIndex:u,pathFill:H,lineFill:O,j:S,i:r,x:c,y:d,y1:L,y2:P,pathFrom:M.pathFrom,pathTo:M.pathTo,strokeWidth:C,elSeries:p,series:t,barHeight:x,barWidth:b,barXPosition:I,barYPosition:T,columnGroupIndex:f,elDataLabelsWrap:w,elGoalsMarkers:A,visibleSeries:this.visibleI,type:\"rangebar\"})}s.add(p)}return s}},{key:\"detectOverlappingBars\",value:function(t){var e=t.i,i=t.j,a=t.barYPosition,s=t.barXPosition,r=t.srty,o=t.srtx,n=t.barHeight,l=t.barWidth,h=t.yDivision,c=t.xDivision,d=t.initPositions,g=this.w,u=[],f=g.config.series[e].data[i].rangeName,p=g.config.series[e].data[i].x,x=Array.isArray(p)?p.join(\" \"):p,b=g.globals.labels.map((function(t){return Array.isArray(t)?t.join(\" \"):t})).indexOf(x),v=g.globals.seriesRange[e].findIndex((function(t){return t.x===x&&t.overlaps.length>0}));return this.isHorizontal?(a=g.config.plotOptions.bar.rangeBarGroupRows?r+h*b:r+n*this.visibleI+h*b,v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(f)>-1&&(a=(n=d.barHeight/u.length)*this.visibleI+h*(100-parseInt(this.barOptions.barHeight,10))/100/2+n*(this.visibleI+u.indexOf(f))+h*b)):(b>-1&&!g.globals.timescaleLabels.length&&(s=g.config.plotOptions.bar.rangeBarGroupRows?o+c*b:o+l*this.visibleI+c*b),v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(f)>-1&&(s=(l=d.barWidth/u.length)*this.visibleI+c*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+u.indexOf(f))+c*b)),{barYPosition:a,barXPosition:s,barHeight:n,barWidth:l}}},{key:\"drawRangeColumnPaths\",value:function(t){var e=t.indexes,i=t.x,a=t.xDivision,s=t.barWidth,r=t.barXPosition,o=t.zeroH,n=this.w,l=e.i,h=e.j,c=e.realIndex,d=e.translationsIndex,g=this.yRatio[d],u=this.getRangeValue(c,h),f=Math.min(u.start,u.end),p=Math.max(u.start,u.end);void 0===this.series[l][h]||null===this.series[l][h]?f=o:(f=o-f/g,p=o-p/g);var x=Math.abs(p-f),b=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:s,y1:f,y2:p,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:c,i:c,j:h,w:n});if(n.globals.isXNumeric){var v=this.getBarXForNumericXAxis({x:i,j:h,realIndex:c,barWidth:s});i=v.x,r=v.barXPosition}else i+=a;return{pathTo:b.pathTo,pathFrom:b.pathFrom,barHeight:x,x:i,y:u.start<0&&u.end<0?f:p,goalY:this.barHelpers.getGoalValues(\"y\",null,o,l,h,d),barXPosition:r}}},{key:\"preventBarOverflow\",value:function(t){var e=this.w;return t<0&&(t=0),t>e.globals.gridWidth&&(t=e.globals.gridWidth),t}},{key:\"drawRangeBarPaths\",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,o=t.barHeight,n=t.barYPosition,l=t.zeroW,h=this.w,c=e.realIndex,d=e.j,g=this.preventBarOverflow(l+a/this.invertedYRatio),u=this.preventBarOverflow(l+s/this.invertedYRatio),f=this.getRangeValue(c,d),p=Math.abs(u-g),x=this.barHelpers.getBarpaths({barYPosition:n,barHeight:o,x1:g,x2:u,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:c,realIndex:c,j:d,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:x.pathTo,pathFrom:x.pathFrom,barWidth:p,x:f.start<0&&f.end<0?g:u,goalX:this.barHelpers.getGoalValues(\"x\",l,null,c,d),y:i}}},{key:\"getRangeValue\",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),a}(),Yt=function(){function t(e){i(this,t),this.w=e.w,this.lineCtx=e}return s(t,[{key:\"sameValueSeriesFix\",value:function(t,e){var i=this.w;if((\"gradient\"===i.config.fill.type||\"gradient\"===i.config.fill.type[t])&&new A(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:\"calculatePoints\",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,o=t.j,n=t.prevY,l=this.w,h=[],c=[];if(0===o){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(m.isNumber(e[r][0])?n+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(m.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(m.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:\"checkPreviousPaths\",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r<s.globals.previousPaths.length;r++){var o=s.globals.previousPaths[r];(\"line\"===o.type||\"area\"===o.type)&&o.paths.length>0&&parseInt(o.realIndex,10)===parseInt(a,10)&&(\"line\"===o.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):\"area\"===o.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:\"determineFirstPrevY\",value:function(t){var e,i,a,s=t.i,r=t.realIndex,o=t.series,n=t.prevY,l=t.lineYPosition,h=t.translationsIndex,c=this.w,d=c.config.chart.stacked&&!c.globals.comboCharts||c.config.chart.stacked&&c.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||\"bar\"===(null===(e=this.w.config.series[r])||void 0===e?void 0:e.type)||\"column\"===(null===(i=this.w.config.series[r])||void 0===i?void 0:i.type));if(void 0!==(null===(a=o[s])||void 0===a?void 0:a[0]))n=(l=d&&s>0?this.lineCtx.prevSeriesY[s-1][0]:this.lineCtx.zeroY)-o[s][0]/this.lineCtx.yRatio[h]+2*(this.lineCtx.isReversed?o[s][0]/this.lineCtx.yRatio[h]:0);else if(d&&s>0&&void 0===o[s][0])for(var g=s-1;g>=0;g--)if(null!==o[g][0]&&void 0!==o[g][0]){n=l=this.lineCtx.prevSeriesY[g][0];break}return{prevY:n,lineYPosition:l}}}]),t}(),Rt=function(t){for(var e,i,a,s,r=function(t){for(var e=[],i=t[0],a=t[1],s=e[0]=Ht(i,a),r=1,o=t.length-1;r<o;r++)i=a,a=t[r+1],e[r]=.5*(s+(s=Ht(i,a)));return e[r]=s,e}(t),o=t.length-1,n=[],l=0;l<o;l++)a=Ht(t[l],t[l+1]),Math.abs(a)<1e-6?r[l]=r[l+1]=0:(s=(e=r[l]/a)*e+(i=r[l+1]/a)*i)>9&&(s=3*a/Math.sqrt(s),r[l]=s*e,r[l+1]=s*i);for(var h=0;h<=o;h++)s=(t[Math.min(o,h+1)][0]-t[Math.max(0,h-1)][0])/(6*(1+r[h]*r[h])),n.push([s||0,r[h]*s||0]);return n},Ft=function(t){var e=Rt(t),i=t[1],a=t[0],s=[],r=e[1],o=e[0];s.push(a,[a[0]+o[0],a[1]+o[1],i[0]-r[0],i[1]-r[1],i[0],i[1]]);for(var n=2,l=e.length;n<l;n++){var h=t[n],c=e[n];s.push([h[0]-c[0],h[1]-c[1],h[0],h[1]])}return s},Dt=function(t,e,i){var a=t.slice(e,i);if(e){if(i-e>1&&a[1].length<6){var s=a[0].length;a[1]=[2*a[0][s-2]-a[0][s-4],2*a[0][s-1]-a[0][s-3]].concat(a[1])}a[0]=a[0].slice(-2)}return a};function Ht(t,e){return(e[1]-t[1])/(e[0]-t[0])}var Ot=function(){function t(e,a,s){i(this,t),this.ctx=e,this.w=e.w,this.xyRatios=a,this.pointsChart=!(\"bubble\"!==this.w.config.chart.type&&\"scatter\"!==this.w.config.chart.type)||s,this.scatter=new B(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new Yt(this),this.markers=new W(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return s(t,[{key:\"draw\",value:function(t,e,i,a){var s,r=this.w,o=new k(this.ctx),n=r.globals.comboCharts?e:r.config.chart.type,l=o.group({class:\"apexcharts-\".concat(n,\"-series apexcharts-plot-series\")}),h=new A(this.ctx,r);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=h.getLogSeries(t),this.yRatio=h.getLogYRatios(this.yRatio),this.prevSeriesY=[];for(var c=[],d=0;d<t.length;d++){t=this.lineHelpers.sameValueSeriesFix(d,t);var u=r.globals.comboCharts?i[d]:d,f=this.yRatio.length>1?u:0;this._initSerieVariables(t,d,u);var p=[],x=[],b=[],v=r.globals.padHorizontal+this.categoryAxisCorrection;this.ctx.series.addCollapsedClassToSeries(this.elSeries,u),r.globals.isXNumeric&&r.globals.seriesX.length>0&&(v=(r.globals.seriesX[u][0]-r.globals.minX)/this.xRatio),b.push(v);var m,y=v,w=void 0,S=y,C=this.zeroY,L=this.zeroY;C=this.lineHelpers.determineFirstPrevY({i:d,realIndex:u,series:t,prevY:C,lineYPosition:0,translationsIndex:f}).prevY,\"monotoneCubic\"===r.config.stroke.curve&&null===t[d][0]?p.push(null):p.push(C),m=C;\"rangeArea\"===n&&(w=L=this.lineHelpers.determineFirstPrevY({i:d,realIndex:u,series:a,prevY:L,lineYPosition:0,translationsIndex:f}).prevY,x.push(null!==p[0]?L:null));var P=this._calculatePathsFrom({type:n,series:t,i:d,realIndex:u,translationsIndex:f,prevX:S,prevY:C,prevY2:L}),M=[p[0]],I=[x[0]],T={type:n,series:t,realIndex:u,translationsIndex:f,i:d,x:v,y:1,pX:y,pY:m,pathsFrom:P,linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:b,yArrj:p,y2Arrj:x,seriesRangeEnd:a},z=this._iterateOverDataPoints(g(g({},T),{},{iterations:\"rangeArea\"===n?t[d].length-1:void 0,isRangeStart:!0}));if(\"rangeArea\"===n){for(var X=this._calculatePathsFrom({series:a,i:d,realIndex:u,prevX:S,prevY:L}),E=this._iterateOverDataPoints(g(g({},T),{},{series:a,xArrj:[v],yArrj:M,y2Arrj:I,pY:w,areaPaths:z.areaPaths,pathsFrom:X,iterations:a[d].length-1,isRangeStart:!1})),Y=z.linePaths.length/2,R=0;R<Y;R++)z.linePaths[R]=E.linePaths[R+Y]+z.linePaths[R];z.linePaths.splice(Y),z.pathFromLine=E.pathFromLine+z.pathFromLine}else z.pathFromArea+=\"z\";this._handlePaths({type:n,realIndex:u,i:d,paths:z}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),c.push(this.elSeries)}if(void 0!==(null===(s=r.config.series[0])||void 0===s?void 0:s.zIndex)&&c.sort((function(t,e){return Number(t.node.getAttribute(\"zIndex\"))-Number(e.node.getAttribute(\"zIndex\"))})),r.config.chart.stacked)for(var F=c.length-1;F>=0;F--)l.add(c[F]);else for(var D=0;D<c.length;D++)l.add(c[D]);return l}},{key:\"_initSerieVariables\",value:function(t,e,i){var a=this.w,s=new k(this.ctx);this.xDivision=a.globals.gridWidth/(a.globals.dataPoints-(\"on\"===a.config.xaxis.tickPlacement?1:0)),this.strokeWidth=Array.isArray(a.config.stroke.width)?a.config.stroke.width[i]:a.config.stroke.width;var r=0;this.yRatio.length>1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[i],r=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[r]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[r]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||\"end\"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:\"apexcharts-series\",zIndex:void 0!==a.config.series[i].zIndex?a.config.series[i].zIndex:i,seriesName:m.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:\"apexcharts-series-markers-wrap\",\"data:realIndex\":i}),this.elDataLabelsWrap=s.group({class:\"apexcharts-datalabels\",\"data:realIndex\":i});var o=t[e].length===a.globals.dataPoints;this.elSeries.attr({\"data:longestSeries\":o,rel:e+1,\"data:realIndex\":i}),this.appendPathFrom=!0}},{key:\"_calculatePathsFrom\",value:function(t){var e,i,a,s,r=t.type,o=t.series,n=t.i,l=t.realIndex,h=t.translationsIndex,c=t.prevX,d=t.prevY,g=t.prevY2,u=this.w,f=new k(this.ctx);if(null===o[n][0]){for(var p=0;p<o[n].length;p++)if(null!==o[n][p]){c=this.xDivision*p,d=this.zeroY-o[n][p]/this.yRatio[h],e=f.move(c,d),i=f.move(c,this.areaBottomY);break}}else e=f.move(c,d),\"rangeArea\"===r&&(e=f.move(c,g)+f.line(c,d)),i=f.move(c,this.areaBottomY)+f.line(c,d);if(a=f.move(0,this.zeroY)+f.line(0,this.zeroY),s=f.move(0,this.zeroY)+f.line(0,this.zeroY),u.globals.previousPaths.length>0){var x=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=x.pathFromLine,s=x.pathFromArea}return{prevX:c,prevY:d,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:\"_handlePaths\",value:function(t){var e=t.type,i=t.realIndex,a=t.i,s=t.paths,r=this.w,o=new k(this.ctx),n=new N(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj;var l=r.config.forecastDataPoints;if(l.count>0&&\"rangeArea\"!==e){var h=r.globals.seriesXvalues[i][r.globals.seriesXvalues[i].length-l.count-1],c=o.drawRect(h,0,r.globals.gridWidth,r.globals.gridHeight,0);r.globals.dom.elForecastMask.appendChild(c.node);var d=o.drawRect(0,0,h,r.globals.gridHeight,0);r.globals.dom.elNonForecastMask.appendChild(d.node)}this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var u={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(e)};if(\"area\"===e)for(var f=n.fillPath({seriesNumber:i}),p=0;p<s.areaPaths.length;p++){var x=o.renderPaths(g(g({},u),{},{pathFrom:s.pathFromArea,pathTo:s.areaPaths[p],stroke:\"none\",strokeWidth:0,strokeLineCap:null,fill:f}));this.elSeries.add(x)}if(r.config.stroke.show&&!this.pointsChart){var b=null;if(\"line\"===e)b=n.fillPath({seriesNumber:i,i:a});else if(\"solid\"===r.config.stroke.fill.type)b=r.globals.stroke.colors[i];else{var v=r.config.fill;r.config.fill=r.config.stroke.fill,b=n.fillPath({seriesNumber:i,i:a}),r.config.fill=v}for(var m=0;m<s.linePaths.length;m++){var y=b;\"rangeArea\"===e&&(y=n.fillPath({seriesNumber:i}));var w=g(g({},u),{},{pathFrom:s.pathFromLine,pathTo:s.linePaths[m],stroke:b,strokeWidth:this.strokeWidth,strokeLineCap:r.config.stroke.lineCap,fill:\"rangeArea\"===e?y:\"none\"}),A=o.renderPaths(w);if(this.elSeries.add(A),A.attr(\"fill-rule\",\"evenodd\"),l.count>0&&\"rangeArea\"!==e){var S=o.renderPaths(w);S.node.setAttribute(\"stroke-dasharray\",l.dashArray),l.strokeWidth&&S.node.setAttribute(\"stroke-width\",l.strokeWidth),this.elSeries.add(S),S.attr(\"clip-path\",\"url(#forecastMask\".concat(r.globals.cuid,\")\")),A.attr(\"clip-path\",\"url(#nonForecastMask\".concat(r.globals.cuid,\")\"))}}}}},{key:\"_iterateOverDataPoints\",value:function(t){var e,i,a=this,s=t.type,r=t.series,o=t.iterations,n=t.realIndex,l=t.translationsIndex,h=t.i,c=t.x,d=t.y,g=t.pX,u=t.pY,f=t.pathsFrom,p=t.linePaths,x=t.areaPaths,b=t.seriesIndex,v=t.lineYPosition,y=t.xArrj,w=t.yArrj,A=t.y2Arrj,S=t.isRangeStart,C=t.seriesRangeEnd,L=this.w,P=new k(this.ctx),M=this.yRatio,I=f.prevY,T=f.linePath,z=f.areaPath,X=f.pathFromLine,E=f.pathFromArea,Y=m.isNumber(L.globals.minYArr[n])?L.globals.minYArr[n]:L.globals.minY;o||(o=L.globals.dataPoints>1?L.globals.dataPoints-1:L.globals.dataPoints);var R=function(t,e){return e-t/M[l]+2*(a.isReversed?t/M[l]:0)},F=d,D=L.config.chart.stacked&&!L.globals.comboCharts||L.config.chart.stacked&&L.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||\"bar\"===(null===(e=this.w.config.series[n])||void 0===e?void 0:e.type)||\"column\"===(null===(i=this.w.config.series[n])||void 0===i?void 0:i.type)),H=L.config.stroke.curve;Array.isArray(H)&&(H=Array.isArray(b)?H[b[h]]:H[h]);for(var O,N=0,W=0;W<o;W++){var B=void 0===r[h][W+1]||null===r[h][W+1];if(L.globals.isXNumeric){var G=L.globals.seriesX[n][W+1];void 0===L.globals.seriesX[n][W+1]&&(G=L.globals.seriesX[n][o-1]),c=(G-L.globals.minX)/this.xRatio}else c+=this.xDivision;if(D)if(h>0&&L.globals.collapsedSeries.length<L.config.series.length-1){v=this.prevSeriesY[function(t){for(var e=t;e>0;e--){if(!(L.globals.collapsedSeriesIndices.indexOf((null==b?void 0:b[e])||e)>-1))return e;e--}return 0}(h-1)][W+1]}else v=this.zeroY;else v=this.zeroY;B?d=R(Y,v):(d=R(r[h][W+1],v),\"rangeArea\"===s&&(F=R(C[h][W+1],v))),y.push(c),!B||\"smooth\"!==L.config.stroke.curve&&\"monotoneCubic\"!==L.config.stroke.curve?(w.push(d),A.push(F)):(w.push(null),A.push(null));var V=this.lineHelpers.calculatePoints({series:r,x:c,y:d,realIndex:n,i:h,j:W,prevY:I}),j=this._createPaths({type:s,series:r,i:h,realIndex:n,j:W,x:c,y:d,y2:F,xArrj:y,yArrj:w,y2Arrj:A,pX:g,pY:u,pathState:N,segmentStartX:O,linePath:T,areaPath:z,linePaths:p,areaPaths:x,curve:H,isRangeStart:S});x=j.areaPaths,p=j.linePaths,g=j.pX,u=j.pY,N=j.pathState,O=j.segmentStartX,z=j.areaPath,T=j.linePath,!this.appendPathFrom||\"monotoneCubic\"===H&&\"rangeArea\"===s||(X+=P.line(c,this.zeroY),E+=P.line(c,this.zeroY)),this.handleNullDataPoints(r,V,h,W,n),this._handleMarkersAndLabels({type:s,pointsPos:V,i:h,j:W,realIndex:n,isRangeStart:S})}return{yArrj:w,xArrj:y,pathFromArea:E,areaPaths:x,pathFromLine:X,linePaths:p,linePath:T,areaPath:z}}},{key:\"_handleMarkersAndLabels\",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,o=t.realIndex,n=this.w,l=new G(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:o,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{n.globals.series[s].length>1&&this.elPointsMain.node.classList.add(\"apexcharts-element-hidden\");var h=this.markers.plotChartMarkers(i,o,r+1);null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:o,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:\"_createPaths\",value:function(t){var e=t.type,i=t.series,a=t.i;t.realIndex;var s,r=t.j,o=t.x,n=t.y,l=t.xArrj,h=t.yArrj,c=t.y2,d=t.y2Arrj,g=t.pX,u=t.pY,f=t.pathState,p=t.segmentStartX,x=t.linePath,b=t.areaPath,v=t.linePaths,m=t.areaPaths,y=t.curve,w=t.isRangeStart,A=new k(this.ctx),S=this.areaBottomY,C=\"rangeArea\"===e,L=\"rangeArea\"===e&&w;switch(y){case\"monotoneCubic\":var P=w?h:d;switch(f){case 0:if(null===P[r+1])break;f=1;case 1:if(!(C?l.length===i[a].length:r===i[a].length-2))break;case 2:var M=w?l:l.slice().reverse(),I=w?P:P.slice().reverse(),T=(s=I,M.map((function(t,e){return[t,s[e]]})).filter((function(t){return null!==t[1]}))),z=T.length>1?Ft(T):T,X=[];C&&(L?m=T:X=m.reverse());var E=0,Y=0;if(function(t,e){for(var i=function(t){var e=[],i=0;return t.forEach((function(t){null!==t?i++:i>0&&(e.push(i),i=0)})),i>0&&e.push(i),e}(t),a=[],s=0,r=0;s<i.length;r+=i[s++])a[s]=Dt(e,r,r+i[s]);return a}(I,z).forEach((function(t){E++;var e=function(t){for(var e=\"\",i=0;i<t.length;i++){var a=t[i],s=a.length;s>4?(e+=\"C\".concat(a[0],\", \").concat(a[1]),e+=\", \".concat(a[2],\", \").concat(a[3]),e+=\", \".concat(a[4],\", \").concat(a[5])):s>2&&(e+=\"S\".concat(a[0],\", \").concat(a[1]),e+=\", \".concat(a[2],\", \").concat(a[3]))}return e}(t),i=Y,a=(Y+=t.length)-1;L?x=A.move(T[i][0],T[i][1])+e:C?x=A.move(X[i][0],X[i][1])+A.line(T[i][0],T[i][1])+e+A.line(X[a][0],X[a][1]):(x=A.move(T[i][0],T[i][1])+e,b=x+A.line(T[a][0],S)+A.line(T[i][0],S)+\"z\",m.push(b)),v.push(x)})),C&&E>1&&!L){var R=v.slice(E).reverse();v.splice(E),R.forEach((function(t){return v.push(t)}))}f=0}break;case\"smooth\":var F=.35*(o-g);if(null===i[a][r])f=0;else switch(f){case 0:if(p=g,x=L?A.move(g,d[r])+A.line(g,u):A.move(g,u),b=A.move(g,u),null===i[a][r+1]){v.push(x),m.push(b);break}if(f=1,r<i[a].length-2){var D=A.curve(g+F,u,o-F,n,o,n);x+=D,b+=D;break}case 1:if(null===i[a][r+1])x+=L?A.line(g,c):A.move(g,u),b+=A.line(g,S)+A.line(p,S)+\"z\",v.push(x),m.push(b),f=-1;else{var H=A.curve(g+F,u,o-F,n,o,n);x+=H,b+=H,r>=i[a].length-2&&(L&&(x+=A.curve(o,n,o,n,o,c)+A.move(o,c)),b+=A.curve(o,n,o,n,o,S)+A.line(p,S)+\"z\",v.push(x),m.push(b),f=-1)}}g=o,u=n;break;default:var O=function(t,e,i){var a=[];switch(t){case\"stepline\":a=A.line(e,null,\"H\")+A.line(null,i,\"V\");break;case\"linestep\":a=A.line(null,i,\"V\")+A.line(e,null,\"H\");break;case\"straight\":a=A.line(e,i)}return a};if(null===i[a][r])f=0;else switch(f){case 0:if(p=g,x=L?A.move(g,d[r])+A.line(g,u):A.move(g,u),b=A.move(g,u),null===i[a][r+1]){v.push(x),m.push(b);break}if(f=1,r<i[a].length-2){var N=O(y,o,n);x+=N,b+=N;break}case 1:if(null===i[a][r+1])x+=L?A.line(g,c):A.move(g,u),b+=A.line(g,S)+A.line(p,S)+\"z\",v.push(x),m.push(b),f=-1;else{var W=O(y,o,n);x+=W,b+=W,r>=i[a].length-2&&(L&&(x+=A.line(o,c)),b+=A.line(o,S)+A.line(p,S)+\"z\",v.push(x),m.push(b),f=-1)}}g=o,u=n}return{linePaths:v,areaPaths:m,pX:g,pY:u,pathState:f,segmentStartX:p,linePath:x,areaPath:b}}},{key:\"handleNullDataPoints\",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var o=this.strokeWidth-r.config.markers.strokeWidth/2;o>0||(o=0);var n=this.markers.plotChartMarkers(e,s,a+1,o,!0);null!==n&&this.elPointsMain.add(n)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,o=r(t)/this.height,n=r(t)/this.width;if(this.width>=this.height)for(e=0;e<t.length;e++)i.push([a,s,a+o,s+t[e]/o]),s+=t[e]/o;else for(e=0;e<t.length;e++)i.push([a,s,a+t[e]/n,s+n]),a+=t[e]/n;return i},this.cutArea=function(e){var i;if(this.width>=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,o=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,o)}return i}}function e(e,a,s,o,n){o=void 0===o?0:o,n=void 0===n?0:n;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i<t.length;i++)a[i]=t[i]*s;return a}(e,a*s),[],new t(o,n,a,s),[]);return function(t){var e,i,a=[];for(e=0;e<t.length;e++)for(i=0;i<t[e].length;i++)a.push(t[e][i]);return a}(l)}function i(t,e,s,o){var n,l,h;if(0!==t.length)return n=s.shortestEdge(),function(t,e,i){var s;if(0===t.length)return!0;(s=t.slice()).push(e);var r=a(t,i),o=a(s,i);return r>=o}(e,l=t[0],n)?(e.push(l),i(t.slice(1),e,s,o)):(h=s.cutArea(r(e),o),o.push(s.getCoordinates(e)),i(t,[],h,o)),o;o.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;e<t.length;e++)i+=t[e];return i}function o(t){var e,i=0;if(s(t[0]))for(e=0;e<t.length;e++)i+=o(t[e]);else i=r(t);return i}return function t(i,a,r,n,l){n=void 0===n?0:n,l=void 0===l?0:l;var h,c,d=[],g=[];if(s(i[0])){for(c=0;c<i.length;c++)d[c]=o(i[c]);for(h=e(d,a,r,n,l),c=0;c<i.length;c++)g.push(t(i[c],h[c][2]-h[c][0],h[c][3]-h[c][1],h[c][0],h[c][1]))}else g=e(i,a,r,n,l);return g}}();var Nt,Wt,Bt=function(){function t(e,a){i(this,t),this.ctx=e,this.w=e.w,this.strokeWidth=this.w.config.stroke.width,this.helpers=new Pt(e),this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.labels=[]}return s(t,[{key:\"draw\",value:function(t){var e=this,i=this.w,a=new k(this.ctx),s=new N(this.ctx),r=a.group({class:\"apexcharts-treemap\"});if(i.globals.noData)return r;var o=[];return t.forEach((function(t){var e=t.map((function(t){return Math.abs(t)}));o.push(e)})),this.negRange=this.helpers.checkColorRange(),i.config.series.forEach((function(t,i){t.data.forEach((function(t){Array.isArray(e.labels[i])||(e.labels[i]=[]),e.labels[i].push(t.x)}))})),window.TreemapSquared.generate(o,i.globals.gridWidth,i.globals.gridHeight).forEach((function(o,n){var l=a.group({class:\"apexcharts-series apexcharts-treemap-series\",seriesName:m.escapeString(i.globals.seriesNames[n]),rel:n+1,\"data:realIndex\":n});if(i.config.chart.dropShadow.enabled){var h=i.config.chart.dropShadow;new w(e.ctx).dropShadow(r,h,n)}var c=a.group({class:\"apexcharts-data-labels\"});o.forEach((function(r,o){var h=r[0],c=r[1],d=r[2],g=r[3],u=a.drawRect(h,c,d-h,g-c,i.config.plotOptions.treemap.borderRadius,\"#fff\",1,e.strokeWidth,i.config.plotOptions.treemap.useFillColorAsStroke?p:i.globals.stroke.colors[n]);u.attr({cx:h,cy:c,index:n,i:n,j:o,width:d-h,height:g-c});var f=e.helpers.getShadeColor(i.config.chart.type,n,o,e.negRange),p=f.color;void 0!==i.config.series[n].data[o]&&i.config.series[n].data[o].fillColor&&(p=i.config.series[n].data[o].fillColor);var x=s.fillPath({color:p,seriesNumber:n,dataPointIndex:o});u.node.classList.add(\"apexcharts-treemap-rect\"),u.attr({fill:x}),e.helpers.addListeners(u);var b={x:h+(d-h)/2,y:c+(g-c)/2,width:0,height:0},v={x:h,y:c,width:d-h,height:g-c};if(i.config.chart.animations.enabled&&!i.globals.dataChanged){var m=1;i.globals.resized||(m=i.config.chart.animations.speed),e.animateTreemap(u,b,v,m)}if(i.globals.dataChanged){var y=1;e.dynamicAnim.enabled&&i.globals.shouldAnimate&&(y=e.dynamicAnim.speed,i.globals.previousPaths[n]&&i.globals.previousPaths[n][o]&&i.globals.previousPaths[n][o].rect&&(b=i.globals.previousPaths[n][o].rect),e.animateTreemap(u,b,v,y))}var w=e.getFontSize(r),k=i.config.dataLabels.formatter(e.labels[n][o],{value:i.globals.series[n][o],seriesIndex:n,dataPointIndex:o,w:i});\"truncate\"===i.config.plotOptions.treemap.dataLabels.format&&(w=parseInt(i.config.dataLabels.style.fontSize,10),k=e.truncateLabels(k,w,h,c,d,g));var A=null;i.globals.series[n][o]&&(A=e.helpers.calculateDataLabels({text:k,x:(h+d)/2,y:(c+g)/2+e.strokeWidth/2+w/3,i:n,j:o,colorProps:f,fontSize:w,series:t})),i.config.dataLabels.enabled&&A&&e.rotateToFitLabel(A,w,k,h,c,d,g),l.add(u),null!==A&&l.add(A)})),l.add(c),r.add(l)})),r}},{key:\"getFontSize\",value:function(t){var e=this.w;var i,a,s,r,o=function t(e){var i,a=0;if(Array.isArray(e[0]))for(i=0;i<e.length;i++)a+=t(e[i]);else for(i=0;i<e.length;i++)a+=e[i].length;return a}(this.labels)/function t(e){var i,a=0;if(Array.isArray(e[0]))for(i=0;i<e.length;i++)a+=t(e[i]);else for(i=0;i<e.length;i++)a+=1;return a}(this.labels);return i=t[2]-t[0],a=t[3]-t[1],s=i*a,r=Math.pow(s,.5),Math.min(r/o,parseInt(e.config.dataLabels.style.fontSize,10))}},{key:\"rotateToFitLabel\",value:function(t,e,i,a,s,r,o){var n=new k(this.ctx),l=n.getTextRects(i,e);if(l.width+this.w.config.stroke.width+5>r-a&&l.width<=o-s){var h=n.rotateAroundCenter(t.node);t.node.setAttribute(\"transform\",\"rotate(-90 \".concat(h.x,\" \").concat(h.y,\") translate(\").concat(l.height/3,\")\"))}}},{key:\"truncateLabels\",value:function(t,e,i,a,s,r){var o=new k(this.ctx),n=o.getTextRects(t,e).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,l=o.getTextBasedOnMaxWidth({text:t,maxWidth:n,fontSize:e});return t.length!==l.length&&n/e<5?\"\":l}},{key:\"animateTreemap\",value:function(t,e,i,a){var s=new y(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}]),t}(),Gt=86400,Vt=10/Gt,jt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return s(t,[{key:\"calculateTimeScaleTicks\",value:function(t,e){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new L(this.ctx),r=(e-t)/864e5;this.determineInterval(r),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,r<Vt?a.globals.disableZoomIn=!0:r>5e4&&(a.globals.disableZoomOut=!0);var o=s.getTimeUnitsfromTimestamp(t,e,this.utc),n=a.globals.gridWidth/r,l=n/24,h=l/60,c=h/60,d=Math.floor(24*r),u=Math.floor(1440*r),f=Math.floor(r*Gt),p=Math.floor(r),x=Math.floor(r/30),b=Math.floor(r/365),v={minMillisecond:o.minMillisecond,minSecond:o.minSecond,minMinute:o.minMinute,minHour:o.minHour,minDate:o.minDate,minMonth:o.minMonth,minYear:o.minYear},m={firstVal:v,currentMillisecond:v.minMillisecond,currentSecond:v.minSecond,currentMinute:v.minMinute,currentHour:v.minHour,currentMonthDate:v.minDate,currentDate:v.minDate,currentMonth:v.minMonth,currentYear:v.minYear,daysWidthOnXAxis:n,hoursWidthOnXAxis:l,minutesWidthOnXAxis:h,secondsWidthOnXAxis:c,numberOfSeconds:f,numberOfMinutes:u,numberOfHours:d,numberOfDays:p,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case\"years\":this.generateYearScale(m);break;case\"months\":case\"half_year\":this.generateMonthScale(m);break;case\"months_days\":case\"months_fortnight\":case\"days\":case\"week_days\":this.generateDayScale(m);break;case\"hours\":this.generateHourScale(m);break;case\"minutes_fives\":case\"minutes\":this.generateMinuteScale(m);break;case\"seconds_tens\":case\"seconds_fives\":case\"seconds\":this.generateSecondScale(m)}var y=this.timeScaleArray.map((function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return\"month\"===t.unit?g(g({},e),{},{day:1,value:t.value+1}):\"day\"===t.unit||\"hour\"===t.unit?g(g({},e),{},{value:t.value}):\"minute\"===t.unit?g(g({},e),{},{value:t.value,minute:t.value}):\"second\"===t.unit?g(g({},e),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,s=Math.ceil(a.globals.gridWidth/120),r=t.value;void 0!==a.config.xaxis.tickAmount&&(s=a.config.xaxis.tickAmount),y.length>s&&(e=Math.floor(y.length/s));var o=!1,n=!1;switch(i.tickInterval){case\"years\":\"year\"===t.unit&&(o=!0);break;case\"half_year\":e=7,\"year\"===t.unit&&(o=!0);break;case\"months\":e=1,\"year\"===t.unit&&(o=!0);break;case\"months_fortnight\":e=15,\"year\"!==t.unit&&\"month\"!==t.unit||(o=!0),30===r&&(n=!0);break;case\"months_days\":e=10,\"month\"===t.unit&&(o=!0),30===r&&(n=!0);break;case\"week_days\":e=8,\"month\"===t.unit&&(o=!0);break;case\"days\":e=1,\"month\"===t.unit&&(o=!0);break;case\"hours\":\"day\"===t.unit&&(o=!0);break;case\"minutes_fives\":case\"seconds_fives\":r%5!=0&&(n=!0);break;case\"seconds_tens\":r%10!=0&&(n=!0)}if(\"hours\"===i.tickInterval||\"minutes_fives\"===i.tickInterval||\"seconds_tens\"===i.tickInterval||\"seconds_fives\"===i.tickInterval){if(!n)return!0}else if((r%e==0||o)&&!n)return!0}))}},{key:\"recalcDimensionsBasedOnFormat\",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new ct(this.ctx).plotCoords()}},{key:\"determineInterval\",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval=\"years\";break;case t>800:this.tickInterval=\"half_year\";break;case t>180:this.tickInterval=\"months\";break;case t>90:this.tickInterval=\"months_fortnight\";break;case t>60:this.tickInterval=\"months_days\";break;case t>30:this.tickInterval=\"week_days\";break;case t>2:this.tickInterval=\"days\";break;case e>2.4:this.tickInterval=\"hours\";break;case i>15:this.tickInterval=\"minutes_fives\";break;case i>5:this.tickInterval=\"minutes\";break;case i>1:this.tickInterval=\"seconds_tens\";break;case 60*i>20:this.tickInterval=\"seconds_fives\";break;default:this.tickInterval=\"seconds\"}}},{key:\"generateYearScale\",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,n=0,l=new L(this.ctx),h=\"year\";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);n=(l.determineDaysOfYear(e.minYear)-c+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:n,value:o,unit:h,year:o,month:m.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:n,value:o,unit:h,year:a,month:m.monthMod(i+1)});for(var d=o,g=n,u=0;u<r;u++)d++,g=l.determineDaysOfYear(d-1)*s+g,this.timeScaleArray.push({position:g,value:d,unit:h,year:d,month:1})}},{key:\"generateMonthScale\",value:function(t){var e=t.firstVal,i=t.currentMonthDate,a=t.currentMonth,s=t.currentYear,r=t.daysWidthOnXAxis,o=t.numberOfMonths,n=a,l=0,h=new L(this.ctx),c=\"month\",d=0;if(e.minDate>1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,n=m.monthMod(a+1);var g=s+d,u=m.monthMod(n),f=n;0===n&&(c=\"year\",f=g,u=1,g+=d+=1),this.timeScaleArray.push({position:l,value:f,unit:c,year:g,month:u})}else this.timeScaleArray.push({position:l,value:n,unit:c,year:s,month:m.monthMod(a)});for(var p=n+1,x=l,b=0,v=1;b<o;b++,v++){0===(p=m.monthMod(p))?(c=\"year\",d+=1):c=\"month\";var y=this._getYear(s,p,d);x=h.determineDaysOfMonths(p,y)*r+x;var w=0===p?y:p;this.timeScaleArray.push({position:x,value:w,unit:c,year:y,month:0===p?1:p}),p++}}},{key:\"generateDayScale\",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.hoursWidthOnXAxis,r=t.numberOfDays,o=new L(this.ctx),n=\"day\",l=e.minDate+1,h=l,c=function(t,e,i){return t>o.determineDaysOfMonths(e+1,i)?(h=1,n=\"month\",g=e+=1,e):e},d=(24-e.minHour)*s,g=l,u=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,g=m.monthMod(e.minMonth),n=\"month\",h=e.minDate):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,g=l,u=c(h=l,i,a)),this.timeScaleArray.push({position:d,value:g,unit:n,year:this._getYear(a,u,0),month:m.monthMod(u),day:h});for(var f=d,p=0;p<r;p++){n=\"day\",u=c(h+=1,u,this._getYear(a,u,0));var x=this._getYear(a,u,0);f=24*s+f;var b=1===h?m.monthMod(u):h;this.timeScaleArray.push({position:f,value:b,unit:n,year:x,month:m.monthMod(u),day:b})}}},{key:\"generateHourScale\",value:function(t){var e=t.firstVal,i=t.currentDate,a=t.currentMonth,s=t.currentYear,r=t.minutesWidthOnXAxis,o=t.numberOfHours,n=new L(this.ctx),l=\"hour\",h=function(t,e){return t>n.determineDaysOfMonths(e+1,s)&&(p=1,e+=1),{month:e,date:p}},c=function(t,e){return t>n.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),g=d*r,u=e.minHour+1,f=u;60===d&&(g=0,f=u=e.minHour);var p=i;f>=24&&(f=0,p+=1,l=\"day\");var x=h(p,a).month;x=c(p,x),this.timeScaleArray.push({position:g,value:u,unit:l,day:p,hour:f,year:s,month:m.monthMod(x)}),f++;for(var b=g,v=0;v<o;v++){if(l=\"hour\",f>=24)f=0,l=\"day\",x=h(p+=1,x).month,x=c(p,x);var y=this._getYear(s,x,0);b=60*r+b;var w=0===f?p:f;this.timeScaleArray.push({position:b,value:w,unit:l,hour:f,day:p,year:y,month:m.monthMod(x)}),f++}}},{key:\"generateMinuteScale\",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,g=r,u=o,f=n,p=s,x=(60-i-e/1e3)*h,b=0;b<c;b++)d>=60&&(d=0,24===(p+=1)&&(p=0)),this.timeScaleArray.push({position:x,value:d,unit:\"minute\",hour:p,minute:d,day:g,year:this._getYear(f,u,0),month:m.monthMod(u)}),x+=l,d++}},{key:\"generateSecondScale\",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,g=r,u=o,f=n,p=s,x=(1e3-e)/1e3*l,b=0;b<h;b++)c>=60&&(c=0,++d>=60&&(d=0,24===++p&&(p=0))),this.timeScaleArray.push({position:x,value:c,unit:\"second\",hour:p,minute:d,second:c,day:g,year:this._getYear(f,u,0),month:m.monthMod(u)}),x+=l,c++}},{key:\"createRawDateString\",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+=\"-\"+(\"0\"+t.month.toString()).slice(-2),\"day\"===t.unit?i+=\"day\"===t.unit?\"-\"+(\"0\"+e).slice(-2):\"-01\":i+=\"-\"+(\"0\"+(t.day?t.day:\"1\")).slice(-2),\"hour\"===t.unit?i+=\"hour\"===t.unit?\"T\"+(\"0\"+e).slice(-2):\"T00\":i+=\"T\"+(\"0\"+(t.hour?t.hour:\"0\")).slice(-2),\"minute\"===t.unit?i+=\":\"+(\"0\"+e).slice(-2):i+=\":\"+(t.minute?(\"0\"+t.minute).slice(-2):\"00\"),\"second\"===t.unit?i+=\":\"+(\"0\"+e).slice(-2):i+=\":00\",this.utc&&(i+=\".000Z\"),i}},{key:\"formatDates\",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new L(e.ctx),r=e.createRawDateString(t,a),o=s.getDate(s.parseDate(r));if(e.utc||(o=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var n=\"dd MMM\",l=i.config.xaxis.labels.datetimeFormatter;\"year\"===t.unit&&(n=l.year),\"month\"===t.unit&&(n=l.month),\"day\"===t.unit&&(n=l.day),\"hour\"===t.unit&&(n=l.hour),\"minute\"===t.unit&&(n=l.minute),\"second\"===t.unit&&(n=l.second),a=s.formatDate(o,n)}else a=s.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:\"removeOverlappingTS\",value:function(t){var e,i=this,a=new k(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,o=t.map((function(o,n){if(n>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return o.position>h+l+10?(r=n,o):null}return o}));return o=o.filter((function(t){return null!==t}))}},{key:\"_getYear\",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),_t=function(){function t(e,a){i(this,t),this.ctx=a,this.w=a.w,this.el=e}return s(t,[{key:\"setupElements\",value:function(){var t=this.w,e=t.globals,i=t.config,a=i.chart.type;e.axisCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"rangeArea\",\"candlestick\",\"boxPlot\",\"scatter\",\"bubble\",\"radar\",\"heatmap\",\"treemap\"].includes(a),e.xyCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"rangeArea\",\"candlestick\",\"boxPlot\",\"scatter\",\"bubble\"].includes(a),e.isBarHorizontal=[\"bar\",\"rangeBar\",\"boxPlot\"].includes(a)&&i.plotOptions.bar.horizontal,e.chartClass=\".apexcharts\".concat(e.chartID),e.dom.baseEl=this.el,e.dom.elWrap=document.createElement(\"div\"),k.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:\"apexcharts-canvas \".concat(e.chartClass.substring(1))}),this.el.appendChild(e.dom.elWrap),e.dom.Paper=new window.SVG.Doc(e.dom.elWrap),e.dom.Paper.attr({class:\"apexcharts-svg\",\"xmlns:data\":\"ApexChartsNS\",transform:\"translate(\".concat(i.chart.offsetX,\", \").concat(i.chart.offsetY,\")\")}),e.dom.Paper.node.style.background=\"dark\"!==i.theme.mode||i.chart.background?\"light\"!==i.theme.mode||i.chart.background?i.chart.background:\"#fff\":\"#424242\",this.setSVGDimensions(),e.dom.elLegendForeign=document.createElementNS(e.SVGNS,\"foreignObject\"),k.setAttrs(e.dom.elLegendForeign,{x:0,y:0,width:e.svgWidth,height:e.svgHeight}),e.dom.elLegendWrap=document.createElement(\"div\"),e.dom.elLegendWrap.classList.add(\"apexcharts-legend\"),e.dom.elLegendWrap.setAttribute(\"xmlns\",\"http://www.w3.org/1999/xhtml\"),e.dom.elLegendForeign.appendChild(e.dom.elLegendWrap),e.dom.Paper.node.appendChild(e.dom.elLegendForeign),e.dom.elGraphical=e.dom.Paper.group().attr({class:\"apexcharts-inner apexcharts-graphical\"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}},{key:\"plotChartType\",value:function(t,e){var i=this.w,a=this.ctx,s=i.config,r=i.globals,o={line:{series:[],i:[]},area:{series:[],i:[]},scatter:{series:[],i:[]},bubble:{series:[],i:[]},column:{series:[],i:[]},candlestick:{series:[],i:[]},boxPlot:{series:[],i:[]},rangeBar:{series:[],i:[]},rangeArea:{series:[],seriesRangeEnd:[],i:[]}},n=s.chart.type||\"line\",l=null,h=0;r.series.forEach((function(e,a){var s=t[a].type||n;o[s]?(\"rangeArea\"===s?(o[s].series.push(r.seriesRangeStart[a]),o[s].seriesRangeEnd.push(r.seriesRangeEnd[a])):o[s].series.push(e),o[s].i.push(a),\"column\"!==s&&\"bar\"!==s||(i.globals.columnSeries=o.column)):[\"heatmap\",\"treemap\",\"pie\",\"donut\",\"polarArea\",\"radialBar\",\"radar\"].includes(s)?l=s:\"bar\"===s?(o.column.series.push(e),o.column.i.push(a)):console.warn(\"You have specified an unrecognized series type (\".concat(s,\").\")),n!==s&&\"scatter\"!==s&&h++})),h>0&&(l&&console.warn(\"Chart or series type \".concat(l,\" cannot appear with other chart or series types.\")),o.column.series.length>0&&s.plotOptions.bar.horizontal&&(h-=o.column.series.length,o.column={series:[],i:[]},i.globals.columnSeries={series:[],i:[]},console.warn(\"Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`\"))),r.comboCharts||(r.comboCharts=h>0);var c=new Ot(a,e),d=new Lt(a,e);a.pie=new Tt(a);var g=new Xt(a);a.rangeBar=new Et(a,e);var u=new zt(a),f=[];if(r.comboCharts){var x,b,v=new A(a);if(o.area.series.length>0)(x=f).push.apply(x,p(v.drawSeriesByGroup(o.area,r.areaGroups,\"area\",c)));if(o.column.series.length>0)if(s.chart.stacked){var m=new Ct(a,e);f.push(m.draw(o.column.series,o.column.i))}else a.bar=new St(a,e),f.push(a.bar.draw(o.column.series,o.column.i));if(o.rangeArea.series.length>0&&f.push(c.draw(o.rangeArea.series,\"rangeArea\",o.rangeArea.i,o.rangeArea.seriesRangeEnd)),o.line.series.length>0)(b=f).push.apply(b,p(v.drawSeriesByGroup(o.line,r.lineGroups,\"line\",c)));if(o.candlestick.series.length>0&&f.push(d.draw(o.candlestick.series,\"candlestick\",o.candlestick.i)),o.boxPlot.series.length>0&&f.push(d.draw(o.boxPlot.series,\"boxPlot\",o.boxPlot.i)),o.rangeBar.series.length>0&&f.push(a.rangeBar.draw(o.rangeBar.series,o.rangeBar.i)),o.scatter.series.length>0){var y=new Ot(a,e,!0);f.push(y.draw(o.scatter.series,\"scatter\",o.scatter.i))}if(o.bubble.series.length>0){var w=new Ot(a,e,!0);f.push(w.draw(o.bubble.series,\"bubble\",o.bubble.i))}}else switch(s.chart.type){case\"line\":f=c.draw(r.series,\"line\");break;case\"area\":f=c.draw(r.series,\"area\");break;case\"bar\":if(s.chart.stacked)f=new Ct(a,e).draw(r.series);else a.bar=new St(a,e),f=a.bar.draw(r.series);break;case\"candlestick\":f=new Lt(a,e).draw(r.series,\"candlestick\");break;case\"boxPlot\":f=new Lt(a,e).draw(r.series,s.chart.type);break;case\"rangeBar\":f=a.rangeBar.draw(r.series);break;case\"rangeArea\":f=c.draw(r.seriesRangeStart,\"rangeArea\",void 0,r.seriesRangeEnd);break;case\"heatmap\":f=new Mt(a,e).draw(r.series);break;case\"treemap\":f=new Bt(a,e).draw(r.series);break;case\"pie\":case\"donut\":case\"polarArea\":f=a.pie.draw(r.series);break;case\"radialBar\":f=g.draw(r.series);break;case\"radar\":f=u.draw(r.series);break;default:f=c.draw(r.series)}return f}},{key:\"setSVGDimensions\",value:function(){var t=this.w,e=t.globals,i=t.config;i.chart.width=i.chart.width||\"100%\",i.chart.height=i.chart.height||\"auto\",e.svgWidth=i.chart.width,e.svgHeight=i.chart.height;var a=m.getDimensions(this.el),s=i.chart.width.toString().split(/[0-9]+/g).pop();\"%\"===s?m.isNumber(a[0])&&(0===a[0].width&&(a=m.getDimensions(this.el.parentNode)),e.svgWidth=a[0]*parseInt(i.chart.width,10)/100):\"px\"!==s&&\"\"!==s||(e.svgWidth=parseInt(i.chart.width,10));var r=String(i.chart.height).toString().split(/[0-9]+/g).pop();if(\"auto\"!==e.svgHeight&&\"\"!==e.svgHeight)if(\"%\"===r){var o=m.getDimensions(this.el.parentNode);e.svgHeight=o[1]*parseInt(i.chart.height,10)/100}else e.svgHeight=parseInt(i.chart.height,10);else e.svgHeight=e.axisCharts?e.svgWidth/1.61:e.svgWidth/1.2;if(e.svgWidth=Math.max(e.svgWidth,0),e.svgHeight=Math.max(e.svgHeight,0),k.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),\"%\"!==r){var n=i.chart.sparkline.enabled?0:e.axisCharts?i.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight=\"\".concat(e.svgHeight+n,\"px\")}e.dom.elWrap.style.width=\"\".concat(e.svgWidth,\"px\"),e.dom.elWrap.style.height=\"\".concat(e.svgHeight,\"px\")}},{key:\"shiftGraphPosition\",value:function(){var t=this.w.globals,e=t.translateY,i=t.translateX;k.setAttrs(t.dom.elGraphical.node,{transform:\"translate(\".concat(i,\", \").concat(e,\")\")})}},{key:\"resizeNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,[\"top\",\"bottom\"].includes(t.config.legend.position)&&t.config.legend.show&&!t.config.legend.floating&&(i=new gt(this.ctx).legendHelpers.getLegendDimensions().clwh+7);var s=t.globals.dom.baseEl.querySelector(\".apexcharts-radialbar, .apexcharts-pie\"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=m.getBoundingClientRect(s);r=o.bottom;var n=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,n)}var l=Math.ceil(r+e.translateY+i+a);e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute(\"height\",l),t.config.chart.height&&String(t.config.chart.height).includes(\"%\")||(e.dom.elWrap.style.height=\"\".concat(l,\"px\"),k.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=\"\".concat(l,\"px\"))}},{key:\"coreCalculations\",value:function(){new J(this.ctx).init()}},{key:\"resetGlobals\",value:function(){var t=this,e=function(){return t.w.config.series.map((function(){return[]}))},i=new H,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:\"isMultipleY\",value:function(){return!!(Array.isArray(this.w.config.yaxis)&&this.w.config.yaxis.length>1)&&(this.w.globals.isMultipleYAxis=!0,!0)}},{key:\"xySettings\",value:function(){var t=this.w,e=null;if(t.globals.axisCharts){if(\"back\"===t.config.xaxis.crosshairs.position&&new it(this.ctx).drawXCrosshairs(),\"back\"===t.config.yaxis[0].crosshairs.position&&new it(this.ctx).drawYCrosshairs(),\"datetime\"===t.config.xaxis.type&&void 0===t.config.xaxis.labels.formatter){this.ctx.timeScale=new jt(this.ctx);var i=[];isFinite(t.globals.minX)&&isFinite(t.globals.maxX)&&!t.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minX,t.globals.maxX):t.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minY,t.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}e=new A(this.ctx).getCalculatedRatios()}return e}},{key:\"updateSourceChart\",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:\"setupBrushHandler\",value:function(){var t=this,e=this.w;if(e.config.chart.brush.enabled&&\"function\"!=typeof e.config.chart.events.selection){var i=Array.isArray(e.config.chart.brush.targets)?e.config.chart.brush.targets:[e.config.chart.brush.target];i.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,\"function\"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){return t.updateSourceChart(i)}),\"function\"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){return t.updateSourceChart(i)})})),e.config.chart.events.selection=function(t,e){i.forEach((function(t){ApexCharts.getChartByID(t).ctx.updateHelpers._updateOptions({xaxis:{min:e.xaxis.min,max:e.xaxis.max}},!1,!1,!1,!1)}))}}}}]),t}(),Ut=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"_updateOptions\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(o){var n=[e.ctx];s&&(n=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(n=[e.ctx],e.ctx.w.globals.isExecCalled=!1),n.forEach((function(s,l){var h=s.w;if(h.globals.shouldAnimate=a,i||(h.globals.resized=!0,h.globals.dataChanged=!0,a&&s.series.getPreviousPaths()),t&&\"object\"===b(t)&&(s.config=new D(t),t=A.extendArrayProps(s.config,t,h),s.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,h.config=m.extend(h.config,t),r&&(h.globals.lastXAxis=t.xaxis?m.clone(t.xaxis):[],h.globals.lastYAxis=t.yaxis?m.clone(t.yaxis):[],h.globals.initialConfig=m.extend({},h.config),h.globals.initialSeries=m.clone(h.config.series),t.series))){for(var c=0;c<h.globals.collapsedSeriesIndices.length;c++){var d=h.config.series[h.globals.collapsedSeriesIndices[c]];h.globals.collapsedSeries[c].data=h.globals.axisCharts?d.data.slice():d}for(var g=0;g<h.globals.ancillaryCollapsedSeriesIndices.length;g++){var u=h.config.series[h.globals.ancillaryCollapsedSeriesIndices[g]];h.globals.ancillaryCollapsedSeries[g].data=h.globals.axisCharts?u.data.slice():u}s.series.emptyCollapsedSeries(h.config.series)}return s.update(t).then((function(){l===n.length-1&&o(s)}))}))}))}},{key:\"_updateSeries\",value:function(t,e){var i=this,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=m.clone(o.config.series),o.globals.initialSeries=m.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:\"_extendSeries\",value:function(t,e){var i=this.w,a=i.config.series[e];return g(g({},i.config.series[e]),{},{name:t.name?t.name:null==a?void 0:a.name,color:t.color?t.color:null==a?void 0:a.color,type:t.type?t.type:null==a?void 0:a.type,group:t.group?t.group:null==a?void 0:a.group,hidden:void 0!==t.hidden?t.hidden:null==a?void 0:a.hidden,data:t.data?t.data:null==a?void 0:a.data,zIndex:void 0!==t.zIndex?t.zIndex:e})}},{key:\"toggleDataPointSelection\",value:function(t,e){var i=this.w,a=null,s=\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\");return i.globals.axisCharts?a=i.globals.dom.Paper.select(\"\".concat(s,\" path[j='\").concat(e,\"'], \").concat(s,\" circle[j='\").concat(e,\"'], \").concat(s,\" rect[j='\").concat(e,\"']\")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select(\"\".concat(s,\" path[j='\").concat(t,\"']\")).members[0],\"pie\"!==i.config.chart.type&&\"polarArea\"!==i.config.chart.type&&\"donut\"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new k(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn(\"toggleDataPointSelection: Element not found\"),null)}},{key:\"forceXAxisUpdate\",value:function(t){var e=this.w;if([\"min\",\"max\"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new F(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:\"forceYAxisUpdate\",value:function(t){return t.chart&&t.chart.stacked&&\"100%\"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:\"revertDefaultAxisMinMax\",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();Nt=\"undefined\"!=typeof window?window:void 0,Wt=function(t,e){var i=(void 0!==this?this:t).SVG=function(t){if(i.supported)return t=new i.Doc(t),i.parser.draw||i.prepare(),t};if(i.ns=\"http://www.w3.org/2000/svg\",i.xmlns=\"http://www.w3.org/2000/xmlns/\",i.xlink=\"http://www.w3.org/1999/xlink\",i.svgjs=\"http://svgjs.dev\",i.supported=!0,!i.supported)return!1;i.did=1e3,i.eid=function(t){return\"Svgjs\"+c(t)+i.did++},i.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute(\"id\",this.eid(t)),i},i.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var a=t.length-1;a>=0;a--)if(t[a])for(var s in e)t[a].prototype[s]=e[s];i.Set&&i.Set.inherit&&i.Set.inherit()},i.invent=function(t){var e=\"function\"==typeof t.create?t.create:function(){this.constructor.call(this,i.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&i.extend(e,t.extend),t.construct&&i.extend(t.parent||i.Container,t.construct),e},i.adopt=function(e){return e?e.instance?e.instance:((a=\"svg\"==e.nodeName?e.parentNode instanceof t.SVGElement?new i.Nested:new i.Doc:\"linearGradient\"==e.nodeName?new i.Gradient(\"linear\"):\"radialGradient\"==e.nodeName?new i.Gradient(\"radial\"):i[c(e.nodeName)]?new(i[c(e.nodeName)]):new i.Element(e)).type=e.nodeName,a.node=e,e.instance=a,a instanceof i.Doc&&a.namespace().defs(),a.setData(JSON.parse(e.getAttribute(\"svgjs:data\"))||{}),a):null;var a},i.prepare=function(){var t=e.getElementsByTagName(\"body\")[0],a=(t?new i.Doc(t):i.adopt(e.documentElement).nested()).size(2,0);i.parser={body:t||e.documentElement,draw:a.style(\"opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden\").node,poly:a.polyline().node,path:a.path().node,native:i.create(\"svg\")}},i.parser={native:i.create(\"svg\")},e.addEventListener(\"DOMContentLoaded\",(function(){i.parser.draw||i.prepare()}),!1),i.regex={numberAndUnit:/^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,rgb:/rgb\\((\\d+),(\\d+),(\\d+)\\)/,reference:/#([a-z0-9\\-_]+)/i,transforms:/\\)\\s*,?\\s*/,whitespace:/\\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\\s+)?$/,isNumber:/^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,isPercent:/^-?[\\d\\.]+%$/,isImage:/\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i,delimiter:/[\\s,]+/,hyphen:/([^e])\\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi,dots:/\\./g},i.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s<i;s++)a.push(e(t[s]));return a},filter:function(t,e){for(var i=t.length,a=[],s=0;s<i;s++)e(t[s])&&a.push(t[s]);return a},filterSVGElements:function(e){return this.filter(e,(function(e){return e instanceof t.SVGElement}))}},i.defaults={attrs:{\"fill-opacity\":1,\"stroke-opacity\":1,\"stroke-width\":0,\"stroke-linejoin\":\"miter\",\"stroke-linecap\":\"butt\",fill:\"#000000\",stroke:\"#000000\",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,\"stop-opacity\":1,\"stop-color\":\"#000000\",\"font-size\":16,\"font-family\":\"Helvetica, Arial, sans-serif\",\"text-anchor\":\"start\"}},i.Color=function(t){var e,a;this.r=0,this.g=0,this.b=0,t&&(\"string\"==typeof t?i.regex.isRgb.test(t)?(e=i.regex.rgb.exec(t.replace(i.regex.whitespace,\"\")),this.r=parseInt(e[1]),this.g=parseInt(e[2]),this.b=parseInt(e[3])):i.regex.isHex.test(t)&&(e=i.regex.hex.exec(4==(a=t).length?[\"#\",a.substring(1,2),a.substring(1,2),a.substring(2,3),a.substring(2,3),a.substring(3,4),a.substring(3,4)].join(\"\"):a),this.r=parseInt(e[1],16),this.g=parseInt(e[2],16),this.b=parseInt(e[3],16)):\"object\"===b(t)&&(this.r=t.r,this.g=t.g,this.b=t.b))},i.extend(i.Color,{toString:function(){return this.toHex()},toHex:function(){return\"#\"+d(this.r)+d(this.g)+d(this.b)},toRgb:function(){return\"rgb(\"+[this.r,this.g,this.b].join()+\")\"},brightness:function(){return this.r/255*.3+this.g/255*.59+this.b/255*.11},morph:function(t){return this.destination=new i.Color(t),this},at:function(t){return this.destination?(t=t<0?0:t>1?1:t,new i.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),i.Color.test=function(t){return t+=\"\",i.regex.isHex.test(t)||i.regex.isRgb.test(t)},i.Color.isRgb=function(t){return t&&\"number\"==typeof t.r&&\"number\"==typeof t.g&&\"number\"==typeof t.b},i.Color.isColor=function(t){return i.Color.isRgb(t)||i.Color.test(t)},i.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},i.extend(i.Array,{toString:function(){return this.value.join(\" \")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),i.PointArray=function(t,e){i.Array.call(this,t,e||[[0,0]])},i.PointArray.prototype=new i.Array,i.PointArray.prototype.constructor=i.PointArray;for(var a={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],[\"M\",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],[\"L\",t[0],t[1]]},H:function(t,e){return e.x=t[0],[\"H\",t[0]]},V:function(t,e){return e.y=t[0],[\"V\",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],[\"C\",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],[\"Q\",t[0],t[1],t[2],t[3]]},S:function(t,e){return e.x=t[2],e.y=t[3],[\"S\",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,[\"Z\"]}},s=\"mlhvqtcsaz\".split(\"\"),r=0,o=s.length;r<o;++r)a[s[r]]=function(t){return function(e,i,s){if(\"H\"==t)e[0]=e[0]+i.x;else if(\"V\"==t)e[0]=e[0]+i.y;else if(\"A\"==t)e[5]=e[5]+i.x,e[6]=e[6]+i.y;else for(var r=0,o=e.length;r<o;++r)e[r]=e[r]+(r%2?i.y:i.x);if(a&&\"function\"==typeof a[t])return a[t](e,i,s)}}(s[r].toUpperCase());i.PathArray=function(t,e){i.Array.call(this,t,e||[[\"M\",0,0]])},i.PathArray.prototype=new i.Array,i.PathArray.prototype.constructor=i.PathArray,i.extend(i.PathArray,{toString:function(){return function(t){for(var e=0,i=t.length,a=\"\";e<i;e++)a+=t[e][0],null!=t[e][1]&&(a+=t[e][1],null!=t[e][2]&&(a+=\" \",a+=t[e][2],null!=t[e][3]&&(a+=\" \",a+=t[e][3],a+=\" \",a+=t[e][4],null!=t[e][5]&&(a+=\" \",a+=t[e][5],a+=\" \",a+=t[e][6],null!=t[e][7]&&(a+=\" \",a+=t[e][7])))));return a+\" \"}(this.value)},move:function(t,e){var i=this.bbox();return i.x,i.y,this},at:function(t){if(!this.destination)return this;for(var e=this.value,a=this.destination.value,s=[],r=new i.PathArray,o=0,n=e.length;o<n;o++){s[o]=[e[o][0]];for(var l=1,h=e[o].length;l<h;l++)s[o][l]=e[o][l]+(a[o][l]-e[o][l])*t;\"A\"===s[o][0]&&(s[o][4]=+(0!=s[o][4]),s[o][5]=+(0!=s[o][5]))}return r.value=s,r},parse:function(t){if(t instanceof i.PathArray)return t.valueOf();var e,s={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};t=\"string\"==typeof t?t.replace(i.regex.numbersWithDots,l).replace(i.regex.pathLetters,\" $& \").replace(i.regex.hyphen,\"$1 -\").trim().split(i.regex.delimiter):t.reduce((function(t,e){return[].concat.call(t,e)}),[]);var r=[],o=new i.Point,n=new i.Point,h=0,c=t.length;do{i.regex.isPathLetter.test(t[h])?(e=t[h],++h):\"M\"==e?e=\"L\":\"m\"==e&&(e=\"l\"),r.push(a[e].call(null,t.slice(h,h+=s[e.toUpperCase()]).map(parseFloat),o,n))}while(c>h);return r},bbox:function(){return i.parser.draw||i.prepare(),i.parser.path.setAttribute(\"d\",this.toString()),i.parser.path.getBBox()}}),i.Number=i.invent({create:function(t,e){this.value=0,this.unit=e||\"\",\"number\"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:\"string\"==typeof t?(e=t.match(i.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),\"%\"==e[5]?this.value/=100:\"s\"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof i.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return(\"%\"==this.unit?~~(1e8*this.value)/1e6:\"s\"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new i.Number(t),new i.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new i.Number(t),new i.Number(this-t,this.unit||t.unit)},times:function(t){return t=new i.Number(t),new i.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new i.Number(t),new i.Number(this/t,this.unit||t.unit)},to:function(t){var e=new i.Number(this);return\"string\"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new i.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new i.Number(this.destination).minus(this).times(t).plus(this):this}}}),i.Element=i.invent({create:function(t){this._stroke=i.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute(\"stroke\")||this._stroke)},extend:{x:function(t){return this.attr(\"x\",t)},y:function(t){return this.attr(\"y\",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr(\"width\",t)},height:function(t){return this.attr(\"height\",t)},size:function(t,e){var a=g(this,t,e);return this.width(new i.Number(a.width)).height(new i.Number(a.height))},clone:function(t){this.writeDataToDom();var e=p(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr(\"id\",t)},show:function(){return this.style(\"display\",\"\")},hide:function(){return this.style(\"display\",\"none\")},visible:function(){return\"none\"!=this.style(\"display\")},toString:function(){return this.attr(\"id\")},classes:function(){var t=this.attr(\"class\");return null==t?[]:t.trim().split(i.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr(\"class\",e.join(\" \"))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr(\"class\",this.classes().filter((function(e){return e!=t})).join(\" \")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return i.get(this.attr(t))},parent:function(e){var a=this;if(!a.node.parentNode)return null;if(a=i.adopt(a.node.parentNode),!e)return a;for(;a&&a.node instanceof t.SVGElement;){if(\"string\"==typeof e?a.matches(e):a instanceof e)return a;if(!a.node.parentNode||\"#document\"==a.node.parentNode.nodeName)return null;a=i.adopt(a.node.parentNode)}},doc:function(){return this instanceof i.Doc?this:this.parent(i.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var a=e.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");if(!(t&&this instanceof i.Parent))return a.appendChild(t=e.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),a.innerHTML.replace(/^<svg>/,\"\").replace(/<\\/svg>$/,\"\");a.innerHTML=\"<svg>\"+t.replace(/\\n/,\"\").replace(/<([\\w:-]+)([^<]+?)\\/>/g,\"<$1$2></$1>\")+\"</svg>\";for(var s=0,r=a.firstChild.childNodes.length;s<r;s++)this.node.appendChild(a.firstChild.firstChild);return this},writeDataToDom:function(){return(this.each||this.lines)&&(this.each?this:this.lines()).each((function(){this.writeDataToDom()})),this.node.removeAttribute(\"svgjs:data\"),Object.keys(this.dom).length&&this.node.setAttribute(\"svgjs:data\",JSON.stringify(this.dom)),this},setData:function(t){return this.dom=t,this},is:function(t){return function(t,e){return t instanceof e}(this,t)}}}),i.easing={\"-\":function(t){return t},\"<>\":function(t){return-Math.cos(t*Math.PI)/2+.5},\">\":function(t){return Math.sin(t*Math.PI/2)},\"<\":function(t){return 1-Math.cos(t*Math.PI/2)}},i.morph=function(t){return function(e,a){return new i.MorphObj(e,a).at(t)}},i.Situation=i.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new i.Number(t.duration).valueOf(),this.delay=new i.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),i.FX=i.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,a){\"object\"===b(t)&&(e=t.ease,a=t.delay,t=t.duration);var s=new i.Situation({duration:t||1e3,delay:a||0,ease:i.easing[e||\"-\"]||e});return this.queue(s),this},target:function(t){return t&&t instanceof i.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return(\"function\"==typeof t||t instanceof i.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof i.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var a in e.animations){t=this.target()[a](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[a])||(e.animations[a]=[e.animations[a]]);for(var s=t.length;s--;)e.animations[a][s]instanceof i.Number&&(t[s]=new i.Number(t[s])),e.animations[a][s]=t[s].morph(e.animations[a][s])}for(var a in e.attrs)e.attrs[a]=new i.MorphObj(this.target().attr(a),e.attrs[a]);for(var a in e.styles)e.styles[a]=new i.MorphObj(this.target().style(a),e.styles[a]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on(\"finished.fx\",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off(\"finished.fx\",i))})),this._callStart()},during:function(t){var e=this.last(),a=function(a){a.detail.situation==e&&t.call(this,a.detail.pos,i.morph(a.detail.pos),a.detail.eased,e)};return this.target().off(\"during.fx\",a).on(\"during.fx\",a),this.after((function(){this.off(\"during.fx\",a)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off(\"allfinished.fx\",e)};return this.target().off(\"allfinished.fx\",e).on(\"allfinished.fx\",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||\"animations\"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||i<this.situation.loops?(this.pos=e-i,a=this.situation.loop,this.situation.loop=i):(this.absPos=this.situation.loops,this.pos=1,a=this.situation.loop-1,this.situation.loop=this.situation.loops),this.situation.reversing&&(this.situation.reversed=this.situation.reversed!=Boolean((this.situation.loop-a)%2))):(this.absPos=Math.min(this.absPos,1),this.pos=this.absPos),this.pos<0&&(this.pos=0),this.situation.reversed&&(this.pos=1-this.pos);var s=this.situation.ease(this.pos);for(var r in this.situation.once)r>this.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire(\"during\",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire(\"finished\",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire(\"allfinished\"),this.situations.length||(this.target().off(\".fx\"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,a=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a[r].apply(a,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a.attr.apply(a,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a.style.apply(a,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var o=s.transforms.length;r<o;r++){var n=s.transforms[r];n instanceof i.Matrix?t=n.relative?t.multiply((new i.Matrix).morph(n).at(s.ease(this.pos))):t.morph(n).at(s.ease(this.pos)):(n.relative||n.undo(t.extract()),t=t.multiply(n.at(s.ease(this.pos))))}a.matrix(t)}return this},once:function(t,e,i){var a=this.last();return i||(t=a.ease(t)),a.once[t]=e,this},_callStart:function(){return setTimeout(function(){this.start()}.bind(this),0),this}},parent:i.Element,construct:{animate:function(t,e,a){return(this.fx||(this.fx=new i.FX(this))).animate(t,e,a)},delay:function(t){return(this.fx||(this.fx=new i.FX(this))).delay(t)},stop:function(t,e){return this.fx&&this.fx.stop(t,e),this},finish:function(){return this.fx&&this.fx.finish(),this}}}),i.MorphObj=i.invent({create:function(t,e){return i.Color.isColor(e)?new i.Color(t).morph(e):i.regex.delimiter.test(t)?i.regex.pathLetters.test(t)?new i.PathArray(t).morph(e):new i.Array(t).morph(e):i.regex.numberAndUnit.test(e)?new i.Number(t).morph(e):(this.value=t,void(this.destination=e))},extend:{at:function(t,e){return e<1?this.value:this.destination},valueOf:function(){return this.value}}}),i.extend(i.FX,{attr:function(t,e,i){if(\"object\"===b(t))for(var a in t)this.attr(a,t[a]);else this.add(t,e,\"attrs\");return this},plot:function(t,e,i,a){return 4==arguments.length?this.plot([t,e,i,a]):this.add(\"plot\",new(this.target().morphArray)(t))}}),i.Box=i.invent({create:function(t,e,a,s){if(!(\"object\"!==b(t)||t instanceof i.Element))return i.Box.call(this,null!=t.left?t.left:t.x,null!=t.top?t.top:t.y,t.width,t.height);var r;4==arguments.length&&(this.x=t,this.y=e,this.width=a,this.height=s),null==(r=this).x&&(r.x=0,r.y=0,r.width=0,r.height=0),r.w=r.width,r.h=r.height,r.x2=r.x+r.width,r.y2=r.y+r.height,r.cx=r.x+r.width/2,r.cy=r.y+r.height/2}}),i.BBox=i.invent({create:function(t){if(i.Box.apply(this,[].slice.call(arguments)),t instanceof i.Element){var a;try{if(!e.documentElement.contains){for(var s=t.node;s.parentNode;)s=s.parentNode;if(s!=e)throw new Error(\"Element not in the dom\")}a=t.node.getBBox()}catch(e){if(t instanceof i.Shape){i.parser.draw||i.prepare();var r=t.clone(i.parser.draw.instance).show();r&&r.node&&\"function\"==typeof r.node.getBBox&&(a=r.node.getBBox()),r&&\"function\"==typeof r.remove&&r.remove()}else a={x:t.node.clientLeft,y:t.node.clientTop,width:t.node.clientWidth,height:t.node.clientHeight}}i.Box.call(this,a)}},inherit:i.Box,parent:i.Element,construct:{bbox:function(){return new i.BBox(this)}}}),i.BBox.prototype.constructor=i.BBox,i.Matrix=i.invent({create:function(t){var e=f([1,0,0,1,0,0]);t=null===t?e:t instanceof i.Element?t.matrixify():\"string\"==typeof t?f(t.split(i.regex.delimiter).map(parseFloat)):6==arguments.length?f([].slice.call(arguments)):Array.isArray(t)?f(t):t&&\"object\"===b(t)?t:e;for(var a=v.length-1;a>=0;--a)this[v[a]]=null!=t[v[a]]?t[v[a]]:e[v[a]]},extend:{extract:function(){var t=u(this,0,1);u(this,1,0);var e=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new i.Matrix(this)}},clone:function(){return new i.Matrix(this)},morph:function(t){return this.destination=new i.Matrix(t),this},multiply:function(t){return new i.Matrix(this.native().multiply(function(t){return t instanceof i.Matrix||(t=new i.Matrix(t)),t}(t).native()))},inverse:function(){return new i.Matrix(this.native().inverse())},translate:function(t,e){return new i.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=i.parser.native.createSVGMatrix(),e=v.length-1;e>=0;e--)t[v[e]]=this[v[e]];return t},toString:function(){return\"matrix(\"+x(this.a)+\",\"+x(this.b)+\",\"+x(this.c)+\",\"+x(this.d)+\",\"+x(this.e)+\",\"+x(this.f)+\")\"}},parent:i.Element,construct:{ctm:function(){return new i.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof i.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new i.Matrix(e)}return new i.Matrix(this.node.getScreenCTM())}}}),i.Point=i.invent({create:function(t,e){var i;i=Array.isArray(t)?{x:t[0],y:t[1]}:\"object\"===b(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=i.x,this.y=i.y},extend:{clone:function(){return new i.Point(this)},morph:function(t,e){return this.destination=new i.Point(t,e),this}}}),i.extend(i.Element,{point:function(t,e){return new i.Point(t,e).transform(this.screenCTM().inverse())}}),i.extend(i.Element,{attr:function(t,e,a){if(null==t){for(t={},a=(e=this.node.attributes).length-1;a>=0;a--)t[e[a].nodeName]=i.regex.isNumber.test(e[a].nodeValue)?parseFloat(e[a].nodeValue):e[a].nodeValue;return t}if(\"object\"===b(t))for(var s in t)this.attr(s,t[s]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?i.defaults.attrs[t]:i.regex.isNumber.test(e)?parseFloat(e):e;\"stroke-width\"==t?this.attr(\"stroke\",parseFloat(e)>0?this._stroke:null):\"stroke\"==t&&(this._stroke=e),\"fill\"!=t&&\"stroke\"!=t||(i.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof i.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),\"number\"==typeof e?e=new i.Number(e):i.Color.isColor(e)?e=new i.Color(e):Array.isArray(e)&&(e=new i.Array(e)),\"leading\"==t?this.leading&&this.leading(e):\"string\"==typeof a?this.node.setAttributeNS(a,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||\"font-size\"!=t&&\"x\"!=t||this.rebuild(t,e)}return this}}),i.extend(i.Element,{transform:function(t,e){var a;return\"object\"!==b(t)?(a=new i.Matrix(this).extract(),\"string\"==typeof t?a[t]:a):(a=new i.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(a=e?a.multiply(new i.Matrix(t)):new i.Matrix(t)),this.attr(\"transform\",a))}}),i.extend(i.Element,{untransform:function(){return this.attr(\"transform\",null)},matrixify:function(){return(this.attr(\"transform\")||\"\").split(i.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split(\"(\");return[e[0],e[1].split(i.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return\"matrix\"==e[0]?t.multiply(f(e[1])):t[e[0]].apply(t,e[1])}),new i.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),i.Transformation=i.invent({create:function(t,e){if(arguments.length>1&&\"boolean\"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var i=0,a=this.arguments.length;i<a;++i)this[this.arguments[i]]=t[i];else if(t&&\"object\"===b(t))for(i=0,a=this.arguments.length;i<a;++i)this[this.arguments[i]]=t[this.arguments[i]];this.inversed=!1,!0===e&&(this.inversed=!0)}}),i.Translate=i.invent({parent:i.Matrix,inherit:i.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:[\"transformedX\",\"transformedY\"],method:\"translate\"}}),i.extend(i.Element,{style:function(t,e){if(0==arguments.length)return this.node.style.cssText||\"\";if(arguments.length<2)if(\"object\"===b(t))for(var a in t)this.style(a,t[a]);else{if(!i.regex.isCss.test(t))return this.node.style[h(t)];for(t=t.split(/\\s*;\\s*/).filter((function(t){return!!t})).map((function(t){return t.split(/\\s*:\\s*/)}));e=t.pop();)this.style(e[0],e[1])}else this.node.style[h(t)]=null===e||i.regex.isBlank.test(e)?\"\":e;return this}}),i.Parent=i.invent({create:function(t){this.constructor.call(this,t)},inherit:i.Element,extend:{children:function(){return i.utils.map(i.utils.filterSVGElements(this.node.childNodes),(function(t){return i.adopt(t)}))},add:function(t,e){return null==e?this.node.appendChild(t.node):t.node!=this.node.childNodes[e]&&this.node.insertBefore(t.node,this.node.childNodes[e]),this},put:function(t,e){return this.add(t,e),t},has:function(t){return this.index(t)>=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return i.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var a=this.children(),s=0,r=a.length;s<r;s++)a[s]instanceof i.Element&&t.apply(a[s],[s,a]),e&&a[s]instanceof i.Container&&a[s].each(t,e);return this},removeElement:function(t){return this.node.removeChild(t.node),this},clear:function(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return delete this._defs,this},defs:function(){return this.doc().defs()}}}),i.extend(i.Parent,{ungroup:function(t,e){return 0===e||this instanceof i.Defs||this.node==i.parser.draw||(t=t||(this instanceof i.Doc?this:this.parent(i.Parent)),e=e||1/0,this.each((function(){return this instanceof i.Defs?this:this instanceof i.Parent?this.ungroup(t,e-1):this.toParent(t)})),this.node.firstChild||this.remove()),this},flatten:function(t,e){return this.ungroup(t,e)}}),i.Container=i.invent({create:function(t){this.constructor.call(this,t)},inherit:i.Parent}),i.ViewBox=i.invent({parent:i.Container,construct:{}}),[\"click\",\"dblclick\",\"mousedown\",\"mouseup\",\"mouseover\",\"mouseout\",\"mousemove\",\"touchstart\",\"touchmove\",\"touchleave\",\"touchend\",\"touchcancel\"].forEach((function(t){i.Element.prototype[t]=function(e){return i.on(this.node,t,e),this}})),i.listeners=[],i.handlerMap=[],i.listenerId=0,i.on=function(t,e,a,s,r){var o=a.bind(s||t.instance||t),n=(i.handlerMap.indexOf(t)+1||i.handlerMap.push(t))-1,l=e.split(\".\")[0],h=e.split(\".\")[1]||\"*\";i.listeners[n]=i.listeners[n]||{},i.listeners[n][l]=i.listeners[n][l]||{},i.listeners[n][l][h]=i.listeners[n][l][h]||{},a._svgjsListenerId||(a._svgjsListenerId=++i.listenerId),i.listeners[n][l][h][a._svgjsListenerId]=o,t.addEventListener(l,o,r||{passive:!1})},i.off=function(t,e,a){var s=i.handlerMap.indexOf(t),r=e&&e.split(\".\")[0],o=e&&e.split(\".\")[1],n=\"\";if(-1!=s)if(a){if(\"function\"==typeof a&&(a=a._svgjsListenerId),!a)return;i.listeners[s][r]&&i.listeners[s][r][o||\"*\"]&&(t.removeEventListener(r,i.listeners[s][r][o||\"*\"][a],!1),delete i.listeners[s][r][o||\"*\"][a])}else if(o&&r){if(i.listeners[s][r]&&i.listeners[s][r][o]){for(var l in i.listeners[s][r][o])i.off(t,[r,o].join(\".\"),l);delete i.listeners[s][r][o]}}else if(o)for(var h in i.listeners[s])for(var n in i.listeners[s][h])o===n&&i.off(t,[h,o].join(\".\"));else if(r){if(i.listeners[s][r]){for(var n in i.listeners[s][r])i.off(t,[r,n].join(\".\"));delete i.listeners[s][r]}}else{for(var h in i.listeners[s])i.off(t,h);delete i.listeners[s],delete i.handlerMap[s]}},i.extend(i.Element,{on:function(t,e,a,s){return i.on(this.node,t,e,a,s),this},off:function(t,e){return i.off(this.node,t,e),this},fire:function(e,a){return e instanceof t.Event?this.node.dispatchEvent(e):this.node.dispatchEvent(e=new i.CustomEvent(e,{detail:a,cancelable:!0})),this._event=e,this},event:function(){return this._event}}),i.Defs=i.invent({create:\"defs\",inherit:i.Container}),i.G=i.invent({create:\"g\",inherit:i.Container,extend:{x:function(t){return null==t?this.transform(\"x\"):this.transform({x:t-this.x()},!0)}},construct:{group:function(){return this.put(new i.G)}}}),i.Doc=i.invent({create:function(t){t&&(\"svg\"==(t=\"string\"==typeof t?e.getElementById(t):t).nodeName?this.constructor.call(this,t):(this.constructor.call(this,i.create(\"svg\")),t.appendChild(this.node),this.size(\"100%\",\"100%\")),this.namespace().defs())},inherit:i.Container,extend:{namespace:function(){return this.attr({xmlns:i.ns,version:\"1.1\"}).attr(\"xmlns:xlink\",i.xlink,i.xmlns).attr(\"xmlns:svgjs\",i.svgjs,i.xmlns)},defs:function(){var t;return this._defs||((t=this.node.getElementsByTagName(\"defs\")[0])?this._defs=i.adopt(t):this._defs=new i.Defs,this.node.appendChild(this._defs.node)),this._defs},parent:function(){return this.node.parentNode&&\"#document\"!=this.node.parentNode.nodeName?this.node.parentNode:null},remove:function(){return this.parent()&&this.parent().removeChild(this.node),this},clear:function(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return delete this._defs,i.parser.draw&&!i.parser.draw.parentNode&&this.node.appendChild(i.parser.draw),this},clone:function(t){this.writeDataToDom();var e=this.node,i=p(e.cloneNode(!0));return t?(t.node||t).appendChild(i.node):e.parentNode.insertBefore(i.node,e.nextSibling),i}}}),i.extend(i.Element,{}),i.Gradient=i.invent({create:function(t){this.constructor.call(this,i.create(t+\"Gradient\")),this.type=t},inherit:i.Container,extend:{at:function(t,e,a){return this.put(new i.Stop).update(t,e,a)},update:function(t){return this.clear(),\"function\"==typeof t&&t.call(this,this),this},fill:function(){return\"url(#\"+this.id()+\")\"},toString:function(){return this.fill()},attr:function(t,e,a){return\"transform\"==t&&(t=\"gradientTransform\"),i.Container.prototype.attr.call(this,t,e,a)}},construct:{gradient:function(t,e){return this.defs().gradient(t,e)}}}),i.extend(i.Gradient,i.FX,{from:function(t,e){return\"radial\"==(this._target||this).type?this.attr({fx:new i.Number(t),fy:new i.Number(e)}):this.attr({x1:new i.Number(t),y1:new i.Number(e)})},to:function(t,e){return\"radial\"==(this._target||this).type?this.attr({cx:new i.Number(t),cy:new i.Number(e)}):this.attr({x2:new i.Number(t),y2:new i.Number(e)})}}),i.extend(i.Defs,{gradient:function(t,e){return this.put(new i.Gradient(t)).update(e)}}),i.Stop=i.invent({create:\"stop\",inherit:i.Element,extend:{update:function(t){return(\"number\"==typeof t||t instanceof i.Number)&&(t={offset:arguments[0],color:arguments[1],opacity:arguments[2]}),null!=t.opacity&&this.attr(\"stop-opacity\",t.opacity),null!=t.color&&this.attr(\"stop-color\",t.color),null!=t.offset&&this.attr(\"offset\",new i.Number(t.offset)),this}}}),i.Pattern=i.invent({create:\"pattern\",inherit:i.Container,extend:{fill:function(){return\"url(#\"+this.id()+\")\"},update:function(t){return this.clear(),\"function\"==typeof t&&t.call(this,this),this},toString:function(){return this.fill()},attr:function(t,e,a){return\"transform\"==t&&(t=\"patternTransform\"),i.Container.prototype.attr.call(this,t,e,a)}},construct:{pattern:function(t,e,i){return this.defs().pattern(t,e,i)}}}),i.extend(i.Defs,{pattern:function(t,e,a){return this.put(new i.Pattern).update(a).attr({x:0,y:0,width:t,height:e,patternUnits:\"userSpaceOnUse\"})}}),i.Shape=i.invent({create:function(t){this.constructor.call(this,t)},inherit:i.Element}),i.Symbol=i.invent({create:\"symbol\",inherit:i.Container,construct:{symbol:function(){return this.put(new i.Symbol)}}}),i.Use=i.invent({create:\"use\",inherit:i.Shape,extend:{element:function(t,e){return this.attr(\"href\",(e||\"\")+\"#\"+t,i.xlink)}},construct:{use:function(t,e){return this.put(new i.Use).element(t,e)}}}),i.Rect=i.invent({create:\"rect\",inherit:i.Shape,construct:{rect:function(t,e){return this.put(new i.Rect).size(t,e)}}}),i.Circle=i.invent({create:\"circle\",inherit:i.Shape,construct:{circle:function(t){return this.put(new i.Circle).rx(new i.Number(t).divide(2)).move(0,0)}}}),i.extend(i.Circle,i.FX,{rx:function(t){return this.attr(\"r\",t)},ry:function(t){return this.rx(t)}}),i.Ellipse=i.invent({create:\"ellipse\",inherit:i.Shape,construct:{ellipse:function(t,e){return this.put(new i.Ellipse).size(t,e).move(0,0)}}}),i.extend(i.Ellipse,i.Rect,i.FX,{rx:function(t){return this.attr(\"rx\",t)},ry:function(t){return this.attr(\"ry\",t)}}),i.extend(i.Circle,i.Ellipse,{x:function(t){return null==t?this.cx()-this.rx():this.cx(t+this.rx())},y:function(t){return null==t?this.cy()-this.ry():this.cy(t+this.ry())},cx:function(t){return null==t?this.attr(\"cx\"):this.attr(\"cx\",t)},cy:function(t){return null==t?this.attr(\"cy\"):this.attr(\"cy\",t)},width:function(t){return null==t?2*this.rx():this.rx(new i.Number(t).divide(2))},height:function(t){return null==t?2*this.ry():this.ry(new i.Number(t).divide(2))},size:function(t,e){var a=g(this,t,e);return this.rx(new i.Number(a.width).divide(2)).ry(new i.Number(a.height).divide(2))}}),i.Line=i.invent({create:\"line\",inherit:i.Shape,extend:{array:function(){return new i.PointArray([[this.attr(\"x1\"),this.attr(\"y1\")],[this.attr(\"x2\"),this.attr(\"y2\")]])},plot:function(t,e,a,s){return null==t?this.array():(t=void 0!==e?{x1:t,y1:e,x2:a,y2:s}:new i.PointArray(t).toLine(),this.attr(t))},move:function(t,e){return this.attr(this.array().move(t,e).toLine())},size:function(t,e){var i=g(this,t,e);return this.attr(this.array().size(i.width,i.height).toLine())}},construct:{line:function(t,e,a,s){return i.Line.prototype.plot.apply(this.put(new i.Line),null!=t?[t,e,a,s]:[0,0,0,0])}}}),i.Polyline=i.invent({create:\"polyline\",inherit:i.Shape,construct:{polyline:function(t){return this.put(new i.Polyline).plot(t||new i.PointArray)}}}),i.Polygon=i.invent({create:\"polygon\",inherit:i.Shape,construct:{polygon:function(t){return this.put(new i.Polygon).plot(t||new i.PointArray)}}}),i.extend(i.Polyline,i.Polygon,{array:function(){return this._array||(this._array=new i.PointArray(this.attr(\"points\")))},plot:function(t){return null==t?this.array():this.clear().attr(\"points\",\"string\"==typeof t?t:this._array=new i.PointArray(t))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr(\"points\",this.array().move(t,e))},size:function(t,e){var i=g(this,t,e);return this.attr(\"points\",this.array().size(i.width,i.height))}}),i.extend(i.Line,i.Polyline,i.Polygon,{morphArray:i.PointArray,x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)},width:function(t){var e=this.bbox();return null==t?e.width:this.size(t,e.height)},height:function(t){var e=this.bbox();return null==t?e.height:this.size(e.width,t)}}),i.Path=i.invent({create:\"path\",inherit:i.Shape,extend:{morphArray:i.PathArray,array:function(){return this._array||(this._array=new i.PathArray(this.attr(\"d\")))},plot:function(t){return null==t?this.array():this.clear().attr(\"d\",\"string\"==typeof t?t:this._array=new i.PathArray(t))},clear:function(){return delete this._array,this}},construct:{path:function(t){return this.put(new i.Path).plot(t||new i.PathArray)}}}),i.Image=i.invent({create:\"image\",inherit:i.Shape,extend:{load:function(e){if(!e)return this;var a=this,s=new t.Image;return i.on(s,\"load\",(function(){i.off(s);var t=a.parent(i.Pattern);null!==t&&(0==a.width()&&0==a.height()&&a.size(s.width,s.height),t&&0==t.width()&&0==t.height()&&t.size(a.width(),a.height()),\"function\"==typeof a._loaded&&a._loaded.call(a,{width:s.width,height:s.height,ratio:s.width/s.height,url:e}))})),i.on(s,\"error\",(function(t){i.off(s),\"function\"==typeof a._error&&a._error.call(a,t)})),this.attr(\"href\",s.src=this.src=e,i.xlink)},loaded:function(t){return this._loaded=t,this},error:function(t){return this._error=t,this}},construct:{image:function(t,e,a){return this.put(new i.Image).load(t).size(e||0,a||e||0)}}}),i.Text=i.invent({create:function(){this.constructor.call(this,i.create(\"text\")),this.dom.leading=new i.Number(1.3),this._rebuild=!0,this._build=!1,this.attr(\"font-family\",i.defaults.attrs[\"font-family\"])},inherit:i.Shape,extend:{x:function(t){return null==t?this.attr(\"x\"):this.attr(\"x\",t)},text:function(t){if(void 0===t){t=\"\";for(var e=this.node.childNodes,a=0,s=e.length;a<s;++a)0!=a&&3!=e[a].nodeType&&1==i.adopt(e[a]).dom.newLined&&(t+=\"\\n\"),t+=e[a].textContent;return t}if(this.clear().build(!0),\"function\"==typeof t)t.call(this,this);else{a=0;for(var r=(t=t.split(\"\\n\")).length;a<r;a++)this.tspan(t[a]).newLine()}return this.build(!1).rebuild()},size:function(t){return this.attr(\"font-size\",t).rebuild()},leading:function(t){return null==t?this.dom.leading:(this.dom.leading=new i.Number(t),this.rebuild())},lines:function(){var t=(this.textPath&&this.textPath()||this).node,e=i.utils.map(i.utils.filterSVGElements(t.childNodes),(function(t){return i.adopt(t)}));return new i.Set(e)},rebuild:function(t){if(\"boolean\"==typeof t&&(this._rebuild=t),this._rebuild){var e=this,a=0,s=this.dom.leading*new i.Number(this.attr(\"font-size\"));this.lines().each((function(){this.dom.newLined&&(e.textPath()||this.attr(\"x\",e.attr(\"x\")),\"\\n\"==this.text()?a+=s:(this.attr(\"dy\",s+a),a=0))})),this.fire(\"rebuild\")}return this},build:function(t){return this._build=!!t,this},setData:function(t){return this.dom=t,this.dom.leading=new i.Number(t.leading||1.3),this}},construct:{text:function(t){return this.put(new i.Text).text(t)},plain:function(t){return this.put(new i.Text).plain(t)}}}),i.Tspan=i.invent({create:\"tspan\",inherit:i.Shape,extend:{text:function(t){return null==t?this.node.textContent+(this.dom.newLined?\"\\n\":\"\"):(\"function\"==typeof t?t.call(this,this):this.plain(t),this)},dx:function(t){return this.attr(\"dx\",t)},dy:function(t){return this.attr(\"dy\",t)},newLine:function(){var t=this.parent(i.Text);return this.dom.newLined=!0,this.dy(t.dom.leading*t.attr(\"font-size\")).attr(\"x\",t.x())}}}),i.extend(i.Text,i.Tspan,{plain:function(t){return!1===this._build&&this.clear(),this.node.appendChild(e.createTextNode(t)),this},tspan:function(t){var e=(this.textPath&&this.textPath()||this).node,a=new i.Tspan;return!1===this._build&&this.clear(),e.appendChild(a.node),a.text(t)},clear:function(){for(var t=(this.textPath&&this.textPath()||this).node;t.hasChildNodes();)t.removeChild(t.lastChild);return this},length:function(){return this.node.getComputedTextLength()}}),i.TextPath=i.invent({create:\"textPath\",inherit:i.Parent,parent:i.Text,construct:{morphArray:i.PathArray,array:function(){var t=this.track();return t?t.array():null},plot:function(t){var e=this.track(),i=null;return e&&(i=e.plot(t)),null==t?i:this},track:function(){var t=this.textPath();if(t)return t.reference(\"href\")},textPath:function(){if(this.node.firstChild&&\"textPath\"==this.node.firstChild.nodeName)return i.adopt(this.node.firstChild)}}}),i.Nested=i.invent({create:function(){this.constructor.call(this,i.create(\"svg\")),this.style(\"overflow\",\"visible\")},inherit:i.Container,construct:{nested:function(){return this.put(new i.Nested)}}});var n={stroke:[\"color\",\"width\",\"opacity\",\"linecap\",\"linejoin\",\"miterlimit\",\"dasharray\",\"dashoffset\"],fill:[\"color\",\"opacity\",\"rule\"],prefix:function(t,e){return\"color\"==e?t:t+\"-\"+e}};function l(t,e,a,s){return a+s.replace(i.regex.dots,\" .\")}function h(t){return t.toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()}))}function c(t){return t.charAt(0).toUpperCase()+t.slice(1)}function d(t){var e=t.toString(16);return 1==e.length?\"0\"+e:e}function g(t,e,i){if(null==e||null==i){var a=t.bbox();null==e?e=a.width/a.height*i:null==i&&(i=a.height/a.width*e)}return{width:e,height:i}}function u(t,e,i){return{x:e*t.a+i*t.c+0,y:e*t.b+i*t.d+0}}function f(t){return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}function p(e){for(var a=e.childNodes.length-1;a>=0;a--)e.childNodes[a]instanceof t.SVGElement&&p(e.childNodes[a]);return i.adopt(e).id(i.eid(e.nodeName))}function x(t){return Math.abs(t)>1e-37?t:0}[\"fill\",\"stroke\"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if(\"string\"==typeof e||i.Color.isRgb(e)||e&&\"function\"==typeof e.fill)this.attr(t,e);else for(var a=n[t].length-1;a>=0;a--)null!=e[n[t][a]]&&this.attr(n.prefix(t,n[t][a]),e[n[t][a]]);return this},i.extend(i.Element,i.FX,e)})),i.extend(i.Element,i.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr(\"transform\",new i.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr(\"opacity\",t)},dx:function(t){return this.x(new i.Number(t).plus(this instanceof i.FX?0:this.x()),!0)},dy:function(t){return this.y(new i.Number(t).plus(this instanceof i.FX?0:this.y()),!0)}}),i.extend(i.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),i.Set=i.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e<i;e++)this.members.push(t[e]);return this},remove:function(t){var e=this.index(t);return e>-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e<i;e++)t.apply(this.members[e],[e,this.members]);return this},clear:function(){return this.members=[],this},length:function(){return this.members.length},has:function(t){return this.index(t)>=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new i.Set(t)}}}),i.FX.Set=i.invent({create:function(t){this.set=t}}),i.Set.inherit=function(){var t=[];for(var e in i.Shape.prototype)\"function\"==typeof i.Shape.prototype[e]&&\"function\"!=typeof i.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){i.Set.prototype[t]=function(){for(var e=0,a=this.members.length;e<a;e++)this.members[e]&&\"function\"==typeof this.members[e][t]&&this.members[e][t].apply(this.members[e],arguments);return\"animate\"==t?this.fx||(this.fx=new i.FX.Set(this)):this}})),t=[],i.FX.prototype)\"function\"==typeof i.FX.prototype[e]&&\"function\"!=typeof i.FX.Set.prototype[e]&&t.push(e);t.forEach((function(t){i.FX.Set.prototype[t]=function(){for(var e=0,i=this.set.members.length;e<i;e++)this.set.members[e].fx[t].apply(this.set.members[e].fx,arguments);return this}}))},i.extend(i.Element,{}),i.extend(i.Element,{remember:function(t,e){if(\"object\"===b(arguments[0]))for(var i in t)this.remember(i,t[i]);else{if(1==arguments.length)return this.memory()[t];this.memory()[t]=e}return this},forget:function(){if(0==arguments.length)this._memory={};else for(var t=arguments.length-1;t>=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),i.get=function(t){var a=e.getElementById(function(t){var e=(t||\"\").toString().match(i.regex.reference);if(e)return e[1]}(t)||t);return i.adopt(a)},i.select=function(t,a){return new i.Set(i.utils.map((a||e).querySelectorAll(t),(function(t){return i.adopt(t)})))},i.extend(i.Parent,{select:function(t){return i.select(t,this.node)}});var v=\"abcdef\".split(\"\");if(\"function\"!=typeof t.CustomEvent){var m=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent(\"CustomEvent\");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};m.prototype=t.Event.prototype,i.CustomEvent=m}else i.CustomEvent=t.CustomEvent;return i},\"function\"==typeof define&&define.amd?define((function(){return Wt(Nt,Nt.document)})):\"object\"===(\"undefined\"==typeof exports?\"undefined\":b(exports))&&\"undefined\"!=typeof module?module.exports=Nt.document?Wt(Nt,Nt.document):function(t){return Wt(t,t.document)}:Nt.SVG=Wt(Nt,Nt.document),\n/*! svg.filter.js - v2.0.2 - 2016-02-24\n* https://github.com/wout/svg.filter.js\n* Copyright (c) 2016 Wout Fierens; Licensed MIT */\nfunction(){SVG.Filter=SVG.invent({create:\"filter\",inherit:SVG.Parent,extend:{source:\"SourceGraphic\",sourceAlpha:\"SourceAlpha\",background:\"BackgroundImage\",backgroundAlpha:\"BackgroundAlpha\",fill:\"FillPaint\",stroke:\"StrokePaint\",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr(\"in\")&&this.autoSetIn&&t.attr(\"in\",this.source),t.attr(\"result\")||t.attr(\"result\",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return\"url(#\"+this.attr(\"id\")+\")\"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return\"function\"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr(\"filter\",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr(\"filter\",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in\")+'\"]').get(0)||this.attr(\"in\"):this.attr(\"in\",t)},result:function(t){return null==t?this.attr(\"result\"):this.attr(\"result\",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in\")+'\"]').get(0)||this.attr(\"in\"):this.attr(\"in\",t)},result:function(t){return null==t?this.attr(\"result\"):this.attr(\"result\",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr(\"in\",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||\"normal\"})},colorMatrix:function(t,e){\"matrix\"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(\" \").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr(\"flood-color\",t),null!=e&&this.attr(\"flood-opacity\",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr(\"href\",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr(\"stdDeviation\",function(t){if(!Array.isArray(t))return t;for(var e=0,i=t.length,a=[];e<i;e++)a.push(t[e]);return a.join(\" \")}(Array.prototype.slice.call(arguments))):this.attr(\"stdDeviation\",\"0 0\")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,a,s){this.attr({numOctaves:e,seed:i,stitchTiles:a,baseFrequency:t,type:s})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each((function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))}))}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i<t.length;i++)t[i]instanceof SVG.MergeNode?this.put(t[i]):this.put(new SVG.MergeNode(t[i]))}},componentTransfer:function(t){if(this.rgb=new SVG.Set,[\"r\",\"g\",\"b\",\"a\"].forEach(function(t){this[t]=new(SVG[\"Func\"+t.toUpperCase()])(\"identity\"),this.rgb.add(this[t]),this.node.appendChild(this[t].node)}.bind(this)),t)for(var e in t.rgb&&([\"r\",\"g\",\"b\"].forEach(function(e){this[e].attr(t.rgb)}.bind(this)),delete t.rgb),t)this[e].attr(t[e])},diffuseLighting:function(t,e,i){this.attr({surfaceScale:t,diffuseConstant:e,kernelUnitLength:i})},specularLighting:function(t,e,i,a){this.attr({surfaceScale:t,diffuseConstant:e,specularExponent:i,kernelUnitLength:a})}},a={distantLight:function(t,e){this.attr({azimuth:t,elevation:e})},pointLight:function(t,e,i){this.attr({x:t,y:e,z:i})},spotLight:function(t,e,i,a,s,r){this.attr({x:t,y:e,z:i,pointsAtX:a,pointsAtY:s,pointsAtZ:r})},mergeNode:function(t){this.attr(\"in\",t)}};function s(t){return Array.isArray(t)&&(t=new SVG.Array(t)),t.toString().replace(/^\\s+/,\"\").replace(/\\s+$/,\"\").replace(/\\s+/g,\" \")}function r(){var t=function(){};for(var e in\"function\"==typeof arguments[arguments.length-1]&&(t=arguments[arguments.length-1],Array.prototype.splice.call(arguments,arguments.length-1,1)),arguments)for(var i in arguments[e])t(arguments[e][i],i,arguments[e])}[\"r\",\"g\",\"b\",\"a\"].forEach((function(t){a[\"Func\"+t.toUpperCase()]=function(t){switch(this.attr(\"type\",t),t){case\"table\":this.attr(\"tableValues\",arguments[1]);break;case\"linear\":this.attr(\"slope\",arguments[1]),this.attr(\"intercept\",arguments[2]);break;case\"gamma\":this.attr(\"amplitude\",arguments[1]),this.attr(\"exponent\",arguments[2]),this.attr(\"offset\",arguments[2])}}})),r(e,(function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i+\"Effect\"]=SVG.invent({create:function(){this.constructor.call(this,SVG.create(\"fe\"+i)),t.apply(this,arguments),this.result(this.attr(\"id\")+\"Out\")},inherit:SVG.Effect,extend:{}})})),r(i,(function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i+\"Effect\"]=SVG.invent({create:function(){this.constructor.call(this,SVG.create(\"fe\"+i)),t.apply(this,arguments),this.result(this.attr(\"id\")+\"Out\")},inherit:SVG.ParentEffect,extend:{}})})),r(a,(function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i]=SVG.invent({create:function(){this.constructor.call(this,SVG.create(\"fe\"+i)),t.apply(this,arguments)},inherit:SVG.ChildEffect,extend:{}})})),SVG.extend(SVG.MergeEffect,{in:function(t){return t instanceof SVG.MergeNode?this.add(t,0):this.add(new SVG.MergeNode(t),0),this}}),SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{in2:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in2\")+'\"]').get(0)||this.attr(\"in2\"):this.attr(\"in2\",t)}}),SVG.filter={sepiatone:[.343,.669,.119,0,0,.249,.626,.13,0,0,.172,.334,.111,0,0,0,0,0,1,0]}}.call(void 0),function(){function t(t,s,r,o,n,l,h){for(var c=t.slice(s,r||h),d=o.slice(n,l||h),g=0,u={pos:[0,0],start:[0,0]},f={pos:[0,0],start:[0,0]};;){if(c[g]=e.call(u,c[g]),d[g]=e.call(f,d[g]),c[g][0]!=d[g][0]||\"M\"==c[g][0]||\"A\"==c[g][0]&&(c[g][4]!=d[g][4]||c[g][5]!=d[g][5])?(Array.prototype.splice.apply(c,[g,1].concat(a.call(u,c[g]))),Array.prototype.splice.apply(d,[g,1].concat(a.call(f,d[g])))):(c[g]=i.call(u,c[g]),d[g]=i.call(f,d[g])),++g==c.length&&g==d.length)break;g==c.length&&c.push([\"C\",u.pos[0],u.pos[1],u.pos[0],u.pos[1],u.pos[0],u.pos[1]]),g==d.length&&d.push([\"C\",f.pos[0],f.pos[1],f.pos[0],f.pos[1],f.pos[0],f.pos[1]])}return{start:c,dest:d}}function e(t){switch(t[0]){case\"z\":case\"Z\":t[0]=\"L\",t[1]=this.start[0],t[2]=this.start[1];break;case\"H\":t[0]=\"L\",t[2]=this.pos[1];break;case\"V\":t[0]=\"L\",t[2]=t[1],t[1]=this.pos[0];break;case\"T\":t[0]=\"Q\",t[3]=t[1],t[4]=t[2],t[1]=this.reflection[1],t[2]=this.reflection[0];break;case\"S\":t[0]=\"C\",t[6]=t[4],t[5]=t[3],t[4]=t[2],t[3]=t[1],t[2]=this.reflection[1],t[1]=this.reflection[0]}return t}function i(t){var e=t.length;return this.pos=[t[e-2],t[e-1]],-1!=\"SCQT\".indexOf(t[0])&&(this.reflection=[2*this.pos[0]-t[e-4],2*this.pos[1]-t[e-3]]),t}function a(t){var e=[t];switch(t[0]){case\"M\":return this.pos=this.start=[t[1],t[2]],e;case\"L\":t[5]=t[3]=t[1],t[6]=t[4]=t[2],t[1]=this.pos[0],t[2]=this.pos[1];break;case\"Q\":t[6]=t[4],t[5]=t[3],t[4]=1*t[4]/3+2*t[2]/3,t[3]=1*t[3]/3+2*t[1]/3,t[2]=1*this.pos[1]/3+2*t[2]/3,t[1]=1*this.pos[0]/3+2*t[1]/3;break;case\"A\":e=function(t,e){var i,a,s,r,o,n,l,h,c,d,g,u,f,p,x,b,v,m,y,w,k,A,S,C,L,P,M=Math.abs(e[1]),I=Math.abs(e[2]),T=e[3]%360,z=e[4],X=e[5],E=e[6],Y=e[7],R=new SVG.Point(t),F=new SVG.Point(E,Y),D=[];if(0===M||0===I||R.x===F.x&&R.y===F.y)return[[\"C\",R.x,R.y,F.x,F.y,F.x,F.y]];i=new SVG.Point((R.x-F.x)/2,(R.y-F.y)/2).transform((new SVG.Matrix).rotate(T)),(a=i.x*i.x/(M*M)+i.y*i.y/(I*I))>1&&(M*=a=Math.sqrt(a),I*=a);s=(new SVG.Matrix).rotate(T).scale(1/M,1/I).rotate(-T),R=R.transform(s),F=F.transform(s),r=[F.x-R.x,F.y-R.y],n=r[0]*r[0]+r[1]*r[1],o=Math.sqrt(n),r[0]/=o,r[1]/=o,l=n<4?Math.sqrt(1-n/4):0,z===X&&(l*=-1);h=new SVG.Point((F.x+R.x)/2+l*-r[1],(F.y+R.y)/2+l*r[0]),c=new SVG.Point(R.x-h.x,R.y-h.y),d=new SVG.Point(F.x-h.x,F.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&g<u&&(u-=2*Math.PI);for(p=Math.ceil(2*Math.abs(g-u)/Math.PI),b=[],v=g,f=(u-g)/p,x=4*Math.tan(f/4)/3,k=0;k<=p;k++)y=Math.cos(v),m=Math.sin(v),w=new SVG.Point(h.x+y,h.y+m),b[k]=[new SVG.Point(w.x+x*m,w.y-x*y),w,new SVG.Point(w.x-x*m,w.y+x*y)],v+=f;for(b[0][0]=b[0][1].clone(),b[b.length-1][2]=b[b.length-1][1].clone(),s=(new SVG.Matrix).rotate(T).scale(M,I).rotate(-T),k=0,A=b.length;k<A;k++)b[k][0]=b[k][0].transform(s),b[k][1]=b[k][1].transform(s),b[k][2]=b[k][2].transform(s);for(k=1,A=b.length;k<A;k++)S=(w=b[k-1][2]).x,C=w.y,L=(w=b[k][0]).x,P=w.y,E=(w=b[k][1]).x,Y=w.y,D.push([\"C\",S,C,L,P,E,Y]);return D}(this.pos,t),t=e[0]}return t[0]=\"C\",this.pos=[t[5],t[6]],this.reflection=[2*t[5]-t[3],2*t[6]-t[4]],e}function s(t,e){if(!1===e)return!1;for(var i=e,a=t.length;i<a;++i)if(\"M\"==t[i][0])return i;return!1}SVG.extend(SVG.PathArray,{morph:function(e){for(var i=this.value,a=this.parse(e),r=0,o=0,n=!1,l=!1;!1!==r||!1!==o;){var h;n=s(i,!1!==r&&r+1),l=s(a,!1!==o&&o+1),!1===r&&(r=0==(h=new SVG.PathArray(c.start).bbox()).height||0==h.width?i.push(i[0])-1:i.push([\"M\",h.x+h.width/2,h.y+h.height/2])-1),!1===o&&(o=0==(h=new SVG.PathArray(c.dest).bbox()).height||0==h.width?a.push(a[0])-1:a.push([\"M\",h.x+h.width/2,h.y+h.height/2])-1);var c=t(i,r,n,a,o,l);i=i.slice(0,r).concat(c.start,!1===n?[]:i.slice(n)),a=a.slice(0,o).concat(c.dest,!1===l?[]:a.slice(l)),r=!1!==n&&r+c.start.length,o=!1!==l&&o+c.dest.length}return this.value=i,this.destination=new SVG.PathArray,this.destination.value=a,this}})}(),\n/*! svg.draggable.js - v2.2.2 - 2019-01-08\n* https://github.com/svgdotjs/svg.draggable.js\n* Copyright (c) 2019 Wout Fierens; Licensed MIT */\nfunction(){function t(t){t.remember(\"_draggable\",this),this.el=t}t.prototype.init=function(t,e){var i=this;this.constraint=t,this.value=e,this.el.on(\"mousedown.drag\",(function(t){i.start(t)})),this.el.on(\"touchstart.drag\",(function(t){i.start(t)}))},t.prototype.transformPoint=function(t,e){var i=(t=t||window.event).changedTouches&&t.changedTouches[0]||t;return this.p.x=i.clientX-(e||0),this.p.y=i.clientY,this.p.matrixTransform(this.m)},t.prototype.getBBox=function(){var t=this.el.bbox();return this.el instanceof SVG.Nested&&(t=this.el.rbox()),(this.el instanceof SVG.G||this.el instanceof SVG.Use||this.el instanceof SVG.Nested)&&(t.x=this.el.x(),t.y=this.el.y()),t},t.prototype.start=function(t){if(\"click\"!=t.type&&\"mousedown\"!=t.type&&\"mousemove\"!=t.type||1==(t.which||t.buttons)){var e=this;if(this.el.fire(\"beforedrag\",{event:t,handler:this}),!this.el.event().defaultPrevented){t.preventDefault(),t.stopPropagation(),this.parent=this.parent||this.el.parent(SVG.Nested)||this.el.parent(SVG.Doc),this.p=this.parent.node.createSVGPoint(),this.m=this.el.node.getScreenCTM().inverse();var i,a=this.getBBox();if(this.el instanceof SVG.Text)switch(i=this.el.node.getComputedTextLength(),this.el.attr(\"text-anchor\")){case\"middle\":i/=2;break;case\"start\":i=0}this.startPoints={point:this.transformPoint(t,i),box:a,transform:this.el.transform()},SVG.on(window,\"mousemove.drag\",(function(t){e.drag(t)})),SVG.on(window,\"touchmove.drag\",(function(t){e.drag(t)})),SVG.on(window,\"mouseup.drag\",(function(t){e.end(t)})),SVG.on(window,\"touchend.drag\",(function(t){e.end(t)})),this.el.fire(\"dragstart\",{event:t,p:this.startPoints.point,m:this.m,handler:this})}}},t.prototype.drag=function(t){var e=this.getBBox(),i=this.transformPoint(t),a=this.startPoints.box.x+i.x-this.startPoints.point.x,s=this.startPoints.box.y+i.y-this.startPoints.point.y,r=this.constraint,o=i.x-this.startPoints.point.x,n=i.y-this.startPoints.point.y;if(this.el.fire(\"dragmove\",{event:t,p:i,m:this.m,handler:this}),this.el.event().defaultPrevented)return i;if(\"function\"==typeof r){var l=r.call(this.el,a,s,this.m);\"boolean\"==typeof l&&(l={x:l,y:l}),!0===l.x?this.el.x(a):!1!==l.x&&this.el.x(l.x),!0===l.y?this.el.y(s):!1!==l.y&&this.el.y(l.y)}else\"object\"==typeof r&&(null!=r.minX&&a<r.minX?o=(a=r.minX)-this.startPoints.box.x:null!=r.maxX&&a>r.maxX-e.width&&(o=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&s<r.minY?n=(s=r.minY)-this.startPoints.box.y:null!=r.maxY&&s>r.maxY-e.height&&(n=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,o-=o%r.snapToGrid,n-=n%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:n},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire(\"dragend\",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,\"mousemove.drag\"),SVG.off(window,\"touchmove.drag\"),SVG.off(window,\"mouseup.drag\"),SVG.off(window,\"touchend.drag\")},SVG.extend(SVG.Element,{draggable:function(e,i){\"function\"!=typeof e&&\"object\"!=typeof e||(i=e,e=!0);var a=this.remember(\"_draggable\")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off(\"mousedown.drag\"),this.off(\"touchstart.drag\")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember(\"_selectHandler\",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:[\"width\",0],rb:[\"width\",\"height\"],lb:[0,\"height\"],t:[\"width\",0],r:[\"width\",\"height\"],b:[\"width\",\"height\"],l:[0,\"height\"]},this.pointCoord=function(t,e,i){var a=\"string\"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,\"t\"===t||\"b\"===t),y:this.pointCoord(i[1],e,\"r\"===t||\"l\"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=[\"points\",\"pointsExclude\"];for(var s in r){var o=this.options[r[s]];\"string\"==typeof o?o=o.length>0?o.split(/\\s*,\\s*/i):[]:\"boolean\"==typeof o&&\"points\"===r[s]&&(o=o?a:[]),this.options[r[s]]=o}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==[\"line\",\"polyline\",\"polygon\"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i<a;++i){var s=function(e){return function(i){(i=i||window.event).preventDefault?i.preventDefault():i.returnValue=!1,i.stopPropagation();var a=i.pageX||i.touches[0].pageX,s=i.pageY||i.touches[0].pageY;t.el.fire(\"point\",{x:a,y:s,i:e,event:i})}}(i),r=this.drawPoint(e[i][0],e[i][1]).addClass(this.options.classPoints).addClass(this.options.classPoints+\"_point\").on(\"touchstart\",s).on(\"mousedown\",s);this.pointSelection.set.add(r)}},t.prototype.drawPoint=function(t,e){var i=this.options.pointType;switch(i){case\"circle\":return this.drawCircle(t,e);case\"rect\":return this.drawRect(t,e);default:if(\"function\"==typeof i)return i.call(this,t,e);throw new Error(\"Unknown \"+i+\" point type!\")}},t.prototype.drawCircle=function(t,e){return this.nested.circle(this.options.pointSize).center(t,e)},t.prototype.drawRect=function(t,e){return this.nested.rect(this.options.pointSize,this.options.pointSize).center(t,e)},t.prototype.updatePointSelection=function(){var t=this.getPointArray();this.pointSelection.set.each((function(e){this.cx()===t[e][0]&&this.cy()===t[e][1]||this.center(t[e][0],t[e][1])}))},t.prototype.updateRectSelection=function(){var t=this,e=this.el.bbox();if(this.rectSelection.set.get(0).attr({width:e.width,height:e.height}),this.options.points.length&&this.options.points.map((function(i,a){var s=t.pointCoords(i,e);t.rectSelection.set.get(a+1).center(s.x,s.y)})),this.options.rotationPoint){var i=this.rectSelection.set.length();this.rectSelection.set.get(i-1).center(e.width/2,20)}},t.prototype.selectRect=function(t){var e=this,i=this.el.bbox();function a(t){return function(i){(i=i||window.event).preventDefault?i.preventDefault():i.returnValue=!1,i.stopPropagation();var a=i.pageX||i.touches[0].pageX,s=i.pageY||i.touches[0].pageY;e.el.fire(t,{x:a,y:s,event:i})}}if(this.rectSelection.isSelected=t,this.rectSelection.set=this.rectSelection.set||this.parent.set(),this.rectSelection.set.get(0)||this.rectSelection.set.add(this.nested.rect(i.width,i.height).addClass(this.options.classRect)),this.options.points.length&&this.rectSelection.set.length()<2){this.options.points.map((function(t,s){var r=e.pointCoords(t,i),o=e.drawPoint(r.x,r.y).attr(\"class\",e.options.classPoints+\"_\"+t).on(\"mousedown\",a(t)).on(\"touchstart\",a(t));e.rectSelection.set.add(o)})),this.rectSelection.set.each((function(){this.addClass(e.options.classPoints)}))}if(this.options.rotationPoint&&(this.options.points&&!this.rectSelection.set.get(9)||!this.options.points&&!this.rectSelection.set.get(1))){var s=function(t){(t=t||window.event).preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation();var i=t.pageX||t.touches[0].pageX,a=t.pageY||t.touches[0].pageY;e.el.fire(\"rot\",{x:i,y:a,event:t})},r=this.drawPoint(i.width/2,20).attr(\"class\",this.options.classPoints+\"_rot\").on(\"touchstart\",s).on(\"mousedown\",s);this.rectSelection.set.add(r)}},t.prototype.handler=function(){var t=this.el.bbox();this.nested.matrix(new SVG.Matrix(this.el).translate(t.x,t.y)),this.rectSelection.isSelected&&this.updateRectSelection(),this.pointSelection.isSelected&&this.updatePointSelection()},t.prototype.observe=function(){var t=this;if(MutationObserver)if(this.rectSelection.isSelected||this.pointSelection.isSelected)this.observerInst=this.observerInst||new MutationObserver((function(){t.handler()})),this.observerInst.observe(this.el.node,{attributes:!0});else try{this.observerInst.disconnect(),delete this.observerInst}catch(t){}else this.el.off(\"DOMAttrModified.select\"),(this.rectSelection.isSelected||this.pointSelection.isSelected)&&this.el.on(\"DOMAttrModified.select\",(function(){t.handler()}))},t.prototype.cleanup=function(){!this.rectSelection.isSelected&&this.rectSelection.set&&(this.rectSelection.set.each((function(){this.remove()})),this.rectSelection.set.clear(),delete this.rectSelection.set),!this.pointSelection.isSelected&&this.pointSelection.set&&(this.pointSelection.set.each((function(){this.remove()})),this.pointSelection.set.clear(),delete this.pointSelection.set),this.pointSelection.isSelected||this.rectSelection.isSelected||(this.nested.remove(),delete this.nested)},SVG.extend(SVG.Element,{selectize:function(e,i){return\"object\"==typeof e&&(i=e,e=!0),(this.remember(\"_selectHandler\")||new t(this)).init(void 0===e||e,i||{}),this}}),SVG.Element.prototype.selectize.defaults={points:[\"lt\",\"rt\",\"rb\",\"lb\",\"t\",\"r\",\"b\",\"l\"],pointsExclude:[],classRect:\"svg_select_boundingRect\",classPoints:\"svg_select_points\",pointSize:7,rotationPoint:!0,deepSelect:!1,pointType:\"circle\"}}(),function(){(function(){function t(t){t.remember(\"_resizeHandler\",this),this.el=t,this.parameters={},this.lastUpdateCall=null,this.p=t.doc().node.createSVGPoint()}t.prototype.transformPoint=function(t,e,i){return this.p.x=t-(this.offset.x-window.pageXOffset),this.p.y=e-(this.offset.y-window.pageYOffset),this.p.matrixTransform(i||this.m)},t.prototype._extractPosition=function(t){return{x:null!=t.clientX?t.clientX:t.touches[0].clientX,y:null!=t.clientY?t.clientY:t.touches[0].clientY}},t.prototype.init=function(t){var e=this;if(this.stop(),\"stop\"!==t){for(var i in this.options={},this.el.resize.defaults)this.options[i]=this.el.resize.defaults[i],void 0!==t[i]&&(this.options[i]=t[i]);this.el.on(\"lt.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"rt.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"rb.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"lb.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"t.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"r.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"b.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"l.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"rot.resize\",(function(t){e.resize(t||window.event)})),this.el.on(\"point.resize\",(function(t){e.resize(t||window.event)})),this.update()}},t.prototype.stop=function(){return this.el.off(\"lt.resize\"),this.el.off(\"rt.resize\"),this.el.off(\"rb.resize\"),this.el.off(\"lb.resize\"),this.el.off(\"t.resize\"),this.el.off(\"r.resize\"),this.el.off(\"b.resize\"),this.el.off(\"l.resize\"),this.el.off(\"rot.resize\"),this.el.off(\"point.resize\"),this},t.prototype.resize=function(t){var e=this;this.m=this.el.node.getScreenCTM().inverse(),this.offset={x:window.pageXOffset,y:window.pageYOffset};var i=this._extractPosition(t.detail.event);if(this.parameters={type:this.el.type,p:this.transformPoint(i.x,i.y),x:t.detail.x,y:t.detail.y,box:this.el.bbox(),rotation:this.el.transform().rotation},\"text\"===this.el.type&&(this.parameters.fontSize=this.el.attr()[\"font-size\"]),void 0!==t.detail.i){var a=this.el.array().valueOf();this.parameters.i=t.detail.i,this.parameters.pointCoords=[a[t.detail.i][0],a[t.detail.i][1]]}switch(t.type){case\"lt\":this.calc=function(t,e){var i=this.snapToGrid(t,e);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case\"rt\":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case\"rb\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case\"lb\":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case\"t\":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case\"r\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case\"b\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case\"l\":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case\"rot\":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),o=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(o-o%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case\"point\":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire(\"resizestart\",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,\"touchmove.resize\",(function(t){e.update(t||window.event)})),SVG.on(window,\"touchend.resize\",(function(){e.done()})),SVG.on(window,\"mousemove.resize\",(function(t){e.update(t||window.event)})),SVG.on(window,\"mouseup.resize\",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire(\"resizing\",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,\"mousemove.resize\"),SVG.off(window,\"mouseup.resize\"),SVG.off(window,\"touchmove.resize\"),SVG.off(window,\"touchend.resize\"),this.el.fire(\"resizedone\")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])<this.options.snapToGrid/2?s[0]:s[0]-(t<0?-this.options.snapToGrid:this.options.snapToGrid),e-=Math.abs(s[1])<this.options.snapToGrid/2?s[1]:s[1]-(e<0?-this.options.snapToGrid:this.options.snapToGrid),this.constraintToBox(t,e,i,a)},t.prototype.constraintToBox=function(t,e,i,a){var s,r,o=this.options.constraint||{};return void 0!==a?(s=i,r=a):(s=this.parameters.box.x+(1&i?0:this.parameters.box.width),r=this.parameters.box.y+(2&i?0:this.parameters.box.height)),void 0!==o.minX&&s+t<o.minX&&(t=o.minX-s),void 0!==o.maxX&&s+t>o.maxX&&(t=o.maxX-s),void 0!==o.minY&&r+e<o.minY&&(e=o.minY-r),void 0!==o.maxY&&r+e>o.maxY&&(e=o.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],o=s/r;return o<a?(i[1]=s/a-this.parameters.box.height,e&&(i[1]=-i[1])):o>a&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember(\"_resizeHandler\")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),void 0===window.Apex&&(window.Apex={});var qt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"initModules\",value:function(){this.ctx.publicMethods=[\"updateOptions\",\"updateSeries\",\"appendData\",\"appendSeries\",\"isSeriesHidden\",\"highlightSeries\",\"toggleSeries\",\"showSeries\",\"hideSeries\",\"setLocale\",\"resetSeries\",\"zoomX\",\"toggleDataPointSelection\",\"dataURI\",\"exportToCSV\",\"addXaxisAnnotation\",\"addYaxisAnnotation\",\"addPointAnnotation\",\"clearAnnotations\",\"removeAnnotation\",\"paper\",\"destroy\"],this.ctx.eventList=[\"click\",\"mousedown\",\"mousemove\",\"mouseleave\",\"touchstart\",\"touchmove\",\"touchleave\",\"mouseup\",\"touchend\"],this.ctx.animations=new y(this.ctx),this.ctx.axes=new et(this.ctx),this.ctx.core=new _t(this.ctx.el,this.ctx),this.ctx.config=new D({}),this.ctx.data=new _(this.ctx),this.ctx.grid=new Z(this.ctx),this.ctx.graphics=new k(this.ctx),this.ctx.coreUtils=new A(this.ctx),this.ctx.crosshairs=new it(this.ctx),this.ctx.events=new K(this.ctx),this.ctx.exports=new U(this.ctx),this.ctx.fill=new N(this.ctx),this.ctx.localization=new tt(this.ctx),this.ctx.options=new X,this.ctx.responsive=new at(this.ctx),this.ctx.series=new V(this.ctx),this.ctx.theme=new st(this.ctx),this.ctx.formatters=new P(this.ctx),this.ctx.titleSubtitle=new rt(this.ctx),this.ctx.legend=new gt(this.ctx),this.ctx.toolbar=new ut(this.ctx),this.ctx.tooltip=new wt(this.ctx),this.ctx.dimensions=new ct(this.ctx),this.ctx.updateHelpers=new Ut(this.ctx),this.ctx.zoomPanSelection=new ft(this.ctx),this.ctx.w.globals.tooltip=new wt(this.ctx)}}]),t}(),Zt=function(){function t(e){i(this,t),this.ctx=e,this.w=e.w}return s(t,[{key:\"clear\",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:\"killSVG\",value:function(t){t.each((function(){this.removeClass(\"*\"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:\"clearDomElements\",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight=\"unset\");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectBarMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),$t=new WeakMap;var Jt=function(){function t(e,a){i(this,t),this.opts=a,this.ctx=this,this.w=new O(a).init(),this.el=e,this.w.globals.cuid=m.randomId(),this.w.globals.chartID=this.w.config.chart.id?m.escapeString(this.w.config.chart.id):this.w.globals.cuid,new qt(this).initModules(),this.create=m.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return s(t,[{key:\"render\",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;\"function\"==typeof a&&a(t,t.w),t.events.fireEvent(\"beforeMount\",[t,t.w]),window.addEventListener(\"resize\",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();\"none\"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),$t.set(e,s)}(t.el.parentNode,t.parentResizeHandler);var s=t.el.getRootNode&&t.el.getRootNode(),r=m.is(\"ShadowRoot\",s),o=t.el.ownerDocument,n=r?s.getElementById(\"apexcharts-css\"):o.getElementById(\"apexcharts-css\");if(!n){var l;(n=document.createElement(\"style\")).id=\"apexcharts-css\",n.textContent='@keyframes opaque {\\n  0% {\\n    opacity: 0\\n  }\\n\\n  to {\\n    opacity: 1\\n  }\\n}\\n\\n@keyframes resizeanim {\\n\\n  0%,\\n  to {\\n    opacity: 0\\n  }\\n}\\n\\n.apexcharts-canvas {\\n  position: relative;\\n  direction: ltr !important;\\n  user-select: none\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar {\\n  -webkit-appearance: none;\\n  width: 6px\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\\n  border-radius: 4px;\\n  background-color: rgba(0, 0, 0, .5);\\n  box-shadow: 0 0 1px rgba(255, 255, 255, .5);\\n  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5)\\n}\\n\\n.apexcharts-inner {\\n  position: relative\\n}\\n\\n.apexcharts-text tspan {\\n  font-family: inherit\\n}\\n\\nrect.legend-mouseover-inactive,\\n.legend-mouseover-inactive rect,\\n.legend-mouseover-inactive path,\\n.legend-mouseover-inactive circle,\\n.legend-mouseover-inactive line,\\n.legend-mouseover-inactive text.apexcharts-yaxis-title-text,\\n.legend-mouseover-inactive text.apexcharts-yaxis-label {\\n  transition: .15s ease all;\\n  opacity: .2\\n}\\n\\n.apexcharts-legend-text {\\n  padding-left: 15px;\\n  margin-left: -15px;\\n}\\n\\n.apexcharts-series-collapsed {\\n  opacity: 0\\n}\\n\\n.apexcharts-tooltip {\\n  border-radius: 5px;\\n  box-shadow: 2px 2px 6px -4px #999;\\n  cursor: default;\\n  font-size: 14px;\\n  left: 62px;\\n  opacity: 0;\\n  pointer-events: none;\\n  position: absolute;\\n  top: 20px;\\n  display: flex;\\n  flex-direction: column;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  z-index: 12;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-tooltip.apexcharts-active {\\n  opacity: 1;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light {\\n  border: 1px solid #e3e3e3;\\n  background: rgba(255, 255, 255, .96)\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark {\\n  color: #fff;\\n  background: rgba(30, 30, 30, .8)\\n}\\n\\n.apexcharts-tooltip * {\\n  font-family: inherit\\n}\\n\\n.apexcharts-tooltip-title {\\n  padding: 6px;\\n  font-size: 15px;\\n  margin-bottom: 4px\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\\n  background: #eceff1;\\n  border-bottom: 1px solid #ddd\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\\n  background: rgba(0, 0, 0, .7);\\n  border-bottom: 1px solid #333\\n}\\n\\n.apexcharts-tooltip-text-goals-value,\\n.apexcharts-tooltip-text-y-value,\\n.apexcharts-tooltip-text-z-value {\\n  display: inline-block;\\n  margin-left: 5px;\\n  font-weight: 600\\n}\\n\\n.apexcharts-tooltip-text-goals-label:empty,\\n.apexcharts-tooltip-text-goals-value:empty,\\n.apexcharts-tooltip-text-y-label:empty,\\n.apexcharts-tooltip-text-y-value:empty,\\n.apexcharts-tooltip-text-z-value:empty,\\n.apexcharts-tooltip-title:empty {\\n  display: none\\n}\\n\\n.apexcharts-tooltip-text-goals-label,\\n.apexcharts-tooltip-text-goals-value {\\n  padding: 6px 0 5px\\n}\\n\\n.apexcharts-tooltip-goals-group,\\n.apexcharts-tooltip-text-goals-label,\\n.apexcharts-tooltip-text-goals-value {\\n  display: flex\\n}\\n\\n.apexcharts-tooltip-text-goals-label:not(:empty),\\n.apexcharts-tooltip-text-goals-value:not(:empty) {\\n  margin-top: -6px\\n}\\n\\n.apexcharts-tooltip-marker {\\n  width: 12px;\\n  height: 12px;\\n  position: relative;\\n  top: 0;\\n  margin-right: 10px;\\n  border-radius: 50%\\n}\\n\\n.apexcharts-tooltip-series-group {\\n  padding: 0 10px;\\n  display: none;\\n  text-align: left;\\n  justify-content: left;\\n  align-items: center\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\\n  opacity: 1\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active,\\n.apexcharts-tooltip-series-group:last-child {\\n  padding-bottom: 4px\\n}\\n\\n.apexcharts-tooltip-y-group {\\n  padding: 6px 0 5px\\n}\\n\\n.apexcharts-custom-tooltip,\\n.apexcharts-tooltip-box {\\n  padding: 4px 8px\\n}\\n\\n.apexcharts-tooltip-boxPlot {\\n  display: flex;\\n  flex-direction: column-reverse\\n}\\n\\n.apexcharts-tooltip-box>div {\\n  margin: 4px 0\\n}\\n\\n.apexcharts-tooltip-box span.value {\\n  font-weight: 700\\n}\\n\\n.apexcharts-tooltip-rangebar {\\n  padding: 5px 8px\\n}\\n\\n.apexcharts-tooltip-rangebar .category {\\n  font-weight: 600;\\n  color: #777\\n}\\n\\n.apexcharts-tooltip-rangebar .series-name {\\n  font-weight: 700;\\n  display: block;\\n  margin-bottom: 5px\\n}\\n\\n.apexcharts-xaxistooltip,\\n.apexcharts-yaxistooltip {\\n  opacity: 0;\\n  pointer-events: none;\\n  color: #373d3f;\\n  font-size: 13px;\\n  text-align: center;\\n  border-radius: 2px;\\n  position: absolute;\\n  z-index: 10;\\n  background: #eceff1;\\n  border: 1px solid #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip {\\n  padding: 9px 10px;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\\n  background: rgba(0, 0, 0, .7);\\n  border: 1px solid rgba(0, 0, 0, .5);\\n  color: #fff\\n}\\n\\n.apexcharts-xaxistooltip:after,\\n.apexcharts-xaxistooltip:before {\\n  left: 50%;\\n  border: solid transparent;\\n  content: \" \";\\n  height: 0;\\n  width: 0;\\n  position: absolute;\\n  pointer-events: none\\n}\\n\\n.apexcharts-xaxistooltip:after {\\n  border-color: transparent;\\n  border-width: 6px;\\n  margin-left: -6px\\n}\\n\\n.apexcharts-xaxistooltip:before {\\n  border-color: transparent;\\n  border-width: 7px;\\n  margin-left: -7px\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after,\\n.apexcharts-xaxistooltip-bottom:before {\\n  bottom: 100%\\n}\\n\\n.apexcharts-xaxistooltip-top:after,\\n.apexcharts-xaxistooltip-top:before {\\n  top: 100%\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after {\\n  border-bottom-color: #eceff1\\n}\\n\\n.apexcharts-xaxistooltip-bottom:before {\\n  border-bottom-color: #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\\n  border-bottom-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-xaxistooltip-top:after {\\n  border-top-color: #eceff1\\n}\\n\\n.apexcharts-xaxistooltip-top:before {\\n  border-top-color: #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\\n  border-top-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-active {\\n  opacity: 1;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-yaxistooltip {\\n  padding: 4px 10px\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\\n  background: rgba(0, 0, 0, .7);\\n  border: 1px solid rgba(0, 0, 0, .5);\\n  color: #fff\\n}\\n\\n.apexcharts-yaxistooltip:after,\\n.apexcharts-yaxistooltip:before {\\n  top: 50%;\\n  border: solid transparent;\\n  content: \" \";\\n  height: 0;\\n  width: 0;\\n  position: absolute;\\n  pointer-events: none\\n}\\n\\n.apexcharts-yaxistooltip:after {\\n  border-color: transparent;\\n  border-width: 6px;\\n  margin-top: -6px\\n}\\n\\n.apexcharts-yaxistooltip:before {\\n  border-color: transparent;\\n  border-width: 7px;\\n  margin-top: -7px\\n}\\n\\n.apexcharts-yaxistooltip-left:after,\\n.apexcharts-yaxistooltip-left:before {\\n  left: 100%\\n}\\n\\n.apexcharts-yaxistooltip-right:after,\\n.apexcharts-yaxistooltip-right:before {\\n  right: 100%\\n}\\n\\n.apexcharts-yaxistooltip-left:after {\\n  border-left-color: #eceff1\\n}\\n\\n.apexcharts-yaxistooltip-left:before {\\n  border-left-color: #90a4ae\\n}\\n\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\\n  border-left-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-yaxistooltip-right:after {\\n  border-right-color: #eceff1\\n}\\n\\n.apexcharts-yaxistooltip-right:before {\\n  border-right-color: #90a4ae\\n}\\n\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\\n  border-right-color: rgba(0, 0, 0, .5)\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-active {\\n  opacity: 1\\n}\\n\\n.apexcharts-yaxistooltip-hidden {\\n  display: none\\n}\\n\\n.apexcharts-xcrosshairs,\\n.apexcharts-ycrosshairs {\\n  pointer-events: none;\\n  opacity: 0;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-xcrosshairs.apexcharts-active,\\n.apexcharts-ycrosshairs.apexcharts-active {\\n  opacity: 1;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-ycrosshairs-hidden {\\n  opacity: 0\\n}\\n\\n.apexcharts-selection-rect {\\n  cursor: move\\n}\\n\\n.svg_select_boundingRect,\\n.svg_select_points_rot {\\n  pointer-events: none;\\n  opacity: 0;\\n  visibility: hidden\\n}\\n\\n.apexcharts-selection-rect+g .svg_select_boundingRect,\\n.apexcharts-selection-rect+g .svg_select_points_rot {\\n  opacity: 0;\\n  visibility: hidden\\n}\\n\\n.apexcharts-selection-rect+g .svg_select_points_l,\\n.apexcharts-selection-rect+g .svg_select_points_r {\\n  cursor: ew-resize;\\n  opacity: 1;\\n  visibility: visible\\n}\\n\\n.svg_select_points {\\n  fill: #efefef;\\n  stroke: #333;\\n  rx: 2\\n}\\n\\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\\n  cursor: crosshair\\n}\\n\\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\\n  cursor: move\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-pan-icon,\\n.apexcharts-reset-icon,\\n.apexcharts-selection-icon,\\n.apexcharts-toolbar-custom-icon,\\n.apexcharts-zoom-icon,\\n.apexcharts-zoomin-icon,\\n.apexcharts-zoomout-icon {\\n  cursor: pointer;\\n  width: 20px;\\n  height: 20px;\\n  line-height: 24px;\\n  color: #6e8192;\\n  text-align: center\\n}\\n\\n.apexcharts-menu-icon svg,\\n.apexcharts-reset-icon svg,\\n.apexcharts-zoom-icon svg,\\n.apexcharts-zoomin-icon svg,\\n.apexcharts-zoomout-icon svg {\\n  fill: #6e8192\\n}\\n\\n.apexcharts-selection-icon svg {\\n  fill: #444;\\n  transform: scale(.76)\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu-icon svg,\\n.apexcharts-theme-dark .apexcharts-pan-icon svg,\\n.apexcharts-theme-dark .apexcharts-reset-icon svg,\\n.apexcharts-theme-dark .apexcharts-selection-icon svg,\\n.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoom-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoomin-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\\n  fill: #f3f4f5\\n}\\n\\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,\\n.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,\\n.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\\n  fill: #008ffb\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-reset-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,\\n.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,\\n.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\\n  fill: #333\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-selection-icon {\\n  position: relative\\n}\\n\\n.apexcharts-reset-icon {\\n  margin-left: 5px\\n}\\n\\n.apexcharts-menu-icon,\\n.apexcharts-reset-icon,\\n.apexcharts-zoom-icon {\\n  transform: scale(.85)\\n}\\n\\n.apexcharts-zoomin-icon,\\n.apexcharts-zoomout-icon {\\n  transform: scale(.7)\\n}\\n\\n.apexcharts-zoomout-icon {\\n  margin-right: 3px\\n}\\n\\n.apexcharts-pan-icon {\\n  transform: scale(.62);\\n  position: relative;\\n  left: 1px;\\n  top: 0\\n}\\n\\n.apexcharts-pan-icon svg {\\n  fill: #fff;\\n  stroke: #6e8192;\\n  stroke-width: 2\\n}\\n\\n.apexcharts-pan-icon.apexcharts-selected svg {\\n  stroke: #008ffb\\n}\\n\\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\\n  stroke: #333\\n}\\n\\n.apexcharts-toolbar {\\n  position: absolute;\\n  z-index: 11;\\n  max-width: 176px;\\n  text-align: right;\\n  border-radius: 3px;\\n  padding: 0 6px 2px;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center\\n}\\n\\n.apexcharts-menu {\\n  background: #fff;\\n  position: absolute;\\n  top: 100%;\\n  border: 1px solid #ddd;\\n  border-radius: 3px;\\n  padding: 3px;\\n  right: 10px;\\n  opacity: 0;\\n  min-width: 110px;\\n  transition: .15s ease all;\\n  pointer-events: none\\n}\\n\\n.apexcharts-menu.apexcharts-menu-open {\\n  opacity: 1;\\n  pointer-events: all;\\n  transition: .15s ease all\\n}\\n\\n.apexcharts-menu-item {\\n  padding: 6px 7px;\\n  font-size: 12px;\\n  cursor: pointer\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-item:hover {\\n  background: #eee\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu {\\n  background: rgba(0, 0, 0, .7);\\n  color: #fff\\n}\\n\\n@media screen and (min-width:768px) {\\n  .apexcharts-canvas:hover .apexcharts-toolbar {\\n    opacity: 1\\n  }\\n}\\n\\n.apexcharts-canvas .apexcharts-element-hidden,\\n.apexcharts-datalabel.apexcharts-element-hidden,\\n.apexcharts-hide .apexcharts-series-points {\\n  opacity: 0;\\n}\\n\\n.apexcharts-hidden-element-shown {\\n  opacity: 1;\\n  transition: 0.25s ease all;\\n}\\n\\n.apexcharts-datalabel,\\n.apexcharts-datalabel-label,\\n.apexcharts-datalabel-value,\\n.apexcharts-datalabels,\\n.apexcharts-pie-label {\\n  cursor: default;\\n  pointer-events: none\\n}\\n\\n.apexcharts-pie-label-delay {\\n  opacity: 0;\\n  animation-name: opaque;\\n  animation-duration: .3s;\\n  animation-fill-mode: forwards;\\n  animation-timing-function: ease\\n}\\n\\n.apexcharts-radialbar-label {\\n  cursor: pointer;\\n}\\n\\n.apexcharts-annotation-rect,\\n.apexcharts-area-series .apexcharts-area,\\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\\n.apexcharts-gridline,\\n.apexcharts-line,\\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\\n.apexcharts-point-annotation-label,\\n.apexcharts-radar-series path:not(.apexcharts-marker),\\n.apexcharts-radar-series polygon,\\n.apexcharts-toolbar svg,\\n.apexcharts-tooltip .apexcharts-marker,\\n.apexcharts-xaxis-annotation-label,\\n.apexcharts-yaxis-annotation-label,\\n.apexcharts-zoom-rect {\\n  pointer-events: none\\n}\\n\\n.apexcharts-tooltip-active .apexcharts-marker {\\n  transition: .15s ease all\\n}\\n\\n.resize-triggers {\\n  animation: 1ms resizeanim;\\n  visibility: hidden;\\n  opacity: 0;\\n  height: 100%;\\n  width: 100%;\\n  overflow: hidden\\n}\\n\\n.contract-trigger:before,\\n.resize-triggers,\\n.resize-triggers>div {\\n  content: \" \";\\n  display: block;\\n  position: absolute;\\n  top: 0;\\n  left: 0\\n}\\n\\n.resize-triggers>div {\\n  height: 100%;\\n  width: 100%;\\n  background: #eee;\\n  overflow: auto\\n}\\n\\n.contract-trigger:before {\\n  overflow: hidden;\\n  width: 200%;\\n  height: 200%\\n}\\n\\n.apexcharts-bar-goals-markers {\\n  pointer-events: none\\n}\\n\\n.apexcharts-bar-shadows {\\n  pointer-events: none\\n}\\n\\n.apexcharts-rangebar-goals-markers {\\n  pointer-events: none\\n}\\n';var h=(null===(l=t.opts.chart)||void 0===l?void 0:l.nonce)||t.w.config.chart.nonce;h&&n.setAttribute(\"nonce\",h),r?s.prepend(n):o.head.appendChild(n)}var c=t.create(t.w.config.series,{});if(!c)return e(t);t.mount(c).then((function(){\"function\"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent(\"mounted\",[t,t.w]),e(c)})).catch((function(t){i(t)}))}else i(new Error(\"Element not found\"))}))}},{key:\"create\",value:function(t,e){var i=this,a=this.w;new qt(this).initModules();var s=this.w.globals;(s.noData=!1,s.animationEnded=!1,this.responsive.checkResponsiveConfig(e),a.config.xaxis.convertedCatToNumeric)&&new F(a.config).convertCatToNumericXaxis(a.config,this.ctx);if(null===this.el)return s.animationEnded=!0,null;if(this.core.setupElements(),\"treemap\"===a.config.chart.type&&(a.config.grid.show=!1,a.config.yaxis[0].show=!1),0===s.svgWidth)return s.animationEnded=!0,null;var r=t;t.forEach((function(t,e){t.hidden&&(r=i.legend.legendHelpers.getSeriesAfterCollapsing({realIndex:e}))}));var o=A.checkComboSeries(r,a.config.chart.type);s.comboCharts=o.comboCharts,s.comboBarCount=o.comboBarCount;var n=r.every((function(t){return t.data&&0===t.data.length}));(0===r.length||n&&s.collapsedSeries.length<1)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(r),this.theme.init(),new W(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),s.noData&&s.collapsedSeries.length!==s.series.length&&!a.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),s.axisCharts&&(this.core.coreCalculations(),\"category\"!==a.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=a.globals.minX,this.ctx.toolbar.maxX=a.globals.maxX),this.formatters.heatmapLabelFormatters(),new A(this).getLargestMarkerSize(),this.dimensions.plotCoords();var l=this.core.xySettings();this.grid.createGridMask();var h=this.core.plotChartType(r,l),c=new G(this);return c.bringForward(),a.config.dataLabels.background.enabled&&c.dataLabelsBackground(),this.core.shiftGraphPosition(),{elGraph:h,xyRatios:l,dimensions:{plot:{left:a.globals.translateX,top:a.globals.translateY,width:a.globals.gridWidth,height:a.globals.gridHeight}}}}},{key:\"mount\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error(\"Not enough data to display or target element not found\"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new Z(i);var o,n,l=i.grid.drawGrid();(i.annotations=new E(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),\"back\"===a.config.grid.position)&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(o=l.elGridBorders)&&void 0!==o&&o.node&&a.globals.dom.elGraphical.add(l.elGridBorders));if(Array.isArray(e.elGraph))for(var h=0;h<e.elGraph.length;h++)a.globals.dom.elGraphical.add(e.elGraph[h]);else a.globals.dom.elGraphical.add(e.elGraph);\"front\"===a.config.grid.position&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(n=l.elGridBorders)&&void 0!==n&&n.node&&a.globals.dom.elGraphical.add(l.elGridBorders));\"front\"===a.config.xaxis.crosshairs.position&&i.crosshairs.drawXCrosshairs(),\"front\"===a.config.yaxis[0].crosshairs.position&&i.crosshairs.drawYCrosshairs(),\"treemap\"!==a.config.chart.type&&i.axes.drawAxis(a.config.chart.type,l);var c=new q(t.ctx,l),d=new Q(t.ctx,l);if(null!==l&&(c.xAxisLabelCorrections(l.xAxisTickWidth),d.setYAxisTextAlignments(),a.config.yaxis.map((function(t,e){-1===a.globals.ignoreYAxisIndexes.indexOf(e)&&d.yAxisTitleRotate(e,t.opposite)}))),i.annotations.drawAxesAnnotations(),!a.globals.noData){if(a.config.tooltip.enabled&&!a.globals.noData&&i.w.globals.tooltip.drawTooltip(e.xyRatios),a.globals.axisCharts&&(a.globals.isXNumeric||a.config.xaxis.convertedCatToNumeric||a.globals.isRangeBar))(a.config.chart.zoom.enabled||a.config.chart.selection&&a.config.chart.selection.enabled||a.config.chart.pan&&a.config.chart.pan.enabled)&&i.zoomPanSelection.init({xyRatios:e.xyRatios});else{var g=a.config.chart.toolbar.tools;[\"zoom\",\"zoomin\",\"zoomout\",\"selection\",\"pan\",\"reset\"].forEach((function(t){g[t]=!1}))}a.config.chart.toolbar.show&&!a.globals.allSeriesCollapsed&&i.toolbar.createToolbar()}a.globals.memory.methodsToExec.length>0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:\"destroy\",value:function(){var t,e;window.removeEventListener(\"resize\",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=$t.get(t))&&(e.disconnect(),$t.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===m.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Zt(this.ctx).clear({isUpdating:!1})}},{key:\"updateOptions\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.w;return o.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:\"updateSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:\"appendSeries\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:\"appendData\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s<a.length;s++)if(null!==t[s]&&void 0!==t[s])for(var r=0;r<t[s].data.length;r++)a[s].data.push(t[s].data[r]);return i.w.config.series=a,e&&(i.w.globals.initialSeries=m.clone(i.w.config.series)),this.update()}},{key:\"update\",value:function(t){var e=this;return new Promise((function(i,a){new Zt(e.ctx).clear({isUpdating:!0});var s=e.create(e.w.config.series,t);if(!s)return i(e);e.mount(s).then((function(){\"function\"==typeof e.w.config.chart.events.updated&&e.w.config.chart.events.updated(e,e.w),e.events.fireEvent(\"updated\",[e,e.w]),e.w.globals.isDirty=!0,i(e)})).catch((function(t){a(t)}))}))}},{key:\"getSyncedCharts\",value:function(){var t=this.getGroupedCharts(),e=[this];return t.length&&(e=[],t.forEach((function(t){e.push(t)}))),e}},{key:\"getGroupedCharts\",value:function(){var t=this;return Apex._chartInstances.filter((function(t){if(t.group)return!0})).map((function(e){return t.w.config.chart.group===e.group?e.chart:t}))}},{key:\"toggleSeries\",value:function(t){return this.series.toggleSeries(t)}},{key:\"highlightSeriesOnLegendHover\",value:function(t,e){return this.series.toggleSeriesOnHover(t,e)}},{key:\"showSeries\",value:function(t){this.series.showSeries(t)}},{key:\"hideSeries\",value:function(t){this.series.hideSeries(t)}},{key:\"highlightSeries\",value:function(t){this.series.highlightSeries(t)}},{key:\"isSeriesHidden\",value:function(t){this.series.isSeriesHidden(t)}},{key:\"resetSeries\",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:\"addEventListener\",value:function(t,e){this.events.addEventListener(t,e)}},{key:\"removeEventListener\",value:function(t,e){this.events.removeEventListener(t,e)}},{key:\"addXaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:\"addYaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:\"addPointAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:\"clearAnnotations\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:\"removeAnnotation\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:\"getChartArea\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-inner\")}},{key:\"getSeriesTotalXRange\",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:\"getHighestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new J(this.ctx).getMinYMaxY(t).highestY}},{key:\"getLowestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new J(this.ctx).getMinYMaxY(t).lowestY}},{key:\"getSeriesTotal\",value:function(){return this.w.globals.seriesTotals}},{key:\"toggleDataPointSelection\",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:\"zoomX\",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:\"setLocale\",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:\"dataURI\",value:function(t){return new U(this.ctx).dataURI(t)}},{key:\"exportToCSV\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new U(this.ctx).exportToCSV(t)}},{key:\"paper\",value:function(){return this.w.globals.dom.Paper}},{key:\"_parentResizeCallback\",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:\"_windowResize\",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:\"_windowResizeHandler\",value:function(){var t=this.w.config.chart.redrawOnWindowResize;\"function\"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:\"getChartByID\",value:function(t){var e=m.escapeString(t);if(Apex._chartInstances){var i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}}},{key:\"initOnLoad\",value:function(){for(var e=document.querySelectorAll(\"[data-apexcharts]\"),i=0;i<e.length;i++){new t(e[i],JSON.parse(e[i].getAttribute(\"data-options\"))).render()}}},{key:\"exec\",value:function(t,e){var i=this.getChartByID(t);if(i){i.w.globals.isExecCalled=!0;var a=null;if(-1!==i.publicMethods.indexOf(e)){for(var s=arguments.length,r=new Array(s>2?s-2:0),o=2;o<s;o++)r[o-2]=arguments[o];a=i[e].apply(i,r)}return a}}},{key:\"merge\",value:function(t,e){return m.extend(t,e)}}]),t}();module.exports=Jt;\n", "\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\nimport 'core-js/stable'\nimport 'regenerator-runtime/runtime'\nimport \"chartkick/chart.js\"\nimport './controllers';\nimport ApexCharts from 'apexcharts'\nwindow.ApexCharts = ApexCharts\n\n// Dashboard chart formatters (referenced from ApexCharts option formatters).\n// Kept here so the JS bodies stay free of `<`/`>`/`&`, which the server-side\n// JSON encoder would otherwise escape and break.\nwindow.ppRupeeShort = function (val) {\n  if (val == null || isNaN(val)) return ''\n  var a = Math.abs(val)\n  if (a >= 1e7) return '\u20B9' + (+(val / 1e7).toFixed(2)) + ' Cr'\n  if (a >= 1e5) return '\u20B9' + (+(val / 1e5).toFixed(2)) + ' L'\n  if (a >= 1e3) return '\u20B9' + (+(val / 1e3).toFixed(1)) + ' K'\n  return '\u20B9' + (+val)\n}\nwindow.ppRupeeFull = function (val) {\n  return '\u20B9 ' + (val == null || isNaN(val) ? 0 : val).toLocaleString('en-IN')\n}\n\n// Custom tooltip for the Business Trend \"Overview\" metric. Shows the three\n// plotted series (Earning/Expenses/Payment) plus derived Profit and Due, read\n// from the aligned arrays stashed on #pp-trend-extra[data-trend]. Kept here so\n// the HTML/quotes/`<>` stay out of the server-side JSON option string.\nwindow.ppTrendTooltip = function (opts) {\n  var i = opts.dataPointIndex\n  var el = document.getElementById('pp-trend-extra')\n  var extra = {}\n  try { extra = JSON.parse(el.getAttribute('data-trend')) } catch (e) { extra = {} }\n  var label = (extra.labels && extra.labels[i] != null) ? extra.labels[i] : ''\n  var at = function (arr) { return (arr && arr[i] != null) ? Number(arr[i]) : 0 }\n\n  var row = function (color, name, val) {\n    return '<div style=\"display:flex;align-items:center;justify-content:space-between;gap:16px;padding:3px 0;\">' +\n      '<span style=\"display:flex;align-items:center;gap:7px;color:#475569;font-size:12px;\">' +\n      '<span style=\"width:9px;height:9px;border-radius:9px;background:' + color + ';display:inline-block;\"></span>' + name + '</span>' +\n      '<span style=\"color:#0f172a;font-size:12px;font-weight:600;\">' + window.ppRupeeFull(val) + '</span>' +\n      '</div>'\n  }\n\n  var earning = at(extra.earning)\n  var expense = at(extra.expenses)\n  var payment = at(extra.payment)\n  var profit = at(extra.profit)\n  var due = at(extra.due)\n  var profitColor = profit < 0 ? '#EF4444' : '#10B981'\n\n  return '<div style=\"padding:10px 12px;font-family:Manrope,sans-serif;min-width:210px;\">' +\n    '<div style=\"font-size:12px;font-weight:700;color:#071226;margin-bottom:6px;\">' + label + '</div>' +\n    row('#3D73B6', 'Earning', earning) +\n    row('#FF9F1C', 'Expenses', expense) +\n    row('#10B981', 'Payment', payment) +\n    '<div style=\"height:1px;background:#eef2f6;margin:6px 0;\"></div>' +\n    row(profitColor, 'Profit', profit) +\n    row('#8B5CF6', 'Due', due) +\n    '</div>'\n}\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\nimport \"@hotwired/turbo-rails\"\n\nimport \"trix\"\nimport \"@rails/actiontext\"\n", "import Chartkick from \"chartkick\"\nimport Chart from \"chart.js/auto\"\nimport \"chartjs-adapter-date-fns\"\n\nChartkick.use(Chart)\n", "/*!\n * @kurkle/color v0.3.4\n * https://github.com/kurkle/color#readme\n * (c) 2024 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n  return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n  return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n  return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n  return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n  return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n  return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n  var len = str.length;\n  var ret;\n  if (str[0] === '#') {\n    if (len === 4 || len === 5) {\n      ret = {\n        r: 255 & map$1[str[1]] * 17,\n        g: 255 & map$1[str[2]] * 17,\n        b: 255 & map$1[str[3]] * 17,\n        a: len === 5 ? map$1[str[4]] * 17 : 255\n      };\n    } else if (len === 7 || len === 9) {\n      ret = {\n        r: map$1[str[1]] << 4 | map$1[str[2]],\n        g: map$1[str[3]] << 4 | map$1[str[4]],\n        b: map$1[str[5]] << 4 | map$1[str[6]],\n        a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n      };\n    }\n  }\n  return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n  var f = isShort(v) ? h1 : h2;\n  return v\n    ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n    : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n  const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n  const rgb = hsl2rgbn(h, 1, 0.5);\n  let i;\n  if (w + b > 1) {\n    i = 1 / (w + b);\n    w *= i;\n    b *= i;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] *= 1 - w - b;\n    rgb[i] += w;\n  }\n  return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n  if (r === max) {\n    return ((g - b) / d) + (g < b ? 6 : 0);\n  }\n  if (g === max) {\n    return (b - r) / d + 2;\n  }\n  return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n  const range = 255;\n  const r = v.r / range;\n  const g = v.g / range;\n  const b = v.b / range;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n  let h, s, d;\n  if (max !== min) {\n    d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    h = hueValue(r, g, b, d, max);\n    h = h * 60 + 0.5;\n  }\n  return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n  return (\n    Array.isArray(a)\n      ? f(a[0], a[1], a[2])\n      : f(a, b, c)\n  ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n  return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n  return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n  return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n  return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n  const m = HUE_RE.exec(str);\n  let a = 255;\n  let v;\n  if (!m) {\n    return;\n  }\n  if (m[5] !== v) {\n    a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n  }\n  const h = hue(+m[2]);\n  const p1 = +m[3] / 100;\n  const p2 = +m[4] / 100;\n  if (m[1] === 'hwb') {\n    v = hwb2rgb(h, p1, p2);\n  } else if (m[1] === 'hsv') {\n    v = hsv2rgb(h, p1, p2);\n  } else {\n    v = hsl2rgb(h, p1, p2);\n  }\n  return {\n    r: v[0],\n    g: v[1],\n    b: v[2],\n    a: a\n  };\n}\nfunction rotate(v, deg) {\n  var h = rgb2hsl(v);\n  h[0] = hue(h[0] + deg);\n  h = hsl2rgb(h);\n  v.r = h[0];\n  v.g = h[1];\n  v.b = h[2];\n}\nfunction hslString(v) {\n  if (!v) {\n    return;\n  }\n  const a = rgb2hsl(v);\n  const h = a[0];\n  const s = n2p(a[1]);\n  const l = n2p(a[2]);\n  return v.a < 255\n    ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n    : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n  const unpacked = {};\n  const keys = Object.keys(names$1);\n  const tkeys = Object.keys(map);\n  let i, j, k, ok, nk;\n  for (i = 0; i < keys.length; i++) {\n    ok = nk = keys[i];\n    for (j = 0; j < tkeys.length; j++) {\n      k = tkeys[j];\n      nk = nk.replace(k, map[k]);\n    }\n    k = parseInt(names$1[ok], 16);\n    unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n  }\n  return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n  if (!names) {\n    names = unpack();\n    names.transparent = [0, 0, 0, 0];\n  }\n  const a = names[str.toLowerCase()];\n  return a && {\n    r: a[0],\n    g: a[1],\n    b: a[2],\n    a: a.length === 4 ? a[3] : 255\n  };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n  const m = RGB_RE.exec(str);\n  let a = 255;\n  let r, g, b;\n  if (!m) {\n    return;\n  }\n  if (m[7] !== r) {\n    const v = +m[7];\n    a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n  }\n  r = +m[1];\n  g = +m[3];\n  b = +m[5];\n  r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n  g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n  b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n  return {\n    r: r,\n    g: g,\n    b: b,\n    a: a\n  };\n}\nfunction rgbString(v) {\n  return v && (\n    v.a < 255\n      ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n      : `rgb(${v.r}, ${v.g}, ${v.b})`\n  );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n  const r = from(b2n(rgb1.r));\n  const g = from(b2n(rgb1.g));\n  const b = from(b2n(rgb1.b));\n  return {\n    r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n    g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n    b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n    a: rgb1.a + t * (rgb2.a - rgb1.a)\n  };\n}\n\nfunction modHSL(v, i, ratio) {\n  if (v) {\n    let tmp = rgb2hsl(v);\n    tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n    tmp = hsl2rgb(tmp);\n    v.r = tmp[0];\n    v.g = tmp[1];\n    v.b = tmp[2];\n  }\n}\nfunction clone(v, proto) {\n  return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n  var v = {r: 0, g: 0, b: 0, a: 255};\n  if (Array.isArray(input)) {\n    if (input.length >= 3) {\n      v = {r: input[0], g: input[1], b: input[2], a: 255};\n      if (input.length > 3) {\n        v.a = n2b(input[3]);\n      }\n    }\n  } else {\n    v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n    v.a = n2b(v.a);\n  }\n  return v;\n}\nfunction functionParse(str) {\n  if (str.charAt(0) === 'r') {\n    return rgbParse(str);\n  }\n  return hueParse(str);\n}\nclass Color {\n  constructor(input) {\n    if (input instanceof Color) {\n      return input;\n    }\n    const type = typeof input;\n    let v;\n    if (type === 'object') {\n      v = fromObject(input);\n    } else if (type === 'string') {\n      v = hexParse(input) || nameParse(input) || functionParse(input);\n    }\n    this._rgb = v;\n    this._valid = !!v;\n  }\n  get valid() {\n    return this._valid;\n  }\n  get rgb() {\n    var v = clone(this._rgb);\n    if (v) {\n      v.a = b2n(v.a);\n    }\n    return v;\n  }\n  set rgb(obj) {\n    this._rgb = fromObject(obj);\n  }\n  rgbString() {\n    return this._valid ? rgbString(this._rgb) : undefined;\n  }\n  hexString() {\n    return this._valid ? hexString(this._rgb) : undefined;\n  }\n  hslString() {\n    return this._valid ? hslString(this._rgb) : undefined;\n  }\n  mix(color, weight) {\n    if (color) {\n      const c1 = this.rgb;\n      const c2 = color.rgb;\n      let w2;\n      const p = weight === w2 ? 0.5 : weight;\n      const w = 2 * p - 1;\n      const a = c1.a - c2.a;\n      const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      w2 = 1 - w1;\n      c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n      c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n      c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n      c1.a = p * c1.a + (1 - p) * c2.a;\n      this.rgb = c1;\n    }\n    return this;\n  }\n  interpolate(color, t) {\n    if (color) {\n      this._rgb = interpolate(this._rgb, color._rgb, t);\n    }\n    return this;\n  }\n  clone() {\n    return new Color(this.rgb);\n  }\n  alpha(a) {\n    this._rgb.a = n2b(a);\n    return this;\n  }\n  clearer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 - ratio;\n    return this;\n  }\n  greyscale() {\n    const rgb = this._rgb;\n    const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n    rgb.r = rgb.g = rgb.b = val;\n    return this;\n  }\n  opaquer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 + ratio;\n    return this;\n  }\n  negate() {\n    const v = this._rgb;\n    v.r = 255 - v.r;\n    v.g = 255 - v.g;\n    v.b = 255 - v.b;\n    return this;\n  }\n  lighten(ratio) {\n    modHSL(this._rgb, 2, ratio);\n    return this;\n  }\n  darken(ratio) {\n    modHSL(this._rgb, 2, -ratio);\n    return this;\n  }\n  saturate(ratio) {\n    modHSL(this._rgb, 1, ratio);\n    return this;\n  }\n  desaturate(ratio) {\n    modHSL(this._rgb, 1, -ratio);\n    return this;\n  }\n  rotate(deg) {\n    rotate(this._rgb, deg);\n    return this;\n  }\n}\n\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n", "/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n  /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n  let id = 0;\n  return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n  return value === null || typeof value === 'undefined';\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray<T = unknown>(value: unknown): value is T[] {\n  if (Array.isArray && Array.isArray(value)) {\n    return true;\n  }\n  const type = Object.prototype.toString.call(value);\n  if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value  - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n  return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n  isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault<T>(value: T | undefined, defaultValue: T) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback<T extends (this: TA, ...restArgs: unknown[]) => R, TA, R>(\n  fn: T | undefined,\n  args: unknown[],\n  thisArg?: TA\n): R | undefined {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each<T, TA>(\n  loopable: Record<string, T>,\n  fn: (this: TA, v: T, i: string) => void,\n  thisArg?: TA,\n  reverse?: boolean\n): void;\nexport function each<T, TA>(\n  loopable: T[],\n  fn: (this: TA, v: T, i: number) => void,\n  thisArg?: TA,\n  reverse?: boolean\n): void;\nexport function each<T, TA>(\n  loopable: T[] | Record<string, T>,\n  fn: (this: TA, v: T, i: any) => void,\n  thisArg?: TA,\n  reverse?: boolean\n) {\n  let i: number, len: number, keys: string[];\n  if (isArray(loopable)) {\n    len = loopable.length;\n    if (reverse) {\n      for (i = len - 1; i >= 0; i--) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    }\n  } else if (isObject(loopable)) {\n    keys = Object.keys(loopable);\n    len = keys.length;\n    for (i = 0; i < len; i++) {\n      fn.call(thisArg, loopable[keys[i]], keys[i]);\n    }\n  }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n  let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone<T>(source: T): T {\n  if (isArray(source)) {\n    return source.map(clone) as unknown as T;\n  }\n\n  if (isObject(source)) {\n    const target = Object.create(null);\n    const keys = Object.keys(source);\n    const klen = keys.length;\n    let k = 0;\n\n    for (; k < klen; ++k) {\n      target[keys[k]] = clone(source[keys[k]]);\n    }\n\n    return target;\n  }\n\n  return source;\n}\n\nfunction isValidKey(key: string) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n  if (!isValidKey(key)) {\n    return;\n  }\n\n  const tval = target[key];\n  const sval = source[key];\n\n  if (isObject(tval) && isObject(sval)) {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone(sval);\n  }\n}\n\nexport interface MergeOptions {\n  merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge<T>(target: T, source: [], options?: MergeOptions): T;\nexport function merge<T, S1>(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge<T, S1>(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge<T, S1, S2>(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge<T, S1, S2, S3>(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge<T, S1, S2, S3, S4>(\n  target: T,\n  source: [S1, S2, S3, S4],\n  options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge<T>(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge<T>(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n\n  if (!isObject(target)) {\n    return target as AnyObject;\n  }\n\n  options = options || {};\n  const merger = options.merger || _merger;\n  let current: AnyObject;\n\n  for (let i = 0; i < ilen; ++i) {\n    current = sources[i];\n    if (!isObject(current)) {\n      continue;\n    }\n\n    const keys = Object.keys(current);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, current, options as AnyObject);\n    }\n  }\n\n  return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf<T>(target: T, source: []): T;\nexport function mergeIf<T, S1>(target: T, source: S1): T & S1;\nexport function mergeIf<T, S1>(target: T, source: [S1]): T & S1;\nexport function mergeIf<T, S1, S2>(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf<T, S1, S2, S3>(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf<T, S1, S2, S3, S4>(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf<T>(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf<T>(target: T, source: AnyObject[]): AnyObject {\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  return merge<T>(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n  if (!isValidKey(key)) {\n    return;\n  }\n\n  const tval = target[key];\n  const sval = source[key];\n\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone(sval);\n  }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n      '\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n  // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n  '': v => v,\n  // default resolvers\n  x: o => o.x,\n  y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n  const parts = key.split('.');\n  const keys: string[] = [];\n  let tmp = '';\n  for (const part of parts) {\n    tmp += part;\n    if (tmp.endsWith('\\\\')) {\n      tmp = tmp.slice(0, -1) + '.';\n    } else {\n      keys.push(tmp);\n      tmp = '';\n    }\n  }\n  return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n  const keys = _splitKey(key);\n  return obj => {\n    for (const k of keys) {\n      if (k === '') {\n        // For backward compatibility:\n        // Chart.helpers.core resolveObjectKey should break at empty key\n        break;\n      }\n      obj = obj && obj[k];\n    }\n    return obj;\n  };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n  const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n  return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = <T>(a: Set<T>, b: Set<T>) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n", "import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n  return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n  const roundedRange = Math.round(range);\n  range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n  const niceRange = Math.pow(10, Math.floor(log10(range)));\n  const fraction = range / niceRange;\n  const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n  return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n  const result: number[] = [];\n  const sqrt = Math.sqrt(value);\n  let i: number;\n\n  for (i = 1; i < sqrt; i++) {\n    if (value % i === 0) {\n      result.push(i);\n      result.push(value / i);\n    }\n  }\n  if (sqrt === (sqrt | 0)) { // if value is a square number\n    result.push(sqrt);\n  }\n\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\n\nexport function isNumber(n: unknown): n is number {\n  return !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n  array: Record<string, number>[],\n  target: { min: number, max: number },\n  property: string\n) {\n  let i: number, ilen: number, value: number;\n\n  for (i = 0, ilen = array.length; i < ilen; i++) {\n    value = array[i][property];\n    if (!isNaN(value)) {\n      target.min = Math.min(target.min, value);\n      target.max = Math.max(target.max, value);\n    }\n  }\n}\n\nexport function toRadians(degrees: number) {\n  return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n  return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n  if (!isFiniteNumber(x)) {\n    return;\n  }\n  let e = 1;\n  let p = 0;\n  while (Math.round(x * e) / e !== x) {\n    e *= 10;\n    p++;\n  }\n  return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n  centrePoint: Point,\n  anglePoint: Point\n) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n  if (angle < (-0.5 * PI)) {\n    angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n  }\n\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n  return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n  return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n  const a = _normalizeAngle(angle);\n  const s = _normalizeAngle(start);\n  const e = _normalizeAngle(end);\n  const angleToStart = _normalizeAngle(s - a);\n  const angleToEnd = _normalizeAngle(e - a);\n  const startToAngle = _normalizeAngle(a - s);\n  const endToAngle = _normalizeAngle(a - e);\n  return a === s || a === e || (sameAngleIsFullCircle && s === e)\n    || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n  return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n  return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n", "import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n  table: number[],\n  value: number,\n  cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup<T>(\n  table: T[],\n  value: number,\n  cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n  table: unknown[],\n  value: number,\n  cmp?: (value: number) => boolean\n) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid: number;\n\n  while (hi - lo > 1) {\n    mid = (lo + hi) >> 1;\n    if (cmp(mid)) {\n      lo = mid;\n    } else {\n      hi = mid;\n    }\n  }\n\n  return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n  table: Record<string, number>[],\n  key: string,\n  value: number,\n  last?: boolean\n) =>\n  _lookup(table, value, last\n    ? index => {\n      const ti = table[index][key];\n      return ti < value || ti === value && table[index + 1][key] === value;\n    }\n    : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n  table: Record<string, number>[],\n  key: string,\n  value: number\n) =>\n  _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n  let start = 0;\n  let end = values.length;\n\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener<T> {\n  _onDataPush?(...item: T[]): void;\n  _onDataPop?(): void;\n  _onDataShift?(): void;\n  _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n  _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;\nexport function listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n\n        return res;\n      }\n    });\n  });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;\nexport function unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n\n  if (listeners.length > 0) {\n    return;\n  }\n\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n\n  delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique<T>(items: T[]) {\n  const set = new Set<T>(items);\n\n  if (set.size === items.length) {\n    return items;\n  }\n\n  return Array.from(set);\n}\n", "import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled<TArgs extends Array<any>>(\n  fn: (...args: TArgs) => void,\n  thisArg: any,\n) {\n  let argsToUse = [] as TArgs;\n  let ticking = false;\n\n  return function(...args: TArgs) {\n    // Save the args for use later\n    argsToUse = args;\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, argsToUse);\n      });\n    }\n  };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce<TArgs extends Array<any>>(fn: (...args: TArgs) => void, delay: number) {\n  let timeout;\n  return function(...args: TArgs) {\n    if (delay) {\n      clearTimeout(timeout);\n      timeout = setTimeout(fn, delay, args);\n    } else {\n      fn.apply(this, args);\n    }\n    return delay;\n  };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n  const pointCount = points.length;\n\n  let start = 0;\n  let count = pointCount;\n\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        // @ts-expect-error Need to type _parsed\n        _lookupByKey(_parsed, axis, min).lo,\n        // @ts-expect-error Need to fix types on _lookupByKey\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        // @ts-expect-error Need to type _parsed\n        _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n        // @ts-expect-error Need to fix types on _lookupByKey\n        animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n      start, pointCount) - start;\n    } else {\n      count = pointCount - start;\n    }\n  }\n\n  return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n  const {xScale, yScale, _scaleRanges} = meta;\n  const newRanges = {\n    xmin: xScale.min,\n    xmax: xScale.max,\n    ymin: yScale.min,\n    ymax: yScale.max\n  };\n  if (!_scaleRanges) {\n    meta._scaleRanges = newRanges;\n    return true;\n  }\n  const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n", "import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n  linear: (t: number) => t,\n\n  easeInQuad: (t: number) => t * t,\n\n  easeOutQuad: (t: number) => -t * (t - 2),\n\n  easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n\n  easeInCubic: (t: number) => t * t * t,\n\n  easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n  easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n\n  easeInQuart: (t: number) => t * t * t * t,\n\n  easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n  easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n\n  easeInQuint: (t: number) => t * t * t * t * t,\n\n  easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n  easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n  easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n  easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n  easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n  easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n  easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n  easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n    ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n    : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n  easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n  easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n  easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n  easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n  easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n  easeInOutElastic(t: number) {\n    const s = 0.1125;\n    const p = 0.45;\n    return atEdge(t) ? t :\n      t < 0.5\n        ? 0.5 * elasticIn(t * 2, s, p)\n        : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n  },\n\n  easeInBack(t: number) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n\n  easeOutBack(t: number) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n\n  easeInOutBack(t: number) {\n    let s = 1.70158;\n    if ((t /= 0.5) < 1) {\n      return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n    }\n    return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n  },\n\n  easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n  easeOutBounce(t: number) {\n    const m = 7.5625;\n    const d = 2.75;\n    if (t < (1 / d)) {\n      return m * t * t;\n    }\n    if (t < (2 / d)) {\n      return m * (t -= (1.5 / d)) * t + 0.75;\n    }\n    if (t < (2.5 / d)) {\n      return m * (t -= (2.25 / d)) * t + 0.9375;\n    }\n    return m * (t -= (2.625 / d)) * t + 0.984375;\n  },\n\n  easeInOutBounce: (t: number) => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n", "import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n\n  return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n  value:\n  | string\n  | { r: number; g: number; b: number; a: number }\n  | [number, number, number]\n  | [number, number, number, number]\n): Color;\nexport function color(value) {\n  return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n", "const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n  defaults.set('animation', {\n    delay: undefined,\n    duration: 1000,\n    easing: 'easeOutQuart',\n    fn: undefined,\n    from: undefined,\n    loop: undefined,\n    to: undefined,\n    type: undefined,\n  });\n\n  defaults.describe('animation', {\n    _fallback: false,\n    _indexable: false,\n    _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n  });\n\n  defaults.set('animations', {\n    colors: {\n      type: 'color',\n      properties: colors\n    },\n    numbers: {\n      type: 'number',\n      properties: numbers\n    },\n  });\n\n  defaults.describe('animations', {\n    _fallback: 'animation',\n  });\n\n  defaults.set('transitions', {\n    active: {\n      animation: {\n        duration: 400\n      }\n    },\n    resize: {\n      animation: {\n        duration: 0\n      }\n    },\n    show: {\n      animations: {\n        colors: {\n          from: 'transparent'\n        },\n        visible: {\n          type: 'boolean',\n          duration: 0 // show immediately\n        },\n      }\n    },\n    hide: {\n      animations: {\n        colors: {\n          to: 'transparent'\n        },\n        visible: {\n          type: 'boolean',\n          easing: 'linear',\n          fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n        },\n      }\n    }\n  });\n}\n", "export function applyLayoutsDefaults(defaults) {\n  defaults.set('layout', {\n    autoPadding: true,\n    padding: {\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0\n    }\n  });\n}\n", "\nconst intlCache = new Map<string, Intl.NumberFormat>();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n  options = options || {};\n  const cacheKey = locale + JSON.stringify(options);\n  let formatter = intlCache.get(cacheKey);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, options);\n    intlCache.set(cacheKey, formatter);\n  }\n  return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n  return getNumberFormat(locale, options).format(num);\n}\n", "import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n  /**\n   * Formatter for value labels\n   * @method Chart.Ticks.formatters.values\n   * @param value the value to display\n   * @return {string|string[]} the label to display\n   */\n  values(value) {\n    return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n  },\n\n  /**\n   * Formatter for numeric ticks\n   * @method Chart.Ticks.formatters.numeric\n   * @param tickValue {number} the value to be formatted\n   * @param index {number} the position of the tickValue parameter in the ticks array\n   * @param ticks {object[]} the list of ticks being converted\n   * @return {string} string representation of the tickValue parameter\n   */\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0'; // never show decimal places for 0\n    }\n\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n    if (ticks.length > 1) {\n      // all ticks are small or there huge numbers; use scientific notation\n      const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n      if (maxTick < 1e-4 || maxTick > 1e+15) {\n        notation = 'scientific';\n      }\n\n      delta = calculateDelta(tickValue, ticks);\n    }\n\n    const logDelta = log10(Math.abs(delta));\n\n    // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n    // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n    // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n    //\n    // toFixed has a max of 20 decimal places\n    const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n\n    return formatNumber(tickValue, locale, options);\n  },\n\n\n  /**\n   * Formatter for logarithmic ticks\n   * @method Chart.Ticks.formatters.logarithmic\n   * @param tickValue {number} the value to be formatted\n   * @param index {number} the position of the tickValue parameter in the ticks array\n   * @param ticks {object[]} the list of ticks being converted\n   * @return {string} string representation of the tickValue parameter\n   */\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n    if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n  // Figure out how many digits to show\n  // The space between the first two ticks might be smaller than normal spacing\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n  // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    // not an integer\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n", "import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n  defaults.set('scale', {\n    display: true,\n    offset: false,\n    reverse: false,\n    beginAtZero: false,\n\n    /**\n     * Scale boundary strategy (bypassed by min/max time options)\n     * - `data`: make sure data are fully visible, ticks outside are removed\n     * - `ticks`: make sure ticks are fully visible, data outside are truncated\n     * @see https://github.com/chartjs/Chart.js/pull/4556\n     * @since 3.0.0\n     */\n    bounds: 'ticks',\n\n    clip: true,\n\n    /**\n     * Addition grace added to max and reduced from min data value.\n     * @since 3.0.0\n     */\n    grace: 0,\n\n    // grid line settings\n    grid: {\n      display: true,\n      lineWidth: 1,\n      drawOnChartArea: true,\n      drawTicks: true,\n      tickLength: 8,\n      tickWidth: (_ctx, options) => options.lineWidth,\n      tickColor: (_ctx, options) => options.color,\n      offset: false,\n    },\n\n    border: {\n      display: true,\n      dash: [],\n      dashOffset: 0.0,\n      width: 1\n    },\n\n    // scale title\n    title: {\n      // display property\n      display: false,\n\n      // actual label\n      text: '',\n\n      // top/bottom padding\n      padding: {\n        top: 4,\n        bottom: 4\n      }\n    },\n\n    // label settings\n    ticks: {\n      minRotation: 0,\n      maxRotation: 50,\n      mirror: false,\n      textStrokeWidth: 0,\n      textStrokeColor: '',\n      padding: 3,\n      display: true,\n      autoSkip: true,\n      autoSkipPadding: 3,\n      labelOffset: 0,\n      // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n      callback: Ticks.formatters.values,\n      minor: {},\n      major: {},\n      align: 'center',\n      crossAlign: 'near',\n\n      showLabelBackdrop: false,\n      backdropColor: 'rgba(255, 255, 255, 0.75)',\n      backdropPadding: 2,\n    }\n  });\n\n  defaults.route('scale.ticks', 'color', '', 'color');\n  defaults.route('scale.grid', 'color', '', 'borderColor');\n  defaults.route('scale.border', 'color', '', 'borderColor');\n  defaults.route('scale.title', 'color', '', 'color');\n\n  defaults.describe('scale', {\n    _fallback: false,\n    _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n    _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n  });\n\n  defaults.describe('scales', {\n    _fallback: 'scale',\n  });\n\n  defaults.describe('scale.ticks', {\n    _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n    _indexable: (name) => name !== 'backdropPadding',\n  });\n}\n", "import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n  if (!key) {\n    return node;\n  }\n  const keys = key.split('.');\n  for (let i = 0, n = keys.length; i < n; ++i) {\n    const k = keys[i];\n    node = node[k] || (node[k] = Object.create(null));\n  }\n  return node;\n}\n\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope(root, scope), values);\n  }\n  return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n  constructor(_descriptors, _appliers) {\n    this.animation = undefined;\n    this.backgroundColor = 'rgba(0,0,0,0.1)';\n    this.borderColor = 'rgba(0,0,0,0.1)';\n    this.color = '#666';\n    this.datasets = {};\n    this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n    this.elements = {};\n    this.events = [\n      'mousemove',\n      'mouseout',\n      'click',\n      'touchstart',\n      'touchmove'\n    ];\n    this.font = {\n      family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n      size: 12,\n      style: 'normal',\n      lineHeight: 1.2,\n      weight: null\n    };\n    this.hover = {};\n    this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n    this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n    this.hoverColor = (ctx, options) => getHoverColor(options.color);\n    this.indexAxis = 'x';\n    this.interaction = {\n      mode: 'nearest',\n      intersect: true,\n      includeInvisible: false\n    };\n    this.maintainAspectRatio = true;\n    this.onHover = null;\n    this.onClick = null;\n    this.parsing = true;\n    this.plugins = {};\n    this.responsive = true;\n    this.scale = undefined;\n    this.scales = {};\n    this.showLine = true;\n    this.drawActiveElementsOnTop = true;\n\n    this.describe(_descriptors);\n    this.apply(_appliers);\n  }\n\n  /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n\n  /**\n\t * @param {string} scope\n\t */\n  get(scope) {\n    return getScope(this, scope);\n  }\n\n  /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n\n  /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t *   - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope(this, scope);\n    const targetScopeObject = getScope(this, targetScope);\n    const privateName = '_' + name;\n\n    Object.defineProperties(scopeObject, {\n      // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\n      // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n      [name]: {\n        enumerable: true,\n        get() {\n          const local = this[privateName];\n          const target = targetScopeObject[targetName];\n          if (isObject(local)) {\n            return Object.assign({}, target, local);\n          }\n          return valueOrDefault(local, target);\n        },\n        set(value) {\n          this[privateName] = value;\n        }\n      }\n    });\n  }\n\n  apply(appliers) {\n    appliers.forEach((apply) => apply(this));\n  }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n  _scriptable: (name) => !name.startsWith('on'),\n  _indexable: (name) => name !== 'events',\n  hover: {\n    _fallback: 'interaction'\n  },\n  interaction: {\n    _scriptable: false,\n    _indexable: false,\n  }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n", "import type {\n  Chart,\n  Point,\n  FontSpec,\n  CanvasFontSpec,\n  PointStyle,\n  RenderTextOpts,\n  BackdropOptions\n} from '../types/index.js';\nimport type {\n  TRBL,\n  SplinePoint,\n  RoundedRect,\n  TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\n  }\n\n  return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n  ctx: CanvasRenderingContext2D,\n  data: Record<string, number>,\n  gc: string[],\n  longest: number,\n  string: string\n) {\n  let textWidth = data[string];\n  if (!textWidth) {\n    textWidth = data[string] = ctx.measureText(string).width;\n    gc.push(string);\n  }\n  if (textWidth > longest) {\n    longest = textWidth;\n  }\n  return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n  ctx: CanvasRenderingContext2D,\n  font: string,\n  arrayOfThings: Things,\n  cache?: {data?: Record<string, number>, garbageCollect?: string[], font?: string}\n) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n\n  ctx.save();\n\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n\n    // Undefined strings and arrays should not be measured\n    if (thing !== undefined && thing !== null && !isArray(thing)) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      // if it is an array lets measure each element\n      // to do maybe simplify this function a bit so we can do this more recursively?\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        // Undefined strings and arrays should not be measured\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n\n  ctx.restore();\n\n  const gcLen = gc.length / 2;\n  if (gcLen > arrayOfThings.length) {\n    for (i = 0; i < gcLen; i++) {\n      delete data[gc[i]];\n    }\n    gc.splice(0, gcLen);\n  }\n  return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n  const devicePixelRatio = chart.currentDevicePixelRatio;\n  const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n  return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n  ctx = ctx || canvas.getContext('2d');\n\n  ctx.save();\n  // canvas.width and canvas.height do not consider the canvas transform,\n  // while clearRect does\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\n\nexport interface DrawPointOptions {\n  pointStyle: PointStyle;\n  rotation?: number;\n  radius: number;\n  borderWidth: number;\n}\n\nexport function drawPoint(\n  ctx: CanvasRenderingContext2D,\n  options: DrawPointOptions,\n  x: number,\n  y: number\n) {\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n  ctx: CanvasRenderingContext2D,\n  options: DrawPointOptions,\n  x: number,\n  y: number,\n  w: number\n) {\n  let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n\n  if (style && typeof style === 'object') {\n    type = style.toString();\n    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(rad);\n      ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n      ctx.restore();\n      return;\n    }\n  }\n\n  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n\n  ctx.beginPath();\n\n  switch (style) {\n  // Default includes circle\n    default:\n      if (w) {\n        ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n      } else {\n        ctx.arc(x, y, radius, 0, TAU);\n      }\n      ctx.closePath();\n      break;\n    case 'triangle':\n      width = w ? w / 2 : radius;\n      ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      rad += TWO_THIRDS_PI;\n      ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      rad += TWO_THIRDS_PI;\n      ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      ctx.closePath();\n      break;\n    case 'rectRounded':\n    // NOTE: the rounded rect implementation changed to use `arc` instead of\n    // `quadraticCurveTo` since it generates better results when rect is\n    // almost a circle. 0.516 (instead of 0.5) produces results with visually\n    // closer proportion to the previous impl and it is inscribed in the\n    // circle with `radius`. For more details, see the following PRs:\n    // https://github.com/chartjs/Chart.js/issues/5597\n    // https://github.com/chartjs/Chart.js/issues/5858\n      cornerRadius = radius * 0.516;\n      size = radius - cornerRadius;\n      xOffset = Math.cos(rad + QUARTER_PI) * size;\n      xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n      yOffset = Math.sin(rad + QUARTER_PI) * size;\n      yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n      ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n      ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n      ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n      ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n      ctx.closePath();\n      break;\n    case 'rect':\n      if (!rotation) {\n        size = Math.SQRT1_2 * radius;\n        width = w ? w / 2 : size;\n        ctx.rect(x - width, y - size, 2 * width, 2 * size);\n        break;\n      }\n      rad += QUARTER_PI;\n    /* falls through */\n    case 'rectRot':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      ctx.closePath();\n      break;\n    case 'crossRot':\n      rad += QUARTER_PI;\n    /* falls through */\n    case 'cross':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      break;\n    case 'star':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      rad += QUARTER_PI;\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      break;\n    case 'line':\n      xOffset = w ? w / 2 : Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      ctx.moveTo(x - xOffset, y - yOffset);\n      ctx.lineTo(x + xOffset, y + yOffset);\n      break;\n    case 'dash':\n      ctx.moveTo(x, y);\n      ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n      break;\n    case false:\n      ctx.closePath();\n      break;\n  }\n\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n  point: Point,\n  area: TRBL,\n  margin?: number\n) {\n  margin = margin || 0.5; // margin - default is to match rounded decimals\n\n  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n  ctx.save();\n  ctx.beginPath();\n  ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n  ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n  ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n  ctx: CanvasRenderingContext2D,\n  previous: Point,\n  target: Point,\n  flip?: boolean,\n  mode?: string\n) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  if (mode === 'middle') {\n    const midpoint = (previous.x + target.x) / 2.0;\n    ctx.lineTo(midpoint, previous.y);\n    ctx.lineTo(midpoint, target.y);\n  } else if (mode === 'after' !== !!flip) {\n    ctx.lineTo(previous.x, target.y);\n  } else {\n    ctx.lineTo(target.x, previous.y);\n  }\n  ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n  ctx: CanvasRenderingContext2D,\n  previous: SplinePoint,\n  target: SplinePoint,\n  flip?: boolean\n) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  ctx.bezierCurveTo(\n    flip ? previous.cp1x : previous.cp2x,\n    flip ? previous.cp1y : previous.cp2y,\n    flip ? target.cp2x : target.cp1x,\n    flip ? target.cp2y : target.cp1y,\n    target.x,\n    target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\n\nfunction decorateText(\n  ctx: CanvasRenderingContext2D,\n  x: number,\n  y: number,\n  line: string,\n  opts: RenderTextOpts\n) {\n  if (opts.strikethrough || opts.underline) {\n    /**\n     * Now that IE11 support has been dropped, we can use more\n     * of the TextMetrics object. The actual bounding boxes\n     * are unflagged in Chrome, Firefox, Edge, and Safari so they\n     * can be safely used.\n     * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n     */\n    const metrics = ctx.measureText(line);\n    const left = x - metrics.actualBoundingBoxLeft;\n    const right = x + metrics.actualBoundingBoxRight;\n    const top = y - metrics.actualBoundingBoxAscent;\n    const bottom = y + metrics.actualBoundingBoxDescent;\n    const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n    ctx.strokeStyle = ctx.fillStyle;\n    ctx.beginPath();\n    ctx.lineWidth = opts.decorationWidth || 2;\n    ctx.moveTo(left, yDecoration);\n    ctx.lineTo(right, yDecoration);\n    ctx.stroke();\n  }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n  const oldColor = ctx.fillStyle;\n\n  ctx.fillStyle = opts.color as string;\n  ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n  ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n  ctx: CanvasRenderingContext2D,\n  text: string | string[],\n  x: number,\n  y: number,\n  font: CanvasFontSpec,\n  opts: RenderTextOpts = {}\n) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i: number, line: string;\n\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n\n    if (opts.backdrop) {\n      drawBackdrop(ctx, opts.backdrop);\n    }\n\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n\n    y += Number(font.lineHeight);\n  }\n\n  ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n  ctx: CanvasRenderingContext2D,\n  rect: RoundedRect & { radius: TRBLCorners }\n) {\n  const {x, y, w, h, radius} = rect;\n\n  // top left arc\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n  // line from top left to bottom left\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n\n  // bottom left arc\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n  // line from bottom left to bottom right\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n  // bottom right arc\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n  // line from bottom right to top right\n  ctx.lineTo(x + w, y + radius.topRight);\n\n  // top right arc\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n  // line from top right to top left\n  ctx.lineTo(x + radius.topLeft, y);\n}\n", "import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n\n  value = +matches[2];\n\n  switch (matches[3]) {\n    case 'px':\n      return value;\n    case '%':\n      value /= 100;\n      break;\n    default:\n      break;\n  }\n\n  return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps<K extends string>(value: number | Record<K, number>, props: K[]): Record<K, number>;\nexport function _readValueToProps<K extends string, T extends string>(value: number | Record<K & T, number>, props: Record<T, K>): Record<T, number>;\nexport function _readValueToProps(value: number | Record<string, number>, props: string[] | Record<string, string>) {\n  const ret = {};\n  const objProps = isObject(props);\n  const keys = objProps ? Object.keys(props) : props;\n  const read = isObject(value)\n    ? objProps\n      ? prop => valueOrDefault(value[prop], value[props[prop]])\n      : prop => value[prop]\n    : () => value;\n\n  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n *  x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n *  x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n  const obj = toTRBL(value) as ChartArea;\n\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n\n  return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial<FontSpec>, fallback?: Partial<FontSpec>) {\n  options = options || {};\n  fallback = fallback || defaults.font as FontSpec;\n\n  let size = valueOrDefault(options.size, fallback.size);\n\n  if (typeof size === 'string') {\n    size = parseInt(size, 10);\n  }\n  let style = valueOrDefault(options.style, fallback.style);\n  if (style && !('' + style).match(FONT_STYLE)) {\n    console.warn('Invalid font style specified: \"' + style + '\"');\n    style = undefined;\n  }\n\n  const font = {\n    family: valueOrDefault(options.family, fallback.family),\n    lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n    size,\n    style,\n    weight: valueOrDefault(options.weight, fallback.weight),\n    string: ''\n  };\n\n  font.string = toFontString(font);\n  return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array<unknown>, context?: object, index?: number, info?: { cacheable: boolean }) {\n  let cacheable = true;\n  let i: number, ilen: number, value: unknown;\n\n  for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n    value = inputs[i];\n    if (value === undefined) {\n      continue;\n    }\n    if (context !== undefined && typeof value === 'function') {\n      value = value(context);\n      cacheable = false;\n    }\n    if (index !== undefined && isArray(value)) {\n      value = value[index % value.length];\n      cacheable = false;\n    }\n    if (value !== undefined) {\n      if (info && !cacheable) {\n        info.cacheable = false;\n      }\n      return value;\n    }\n  }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext<T extends object>(parentContext: null, context: T): T;\nexport function createContext<T extends object, P extends T>(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n  return Object.assign(Object.create(parentContext), context);\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n  ResolverObjectKey,\n  ResolverCache,\n  ResolverProxy,\n  DescriptorDefaults,\n  Descriptor,\n  ContextCache,\n  ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n  T extends AnyObject[] = AnyObject[],\n  R extends AnyObject[] = T\n>(\n  scopes: T,\n  prefixes = [''],\n  rootScopes?: R,\n  fallback?: ResolverObjectKey,\n  getTarget = () => scopes[0]\n) {\n  const finalRootScopes = rootScopes || scopes;\n  if (typeof fallback === 'undefined') {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache: ResolverCache<T, R> = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: finalRootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    /**\n     * A trap for the delete operator.\n     */\n    deleteProperty(target, prop: string) {\n      delete target[prop]; // remove from cache\n      delete target._keys; // remove cached keys\n      delete scopes[0][prop]; // remove from top level scope\n      return true;\n    },\n\n    /**\n     * A trap for getting property values.\n     */\n    get(target, prop: string) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyDescriptor.\n     * Also used by Object.hasOwnProperty.\n     */\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n\n    /**\n     * A trap for Object.getPrototypeOf.\n     */\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n\n    /**\n     * A trap for the in operator.\n     */\n    has(target, prop: string) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n     */\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n\n    /**\n     * A trap for setting property values.\n     */\n    set(target, prop: string, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value; // set to top level scope + cache\n      delete target._keys; // remove cached keys\n      return true;\n    }\n  }) as ResolverProxy<T, R>;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n  T extends AnyObject[] = AnyObject[],\n  R extends AnyObject[] = T\n>(\n  proxy: ResolverProxy<T, R>,\n  context: AnyObject,\n  subProxy?: ResolverProxy<T, R>,\n  descriptorDefaults?: DescriptorDefaults\n) {\n  const cache: ContextCache<T, R> = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    /**\n     * A trap for the delete operator.\n     */\n    deleteProperty(target, prop) {\n      delete target[prop]; // remove from cache\n      delete proxy[prop]; // remove from proxy\n      return true;\n    },\n\n    /**\n     * A trap for getting property values.\n     */\n    get(target, prop: string, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyDescriptor.\n     * Also used by Object.hasOwnProperty.\n     */\n    getOwnPropertyDescriptor(target, prop) {\n      return target._descriptors.allKeys\n        ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n        : Reflect.getOwnPropertyDescriptor(proxy, prop);\n    },\n\n    /**\n     * A trap for Object.getPrototypeOf.\n     */\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n\n    /**\n     * A trap for the in operator.\n     */\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n     */\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n\n    /**\n     * A trap for setting property values.\n     */\n    set(target, prop, value) {\n      proxy[prop] = value; // set to proxy\n      delete target[prop]; // remove from cache\n      return true;\n    }\n  }) as ContextProxy<T, R>;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n  proxy: ResolverCache,\n  defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n  const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n  return {\n    allKeys: _allKeys,\n    scriptable: _scriptable,\n    indexable: _indexable,\n    isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n    isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n  };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n  target: AnyObject,\n  prop: string,\n  resolve: () => unknown\n) {\n  if (Object.prototype.hasOwnProperty.call(target, prop)) {\n    return target[prop];\n  }\n\n  const value = resolve();\n  // cache the resolved value\n  target[prop] = value;\n  return value;\n}\n\nfunction _resolveWithContext(\n  target: ContextCache,\n  prop: string,\n  receiver: AnyObject\n) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop]; // resolve from proxy\n\n  // resolve with context\n  if (isFunction(value) && descriptors.isScriptable(prop)) {\n    value = _resolveScriptable(prop, value, target, receiver);\n  }\n  if (isArray(value) && value.length) {\n    value = _resolveArray(prop, value, target, descriptors.isIndexable);\n  }\n  if (needsSubResolver(prop, value)) {\n    // if the resolved value is an object, create a sub resolver for it\n    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\n\nfunction _resolveScriptable(\n  prop: string,\n  getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n  target: ContextCache,\n  receiver: AnyObject\n) {\n  const {_proxy, _context, _subProxy, _stack} = target;\n  if (_stack.has(prop)) {\n    throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n  }\n  _stack.add(prop);\n  let value = getValue(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    // When scriptable option returns an object, create a resolver on that.\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\n\nfunction _resolveArray(\n  prop: string,\n  value: unknown[],\n  target: ContextCache,\n  isIndexable: (key: string) => boolean\n) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n  if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n    return value[_context.index % value.length];\n  } else if (isObject(value[0])) {\n    // Array of objects, return array or resolvers\n    const arr = value;\n    const scopes = _proxy._scopes.filter(s => s !== arr);\n    value = [];\n    for (const item of arr) {\n      const resolver = createSubResolver(scopes, _proxy, prop, item);\n      value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n    }\n  }\n  return value;\n}\n\nfunction resolveFallback(\n  fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n  prop: ResolverObjectKey,\n  value: unknown\n) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n  set: Set<AnyObject>,\n  parentScopes: AnyObject[],\n  key: ResolverObjectKey,\n  parentFallback: ResolverObjectKey,\n  value: unknown\n) {\n  for (const parent of parentScopes) {\n    const scope = getScope(key, parent);\n    if (scope) {\n      set.add(scope);\n      const fallback = resolveFallback(scope._fallback, key, value);\n      if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n        // When we reach the descriptor that defines a new _fallback, return that.\n        // The fallback will resume to that new scope.\n        return fallback;\n      }\n    } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n      // Fallback to `false` results to `false`, when falling back to different key.\n      // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n      return null;\n    }\n  }\n  return false;\n}\n\nfunction createSubResolver(\n  parentScopes: AnyObject[],\n  resolver: ResolverCache,\n  prop: ResolverObjectKey,\n  value: unknown\n) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set<AnyObject>();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (typeof fallback !== 'undefined' && fallback !== prop) {\n    key = addScopesFromKey(set, allScopes, fallback, key, value);\n    if (key === null) {\n      return false;\n    }\n  }\n  return _createResolver(Array.from(set), [''], rootScopes, fallback,\n    () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n  set: Set<AnyObject>,\n  allScopes: AnyObject[],\n  key: ResolverObjectKey,\n  fallback: ResolverObjectKey,\n  item: unknown\n) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\n\nfunction subGetTarget(\n  resolver: ResolverCache,\n  prop: string,\n  value: unknown\n) {\n  const parent = resolver._getTarget();\n  if (!(prop in parent)) {\n    parent[prop] = {};\n  }\n  const target = parent[prop];\n  if (isArray(target) && isObject(value)) {\n    // For array of objects, the object is used to store updated values\n    return value;\n  }\n  return target || {};\n}\n\nfunction _resolveWithPrefixes(\n  prop: string,\n  prefixes: string[],\n  scopes: AnyObject[],\n  proxy: ResolverProxy\n) {\n  let value: unknown;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (typeof value !== 'undefined') {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (typeof value !== 'undefined') {\n      return value;\n    }\n  }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n  const set = new Set<string>();\n  for (const scope of scopes) {\n    for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n      set.add(key);\n    }\n  }\n  return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n  meta: ChartMeta<'line' | 'scatter'>,\n  data: AnyObject[],\n  start: number,\n  count: number\n) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array<{r: unknown}>(count);\n  let i: number, ilen: number, index: number, item: AnyObject;\n\n  for (i = 0, ilen = count; i < ilen; ++i) {\n    index = i + start;\n    item = data[index];\n    parsed[i] = {\n      r: iScale.parse(resolveObjectKey(item, key), index)\n    };\n  }\n  return parsed;\n}\n", "import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n  firstPoint: SplinePoint,\n  middlePoint: SplinePoint,\n  afterPoint: SplinePoint,\n  t: number\n): {\n    previous: SplinePoint\n    next: SplinePoint\n  } {\n  // Props to Rob Spencer at scaled innovation for his post on splining between points\n  // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n  // This function must also respect \"skipped\" points\n\n  const previous = firstPoint.skip ? middlePoint : firstPoint;\n  const current = middlePoint;\n  const next = afterPoint.skip ? middlePoint : afterPoint;\n  const d01 = distanceBetweenPoints(current, previous);\n  const d12 = distanceBetweenPoints(next, current);\n\n  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n\n  // If all points are the same, s01 & s02 will be inf\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n\n  const fa = t * s01; // scaling factor for triangle Ta\n  const fb = t * s12;\n\n  return {\n    previous: {\n      x: current.x - fa * (next.x - previous.x),\n      y: current.y - fa * (next.y - previous.y)\n    },\n    next: {\n      x: current.x + fb * (next.x - previous.x),\n      y: current.y + fb * (next.y - previous.y)\n    }\n  };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n  const pointsLen = points.length;\n\n  let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen - 1; ++i) {\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent || !pointAfter) {\n      continue;\n    }\n\n    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\n    }\n\n    alphaK = mK[i] / deltaK[i];\n    betaK = mK[i + 1] / deltaK[i];\n    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n    if (squaredMagnitude <= 9) {\n      continue;\n    }\n\n    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n\n  for (let i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n\n    const iPixel = pointCurrent[indexAxis];\n    const vPixel = pointCurrent[valueAxis];\n    if (pointBefore) {\n      delta = (iPixel - pointBefore[indexAxis]) / 3;\n      pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n      pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n    }\n    if (pointAfter) {\n      delta = (pointAfter[indexAxis] - iPixel) / 3;\n      pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n      pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n    }\n  }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK: number[] = Array(pointsLen).fill(0);\n  const mK: number[] = Array(pointsLen);\n\n  // Calculate slopes (deltaK) and initialize tangents (mK)\n  let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n\n  for (i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n\n    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n      // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n      deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n    }\n    mK[i] = !pointBefore ? deltaK[i]\n      : !pointAfter ? deltaK[i - 1]\n        : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n          : (deltaK[i - 1] + deltaK[i]) / 2;\n  }\n\n  monotoneAdjust(points, deltaK, mK);\n\n  monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n  return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n  let i, ilen, point, inArea, inAreaPrev;\n  let inAreaNext = _isPointInArea(points[0], area);\n  for (i = 0, ilen = points.length; i < ilen; ++i) {\n    inAreaPrev = inArea;\n    inArea = inAreaNext;\n    inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n    if (!inArea) {\n      continue;\n    }\n    point = points[i];\n    if (inAreaPrev) {\n      point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n      point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n    }\n    if (inAreaNext) {\n      point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n      point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n    }\n  }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n  points: SplinePoint[],\n  options,\n  area: ChartArea,\n  loop: boolean,\n  indexAxis: 'x' | 'y'\n) {\n  let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType<typeof splineCurve>;\n\n  // Only consider points that are drawn in case the spanGaps option is used\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\n  }\n\n  if (options.cubicInterpolationMode === 'monotone') {\n    splineCurveMonotone(points, indexAxis);\n  } else {\n    let prev = loop ? points[points.length - 1] : points[0];\n    for (i = 0, ilen = points.length; i < ilen; ++i) {\n      point = points[i];\n      controlPoints = splineCurve(\n        prev,\n        point,\n        points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n        options.tension\n      );\n      point.cp1x = controlPoints.previous.x;\n      point.cp1y = controlPoints.previous.y;\n      point.cp2x = controlPoints.next.x;\n      point.cp2y = controlPoints.next.y;\n      prev = point;\n    }\n  }\n\n  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n", "import type {ChartArea, Scale} from '../types/index.js';\nimport type Chart from '../core/core.controller.js';\nimport type {ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = (parent as ShadowRoot).host;\n  }\n  return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n  let valueInPixels: number;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n\n    if (styleValue.indexOf('%') !== -1) {\n      // percentage * size in dimension\n      valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n\n  return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n  element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n  return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n  const result = {} as ChartArea;\n  suffix = suffix ? '-' + suffix : '';\n  for (let i = 0; i < 4; i++) {\n    const pos = positions[i];\n    result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n  }\n  result.width = result.left + result.right;\n  result.height = result.top + result.bottom;\n  return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n  (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n  e: Event | TouchEvent | MouseEvent,\n  canvas: HTMLCanvasElement\n): {\n    x: number;\n    y: number;\n    box: boolean;\n  } {\n  const touches = (e as TouchEvent).touches;\n  const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n  const {offsetX, offsetY} = source as MouseEvent;\n  let box = false;\n  let x, y;\n  if (useOffsetPos(offsetX, offsetY, e.target)) {\n    x = offsetX;\n    y = offsetY;\n  } else {\n    const rect = canvas.getBoundingClientRect();\n    x = source.clientX - rect.left;\n    y = source.clientY - rect.top;\n    box = true;\n  }\n  return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n  event: Event | ChartEvent | TouchEvent | MouseEvent,\n  chart: Chart\n): { x: number; y: number } {\n  if ('native' in event) {\n    return event;\n  }\n\n  const {canvas, currentDevicePixelRatio} = chart;\n  const style = getComputedStyle(canvas);\n  const borderBox = style.boxSizing === 'border-box';\n  const paddings = getPositionedStyle(style, 'padding');\n  const borders = getPositionedStyle(style, 'border', 'width');\n  const {x, y, box} = getCanvasPosition(event, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\n\n  let {width, height} = chart;\n  if (borderBox) {\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  return {\n    x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n    y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n  };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial<Scale> {\n  let maxWidth: number, maxHeight: number;\n\n  if (width === undefined || height === undefined) {\n    const container = _getParentNode(canvas);\n    if (!container) {\n      width = canvas.clientWidth;\n      height = canvas.clientHeight;\n    } else {\n      const rect = container.getBoundingClientRect(); // this is the border box of the container\n      const containerStyle = getComputedStyle(container);\n      const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n      const containerPadding = getPositionedStyle(containerStyle, 'padding');\n      width = rect.width - containerPadding.width - containerBorder.width;\n      height = rect.height - containerPadding.height - containerBorder.height;\n      maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n      maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n    }\n  }\n  return {\n    width,\n    height,\n    maxWidth: maxWidth || INFINITY,\n    maxHeight: maxHeight || INFINITY\n  };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n  canvas: HTMLCanvasElement,\n  bbWidth?: number,\n  bbHeight?: number,\n  aspectRatio?: number\n): { width: number; height: number } {\n  const style = getComputedStyle(canvas);\n  const margins = getPositionedStyle(style, 'margin');\n  const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n  const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n  const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n  let {width, height} = containerSize;\n\n  if (style.boxSizing === 'content-box') {\n    const borders = getPositionedStyle(style, 'border', 'width');\n    const paddings = getPositionedStyle(style, 'padding');\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  width = Math.max(0, width - margins.width);\n  height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n  width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n  height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n  if (width && !height) {\n    // https://github.com/chartjs/Chart.js/issues/4659\n    // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n    height = round1(width / 2);\n  }\n\n  const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n  if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n    height = containerSize.height;\n    width = round1(Math.floor(height * aspectRatio));\n  }\n\n  return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n  chart: Chart,\n  forceRatio: number,\n  forceStyle?: boolean\n): boolean | void {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n  chart.height = Math.floor(chart.height);\n  chart.width = Math.floor(chart.width);\n\n  const canvas = chart.canvas;\n\n  // If no style has been set on the canvas, the render size is used as display size,\n  // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n  // See https://github.com/chartjs/Chart.js/issues/3575\n  if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n    canvas.style.height = `${chart.height}px`;\n    canvas.style.width = `${chart.width}px`;\n  }\n\n  if (chart.currentDevicePixelRatio !== pixelRatio\n      || canvas.height !== deviceHeight\n      || canvas.width !== deviceWidth) {\n    chart.currentDevicePixelRatio = pixelRatio;\n    canvas.height = deviceHeight;\n    canvas.width = deviceWidth;\n    chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n    return true;\n  }\n  return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() { // This function will be called when the browser attempts to access the passive property.\n        passiveSupported = true;\n        return false;\n      }\n    } as EventListenerOptions;\n\n    if (_isDomSupported()) {\n      window.addEventListener('test', null, options);\n      window.removeEventListener('test', null, options);\n    }\n  } catch (e) {\n    // continue regardless of error\n  }\n  return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n  element: HTMLElement,\n  property: 'width' | 'height'\n): number | undefined {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n", "import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n  p1: Point,\n  p2: Point,\n  t: number, mode: 'middle' | 'after' | unknown\n) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n      : mode === 'after' ? t < 1 ? p1.y : p2.y\n        : t > 0 ? p2.y : p1.y\n  };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n  const cp1 = {x: p1.cp2x, y: p1.cp2y};\n  const cp2 = {x: p2.cp1x, y: p2.cp1y};\n  const a = _pointInLine(p1, cp1, t);\n  const b = _pointInLine(cp1, cp2, t);\n  const c = _pointInLine(cp2, p2, t);\n  const d = _pointInLine(a, b, t);\n  const e = _pointInLine(b, c, t);\n  return _pointInLine(d, e, t);\n}\n", "export interface RTLAdapter {\n  x(x: number): number;\n  setWidth(w: number): void;\n  textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n  xPlus(x: number, value: number): number;\n  leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n  return {\n    x(x) {\n      return rectX + rectX + width - x;\n    },\n    setWidth(w) {\n      width = w;\n    },\n    textAlign(align) {\n      if (align === 'center') {\n        return align;\n      }\n      return align === 'right' ? 'left' : 'right';\n    },\n    xPlus(x, value) {\n      return x - value;\n    },\n    leftForLtr(x, itemWidth) {\n      return x - itemWidth;\n    },\n  };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) { // eslint-disable-line no-unused-vars\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n      return x;\n    },\n  };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n  let style: CSSStyleDeclaration, original: [string, string];\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n\n    style.setProperty('direction', direction, 'important');\n    (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n  }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n  if (original !== undefined) {\n    delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\n}\n", "import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n  if (property === 'angle') {\n    return {\n      between: _angleBetween,\n      compare: _angleDiff,\n      normalize: _normalizeAngle,\n    };\n  }\n  return {\n    between: _isBetween,\n    compare: (a, b) => a - b,\n    normalize: x => x\n  };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n  return {\n    start: start % count,\n    end: end % count,\n    loop: loop && (end - start + 1) % count === 0,\n    style\n  };\n}\n\nfunction getSegment(segment, points, bounds) {\n  const {property, start: startBound, end: endBound} = bounds;\n  const {between, normalize} = propertyFn(property);\n  const count = points.length;\n  // eslint-disable-next-line prefer-const\n  let {start, end, loop} = segment;\n  let i, ilen;\n\n  if (loop) {\n    start += count;\n    end += count;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n        break;\n      }\n      start--;\n      end--;\n    }\n    start %= count;\n    end %= count;\n  }\n\n  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\n  }\n\n  const {property, start: startBound, end: endBound} = bounds;\n  const count = points.length;\n  const {compare, between, normalize} = propertyFn(property);\n  const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\n\n  const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n  const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n  const shouldStart = () => inside || startIsBefore();\n  const shouldStop = () => !inside || endIsBefore();\n\n  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n\n    if (point.skip) {\n      continue;\n    }\n\n    value = normalize(point[property]);\n\n    if (value === prevValue) {\n      continue;\n    }\n\n    inside = between(value, startBound, endBound);\n\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\n    }\n\n    if (subStart !== null && shouldStop()) {\n      result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n      subStart = null;\n    }\n    prev = i;\n    prevValue = value;\n  }\n\n  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n\n  return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\n\n  for (let i = 0; i < segments.length; i++) {\n    const sub = _boundSegment(segments[i], line.points, bounds);\n    if (sub.length) {\n      result.push(...sub);\n    }\n  }\n  return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n\n  if (loop && !spanGaps) {\n    // loop and not spanning gaps, first find a gap to start from\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n\n  // find first non skipped point (after the first gap possibly)\n  while (start < count && points[start].skip) {\n    start++;\n  }\n\n  // if we looped to count, start needs to be 0\n  start %= count;\n\n  if (loop) {\n    // loop will go past count, if start > 0\n    end += start;\n  }\n\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n\n  // end could be more than count, normalize\n  end %= count;\n\n  return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n  const count = points.length;\n  const result = [];\n  let last = start;\n  let prev = points[start];\n  let end;\n\n  for (end = start + 1; end <= max; ++end) {\n    const cur = points[end % count];\n    if (cur.skip || cur.stop) {\n      if (!prev.skip) {\n        loop = false;\n        result.push({start: start % count, end: (end - 1) % count, loop});\n        // @ts-ignore\n        start = last = cur.stop ? end : null;\n      }\n    } else {\n      last = end;\n      if (prev.skip) {\n        start = end;\n      }\n    }\n    prev = cur;\n  }\n\n  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n\n  return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n\n  if (!count) {\n    return [];\n  }\n\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n  }\n\n  const max = end < start ? end + count : end;\n  const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n  return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n  const chartContext = line._chart.getContext();\n  const baseStyle = readStyle(line.options);\n  const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n  const count = points.length;\n  const result = [];\n  let prevStyle = baseStyle;\n  let start = segments[0].start;\n  let i = start;\n\n  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\n    // Style can not start/end on a skipped point, adjust indices accordingly\n    s += count;\n    while (points[s % count].skip) {\n      s -= dir;\n    }\n    while (points[e % count].skip) {\n      e += dir;\n    }\n    if (s % count !== e % count) {\n      result.push({start: s % count, end: e % count, loop: l, style: st});\n      prevStyle = st;\n      start = e % count;\n    }\n  }\n\n  for (const segment of segments) {\n    start = spanGaps ? start : segment.start;\n    let prev = points[start % count];\n    let style;\n    for (i = start + 1; i <= segment.end; i++) {\n      const pt = points[i % count];\n      style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n        type: 'segment',\n        p0: prev,\n        p1: pt,\n        p0DataIndex: (i - 1) % count,\n        p1DataIndex: i % count,\n        datasetIndex\n      })));\n      if (styleChanged(style, prevStyle)) {\n        addStyle(start, i - 1, segment.loop, prevStyle);\n      }\n      prev = pt;\n      prevStyle = style;\n    }\n    if (start < i - 1) {\n      addStyle(start, i - 1, segment.loop, prevStyle);\n    }\n  }\n\n  return result;\n}\n\nfunction readStyle(options) {\n  return {\n    backgroundColor: options.backgroundColor,\n    borderCapStyle: options.borderCapStyle,\n    borderDash: options.borderDash,\n    borderDashOffset: options.borderDashOffset,\n    borderJoinStyle: options.borderJoinStyle,\n    borderWidth: options.borderWidth,\n    borderColor: options.borderColor\n  };\n}\n\nfunction styleChanged(style, prevStyle) {\n  if (!prevStyle) {\n    return false;\n  }\n  const cache = [];\n  const replacer = function(key, value) {\n    if (!isPatternOrGradient(value)) {\n      return value;\n    }\n    if (!cache.includes(value)) {\n      cache.push(value);\n    }\n    return cache.indexOf(value);\n  };\n  return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n", "import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n\n  /**\n\t * @private\n\t */\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n\n  /**\n\t * @private\n\t */\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _update(date = Date.now()) {\n    let remaining = 0;\n\n    this._charts.forEach((anims, chart) => {\n      if (!anims.running || !anims.items.length) {\n        return;\n      }\n      const items = anims.items;\n      let i = items.length - 1;\n      let draw = false;\n      let item;\n\n      for (; i >= 0; --i) {\n        item = items[i];\n\n        if (item._active) {\n          if (item._total > anims.duration) {\n            // if the animation has been updated and its duration prolonged,\n            // update to total duration of current animations run (for progress event)\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          // Remove the item by replacing it with last item and removing the last\n          // A lot faster than splice.\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n\n      remaining += items.length;\n    });\n\n    this._lastDate = date;\n\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _getAnims(chart) {\n    const charts = this._charts;\n    let anims = charts.get(chart);\n    if (!anims) {\n      anims = {\n        running: false,\n        initial: true,\n        items: [],\n        listeners: {\n          complete: [],\n          progress: []\n        }\n      };\n      charts.set(chart, anims);\n    }\n    return anims;\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n\n  /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n\n  /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\n\n  /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n  start(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims) {\n      return;\n    }\n    anims.running = true;\n    anims.start = Date.now();\n    anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n    this._refresh();\n  }\n\n  running(chart) {\n    if (!this._running) {\n      return false;\n    }\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.running || !anims.items.length) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n  stop(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.items.length) {\n      return;\n    }\n    const items = anims.items;\n    let i = items.length - 1;\n\n    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n\n  /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n", "import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  /**\n   * @param {string} from\n   * @param {string} to\n   * @param {number} factor\n   */\n  color(from, to, factor) {\n    const c0 = helpersColor(from || transparent);\n    const c1 = c0.valid && helpersColor(to || transparent);\n    return c1 && c1.valid\n      ? c1.mix(c0, factor).hexString()\n      : to;\n  },\n  number(from, to, factor) {\n    return from + (to - from) * factor;\n  }\n};\n\nexport default class Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\n\n    this._active = true;\n    this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n    this._easing = effects[cfg.easing] || effects.linear;\n    this._start = Math.floor(Date.now() + (cfg.delay || 0));\n    this._duration = this._total = Math.floor(cfg.duration);\n    this._loop = !!cfg.loop;\n    this._target = target;\n    this._prop = prop;\n    this._from = from;\n    this._to = to;\n    this._promises = undefined;\n  }\n\n  active() {\n    return this._active;\n  }\n\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\n\n      const currentValue = this._target[this._prop];\n      const elapsed = date - this._start;\n      const remain = this._duration - elapsed;\n      this._start = date;\n      this._duration = Math.floor(Math.max(remain, cfg.duration));\n      this._total += elapsed;\n      this._loop = !!cfg.loop;\n      this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n      this._from = resolve([cfg.from, currentValue, to]);\n    }\n  }\n\n  cancel() {\n    if (this._active) {\n      // update current evaluated value, for smoother animations\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\n    }\n  }\n\n  tick(date) {\n    const elapsed = date - this._start;\n    const duration = this._duration;\n    const prop = this._prop;\n    const from = this._from;\n    const loop = this._loop;\n    const to = this._to;\n    let factor;\n\n    this._active = from !== to && (loop || (elapsed < duration));\n\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\n    }\n\n    factor = (elapsed / duration) % 2;\n    factor = loop && factor > 1 ? 2 - factor : factor;\n    factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n    this._target[prop] = this._fn(from, to, factor);\n  }\n\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\n    });\n  }\n\n  _notify(resolved) {\n    const method = resolved ? 'res' : 'rej';\n    const promises = this._promises || [];\n    for (let i = 0; i < promises.length; i++) {\n      promises[i][method]();\n    }\n  }\n}\n", "import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n\n    const animationOptions = Object.keys(defaults.animation);\n    const animatedProps = this._properties;\n\n    Object.getOwnPropertyNames(config).forEach(key => {\n      const cfg = config[key];\n      if (!isObject(cfg)) {\n        return;\n      }\n      const resolved = {};\n      for (const option of animationOptions) {\n        resolved[option] = cfg[option];\n      }\n\n      (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n        if (prop === key || !animatedProps.has(prop)) {\n          animatedProps.set(prop, resolved);\n        }\n      });\n    });\n  }\n\n  /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      // Going to shared options:\n      // After all animations are done, assign the shared options object to the element\n      // So any new updates to the shared options are observed\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n        // rejected, noop\n      });\n    }\n\n    return animations;\n  }\n\n  /**\n\t * @private\n\t */\n  _createAnimations(target, values) {\n    const animatedProps = this._properties;\n    const animations = [];\n    const running = target.$animations || (target.$animations = {});\n    const props = Object.keys(values);\n    const date = Date.now();\n    let i;\n\n    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\n      }\n\n      if (prop === 'options') {\n        animations.push(...this._animateOptions(target, values));\n        continue;\n      }\n      const value = values[prop];\n      let animation = running[prop];\n      const cfg = animatedProps.get(prop);\n\n      if (animation) {\n        if (cfg && animation.active()) {\n          // There is an existing active animation, let's update that\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        // not animated, set directly to new value\n        target[prop] = value;\n        continue;\n      }\n\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n\n\n  /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n  update(target, values) {\n    if (this._properties.size === 0) {\n      // Nothing is animated, just apply the new values.\n      Object.assign(target, values);\n      return;\n    }\n\n    const animations = this._createAnimations(target, values);\n\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\n    }\n  }\n}\n\nfunction awaitAll(animations, properties) {\n  const running = [];\n  const keys = Object.keys(properties);\n  for (let i = 0; i < keys.length; i++) {\n    const anim = animations[keys[i]];\n    if (anim && anim.active()) {\n      running.push(anim.wait());\n    }\n  }\n  // @ts-ignore\n  return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n  if (!newOptions) {\n    return;\n  }\n  let options = target.options;\n  if (!options) {\n    target.options = newOptions;\n    return;\n  }\n  if (options.$shared) {\n    // Going from shared options to distinct one:\n    // Create new options object containing the old shared values and start updating that.\n    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\n}\n", "import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n  const opts = scale && scale.options || {};\n  const reverse = opts.reverse;\n  const min = opts.min === undefined ? allowedOverflow : 0;\n  const max = opts.max === undefined ? allowedOverflow : 0;\n  return {\n    start: reverse ? max : min,\n    end: reverse ? min : max\n  };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n  if (allowedOverflow === false) {\n    return false;\n  }\n  const x = scaleClip(xScale, allowedOverflow);\n  const y = scaleClip(yScale, allowedOverflow);\n\n  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\n\nfunction toClip(value) {\n  let t, r, b, l;\n\n  if (isObject(value)) {\n    t = value.top;\n    r = value.right;\n    b = value.bottom;\n    l = value.left;\n  } else {\n    t = r = b = l = value;\n  }\n\n  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n  const keys = stack.keys;\n  const singleMode = options.mode === 'single';\n  let i, ilen, datasetIndex, otherValue;\n\n  if (value === null) {\n    return;\n  }\n\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      if (options.all) {\n        continue;\n      }\n      break;\n    }\n    otherValue = stack.values[datasetIndex];\n    if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n  return value;\n}\n\nfunction convertObjectDataToArray(data) {\n  const keys = Object.keys(data);\n  const adata = new Array(keys.length);\n  let i, ilen, key;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    key = keys[i];\n    adata[i] = {\n      x: key,\n      y: data[key]\n    };\n  }\n  return adata;\n}\n\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n  const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n  return {\n    min: minDefined ? min : Number.NEGATIVE_INFINITY,\n    max: maxDefined ? max : Number.POSITIVE_INFINITY\n  };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n  for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n    const value = stack[meta.index];\n    if ((positive && value > 0) || (!positive && value < 0)) {\n      return meta.index;\n    }\n  }\n\n  return null;\n}\n\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n  const {iScale, vScale, index: datasetIndex} = meta;\n  const iAxis = iScale.axis;\n  const vAxis = vScale.axis;\n  const key = getStackKey(iScale, vScale, meta);\n  const ilen = parsed.length;\n  let stack;\n\n  for (let i = 0; i < ilen; ++i) {\n    const item = parsed[i];\n    const {[iAxis]: index, [vAxis]: value} = item;\n    const itemStacks = item._stacks || (item._stacks = {});\n    stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n    stack[datasetIndex] = value;\n\n    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n    const visualValues = stack._visualValues || (stack._visualValues = {});\n    visualValues[datasetIndex] = value;\n  }\n}\n\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n  return createContext(parent,\n    {\n      active: false,\n      dataset: undefined,\n      datasetIndex: index,\n      index,\n      mode: 'default',\n      type: 'dataset'\n    }\n  );\n}\n\nfunction createDataContext(parent, index, element) {\n  return createContext(parent, {\n    active: false,\n    dataIndex: index,\n    parsed: undefined,\n    raw: undefined,\n    element,\n    index,\n    mode: 'default',\n    type: 'data'\n  });\n}\n\nfunction clearStacks(meta, items) {\n  // Not using meta.index here, because it might be already updated if the dataset changed location\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\n  }\n\n  items = items || meta._parsed;\n  for (const parsed of items) {\n    const stacks = parsed._stacks;\n    if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n      return;\n    }\n    delete stacks[axis][datasetIndex];\n    if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n      delete stacks[axis]._visualValues[datasetIndex];\n    }\n  }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n  && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n  /**\n   * @type {any}\n   */\n  static defaults = {};\n\n  /**\n   * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n   */\n  static datasetElementType = null;\n\n  /**\n   * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n   */\n  static dataElementType = null;\n\n  /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n  constructor(chart, datasetIndex) {\n    this.chart = chart;\n    this._ctx = chart.ctx;\n    this.index = datasetIndex;\n    this._cachedDataOpts = {};\n    this._cachedMeta = this.getMeta();\n    this._type = this._cachedMeta.type;\n    this.options = undefined;\n    /** @type {boolean | object} */\n    this._parsing = false;\n    this._data = undefined;\n    this._objectData = undefined;\n    this._sharedOptions = undefined;\n    this._drawStart = undefined;\n    this._drawCount = undefined;\n    this.enableOptionSharing = false;\n    this.supportsDecimation = false;\n    this.$context = undefined;\n    this._syncList = [];\n    this.datasetElementType = new.target.datasetElementType;\n    this.dataElementType = new.target.dataElementType;\n\n    this.initialize();\n  }\n\n  initialize() {\n    const meta = this._cachedMeta;\n    this.configure();\n    this.linkScales();\n    meta._stacked = isStacked(meta.vScale, meta);\n    this.addElements();\n\n    if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n      console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n    }\n  }\n\n  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n    const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n    const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n    const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n    const indexAxis = meta.indexAxis;\n    const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n    const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n    meta.xScale = this.getScaleForId(xid);\n    meta.yScale = this.getScaleForId(yid);\n    meta.rScale = this.getScaleForId(rid);\n    meta.iScale = this.getScaleForId(iid);\n    meta.vScale = this.getScaleForId(vid);\n  }\n\n  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n\n  /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n\n  /**\n\t * @private\n\t */\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n\n  reset() {\n    this._update('reset');\n  }\n\n  /**\n\t * @private\n\t */\n  _destroy() {\n    const meta = this._cachedMeta;\n    if (this._data) {\n      unlistenArrayEvents(this._data, this);\n    }\n    if (meta._stacked) {\n      clearStacks(meta);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n\n    // In order to correctly handle data addition/deletion animation (and thus simulate\n    // real-time charts), we need to monitor these data modifications and synchronize\n    // the internal metadata accordingly.\n\n    if (isObject(data)) {\n      this._data = convertObjectDataToArray(data);\n    } else if (_data !== data) {\n      if (_data) {\n        // This case happens when the user replaced the data array instance.\n        unlistenArrayEvents(_data, this);\n        // Discard old parsed data and stacks\n        const meta = this._cachedMeta;\n        clearStacks(meta);\n        meta._parsed = [];\n      }\n      if (data && Object.isExtensible(data)) {\n        listenArrayEvents(data, this);\n      }\n      this._syncList = [];\n      this._data = data;\n    }\n  }\n\n  addElements() {\n    const meta = this._cachedMeta;\n\n    this._dataCheck();\n\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n\n    this._dataCheck();\n\n    // make sure cached _stacked status is current\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n\n    // detect change in stack option\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      // remove values from old stack\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n\n    // Re-sync meta data in case the user replaced the data array or if we missed\n    // any updates and so make sure that we handle number of datapoints changing.\n    this._resyncElements(resetNewElements);\n\n    // if stack changed, update stack values for the whole dataset\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n    }\n  }\n\n  /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n  configure() {\n    const config = this.chart.config;\n    const scopeKeys = config.datasetScopeKeys(this._type);\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n    this.options = config.createResolver(scopes, this.getContext());\n    this._parsing = this.options.parsing;\n    this._cachedDataOpts = {};\n  }\n\n  /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\n\n    let sorted = start === 0 && count === data.length ? true : meta._sorted;\n    let prev = start > 0 && meta._parsed[start - 1];\n    let i, cur, parsed;\n\n    if (this._parsing === false) {\n      meta._parsed = data;\n      meta._sorted = true;\n      parsed = data;\n    } else {\n      if (isArray(data[start])) {\n        parsed = this.parseArrayData(meta, data, start, count);\n      } else if (isObject(data[start])) {\n        parsed = this.parseObjectData(meta, data, start, count);\n      } else {\n        parsed = this.parsePrimitiveData(meta, data, start, count);\n      }\n\n      const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n      for (i = 0; i < count; ++i) {\n        meta._parsed[i + start] = cur = parsed[i];\n        if (sorted) {\n          if (isNotInOrderComparedToPrev()) {\n            sorted = false;\n          }\n          prev = cur;\n        }\n      }\n      meta._sorted = sorted;\n    }\n\n    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\n\n  /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const labels = iScale.getLabels();\n    const singleScale = iScale === vScale;\n    const parsed = new Array(count);\n    let i, ilen, index;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      parsed[i] = {\n        [iAxis]: singleScale || iScale.parse(labels[index], index),\n        [vAxis]: vScale.parse(data[index], index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(item[0], index),\n        y: yScale.parse(item[1], index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n        y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n\n  /**\n\t * @protected\n\t */\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\n\n  /**\n\t * @protected\n\t */\n  applyStack(scale, parsed, mode) {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const value = parsed[scale.axis];\n    const stack = {\n      keys: getSortedDatasetIndices(chart, true),\n      values: parsed._stacks[scale.axis]._visualValues\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\n\n  /**\n\t * @protected\n\t */\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    const parsedValue = parsed[scale.axis];\n    let value = parsedValue === null ? NaN : parsedValue;\n    const values = stack && parsed._stacks[scale.axis];\n    if (stack && values) {\n      stack.values = values;\n      value = applyStack(stack, parsedValue, this._cachedMeta.index);\n    }\n    range.min = Math.min(range.min, value);\n    range.max = Math.max(range.max, value);\n  }\n\n  /**\n\t * @protected\n\t */\n  getMinMax(scale, canStack) {\n    const meta = this._cachedMeta;\n    const _parsed = meta._parsed;\n    const sorted = meta._sorted && scale === meta.iScale;\n    const ilen = _parsed.length;\n    const otherScale = this._getOtherScale(scale);\n    const stack = createStack(canStack, meta, this.chart);\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n    let i, parsed;\n\n    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n    }\n\n    for (i = 0; i < ilen; ++i) {\n      if (_skip()) {\n        continue;\n      }\n      this.updateRangeFromParsed(range, scale, parsed, stack);\n      if (sorted) {\n        // if the data is sorted, we don't need to check further from this end of array\n        break;\n      }\n    }\n    if (sorted) {\n      // in the sorted case, find first non-skipped value from other end of array\n      for (i = ilen - 1; i >= 0; --i) {\n        if (_skip()) {\n          continue;\n        }\n        this.updateRangeFromParsed(range, scale, parsed, stack);\n        break;\n      }\n    }\n    return range;\n  }\n\n  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n\n  /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n  getMaxOverflow() {\n    return false;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const vScale = meta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n      value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n    };\n  }\n\n  /**\n\t * @private\n\t */\n  _update(mode) {\n    const meta = this._cachedMeta;\n    this.update(mode || 'default');\n    meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n  }\n\n  /**\n\t * @param {string} mode\n\t */\n  update(mode) {} // eslint-disable-line no-unused-vars\n\n  draw() {\n    const ctx = this._ctx;\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const elements = meta.data || [];\n    const area = chart.chartArea;\n    const active = [];\n    const start = this._drawStart || 0;\n    const count = this._drawCount || (elements.length - start);\n    const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n    let i;\n\n    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\n    }\n\n    for (i = start; i < start + count; ++i) {\n      const element = elements[i];\n      if (element.hidden) {\n        continue;\n      }\n      if (element.active && drawActiveElementsOnTop) {\n        active.push(element);\n      } else {\n        element.draw(ctx, area);\n      }\n    }\n\n    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\n\n  /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n  getStyle(index, active) {\n    const mode = active ? 'active' : 'default';\n    return index === undefined && this._cachedMeta.dataset\n      ? this.resolveDatasetElementOptions(mode)\n      : this.resolveDataElementOptions(index || 0, mode);\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext(index, active, mode) {\n    const dataset = this.getDataset();\n    let context;\n    if (index >= 0 && index < this._cachedMeta.data.length) {\n      const element = this._cachedMeta.data[index];\n      context = element.$context ||\n        (element.$context = createDataContext(this.getContext(), index, element));\n      context.parsed = this.getParsed(index);\n      context.raw = dataset.data[index];\n      context.index = context.dataIndex = index;\n    } else {\n      context = this.$context ||\n        (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n      context.dataset = dataset;\n      context.index = context.datasetIndex = this.index;\n    }\n\n    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n\n  /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n\n  /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\n\n  /**\n\t * @private\n\t */\n  _resolveElementOptions(elementType, mode = 'default', index) {\n    const active = mode === 'active';\n    const cache = this._cachedDataOpts;\n    const cacheKey = elementType + '-' + mode;\n    const cached = cache[cacheKey];\n    const sharing = this.enableOptionSharing && defined(index);\n    if (cached) {\n      return cloneIfNotShared(cached, sharing);\n    }\n    const config = this.chart.config;\n    const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n    const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n    const names = Object.keys(defaults.elements[elementType]);\n    // context is provided as a function, and is called only if needed,\n    // so we don't create a context for each element if not needed.\n    const context = () => this.getContext(index, active, mode);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n    if (values.$shared) {\n      // `$shared` indicates this set of options can be shared between multiple elements.\n      // Sharing is used to reduce number of properties to change during animation.\n      values.$shared = sharing;\n\n      // We cache options by `mode`, which can be 'active' for example. This enables us\n      // to have the 'active' element options and 'default' options to switch between\n      // when interacting.\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n\n    return values;\n  }\n\n\n  /**\n\t * @private\n\t */\n  _resolveAnimations(index, transition, active) {\n    const chart = this.chart;\n    const cache = this._cachedDataOpts;\n    const cacheKey = `animation-${transition}`;\n    const cached = cache[cacheKey];\n    if (cached) {\n      return cached;\n    }\n    let options;\n    if (chart.options.animation !== false) {\n      const config = this.chart.config;\n      const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n      const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n      options = config.createResolver(scopes, this.getContext(index, active, transition));\n    }\n    const animations = new Animations(chart, options && options.animations);\n    if (options && options._cacheable) {\n      cache[cacheKey] = Object.freeze(animations);\n    }\n    return animations;\n  }\n\n  /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n\n  /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n  }\n\n  /**\n   * @todo v4, rename to getSharedOptions and remove excess functions\n   */\n  _getSharedOptions(start, mode) {\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const previouslySharedOptions = this._sharedOptions;\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    return {sharedOptions, includeOptions};\n  }\n\n  /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n  updateElement(element, index, properties, mode) {\n    if (isDirectUpdateMode(mode)) {\n      Object.assign(element, properties);\n    } else {\n      this._resolveAnimations(index, mode).update(element, properties);\n    }\n  }\n\n  /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _setStyle(element, index, mode, active) {\n    element.active = active;\n    const options = this.getStyle(index, active);\n    this._resolveAnimations(index, mode, active).update(element, {\n      // When going from active to inactive, we need to update to the shared options.\n      // This way the once hovered element will end up with the same original shared options instance, after animation.\n      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n\n  /**\n\t * @private\n\t */\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n\n    // Apply changes detected through array listeners\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n\n    if (count) {\n      // TODO: It is not optimal to always parse the old data\n      // This is done because we are not detecting direct assignments:\n      // chart.data.datasets[0].data[5] = 10;\n      // chart.data.datasets[0].data[5].y = 10;\n      this.parse(0, count);\n    }\n\n    if (numData > numMeta) {\n      this._insertElements(numMeta, numData - numMeta, resetNewElements);\n    } else if (numData < numMeta) {\n      this._removeElements(numData, numMeta - numData);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\n\n    const move = (arr) => {\n      arr.length += count;\n      for (i = arr.length - 1; i >= end; i--) {\n        arr[i] = arr[i - count];\n      }\n    };\n    move(data);\n\n    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n\n  updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * @private\n\t */\n  _removeElements(start, count) {\n    const meta = this._cachedMeta;\n    if (this._parsing) {\n      const removed = meta._parsed.splice(start, count);\n      if (meta._stacked) {\n        clearStacks(meta, removed);\n      }\n    }\n    meta.data.splice(start, count);\n  }\n\n  /**\n\t * @private\n   */\n  _sync(args) {\n    if (this._parsing) {\n      this._syncList.push(args);\n    } else {\n      const [method, arg1, arg2] = args;\n      this[method](arg1, arg2);\n    }\n    this.chart._dataChanges.push([this.index, ...args]);\n  }\n\n  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\n  }\n\n  _onDataSplice(start, count) {\n    if (count) {\n      this._sync(['_removeElements', start, count]);\n    }\n    const newCount = arguments.length - 2;\n    if (newCount) {\n      this._sync(['_insertElements', start, newCount]);\n    }\n  }\n\n  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {\n  _arrayUnique, isArray, isNullOrUndef,\n  valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\n\n    for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n      values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n    }\n    scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n  }\n  return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n  const scale = meta.iScale;\n  const values = getAllScaleValues(scale, meta.type);\n  let min = scale._length;\n  let i, ilen, curr, prev;\n  const updateMinAndPrev = () => {\n    if (curr === 32767 || curr === -32768) {\n      // Ignore truncated pixels\n      return;\n    }\n    if (defined(prev)) {\n      // curr - prev === 0 is ignored\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n\n  return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    // When bar thickness is enforced, category and bar percentages are ignored.\n    // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n    // and deprecate barPercentage since this value is ignored when thickness is absolute.\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n  const pixels = ruler.pixels;\n  const curr = pixels[index];\n  let prev = index > 0 ? pixels[index - 1] : null;\n  let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n  const percent = options.categoryPercentage;\n\n  if (prev === null) {\n    // first data: its size is double based on the next point or,\n    // if it's also the last data, we use the scale size.\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n\n  if (next === null) {\n    // last data: its size is also double based on the previous point.\n    next = curr + curr - prev;\n  }\n\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\n  };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n  const startValue = vScale.parse(entry[0], i);\n  const endValue = vScale.parse(entry[1], i);\n  const min = Math.min(startValue, endValue);\n  const max = Math.max(startValue, endValue);\n  let barStart = min;\n  let barEnd = max;\n\n  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n\n  // Store `barEnd` (furthest away from origin) as parsed value,\n  // to make stacking straight forward\n  item[vScale.axis] = barEnd;\n\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\n  };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n  if (isArray(entry)) {\n    parseFloatBar(entry, item, vScale, i);\n  } else {\n    item[vScale.axis] = vScale.parse(entry, i);\n  }\n  return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n  const iScale = meta.iScale;\n  const vScale = meta.vScale;\n  const labels = iScale.getLabels();\n  const singleScale = iScale === vScale;\n  const parsed = [];\n  let i, ilen, item, entry;\n\n  for (i = start, ilen = start + count; i < ilen; ++i) {\n    entry = data[i];\n    item = {};\n    item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n    parsed.push(parseValue(entry, item, vScale, i));\n  }\n  return parsed;\n}\n\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n  if (size !== 0) {\n    return sign(size);\n  }\n  return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n  let reverse, start, end, top, bottom;\n  if (properties.horizontal) {\n    reverse = properties.base > properties.x;\n    start = 'left';\n    end = 'right';\n  } else {\n    reverse = properties.base < properties.y;\n    start = 'bottom';\n    end = 'top';\n  }\n  if (reverse) {\n    top = 'end';\n    bottom = 'start';\n  } else {\n    top = 'start';\n    bottom = 'end';\n  }\n  return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n\n  if (edge === true) {\n    properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n    return;\n  }\n\n  const {start, end, reverse, top, bottom} = borderProps(properties);\n\n  if (edge === 'middle' && stack) {\n    properties.enableBorderRadius = true;\n    if ((stack._top || 0) === index) {\n      edge = top;\n    } else if ((stack._bottom || 0) === index) {\n      edge = bottom;\n    } else {\n      res[parseEdge(bottom, start, end, reverse)] = true;\n      edge = top;\n    }\n  }\n\n  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n  if (reverse) {\n    edge = swap(edge, a, b);\n    edge = startEnd(edge, b, a);\n  } else {\n    edge = startEnd(edge, a, b);\n  }\n  return edge;\n}\n\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n  static id = 'bar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'bar',\n\n    categoryPercentage: 0.8,\n    barPercentage: 0.9,\n    grouped: true,\n\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'base', 'width', 'height']\n      }\n    }\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      _index_: {\n        type: 'category',\n        offset: true,\n        grid: {\n          offset: true\n        }\n      },\n      _value_: {\n        type: 'linear',\n        beginAtZero: true,\n      }\n    }\n  };\n\n\n  /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n\n  /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n\n  /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const parsed = [];\n    let i, ilen, item, obj;\n    for (i = start, ilen = start + count; i < ilen; ++i) {\n      obj = data[i];\n      item = {};\n      item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n      parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    super.updateRangeFromParsed(range, scale, parsed, stack);\n    const custom = parsed._custom;\n    if (custom && scale === this._cachedMeta.vScale) {\n      // float bar: only one end of the bar is considered by `super`\n      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n\n  /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n  getMaxOverflow() {\n    return 0;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {iScale, vScale} = meta;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const value = isFloatBar(custom)\n      ? '[' + custom.start + ', ' + custom.end + ']'\n      : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n\n  initialize() {\n    this.enableOptionSharing = true;\n\n    super.initialize();\n\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\n  }\n\n  updateElements(bars, start, count, mode) {\n    const reset = mode === 'reset';\n    const {index, _cachedMeta: {vScale}} = this;\n    const base = vScale.getBasePixel();\n    const horizontal = vScale.isHorizontal();\n    const ruler = this._getRuler();\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n    for (let i = start; i < start + count; i++) {\n      const parsed = this.getParsed(i);\n      const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n      const ipixels = this._calculateBarIndexPixels(i, ruler);\n      const stack = (parsed._stacks || {})[vScale.axis];\n\n      const properties = {\n        horizontal,\n        base: vpixels.base,\n        enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n        x: horizontal ? vpixels.head : ipixels.center,\n        y: horizontal ? ipixels.center : vpixels.head,\n        height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n        width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n      };\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n      }\n      const options = properties.options || bars[i].options;\n      setBorderSkipped(properties, options, stack, index);\n      setInflateAmount(properties, options, ruler.ratio);\n      this.updateElement(bars[i], i, properties, mode);\n    }\n  }\n\n  /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n  _getStacks(last, dataIndex) {\n    const {iScale} = this._cachedMeta;\n    const metasets = iScale.getMatchingVisibleMetas(this._type)\n      .filter(meta => meta.controller.options.grouped);\n    const stacked = iScale.options.stacked;\n    const stacks = [];\n\n    const skipNull = (meta) => {\n      const parsed = meta.controller.getParsed(dataIndex);\n      const val = parsed && parsed[meta.vScale.axis];\n\n      if (isNullOrUndef(val) || isNaN(val)) {\n        return true;\n      }\n    };\n\n    for (const meta of metasets) {\n      if (dataIndex !== undefined && skipNull(meta)) {\n        continue;\n      }\n\n      // stacked   | meta.stack\n      //           | found | not found | undefined\n      // false     |   x   |     x     |     x\n      // true      |       |     x     |\n      // undefined |       |     x     |     x\n      if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n        stacks.push(meta.stack);\n      }\n      if (meta.index === last) {\n        break;\n      }\n    }\n\n    // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n    // stack where possible invisible bars will be located.\n    // https://github.com/chartjs/Chart.js/issues/6368\n    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n\n    return stacks;\n  }\n\n  /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n\n  /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n   * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1; // indexOf returns -1 if element is not present\n\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\n\n  /**\n\t * @private\n\t */\n  _getRuler() {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const pixels = [];\n    let i, ilen;\n\n    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\n\n    return {\n      min,\n      pixels,\n      start: iScale._startPixel,\n      end: iScale._endPixel,\n      stackCount: this._getStackCount(),\n      scale: iScale,\n      grouped: opts.grouped,\n      // bar thickness ratio used for non-grouped bars\n      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n\n  /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n    const actualBase = baseValue || 0;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const floating = isFloatBar(custom);\n    let value = parsed[vScale.axis];\n    let start = 0;\n    let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n    let head, size;\n\n    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      // bars crossing origin are not stacked\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      // When not visible, no height\n      head = base;\n    }\n\n    size = head - base;\n\n    if (Math.abs(size) < minBarLength) {\n      size = barSign(size, vScale, actualBase) * minBarLength;\n      if (value === actualBase) {\n        base -= size / 2;\n      }\n      const startPixel = vScale.getPixelForDecimal(0);\n      const endPixel = vScale.getPixelForDecimal(1);\n      const min = Math.min(startPixel, endPixel);\n      const max = Math.max(startPixel, endPixel);\n      base = Math.max(Math.min(base, max), min);\n      head = base + size;\n\n      if (_stacked && !floating) {\n        // visual data coordinates after applying minBarLength\n        parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n      }\n    }\n\n    if (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\n\n  /**\n\t * @private\n\t */\n  _calculateBarIndexPixels(index, ruler) {\n    const scale = ruler.scale;\n    const options = this.options;\n    const skipNull = options.skipNull;\n    const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n    let center, size;\n    if (ruler.grouped) {\n      const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n      const range = options.barThickness === 'flex'\n        ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n      size = Math.min(maxBarThickness, range.chunk * range.ratio);\n    } else {\n      // For non-grouped bar charts, exact pixel values are used\n      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\n    };\n  }\n\n  draw() {\n    const meta = this._cachedMeta;\n    const vScale = meta.vScale;\n    const rects = meta.data;\n    const ilen = rects.length;\n    let i = 0;\n\n    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n  static id = 'bubble';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'point',\n\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'borderWidth', 'radius']\n      }\n    }\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      x: {\n        type: 'linear'\n      },\n      y: {\n        type: 'linear'\n      }\n    }\n  };\n\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\n\n  /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    const parsed = super.parsePrimitiveData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    const parsed = super.parseArrayData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of objects\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const parsed = super.parseObjectData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const data = this._cachedMeta.data;\n\n    let max = 0;\n    for (let i = data.length - 1; i >= 0; --i) {\n      max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n    }\n    return max > 0 && max;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const labels = this.chart.data.labels || [];\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n    const r = parsed._custom;\n\n    return {\n      label: labels[index] || '',\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n\n  update(mode) {\n    const points = this._cachedMeta.data;\n\n    // Update Points\n    this.updateElements(points, 0, points.length, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const parsed = !reset && this.getParsed(i);\n      const properties = {};\n      const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n      const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n\n  /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n\n    // In case values were cached (and thus frozen), we need to clone the values\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n\n    // Custom radius resolution\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n    return values;\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n  let ratioX = 1;\n  let ratioY = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n  if (circumference < TAU) {\n    const startAngle = rotation;\n    const endAngle = startAngle + circumference;\n    const startX = Math.cos(startAngle);\n    const startY = Math.sin(startAngle);\n    const endX = Math.cos(endAngle);\n    const endY = Math.sin(endAngle);\n    const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n    const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n    const maxX = calcMax(0, startX, endX);\n    const maxY = calcMax(HALF_PI, startY, endY);\n    const minX = calcMin(PI, startX, endX);\n    const minY = calcMin(PI + HALF_PI, startY, endY);\n    ratioX = (maxX - minX) / 2;\n    ratioY = (maxY - minY) / 2;\n    offsetX = -(maxX + minX) / 2;\n    offsetY = -(maxY + minY) / 2;\n  }\n  return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n  static id = 'doughnut';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'arc',\n    animation: {\n      // Boolean - Whether we animate the rotation of the Doughnut\n      animateRotate: true,\n      // Boolean - Whether we animate scaling the Doughnut from the centre\n      animateScale: false\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n      },\n    },\n    // The percentage of the chart that we cut out of the middle.\n    cutout: '50%',\n\n    // The rotation of the chart, where the first data arc begins.\n    rotation: 0,\n\n    // The total circumference of the chart.\n    circumference: 360,\n\n    // The outer radius of the chart\n    radius: '100%',\n\n    // Spacing between arcs\n    spacing: 0,\n\n    indexAxis: 'r',\n  };\n\n  static descriptors = {\n    _scriptable: (name) => name !== 'spacing',\n    _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    // Need to override these to give a nice default\n    plugins: {\n      legend: {\n        labels: {\n          generateLabels(chart) {\n            const data = chart.data;\n            if (data.labels.length && data.datasets.length) {\n              const {labels: {pointStyle, color}} = chart.legend.options;\n\n              return data.labels.map((label, i) => {\n                const meta = chart.getDatasetMeta(0);\n                const style = meta.controller.getStyle(i);\n\n                return {\n                  text: label,\n                  fillStyle: style.backgroundColor,\n                  strokeStyle: style.borderColor,\n                  fontColor: color,\n                  lineWidth: style.borderWidth,\n                  pointStyle: pointStyle,\n                  hidden: !chart.getDataVisibility(i),\n\n                  // Extra data used for toggling the correct item\n                  index: i\n                };\n              });\n            }\n            return [];\n          }\n        },\n\n        onClick(e, legendItem, legend) {\n          legend.chart.toggleDataVisibility(legendItem.index);\n          legend.chart.update();\n        }\n      }\n    }\n  };\n\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n\n  linkScales() {}\n\n  /**\n\t * Override data parsing, since we are not using scales\n\t */\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\n      }\n\n      let i, ilen;\n      for (i = start, ilen = start + count; i < ilen; ++i) {\n        meta._parsed[i] = getter(i);\n      }\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n\n  /**\n\t * @private\n\t */\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n\n  /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\n\n  /**\n\t * @param {string} mode\n\t */\n  update(mode) {\n    const chart = this.chart;\n    const {chartArea} = chart;\n    const meta = this._cachedMeta;\n    const arcs = meta.data;\n    const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n    const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n    const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n    const chartWeight = this._getRingWeight(this.index);\n\n    // Compute the maximal rotation & circumference limits.\n    // If we only consider our dataset, this can cause problems when two datasets\n    // are both less than a circle with different rotations (starting angles)\n    const {circumference, rotation} = this._getRotationExtents();\n    const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n    const maxWidth = (chartArea.width - spacing) / ratioX;\n    const maxHeight = (chartArea.height - spacing) / ratioY;\n    const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n    const outerRadius = toDimension(this.options.radius, maxRadius);\n    const innerRadius = Math.max(outerRadius * cutout, 0);\n    const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n    this.offsetX = offsetX * outerRadius;\n    this.offsetY = offsetY * outerRadius;\n\n    meta.total = this.calculateTotal();\n\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n\n  /**\n   * @private\n   */\n  _circumference(i, reset) {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const circumference = this._getCircumference();\n    if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n      return 0;\n    }\n    return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n  }\n\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const centerX = (chartArea.left + chartArea.right) / 2;\n    const centerY = (chartArea.top + chartArea.bottom) / 2;\n    const animateScale = reset && animationOpts.animateScale;\n    const innerRadius = animateScale ? 0 : this.innerRadius;\n    const outerRadius = animateScale ? 0 : this.outerRadius;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    let startAngle = this._getRotation();\n    let i;\n\n    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\n    }\n\n    for (i = start; i < start + count; ++i) {\n      const circumference = this._circumference(i, reset);\n      const arc = arcs[i];\n      const properties = {\n        x: centerX + this.offsetX,\n        y: centerY + this.offsetY,\n        startAngle,\n        endAngle: startAngle + circumference,\n        circumference,\n        outerRadius,\n        innerRadius\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n      }\n      startAngle += circumference;\n\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\n\n    for (i = 0; i < metaData.length; i++) {\n      const value = meta._parsed[i];\n      if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n        total += Math.abs(value);\n      }\n    }\n\n    return total;\n  }\n\n  calculateCircumference(value) {\n    const total = this._cachedMeta.total;\n    if (total > 0 && !isNaN(value)) {\n      return TAU * (Math.abs(value) / total);\n    }\n    return 0;\n  }\n\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n\n    if (!arcs) {\n      // Find the outmost visible dataset\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n          arcs = meta.data;\n          controller = meta.controller;\n          break;\n        }\n      }\n    }\n\n    if (!arcs) {\n      return 0;\n    }\n\n    for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n      options = controller.resolveDataElementOptions(i);\n      if (options.borderAlign !== 'inner') {\n        max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n      }\n    }\n    return max;\n  }\n\n  getMaxOffset(arcs) {\n    let max = 0;\n\n    for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n      const options = this.resolveDataElementOptions(i);\n      max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n    }\n    return max;\n  }\n\n  /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n\n    return ringWeightOffset;\n  }\n\n  /**\n\t * @private\n\t */\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n\n  /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n  static id = 'line';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: 'line',\n    dataElementType: 'point',\n\n    showLine: true,\n    spanGaps: false,\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      _index_: {\n        type: 'category',\n      },\n      _value_: {\n        type: 'linear',\n      },\n    }\n  };\n\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    // @ts-ignore\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n    this._drawStart = start;\n    this._drawCount = count;\n\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n\n    // Update Line\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\n\n    const options = this.resolveDatasetElementOptions(mode);\n    if (!this.options.showLine) {\n      options.borderWidth = 0;\n    }\n    options.segment = this.options.segment;\n    this.updateElement(line, undefined, {\n      animated: !animationsDisabled,\n      options\n    }, mode);\n\n    // Update Points\n    this.updateElements(points, start, count, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    const end = start + count;\n    const pointsCount = points.length;\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n\n    for (let i = 0; i < pointsCount; ++i) {\n      const point = points[i];\n      const properties = directUpdate ? point : {};\n\n      if (i < start || i >= end) {\n        properties.skip = true;\n        continue;\n      }\n\n      const parsed = this.getParsed(i);\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n\n      prevParsed = parsed;\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    const data = meta.data || [];\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n\n  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n  static id = 'polarArea';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    dataElementType: 'arc',\n    animation: {\n      animateRotate: true,\n      animateScale: true\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n      },\n    },\n    indexAxis: 'r',\n    startAngle: 0,\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    plugins: {\n      legend: {\n        labels: {\n          generateLabels(chart) {\n            const data = chart.data;\n            if (data.labels.length && data.datasets.length) {\n              const {labels: {pointStyle, color}} = chart.legend.options;\n\n              return data.labels.map((label, i) => {\n                const meta = chart.getDatasetMeta(0);\n                const style = meta.controller.getStyle(i);\n\n                return {\n                  text: label,\n                  fillStyle: style.backgroundColor,\n                  strokeStyle: style.borderColor,\n                  fontColor: color,\n                  lineWidth: style.borderWidth,\n                  pointStyle: pointStyle,\n                  hidden: !chart.getDataVisibility(i),\n\n                  // Extra data used for toggling the correct item\n                  index: i\n                };\n              });\n            }\n            return [];\n          }\n        },\n\n        onClick(e, legendItem, legend) {\n          legend.chart.toggleDataVisibility(legendItem.index);\n          legend.chart.update();\n        }\n      }\n    },\n\n    scales: {\n      r: {\n        type: 'radialLinear',\n        angleLines: {\n          display: false\n        },\n        beginAtZero: true,\n        grid: {\n          circular: true\n        },\n        pointLabels: {\n          display: false\n        },\n        startAngle: 0\n      }\n    }\n  };\n\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n  }\n\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n\n  /**\n   * @protected\n   */\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n\n    return range;\n  }\n\n  /**\n\t * @private\n\t */\n  _updateRadius() {\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n    const outerRadius = Math.max(minSize / 2, 0);\n    const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n    const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\n  }\n\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const scale = this._cachedMeta.rScale;\n    const centerX = scale.xCenter;\n    const centerY = scale.yCenter;\n    const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n    let angle = datasetStartAngle;\n    let i;\n\n    const defaultAngle = 360 / this.countVisibleElements();\n\n    for (i = 0; i < start; ++i) {\n      angle += this._computeAngle(i, mode, defaultAngle);\n    }\n    for (i = start; i < start + count; i++) {\n      const arc = arcs[i];\n      let startAngle = angle;\n      let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n      let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n      angle = endAngle;\n\n      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\n        }\n      }\n\n      const properties = {\n        x: centerX,\n        y: centerY,\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle,\n        options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n      };\n\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n\n    return count;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\n", "import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n  static id = 'pie';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    // The percentage of the chart that we cut out of the middle.\n    cutout: 0,\n\n    // The rotation of the chart, where the first data arc begins.\n    rotation: 0,\n\n    // The total circumference of the chart.\n    circumference: 360,\n\n    // The outer radius of the chart\n    radius: '100%'\n  };\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n  static id = 'radar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: 'line',\n    dataElementType: 'point',\n    indexAxis: 'r',\n    showLine: true,\n    elements: {\n      line: {\n        fill: 'start'\n      }\n    },\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    scales: {\n      r: {\n        type: 'radialLinear',\n      }\n    }\n  };\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const line = meta.dataset;\n    const points = meta.data || [];\n    const labels = meta.iScale.getLabels();\n\n    // Update Line\n    line.points = points;\n    // In resize mode only point locations change, so no need to set the points or options.\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n\n      this.updateElement(line, undefined, properties, mode);\n    }\n\n    // Update Points\n    this.updateElements(points, 0, points.length, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\n\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n  static id = 'scatter';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'point',\n    showLine: false,\n    fill: false\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n\n    interaction: {\n      mode: 'point'\n    },\n\n    scales: {\n      x: {\n        type: 'linear'\n      },\n      y: {\n        type: 'linear'\n      }\n    }\n  };\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const labels = this.chart.data.labels || [];\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n\n    return {\n      label: labels[index] || '',\n      value: '(' + x + ', ' + y + ')'\n    };\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {data: points = []} = meta;\n    // @ts-ignore\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n    this._drawStart = start;\n    this._drawCount = count;\n\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n\n    if (this.options.showLine) {\n\n      // https://github.com/chartjs/Chart.js/issues/11333\n      if (!this.datasetElementType) {\n        this.addElements();\n      }\n      const {dataset: line, _dataset} = meta;\n\n      // Update Line\n      line._chart = this.chart;\n      line._datasetIndex = this.index;\n      line._decimated = !!_dataset._decimated;\n      line.points = points;\n\n      const options = this.resolveDatasetElementOptions(mode);\n      options.segment = this.options.segment;\n      this.updateElement(line, undefined, {\n        animated: !animationsDisabled,\n        options\n      }, mode);\n    } else if (this.datasetElementType) {\n      // https://github.com/chartjs/Chart.js/issues/11333\n      delete meta.dataset;\n      this.datasetElementType = false;\n    }\n\n    // Update Points\n    this.updateElements(points, start, count, mode);\n  }\n\n  addElements() {\n    const {showLine} = this.options;\n\n    if (!this.datasetElementType && showLine) {\n      this.datasetElementType = this.chart.registry.getElement('line');\n    }\n\n    super.addElements();\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n\n      prevParsed = parsed;\n    }\n\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const data = meta.data || [];\n\n    if (!this.options.showLine) {\n      let max = 0;\n      for (let i = data.length - 1; i >= 0; --i) {\n        max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n      }\n      return max > 0 && max;\n    }\n\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n\n    if (!data.length) {\n      return border;\n    }\n\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n}\n", "/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter<T extends AnyObject = AnyObject> {\n  readonly options: T;\n  /**\n   * Will called with chart options after adapter creation.\n   */\n  init(this: DateAdapter<T>, chartOptions: ChartOptions): void;\n  /**\n   * Returns a map of time formats for the supported formatting units defined\n   * in Unit as well as 'datetime' representing a detailed date/time string.\n   */\n  formats(this: DateAdapter<T>): Record<string, string>;\n  /**\n   * Parses the given `value` and return the associated timestamp.\n   * @param value - the value to parse (usually comes from the data)\n   * @param [format] - the expected data format\n   */\n  parse(this: DateAdapter<T>, value: unknown, format?: TimeUnit): number | null;\n  /**\n   * Returns the formatted date in the specified `format` for a given `timestamp`.\n   * @param timestamp - the timestamp to format\n   * @param format - the date/time token\n   */\n  format(this: DateAdapter<T>, timestamp: number, format: TimeUnit): string;\n  /**\n   * Adds the specified `amount` of `unit` to the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param amount - the amount to add\n   * @param unit - the unit as string\n   */\n  add(this: DateAdapter<T>, timestamp: number, amount: number, unit: TimeUnit): number;\n  /**\n   * Returns the number of `unit` between the given timestamps.\n   * @param a - the input timestamp (reference)\n   * @param b - the timestamp to subtract\n   * @param unit - the unit as string\n   */\n  diff(this: DateAdapter<T>, a: number, b: number, unit: TimeUnit): number;\n  /**\n   * Returns start of `unit` for the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param unit - the unit as string\n   * @param [weekday] - the ISO day of the week with 1 being Monday\n   * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n   */\n  startOf(this: DateAdapter<T>, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number): number;\n  /**\n   * Returns end of `unit` for the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param unit - the unit as string\n   */\n  endOf(this: DateAdapter<T>, timestamp: number, unit: TimeUnit | 'isoWeek'): number;\n}\n\nfunction abstract<T = void>(): T {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n  /**\n   * Override default date adapter methods.\n   * Accepts type parameter to define options type.\n   * @example\n   * Chart._adapters._date.override<{myAdapterOption: string}>({\n   *   init() {\n   *     console.log(this.options.myAdapterOption);\n   *   }\n   * })\n   */\n  static override<T extends AnyObject = AnyObject>(\n    members: Partial<Omit<DateAdapter<T>, 'options'>>\n  ) {\n    Object.assign(DateAdapterBase.prototype, members);\n  }\n\n  readonly options: AnyObject;\n\n  constructor(options: AnyObject) {\n    this.options = options || {};\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  init() {}\n\n  formats(): Record<string, string> {\n    return abstract();\n  }\n\n  parse(): number | null {\n    return abstract();\n  }\n\n  format(): string {\n    return abstract();\n  }\n\n  add(): number {\n    return abstract();\n  }\n\n  diff(): number {\n    return abstract();\n  }\n\n  startOf(): number {\n    return abstract();\n  }\n\n  endOf(): number {\n    return abstract();\n  }\n}\n\nexport default {\n  _date: DateAdapterBase\n};\n", "import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n  const {controller, data, _sorted} = metaset;\n  const iScale = controller._cachedMeta.iScale;\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      return lookupMethod(data, axis, value);\n    } else if (controller._sharedOptions) {\n      // _sharedOptions indicates that each element has equal options -> equal proportions\n      // So we can do a ranged binary search based on the range of first element and\n      // be confident to get the full range of indices that can intersect with the value.\n      const el = data[0];\n      const range = typeof el.getRange === 'function' && el.getRange(axis);\n      if (range) {\n        const start = lookupMethod(data, axis, value - range);\n        const end = lookupMethod(data, axis, value + range);\n        return {lo: start.lo, hi: end.hi};\n      }\n    }\n  }\n  // Default to all elements, when binary search can not be used.\n  return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n  const metasets = chart.getSortedVisibleDatasetMetas();\n  const value = position[axis];\n  for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n    const {index, data} = metasets[i];\n    const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n    for (let j = lo; j <= hi; ++j) {\n      const element = data[j];\n      if (!element.skip) {\n        handler(element, index, j);\n      }\n    }\n  }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\n\n  return function(pt1, pt2) {\n    const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n    const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n    return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n  };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\n  }\n\n  const evaluationFunc = function(element, datasetIndex, index) {\n    if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n      return;\n    }\n    if (element.inRange(position.x, position.y, useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n    }\n  };\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\n\n  function evaluationFunc(element, datasetIndex, index) {\n    const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n    const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  let items = [];\n  const distanceMetric = getDistanceMetricForAxis(axis);\n  let minDistance = Number.POSITIVE_INFINITY;\n\n  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\n    }\n\n    const distance = distanceMetric(position, center);\n    if (distance < minDistance) {\n      items = [{element, datasetIndex, index}];\n      minDistance = distance;\n    } else if (distance === minDistance) {\n      // Can have multiple items at the same distance in which case we sort by size\n      items.push({element, datasetIndex, index});\n    }\n  }\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\n\n  evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n    if (element[rangeMethod](position[axis], useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n      intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n    }\n  });\n\n  // If we want to trigger on an intersect and we don't have any items\n  // that intersect the position, return nothing\n  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n  // Part of the public API to facilitate developers creating their own modes\n  evaluateInteractionItems,\n\n  // Helper function for different modes\n  modes: {\n    /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      // Default axis for index mode is 'x' to match old behaviour\n      const axis = options.axis || 'x';\n      const includeInvisible = options.includeInvisible || false;\n      const items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n        : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      const elements = [];\n\n      if (!items.length) {\n        return [];\n      }\n\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n\n        // don't count items that are skipped (null data)\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n\n      return elements;\n    },\n\n    /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    dataset(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      let items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n        getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n      if (items.length > 0) {\n        const datasetIndex = items[0].datasetIndex;\n        const data = chart.getDatasetMeta(datasetIndex).data;\n        items = [];\n        for (let i = 0; i < data.length; ++i) {\n          items.push({element: data[i], datasetIndex, index: i});\n        }\n      }\n\n      return items;\n    },\n\n    /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    point(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n    },\n\n    /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    nearest(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n    },\n\n    /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\n\n    /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    y(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n    }\n  }\n};\n", "import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n  return array.sort((a, b) => {\n    const v0 = reverse ? b : a;\n    const v1 = reverse ? a : b;\n    return v0.weight === v1.weight ?\n      v0.index - v1.index :\n      v0.weight - v1.weight;\n  });\n}\n\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\n\n  for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n    box = boxes[i];\n    ({position: pos, options: {stack, stackWeight = 1}} = box);\n    layoutBoxes.push({\n      index: i,\n      box,\n      pos,\n      horizontal: box.isHorizontal(),\n      weight: box.weight,\n      stack: stack && (pos + stack),\n      stackWeight\n    });\n  }\n  return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n  const stacks = {};\n  for (const wrap of layouts) {\n    const {stack, pos, stackWeight} = wrap;\n    if (!stack || !STATIC_POSITIONS.includes(pos)) {\n      continue;\n    }\n    const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n    _stack.count++;\n    _stack.weight += stackWeight;\n  }\n  return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n  const stacks = buildStacks(layouts);\n  const {vBoxMaxWidth, hBoxMaxHeight} = params;\n  let i, ilen, layout;\n  for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n    layout = layouts[i];\n    const {fullSize} = layout.box;\n    const stack = stacks[layout.stack];\n    const factor = stack && layout.stackWeight / stack.weight;\n    if (layout.horizontal) {\n      layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n      layout.height = hBoxMaxHeight;\n    } else {\n      layout.width = vBoxMaxWidth;\n      layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n    }\n  }\n  return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n  const layoutBoxes = wrapBoxes(boxes);\n  const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n  const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n  const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n  const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n  const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n  return {\n    fullSize,\n    leftAndTop: left.concat(top),\n    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n    chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n    vertical: left.concat(right).concat(centerVertical),\n    horizontal: top.concat(bottom).concat(centerHorizontal)\n  };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n  maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n  maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n  maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n  maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n\n  // dynamically placed boxes size is not considered\n  if (!isObject(pos)) {\n    if (layout.size) {\n      // this layout was already counted for, lets first reduce old size\n      chartArea[pos] -= layout.size;\n    }\n    const stack = stacks[layout.stack] || {size: 0, count: 1};\n    stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n    layout.size = stack.size / stack.count;\n    chartArea[pos] += layout.size;\n  }\n\n  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\n  }\n\n  const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n  const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n  const widthChanged = newWidth !== chartArea.w;\n  const heightChanged = newHeight !== chartArea.h;\n  chartArea.w = newWidth;\n  chartArea.h = newHeight;\n\n  // return booleans on the changes per direction\n  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\n\n  function updatePos(pos) {\n    const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n    chartArea[pos] += change;\n    return change;\n  }\n  chartArea.y += updatePos('top');\n  chartArea.x += updatePos('left');\n  updatePos('right');\n  updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\n\n  function marginForPositions(positions) {\n    const margin = {left: 0, top: 0, right: 0, bottom: 0};\n    positions.forEach((pos) => {\n      margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n    });\n    return margin;\n  }\n\n  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\n\n    box.update(\n      layout.width || chartArea.w,\n      layout.height || chartArea.h,\n      getMargins(layout.horizontal, chartArea)\n    );\n    const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n    // Dimensions changed and there were non full width boxes before this\n    // -> we have to refit those\n    refit |= same && refitBoxes.length;\n\n    // Chart area changed in the opposite direction\n    changed = changed || other;\n\n    if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n      refitBoxes.push(layout);\n    }\n  }\n\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n  box.top = top;\n  box.left = left;\n  box.right = left + width;\n  box.bottom = top + height;\n  box.width = width;\n  box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\n\n  for (const layout of boxes) {\n    const box = layout.box;\n    const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n    const weight = (layout.stackWeight / stack.weight) || 1;\n    if (layout.horizontal) {\n      const width = chartArea.w * weight;\n      const height = stack.size || box.height;\n      if (defined(stack.start)) {\n        y = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n      } else {\n        setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n      }\n      stack.start = y;\n      stack.placed += width;\n      y = box.bottom;\n    } else {\n      const height = chartArea.h * weight;\n      const width = stack.size || box.width;\n      if (defined(stack.start)) {\n        x = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n      } else {\n        setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n      }\n      stack.start = x;\n      stack.placed += height;\n      x = box.right;\n    }\n  }\n\n  chartArea.x = x;\n  chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] -  Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory.  It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n  /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n\n    // initialize item with default values\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    // @ts-ignore\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n\n    chart.boxes.push(item);\n  },\n\n  /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n  removeBox(chart, layoutItem) {\n    const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n    if (index !== -1) {\n      chart.boxes.splice(index, 1);\n    }\n  },\n\n  /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n\n  /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n   * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\n    }\n\n    const padding = toPadding(chart.options.layout.padding);\n    const availableWidth = Math.max(width - padding.width, 0);\n    const availableHeight = Math.max(height - padding.height, 0);\n    const boxes = buildLayoutBoxes(chart.boxes);\n    const verticalBoxes = boxes.vertical;\n    const horizontalBoxes = boxes.horizontal;\n\n    // Before any changes are made, notify boxes that an update is about to being\n    // This is used to clear any cached data (e.g. scale limits)\n    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n\n    // Essentially we now have any number of boxes on each of the 4 sides.\n    // Our canvas looks like the following.\n    // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n    // B1 is the bottom axis\n    // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n    // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n    // an error will be thrown.\n    //\n    // |----------------------------------------------------|\n    // |                  T1 (Full Width)                   |\n    // |----------------------------------------------------|\n    // |    |    |                 T2                  |    |\n    // |    |----|-------------------------------------|----|\n    // |    |    | C1 |                           | C2 |    |\n    // |    |    |----|                           |----|    |\n    // |    |    |                                     |    |\n    // | L1 | L2 |           ChartArea (C0)            | R1 |\n    // |    |    |                                     |    |\n    // |    |    |----|                           |----|    |\n    // |    |    | C3 |                           | C4 |    |\n    // |    |----|-------------------------------------|----|\n    // |    |    |                 B1                  |    |\n    // |----------------------------------------------------|\n    // |                  B2 (Full Width)                   |\n    // |----------------------------------------------------|\n    //\n\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n    const params = Object.freeze({\n      outerWidth: width,\n      outerHeight: height,\n      padding,\n      availableWidth,\n      availableHeight,\n      vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n      hBoxMaxHeight: availableHeight / 2\n    });\n    const maxPadding = Object.assign({}, padding);\n    updateMaxPadding(maxPadding, toPadding(minPadding));\n    const chartArea = Object.assign({\n      maxPadding,\n      w: availableWidth,\n      h: availableHeight,\n      x: padding.left,\n      y: padding.top\n    }, padding);\n\n    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n    // First fit the fullSize boxes, to reduce probability of re-fitting.\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n    // Then fit vertical boxes\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n    // Then fit horizontal boxes\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      // if the area changed, re-fit vertical boxes\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n\n    handleMaxPadding(chartArea);\n\n    // Finally place the boxes to correct coordinates\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n    // Move to opposite side of chart\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n    chart.chartArea = {\n      left: chartArea.left,\n      top: chartArea.top,\n      right: chartArea.left + chartArea.w,\n      bottom: chartArea.top + chartArea.h,\n      height: chartArea.h,\n      width: chartArea.w,\n    };\n\n    // Finally update boxes in chartArea (radial scale for example)\n    each(boxes.chartArea, (layout) => {\n      const box = layout.box;\n      Object.assign(box, chart.chartArea);\n      box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n    });\n  }\n};\n", "\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n  /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n  acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n  releaseContext(context) { // eslint-disable-line no-unused-vars\n    return false;\n  }\n\n  /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n  addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n  removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n  getDevicePixelRatio() {\n    return 1;\n  }\n\n  /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n  getMaximumSize(element, width, height, aspectRatio) {\n    width = Math.max(0, width || element.width);\n    height = height || element.height;\n    return {\n      width,\n      height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n    };\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n  isAttached(canvas) { // eslint-disable-line no-unused-vars\n    return true;\n  }\n\n  /**\n   * Updates config with platform specific requirements\n   * @param {import('../core/core.config.js').default} config\n   */\n  updateConfig(config) { // eslint-disable-line no-unused-vars\n    // no-op\n  }\n}\n", "/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    // To prevent canvas fingerprinting, some add-ons undefine the getContext\n    // method, for example: https://github.com/kkapsner/CanvasBlocker\n    // https://github.com/chartjs/Chart.js/issues/2807\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n", "/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n  touchstart: 'mousedown',\n  touchmove: 'mousemove',\n  touchend: 'mouseup',\n  pointerenter: 'mouseenter',\n  pointerdown: 'mousedown',\n  pointermove: 'mousemove',\n  pointerup: 'mouseup',\n  pointerleave: 'mouseout',\n  pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n\n  // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n  // returns null or '' if no explicit value has been set to the canvas attribute.\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\n\n  // Chart.js modifies some canvas values that we want to restore on destroy\n  canvas[EXPANDO_KEY] = {\n    initial: {\n      height: renderHeight,\n      width: renderWidth,\n      style: {\n        display: style.display,\n        height: style.height,\n        width: style.width\n      }\n    }\n  };\n\n  // Force canvas to display as block to avoid extra space caused by inline\n  // elements, which would interfere with the responsive resize process.\n  // https://github.com/chartjs/Chart.js/issues/2538\n  style.display = style.display || 'block';\n  // Include possible borders in the size\n  style.boxSizing = style.boxSizing || 'border-box';\n\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\n      // If no explicit render height and style height, let's apply the aspect ratio,\n      // which one can be specified by the user but also by charts as default option\n      // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n      canvas.height = canvas.width / (aspectRatio || 2);\n    } else {\n      const displayHeight = readUsedSize(canvas, 'height');\n      if (displayHeight !== undefined) {\n        canvas.height = displayHeight;\n      }\n    }\n  }\n\n  return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n  if (node) {\n    node.addEventListener(type, listener, eventListenerOptions);\n  }\n}\n\nfunction removeListener(chart, type, listener) {\n  if (chart && chart.canvas) {\n    chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n  }\n}\n\nfunction fromNativeEvent(event, chart) {\n  const type = EVENT_TYPES[event.type] || event.type;\n  const {x, y} = getRelativePosition(event, chart);\n  return {\n    type,\n    chart,\n    native: event,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null,\n  };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\n    }\n  }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n  const dpr = window.devicePixelRatio;\n  if (dpr === oldDevicePixelRatio) {\n    return;\n  }\n  oldDevicePixelRatio = dpr;\n  drpListeningCharts.forEach((resize, chart) => {\n    if (chart.currentDevicePixelRatio !== dpr) {\n      resize();\n    }\n  });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\n  }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const container = canvas && _getParentNode(canvas);\n  if (!container) {\n    return;\n  }\n  const resize = throttled((width, height) => {\n    const w = container.clientWidth;\n    listener(width, height);\n    if (w < container.clientWidth) {\n      // If the container size shrank during chart resize, let's assume\n      // scrollbar appeared. So we resize again with the scrollbar visible -\n      // effectively making chart smaller and the scrollbar hidden again.\n      // Because we are inside `throttled`, and currently `ticking`, scroll\n      // events are ignored during this whole 2 resize process.\n      // If we assumed wrong and something else happened, we are resizing\n      // twice in a frame (potential performance issue)\n      listener();\n    }\n  }, window);\n\n  // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    // When its container's display is set to 'none' the callback will be called with a\n    // size of (0, 0), which will cause the chart to lose its original height, so skip\n    // resizing in such case.\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n\n  return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    // This case can occur if the chart is destroyed while waiting\n    // for the throttled function to occur. We prevent crashes by checking\n    // for a destroyed chart\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart);\n\n  addListener(canvas, type, proxy);\n\n  return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n  acquireContext(canvas, aspectRatio) {\n    // To prevent canvas fingerprinting, some add-ons undefine the getContext\n    // method, for example: https://github.com/kkapsner/CanvasBlocker\n    // https://github.com/chartjs/Chart.js/issues/2807\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n    // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n    // inside an iframe or when running in a protected environment. We could guess the\n    // types from their toString() value but let's keep things flexible and assume it's\n    // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n    // https://github.com/chartjs/Chart.js/issues/3887\n    // https://github.com/chartjs/Chart.js/issues/4102\n    // https://github.com/chartjs/Chart.js/issues/4152\n    if (context && context.canvas === canvas) {\n      // Load platform resources on first chart creation, to make it possible to\n      // import the library before setting platform options.\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n\n    return null;\n  }\n\n  /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\n    }\n\n    const initial = canvas[EXPANDO_KEY].initial;\n    ['height', 'width'].forEach((prop) => {\n      const value = initial[prop];\n      if (isNullOrUndef(value)) {\n        canvas.removeAttribute(prop);\n      } else {\n        canvas.setAttribute(prop, value);\n      }\n    });\n\n    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n\n    // The canvas render size might have been changed (and thus the state stack discarded),\n    // we can't use save() and restore() to restore the initial state. So make sure that at\n    // least the canvas context is reset to the default state by setting the canvas width.\n    // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n    // eslint-disable-next-line no-self-assign\n    canvas.width = canvas.width;\n\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n\n  /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n  addEventListener(chart, type, listener) {\n    // Can have only one listener per type, so make sure previous is removed\n    this.removeEventListener(chart, type);\n\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const handlers = {\n      attach: createAttachObserver,\n      detach: createDetachObserver,\n      resize: createResizeObserver\n    };\n    const handler = handlers[type] || createProxyAndListen;\n    proxies[type] = handler(chart, type, listener);\n  }\n\n\n  /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n\n    if (!proxy) {\n      return;\n    }\n\n    const handlers = {\n      attach: releaseObserver,\n      detach: releaseObserver,\n      resize: releaseObserver\n    };\n    const handler = handlers[type] || removeListener;\n    handler(chart, type, proxy);\n    proxies[type] = undefined;\n  }\n\n  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n  isAttached(canvas) {\n    const container = _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n", "import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n", "import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element<T = AnyObject, O = AnyObject> {\n\n  static defaults = {};\n  static defaultRoutes = undefined;\n\n  x: number;\n  y: number;\n  active = false;\n  options: O;\n  $animations: Record<keyof T, Animation>;\n\n  tooltipPosition(useFinalPosition: boolean): Point {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y} as Point;\n  }\n\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n\n  /**\n   * Gets the current or final value of each prop. Can return extra properties (whole object).\n   * @param props - properties to get\n   * @param [final] - get the final value (animation target)\n   */\n  getProps<P extends (keyof T)[]>(props: P, final?: boolean): Pick<T, P[number]>;\n  getProps<P extends string>(props: P[], final?: boolean): Partial<Record<P, unknown>>;\n  getProps(props: string[], final?: boolean): Partial<Record<string, unknown>> {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      // let's not create an object, if not needed\n      return this as Record<string, unknown>;\n    }\n    const ret: Record<string, unknown> = {};\n    props.forEach((prop) => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n    });\n    return ret;\n  }\n}\n", "import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const determinedMaxTicks = determineMaxTicks(scale);\n  const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n  const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n  const numMajorIndices = majorIndices.length;\n  const first = majorIndices[0];\n  const last = majorIndices[numMajorIndices - 1];\n  const newTicks = [];\n\n  // If there are too many major ticks to display them all\n  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n  if (numMajorIndices > 0) {\n    let i, ilen;\n    const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n    skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n    for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n      skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n    }\n    skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n    return newTicks;\n  }\n  skip(ticks, newTicks, spacing);\n  return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n  const offset = scale.options.offset;\n  const tickLength = scale._tickSize();\n  const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n  const maxChart = scale._maxLength / tickLength;\n  return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n\n  // If the major ticks are evenly spaced apart, place the minor ticks\n  // so that they divide the major ticks into even chunks\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\n  }\n\n  const factors = _factorize(evenMajorSpacing);\n  for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n    const factor = factors[i];\n    if (factor > spacing) {\n      return factor;\n    }\n  }\n  return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n  const result = [];\n  let i, ilen;\n  for (i = 0, ilen = ticks.length; i < ilen; i++) {\n    if (ticks[i].major) {\n      result.push(i);\n    }\n  }\n  return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\n\n  spacing = Math.ceil(spacing);\n  for (i = 0; i < ticks.length; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = majorIndices[count * spacing];\n    }\n  }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n  const start = valueOrDefault(majorStart, 0);\n  const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n  let count = 0;\n  let length, i, next;\n\n  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n\n  next = start;\n\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\n  }\n\n  for (i = Math.max(start, 0); i < end; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n  }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n\n  if (len < 2) {\n    return false;\n  }\n\n  for (diff = arr[0], i = 1; i < len; ++i) {\n    if (arr[i] - arr[i - 1] !== diff) {\n      return false;\n    }\n  }\n  return diff;\n}\n", "import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n  const length = scale.ticks.length;\n  const validIndex = Math.min(index, length - 1);\n  const start = scale._startPixel;\n  const end = scale._endPixel;\n  const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\n\n  if (offsetGridLines) {\n    if (length === 1) {\n      offset = Math.max(lineValue - start, end - lineValue);\n    } else if (index === 0) {\n      offset = (scale.getPixelForTick(1) - lineValue) / 2;\n    } else {\n      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n    }\n    lineValue += validIndex < index ? offset : -offset;\n\n    // Return undefined if the pixel is out of the range\n    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n  each(caches, (cache) => {\n    const gc = cache.gc;\n    const gcLen = gc.length / 2;\n    let i;\n    if (gcLen > length) {\n      for (i = 0; i < gcLen; ++i) {\n        delete cache.data[gc[i]];\n      }\n      gc.splice(0, gcLen);\n    }\n  });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\n  }\n\n  const font = toFont(options.font, fallback);\n  const padding = toPadding(options.padding);\n  const lines = isArray(options.text) ? options.text.length : 1;\n\n  return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\n\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\n\nfunction titleAlign(align, position, reverse) {\n  /** @type {CanvasTextAlign} */\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n  const {top, left, bottom, right, chart} = scale;\n  const {chartArea, scales} = chart;\n  let rotation = 0;\n  let maxWidth, titleX, titleY;\n  const height = bottom - top;\n  const width = right - left;\n\n  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\n\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n    } else if (position === 'center') {\n      titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n    } else {\n      titleY = offsetFromEdge(scale, position, offset);\n    }\n    maxWidth = right - left;\n  } else {\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n    } else if (position === 'center') {\n      titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n    } else {\n      titleX = offsetFromEdge(scale, position, offset);\n    }\n    titleY = _alignStartEnd(align, bottom, top);\n    rotation = position === 'left' ? -HALF_PI : HALF_PI;\n  }\n  return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n  // eslint-disable-next-line max-statements\n  constructor(cfg) {\n    super();\n\n    /** @type {string} */\n    this.id = cfg.id;\n    /** @type {string} */\n    this.type = cfg.type;\n    /** @type {any} */\n    this.options = undefined;\n    /** @type {CanvasRenderingContext2D} */\n    this.ctx = cfg.ctx;\n    /** @type {Chart} */\n    this.chart = cfg.chart;\n\n    // implements box\n    /** @type {number} */\n    this.top = undefined;\n    /** @type {number} */\n    this.bottom = undefined;\n    /** @type {number} */\n    this.left = undefined;\n    /** @type {number} */\n    this.right = undefined;\n    /** @type {number} */\n    this.width = undefined;\n    /** @type {number} */\n    this.height = undefined;\n    this._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    /** @type {number} */\n    this.maxWidth = undefined;\n    /** @type {number} */\n    this.maxHeight = undefined;\n    /** @type {number} */\n    this.paddingTop = undefined;\n    /** @type {number} */\n    this.paddingBottom = undefined;\n    /** @type {number} */\n    this.paddingLeft = undefined;\n    /** @type {number} */\n    this.paddingRight = undefined;\n\n    // scale-specific properties\n    /** @type {string=} */\n    this.axis = undefined;\n    /** @type {number=} */\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    /** @type {Tick[]} */\n    this.ticks = [];\n    /** @type {object[]|null} */\n    this._gridLineItems = null;\n    /** @type {object[]|null} */\n    this._labelItems = null;\n    /** @type {object|null} */\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    /** @type {number} */\n    this._startPixel = undefined;\n    /** @type {number} */\n    this._endPixel = undefined;\n    this._reversePixels = false;\n    this._userMax = undefined;\n    this._userMin = undefined;\n    this._suggestedMax = undefined;\n    this._suggestedMin = undefined;\n    this._ticksLength = 0;\n    this._borderValue = 0;\n    this._cache = {};\n    this._dataLimitsCached = false;\n    this.$context = undefined;\n  }\n\n  /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n  init(options) {\n    this.options = options.setContext(this.getContext());\n\n    this.axis = options.axis;\n\n    // parse min/max value, so we can properly determine min/max for other scales\n    this._userMin = this.parse(options.min);\n    this._userMax = this.parse(options.max);\n    this._suggestedMin = this.parse(options.suggestedMin);\n    this._suggestedMax = this.parse(options.suggestedMax);\n  }\n\n  /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    return raw;\n  }\n\n  /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n  getUserBounds() {\n    let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n    _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n    _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n    _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n    _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n    return {\n      min: finiteOrDefault(_userMin, _suggestedMin),\n      max: finiteOrDefault(_userMax, _suggestedMax),\n      minDefined: isFinite(_userMin),\n      maxDefined: isFinite(_userMax)\n    };\n  }\n\n  /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n  getMinMax(canStack) {\n    // eslint-disable-next-line prefer-const\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n\n    if (minDefined && maxDefined) {\n      return {min, max};\n    }\n\n    const metas = this.getMatchingVisibleMetas();\n    for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n      range = metas[i].controller.getMinMax(this, canStack);\n      if (!minDefined) {\n        min = Math.min(min, range.min);\n      }\n      if (!maxDefined) {\n        max = Math.max(max, range.max);\n      }\n    }\n\n    // Make sure min <= max when only min or max is defined by user and the data is outside that range\n    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\n\n  /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n  getPadding() {\n    return {\n      left: this.paddingLeft || 0,\n      top: this.paddingTop || 0,\n      right: this.paddingRight || 0,\n      bottom: this.paddingBottom || 0\n    };\n  }\n\n  /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n  getTicks() {\n    return this.ticks;\n  }\n\n  /**\n\t * @return {string[]}\n\t */\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n\n  /**\n   * @return {import('../types.js').LabelItem[]}\n   */\n  getLabelItems(chartArea = this.chart.chartArea) {\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    return items;\n  }\n\n  // When a new layout is created, reset the data limits cache\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n\n  // These methods are ordered by lifecycle. Utilities then follow.\n  // Any function defined here is inherited by all scale types.\n  // Any function can be extended by the scale type\n\n  beforeUpdate() {\n    call(this.options.beforeUpdate, [this]);\n  }\n\n  /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t *   This space comes from two sources:\n\t *     - padding - space that's required to show the labels at the edges of the scale\n\t *     - thickness of scales or legends in another orientation\n\t */\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n\n    // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n    this.beforeUpdate();\n\n    // Absorb the master measurements\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins = Object.assign({\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    }, margins);\n\n    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n\n    // Dimensions\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\n\n    // Data min/max\n    if (!this._dataLimitsCached) {\n      this.beforeDataLimits();\n      this.determineDataLimits();\n      this.afterDataLimits();\n      this._range = _addGrace(this, grace, beginAtZero);\n      this._dataLimitsCached = true;\n    }\n\n    this.beforeBuildTicks();\n\n    this.ticks = this.buildTicks() || [];\n\n    // Allow modification of ticks in callback.\n    this.afterBuildTicks();\n\n    // Compute tick rotation and fit using a sampled subset of labels\n    // We generally don't need to compute the size of every single label for determining scale size\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n    // configure is called twice, once here, once from core.controller.updateLayout.\n    // Here we haven't been positioned yet, but dimensions are correct.\n    // Variables set in configure are needed for calculateLabelRotation, and\n    // it's ok that coordinates are not correct there, only dimensions matter.\n    this.configure();\n\n    // Tick Rotation\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n    this.afterCalculateLabelRotation();\n\n    // Auto-skip\n    if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n      this.ticks = autoSkip(this, this.ticks);\n      this._labelSizes = null;\n      this.afterAutoSkip();\n    }\n\n    if (samplingEnabled) {\n      // Generate labels using all non-skipped ticks\n      this._convertTicksToLabels(this.ticks);\n    }\n\n    this.beforeFit();\n    this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n    this.afterFit();\n\n    // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n    this.afterUpdate();\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\n      // by default vertical scales are from bottom to top, so pixels are reversed\n      reversePixels = !reversePixels;\n    }\n    this._startPixel = startPixel;\n    this._endPixel = endPixel;\n    this._reversePixels = reversePixels;\n    this._length = endPixel - startPixel;\n    this._alignToPixels = this.options.alignToPixels;\n  }\n\n  afterUpdate() {\n    call(this.options.afterUpdate, [this]);\n  }\n\n  //\n\n  beforeSetDimensions() {\n    call(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    // Set the unconstrained dimension before label rotation\n    if (this.isHorizontal()) {\n      // Reset position before calculating rotation\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n\n      // Reset position before calculating rotation\n      this.top = 0;\n      this.bottom = this.height;\n    }\n\n    // Reset padding\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    call(this.options.afterSetDimensions, [this]);\n  }\n\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    call(this.options[name], [this]);\n  }\n\n  // Data limits\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n\n  //\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  /**\n\t * @return {object[]} the ticks\n\t */\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n\n  beforeTickToLabelConversion() {\n    call(this.options.beforeTickToLabelConversion, [this]);\n  }\n  /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n  generateTickLabels(ticks) {\n    const tickOpts = this.options.ticks;\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      tick = ticks[i];\n      tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    call(this.options.afterTickToLabelConversion, [this]);\n  }\n\n  //\n\n  beforeCalculateLabelRotation() {\n    call(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n\n    // Estimate the width of each grid based on the canvas width, the maximum\n    // label width and the number of tick intervals\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n    // Allow 3 pixels x2 padding either side for label readability\n    if (maxLabelWidth + 6 > tickWidth) {\n      tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n      maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n      maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n      labelRotation = toDegrees(Math.min(\n        Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n        Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n      ));\n      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n    }\n\n    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    call(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n\n  //\n\n  beforeFit() {\n    call(this.options.beforeFit, [this]);\n  }\n  fit() {\n    // Reset\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\n\n    if (display) {\n      const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n      if (isHorizontal) {\n        minSize.width = this.maxWidth;\n        minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n      } else {\n        minSize.height = this.maxHeight; // fill all the height\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\n\n      // Don't bother fitting the ticks if we are not showing the labels\n      if (tickOpts.display && this.ticks.length) {\n        const {first, last, widest, highest} = this._getLabelSizes();\n        const tickPadding = tickOpts.padding * 2;\n        const angleRadians = toRadians(this.labelRotation);\n        const cos = Math.cos(angleRadians);\n        const sin = Math.sin(angleRadians);\n\n        if (isHorizontal) {\n        // A horizontal axis is more constrained by the height.\n          const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n          minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n        } else {\n        // A vertical axis is more constrained by the width. Labels are the\n        // dominant factor here, so get that length first and account for padding\n          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n\n    this._handleMargins();\n\n    if (isHorizontal) {\n      this.width = this._length = chart.width - this._margins.left - this._margins.right;\n      this.height = minSize.height;\n    } else {\n      this.width = minSize.width;\n      this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n    }\n  }\n\n  _calculatePadding(first, last, sin, cos) {\n    const {ticks: {align, padding}, position} = this.options;\n    const isRotated = this.labelRotation !== 0;\n    const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n    if (this.isHorizontal()) {\n      const offsetLeft = this.getPixelForTick(0) - this.left;\n      const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n      let paddingLeft = 0;\n      let paddingRight = 0;\n\n      // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n      // which means that the right padding is dominated by the font height\n      if (isRotated) {\n        if (labelsBelowTicks) {\n          paddingLeft = cos * first.width;\n          paddingRight = sin * last.height;\n        } else {\n          paddingLeft = sin * first.height;\n          paddingRight = cos * last.width;\n        }\n      } else if (align === 'start') {\n        paddingRight = last.width;\n      } else if (align === 'end') {\n        paddingLeft = first.width;\n      } else if (align !== 'inner') {\n        paddingLeft = first.width / 2;\n        paddingRight = last.width / 2;\n      }\n\n      // Adjust padding taking into account changes in offsets\n      this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n      this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n    } else {\n      let paddingTop = last.height / 2;\n      let paddingBottom = first.height / 2;\n\n      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\n\n  /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n  _handleMargins() {\n    if (this._margins) {\n      this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n      this._margins.top = Math.max(this.paddingTop, this._margins.top);\n      this._margins.right = Math.max(this.paddingRight, this._margins.right);\n      this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n    }\n  }\n\n  afterFit() {\n    call(this.options.afterFit, [this]);\n  }\n\n  // Shared Methods\n  /**\n\t * @return {boolean}\n\t */\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  /**\n\t * @return {boolean}\n\t */\n  isFullSize() {\n    return this.options.fullSize;\n  }\n\n  /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n\n    this.generateTickLabels(ticks);\n\n    // Ticks should be skipped when callback returns null or undef, so lets remove those.\n    let i, ilen;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (isNullOrUndef(ticks[i].label)) {\n        ticks.splice(i, 1);\n        ilen--;\n        i--;\n      }\n    }\n\n    this.afterTickToLabelConversion();\n  }\n\n  /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\n\n    if (!labelSizes) {\n      const sampleSize = this.options.ticks.sampleSize;\n      let ticks = this.ticks;\n      if (sampleSize < ticks.length) {\n        ticks = sample(ticks, sampleSize);\n      }\n\n      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n    }\n\n    return labelSizes;\n  }\n\n  /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n  _computeLabelSizes(ticks, length, maxTicksLimit) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n    for (i = 0; i < length; i += increment) {\n      label = ticks[i].label;\n      tickFont = this._resolveTickFontOptions(i);\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n      lineHeight = tickFont.lineHeight;\n      width = height = 0;\n      // Undefined labels and arrays should not be measured\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        // if it is an array let's measure each element\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = /** @type {string} */ (label[j]);\n          // Undefined labels and arrays should not be measured\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n      widths.push(width);\n      heights.push(height);\n      widestLabelSize = Math.max(width, widestLabelSize);\n      highestLabelSize = Math.max(height, highestLabelSize);\n    }\n    garbageCollect(caches, length);\n\n    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest),\n      widths,\n      heights,\n    };\n  }\n\n  /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    return value;\n  }\n\n  /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n  getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n    return NaN;\n  }\n\n  /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n  getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n\n  /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n\n  /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n\n  /**\n\t * @return {number}\n\t */\n  getBaseValue() {\n    const {min, max} = this;\n\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext(index) {\n    const ticks = this.ticks || [];\n\n    if (index >= 0 && index < ticks.length) {\n      const tick = ticks[index];\n      return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n    }\n    return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n  }\n\n  /**\n\t * @return {number}\n\t * @private\n\t */\n  _tickSize() {\n    const optionTicks = this.options.ticks;\n\n    // Calculate space needed by label in axis direction.\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\n\n    const labelSizes = this._getLabelSizes();\n    const padding = optionTicks.autoSkipPadding || 0;\n    const w = labelSizes ? labelSizes.widest.width + padding : 0;\n    const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n    // Calculate space needed for 1 tick in axis direction.\n    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n\n  /**\n\t * @return {boolean}\n\t * @private\n\t */\n  _isVisible() {\n    const display = this.options.display;\n\n    if (display !== 'auto') {\n      return !!display;\n    }\n\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position, border} = options;\n    const offset = grid.offset;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const ticksLength = ticks.length + (offset ? 1 : 0);\n    const tl = getTickMarkLength(grid);\n    const items = [];\n\n    const borderOpts = border.setContext(this.getContext());\n    const axisWidth = borderOpts.display ? borderOpts.width : 0;\n    const axisHalfWidth = axisWidth / 2;\n    const alignBorderValue = function(pixel) {\n      return _alignPixel(chart, pixel, axisWidth);\n    };\n    let borderValue, i, lineValue, alignedLineValue;\n    let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n    if (position === 'top') {\n      borderValue = alignBorderValue(this.bottom);\n      ty1 = this.bottom - tl;\n      ty2 = borderValue - axisHalfWidth;\n      y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n      y2 = chartArea.bottom;\n    } else if (position === 'bottom') {\n      borderValue = alignBorderValue(this.top);\n      y1 = chartArea.top;\n      y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = this.top + tl;\n    } else if (position === 'left') {\n      borderValue = alignBorderValue(this.right);\n      tx1 = this.right - tl;\n      tx2 = borderValue - axisHalfWidth;\n      x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n      x2 = chartArea.right;\n    } else if (position === 'right') {\n      borderValue = alignBorderValue(this.left);\n      x1 = chartArea.left;\n      x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n      tx1 = borderValue + axisHalfWidth;\n      tx2 = this.left + tl;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n\n      y1 = chartArea.top;\n      y2 = chartArea.bottom;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = ty1 + tl;\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n\n      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\n    }\n\n    const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n    const step = Math.max(1, Math.ceil(ticksLength / limit));\n    for (i = 0; i < ticksLength; i += step) {\n      const context = this.getContext(i);\n      const optsAtIndex = grid.setContext(context);\n      const optsAtIndexBorder = border.setContext(context);\n\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = optsAtIndexBorder.dash || [];\n      const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n      lineValue = getPixelForGridLine(this, i, offset);\n\n      // Skip if the pixel is out of the range\n      if (lineValue === undefined) {\n        continue;\n      }\n\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\n      }\n\n      items.push({\n        tx1,\n        ty1,\n        tx2,\n        ty2,\n        x1,\n        y1,\n        x2,\n        y2,\n        width: lineWidth,\n        color: lineColor,\n        borderDash,\n        borderDashOffset,\n        tickWidth,\n        tickColor,\n        tickBorderDash,\n        tickBorderDashOffset,\n      });\n    }\n\n    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n\n    return items;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeLabelItems(chartArea) {\n    const axis = this.axis;\n    const options = this.options;\n    const {position, ticks: optionTicks} = options;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const {align, crossAlign, padding, mirror} = optionTicks;\n    const tl = getTickMarkLength(options.grid);\n    const tickAndPadding = tl + padding;\n    const hTickAndPadding = mirror ? -padding : tickAndPadding;\n    const rotation = -toRadians(this.labelRotation);\n    const items = [];\n    let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n    let textBaseline = 'middle';\n\n    if (position === 'top') {\n      y = this.bottom - hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'bottom') {\n      y = this.top + hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'left') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (position === 'right') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n      }\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        x = this.chart.scales[positionAxisID].getPixelForValue(value);\n      }\n      textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n    }\n\n    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\n      }\n    }\n\n    const labelSizes = this._getLabelSizes();\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      label = tick.label;\n\n      const optsAtIndex = optionTicks.setContext(this.getContext(i));\n      pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n      font = this._resolveTickFontOptions(i);\n      lineHeight = font.lineHeight;\n      lineCount = isArray(label) ? label.length : 1;\n      const halfCount = lineCount / 2;\n      const color = optsAtIndex.color;\n      const strokeColor = optsAtIndex.textStrokeColor;\n      const strokeWidth = optsAtIndex.textStrokeWidth;\n      let tickTextAlign = textAlign;\n\n      if (isHorizontal) {\n        x = pixel;\n\n        if (textAlign === 'inner') {\n          if (i === ilen - 1) {\n            tickTextAlign = !this.options.reverse ? 'right' : 'left';\n          } else if (i === 0) {\n            tickTextAlign = !this.options.reverse ? 'left' : 'right';\n          } else {\n            tickTextAlign = 'center';\n          }\n        }\n\n        if (position === 'top') {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = -lineCount * lineHeight + lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n          } else {\n            textOffset = -labelSizes.highest.height + lineHeight / 2;\n          }\n        } else {\n          // eslint-disable-next-line no-lonely-if\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n          } else {\n            textOffset = labelSizes.highest.height - lineCount * lineHeight;\n          }\n        }\n        if (mirror) {\n          textOffset *= -1;\n        }\n        if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n          x += (lineHeight / 2) * Math.sin(rotation);\n        }\n      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n\n      let backdrop;\n\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n\n        let top = textOffset - labelPadding.top;\n        let left = 0 - labelPadding.left;\n\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        default:\n          break;\n        }\n\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        case 'inner':\n          if (i === ilen - 1) {\n            left -= width;\n          } else if (i > 0) {\n            left -= width / 2;\n          }\n          break;\n        default:\n          break;\n        }\n\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n\n          color: optsAtIndex.backdropColor,\n        };\n      }\n\n      items.push({\n        label,\n        font,\n        textOffset,\n        options: {\n          rotation,\n          color,\n          strokeColor,\n          strokeWidth,\n          textAlign: tickTextAlign,\n          textBaseline,\n          translation: [x, y],\n          backdrop,\n        }\n      });\n    }\n\n    return items;\n  }\n\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n\n    let align = 'center';\n\n    if (ticks.align === 'start') {\n      align = 'left';\n    } else if (ticks.align === 'end') {\n      align = 'right';\n    } else if (ticks.align === 'inner') {\n      align = 'inner';\n    }\n\n    return align;\n  }\n\n  _getYAxisLabelAlignment(tl) {\n    const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n    const labelSizes = this._getLabelSizes();\n    const tickAndPadding = tl + padding;\n    const widest = labelSizes.widest.width;\n\n    let textAlign;\n    let x;\n\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += (widest / 2);\n        } else {\n          textAlign = 'right';\n          x += widest;\n        }\n      } else {\n        x = this.right - tickAndPadding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x = this.left;\n        }\n      }\n    } else if (position === 'right') {\n      if (mirror) {\n        x = this.left + padding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x -= widest;\n        }\n      } else {\n        x = this.left + tickAndPadding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += widest / 2;\n        } else {\n          textAlign = 'right';\n          x = this.right;\n        }\n      }\n    } else {\n      textAlign = 'right';\n    }\n\n    return {textAlign, x};\n  }\n\n  /**\n\t * @private\n\t */\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n\n    const chart = this.chart;\n    const position = this.options.position;\n\n    if (position === 'left' || position === 'right') {\n      return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n    } if (position === 'top' || position === 'bottom') {\n      return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n    }\n  }\n\n  /**\n   * @protected\n   */\n  drawBackground() {\n    const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n    if (backgroundColor) {\n      ctx.save();\n      ctx.fillStyle = backgroundColor;\n      ctx.fillRect(left, top, width, height);\n      ctx.restore();\n    }\n  }\n\n  getLineWidthForValue(value) {\n    const grid = this.options.grid;\n    if (!this._isVisible() || !grid.display) {\n      return 0;\n    }\n    const ticks = this.ticks;\n    const index = ticks.findIndex(t => t.value === value);\n    if (index >= 0) {\n      const opts = grid.setContext(this.getContext(index));\n      return opts.lineWidth;\n    }\n    return 0;\n  }\n\n  /**\n\t * @protected\n\t */\n  drawGrid(chartArea) {\n    const grid = this.options.grid;\n    const ctx = this.ctx;\n    const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n    let i, ilen;\n\n    const drawLine = (p1, p2, style) => {\n      if (!style.width || !style.color) {\n        return;\n      }\n      ctx.save();\n      ctx.lineWidth = style.width;\n      ctx.strokeStyle = style.color;\n      ctx.setLineDash(style.borderDash || []);\n      ctx.lineDashOffset = style.borderDashOffset;\n\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\n\n        if (grid.drawOnChartArea) {\n          drawLine(\n            {x: item.x1, y: item.y1},\n            {x: item.x2, y: item.y2},\n            item\n          );\n        }\n\n        if (grid.drawTicks) {\n          drawLine(\n            {x: item.tx1, y: item.ty1},\n            {x: item.tx2, y: item.ty2},\n            {\n              color: item.tickColor,\n              width: item.tickWidth,\n              borderDash: item.tickBorderDash,\n              borderDashOffset: item.tickBorderDashOffset\n            }\n          );\n        }\n      }\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBorder() {\n    const {chart, ctx, options: {border, grid}} = this;\n    const borderOpts = border.setContext(this.getContext());\n    const axisWidth = border.display ? borderOpts.width : 0;\n    if (!axisWidth) {\n      return;\n    }\n    const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n    const borderValue = this._borderValue;\n    let x1, x2, y1, y2;\n\n    if (this.isHorizontal()) {\n      x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n      x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n      y1 = y2 = borderValue;\n    } else {\n      y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n      y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n      x1 = x2 = borderValue;\n    }\n    ctx.save();\n    ctx.lineWidth = borderOpts.width;\n    ctx.strokeStyle = borderOpts.color;\n\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n\n    ctx.restore();\n  }\n\n  /**\n\t * @protected\n\t */\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n\n    if (!optionTicks.display) {\n      return;\n    }\n\n    const ctx = this.ctx;\n\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n\n    const items = this.getLabelItems(chartArea);\n    for (const item of items) {\n      const renderTextOptions = item.options;\n      const tickFont = item.font;\n      const label = item.label;\n      const y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n    }\n\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n\n    if (!title.display) {\n      return;\n    }\n\n    const font = toFont(title.font);\n    const padding = toPadding(title.padding);\n    const align = title.align;\n    let offset = font.lineHeight / 2;\n\n    if (position === 'bottom' || position === 'center' || isObject(position)) {\n      offset += padding.bottom;\n      if (isArray(title.text)) {\n        offset += font.lineHeight * (title.text.length - 1);\n      }\n    } else {\n      offset += padding.top;\n    }\n\n    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n    renderText(ctx, title.text, 0, 0, font, {\n      color: title.color,\n      maxWidth,\n      rotation,\n      textAlign: titleAlign(align, position, reverse),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n\n  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\n\n  /**\n\t * @return {object[]}\n\t * @private\n\t */\n  _layers() {\n    const opts = this.options;\n    const tz = opts.ticks && opts.ticks.z || 0;\n    const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n    const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      // backward compatibility: draw has been overridden by custom scale\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\n        }\n      }];\n    }\n\n    return [{\n      z: gz,\n      draw: (chartArea) => {\n        this.drawBackground();\n        this.drawGrid(chartArea);\n        this.drawTitle();\n      }\n    }, {\n      z: bz,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n\n  /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\n\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      const meta = metas[i];\n      if (meta[axisID] === this.id && (!type || meta.type === type)) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n\n  /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n\n  /**\n   * @protected\n   */\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n", "import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n  constructor(type, scope, override) {\n    this.type = type;\n    this.scope = scope;\n    this.override = override;\n    this.items = Object.create(null);\n  }\n\n  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n\n  /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n\n    if (isIChartComponent(proto)) {\n      // Make sure the parent is registered and note the scope where its defaults are.\n      parentScope = this.register(proto);\n    }\n\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n\n    if (id in items) {\n      // already registered\n      return scope;\n    }\n\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n\n    return scope;\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n  get(id) {\n    return this.items[id];\n  }\n\n  /**\n\t * @param {IChartComponent} item\n\t */\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n\n    if (id in items) {\n      delete items[id];\n    }\n\n    if (scope && id in defaults[scope]) {\n      delete defaults[scope][id];\n      if (this.override) {\n        delete overrides[id];\n      }\n    }\n  }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n  // Inherit the parent's defaults and keep existing defaults\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n\n  defaults.set(scope, itemDefaults);\n\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\n  }\n}\n\nfunction routeDefaults(scope, routes) {\n  Object.keys(routes).forEach(property => {\n    const propertyParts = property.split('.');\n    const sourceName = propertyParts.pop();\n    const sourceScope = [scope].concat(propertyParts).join('.');\n    const parts = routes[property].split('.');\n    const targetName = parts.pop();\n    const targetScope = parts.join('.');\n    defaults.route(sourceScope, sourceName, targetScope, targetName);\n  });\n}\n\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n", "import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n  constructor() {\n    this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n    this.elements = new TypedRegistry(Element, 'elements');\n    this.plugins = new TypedRegistry(Object, 'plugins');\n    this.scales = new TypedRegistry(Scale, 'scales');\n    // Order is important, Scale has Element in prototype chain,\n    // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  add(...args) {\n    this._each('register', args);\n  }\n\n  remove(...args) {\n    this._each('unregister', args);\n  }\n\n  /**\n\t * @param  {...typeof DatasetController} args\n\t */\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n\n  /**\n\t * @param  {...typeof Element} args\n\t */\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n\n  /**\n\t * @param  {...typeof Scale} args\n\t */\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n\n  /**\n\t * @param  {...typeof DatasetController} args\n\t */\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n\n  /**\n\t * @param  {...typeof Element} args\n\t */\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n\n  /**\n\t * @param  {...typeof Scale} args\n\t */\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\n\n  /**\n\t * @private\n\t */\n  _each(method, args, typedRegistry) {\n    [...args].forEach(arg => {\n      const reg = typedRegistry || this._getRegistryForType(arg);\n      if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n        this._exec(method, reg, arg);\n      } else {\n        // Handle loopable args\n        // Use case:\n        //  import * as plugins from './plugins.js';\n        //  Chart.register(plugins);\n        each(arg, item => {\n          // If there are mixed types in the loopable, make sure those are\n          // registered in correct registry\n          // Use case: (treemap exporting controller, elements etc)\n          //  import * as treemap from 'chartjs-chart-treemap.js';\n          //  Chart.register(treemap);\n\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n    registry[method](component);\n    call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n  }\n\n  /**\n\t * @private\n\t */\n  _getRegistryForType(type) {\n    for (let i = 0; i < this._typedRegistries.length; i++) {\n      const reg = this._typedRegistries[i];\n      if (reg.isForType(type)) {\n        return reg;\n      }\n    }\n    // plugins is the fallback registry\n    return this.plugins;\n  }\n\n  /**\n\t * @private\n\t */\n  _get(id, typedRegistry, type) {\n    const item = typedRegistry.get(id);\n    if (item === undefined) {\n      throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n    }\n    return item;\n  }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n", "import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n  constructor() {\n    this._init = [];\n  }\n\n  /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n   * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n  notify(chart, hook, args, filter) {\n    if (hook === 'beforeInit') {\n      this._init = this._createDescriptors(chart, true);\n      this._notify(this._init, chart, 'install');\n    }\n\n    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\n\n  /**\n\t * @private\n\t */\n  _notify(descriptors, chart, hook, args) {\n    args = args || {};\n    for (const descriptor of descriptors) {\n      const plugin = descriptor.plugin;\n      const method = plugin[hook];\n      const params = [chart, args, descriptor.options];\n      if (callCallback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  invalidate() {\n    // When plugins are registered, there is the possibility of a double\n    // invalidate situation. In this case, we only want to invalidate once.\n    // If we invalidate multiple times, the `_oldCache` is lost and all of the\n    // plugins are restarted without being correctly stopped.\n    // See https://github.com/chartjs/Chart.js/issues/8147\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n\n    const descriptors = this._cache = this._createDescriptors(chart);\n\n    this._notifyStateChanges(chart);\n\n    return descriptors;\n  }\n\n  _createDescriptors(chart, all) {\n    const config = chart && chart.config;\n    const options = valueOrDefault(config.options && config.options.plugins, {});\n    const plugins = allPlugins(config);\n    // options === false => all plugins are disabled\n    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n  _notifyStateChanges(chart) {\n    const previousDescriptors = this._oldCache || [];\n    const descriptors = this._cache;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n    this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n    this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n  }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n  const localIds = {};\n  const plugins = [];\n  const keys = Object.keys(registry.plugins.items);\n  for (let i = 0; i < keys.length; i++) {\n    plugins.push(registry.getPlugin(keys[i]));\n  }\n\n  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n      localIds[plugin.id] = true;\n    }\n  }\n\n  return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n  if (!all && options === false) {\n    return null;\n  }\n  if (options === true) {\n    return {};\n  }\n  return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n  const result = [];\n  const context = chart.getContext();\n\n  for (const plugin of plugins) {\n    const id = plugin.id;\n    const opts = getOpts(options[id], all);\n    if (opts === null) {\n      continue;\n    }\n    result.push({\n      plugin,\n      options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n    });\n  }\n\n  return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n  const keys = config.pluginScopeKeys(plugin);\n  const scopes = config.getOptionScopes(opts, keys);\n  if (local && plugin.defaults) {\n    // make sure plugin defaults are in scopes for local (not registered) plugins\n    scopes.push(plugin.defaults);\n  }\n  return config.createResolver(scopes, context, [''], {\n    // These are just defaults that plugins can override\n    scriptable: false,\n    indexable: false,\n    allKeys: true\n  });\n}\n", "import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n  const datasetDefaults = defaults.datasets[type] || {};\n  const datasetOptions = (options.datasets || {})[type] || {};\n  return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n  let axis = id;\n  if (id === '_index_') {\n    axis = indexAxis;\n  } else if (id === '_value_') {\n    axis = indexAxis === 'x' ? 'y' : 'x';\n  }\n  return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n  if (id === 'x' || id === 'y' || id === 'r') {\n    return id;\n  }\n}\n\nfunction axisFromPosition(position) {\n  if (position === 'top' || position === 'bottom') {\n    return 'x';\n  }\n  if (position === 'left' || position === 'right') {\n    return 'y';\n  }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n  if (idMatchesAxis(id)) {\n    return id;\n  }\n  for (const opts of scaleOptions) {\n    const axis = opts.axis\n      || axisFromPosition(opts.position)\n      || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n    if (axis) {\n      return axis;\n    }\n  }\n  throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n  if (dataset[axis + 'AxisID'] === id) {\n    return {axis};\n  }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n  if (config.data && config.data.datasets) {\n    const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n    if (boundDs.length) {\n      return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n    }\n  }\n  return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n  const chartDefaults = overrides[config.type] || {scales: {}};\n  const configScales = options.scales || {};\n  const chartIndexAxis = getIndexAxis(config.type, options);\n  const scales = Object.create(null);\n\n  // First figure out first scale id's per axis.\n  Object.keys(configScales).forEach(id => {\n    const scaleConf = configScales[id];\n    if (!isObject(scaleConf)) {\n      return console.error(`Invalid scale configuration for scale: ${id}`);\n    }\n    if (scaleConf._proxy) {\n      return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n    }\n    const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\n\n  // Then merge dataset defaults to scale configs\n  config.data.datasets.forEach(dataset => {\n    const type = dataset.type || config.type;\n    const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n    const datasetDefaults = overrides[type] || {};\n    const defaultScaleOptions = datasetDefaults.scales || {};\n    Object.keys(defaultScaleOptions).forEach(defaultID => {\n      const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n      const id = dataset[axis + 'AxisID'] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n\n  // apply scale defaults, if not overridden by dataset defaults\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n\n  return scales;\n}\n\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\n\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n\n  initOptions(config);\n\n  return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n  let keys = keyCache.get(cacheKey);\n  if (!keys) {\n    keys = generate();\n    keyCache.set(cacheKey, keys);\n    keysCached.add(keys);\n  }\n  return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\n\nexport default class Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n\n  get platform() {\n    return this._config.platform;\n  }\n\n  get type() {\n    return this._config.type;\n  }\n\n  set type(type) {\n    this._config.type = type;\n  }\n\n  get data() {\n    return this._config.data;\n  }\n\n  set data(data) {\n    this._config.data = initData(data);\n  }\n\n  get options() {\n    return this._config.options;\n  }\n\n  set options(options) {\n    this._config.options = options;\n  }\n\n  get plugins() {\n    return this._config.plugins;\n  }\n\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n\n  /**\n   * Returns the option scope keys for resolving dataset options.\n   * These keys do not include the dataset itself, because it is not under options.\n   * @param {string} datasetType\n   * @return {string[][]}\n   */\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n\n  /**\n   * Returns the option scope keys for resolving dataset animation options.\n   * These keys do not include the dataset itself, because it is not under options.\n   * @param {string} datasetType\n   * @param {string} transition\n   * @return {string[][]}\n   */\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        // The following are used for looking up the `animations` and `animation` keys\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\n  }\n\n  /**\n   * Returns the options scope keys for resolving element options that belong\n   * to an dataset. These keys do not include the dataset itself, because it\n   * is not under options.\n   * @param {string} datasetType\n   * @param {string} elementType\n   * @return {string[][]}\n   */\n  datasetElementScopeKeys(datasetType, elementType) {\n    return cachedKeys(`${datasetType}-${elementType}`,\n      () => [[\n        `datasets.${datasetType}.elements.${elementType}`,\n        `datasets.${datasetType}`,\n        `elements.${elementType}`,\n        ''\n      ]]);\n  }\n\n  /**\n   * Returns the options scope keys for resolving plugin options.\n   * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n   * @return {string[][]}\n   */\n  pluginScopeKeys(plugin) {\n    const id = plugin.id;\n    const type = this.type;\n    return cachedKeys(`${type}-plugin-${id}`,\n      () => [[\n        `plugins.${id}`,\n        ...plugin.additionalOptionScopes || [],\n      ]]);\n  }\n\n  /**\n   * @private\n   */\n  _cachedScopes(mainScope, resetCache) {\n    const _scopeCache = this._scopeCache;\n    let cache = _scopeCache.get(mainScope);\n    if (!cache || resetCache) {\n      cache = new Map();\n      _scopeCache.set(mainScope, cache);\n    }\n    return cache;\n  }\n\n  /**\n   * Resolves the objects from options and defaults for option value resolution.\n   * @param {object} mainScope - The main scope object for options\n   * @param {string[][]} keyLists - The arrays of keys in resolution order\n   * @param {boolean} [resetCache] - reset the cache for this mainScope\n   */\n  getOptionScopes(mainScope, keyLists, resetCache) {\n    const {options, type} = this;\n    const cache = this._cachedScopes(mainScope, resetCache);\n    const cached = cache.get(keyLists);\n    if (cached) {\n      return cached;\n    }\n\n    const scopes = new Set();\n\n    keyLists.forEach(keys => {\n      if (mainScope) {\n        scopes.add(mainScope);\n        keys.forEach(key => addIfFound(scopes, mainScope, key));\n      }\n      keys.forEach(key => addIfFound(scopes, options, key));\n      keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n      keys.forEach(key => addIfFound(scopes, defaults, key));\n      keys.forEach(key => addIfFound(scopes, descriptors, key));\n    });\n\n    const array = Array.from(scopes);\n    if (array.length === 0) {\n      array.push(Object.create(null));\n    }\n    if (keysCached.has(keyLists)) {\n      cache.set(keyLists, array);\n    }\n    return array;\n  }\n\n  /**\n   * Returns the option scopes for resolving chart options\n   * @return {object[]}\n   */\n  chartOptionScopes() {\n    const {options, type} = this;\n\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n      {type},\n      defaults,\n      descriptors\n    ];\n  }\n\n  /**\n   * @param {object[]} scopes\n   * @param {string[]} names\n   * @param {function|object} context\n   * @param {string[]} [prefixes]\n   * @return {object}\n   */\n  resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n    const result = {$shared: true};\n    const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n    let options = resolver;\n    if (needContext(resolver, names)) {\n      result.$shared = false;\n      context = isFunction(context) ? context() : context;\n      // subResolver is passed to scriptable options. It should not resolve to hover options.\n      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\n  }\n\n  /**\n   * @param {object[]} scopes\n   * @param {object} [context]\n   * @param {string[]} [prefixes]\n   * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n   */\n  createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n    const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n    return isObject(context)\n      ? _attachContext(resolver, context, undefined, descriptorDefaults)\n      : resolver;\n  }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n  let cache = resolverCache.get(scopes);\n  if (!cache) {\n    cache = new Map();\n    resolverCache.set(scopes, cache);\n  }\n  const cacheKey = prefixes.join();\n  let cached = cache.get(cacheKey);\n  if (!cached) {\n    const resolver = _createResolver(scopes, prefixes);\n    cached = {\n      resolver,\n      subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n    };\n    cache.set(cacheKey, cached);\n  }\n  return cached;\n}\n\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\n\n  for (const prop of names) {\n    const scriptable = isScriptable(prop);\n    const indexable = isIndexable(prop);\n    const value = (indexable || scriptable) && proxy[prop];\n    if ((scriptable && (isFunction(value) || hasFunction(value)))\n      || (indexable && isArray(value))) {\n      return true;\n    }\n  }\n  return false;\n}\n", "import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {retinaScale, _isDomSupported} from '../helpers/helpers.dom.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n  return function(a, b) {\n    return a[l1] === b[l1]\n      ? a[l2] - b[l2]\n      : a[l1] - b[l1];\n  };\n}\n\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n\n  chart.notifyPlugins('afterRender');\n  callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    // Support for array based queries (such as jQuery)\n    item = item[0];\n  }\n\n  if (item && item.canvas) {\n    // Support for any object associated to a canvas (including a context2d)\n    item = item.canvas;\n  }\n  return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n  const keys = Object.keys(obj);\n  for (const key of keys) {\n    const intKey = +key;\n    if (intKey >= start) {\n      const value = obj[key];\n      delete obj[key];\n      if (move > 0 || intKey > start) {\n        obj[intKey + move] = value;\n      }\n    }\n  }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n  if (!inChartArea || e.type === 'mouseout') {\n    return null;\n  }\n  if (isClick) {\n    return lastEvent;\n  }\n  return e;\n}\n\nfunction getSizeForArea(scale, chartArea, field) {\n  return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta, chartArea) {\n  const {xScale, yScale} = meta;\n  if (xScale && yScale) {\n    return {\n      left: getSizeForArea(xScale, chartArea, 'left'),\n      right: getSizeForArea(xScale, chartArea, 'right'),\n      top: getSizeForArea(yScale, chartArea, 'top'),\n      bottom: getSizeForArea(yScale, chartArea, 'bottom')\n    };\n  }\n  return chartArea;\n}\n\nclass Chart {\n\n  static defaults = defaults;\n  static instances = instances;\n  static overrides = overrides;\n  static registry = registry;\n  static version = version;\n  static getChart = getChart;\n\n  static register(...items) {\n    registry.add(...items);\n    invalidatePlugins();\n  }\n\n  static unregister(...items) {\n    registry.remove(...items);\n    invalidatePlugins();\n  }\n\n  // eslint-disable-next-line max-statements\n  constructor(item, userConfig) {\n    const config = this.config = new Config(userConfig);\n    const initialCanvas = getCanvas(item);\n    const existingChart = getChart(initialCanvas);\n    if (existingChart) {\n      throw new Error(\n        'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n      );\n    }\n\n    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\n\n    const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n    const canvas = context && context.canvas;\n    const height = canvas && canvas.height;\n    const width = canvas && canvas.width;\n\n    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\n    // Store the previously used aspect ratio to determine if a resize\n    // is needed during updates. Do this after _options is set since\n    // aspectRatio uses a getter\n    this._aspectRatio = this.aspectRatio;\n    this._layers = [];\n    this._metasets = [];\n    this._stacks = undefined;\n    this.boxes = [];\n    this.currentDevicePixelRatio = undefined;\n    this.chartArea = undefined;\n    this._active = [];\n    this._lastEvent = undefined;\n    this._listeners = {};\n    /** @type {?{attach?: function, detach?: function, resize?: function}} */\n    this._responsiveListeners = undefined;\n    this._sortedMetasets = [];\n    this.scales = {};\n    this._plugins = new PluginService();\n    this.$proxies = {};\n    this._hiddenIndices = {};\n    this.attached = false;\n    this._animationsDisabled = undefined;\n    this.$context = undefined;\n    this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n    this._dataChanges = [];\n\n    // Add the chart instance to the global namespace\n    instances[this.id] = this;\n\n    if (!context || !canvas) {\n      // The given item is not a compatible context2d element, let's return before finalizing\n      // the chart initialization but after setting basic chart / controller properties that\n      // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n      // https://github.com/chartjs/Chart.js/issues/2807\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      // If aspectRatio is defined in options, use that.\n      return aspectRatio;\n    }\n\n    if (maintainAspectRatio && _aspectRatio) {\n      // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n      return _aspectRatio;\n    }\n\n    // Calculate\n    return height ? width / height : null;\n  }\n\n  get data() {\n    return this.config.data;\n  }\n\n  set data(data) {\n    this.config.data = data;\n  }\n\n  get options() {\n    return this._options;\n  }\n\n  set options(options) {\n    this.config.options = options;\n  }\n\n  get registry() {\n    return registry;\n  }\n\n  /**\n\t * @private\n\t */\n  _initialize() {\n    // Before init plugin notification\n    this.notifyPlugins('beforeInit');\n\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n\n    this.bindEvents();\n\n    // After init plugin notification\n    this.notifyPlugins('afterInit');\n\n    return this;\n  }\n\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n\n  /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\n    }\n  }\n\n  _resize(width, height) {\n    const options = this.options;\n    const canvas = this.canvas;\n    const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n    const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n    const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n    const mode = this.width ? 'resize' : 'attach';\n\n    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n\n    this.notifyPlugins('resize', {size: newSize});\n\n    callCallback(options.onResize, [this, newSize], this);\n\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        // The resize update is delayed, only draw without updating.\n        this.render();\n      }\n    }\n  }\n\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\n\n  /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n  buildOrUpdateScales() {\n    const options = this.options;\n    const scaleOpts = options.scales;\n    const scales = this.scales;\n    const updated = Object.keys(scales).reduce((obj, id) => {\n      obj[id] = false;\n      return obj;\n    }, {});\n    let items = [];\n\n    if (scaleOpts) {\n      items = items.concat(\n        Object.keys(scaleOpts).map((id) => {\n          const scaleOptions = scaleOpts[id];\n          const axis = determineAxis(id, scaleOptions);\n          const isRadial = axis === 'r';\n          const isHorizontal = axis === 'x';\n          return {\n            options: scaleOptions,\n            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n          };\n        })\n      );\n    }\n\n    each(items, (item) => {\n      const scaleOptions = item.options;\n      const id = scaleOptions.id;\n      const axis = determineAxis(id, scaleOptions);\n      const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\n      }\n\n      updated[id] = true;\n      let scale = null;\n      if (id in scales && scales[id].type === scaleType) {\n        scale = scales[id];\n      } else {\n        const scaleClass = registry.getScale(scaleType);\n        scale = new scaleClass({\n          id,\n          type: scaleType,\n          ctx: this.ctx,\n          chart: this\n        });\n        scales[scale.id] = scale;\n      }\n\n      scale.init(scaleOptions, options);\n    });\n    // clear up discarded scales\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\n\n    metasets.sort((a, b) => a.index - b.index);\n    if (numMeta > numData) {\n      for (let i = numData; i < numMeta; ++i) {\n        this._destroyDatasetMeta(i);\n      }\n      metasets.splice(numData, numMeta - numData);\n    }\n    this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n  }\n\n  /**\n\t * @private\n\t */\n  _removeUnreferencedMetasets() {\n    const {_metasets: metasets, data: {datasets}} = this;\n    if (metasets.length > datasets.length) {\n      delete this._stacks;\n    }\n    metasets.forEach((meta, index) => {\n      if (datasets.filter(x => x === meta._dataset).length === 0) {\n        this._destroyDatasetMeta(index);\n      }\n    });\n  }\n\n  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n\n    this._removeUnreferencedMetasets();\n\n    for (i = 0, ilen = datasets.length; i < ilen; i++) {\n      const dataset = datasets[i];\n      let meta = this.getDatasetMeta(i);\n      const type = dataset.type || this.config.type;\n\n      if (meta.type && meta.type !== type) {\n        this._destroyDatasetMeta(i);\n        meta = this.getDatasetMeta(i);\n      }\n      meta.type = type;\n      meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n      meta.order = dataset.order || 0;\n      meta.index = i;\n      meta.label = '' + dataset.label;\n      meta.visible = this.isDatasetVisible(i);\n\n      if (meta.controller) {\n        meta.controller.updateIndex(i);\n        meta.controller.linkScales();\n      } else {\n        const ControllerClass = registry.getController(type);\n        const {datasetElementType, dataElementType} = defaults.datasets[type];\n        Object.assign(ControllerClass, {\n          dataElementType: registry.getElement(dataElementType),\n          datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n        });\n        meta.controller = new ControllerClass(this, i);\n        newControllers.push(meta.controller);\n      }\n    }\n\n    this._updateMetasets();\n    return newControllers;\n  }\n\n  /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n\n  /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n\n  update(mode) {\n    const config = this.config;\n\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n\n    // plugins options references might have change, let's invalidate the cache\n    // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n    this._plugins.invalidate();\n\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n\n    // Make sure dataset controllers are updated and new controllers are reset\n    const newControllers = this.buildOrUpdateControllers();\n\n    this.notifyPlugins('beforeElementsUpdate');\n\n    // Make sure all dataset controllers have correct meta data counts\n    let minPadding = 0;\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n      const {controller} = this.getDatasetMeta(i);\n      const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n      // New controllers will be reset after the layout pass, so we only want to modify\n      // elements added to new datasets\n      controller.buildOrUpdateElements(reset);\n      minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n    }\n    minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n    this._updateLayout(minPadding);\n\n    // Only reset the controllers if we have animations\n    if (!animsDisabled) {\n      // Can only reset the new controllers after the scales have been updated\n      // Reset is done to get the starting point for the initial animation\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n\n    this._updateDatasets(mode);\n\n    // Do this before render so that any plugins that need final scale updates can use it\n    this.notifyPlugins('afterUpdate', {mode});\n\n    this._layers.sort(compare2Level('z', '_idx'));\n\n    // Replay last event from before update, or set hover styles on active elements\n    const {_active, _lastEvent} = this;\n    if (_lastEvent) {\n      this._eventHandler(_lastEvent, true);\n    } else if (_active.length) {\n      this._updateHoverStyles(_active, _active, true);\n    }\n\n    this.render();\n  }\n\n  /**\n   * @private\n   */\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\n  }\n\n  /**\n   * @private\n   */\n  _checkEventBindings() {\n    const options = this.options;\n    const existingEvents = new Set(Object.keys(this._listeners));\n    const newEvents = new Set(options.events);\n\n    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      // The configured events have changed. Rebind.\n      this.unbindEvents();\n      this.bindEvents();\n    }\n  }\n\n  /**\n   * @private\n   */\n  _updateHiddenIndices() {\n    const {_hiddenIndices} = this;\n    const changes = this._getUniformDataChanges() || [];\n    for (const {method, start, count} of changes) {\n      const move = method === '_removeElements' ? -count : count;\n      moveNumericKeys(_hiddenIndices, start, move);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\n    }\n\n    this._dataChanges = [];\n    const datasetCount = this.data.datasets.length;\n    const makeSet = (idx) => new Set(\n      _dataChanges\n        .filter(c => c[0] === idx)\n        .map((c, i) => i + ',' + c.splice(1).join(','))\n    );\n\n    const changeSet = makeSet(0);\n    for (let i = 1; i < datasetCount; i++) {\n      if (!setsEqual(changeSet, makeSet(i))) {\n        return;\n      }\n    }\n    return Array.from(changeSet)\n      .map(c => c.split(','))\n      .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n  }\n\n  /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n\n    layouts.update(this, this.width, this.height, minPadding);\n\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n        return;\n      }\n\n      // configure is called twice, once in core.scale.update and once here.\n      // Here the boxes are fully updated and at their final positions.\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n\n    this.notifyPlugins('afterLayout');\n  }\n\n  /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\n    }\n\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n    }\n\n    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n\n  /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n\n    meta.controller._update(mode);\n\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\n    }\n\n    if (animator.has(this)) {\n      if (this.attached && !animator.running(this)) {\n        animator.start(this);\n      }\n    } else {\n      this.draw();\n      onAnimationsComplete({chart: this});\n    }\n  }\n\n  draw() {\n    let i;\n    if (this._resizeBeforeDraw) {\n      const {width, height} = this._resizeBeforeDraw;\n      this._resize(width, height);\n      this._resizeBeforeDraw = null;\n    }\n    this.clear();\n\n    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\n\n    // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n    // currently be part of layers. Instead, we draw\n    // layers <= 0 before(default, backward compat), and the rest after\n    const layers = this._layers;\n    for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n\n    this._drawDatasets();\n\n    // Rest of layers\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n\n    this.notifyPlugins('afterDraw');\n  }\n\n  /**\n\t * @private\n\t */\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\n\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      const meta = metasets[i];\n      if (!filterVisible || meta.visible) {\n        result.push(meta);\n      }\n    }\n\n    return result;\n  }\n\n  /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n\n  /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n\n  /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = getDatasetArea(meta, this.chartArea);\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n\n    if (useClip) {\n      clipArea(ctx, {\n        left: clip.left === false ? 0 : area.left - clip.left,\n        right: clip.right === false ? this.width : area.right + clip.right,\n        top: clip.top === false ? 0 : area.top - clip.top,\n        bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n      });\n    }\n\n    meta.controller.draw();\n\n    if (useClip) {\n      unclipArea(ctx);\n    }\n\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n\n  /**\n   * Checks whether the given point is in the chart area.\n   * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n   * @returns {boolean}\n   */\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\n  }\n\n  getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n    const method = Interaction.modes[mode];\n    if (typeof method === 'function') {\n      return method(this, e, options, useFinalPosition);\n    }\n\n    return [];\n  }\n\n  getDatasetMeta(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    const metasets = this._metasets;\n    let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\t\t\t// See isDatasetVisible() comment\n        xAxisID: null,\n        yAxisID: null,\n        order: dataset && dataset.order || 0,\n        index: datasetIndex,\n        _dataset: dataset,\n        _parsed: [],\n        _sorted: false\n      };\n      metasets.push(meta);\n    }\n\n    return meta;\n  }\n\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n\n    const meta = this.getDatasetMeta(datasetIndex);\n\n    // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n    // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\n\n  /**\n\t * @private\n\t */\n  _updateVisibility(datasetIndex, dataIndex, visible) {\n    const mode = visible ? 'show' : 'hide';\n    const meta = this.getDatasetMeta(datasetIndex);\n    const anims = meta.controller._resolveAnimations(undefined, mode);\n\n    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\n\n  /**\n\t * @private\n\t */\n  _destroyDatasetMeta(datasetIndex) {\n    const meta = this._metasets[datasetIndex];\n    if (meta && meta.controller) {\n      meta.controller._destroy();\n    }\n    delete this._metasets[datasetIndex];\n  }\n\n  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n\n    this._stop();\n    this.config.clearCache();\n\n    if (canvas) {\n      this.unbindEvents();\n      clearCanvas(canvas, ctx);\n      this.platform.releaseContext(ctx);\n      this.canvas = null;\n      this.ctx = null;\n    }\n\n    delete instances[this.id];\n\n    this.notifyPlugins('afterDestroy');\n  }\n\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n\n  /**\n\t * @private\n\t */\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n\n  /**\n   * @private\n   */\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n\n    each(this.options.events, (type) => _add(type, listener));\n  }\n\n  /**\n   * @private\n   */\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\n\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const _remove = (type, listener) => {\n      if (listeners[type]) {\n        platform.removeEventListener(this, type, listener);\n        delete listeners[type];\n      }\n    };\n\n    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n\n    let detached; // eslint-disable-line prefer-const\n    const attached = () => {\n      _remove('attach', attached);\n\n      this.attached = true;\n      this.resize();\n\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n\n    detached = () => {\n      this.attached = false;\n\n      _remove('resize', listener);\n\n      // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n      this._stop();\n      this._resize(0, 0);\n\n      _add('attach', attached);\n    };\n\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\n    }\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n      const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n      if (controller) {\n        controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n      }\n    }\n  }\n\n  /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n  getActiveElements() {\n    return this._active || [];\n  }\n\n  /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n  setActiveElements(activeElements) {\n    const lastActive = this._active || [];\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('No dataset found at index ' + datasetIndex);\n      }\n\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n\n    if (changed) {\n      this._active = active;\n      // Make sure we don't use the previous mouse event to override the active elements in update.\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n\n  /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n   * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\n\n  /**\n   * Check if a plugin with the specific ID is registered and enabled\n   * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n   * @returns {boolean}\n   */\n  isPluginEnabled(pluginId) {\n    return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n  }\n\n  /**\n\t * @private\n\t */\n  _updateHoverStyles(active, lastActive, replay) {\n    const hoverOptions = this.options.hover;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n    const deactivated = diff(lastActive, active);\n    const activated = replay ? active : diff(active, lastActive);\n\n    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _eventHandler(e, replay) {\n    const args = {\n      event: e,\n      replay,\n      cancelable: true,\n      inChartArea: this.isPointInArea(e)\n    };\n    const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n\n    if (changed || args.changed) {\n      this.render();\n    }\n\n    return this;\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n   * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\n\n    // If the event is replayed from `update`, we should evaluate with the final positions.\n    //\n    // The `replay`:\n    // It's the last event (excluding click) that has occurred before `update`.\n    // So mouse has not moved. It's also over the chart, because there is a `replay`.\n    //\n    // The why:\n    // If animations are active, the elements haven't moved yet compared to state before update.\n    // But if they will, we are activating the elements that would be active, if this check\n    // was done after the animations have completed. => \"final positions\".\n    // If there is no animations, the \"final\" and \"current\" positions are equal.\n    // This is done so we do not have to evaluate the active elements each animation frame\n    // - it would be expensive.\n    const useFinalPosition = replay;\n    const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n    const isClick = _isClickEvent(e);\n    const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n    if (inChartArea) {\n      // Set _lastEvent to null while we are processing the event handlers.\n      // This prevents recursion if the handler calls chart.update()\n      this._lastEvent = null;\n\n      // Invoke onHover hook\n      callCallback(options.onHover, [e, active, this], this);\n\n      if (isClick) {\n        callCallback(options.onClick, [e, active, this], this);\n      }\n    }\n\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n\n    this._lastEvent = lastEvent;\n\n    return changed;\n  }\n\n  /**\n   * @param {ChartEvent} e - The event\n   * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n   * @param {boolean} inChartArea - Is the envent inside chartArea\n   * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n   * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n   * @pravate\n   */\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n\n    if (!inChartArea) {\n      // Let user control the active elements outside chartArea. Eg. using Legend.\n      return lastActive;\n    }\n\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n  return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n", "import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\n\n  // Draw an inner border by clipping the arc and drawing a double-width border\n  // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n  if (innerRadius > pixelMargin) {\n    angleMargin = pixelMargin / innerRadius;\n    ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n  } else {\n    ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n  }\n  ctx.closePath();\n  ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n  // Outer limits are complicated. We want to compute the available angular distance at\n  // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n  // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n  //\n  // If the borderRadius is large, that value can become negative.\n  // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n  // we know that the thickness term will dominate and compute the limits at that point\n  const computeOuterLimit = (val) => {\n    const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n    return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n  };\n\n  return {\n    outerStart: computeOuterLimit(o.outerStart),\n    outerEnd: computeOuterLimit(o.outerEnd),\n    innerStart: _limitValue(o.innerStart, 0, innerLimit),\n    innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n  };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n *   Start      End\n *\n *    1--->a--->2    Outer\n *   /           \\\n *   8           3\n *   |           |\n *   |           |\n *   7           4\n *   \\           /\n *    6<---b<---5    Inner\n */\nfunction pathArc(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  end: number,\n  circular: boolean,\n) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n  let spacingOffset = 0;\n  const alpha = end - start;\n\n  if (spacing) {\n    // When spacing is present, it is the same for all items\n    // So we adjust the start and end angle of the arc such that\n    // the distance is the same as it would be without the spacing\n    const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n    const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n    const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n    const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n    spacingOffset = (alpha - adjustedAngle) / 2;\n  }\n\n  const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n  const angleOffset = (alpha - beta) / 2;\n  const startAngle = start + angleOffset + spacingOffset;\n  const endAngle = end - angleOffset - spacingOffset;\n  const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n  ctx.beginPath();\n\n  if (circular) {\n    // The first arc segments from point 1 to point a to point 2\n    const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n    ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n    ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n    // The corner segment from point 2 to point 3\n    if (outerEnd > 0) {\n      const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n    }\n\n    // The line from point 3 to point 4\n    const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n    ctx.lineTo(p4.x, p4.y);\n\n    // The corner segment from point 4 to point 5\n    if (innerEnd > 0) {\n      const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n    }\n\n    // The inner arc from point 5 to point b to point 6\n    const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n    ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n    ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n    // The corner segment from point 6 to point 7\n    if (innerStart > 0) {\n      const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n    }\n\n    // The line from point 7 to point 8\n    const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n    ctx.lineTo(p8.x, p8.y);\n\n    // The corner segment from point 8 to point 1\n    if (outerStart > 0) {\n      const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n    }\n  } else {\n    ctx.moveTo(x, y);\n\n    const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n    const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerStartX, outerStartY);\n\n    const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n    const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerEndX, outerEndY);\n  }\n\n  ctx.closePath();\n}\n\nfunction drawArc(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  circular: boolean,\n) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + (circumference % TAU || TAU);\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.fill();\n  return endAngle;\n}\n\nfunction drawBorder(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  circular: boolean,\n) {\n  const {fullCircles, startAngle, circumference, options} = element;\n  const {borderWidth, borderJoinStyle, borderDash, borderDashOffset} = options;\n  const inner = options.borderAlign === 'inner';\n\n  if (!borderWidth) {\n    return;\n  }\n\n  ctx.setLineDash(borderDash || []);\n  ctx.lineDashOffset = borderDashOffset;\n\n  if (inner) {\n    ctx.lineWidth = borderWidth * 2;\n    ctx.lineJoin = borderJoinStyle || 'round';\n  } else {\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = borderJoinStyle || 'bevel';\n  }\n\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.stroke();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + (circumference % TAU || TAU);\n    }\n  }\n\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n\n  if (!fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    ctx.stroke();\n  }\n}\n\nexport interface ArcProps extends Point {\n  startAngle: number;\n  endAngle: number;\n  innerRadius: number;\n  outerRadius: number;\n  circumference: number;\n}\n\nexport default class ArcElement extends Element<ArcProps, ArcOptions> {\n\n  static id = 'arc';\n\n  static defaults = {\n    borderAlign: 'center',\n    borderColor: '#fff',\n    borderDash: [],\n    borderDashOffset: 0,\n    borderJoinStyle: undefined,\n    borderRadius: 0,\n    borderWidth: 2,\n    offset: 0,\n    spacing: 0,\n    angle: undefined,\n    circular: true,\n  };\n\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor'\n  };\n\n  static descriptors = {\n    _scriptable: true,\n    _indexable: (name) => name !== 'borderDash'\n  };\n\n  circumference: number;\n  endAngle: number;\n  fullCircles: number;\n  innerRadius: number;\n  outerRadius: number;\n  pixelMargin: number;\n  startAngle: number;\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.circumference = undefined;\n    this.startAngle = undefined;\n    this.endAngle = undefined;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.pixelMargin = 0;\n    this.fullCircles = 0;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n    const point = this.getProps(['x', 'y'], useFinalPosition);\n    const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n    const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference'\n    ], useFinalPosition);\n    const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n    const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n    const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n    const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n    return (betweenAngles && withinRadius);\n  }\n\n  getCenterPoint(useFinalPosition: boolean) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius'\n    ], useFinalPosition);\n    const {offset, spacing} = this.options;\n    const halfAngle = (startAngle + endAngle) / 2;\n    const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n    return {\n      x: x + Math.cos(halfAngle) * halfRadius,\n      y: y + Math.sin(halfAngle) * halfRadius\n    };\n  }\n\n  tooltipPosition(useFinalPosition: boolean) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n\n  draw(ctx: CanvasRenderingContext2D) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 4;\n    const spacing = (options.spacing || 0) / 2;\n    const circular = options.circular;\n    this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n    this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n\n    ctx.save();\n\n    const halfAngle = (this.startAngle + this.endAngle) / 2;\n    ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n    const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n    const radiusOffset = offset * fix;\n\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n\n    drawArc(ctx, this, radiusOffset, spacing, circular);\n    drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n    ctx.restore();\n  }\n}\n", "import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n  ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n  ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n  ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n  ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n  ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n  ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n\n  return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n  const count = points.length;\n  const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n  const {start: segmentStart, end: segmentEnd} = segment;\n  const start = Math.max(paramsStart, segmentStart);\n  const end = Math.min(paramsEnd, segmentEnd);\n  const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n  const {points, options} = line;\n  const {count, start, loop, ilen} = pathVars(points, segment, params);\n  const lineMethod = getLineMethod(options);\n  // eslint-disable-next-line prefer-const\n  let {move = true, reverse} = params || {};\n  let i, point, prev;\n\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n\n    if (point.skip) {\n      // If there is a skipped point inside a segment, spanGaps must be true\n      continue;\n    } else if (move) {\n      ctx.moveTo(point.x, point.y);\n      move = false;\n    } else {\n      lineMethod(ctx, prev, point, reverse, options.stepped);\n    }\n\n    prev = point;\n  }\n\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n\n  return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n  const points = line.points;\n  const {count, start, ilen} = pathVars(points, segment, params);\n  const {move = true, reverse} = params || {};\n  let avgX = 0;\n  let countX = 0;\n  let i, point, prevX, minY, maxY, lastY;\n\n  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      // Draw line to maxY and minY, using the average x-coordinate\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      // Line to y-value of last point in group. So the line continues\n      // from correct position. Not using move, to have solid path.\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n\n    if (point.skip) {\n      // If there is a skipped point inside a segment, spanGaps must be true\n      continue;\n    }\n\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0; // truncated x-coordinate\n\n    if (truncX === prevX) {\n      // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      // For first point in group, countX is `0`, so average will be `x` / 1.\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      // Draw line to next x-position, using the first (or only)\n      // y-value in that group\n      ctx.lineTo(x, y);\n\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    // Keep track of the last y-value in group\n    lastY = y;\n  }\n  drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n  const opts = line.options;\n  const borderDash = opts.borderDash && opts.borderDash.length;\n  const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n  return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n\n  return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n  let path = line._path;\n  if (!path) {\n    path = line._path = new Path2D();\n    if (line.path(path, start, count)) {\n      path.closePath();\n    }\n  }\n  setStyle(ctx, line.options);\n  ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\n\n  for (const segment of segments) {\n    setStyle(ctx, options, segment.style);\n    ctx.beginPath();\n    if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n      ctx.closePath();\n    }\n    ctx.stroke();\n  }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n  if (usePath2D && !line.options.segment) {\n    strokePathWithCache(ctx, line, start, count);\n  } else {\n    strokePathDirect(ctx, line, start, count);\n  }\n}\n\nexport default class LineElement extends Element {\n\n  static id = 'line';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderCapStyle: 'butt',\n    borderDash: [],\n    borderDashOffset: 0,\n    borderJoinStyle: 'miter',\n    borderWidth: 3,\n    capBezierPoints: true,\n    cubicInterpolationMode: 'default',\n    fill: false,\n    spanGaps: false,\n    stepped: false,\n    tension: 0,\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n\n  static descriptors = {\n    _scriptable: true,\n    _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n  };\n\n\n  constructor(cfg) {\n    super();\n\n    this.animated = true;\n    this.options = undefined;\n    this._chart = undefined;\n    this._loop = undefined;\n    this._fullLoop = undefined;\n    this._path = undefined;\n    this._points = undefined;\n    this._segments = undefined;\n    this._decimated = false;\n    this._pointsUpdated = false;\n    this._datasetIndex = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  updateControlPoints(chartArea, indexAxis) {\n    const options = this.options;\n    if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n      const loop = options.spanGaps ? this._loop : this._fullLoop;\n      _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n      this._pointsUpdated = true;\n    }\n  }\n\n  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n\n  get points() {\n    return this._points;\n  }\n\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n\n  /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\n\n  /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n  last() {\n    const segments = this.segments;\n    const points = this.points;\n    const count = segments.length;\n    return count && points[segments[count - 1].end];\n  }\n\n  /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n  interpolate(point, property) {\n    const options = this.options;\n    const value = point[property];\n    const points = this.points;\n    const segments = _boundSegments(this, {property, start: value, end: value});\n\n    if (!segments.length) {\n      return;\n    }\n\n    const result = [];\n    const _interpolate = _getInterpolationMethod(options);\n    let i, ilen;\n    for (i = 0, ilen = segments.length; i < ilen; ++i) {\n      const {start, end} = segments[i];\n      const p1 = points[start];\n      const p2 = points[end];\n      if (p1 === p2) {\n        result.push(p1);\n        continue;\n      }\n      const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n      const interpolated = _interpolate(p1, p2, t, options.stepped);\n      interpolated[property] = point[property];\n      result.push(interpolated);\n    }\n    return result.length === 1 ? result[0] : result;\n  }\n\n  /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n\n  /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n\n    start = start || 0;\n    count = count || (this.points.length - start);\n\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n\n  /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n\n    if (points.length && options.borderWidth) {\n      ctx.save();\n\n      draw(ctx, this, start, count);\n\n      ctx.restore();\n    }\n\n    if (this.animated) {\n      // When line is animated, the control points and path are not cached.\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\n", "import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n  CartesianParsedData,\n  ChartArea,\n  Point,\n  PointHoverOptions,\n  PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element<PointProps, PointOptions & PointHoverOptions> {\n\n  static id = 'point';\n\n  parsed: CartesianParsedData;\n  skip?: boolean;\n  stop?: boolean;\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderWidth: 1,\n    hitRadius: 1,\n    hoverBorderWidth: 1,\n    hoverRadius: 4,\n    pointStyle: 'circle',\n    radius: 3,\n    rotation: 0\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n    const options = this.options;\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n  }\n\n  inXRange(mouseX: number, useFinalPosition?: boolean) {\n    return inRange(this, mouseX, 'x', useFinalPosition);\n  }\n\n  inYRange(mouseY: number, useFinalPosition?: boolean) {\n    return inRange(this, mouseY, 'y', useFinalPosition);\n  }\n\n  getCenterPoint(useFinalPosition?: boolean) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n\n  size(options?: Partial<PointOptions & PointHoverOptions>) {\n    options = options || this.options || {};\n    let radius = options.radius || 0;\n    radius = Math.max(radius, radius && options.hoverRadius || 0);\n    const borderWidth = radius && options.borderWidth || 0;\n    return (radius + borderWidth) * 2;\n  }\n\n  draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n    const options = this.options;\n\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\n    }\n\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.fillStyle = options.backgroundColor;\n    drawPoint(ctx, options, this.x, this.y);\n  }\n\n  getRange() {\n    const options = this.options || {};\n    // @ts-expect-error Fallbacks should never be hit in practice\n    return options.radius + options.hitRadius;\n  }\n}\n", "import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n  let left, right, top, bottom, half;\n\n  if (bar.horizontal) {\n    half = height / 2;\n    left = Math.min(x, base);\n    right = Math.max(x, base);\n    top = y - half;\n    bottom = y + half;\n  } else {\n    half = width / 2;\n    left = x - half;\n    right = x + half;\n    top = Math.min(y, base);\n    bottom = Math.max(y, base);\n  }\n\n  return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\n\n  return {\n    t: skipOrLimit(skip.top, o.top, 0, maxH),\n    r: skipOrLimit(skip.right, o.right, 0, maxW),\n    b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n    l: skipOrLimit(skip.left, o.left, 0, maxW)\n  };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n  const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n  const value = bar.options.borderRadius;\n  const o = toTRBLCorners(value);\n  const maxR = Math.min(maxW, maxH);\n  const skip = bar.borderSkipped;\n\n  // If the value is an object, assume the user knows what they are doing\n  // and apply as directed.\n  const enableBorder = enableBorderRadius || isObject(value);\n\n  return {\n    topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n    topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n    bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n    bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n  };\n}\n\nfunction boundingRects(bar) {\n  const bounds = getBarBounds(bar);\n  const width = bounds.right - bounds.left;\n  const height = bounds.bottom - bounds.top;\n  const border = parseBorderWidth(bar, width / 2, height / 2);\n  const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n  return {\n    outer: {\n      x: bounds.left,\n      y: bounds.top,\n      w: width,\n      h: height,\n      radius\n    },\n    inner: {\n      x: bounds.left + border.l,\n      y: bounds.top + border.t,\n      w: width - border.l - border.r,\n      h: height - border.t - border.b,\n      radius: {\n        topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n        topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n        bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n        bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n      }\n    }\n  };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n  const skipX = x === null;\n  const skipY = y === null;\n  const skipBoth = skipX && skipY;\n  const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n  const x = rect.x !== refRect.x ? -amount : 0;\n  const y = rect.y !== refRect.y ? -amount : 0;\n  const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n  const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n  return {\n    x: rect.x + x,\n    y: rect.y + y,\n    w: rect.w + w,\n    h: rect.h + h,\n    radius: rect.radius\n  };\n}\n\nexport default class BarElement extends Element {\n\n  static id = 'bar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderSkipped: 'start',\n    borderWidth: 0,\n    borderRadius: 0,\n    inflateAmount: 'auto',\n    pointStyle: undefined\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.horizontal = undefined;\n    this.base = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.inflateAmount = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  draw(ctx) {\n    const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n    const {inner, outer} = boundingRects(this);\n    const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n    ctx.save();\n\n    if (outer.w !== inner.w || outer.h !== inner.h) {\n      ctx.beginPath();\n      addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n      ctx.clip();\n      addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n      ctx.fillStyle = borderColor;\n      ctx.fill('evenodd');\n    }\n\n    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n\n    ctx.restore();\n  }\n\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n    return {\n      x: horizontal ? (x + base) / 2 : x,\n      y: horizontal ? y : (y + base) / 2\n    };\n  }\n\n  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\n", "import {DoughnutController, PolarAreaController} from '../index.js';\nimport type {Chart, ChartDataset} from '../types.js';\n\nexport interface ColorsPluginOptions {\n  enabled?: boolean;\n  forceOverride?: boolean;\n}\n\ninterface ColorsDescriptor {\n  backgroundColor?: unknown;\n  borderColor?: unknown;\n}\n\nconst BORDER_COLORS = [\n  'rgb(54, 162, 235)', // blue\n  'rgb(255, 99, 132)', // red\n  'rgb(255, 159, 64)', // orange\n  'rgb(255, 205, 86)', // yellow\n  'rgb(75, 192, 192)', // green\n  'rgb(153, 102, 255)', // purple\n  'rgb(201, 203, 207)' // grey\n];\n\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map(color => color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\n\nfunction getBorderColor(i: number) {\n  return BORDER_COLORS[i % BORDER_COLORS.length];\n}\n\nfunction getBackgroundColor(i: number) {\n  return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\n\nfunction colorizeDefaultDataset(dataset: ChartDataset, i: number) {\n  dataset.borderColor = getBorderColor(i);\n  dataset.backgroundColor = getBackgroundColor(i);\n\n  return ++i;\n}\n\nfunction colorizeDoughnutDataset(dataset: ChartDataset, i: number) {\n  dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++));\n\n  return i;\n}\n\nfunction colorizePolarAreaDataset(dataset: ChartDataset, i: number) {\n  dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++));\n\n  return i;\n}\n\nfunction getColorizer(chart: Chart) {\n  let i = 0;\n\n  return (dataset: ChartDataset, datasetIndex: number) => {\n    const controller = chart.getDatasetMeta(datasetIndex).controller;\n\n    if (controller instanceof DoughnutController) {\n      i = colorizeDoughnutDataset(dataset, i);\n    } else if (controller instanceof PolarAreaController) {\n      i = colorizePolarAreaDataset(dataset, i);\n    } else if (controller) {\n      i = colorizeDefaultDataset(dataset, i);\n    }\n  };\n}\n\nfunction containsColorsDefinitions(\n  descriptors: ColorsDescriptor[] | Record<string, ColorsDescriptor>\n) {\n  let k: number | string;\n\n  for (k in descriptors) {\n    if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction containsColorsDefinition(\n  descriptor: ColorsDescriptor\n) {\n  return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\n\nexport default {\n  id: 'colors',\n\n  defaults: {\n    enabled: true,\n    forceOverride: false\n  } as ColorsPluginOptions,\n\n  beforeLayout(chart: Chart, _args, options: ColorsPluginOptions) {\n    if (!options.enabled) {\n      return;\n    }\n\n    const {\n      data: {datasets},\n      options: chartOptions\n    } = chart.config;\n    const {elements} = chartOptions;\n\n    if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || (elements && containsColorsDefinitions(elements)))) {\n      return;\n    }\n\n    const colorizer = getColorizer(chart);\n\n    datasets.forEach(colorizer);\n  }\n};\n", "import {_limitValue, _lookupByKey, isNullOrUndef, resolve} from '../helpers/index.js';\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  /**\n   * Implementation of the Largest Triangle Three Buckets algorithm.\n   *\n   * This implementation is based on the original implementation by Sveinn Steinarsson\n   * in https://github.com/sveinn-steinarsson/flot-downsample/blob/master/jquery.flot.downsample.js\n   *\n   * The original implementation is MIT licensed.\n   */\n  const samples = options.samples || availableWidth;\n  // There are less points than the threshold, returning the whole array\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n\n  const decimated = [];\n\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  // Starting from offset\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n\n  decimated[sampledIndex++] = data[a];\n\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\n\n    // Adding offset\n    const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n    const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n    const avgRangeLength = avgRangeEnd - avgRangeStart;\n\n    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\n\n    // Adding offset\n    const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n    const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n    const {x: pointAx, y: pointAy} = data[a];\n\n    // Note that this is changed from the original algorithm which initializes these\n    // values to 1. The reason for this change is that if the area is small, nextA\n    // would never be set and thus a crash would occur in the next loop as `a` would become\n    // `undefined`. Since the area is always positive, but could be 0 in the case of a flat trace,\n    // initializing with a negative number is the correct solution.\n    maxArea = area = -1;\n\n    for (j = rangeOffs; j < rangeTo; j++) {\n      area = 0.5 * Math.abs(\n        (pointAx - avgX) * (data[j].y - pointAy) -\n        (pointAx - data[j].x) * (avgY - pointAy)\n      );\n\n      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n\n  // Include the last point\n  decimated[sampledIndex++] = data[endIndex];\n\n  return decimated;\n}\n\nfunction minMaxDecimation(data, start, count, availableWidth) {\n  let avgX = 0;\n  let countX = 0;\n  let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n  const decimated = [];\n  const endIndex = start + count - 1;\n\n  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\n\n  for (i = start; i < start + count; ++i) {\n    point = data[i];\n    x = (point.x - xMin) / dx * availableWidth;\n    y = point.y;\n    const truncX = x | 0;\n\n    if (truncX === prevX) {\n      // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      // For first point in group, countX is `0`, so average will be `x` / 1.\n      // Use point.x here because we're computing the average data `x` value\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      // Push up to 4 points, 3 for the last interval and the first point for this interval\n      const lastIndex = i - 1;\n\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        // The interval is defined by 4 points: start, min, max, end.\n        // The starting point is already considered at this point, so we need to determine which\n        // of the other points to add. We need to sort these points to ensure the decimated data\n        // is still sorted and then ensure there are no duplicates.\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\n\n        if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex1],\n            x: avgX,\n          });\n        }\n        if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex2],\n            x: avgX\n          });\n        }\n      }\n\n      // lastIndex === startIndex will occur when a range has only 1 point which could\n      // happen with very uneven data\n      if (i > 0 && lastIndex !== startIndex) {\n        // Last point in the previous interval\n        decimated.push(data[lastIndex]);\n      }\n\n      // Start of the new interval\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n\n  return decimated;\n}\n\nfunction cleanDecimatedDataset(dataset) {\n  if (dataset._decimated) {\n    const data = dataset._data;\n    delete dataset._decimated;\n    delete dataset._data;\n    Object.defineProperty(dataset, 'data', {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: data,\n    });\n  }\n}\n\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\n\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n\n  let start = 0;\n  let count;\n\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n  if (minDefined) {\n    start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n  }\n  if (maxDefined) {\n    count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n  } else {\n    count = pointCount - start;\n  }\n\n  return {start, count};\n}\n\nexport default {\n  id: 'decimation',\n\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      // The decimation plugin may have been previously enabled. Need to remove old `dataset._data` handlers\n      cleanDecimatedData(chart);\n      return;\n    }\n\n    // Assume the entire chart is available to show a few more points than needed\n    const availableWidth = chart.width;\n\n    chart.data.datasets.forEach((dataset, datasetIndex) => {\n      const {_data, indexAxis} = dataset;\n      const meta = chart.getDatasetMeta(datasetIndex);\n      const data = _data || dataset.data;\n\n      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        // Decimation is only supported for lines that have an X indexAxis\n        return;\n      }\n\n      if (!meta.controller.supportsDecimation) {\n        // Only line datasets are supported\n        return;\n      }\n\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        // Only linear interpolation is supported\n        return;\n      }\n\n      if (chart.options.parsing) {\n        // Plugin only supports data that does not need parsing\n        return;\n      }\n\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        // No decimation is required until we are above this threshold\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n\n      if (isNullOrUndef(_data)) {\n        // First time we are seeing this dataset\n        // We override the 'data' property with a setter that stores the\n        // raw data in _data, but reads the decimated data from _decimated\n        dataset._data = data;\n        delete dataset.data;\n        Object.defineProperty(dataset, 'data', {\n          configurable: true,\n          enumerable: true,\n          get: function() {\n            return this._decimated;\n          },\n          set: function(d) {\n            this._data = d;\n          }\n        });\n      }\n\n      // Point the chart to the decimated data\n      let decimated;\n      switch (options.algorithm) {\n      case 'lttb':\n        decimated = lttbDecimation(data, start, count, availableWidth, options);\n        break;\n      case 'min-max':\n        decimated = minMaxDecimation(data, start, count, availableWidth);\n        break;\n      default:\n        throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n      }\n\n      dataset._decimated = decimated;\n    });\n  },\n\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n", "import {_boundSegment, _boundSegments, _normalizeAngle} from '../../helpers/index.js';\n\nexport function _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n    if (!target.segments) {\n      // Special case for boundary not supporting `segments` (simpleArc)\n      // Bounds are provided as `target` for partial circle, or undefined for full circle\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n\n    // Get all segments from `target` that intersect the bounds of current segment of `line`\n    const targetSegments = _boundSegments(target, bounds);\n\n    for (const tgt of targetSegments) {\n      const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n      const fillSources = _boundSegment(segment, points, subBounds);\n\n      for (const fillSource of fillSources) {\n        parts.push({\n          source: fillSource,\n          target: tgt,\n          start: {\n            [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n          },\n          end: {\n            [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n          }\n        });\n      }\n    }\n  }\n  return parts;\n}\n\nexport function _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\n\nexport function _pointsFromSegments(boundary, line) {\n  const {x = null, y = null} = boundary || {};\n  const linePoints = line.points;\n  const points = [];\n  line.segments.forEach(({start, end}) => {\n    end = _findSegmentEnd(start, end, linePoints);\n    const first = linePoints[start];\n    const last = linePoints[end];\n    if (y !== null) {\n      points.push({x: first.x, y});\n      points.push({x: last.x, y});\n    } else if (x !== null) {\n      points.push({x, y: first.y});\n      points.push({x, y: last.y});\n    }\n  });\n  return points;\n}\n\nexport function _findSegmentEnd(start, end, points) {\n  for (;end > start; end--) {\n    const point = points[end];\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      break;\n    }\n  }\n  return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n  if (a && b) {\n    return fn(a[prop], b[prop]);\n  }\n  return a ? a[prop] : b ? b[prop] : 0;\n}\n", "/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {isArray} from '../../helpers/index.js';\nimport {_pointsFromSegments} from './filler.segment.js';\n\n/**\n * @param {PointElement[] | { x: number; y: number; }} boundary\n * @param {LineElement} line\n * @return {LineElement?}\n */\nexport function _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n\n  if (isArray(boundary)) {\n    _loop = true;\n    // @ts-ignore\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\n\nexport function _shouldApplyFill(source) {\n  return source && source.fill !== false;\n}\n", "import {isObject, isFinite, valueOrDefault} from '../../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.line.js').default } LineElement\n * @typedef { import('../../types/index.js').FillTarget } FillTarget\n * @typedef { import('../../types/index.js').ComplexFillTarget } ComplexFillTarget\n */\n\nexport function _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n\n  if (!propagate) {\n    return fill;\n  }\n\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isFinite(fill)) {\n      return fill;\n    }\n\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n\n    if (target.visible) {\n      return fill;\n    }\n\n    visited.push(fill);\n    fill = target.fill;\n  }\n\n  return false;\n}\n\n/**\n * @param {LineElement} line\n * @param {number} index\n * @param {number} count\n */\nexport function _decodeFill(line, index, count) {\n  /** @type {string | {value: number}} */\n  const fill = parseFillOption(line);\n\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n\n  let target = parseFloat(fill);\n\n  if (isFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n\n  return target;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @returns {number | null}\n */\nexport function _getTargetPixel(fill, scale) {\n  let pixel = null;\n  if (fill === 'start') {\n    pixel = scale.bottom;\n  } else if (fill === 'end') {\n    pixel = scale.top;\n  } else if (isObject(fill)) {\n    // @ts-ignore\n    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @param {number} startValue\n * @returns {number | undefined}\n */\nexport function _getTargetValue(fill, scale, startValue) {\n  let value;\n\n  if (fill === 'start') {\n    value = startValue;\n  } else if (fill === 'end') {\n    value = scale.options.reverse ? scale.min : scale.max;\n  } else if (isObject(fill)) {\n    // @ts-ignore\n    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\n\n/**\n * @param {LineElement} line\n */\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n\n  if (fill === false || fill === null) {\n    return false;\n  }\n\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n", "/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {_isBetween} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\n\n/**\n * @param {{ chart: Chart; scale: Scale; index: number; line: LineElement; }} source\n * @return {LineElement}\n */\nexport function _buildStackLine(source) {\n  const {scale, index, line} = source;\n  const points = [];\n  const segments = line.segments;\n  const sourcePoints = line.points;\n  const linesBelow = getLinesBelow(scale, index);\n  linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    for (let j = segment.start; j <= segment.end; j++) {\n      addPointsBelow(points, sourcePoints[j], linesBelow);\n    }\n  }\n  return new LineElement({points, options: {}});\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @return {LineElement[]}\n */\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\n\n  for (let i = 0; i < metas.length; i++) {\n    const meta = metas[i];\n    if (meta.index === index) {\n      break;\n    }\n    if (!meta.hidden) {\n      below.unshift(meta.dataset);\n    }\n  }\n  return below;\n}\n\n/**\n * @param {PointElement[]} points\n * @param {PointElement} sourcePoint\n * @param {LineElement[]} linesBelow\n */\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n  const postponed = [];\n  for (let j = 0; j < linesBelow.length; j++) {\n    const line = linesBelow[j];\n    const {first, last, point} = findPoint(line, sourcePoint, 'x');\n\n    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      // First point of an segment -> need to add another point before this,\n      // from next line below.\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        // In the middle of an segment, no need to add more points.\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\n\n/**\n * @param {LineElement} line\n * @param {PointElement} sourcePoint\n * @param {string} property\n * @returns {{point?: PointElement, first?: boolean, last?: boolean}}\n */\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\n  }\n\n  const pointValue = point[property];\n  const segments = line.segments;\n  const linePoints = line.points;\n  let first = false;\n  let last = false;\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const firstValue = linePoints[segment.start][property];\n    const lastValue = linePoints[segment.end][property];\n    if (_isBetween(pointValue, firstValue, lastValue)) {\n      first = pointValue === firstValue;\n      last = pointValue === lastValue;\n      break;\n    }\n  }\n  return {first, last, point};\n}\n", "import {TAU} from '../../helpers/index.js';\n\n// TODO: use elements.ArcElement instead\nexport class simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\n  }\n\n  pathSegment(ctx, bounds, opts) {\n    const {x, y, radius} = this;\n    bounds = bounds || {start: 0, end: TAU};\n    ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n    return !opts.bounds;\n  }\n\n  interpolate(point) {\n    const {x, y, radius} = this;\n    const angle = point.angle;\n    return {\n      x: x + Math.cos(angle) * radius,\n      y: y + Math.sin(angle) * radius,\n      angle\n    };\n  }\n}\n", "import {isFinite} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\nimport {_getTargetPixel, _getTargetValue} from './filler.options.js';\nimport {_buildStackLine} from './filler.target.stack.js';\nimport {simpleArc} from './simpleArc.js';\n\n/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nexport function _getTarget(source) {\n  const {chart, fill, line} = source;\n\n  if (isFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n\n  if (fill === 'shape') {\n    return true;\n  }\n\n  const boundary = computeBoundary(source);\n\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n\n  return _createBoundaryLine(boundary, line);\n}\n\n/**\n * @param {Chart} chart\n * @param {number} index\n */\nfunction getLineByIndex(chart, index) {\n  const meta = chart.getDatasetMeta(index);\n  const visible = meta && chart.isDatasetVisible(index);\n  return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\n\n\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n\n  if (isFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n\n  return null;\n}\n\nfunction computeCircularBoundary(source) {\n  const {scale, fill} = source;\n  const options = scale.options;\n  const length = scale.getLabels().length;\n  const start = options.reverse ? scale.max : scale.min;\n  const value = _getTargetValue(fill, scale, start);\n  const target = [];\n\n  if (options.grid.circular) {\n    const center = scale.getPointPositionForValue(0, start);\n    return new simpleArc({\n      x: center.x,\n      y: center.y,\n      radius: scale.getDistanceFromCenterForValue(value)\n    });\n  }\n\n  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\n", "import {clipArea, unclipArea} from '../../helpers/index.js';\nimport {_findSegmentEnd, _getBounds, _segments} from './filler.segment.js';\nimport {_getTarget} from './filler.target.js';\n\nexport function _drawfill(ctx, source, area) {\n  const target = _getTarget(source);\n  const {line, scale, axis} = source;\n  const lineOpts = line.options;\n  const fillOption = lineOpts.fill;\n  const color = lineOpts.backgroundColor;\n  const {above = color, below = color} = fillOption || {};\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis});\n    unclipArea(ctx);\n  }\n}\n\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n\n  ctx.save();\n\n  if (property === 'x' && below !== above) {\n    clipVertical(ctx, target, area.top);\n    fill(ctx, {line, target, color: above, scale, property});\n    ctx.restore();\n    ctx.save();\n    clipVertical(ctx, target, area.bottom);\n  }\n  fill(ctx, {line, target, color: below, scale, property});\n\n  ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\n\n  ctx.beginPath();\n  for (const segment of segments) {\n    const {start, end} = segment;\n    const firstPoint = points[start];\n    const lastPoint = points[_findSegmentEnd(start, end, points)];\n    if (first) {\n      ctx.moveTo(firstPoint.x, firstPoint.y);\n      first = false;\n    } else {\n      ctx.lineTo(firstPoint.x, clipY);\n      ctx.lineTo(firstPoint.x, firstPoint.y);\n    }\n    lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n    if (lineLoop) {\n      ctx.closePath();\n    } else {\n      ctx.lineTo(lastPoint.x, clipY);\n    }\n  }\n\n  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n\n    ctx.beginPath();\n\n    const lineLoop = !!line.pathSegment(ctx, src);\n\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\n      }\n\n      const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n      loop = lineLoop && targetLoop;\n      if (!loop) {\n        interpolatedLineTo(ctx, target, start, property);\n      }\n    }\n\n    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n\n    ctx.restore();\n  }\n}\n\nfunction clipBounds(ctx, scale, bounds) {\n  const {top, bottom} = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n  if (property === 'x') {\n    ctx.beginPath();\n    ctx.rect(start, top, end - start, bottom - top);\n    ctx.clip();\n  }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n  const interpolatedPoint = target.interpolate(point, property);\n  if (interpolatedPoint) {\n    ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n  }\n}\n\n", "/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n  id: 'filler',\n\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\n\n      if (line && line.options && line instanceof LineElement) {\n        source = {\n          visible: chart.isDatasetVisible(i),\n          index: i,\n          fill: _decodeFill(line, i, count),\n          chart,\n          axis: meta.controller.options.indexAxis,\n          scale: meta.vScale,\n          line,\n        };\n      }\n\n      meta.$filler = source;\n      sources.push(source);\n    }\n\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n\n      source.fill = _resolveTarget(sources, i, options.propagate);\n    }\n  },\n\n  beforeDraw(chart, _args, options) {\n    const draw = options.drawTime === 'beforeDraw';\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    const area = chart.chartArea;\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (!source) {\n        continue;\n      }\n\n      source.line.updateControlPoints(area, source.axis);\n      if (draw && source.fill) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n\n      if (_shouldApplyFill(source)) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n\n    if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n", "import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n  _isBetween,\n  callback as call,\n  clipArea,\n  getRtlAdapter,\n  overrideTextDirection,\n  restoreTextDirection,\n  toFont,\n  toPadding,\n  unclipArea,\n  valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n  }\n\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n  /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n  constructor(config) {\n    super();\n\n    this._added = false;\n\n    // Contains hit boxes for each dataset (in dataset order)\n    this.legendHitBoxes = [];\n\n    /**\n \t\t * @private\n \t\t */\n    this._hoveredItem = null;\n\n    // Are we in doughnut mode which has a different data type\n    this.doughnutMode = false;\n\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this.legendItems = undefined;\n    this.columnSizes = undefined;\n    this.lineWidths = undefined;\n    this.maxHeight = undefined;\n    this.maxWidth = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this._margins = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n\n  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\n  }\n\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = this._margins.left;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = this._margins.top;\n      this.bottom = this.height;\n    }\n  }\n\n  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n\n    this.legendItems = legendItems;\n  }\n\n  fit() {\n    const {options, ctx} = this;\n\n    // The legend may not be displayed for a variety of reasons including\n    // the fact that the defaults got set to `false`.\n    // When the legend is not displayed, there are no guarantees that the options\n    // are correctly formatted so we need to bail out as early as possible.\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\n    }\n\n    const labelOpts = options.labels;\n    const labelFont = toFont(labelOpts.font);\n    const fontSize = labelFont.size;\n    const titleHeight = this._computeTitleHeight();\n    const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n    let width, height;\n\n    ctx.font = labelFont.string;\n\n    if (this.isHorizontal()) {\n      width = this.maxWidth; // fill all the width\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight; // fill all the height\n      width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n    }\n\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n\n  /**\n\t * @private\n\t */\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n\n    let row = -1;\n    let top = -lineHeight;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n        totalHeight += lineHeight;\n        lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n        top += lineHeight;\n        row++;\n      }\n\n      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n\n    return totalHeight;\n  }\n\n  _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n    const {ctx, maxHeight, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const columnSizes = this.columnSizes = [];\n    const heightLimit = maxHeight - titleHeight;\n\n    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n\n    let left = 0;\n    let col = 0;\n\n    this.legendItems.forEach((legendItem, i) => {\n      const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n      // If too tall, go to new column\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n\n      // Store the hitbox width and height here. Final position will be updated in `draw`\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n      // Get max width\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n    return totalWidth;\n  }\n\n  adjustHitBoxes() {\n    if (!this.options.display) {\n      return;\n    }\n    const titleHeight = this._computeTitleHeight();\n    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n    const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n    if (this.isHorizontal()) {\n      let row = 0;\n      let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n      for (const hitbox of hitboxes) {\n        if (row !== hitbox.row) {\n          row = hitbox.row;\n          left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n        }\n        hitbox.top += this.top + titleHeight + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n        left += hitbox.width + padding;\n      }\n    } else {\n      let col = 0;\n      let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n      for (const hitbox of hitboxes) {\n        if (hitbox.col !== col) {\n          col = hitbox.col;\n          top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n        }\n        hitbox.top = top;\n        hitbox.left += this.left + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n        top += hitbox.height + padding;\n      }\n    }\n  }\n\n  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n\n      this._draw();\n\n      unclipArea(ctx);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _draw() {\n    const {options: opts, columnSizes, lineWidths, ctx} = this;\n    const {align, labels: labelOpts} = opts;\n    const defaultColor = defaults.color;\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const labelFont = toFont(labelOpts.font);\n    const {padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n\n    this.drawTitle();\n\n    // Canvas setup\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n    // current position\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n\n      // Set the ctx for the box\n      ctx.save();\n\n      const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n      ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n      ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n      ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n      ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n      ctx.lineWidth = lineWidth;\n      ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n      if (labelOpts.usePointStyle) {\n        // Recalculate x and y for drawPoint() because its expecting\n        // x and y to be center of figure (instead of top left)\n        const drawOptions = {\n          radius: boxHeight * Math.SQRT2 / 2,\n          pointStyle: legendItem.pointStyle,\n          rotation: legendItem.rotation,\n          borderWidth: lineWidth\n        };\n        const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n        const centerY = y + halfFontSize;\n\n        // Draw pointStyle as legend symbol\n        drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n      } else {\n        // Draw box as legend symbol\n        // Adjust position when boxHeight < fontSize (want it centered)\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n        ctx.beginPath();\n\n        if (Object.values(borderRadius).some(v => v !== 0)) {\n          addRoundedRectPath(ctx, {\n            x: xBoxLeft,\n            y: yBoxTop,\n            w: boxWidth,\n            h: boxHeight,\n            radius: borderRadius,\n          });\n        } else {\n          ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n        }\n\n        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n\n      ctx.restore();\n    };\n\n    const fillText = function(x, y, legendItem) {\n      renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n        strikethrough: legendItem.hidden,\n        textAlign: rtlHelper.textAlign(legendItem.textAlign)\n      });\n    };\n\n    // Horizontal\n    const isHorizontal = this.isHorizontal();\n    const titleHeight = this._computeTitleHeight();\n    if (isHorizontal) {\n      cursor = {\n        x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n        y: this.top + padding + titleHeight,\n        line: 0\n      };\n    } else {\n      cursor = {\n        x: this.left + padding,\n        y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n        line: 0\n      };\n    }\n\n    overrideTextDirection(this.ctx, opts.textDirection);\n\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n      ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n      const textWidth = ctx.measureText(legendItem.text).width;\n      const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n      const width = boxWidth + halfFontSize + textWidth;\n      let x = cursor.x;\n      let y = cursor.y;\n\n      rtlHelper.setWidth(this.width);\n\n      if (isHorizontal) {\n        if (i > 0 && x + width + padding > this.right) {\n          y = cursor.y += lineHeight;\n          cursor.line++;\n          x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n        }\n      } else if (i > 0 && y + lineHeight > this.bottom) {\n        x = cursor.x = x + columnSizes[cursor.line].width + padding;\n        cursor.line++;\n        y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n      }\n\n      const realX = rtlHelper.x(x);\n\n      drawLegendBox(realX, y, legendItem);\n\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n      // Fill the actual label\n      fillText(rtlHelper.x(x), y, legendItem);\n\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else if (typeof legendItem.text !== 'string') {\n        const fontLineHeight = labelFont.lineHeight;\n        cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {\n    const opts = this.options;\n    const titleOpts = opts.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n\n    if (!titleOpts.display) {\n      return;\n    }\n\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const ctx = this.ctx;\n    const position = titleOpts.position;\n    const halfFontSize = titleFont.size / 2;\n    const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n    let y;\n\n    // These defaults are used when the legend is vertical.\n    // When horizontal, they are computed below.\n    let left = this.left;\n    let maxWidth = this.width;\n\n    if (this.isHorizontal()) {\n      // Move left / right so that the title is above the legend lines\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\n      // Move down so that the title is above the legend stack in every alignment\n      const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n    }\n\n    // Now that we know the left edge of the inner legend box, compute the correct\n    // X coordinate from the title alignment\n    const x = _alignStartEnd(position, left, left + maxWidth);\n\n    // Canvas setup\n    ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n    ctx.textBaseline = 'middle';\n    ctx.strokeStyle = titleOpts.color;\n    ctx.fillStyle = titleOpts.color;\n    ctx.font = titleFont.string;\n\n    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\n\n  /**\n\t * @private\n\t */\n  _computeTitleHeight() {\n    const titleOpts = this.options.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n  }\n\n  /**\n\t * @private\n\t */\n  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      // See if we are touching one of the dataset boxes\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          // Touching an element\n          return this.legendItems[i];\n        }\n      }\n    }\n\n    return null;\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n\n    // Chart event already has relative position in it\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        call(opts.onLeave, [e, previous, this], this);\n      }\n\n      this._hoveredItem = hoveredItem;\n\n      if (hoveredItem && !sameItem) {\n        call(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      call(opts.onClick, [e, hoveredItem, this], this);\n    }\n  }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n  const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n  const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n  return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n  let legendItemText = legendItem.text;\n  if (legendItemText && typeof legendItemText !== 'string') {\n    legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n  }\n  return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n  let itemHeight = _itemHeight;\n  if (typeof legendItem.text !== 'string') {\n    itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n  }\n  return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n  const labelHeight = legendItem.text ? legendItem.text.length : 0;\n  return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n  if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n    return true;\n  }\n  if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n    return true;\n  }\n  return false;\n}\n\nexport default {\n  id: 'legend',\n\n  /**\n\t * For tests\n\t * @private\n\t */\n  _element: Legend,\n\n  start(chart, _args, options) {\n    const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n    layouts.configure(chart, legend, options);\n    layouts.addBox(chart, legend);\n  },\n\n  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n\n  // During the beforeUpdate step, the layout configuration needs to run\n  // This ensures that if the legend position changes (via an option update)\n  // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n\n  // The labels need to be built after datasets are updated to ensure that colors\n  // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n\n\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\n\n    // a callback that will handle\n    onClick(e, legendItem, legend) {\n      const index = legendItem.datasetIndex;\n      const ci = legend.chart;\n      if (ci.isDatasetVisible(index)) {\n        ci.hide(index);\n        legendItem.hidden = true;\n      } else {\n        ci.show(index);\n        legendItem.hidden = false;\n      }\n    },\n\n    onHover: null,\n    onLeave: null,\n\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      // Generates labels shown in the legend\n      // Valid properties to return:\n      // text : text to display\n      // fillStyle : fill of coloured box\n      // strokeStyle: stroke of coloured box\n      // hidden : if this legend item refers to a hidden item\n      // lineCap : cap style for line\n      // lineDash\n      // lineDashOffset :\n      // lineJoin :\n      // lineWidth :\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\n\n          return {\n            text: datasets[meta.index].label,\n            fillStyle: style.backgroundColor,\n            fontColor: color,\n            hidden: !meta.visible,\n            lineCap: style.borderCapStyle,\n            lineDash: style.borderDash,\n            lineDashOffset: style.borderDashOffset,\n            lineJoin: style.borderJoinStyle,\n            lineWidth: (borderWidth.width + borderWidth.height) / 4,\n            strokeStyle: style.borderColor,\n            pointStyle: pointStyle || style.pointStyle,\n            rotation: style.rotation,\n            textAlign: textAlign || style.textAlign,\n            borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n            // Below is extra data used for toggling the datasets\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n", "import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n  /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n  constructor(config) {\n    super();\n\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this._padding = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n\n  update(maxWidth, maxHeight) {\n    const opts = this.options;\n\n    this.left = 0;\n    this.top = 0;\n\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\n\n    const lineCount = isArray(opts.text) ? opts.text.length : 1;\n    this._padding = toPadding(opts.padding);\n    const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\n  }\n\n  _drawArgs(offset) {\n    const {top, left, bottom, right, options} = this;\n    const align = options.align;\n    let rotation = 0;\n    let maxWidth, titleX, titleY;\n\n    if (this.isHorizontal()) {\n      titleX = _alignStartEnd(align, left, right);\n      titleY = top + offset;\n      maxWidth = right - left;\n    } else {\n      if (options.position === 'left') {\n        titleX = left + offset;\n        titleY = _alignStartEnd(align, bottom, top);\n        rotation = PI * -0.5;\n      } else {\n        titleX = right - offset;\n        titleY = _alignStartEnd(align, top, bottom);\n        rotation = PI * 0.5;\n      }\n      maxWidth = bottom - top;\n    }\n    return {titleX, titleY, maxWidth, rotation};\n  }\n\n  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n\n    if (!opts.display) {\n      return;\n    }\n\n    const fontOpts = toFont(opts.font);\n    const lineHeight = fontOpts.lineHeight;\n    const offset = lineHeight / 2 + this._padding.top;\n    const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n    renderText(ctx, opts.text, 0, 0, fontOpts, {\n      color: opts.color,\n      maxWidth,\n      rotation,\n      textAlign: _toLeftRightCenter(opts.align),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n}\n\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\n\nexport default {\n  id: 'title',\n\n  /**\n\t * For tests\n\t * @private\n\t */\n  _element: Title,\n\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'bold',\n    },\n    fullSize: true,\n    padding: 10,\n    position: 'top',\n    text: '',\n    weight: 2000         // by default greater than legend (1000) to be above\n  },\n\n  defaultRoutes: {\n    color: 'color'\n  },\n\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n", "import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n  id: 'subtitle',\n\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'normal',\n    },\n    fullSize: true,\n    padding: 0,\n    position: 'top',\n    text: '',\n    weight: 1500         // by default greater than legend (1000) and smaller than title (2000)\n  },\n\n  defaultRoutes: {\n    color: 'color'\n  },\n\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n", "import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n  /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n\n    let i, len;\n    let xSet = new Set();\n    let y = 0;\n    let count = 0;\n\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const pos = el.tooltipPosition();\n        xSet.add(pos.x);\n        y += pos.y;\n        ++count;\n      }\n    }\n\n    const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n    return {\n      x: xAverage,\n      y: y / count\n    };\n  },\n\n  /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\n\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const center = el.getCenterPoint();\n        const d = distanceBetweenPoints(eventPosition, center);\n\n        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n\n    return {\n      x,\n      y\n    };\n  }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      // base = base.concat(toPush);\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n\n  return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n  if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n    return str.split('\\n');\n  }\n  return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n  const {element, datasetIndex, index} = item;\n  const controller = chart.getDatasetMeta(datasetIndex).controller;\n  const {label, value} = controller.getLabelAndValue(index);\n\n  return {\n    chart,\n    label,\n    parsed: controller.getParsed(index),\n    raw: chart.data.datasets[datasetIndex].data[index],\n    formattedValue: value,\n    dataset: controller.getDataset(),\n    dataIndex: index,\n    datasetIndex,\n    element\n  };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n  const ctx = tooltip.chart.ctx;\n  const {body, footer, title} = tooltip;\n  const {boxWidth, boxHeight} = options;\n  const bodyFont = toFont(options.bodyFont);\n  const titleFont = toFont(options.titleFont);\n  const footerFont = toFont(options.footerFont);\n  const titleLineCount = title.length;\n  const footerLineCount = footer.length;\n  const bodyLineItemCount = body.length;\n\n  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\n\n  // Count of all lines in the body\n  let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n  combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n  if (titleLineCount) {\n    height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n  }\n  if (combinedBodyLength) {\n    // Body lines may include some extra height depending on boxHeight\n    const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n    height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n  }\n  if (footerLineCount) {\n    height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n  }\n\n  // Title width\n  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n\n  ctx.save();\n\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n\n  // Body width\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n  // Body lines may include some extra width due to the color box\n  widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n  each(body, (bodyItem) => {\n    each(bodyItem.before, maxLineWidth);\n    each(bodyItem.lines, maxLineWidth);\n    each(bodyItem.after, maxLineWidth);\n  });\n\n  // Reset back to 0\n  widthPadding = 0;\n\n  // Footer width\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n\n  ctx.restore();\n\n  // Add padding\n  width += padding.width;\n\n  return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n  const {x, width} = size;\n  const caret = options.caretSize + options.caretPadding;\n  if (xAlign === 'left' && x + width + caret > chart.width) {\n    return true;\n  }\n\n  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\n  }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n  const {x, width} = size;\n  const {width: chartWidth, chartArea: {left, right}} = chart;\n  let xAlign = 'center';\n\n  if (yAlign === 'center') {\n    xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n  } else if (x <= width / 2) {\n    xAlign = 'left';\n  } else if (x >= chartWidth - width / 2) {\n    xAlign = 'right';\n  }\n\n  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n\n  return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\n  };\n}\n\nfunction alignX(size, xAlign) {\n  let {x, width} = size;\n  if (xAlign === 'right') {\n    x -= width;\n  } else if (xAlign === 'center') {\n    x -= (width / 2);\n  }\n  return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n  // eslint-disable-next-line prefer-const\n  let {y, height} = size;\n  if (yAlign === 'top') {\n    y += paddingAndSize;\n  } else if (yAlign === 'bottom') {\n    y -= height + paddingAndSize;\n  } else {\n    y -= (height / 2);\n  }\n  return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n  const {caretSize, caretPadding, cornerRadius} = options;\n  const {xAlign, yAlign} = alignment;\n  const paddingAndSize = caretSize + caretPadding;\n  const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\n\n  if (yAlign === 'center') {\n    if (xAlign === 'left') {\n      x += paddingAndSize;\n    } else if (xAlign === 'right') {\n      x -= paddingAndSize;\n    }\n  } else if (xAlign === 'left') {\n    x -= Math.max(topLeft, bottomLeft) + caretSize;\n  } else if (xAlign === 'right') {\n    x += Math.max(topRight, bottomRight) + caretSize;\n  }\n\n  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\n\n  return align === 'center'\n    ? tooltip.x + tooltip.width / 2\n    : align === 'right'\n      ? tooltip.x + tooltip.width - padding.right\n      : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\n  });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n  const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n  return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n  // Args are: (tooltipItems, data)\n  beforeTitle: noop,\n  title(tooltipItems) {\n    if (tooltipItems.length > 0) {\n      const item = tooltipItems[0];\n      const labels = item.chart.data.labels;\n      const labelCount = labels ? labels.length : 0;\n\n      if (this && this.options && this.options.mode === 'dataset') {\n        return item.dataset.label || '';\n      } else if (item.label) {\n        return item.label;\n      } else if (labelCount > 0 && item.dataIndex < labelCount) {\n        return labels[item.dataIndex];\n      }\n    }\n\n    return '';\n  },\n  afterTitle: noop,\n\n  // Args are: (tooltipItems, data)\n  beforeBody: noop,\n\n  // Args are: (tooltipItem, data)\n  beforeLabel: noop,\n  label(tooltipItem) {\n    if (this && this.options && this.options.mode === 'dataset') {\n      return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n    }\n\n    let label = tooltipItem.dataset.label || '';\n\n    if (label) {\n      label += ': ';\n    }\n    const value = tooltipItem.formattedValue;\n    if (!isNullOrUndef(value)) {\n      label += value;\n    }\n    return label;\n  },\n  labelColor(tooltipItem) {\n    const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n    const options = meta.controller.getStyle(tooltipItem.dataIndex);\n    return {\n      borderColor: options.borderColor,\n      backgroundColor: options.backgroundColor,\n      borderWidth: options.borderWidth,\n      borderDash: options.borderDash,\n      borderDashOffset: options.borderDashOffset,\n      borderRadius: 0,\n    };\n  },\n  labelTextColor() {\n    return this.options.bodyColor;\n  },\n  labelPointStyle(tooltipItem) {\n    const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n    const options = meta.controller.getStyle(tooltipItem.dataIndex);\n    return {\n      pointStyle: options.pointStyle,\n      rotation: options.rotation,\n    };\n  },\n  afterLabel: noop,\n\n  // Args are: (tooltipItems, data)\n  afterBody: noop,\n\n  // Args are: (tooltipItems, data)\n  beforeFooter: noop,\n  footer: noop,\n  afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record<keyof typeof defaultCallbacks, Function>} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n  const result = callbacks[name].call(ctx, arg);\n\n  if (typeof result === 'undefined') {\n    return defaultCallbacks[name].call(ctx, arg);\n  }\n\n  return result;\n}\n\nexport class Tooltip extends Element {\n\n  /**\n   * @namespace Chart.Tooltip.positioners\n   */\n  static positioners = positioners;\n\n  constructor(config) {\n    super();\n\n    this.opacity = 0;\n    this._active = [];\n    this._eventPosition = undefined;\n    this._size = undefined;\n    this._cachedAnimations = undefined;\n    this._tooltipItems = [];\n    this.$animations = undefined;\n    this.$context = undefined;\n    this.chart = config.chart;\n    this.options = config.options;\n    this.dataPoints = undefined;\n    this.title = undefined;\n    this.beforeBody = undefined;\n    this.body = undefined;\n    this.afterBody = undefined;\n    this.footer = undefined;\n    this.xAlign = undefined;\n    this.yAlign = undefined;\n    this.x = undefined;\n    this.y = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this.caretX = undefined;\n    this.caretY = undefined;\n    // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n    // and `labelTextColors` to create a single variable\n    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n\n  /**\n\t * @private\n\t */\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n\n    if (cached) {\n      return cached;\n    }\n\n    const chart = this.chart;\n    const options = this.options.setContext(this.getContext());\n    const opts = options.enabled && chart.options.animation && options.animations;\n    const animations = new Animations(this.chart, opts);\n    if (opts._cacheable) {\n      this._cachedAnimations = Object.freeze(animations);\n    }\n\n    return animations;\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n\n  getTitle(context, options) {\n    const {callbacks} = options;\n\n    const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n    const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n    const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n    return lines;\n  }\n\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(\n      invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n    );\n  }\n\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\n\n    each(tooltipItems, (context) => {\n      const bodyItem = {\n        before: [],\n        lines: [],\n        after: []\n      };\n      const scoped = overrideCallbacks(callbacks, context);\n      pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n      pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n      bodyItems.push(bodyItem);\n    });\n\n    return bodyItems;\n  }\n\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(\n      invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n    );\n  }\n\n  // Get the footer and beforeFooter and afterFooter lines\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n\n    const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n    const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n    const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n    return lines;\n  }\n\n  /**\n\t * @private\n\t */\n  _createItems(options) {\n    const active = this._active;\n    const data = this.chart.data;\n    const labelColors = [];\n    const labelPointStyles = [];\n    const labelTextColors = [];\n    let tooltipItems = [];\n    let i, len;\n\n    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n\n    // If the user provided a filter function, use it to modify the tooltip items\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n\n    // If the user provided a sorting function, use it to modify the tooltip items\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n\n    // Determine colors for boxes\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n      labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n      labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n    });\n\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\n  }\n\n  update(changed, replay) {\n    const options = this.options.setContext(this.getContext());\n    const active = this._active;\n    let properties;\n    let tooltipItems = [];\n\n    if (!active.length) {\n      if (this.opacity !== 0) {\n        properties = {\n          opacity: 0\n        };\n      }\n    } else {\n      const position = positioners[options.position].call(this, active, this._eventPosition);\n      tooltipItems = this._createItems(options);\n\n      this.title = this.getTitle(tooltipItems, options);\n      this.beforeBody = this.getBeforeBody(tooltipItems, options);\n      this.body = this.getBody(tooltipItems, options);\n      this.afterBody = this.getAfterBody(tooltipItems, options);\n      this.footer = this.getFooter(tooltipItems, options);\n\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, size);\n      const alignment = determineAlignment(this.chart, options, positionAndSize);\n      const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\n\n      properties = {\n        opacity: 1,\n        x: backgroundPoint.x,\n        y: backgroundPoint.y,\n        width: size.width,\n        height: size.height,\n        caretX: position.x,\n        caretY: position.y\n      };\n    }\n\n    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\n  }\n\n  getCaretPosition(tooltipPoint, size, options) {\n    const {xAlign, yAlign} = this;\n    const {caretSize, cornerRadius} = options;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n    const {x: ptX, y: ptY} = tooltipPoint;\n    const {width, height} = size;\n    let x1, x2, x3, y1, y2, y3;\n\n    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n\n        // Left draws bottom -> top, this y1 is on the bottom\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n\n        // Right draws top -> bottom, thus y1 is on the top\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\n      }\n\n      x3 = x1;\n    } else {\n      if (xAlign === 'left') {\n        x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n      } else if (xAlign === 'right') {\n        x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n      } else {\n        x2 = this.caretX;\n      }\n\n      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n\n        // Top draws left -> right, thus x1 is on the left\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n\n        // Bottom draws right -> left, thus x1 is on the right\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n      pt.x = getAlignedX(this, options.titleAlign, options);\n\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\n\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n        pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n        }\n      }\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColor = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth} = options;\n    const bodyFont = toFont(options.bodyFont);\n    const colorX = getAlignedX(this, 'left', options);\n    const rtlColorX = rtlHelper.x(colorX);\n    const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n    const colorY = pt.y + yOffSet;\n\n    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      // Recalculate x and y for drawPoint() because its expecting\n      // x and y to be center of figure (instead of top left)\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n\n      // Fill the point with white so that colours merge nicely if the opacity is < 1\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n\n      // Draw the point\n      ctx.strokeStyle = labelColor.borderColor;\n      ctx.fillStyle = labelColor.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      // Border\n      ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n      ctx.strokeStyle = labelColor.borderColor;\n      ctx.setLineDash(labelColor.borderDash || []);\n      ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n      // Fill a white rect so that colours merge nicely if the opacity is < 1\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n      const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        ctx.fillStyle = options.multiKeyBackground;\n        addRoundedRectPath(ctx, {\n          x: outerX,\n          y: colorY,\n          w: boxWidth,\n          h: boxHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n        ctx.stroke();\n\n        // Inner square\n        ctx.fillStyle = labelColor.backgroundColor;\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: innerX,\n          y: colorY + 1,\n          w: boxWidth - 2,\n          h: boxHeight - 2,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        // Normal rect\n        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        // Inner square\n        ctx.fillStyle = labelColor.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n\n    // restore fillStyle\n    ctx.fillStyle = this.labelTextColors[i];\n  }\n\n  drawBody(pt, ctx, options) {\n    const {body} = this;\n    const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    let bodyLineHeight = bodyFont.lineHeight;\n    let xLinePadding = 0;\n\n    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n    const fillLineOfText = function(line) {\n      ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n      pt.y += bodyLineHeight + bodySpacing;\n    };\n\n    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n    // Before body lines\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n\n    // Draw body lines now\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n\n      lines = bodyItem.lines;\n      // Draw Legend-like boxes if needed\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        // Reset for any lines that don't include colorbox\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n\n      each(bodyItem.after, fillLineOfText);\n    }\n\n    // Reset back to 0 for after body\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n\n    // After body lines\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing; // Remove last body spacing\n  }\n\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n\n      footerFont = toFont(options.footerFont);\n\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\n\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n        pt.y += footerFont.lineHeight + options.footerSpacing;\n      }\n    }\n  }\n\n  drawBackground(pt, ctx, tooltipSize, options) {\n    const {xAlign, yAlign} = this;\n    const {x, y} = pt;\n    const {width, height} = tooltipSize;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n\n    ctx.beginPath();\n    ctx.moveTo(x + topLeft, y);\n    if (yAlign === 'top') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width - topRight, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n    if (yAlign === 'center' && xAlign === 'right') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width, y + height - bottomRight);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n    if (yAlign === 'bottom') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + bottomLeft, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n    if (yAlign === 'center' && xAlign === 'left') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x, y + topLeft);\n    ctx.quadraticCurveTo(x, y, x + topLeft, y);\n    ctx.closePath();\n\n    ctx.fill();\n\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\n\n  /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n  _updateAnimationTarget(options) {\n    const chart = this.chart;\n    const anims = this.$animations;\n    const animX = anims && anims.x;\n    const animY = anims && anims.y;\n    if (animX || animY) {\n      const position = positioners[options.position].call(this, this._active, this._eventPosition);\n      if (!position) {\n        return;\n      }\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, this._size);\n      const alignment = determineAlignment(chart, options, positionAndSize);\n      const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n      if (animX._to !== point.x || animY._to !== point.y) {\n        this.xAlign = alignment.xAlign;\n        this.yAlign = alignment.yAlign;\n        this.width = size.width;\n        this.height = size.height;\n        this.caretX = position.x;\n        this.caretY = position.y;\n        this._resolveAnimations().update(this, point);\n      }\n    }\n  }\n\n  /**\n   * Determine if the tooltip will draw anything\n   * @returns {boolean} True if the tooltip will render\n   */\n  _willRender() {\n    return !!this.opacity;\n  }\n\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n\n    if (!opacity) {\n      return;\n    }\n\n    this._updateAnimationTarget(options);\n\n    const tooltipSize = {\n      width: this.width,\n      height: this.height\n    };\n    const pt = {\n      x: this.x,\n      y: this.y\n    };\n\n    // IE11/Edge does not like very small opacities, so snap to 0\n    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n    const padding = toPadding(options.padding);\n\n    // Truthy/falsey value for empty tooltip\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n\n      // Draw Background\n      this.drawBackground(pt, ctx, tooltipSize, options);\n\n      overrideTextDirection(ctx, options.textDirection);\n\n      pt.y += padding.top;\n\n      // Titles\n      this.drawTitle(pt, ctx, options);\n\n      // Body\n      this.drawBody(pt, ctx, options);\n\n      // Footer\n      this.drawFooter(pt, ctx, options);\n\n      restoreTextDirection(ctx, options.textDirection);\n\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n  getActiveElements() {\n    return this._active || [];\n  }\n\n  /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\n      }\n\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(lastActive, active);\n    const positionChanged = this._positionChanged(active, eventPosition);\n\n    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n    // When there are multiple items shown, but the tooltip position is nearest mode\n    // an update may need to be made because our position may have changed even though\n    // the items are the same as before.\n    const positionChanged = this._positionChanged(active, e);\n\n    // Remember Last Actives\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n    // Only handle target event on tooltip change\n    if (changed) {\n      this._active = active;\n\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n\n        this.update(true, replay);\n      }\n    }\n\n    return changed;\n  }\n\n  /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n\n    if (e.type === 'mouseout') {\n      return [];\n    }\n\n    if (!inChartArea) {\n      // Let user control the active elements outside chartArea. Eg. using Legend.\n      // But make sure that active elements are still valid.\n      return lastActive.filter(i =>\n        this.chart.data.datasets[i.datasetIndex] &&\n        this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n      );\n    }\n\n    // Find Active Elements for tooltips\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n    if (options.reverse) {\n      active.reverse();\n    }\n\n    return active;\n  }\n\n  /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n  _positionChanged(active, e) {\n    const {caretX, caretY, options} = this;\n    const position = positioners[options.position].call(this, active, e);\n    return position !== false && (caretX !== position.x || caretY !== position.y);\n  }\n}\n\nexport default {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n\n      if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n        return;\n      }\n\n      tooltip.draw(chart.ctx);\n\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      // If the event is replayed from `update`, we should evaluate with the final positions.\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        // notify chart about the change, so it will render\n        args.changed = true;\n      }\n    }\n  },\n\n  defaults: {\n    enabled: true,\n    external: null,\n    position: 'average',\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    titleColor: '#fff',\n    titleFont: {\n      weight: 'bold',\n    },\n    titleSpacing: 2,\n    titleMarginBottom: 6,\n    titleAlign: 'left',\n    bodyColor: '#fff',\n    bodySpacing: 2,\n    bodyFont: {\n    },\n    bodyAlign: 'left',\n    footerColor: '#fff',\n    footerSpacing: 2,\n    footerMarginTop: 6,\n    footerFont: {\n      weight: 'bold',\n    },\n    footerAlign: 'left',\n    padding: 6,\n    caretPadding: 2,\n    caretSize: 5,\n    cornerRadius: 6,\n    boxHeight: (ctx, opts) => opts.bodyFont.size,\n    boxWidth: (ctx, opts) => opts.bodyFont.size,\n    multiKeyBackground: '#fff',\n    displayColors: true,\n    boxPadding: 0,\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    animation: {\n      duration: 400,\n      easing: 'easeOutQuart',\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n      },\n      opacity: {\n        easing: 'linear',\n        duration: 200\n      }\n    },\n    callbacks: defaultCallbacks\n  },\n\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\n  },\n\n  descriptors: {\n    _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n    _indexable: false,\n    callbacks: {\n      _scriptable: false,\n      _indexable: false,\n    },\n    animation: {\n      _fallback: false\n    },\n    animations: {\n      _fallback: 'animation'\n    }\n  },\n\n  // Resolve additionally from `interaction` options and defaults.\n  additionalOptionScopes: ['interaction']\n};\n", "import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n  if (typeof raw === 'string') {\n    index = labels.push(raw) - 1;\n    addedLabels.unshift({index, label: raw});\n  } else if (isNaN(raw)) {\n    index = null;\n  }\n  return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n  const first = labels.indexOf(raw);\n  if (first === -1) {\n    return addIfString(labels, raw, index, addedLabels);\n  }\n  const last = labels.lastIndexOf(raw);\n  return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n  const labels = this.getLabels();\n\n  if (value >= 0 && value < labels.length) {\n    return labels[value];\n  }\n  return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n  static id = 'category';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: _getLabelForValue\n    }\n  };\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\n  }\n\n  init(scaleOptions) {\n    const added = this._addedLabels;\n    if (added.length) {\n      const labels = this.getLabels();\n      for (const {index, label} of added) {\n        if (labels[index] === label) {\n          labels.splice(index, 1);\n        }\n      }\n      this._addedLabels = [];\n    }\n    super.init(scaleOptions);\n  }\n\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    const labels = this.getLabels();\n    index = isFinite(index) && labels[index] === raw ? index\n      : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n    return validIndex(index, labels.length - 1);\n  }\n\n  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\n\n    if (this.options.bounds === 'ticks') {\n      if (!minDefined) {\n        min = 0;\n      }\n      if (!maxDefined) {\n        max = this.getLabels().length - 1;\n      }\n    }\n\n    this.min = min;\n    this.max = max;\n  }\n\n  buildTicks() {\n    const min = this.min;\n    const max = this.max;\n    const offset = this.options.offset;\n    const ticks = [];\n    let labels = this.getLabels();\n\n    // If we are viewing some subset of labels, slice the original array\n    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n\n  getLabelForValue(value) {\n    return _getLabelForValue.call(this, value);\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    super.configure();\n\n    if (!this.isHorizontal()) {\n      // For backward compatibility, vertical category scale reverse is inverted.\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n\n  // Used to get data value locations. Value can either be an index or a numerical value\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n\n  // Must override base implementation because it calls getPixelForValue\n  // and category scale can have duplicate values\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n\n  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n\n  getBasePixel() {\n    return this.bottom;\n  }\n}\n", "import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n *    if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n *    Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n *    spacing = (max - min) / count\n *    Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n *    spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n  const ticks = [];\n  // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n  // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n  // for details.\n\n  const MIN_SPACING = 1e-14;\n  const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n  const unit = step || 1;\n  const maxSpaces = maxTicks - 1;\n  const {min: rmin, max: rmax} = dataRange;\n  const minDefined = !isNullOrUndef(min);\n  const maxDefined = !isNullOrUndef(max);\n  const countDefined = !isNullOrUndef(count);\n  const minSpacing = (rmax - rmin) / (maxDigits + 1);\n  let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n  let factor, niceMin, niceMax, numSpaces;\n\n  // Beyond MIN_SPACING floating point numbers being to lose precision\n  // such that we can't do the math necessary to generate ticks\n  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n\n  if (!isNullOrUndef(precision)) {\n    // If the user specified a precision, round to that number of decimal places\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\n  }\n\n  if (bounds === 'ticks') {\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing;\n  } else {\n    niceMin = rmin;\n    niceMax = rmax;\n  }\n\n  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n    // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n    // spacing = step;\n    // numSpaces = (max - min) / spacing;\n    // Note that we round here to handle the case where almostWhole translated an FP error\n    numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n    spacing = (max - min) / numSpaces;\n    niceMin = min;\n    niceMax = max;\n  } else if (countDefined) {\n    // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n    // Sometimes these are no-ops, but it makes the code a lot clearer\n    // and when a user defined range is specified, we want the correct ticks\n    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    // Case 4\n    numSpaces = (niceMax - niceMin) / spacing;\n\n    // If very close to our rounded value, use it.\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\n\n  // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n  // until this point\n  const decimalPlaces = Math.max(\n    _decimalPlaces(spacing),\n    _decimalPlaces(niceMin)\n  );\n  factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n  niceMin = Math.round(niceMin * factor) / factor;\n  niceMax = Math.round(niceMax * factor) / factor;\n\n  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n\n      if (niceMin < min) {\n        j++; // Skip niceMin\n      }\n      // If the next nice tick is close to min, skip it\n      if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n        j++;\n      }\n    } else if (niceMin < min) {\n      j++;\n    }\n  }\n\n  for (; j < numSpaces; ++j) {\n    const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n    if (maxDefined && tickValue > max) {\n      break;\n    }\n    ticks.push({value: tickValue});\n  }\n\n  if (maxDefined && includeBounds && niceMax !== max) {\n    // If the previous tick is too close to max, replace it with max, else add max\n    if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n      ticks[ticks.length - 1].value = max;\n    } else {\n      ticks.push({value: max});\n    }\n  } else if (!maxDefined || niceMax === max) {\n    ticks.push({value: niceMax});\n  }\n\n  return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n  const rad = toRadians(minRotation);\n  const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n  const length = 0.75 * minSpacing * ('' + value).length;\n  return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.start = undefined;\n    /** @type {number} */\n    this.end = undefined;\n    /** @type {number} */\n    this._startValue = undefined;\n    /** @type {number} */\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n\n    return +raw;\n  }\n\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n\n    if (min === max) {\n      let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n      setMax(max + offset);\n\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    // eslint-disable-next-line prefer-const\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\n\n    if (stepSize) {\n      maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n      if (maxTicks > 1000) {\n        console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n        maxTicks = 1000;\n      }\n    } else {\n      maxTicks = this.computeTickLimit();\n      maxTicksLimit = maxTicksLimit || 11;\n    }\n\n    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n\n    return maxTicks;\n  }\n\n  /**\n\t * @protected\n\t */\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n\n    // Figure out what the max number of ticks we can support it is based on the size of\n    // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n    // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n    // the graph. Make sure we always have at least 2 ticks\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\n\n    const numericGeneratorOptions = {\n      maxTicks,\n      bounds: opts.bounds,\n      min: opts.min,\n      max: opts.max,\n      precision: tickOpts.precision,\n      step: tickOpts.stepSize,\n      count: tickOpts.count,\n      maxDigits: this._maxDigits(),\n      horizontal: this.isHorizontal(),\n      minRotation: tickOpts.minRotation || 0,\n      includeBounds: tickOpts.includeBounds !== false\n    };\n    const dataRange = this._range || this;\n    const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n    // At this point, we need to update our max and min given the tick values,\n    // since we probably have expanded the range of the scale\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n\n    if (opts.reverse) {\n      ticks.reverse();\n\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n\n    return ticks;\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n\n    super.configure();\n\n    if (this.options.offset && ticks.length) {\n      const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n      start -= offset;\n      end += offset;\n    }\n    this._startValue = start;\n    this._endValue = end;\n    this._valueRange = end - start;\n  }\n\n  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n", "import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n  static id = 'linear';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: Ticks.formatters.numeric\n    }\n  };\n\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n\n    this.min = isFinite(min) ? min : 0;\n    this.max = isFinite(max) ? max : 1;\n\n    // Common base implementation to handle min, max, beginAtZero\n    this.handleTickRangeOptions();\n  }\n\n  /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n  computeTickLimit() {\n    const horizontal = this.isHorizontal();\n    const length = horizontal ? this.width : this.height;\n    const minRotation = toRadians(this.options.ticks.minRotation);\n    const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n    const tickFont = this._resolveTickFontOptions(0);\n    return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n  }\n\n  // Utils\n  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\n", "import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n  return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n  const rangeStep = Math.pow(10, rangeExp);\n  const start = Math.floor(min / rangeStep);\n  const end = Math.ceil(max / rangeStep);\n  return end - start;\n}\n\nfunction startExp(min, max) {\n  const range = max - min;\n  let rangeExp = log10Floor(range);\n  while (steps(min, max, rangeExp) > 10) {\n    rangeExp++;\n  }\n  while (steps(min, max, rangeExp) < 10) {\n    rangeExp--;\n  }\n  return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n  min = finiteOrDefault(generationOptions.min, min);\n  const ticks = [];\n  const minExp = log10Floor(min);\n  let exp = startExp(min, max);\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  const stepSize = Math.pow(10, exp);\n  const base = minExp > exp ? Math.pow(10, minExp) : 0;\n  const start = Math.round((min - base) * precision) / precision;\n  const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n  let significand = Math.floor((start - offset) / Math.pow(10, exp));\n  let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n  while (value < max) {\n    ticks.push({value, major: isMajor(value), significand});\n    if (significand >= 10) {\n      significand = significand < 15 ? 15 : 20;\n    } else {\n      significand++;\n    }\n    if (significand >= 20) {\n      exp++;\n      significand = 2;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n  }\n  const lastTick = finiteOrDefault(generationOptions.max, value);\n  ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n  return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n  static id = 'logarithmic';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: Ticks.formatters.logarithmic,\n      major: {\n        enabled: true\n      }\n    }\n  };\n\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.start = undefined;\n    /** @type {number} */\n    this.end = undefined;\n    /** @type {number} */\n    this._startValue = undefined;\n    this._valueRange = 0;\n  }\n\n  parse(raw, index) {\n    const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n    if (value === 0) {\n      this._zero = true;\n      return undefined;\n    }\n    return isFinite(value) && value > 0 ? value : null;\n  }\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n\n    this.min = isFinite(min) ? Math.max(0, min) : null;\n    this.max = isFinite(max) ? Math.max(0, max) : null;\n\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n\n    // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n    // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n    if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n      this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n    }\n\n    this.handleTickRangeOptions();\n  }\n\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n\n    if (min === max) {\n      if (min <= 0) { // includes null\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(changeExponent(min, -1));\n        setMax(changeExponent(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(changeExponent(max, -1));\n    }\n    if (max <= 0) {\n\n      setMax(changeExponent(min, +1));\n    }\n\n    this.min = min;\n    this.max = max;\n  }\n\n  buildTicks() {\n    const opts = this.options;\n\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n\n    // At this point, we need to update our max and min given the tick values,\n    // since we probably have expanded the range of the scale\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n\n    if (opts.reverse) {\n      ticks.reverse();\n\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n\n    return ticks;\n  }\n\n  /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    const start = this.min;\n\n    super.configure();\n\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\n  }\n\n  getPixelForValue(value) {\n    if (value === undefined || value === 0) {\n      value = this.min;\n    }\n    if (value === null || isNaN(value)) {\n      return NaN;\n    }\n    return this.getPixelForDecimal(value === this.min\n      ? 0\n      : (log10(value) - this._startValue) / this._valueRange);\n  }\n\n  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\n", "import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\n\n  if (tickOpts.display && opts.display) {\n    const padding = toPadding(tickOpts.backdropPadding);\n    return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n  }\n  return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n  label = isArray(label) ? label : [label];\n  return {\n    w: _longestText(ctx, font.string, label),\n    h: label.length * font.lineHeight\n  };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n  if (angle === min || angle === max) {\n    return {\n      start: pos - (size / 2),\n      end: pos + (size / 2)\n    };\n  } else if (angle < min || angle > max) {\n    return {\n      start: pos - size,\n      end: pos\n    };\n  }\n\n  return {\n    start: pos,\n    end: pos + size\n  };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n  // Right, this is really confusing and there is a lot of maths going on here\n  // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n  //\n  // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n  //\n  // Solution:\n  //\n  // We assume the radius of the polygon is half the size of the canvas at first\n  // at each index we check if the text overlaps.\n  //\n  // Where it does, we store that angle and that index.\n  //\n  // After finding the largest index and angle we calculate how much we need to remove\n  // from the shape radius to move the point inwards by that x.\n  //\n  // We average the left and right distances to get the maximum shape radius that can fit in the box\n  // along with labels.\n  //\n  // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n  // on each side, removing that from the size, halving it and adding the left x protrusion width.\n  //\n  // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n  // and position it in the most space efficient manner\n  //\n  // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n  // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n  // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n  const orig = {\n    l: scale.left + scale._padding.left,\n    r: scale.right - scale._padding.right,\n    t: scale.top + scale._padding.top,\n    b: scale.bottom - scale._padding.bottom\n  };\n  const limits = Object.assign({}, orig);\n  const labelSizes = [];\n  const padding = [];\n  const valueCount = scale._pointLabels.length;\n  const pointLabelOpts = scale.options.pointLabels;\n  const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n  for (let i = 0; i < valueCount; i++) {\n    const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n    padding[i] = opts.padding;\n    const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n    const plFont = toFont(opts.font);\n    const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n    labelSizes[i] = textSize;\n\n    const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n    const angle = Math.round(toDegrees(angleRadians));\n    const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n    const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n    updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n  }\n\n  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n\n  // Now that text size is determined, compute the full positions\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n  const sin = Math.abs(Math.sin(angle));\n  const cos = Math.abs(Math.cos(angle));\n  let x = 0;\n  let y = 0;\n  if (hLimits.start < orig.l) {\n    x = (orig.l - hLimits.start) / sin;\n    limits.l = Math.min(limits.l, orig.l - x);\n  } else if (hLimits.end > orig.r) {\n    x = (hLimits.end - orig.r) / sin;\n    limits.r = Math.max(limits.r, orig.r + x);\n  }\n  if (vLimits.start < orig.t) {\n    y = (orig.t - vLimits.start) / cos;\n    limits.t = Math.min(limits.t, orig.t - y);\n  } else if (vLimits.end > orig.b) {\n    y = (vLimits.end - orig.b) / cos;\n    limits.b = Math.max(limits.b, orig.b + y);\n  }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n  const outerDistance = scale.drawingArea;\n  const {extra, additionalAngle, padding, size} = itemOpts;\n  const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n  const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n  const y = yForAngle(pointLabelPosition.y, size.h, angle);\n  const textAlign = getTextAlignForAngle(angle);\n  const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n  return {\n    // if to draw or overlapped\n    visible: true,\n\n    // Text position\n    x: pointLabelPosition.x,\n    y,\n\n    // Text rendering data\n    textAlign,\n\n    // Bounding box\n    left,\n    top: y,\n    right: left + size.w,\n    bottom: y + size.h\n  };\n}\n\nfunction isNotOverlapped(item, area) {\n  if (!area) {\n    return true;\n  }\n  const {left, top, right, bottom} = item;\n  const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n    _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n  return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const {centerPointLabels, display} = opts.pointLabels;\n  const itemOpts = {\n    extra: getTickBackdropHeight(opts) / 2,\n    additionalAngle: centerPointLabels ? PI / valueCount : 0\n  };\n  let area;\n\n  for (let i = 0; i < valueCount; i++) {\n    itemOpts.padding = padding[i];\n    itemOpts.size = labelSizes[i];\n\n    const item = createPointLabelItem(scale, i, itemOpts);\n    items.push(item);\n    if (display === 'auto') {\n      item.visible = isNotOverlapped(item, area);\n      if (item.visible) {\n        area = item;\n      }\n    }\n  }\n  return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n\n  return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n  if (align === 'right') {\n    x -= w;\n  } else if (align === 'center') {\n    x -= (w / 2);\n  }\n  return x;\n}\n\nfunction yForAngle(y, h, angle) {\n  if (angle === 90 || angle === 270) {\n    y -= (h / 2);\n  } else if (angle > 270 || angle < 90) {\n    y -= h;\n  }\n  return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n  const {left, top, right, bottom} = item;\n  const {backdropColor} = opts;\n\n  if (!isNullOrUndef(backdropColor)) {\n    const borderRadius = toTRBLCorners(opts.borderRadius);\n    const padding = toPadding(opts.backdropPadding);\n    ctx.fillStyle = backdropColor;\n\n    const backdropLeft = left - padding.left;\n    const backdropTop = top - padding.top;\n    const backdropWidth = right - left + padding.width;\n    const backdropHeight = bottom - top + padding.height;\n\n    if (Object.values(borderRadius).some(v => v !== 0)) {\n      ctx.beginPath();\n      addRoundedRectPath(ctx, {\n        x: backdropLeft,\n        y: backdropTop,\n        w: backdropWidth,\n        h: backdropHeight,\n        radius: borderRadius,\n      });\n      ctx.fill();\n    } else {\n      ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n    }\n  }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const item = scale._pointLabelItems[i];\n    if (!item.visible) {\n      // overlapping\n      continue;\n    }\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    drawPointLabelBox(ctx, optsAtIndex, item);\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign} = item;\n\n    renderText(\n      ctx,\n      scale._pointLabels[i],\n      x,\n      y + (plFont.lineHeight / 2),\n      plFont,\n      {\n        color: optsAtIndex.color,\n        textAlign: textAlign,\n        textBaseline: 'middle'\n      }\n    );\n  }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    // Draw circular arcs between the points\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    // Draw straight lines connecting each index\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n\n  const {color, lineWidth} = gridLineOpts;\n\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(borderOpts.dash);\n  ctx.lineDashOffset = borderOpts.dashOffset;\n\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n  static id = 'radialLinear';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    display: true,\n\n    // Boolean - Whether to animate scaling the chart from the centre\n    animate: true,\n    position: 'chartArea',\n\n    angleLines: {\n      display: true,\n      lineWidth: 1,\n      borderDash: [],\n      borderDashOffset: 0.0\n    },\n\n    grid: {\n      circular: false\n    },\n\n    startAngle: 0,\n\n    // label settings\n    ticks: {\n      // Boolean - Show a backdrop to the scale label\n      showLabelBackdrop: true,\n\n      callback: Ticks.formatters.numeric\n    },\n\n    pointLabels: {\n      backdropColor: undefined,\n\n      // Number - The backdrop padding above & below the label in pixels\n      backdropPadding: 2,\n\n      // Boolean - if true, show point labels\n      display: true,\n\n      // Number - Point label font size in pixels\n      font: {\n        size: 10\n      },\n\n      // Function - Used to convert point labels\n      callback(label) {\n        return label;\n      },\n\n      // Number - Additionl padding between scale and pointLabel\n      padding: 5,\n\n      // Boolean - if true, center point labels to slices in polar chart\n      centerPointLabels: false\n    }\n  };\n\n  static defaultRoutes = {\n    'angleLines.color': 'borderColor',\n    'pointLabels.color': 'color',\n    'ticks.color': 'color'\n  };\n\n  static descriptors = {\n    angleLines: {\n      _fallback: 'grid'\n    }\n  };\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.xCenter = undefined;\n    /** @type {number} */\n    this.yCenter = undefined;\n    /** @type {number} */\n    this.drawingArea = undefined;\n    /** @type {string[]} */\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n\n  setDimensions() {\n    // Set the unconstrained dimension before label rotation\n    const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n    const w = this.width = this.maxWidth - padding.width;\n    const h = this.height = this.maxHeight - padding.height;\n    this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n    this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n    this.drawingArea = Math.floor(Math.min(w, h) / 2);\n  }\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n\n    this.min = isFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n    // Common base implementation to handle min, max, beginAtZero\n    this.handleTickRangeOptions();\n  }\n\n  /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n    // Point labels\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n\n  fit() {\n    const opts = this.options;\n\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\n    }\n  }\n\n  setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n    this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n    this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n    this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n  }\n\n  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\n\n    // Take into account half font size + the yPadding of the top value\n    const scalingFactor = this.drawingArea / (this.max - this.min);\n    if (this.options.reverse) {\n      return (this.max - value) * scalingFactor;\n    }\n    return (value - this.min) * scalingFactor;\n  }\n\n  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\n    }\n  }\n\n  getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n    const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n    return {\n      x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n      y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n      angle\n    };\n  }\n\n  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\n  }\n\n  getPointLabelPosition(index) {\n    const {left, top, right, bottom} = this._pointLabelItems[index];\n    return {\n      left,\n      top,\n      right,\n      bottom,\n    };\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBackground() {\n    const {backgroundColor, grid: {circular}} = this.options;\n    if (backgroundColor) {\n      const ctx = this.ctx;\n      ctx.save();\n      ctx.beginPath();\n      pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n      ctx.closePath();\n      ctx.fillStyle = backgroundColor;\n      ctx.fill();\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid, border} = opts;\n    const labelCount = this._pointLabels.length;\n\n    let i, offset, position;\n\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0 || (index === 0 && this.min < 0)) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const context = this.getContext(index);\n          const optsAtIndex = grid.setContext(context);\n          const optsAtIndexBorder = border.setContext(context);\n\n          drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n        }\n      });\n    }\n\n    if (angleLines.display) {\n      ctx.save();\n\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n\n        if (!lineWidth || !color) {\n          continue;\n        }\n\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n        offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n        position = this.getPointPosition(i, offset);\n        ctx.beginPath();\n        ctx.moveTo(this.xCenter, this.yCenter);\n        ctx.lineTo(position.x, position.y);\n        ctx.stroke();\n      }\n\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBorder() {}\n\n  /**\n\t * @protected\n\t */\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n\n    if (!tickOpts.display) {\n      return;\n    }\n\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n\n    this.ticks.forEach((tick, index) => {\n      if ((index === 0 && this.min >= 0) && !opts.reverse) {\n        return;\n      }\n\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\n\n        const padding = toPadding(optsAtIndex.backdropPadding);\n        ctx.fillRect(\n          -width / 2 - padding.left,\n          -offset - tickFont.size / 2 - padding.top,\n          width + padding.width,\n          tickFont.size + padding.height\n        );\n      }\n\n      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n        strokeColor: optsAtIndex.textStrokeColor,\n        strokeWidth: optsAtIndex.textStrokeWidth,\n      });\n    });\n\n    ctx.restore();\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {}\n}\n", "import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object<Unit, Interval>}\n */\nconst INTERVALS = {\n  millisecond: {common: true, size: 1, steps: 1000},\n  second: {common: true, size: 1000, steps: 60},\n  minute: {common: true, size: 60000, steps: 60},\n  hour: {common: true, size: 3600000, steps: 24},\n  day: {common: true, size: 86400000, steps: 30},\n  week: {common: false, size: 604800000, steps: 4},\n  month: {common: true, size: 2.628e9, steps: 12},\n  quarter: {common: false, size: 7.884e9, steps: 4},\n  year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n  return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n\n  // Only parse if it's not a timestamp already\n  if (!isFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, /** @type {Unit} */ (parser))\n      : adapter.parse(value);\n  }\n\n  if (value === null) {\n    return null;\n  }\n\n  if (round) {\n    value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n      ? adapter.startOf(value, 'isoWeek', isoWeekday)\n      : adapter.startOf(value, round);\n  }\n\n  return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\n\n  for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n    const interval = INTERVALS[UNITS[i]];\n    const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n\n  return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n  for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n    const unit = UNITS[i];\n    if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n      return unit;\n    }\n  }\n\n  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n  for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n    if (INTERVALS[UNITS[i]].common) {\n      return UNITS[i];\n    }\n  }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n  if (!timestamps) {\n    ticks[time] = true;\n  } else if (timestamps.length) {\n    const {lo, hi} = _lookup(timestamps, time);\n    const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n    ticks[timestamp] = true;\n  }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n  const adapter = scale._adapter;\n  const first = +adapter.startOf(ticks[0].value, majorUnit);\n  const last = ticks[ticks.length - 1].value;\n  let major, index;\n\n  for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n    index = map[major];\n    if (index >= 0) {\n      ticks[index].major = true;\n    }\n  }\n  return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  /** @type {Object<number,object>} */\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n\n  // We set the major ticks separately from the above loop because calling startOf for every tick\n  // is expensive when there is a large number of ticks\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n  static id = 'time';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    /**\n     * Scale boundary strategy (bypassed by min/max time options)\n     * - `data`: make sure data are fully visible, ticks outside are removed\n     * - `ticks`: make sure ticks are fully visible, data outside are truncated\n     * @see https://github.com/chartjs/Chart.js/pull/4556\n     * @since 2.7.0\n     */\n    bounds: 'data',\n\n    adapters: {},\n    time: {\n      parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n      unit: false, // false == automatic or override with week, month, year, etc.\n      round: false, // none, or override with week, month, year, etc.\n      isoWeekday: false, // override week start day\n      minUnit: 'millisecond',\n      displayFormats: {}\n    },\n    ticks: {\n      /**\n       * Ticks generation input values:\n       * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n       * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n       * - 'labels': generates ticks from user given `data.labels` values ONLY.\n       * @see https://github.com/chartjs/Chart.js/pull/4507\n       * @since 2.7.0\n       */\n      source: 'auto',\n\n      callback: false,\n\n      major: {\n        enabled: false\n      }\n    }\n  };\n\n  /**\n\t * @param {object} props\n\t */\n  constructor(props) {\n    super(props);\n\n    /** @type {{data: number[], labels: number[], all: number[]}} */\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n\n    /** @type {Unit} */\n    this._unit = 'day';\n    /** @type {Unit=} */\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n\n  init(scaleOpts, opts = {}) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    /** @type {DateAdapter} */\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n    adapter.init(opts);\n\n    // Backward compatibility: before introducing adapter, `displayFormats` was\n    // supposed to contain *all* unit/string pairs but this can't be resolved\n    // when loading the scale (adapters are loaded afterward), so let's populate\n    // missing formats on update\n    mergeIf(time.displayFormats, adapter.formats());\n\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n\n    super.init(scaleOpts);\n\n    this._normalized = opts.normalized;\n  }\n\n  /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    // eslint-disable-next-line prefer-const\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n    /**\n\t\t * @param {object} bounds\n\t\t */\n    function _applyBounds(bounds) {\n      if (!minDefined && !isNaN(bounds.min)) {\n        min = Math.min(min, bounds.min);\n      }\n      if (!maxDefined && !isNaN(bounds.max)) {\n        max = Math.max(max, bounds.max);\n      }\n    }\n\n    // If we have user provided `min` and `max` labels / data bounds can be ignored\n    if (!minDefined || !maxDefined) {\n      // Labels are always considered, when user did not force bounds\n      _applyBounds(this._getLabelBounds());\n\n      // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n      // data bounds are ignored (and don't need to be determined)\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n\n    min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n    // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n\n  /**\n\t * @private\n\t */\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\n\n  /**\n\t * @return {object[]}\n\t */\n  buildTicks() {\n    const options = this.options;\n    const timeOpts = options.time;\n    const tickOpts = options.ticks;\n    const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n\n    const min = this.min;\n    const max = this.max;\n\n    const ticks = _filterBetween(timestamps, min, max);\n\n    // PRIVATE\n    // determineUnitForFormatting relies on the number of ticks so we don't use it when\n    // autoSkip is enabled because we don't yet know what the final number of ticks will be\n    this._unit = timeOpts.unit || (tickOpts.autoSkip\n      ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n      : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n    this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n      : determineMajorUnit(this._unit);\n    this.initOffsets(timestamps);\n\n    if (options.reverse) {\n      ticks.reverse();\n    }\n\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n\n  afterAutoSkip() {\n    // Offsets for bar charts need to be handled with the auto skipped\n    // ticks. Once ticks have been skipped, we re-compute the offsets.\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n\n  /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n  initOffsets(timestamps = []) {\n    let start = 0;\n    let end = 0;\n    let first, last;\n\n    if (this.options.offset && timestamps.length) {\n      first = this.getDecimalForValue(timestamps[0]);\n      if (timestamps.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n      }\n      last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n      if (timestamps.length === 1) {\n        end = last;\n      } else {\n        end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n      }\n    }\n    const limit = timestamps.length < 3 ? 0.5 : 0.25;\n    start = _limitValue(start, 0, limit);\n    end = _limitValue(end, 0, limit);\n\n    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\n\n  /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n  _generate() {\n    const adapter = this._adapter;\n    const min = this.min;\n    const max = this.max;\n    const options = this.options;\n    const timeOpts = options.time;\n    // @ts-ignore\n    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n    const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    const hasWeekday = isNumber(weekday) || weekday === true;\n    const ticks = {};\n    let first = min;\n    let time, count;\n\n    // For 'week' unit, handle the first day of week option\n    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n\n    // Align first ticks on unit\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n    // Prevent browser from freezing in case user options request millions of milliseconds\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n    }\n\n    const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n    for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n      addTick(ticks, time, timestamps);\n    }\n\n    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n\n    // @ts-ignore\n    return Object.keys(ticks).sort(sorter).map(x => +x);\n  }\n\n  /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n\n  /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n  format(value, format) {\n    const options = this.options;\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const fmt = format || formats[unit];\n    return this._adapter.format(value, fmt);\n  }\n\n  /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\n    const formatter = options.ticks.callback;\n\n    if (formatter) {\n      return call(formatter, [time, index, ticks], this);\n    }\n\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const majorUnit = this._majorUnit;\n    const minorFormat = unit && formats[unit];\n    const majorFormat = majorUnit && formats[majorUnit];\n    const tick = ticks[index];\n    const major = majorUnit && majorFormat && tick && tick.major;\n\n    return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n  }\n\n  /**\n\t * @param {object[]} ticks\n\t */\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\n\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      tick.label = this._tickFormatFunction(tick.value, i, ticks);\n    }\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getPixelForValue(value) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForValue(value);\n    return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return this.min + pos * (this.max - this.min);\n  }\n\n  /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n  _getLabelSize(label) {\n    const ticksOpts = this.options.ticks;\n    const tickLabelWidth = this.ctx.measureText(label).width;\n    const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n    const cosRotation = Math.cos(angle);\n    const sinRotation = Math.sin(angle);\n    const tickFontSize = this._resolveTickFontOptions(0).size;\n\n    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n\n  /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\n\n    // pick the longest format (milliseconds) for guesstimation\n    const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n    const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n    const size = this._getLabelSize(exampleLabel);\n    // subtract 1 - if offset then there's one less label than tick\n    // if not offset then one half label padding is added to each end leaving room for one less label\n    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n\n  /**\n\t * @protected\n\t */\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const metas = this.getMatchingVisibleMetas();\n\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n\n    return (this._cache.data = this.normalize(timestamps));\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const labels = this.getLabels();\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      timestamps.push(parse(this, labels[i]));\n    }\n\n    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n\n  /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n  normalize(values) {\n    // It seems to be somewhat faster to do sorting first\n    return _arrayUnique(values.sort(sorter));\n  }\n}\n", "import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n  let lo = 0;\n  let hi = table.length - 1;\n  let prevSource, nextSource, prevTarget, nextTarget;\n  if (reverse) {\n    if (val >= table[lo].pos && val <= table[hi].pos) {\n      ({lo, hi} = _lookupByKey(table, 'pos', val));\n    }\n    ({pos: prevSource, time: prevTarget} = table[lo]);\n    ({pos: nextSource, time: nextTarget} = table[hi]);\n  } else {\n    if (val >= table[lo].time && val <= table[hi].time) {\n      ({lo, hi} = _lookupByKey(table, 'time', val));\n    }\n    ({time: prevSource, pos: prevTarget} = table[lo]);\n    ({time: nextSource, pos: nextTarget} = table[hi]);\n  }\n\n  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n  static id = 'timeseries';\n\n  /**\n   * @type {any}\n   */\n  static defaults = TimeScale.defaults;\n\n  /**\n\t * @param {object} props\n\t */\n  constructor(props) {\n    super(props);\n\n    /** @type {object[]} */\n    this._table = [];\n    /** @type {number} */\n    this._minPos = undefined;\n    /** @type {number} */\n    this._tableRange = undefined;\n  }\n\n  /**\n\t * @protected\n\t */\n  initOffsets() {\n    const timestamps = this._getTimestampsForTable();\n    const table = this._table = this.buildLookupTable(timestamps);\n    this._minPos = interpolate(table, this.min);\n    this._tableRange = interpolate(table, this.max) - this._minPos;\n    super.initOffsets(timestamps);\n  }\n\n  /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\n\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n      if (curr >= min && curr <= max) {\n        items.push(curr);\n      }\n    }\n\n    if (items.length < 2) {\n      // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\n      ];\n    }\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i];\n\n      // only add points that breaks the scale linearity\n      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n\n  /**\n    * Generates all timestamps defined in the data.\n    * Important: this method can return ticks outside the min and max range, it's the\n    * responsibility of the calling code to clamp values if needed.\n    * @protected\n    */\n  _generate() {\n    const min = this.min;\n    const max = this.max;\n    let timestamps = super.getDataTimestamps();\n    if (!timestamps.includes(min) || !timestamps.length) {\n      timestamps.splice(0, 0, min);\n    }\n    if (!timestamps.includes(max) || timestamps.length === 1) {\n      timestamps.push(max);\n    }\n    return timestamps.sort((a, b) => a - b);\n  }\n\n  /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      // If combining labels and data (data might not contain all labels),\n      // we need to recheck uniqueness and sort\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n\n    return timestamps;\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n  }\n}\n\nexport default TimeSeriesScale;\n", "export * from './controllers/index.js';\nexport * from './core/index.js';\nexport * from './elements/index.js';\nexport * from './platform/index.js';\nexport * from './plugins/index.js';\nexport * from './scales/index.js';\n\nimport * as controllers from './controllers/index.js';\nimport * as elements from './elements/index.js';\nimport * as plugins from './plugins/index.js';\nimport * as scales from './scales/index.js';\n\nexport {\n  controllers,\n  elements,\n  plugins,\n  scales,\n};\n\nexport const registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n", "import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n", "/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n", "import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use constructor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   );\n * }\n */\nexport function constructFrom(date, value) {\n  if (typeof date === \"function\") return date(value);\n\n  if (date && typeof date === \"object\" && constructFromSymbol in date)\n    return date[constructFromSymbol](value);\n\n  if (date instanceof Date) return new date.constructor(value);\n\n  return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n  // [TODO] Get rid of `toDate` or `constructFrom`?\n  return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n  // If 0 days, no-op to avoid changing times in the hour before end of DST\n  if (!amount) return _date;\n\n  _date.setDate(_date.getDate() + amount);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return _date;\n  }\n  const dayOfMonth = _date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n  endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n  const daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    _date.setFullYear(\n      endOfDesiredMonth.getFullYear(),\n      endOfDesiredMonth.getMonth(),\n      dayOfMonth,\n    );\n    return _date;\n  }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\n */\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n  return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n", "import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n  return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n", "let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  _date.setDate(_date.getDate() - diff);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n", "import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n  return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n  const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (_date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (_date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n", "import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n  const _date = toDate(date);\n  const utcDate = new Date(\n    Date.UTC(\n      _date.getFullYear(),\n      _date.getMonth(),\n      _date.getDate(),\n      _date.getHours(),\n      _date.getMinutes(),\n      _date.getSeconds(),\n      _date.getMilliseconds(),\n    ),\n  );\n  utcDate.setUTCFullYear(_date.getFullYear());\n  return +date - +utcDate;\n}\n", "import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n  const normalize = constructFrom.bind(\n    null,\n    context || dates.find((date) => typeof date === \"object\"),\n  );\n  return dates.map(normalize);\n}\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n", "import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const laterStartOfDay = startOfDay(laterDate_);\n  const earlierStartOfDay = startOfDay(earlierDate_);\n\n  const laterTimestamp =\n    +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n  const earlierTimestamp =\n    +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n  // Round the number of days to the nearest integer because the number of\n  // milliseconds in a day is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n  const year = getISOWeekYear(date, options);\n  const fourthOfJanuary = constructFrom(options?.in || date, 0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n", "import { millisecondsInMinute } from \"./constants.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMinutes} function options.\n */\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n * @param options - An object with options\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport function addMinutes(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  _date.setTime(_date.getTime() + amount * millisecondsInMinute);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addMinutes;\n", "import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n  return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n", "import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link addSeconds} function options.\n */\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport function addSeconds(date, amount, options) {\n  return addMilliseconds(date, amount * 1000, options);\n}\n\n// Fallback for modularized imports:\nexport default addSeconds;\n", "import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n  return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n", "import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n  return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n *   new Date(1995, 6, 2),\n *   new Date(1987, 1, 11),\n *   new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * //   Wed Feb 11 1987 00:00:00,\n * //   Mon Jul 10 1989 00:00:00,\n * //   Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n  const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n  if (diff < 0) return -1;\n  else if (diff > 0) return 1;\n\n  // Return 0 if diff is 0; return NaN if diff is NaN\n  return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n", "/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n  return (\n    value instanceof Date ||\n    (typeof value === \"object\" &&\n      Object.prototype.toString.call(value) === \"[object Date]\")\n  );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n", "import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n  return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n *   new Date(2014, 8, 1),\n *   new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n  const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n  return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n *   new Date(2015, 1, 11),\n *   new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\n\n/**\n * The {@link differenceInDays} function options.\n */\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n *   new Date(2020, 5, 1),\n *   new Date(2020, 2, 1)\n * )\n * //=> 92\n */\nexport function differenceInDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const sign = compareLocalAsc(laterDate_, earlierDate_);\n  const difference = Math.abs(\n    differenceInCalendarDays(laterDate_, earlierDate_),\n  );\n\n  laterDate_.setDate(laterDate_.getDate() - sign * difference);\n\n  // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n  // If so, result must be decreased by 1 in absolute value\n  const isLastDayNotFull = Number(\n    compareLocalAsc(laterDate_, earlierDate_) === -sign,\n  );\n\n  const result = sign * (difference - isLastDayNotFull);\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}\n\n// Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(laterDate, earlierDate) {\n  const diff =\n    laterDate.getFullYear() - earlierDate.getFullYear() ||\n    laterDate.getMonth() - earlierDate.getMonth() ||\n    laterDate.getDate() - earlierDate.getDate() ||\n    laterDate.getHours() - earlierDate.getHours() ||\n    laterDate.getMinutes() - earlierDate.getMinutes() ||\n    laterDate.getSeconds() - earlierDate.getSeconds() ||\n    laterDate.getMilliseconds() - earlierDate.getMilliseconds();\n\n  if (diff < 0) return -1;\n  if (diff > 0) return 1;\n\n  // Return 0 if diff is 0; return NaN if diff is NaN\n  return diff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInDays;\n", "export function getRoundingMethod(method) {\n  return (number) => {\n    const round = method ? Math[method] : Math.trunc;\n    const result = round(number);\n    // Prevent negative zero\n    return result === 0 ? 0 : result;\n  };\n}\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link differenceInHours} function options.\n */\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n *   new Date(2014, 6, 2, 19, 0),\n *   new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport function differenceInHours(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  const diff = (+laterDate_ - +earlierDate_) / millisecondsInHour;\n  return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInHours;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n *   new Date(2014, 6, 2, 12, 30, 21, 700),\n *   new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n  return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { millisecondsInMinute } from \"./constants.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInMinutes} function options.\n */\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n *   new Date(2014, 6, 2, 12, 20, 0),\n *   new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n *   new Date(2000, 0, 1, 10, 0, 0),\n *   new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport function differenceInMinutes(dateLeft, dateRight, options) {\n  const diff =\n    differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n  return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMinutes;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  const month = _date.getMonth();\n  _date.setFullYear(_date.getFullYear(), month + 1, 0);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n", "import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n  const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    laterDate,\n    earlierDate,\n  );\n\n  const sign = compareAsc(workingLaterDate, earlierDate_);\n  const difference = Math.abs(\n    differenceInCalendarMonths(workingLaterDate, earlierDate_),\n  );\n\n  if (difference < 1) return 0;\n\n  if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n    workingLaterDate.setDate(30);\n\n  workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n  let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n  if (\n    isLastDayOfMonth(laterDate_) &&\n    difference === 1 &&\n    compareAsc(laterDate_, earlierDate_) === 1\n  ) {\n    isLastMonthNotFull = false;\n  }\n\n  const result = sign * (difference - +isLastMonthNotFull);\n  return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\n\n/**\n * The {@link differenceInQuarters} function options.\n */\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport function differenceInQuarters(laterDate, earlierDate, options) {\n  const diff = differenceInMonths(laterDate, earlierDate, options) / 3;\n  return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInQuarters;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n *   new Date(2014, 6, 2, 12, 30, 20, 0),\n *   new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n  const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n  return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n", "import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInDays } from \"./differenceInDays.js\";\n\n/**\n * The {@link differenceInWeeks} function options.\n */\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * @example\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n *   new Date(2020, 5, 1),\n *   new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport function differenceInWeeks(laterDate, earlierDate, options) {\n  const diff = differenceInDays(laterDate, earlierDate, options) / 7;\n  return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInWeeks;\n", "import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\n\n/**\n * The {@link differenceInYears} function options.\n */\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport function differenceInYears(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  // -1 if the left date is earlier than the right date\n  // 2023-12-31 - 2024-01-01 = -1\n  const sign = compareAsc(laterDate_, earlierDate_);\n\n  // First calculate the difference in calendar years\n  // 2024-01-01 - 2023-12-31 = 1 year\n  const diff = Math.abs(differenceInCalendarYears(laterDate_, earlierDate_));\n\n  // Now we need to calculate if the difference is full. To do that we set\n  // both dates to the same year and check if the both date's month and day\n  // form a full year.\n  laterDate_.setFullYear(1584);\n  earlierDate_.setFullYear(1584);\n\n  // For it to be true, when the later date is indeed later than the earlier date\n  // (2026-02-01 - 2023-12-10 = 3 years), the difference is full if\n  // the normalized later date is also later than the normalized earlier date.\n  // In our example, 1584-02-01 is earlier than 1584-12-10, so the difference\n  // is partial, hence we need to subtract 1 from the difference 3 - 1 = 2.\n  const partial = compareAsc(laterDate_, earlierDate_) === -sign;\n\n  const result = sign * (diff - +partial);\n\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInYears;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfQuarter} function options.\n */\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport function startOfQuarter(date, options) {\n  const _date = toDate(date, options?.in);\n  const currentMonth = _date.getMonth();\n  const month = currentMonth - (currentMonth % 3);\n  _date.setMonth(month, 1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfQuarter;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setDate(1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfYear} function options.\n */\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport function endOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n  _date.setFullYear(year + 1, 0, 0);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfYear;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setFullYear(date_.getFullYear(), 0, 1);\n  date_.setHours(0, 0, 0, 0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfHour} function options.\n */\n\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of an hour\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport function endOfHour(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setMinutes(59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfHour;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n  _date.setDate(_date.getDate() + diff);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMinute} function options.\n */\n\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone or the provided context.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a minute\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport function endOfMinute(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setSeconds(59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMinute;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfQuarter} function options.\n */\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfQuarter(date, options) {\n  const _date = toDate(date, options?.in);\n  const currentMonth = _date.getMonth();\n  const month = currentMonth - (currentMonth % 3) + 3;\n  _date.setMonth(month, 0);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfQuarter;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfSecond} function options.\n */\n\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone if no `in` option is specified.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a second\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport function endOfSecond(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setMilliseconds(999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfSecond;\n", "const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"less than a second\",\n    other: \"less than {{count}} seconds\",\n  },\n\n  xSeconds: {\n    one: \"1 second\",\n    other: \"{{count}} seconds\",\n  },\n\n  halfAMinute: \"half a minute\",\n\n  lessThanXMinutes: {\n    one: \"less than a minute\",\n    other: \"less than {{count}} minutes\",\n  },\n\n  xMinutes: {\n    one: \"1 minute\",\n    other: \"{{count}} minutes\",\n  },\n\n  aboutXHours: {\n    one: \"about 1 hour\",\n    other: \"about {{count}} hours\",\n  },\n\n  xHours: {\n    one: \"1 hour\",\n    other: \"{{count}} hours\",\n  },\n\n  xDays: {\n    one: \"1 day\",\n    other: \"{{count}} days\",\n  },\n\n  aboutXWeeks: {\n    one: \"about 1 week\",\n    other: \"about {{count}} weeks\",\n  },\n\n  xWeeks: {\n    one: \"1 week\",\n    other: \"{{count}} weeks\",\n  },\n\n  aboutXMonths: {\n    one: \"about 1 month\",\n    other: \"about {{count}} months\",\n  },\n\n  xMonths: {\n    one: \"1 month\",\n    other: \"{{count}} months\",\n  },\n\n  aboutXYears: {\n    one: \"about 1 year\",\n    other: \"about {{count}} years\",\n  },\n\n  xYears: {\n    one: \"1 year\",\n    other: \"{{count}} years\",\n  },\n\n  overXYears: {\n    one: \"over 1 year\",\n    other: \"over {{count}} years\",\n  },\n\n  almostXYears: {\n    one: \"almost 1 year\",\n    other: \"almost {{count}} years\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"in \" + result;\n    } else {\n      return result + \" ago\";\n    }\n  }\n\n  return result;\n};\n", "export function buildFormatLongFn(args) {\n  return (options = {}) => {\n    // TODO: Remove String()\n    const width = options.width ? String(options.width) : args.defaultWidth;\n    const format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n", "import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n  full: \"EEEE, MMMM do, y\",\n  long: \"MMMM do, y\",\n  medium: \"MMM d, y\",\n  short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n  full: \"h:mm:ss a zzzz\",\n  long: \"h:mm:ss a z\",\n  medium: \"h:mm:ss a\",\n  short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n", "const formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n  formatRelativeLocale[token];\n", "/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n  return (value, options) => {\n    const context = options?.context ? String(options.context) : \"standalone\";\n\n    let valuesArray;\n    if (context === \"formatting\" && args.formattingValues) {\n      const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      const width = options?.width ? String(options.width) : defaultWidth;\n\n      valuesArray =\n        args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      const defaultWidth = args.defaultWidth;\n      const width = options?.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[width] || args.values[defaultWidth];\n    }\n    const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n    // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\n", "import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n  narrow: [\"B\", \"A\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\",\n  ],\n\n  wide: [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ],\n};\n\nconst dayValues = {\n  narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n  short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n  abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  wide: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n};\n\nconst dayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n};\n\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  const rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + \"st\";\n      case 2:\n        return number + \"nd\";\n      case 3:\n        return number + \"rd\";\n    }\n  }\n  return number + \"th\";\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n", "export function buildMatchFn(args) {\n  return (string, options = {}) => {\n    const width = options.width;\n\n    const matchPattern =\n      (width && args.matchPatterns[width]) ||\n      args.matchPatterns[args.defaultMatchWidth];\n    const matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n    const matchedString = matchResult[0];\n\n    const parsePatterns =\n      (width && args.parsePatterns[width]) ||\n      args.parsePatterns[args.defaultParseWidth];\n\n    const key = Array.isArray(parsePatterns)\n      ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n      : // [TODO] -- I challenge you to fix the type\n        findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n    let value;\n\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback\n      ? // [TODO] -- I challenge you to fix the type\n        options.valueCallback(value)\n      : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (const key in object) {\n    if (\n      Object.prototype.hasOwnProperty.call(object, key) &&\n      predicate(object[key])\n    ) {\n      return key;\n    }\n  }\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (let key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\n", "export function buildMatchPatternFn(args) {\n  return (string, options = {}) => {\n    const matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    const matchedString = matchResult[0];\n\n    const parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    let value = args.valueCallback\n      ? args.valueCallback(parseResult[0])\n      : parseResult[0];\n\n    // [TODO] I challenge you to fix the type\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n", "import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n  narrow: [\n    /^j/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^j/i,\n    /^j/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ja/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^may/i,\n    /^jun/i,\n    /^jul/i,\n    /^au/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i,\n  },\n};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n", "import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n  code: \"en-US\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n", "import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = differenceInCalendarDays(_date, startOfYear(_date));\n  const dayOfYear = diff + 1;\n  return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n  const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (+_date >= +startOfNextYear) {\n    return year + 1;\n  } else if (+_date >= +startOfThisYear) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const year = getWeekYear(date, options);\n  const firstWeek = constructFrom(options?.in || date, 0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  const _date = startOfWeek(firstWeek, options);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n", "export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n", "import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n  // Year\n  y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    const signedYear = date.getFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n  },\n\n  // Month\n  M(date, token) {\n    const month = date.getMonth();\n    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n\n  // Day of the month\n  d(date, token) {\n    return addLeadingZeros(date.getDate(), token.length);\n  },\n\n  // AM or PM\n  a(date, token) {\n    const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return dayPeriodEnumValue.toUpperCase();\n      case \"aaa\":\n        return dayPeriodEnumValue;\n      case \"aaaaa\":\n        return dayPeriodEnumValue[0];\n      case \"aaaa\":\n      default:\n        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n    }\n  },\n\n  // Hour [1-12]\n  h(date, token) {\n    return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n  },\n\n  // Hour [0-23]\n  H(date, token) {\n    return addLeadingZeros(date.getHours(), token.length);\n  },\n\n  // Minute\n  m(date, token) {\n    return addLeadingZeros(date.getMinutes(), token.length);\n  },\n\n  // Second\n  s(date, token) {\n    return addLeadingZeros(date.getSeconds(), token.length);\n  },\n\n  // Fraction of second\n  S(date, token) {\n    const numberOfDigits = token.length;\n    const milliseconds = date.getMilliseconds();\n    const fractionalSeconds = Math.trunc(\n      milliseconds * Math.pow(10, numberOfDigits - 3),\n    );\n    return addLeadingZeros(fractionalSeconds, token.length);\n  },\n};\n", "import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n  am: \"am\",\n  pm: \"pm\",\n  midnight: \"midnight\",\n  noon: \"noon\",\n  morning: \"morning\",\n  afternoon: \"afternoon\",\n  evening: \"evening\",\n  night: \"night\",\n};\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n  // Era\n  G: function (date, token, localize) {\n    const era = date.getFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return localize.era(era, { width: \"abbreviated\" });\n      // A, B\n      case \"GGGGG\":\n        return localize.era(era, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return localize.era(era, { width: \"wide\" });\n    }\n  },\n\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === \"yo\") {\n      const signedYear = date.getFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      const year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, { unit: \"year\" });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    const signedWeekYear = getWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === \"YY\") {\n      const twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === \"Yo\") {\n      return localize.ordinalNumber(weekYear, { unit: \"year\" });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n\n  // ISO week-numbering year\n  R: function (date, token) {\n    const isoWeekYear = getISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    const year = date.getFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n\n  // Quarter\n  Q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"QQ\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"qq\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // Month\n  M: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      case \"M\":\n      case \"MM\":\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // J, F, ..., D\n      case \"MMMMM\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"formatting\" });\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case \"LL\":\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // J, F, ..., D\n      case \"LLLLL\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"standalone\" });\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    const week = getWeek(date, options);\n\n    if (token === \"wo\") {\n      return localize.ordinalNumber(week, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n\n  // ISO week of year\n  I: function (date, token, localize) {\n    const isoWeek = getISOWeek(date);\n\n    if (token === \"Io\") {\n      return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === \"do\") {\n      return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n\n  // Day of year\n  D: function (date, token, localize) {\n    const dayOfYear = getDayOfYear(date);\n\n    if (token === \"Do\") {\n      return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n\n  // Day of week\n  E: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"EEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case \"e\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"ee\":\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case \"eo\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"eee\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"eeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"eeee\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case \"c\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"cc\":\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case \"co\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"ccc\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // T\n      case \"ccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"standalone\",\n        });\n      // Tuesday\n      case \"cccc\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case \"i\":\n        return String(isoDayOfWeek);\n      // 02\n      case \"ii\":\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case \"io\":\n        return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"iiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"iiiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"iiii\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    const hours = date.getHours();\n    const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"aaa\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"aaaaa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n    }\n\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"bbb\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"bbbbb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"BBBBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === \"ho\") {\n      let hours = date.getHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === \"Ho\") {\n      return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    const hours = date.getHours() % 12;\n\n    if (token === \"Ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    let hours = date.getHours();\n    if (hours === 0) hours = 24;\n\n    if (token === \"ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Minute\n  m: function (date, token, localize) {\n    if (token === \"mo\") {\n      return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n\n  // Second\n  s: function (date, token, localize) {\n    if (token === \"so\") {\n      return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return \"Z\";\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"X\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case \"XXXX\":\n      case \"XX\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case \"XXXXX\":\n      case \"XXX\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"x\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case \"xxxx\":\n      case \"xx\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case \"xxxxx\":\n      case \"xxx\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"O\":\n      case \"OO\":\n      case \"OOO\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"OOOO\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"z\":\n      case \"zz\":\n      case \"zzz\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"zzzz\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, _localize) {\n    const timestamp = Math.trunc(+date / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    return addLeadingZeros(+date, token.length);\n  },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = Math.trunc(absOffset / 60);\n  const minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n  if (offset % 60 === 0) {\n    const sign = offset > 0 ? \"-\" : \"+\";\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n  const minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n", "const dateLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"P\":\n      return formatLong.date({ width: \"short\" });\n    case \"PP\":\n      return formatLong.date({ width: \"medium\" });\n    case \"PPP\":\n      return formatLong.date({ width: \"long\" });\n    case \"PPPP\":\n    default:\n      return formatLong.date({ width: \"full\" });\n  }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"p\":\n      return formatLong.time({ width: \"short\" });\n    case \"pp\":\n      return formatLong.time({ width: \"medium\" });\n    case \"ppp\":\n      return formatLong.time({ width: \"long\" });\n    case \"pppp\":\n    default:\n      return formatLong.time({ width: \"full\" });\n  }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n  const matchResult = pattern.match(/(P+)(p+)?/) || [];\n  const datePattern = matchResult[1];\n  const timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  let dateTimeFormat;\n\n  switch (datePattern) {\n    case \"P\":\n      dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n      break;\n    case \"PP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n      break;\n    case \"PPP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n      break;\n    case \"PPPP\":\n    default:\n      dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n      break;\n  }\n\n  return dateTimeFormat\n    .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n    .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter,\n};\n", "const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n  return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n  return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n  const _message = message(token, format, input);\n  console.warn(_message);\n  if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n  const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n  return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n", "import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n *    and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const originalDate = toDate(date, options?.in);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  let parts = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp)\n    .map((substring) => {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return { isToken: false, value: \"'\" };\n      }\n\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return { isToken: false, value: cleanEscapedString(substring) };\n      }\n\n      if (formatters[firstCharacter]) {\n        return { isToken: true, value: substring };\n      }\n\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      return { isToken: false, value: substring };\n    });\n\n  // invoke localize preprocessor (only for french locales at the moment)\n  if (locale.localize.preprocessor) {\n    parts = locale.localize.preprocessor(originalDate, parts);\n  }\n\n  const formatterOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  return parts\n    .map((part) => {\n      if (!part.isToken) return part.value;\n\n      const token = part.value;\n\n      if (\n        (!options?.useAdditionalWeekYearTokens &&\n          isProtectedWeekYearToken(token)) ||\n        (!options?.useAdditionalDayOfYearTokens &&\n          isProtectedDayOfYearToken(token))\n      ) {\n        warnOrThrowProtectedError(token, formatStr, String(date));\n      }\n\n      const formatter = formatters[token[0]];\n      return formatter(originalDate, token, locale.localize, formatterOptions);\n    })\n    .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n  const matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n", "import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.js\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n  return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISODay} function options.\n */\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date, options) {\n  const day = toDate(date, options?.in).getDay();\n  return day === 0 ? 7 : day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam InputDate - The input `Date` type derived from the passed argument.\n * @typeParam ResultDate - The result `Date` type derived from the passed constructor.\n *\n * @param date - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(date, constructor) {\n  const date_ = isConstructor(constructor)\n    ? new constructor(0)\n    : constructFrom(constructor, 0);\n  date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n  date_.setHours(\n    date.getHours(),\n    date.getMinutes(),\n    date.getSeconds(),\n    date.getMilliseconds(),\n  );\n  return date_;\n}\n\nfunction isConstructor(constructor) {\n  return (\n    typeof constructor === \"function\" &&\n    constructor.prototype?.constructor === constructor\n  );\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n", "import { constructFrom } from \"../../constructFrom.js\";\nimport { transpose } from \"../../transpose.js\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n  subPriority = 0;\n\n  validate(_utcDate, _options) {\n    return true;\n  }\n}\n\nexport class ValueSetter extends Setter {\n  constructor(\n    value,\n\n    validateValue,\n\n    setValue,\n\n    priority,\n    subPriority,\n  ) {\n    super();\n    this.value = value;\n    this.validateValue = validateValue;\n    this.setValue = setValue;\n    this.priority = priority;\n    if (subPriority) {\n      this.subPriority = subPriority;\n    }\n  }\n\n  validate(date, options) {\n    return this.validateValue(date, this.value, options);\n  }\n\n  set(date, flags, options) {\n    return this.setValue(date, flags, this.value, options);\n  }\n}\n\nexport class DateTimezoneSetter extends Setter {\n  priority = TIMEZONE_UNIT_PRIORITY;\n  subPriority = -1;\n\n  constructor(context, reference) {\n    super();\n    this.context = context || ((date) => constructFrom(reference, date));\n  }\n\n  set(date, flags) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(date, transpose(date, this.context));\n  }\n}\n", "import { ValueSetter } from \"./Setter.js\";\n\nexport class Parser {\n  run(dateString, token, match, options) {\n    const result = this.parse(dateString, token, match, options);\n    if (!result) {\n      return null;\n    }\n\n    return {\n      setter: new ValueSetter(\n        result.value,\n        this.validate,\n        this.set,\n        this.priority,\n        this.subPriority,\n      ),\n      rest: result.rest,\n    };\n  }\n\n  validate(_utcDate, _value, _options) {\n    return true;\n  }\n}\n", "import { Parser } from \"../Parser.js\";\n\nexport class EraParser extends Parser {\n  priority = 140;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return (\n          match.era(dateString, { width: \"abbreviated\" }) ||\n          match.era(dateString, { width: \"narrow\" })\n        );\n\n      // A, B\n      case \"GGGGG\":\n        return match.era(dateString, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return (\n          match.era(dateString, { width: \"wide\" }) ||\n          match.era(dateString, { width: \"abbreviated\" }) ||\n          match.era(dateString, { width: \"narrow\" })\n        );\n    }\n  }\n\n  set(date, flags, value) {\n    flags.era = value;\n    date.setFullYear(value, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n", "export const numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/, // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n  minute: /^[0-5]?\\d/, // 0 to 59\n  second: /^[0-5]?\\d/, // 0 to 59\n\n  singleDigit: /^\\d/, // 0 to 9\n  twoDigits: /^\\d{1,2}/, // 0 to 99\n  threeDigits: /^\\d{1,3}/, // 0 to 999\n  fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n", "import {\n  millisecondsInHour,\n  millisecondsInMinute,\n  millisecondsInSecond,\n} from \"../../constants.js\";\n\nimport { numericPatterns } from \"./constants.js\";\n\nexport function mapValue(parseFnResult, mapFn) {\n  if (!parseFnResult) {\n    return parseFnResult;\n  }\n\n  return {\n    value: mapFn(parseFnResult.value),\n    rest: parseFnResult.rest,\n  };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n  const matchResult = dateString.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  return {\n    value: parseInt(matchResult[0], 10),\n    rest: dateString.slice(matchResult[0].length),\n  };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n  const matchResult = dateString.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  // Input is 'Z'\n  if (matchResult[0] === \"Z\") {\n    return {\n      value: 0,\n      rest: dateString.slice(1),\n    };\n  }\n\n  const sign = matchResult[1] === \"+\" ? 1 : -1;\n  const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n  return {\n    value:\n      sign *\n      (hours * millisecondsInHour +\n        minutes * millisecondsInMinute +\n        seconds * millisecondsInSecond),\n    rest: dateString.slice(matchResult[0].length),\n  };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, dateString);\n    default:\n      return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n  }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n    default:\n      return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n  }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n  switch (dayPeriod) {\n    case \"morning\":\n      return 4;\n    case \"evening\":\n      return 17;\n    case \"pm\":\n    case \"noon\":\n    case \"afternoon\":\n      return 12;\n    case \"am\":\n    case \"midnight\":\n    case \"night\":\n    default:\n      return 0;\n  }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  const isCommonEra = currentYear > 0;\n  // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n  const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n  let result;\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    const rangeEnd = absCurrentYear + 50;\n    const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n    const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n\n  return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n// | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n// | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n// | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n  priority = 130;\n  incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n  parse(dateString, token, match) {\n    const valueCallback = (year) => ({\n      year,\n      isTwoDigitYear: token === \"yy\",\n    });\n\n    switch (token) {\n      case \"y\":\n        return mapValue(parseNDigits(4, dateString), valueCallback);\n      case \"yo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"year\",\n          }),\n          valueCallback,\n        );\n      default:\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }\n\n  validate(_date, value) {\n    return value.isTwoDigitYear || value.year > 0;\n  }\n\n  set(date, flags, value) {\n    const currentYear = date.getFullYear();\n\n    if (value.isTwoDigitYear) {\n      const normalizedTwoDigitYear = normalizeTwoDigitYear(\n        value.year,\n        currentYear,\n      );\n      date.setFullYear(normalizedTwoDigitYear, 0, 1);\n      date.setHours(0, 0, 0, 0);\n      return date;\n    }\n\n    const year =\n      !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n    date.setFullYear(year, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n}\n", "import { getWeekYear } from \"../../../getWeekYear.js\";\n\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token, match) {\n    const valueCallback = (year) => ({\n      year,\n      isTwoDigitYear: token === \"YY\",\n    });\n\n    switch (token) {\n      case \"Y\":\n        return mapValue(parseNDigits(4, dateString), valueCallback);\n      case \"Yo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"year\",\n          }),\n          valueCallback,\n        );\n      default:\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }\n\n  validate(_date, value) {\n    return value.isTwoDigitYear || value.year > 0;\n  }\n\n  set(date, flags, value, options) {\n    const currentYear = getWeekYear(date, options);\n\n    if (value.isTwoDigitYear) {\n      const normalizedTwoDigitYear = normalizeTwoDigitYear(\n        value.year,\n        currentYear,\n      );\n      date.setFullYear(\n        normalizedTwoDigitYear,\n        0,\n        options.firstWeekContainsDate,\n      );\n      date.setHours(0, 0, 0, 0);\n      return startOfWeek(date, options);\n    }\n\n    const year =\n      !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n    date.setFullYear(year, 0, options.firstWeekContainsDate);\n    date.setHours(0, 0, 0, 0);\n    return startOfWeek(date, options);\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"Q\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token) {\n    if (token === \"R\") {\n      return parseNDigitsSigned(4, dateString);\n    }\n\n    return parseNDigitsSigned(token.length, dateString);\n  }\n\n  set(date, _flags, value) {\n    const firstWeekOfYear = constructFrom(date, 0);\n    firstWeekOfYear.setFullYear(value, 0, 4);\n    firstWeekOfYear.setHours(0, 0, 0, 0);\n    return startOfISOWeek(firstWeekOfYear);\n  }\n\n  incompatibleTokens = [\n    \"G\",\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"Q\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\nexport class ExtendedYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token) {\n    if (token === \"u\") {\n      return parseNDigitsSigned(4, dateString);\n    }\n\n    return parseNDigitsSigned(token.length, dateString);\n  }\n\n  set(date, _flags, value) {\n    date.setFullYear(value, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class QuarterParser extends Parser {\n  priority = 120;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n      case \"QQ\": // 01, 02, 03, 04\n        return parseNDigits(token.length, dateString);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return match.ordinalNumber(dateString, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return (\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return match.quarter(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return (\n          match.quarter(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 4;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth((value - 1) * 3, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class StandAloneQuarterParser extends Parser {\n  priority = 120;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n      case \"qq\": // 01, 02, 03, 04\n        return parseNDigits(token.length, dateString);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return match.ordinalNumber(dateString, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return (\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"standalone\",\n          })\n        );\n\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return match.quarter(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return (\n          match.quarter(dateString, {\n            width: \"wide\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"standalone\",\n          })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 4;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth((value - 1) * 3, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MonthParser extends Parser {\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n\n  priority = 110;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => value - 1;\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"M\":\n        return mapValue(\n          parseNumericPattern(numericPatterns.month, dateString),\n          valueCallback,\n        );\n      // 01, 02, ..., 12\n      case \"MM\":\n        return mapValue(parseNDigits(2, dateString), valueCallback);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"month\",\n          }),\n          valueCallback,\n        );\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return (\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // J, F, ..., D\n      case \"MMMMM\":\n        return match.month(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return (\n          match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(value, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class StandAloneMonthParser extends Parser {\n  priority = 110;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => value - 1;\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return mapValue(\n          parseNumericPattern(numericPatterns.month, dateString),\n          valueCallback,\n        );\n      // 01, 02, ..., 12\n      case \"LL\":\n        return mapValue(parseNDigits(2, dateString), valueCallback);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"month\",\n          }),\n          valueCallback,\n        );\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return (\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // J, F, ..., D\n      case \"LLLLL\":\n        return match.month(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return (\n          match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(value, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { getWeek } from \"./getWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n  const date_ = toDate(date, options?.in);\n  const diff = getWeek(date_, options) - week;\n  date_.setDate(date_.getDate() - diff * 7);\n  return toDate(date_, options?.in);\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n", "import { setWeek } from \"../../../setWeek.js\";\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n  priority = 100;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"w\":\n        return parseNumericPattern(numericPatterns.week, dateString);\n      case \"wo\":\n        return match.ordinalNumber(dateString, { unit: \"week\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 53;\n  }\n\n  set(date, _flags, value, options) {\n    return startOfWeek(setWeek(date, value, options), options);\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { getISOWeek } from \"./getISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISOWeek} function options.\n */\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The `Date` type of the context function.\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week, options) {\n  const _date = toDate(date, options?.in);\n  const diff = getISOWeek(_date, options) - week;\n  _date.setDate(_date.getDate() - diff * 7);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n", "import { setISOWeek } from \"../../../setISOWeek.js\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n  priority = 100;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"I\":\n        return parseNumericPattern(numericPatterns.week, dateString);\n      case \"Io\":\n        return match.ordinalNumber(dateString, { unit: \"week\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 53;\n  }\n\n  set(date, _flags, value) {\n    return startOfISOWeek(setISOWeek(date, value));\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n  isLeapYearIndex,\n  parseNDigits,\n  parseNumericPattern,\n} from \"../utils.js\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n  31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n  priority = 90;\n  subPriority = 1;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"d\":\n        return parseNumericPattern(numericPatterns.date, dateString);\n      case \"do\":\n        return match.ordinalNumber(dateString, { unit: \"date\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(date, value) {\n    const year = date.getFullYear();\n    const isLeapYear = isLeapYearIndex(year);\n    const month = date.getMonth();\n    if (isLeapYear) {\n      return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n    } else {\n      return value >= 1 && value <= DAYS_IN_MONTH[month];\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setDate(value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n  isLeapYearIndex,\n  parseNDigits,\n  parseNumericPattern,\n} from \"../utils.js\";\n\nexport class DayOfYearParser extends Parser {\n  priority = 90;\n\n  subpriority = 1;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"D\":\n      case \"DD\":\n        return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n      case \"Do\":\n        return match.ordinalNumber(dateString, { unit: \"date\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(date, value) {\n    const year = date.getFullYear();\n    const isLeapYear = isLeapYearIndex(year);\n    if (isLeapYear) {\n      return value >= 1 && value <= 366;\n    } else {\n      return value >= 1 && value <= 365;\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(0, value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"E\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { addDays } from \"./addDays.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const date_ = toDate(date, options?.in);\n  const currentDay = date_.getDay();\n\n  const remainder = day % 7;\n  const dayIndex = (remainder + 7) % 7;\n\n  const delta = 7 - weekStartsOn;\n  const diff =\n    day < 0 || day > 6\n      ? day - ((currentDay + delta) % 7)\n      : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n  return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n", "import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\n// Day of week\nexport class DayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // T\n      case \"EEEEE\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n", "import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n  priority = 90;\n  parse(dateString, token, match, options) {\n    const valueCallback = (value) => {\n      // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n      const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n      return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n    };\n\n    switch (token) {\n      // 3\n      case \"e\":\n      case \"ee\": // 03\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      // 3rd\n      case \"eo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"day\",\n          }),\n          valueCallback,\n        );\n      // Tue\n      case \"eee\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // T\n      case \"eeeee\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // Tuesday\n      case \"eeee\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"i\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match, options) {\n    const valueCallback = (value) => {\n      // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n      const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n      return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n    };\n\n    switch (token) {\n      // 3\n      case \"c\":\n      case \"cc\": // 03\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      // 3rd\n      case \"co\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"day\",\n          }),\n          valueCallback,\n        );\n      // Tue\n      case \"ccc\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // T\n      case \"ccccc\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // Tuesday\n      case \"cccc\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"i\",\n    \"e\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { addDays } from \"./addDays.js\";\nimport { getISODay } from \"./getISODay.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISODay} function options.\n */\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday, etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day, options) {\n  const date_ = toDate(date, options?.in);\n  const currentDay = getISODay(date_, options);\n  const diff = day - currentDay;\n  return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n", "import { setISODay } from \"../../../setISODay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => {\n      if (value === 0) {\n        return 7;\n      }\n      return value;\n    };\n\n    switch (token) {\n      // 2\n      case \"i\":\n      case \"ii\": // 02\n        return parseNDigits(token.length, dateString);\n      // 2nd\n      case \"io\":\n        return match.ordinalNumber(dateString, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"short\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n      // T\n      case \"iiiii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          }),\n          valueCallback,\n        );\n      // Tu\n      case \"iiiiii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"short\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n      // Tuesday\n      case \"iiii\":\n      default:\n        return mapValue(\n          match.day(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"abbreviated\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"short\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 7;\n  }\n\n  set(date, _flags, value) {\n    date = setISODay(date, value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n      case \"aaa\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"aaaaa\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMMidnightParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n      case \"bbb\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"bbbbb\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"BBBBB\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1to12Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"h\":\n        return parseNumericPattern(numericPatterns.hour12h, dateString);\n      case \"ho\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 12;\n  }\n\n  set(date, _flags, value) {\n    const isPM = date.getHours() >= 12;\n    if (isPM && value < 12) {\n      date.setHours(value + 12, 0, 0, 0);\n    } else if (!isPM && value === 12) {\n      date.setHours(0, 0, 0, 0);\n    } else {\n      date.setHours(value, 0, 0, 0);\n    }\n    return date;\n  }\n\n  incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0to23Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"H\":\n        return parseNumericPattern(numericPatterns.hour23h, dateString);\n      case \"Ho\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 23;\n  }\n\n  set(date, _flags, value) {\n    date.setHours(value, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0To11Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"K\":\n        return parseNumericPattern(numericPatterns.hour11h, dateString);\n      case \"Ko\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    const isPM = date.getHours() >= 12;\n    if (isPM && value < 12) {\n      date.setHours(value + 12, 0, 0, 0);\n    } else {\n      date.setHours(value, 0, 0, 0);\n    }\n    return date;\n  }\n\n  incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1To24Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"k\":\n        return parseNumericPattern(numericPatterns.hour24h, dateString);\n      case \"ko\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 24;\n  }\n\n  set(date, _flags, value) {\n    const hours = value <= 24 ? value % 24 : value;\n    date.setHours(hours, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MinuteParser extends Parser {\n  priority = 60;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"m\":\n        return parseNumericPattern(numericPatterns.minute, dateString);\n      case \"mo\":\n        return match.ordinalNumber(dateString, { unit: \"minute\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 59;\n  }\n\n  set(date, _flags, value) {\n    date.setMinutes(value, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n", "import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class SecondParser extends Parser {\n  priority = 50;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"s\":\n        return parseNumericPattern(numericPatterns.second, dateString);\n      case \"so\":\n        return match.ordinalNumber(dateString, { unit: \"second\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 59;\n  }\n\n  set(date, _flags, value) {\n    date.setSeconds(value, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n", "import { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\nexport class FractionOfSecondParser extends Parser {\n  priority = 30;\n\n  parse(dateString, token) {\n    const valueCallback = (value) =>\n      Math.trunc(value * Math.pow(10, -token.length + 3));\n    return mapValue(parseNDigits(token.length, dateString), valueCallback);\n  }\n\n  set(date, _flags, value) {\n    date.setMilliseconds(value);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n", "import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n  priority = 10;\n\n  parse(dateString, token) {\n    switch (token) {\n      case \"X\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalMinutes,\n          dateString,\n        );\n      case \"XX\":\n        return parseTimezonePattern(timezonePatterns.basic, dateString);\n      case \"XXXX\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalSeconds,\n          dateString,\n        );\n      case \"XXXXX\":\n        return parseTimezonePattern(\n          timezonePatterns.extendedOptionalSeconds,\n          dateString,\n        );\n      case \"XXX\":\n      default:\n        return parseTimezonePattern(timezonePatterns.extended, dateString);\n    }\n  }\n\n  set(date, flags, value) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(\n      date,\n      date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n    );\n  }\n\n  incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n", "import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n  priority = 10;\n\n  parse(dateString, token) {\n    switch (token) {\n      case \"x\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalMinutes,\n          dateString,\n        );\n      case \"xx\":\n        return parseTimezonePattern(timezonePatterns.basic, dateString);\n      case \"xxxx\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalSeconds,\n          dateString,\n        );\n      case \"xxxxx\":\n        return parseTimezonePattern(\n          timezonePatterns.extendedOptionalSeconds,\n          dateString,\n        );\n      case \"xxx\":\n      default:\n        return parseTimezonePattern(timezonePatterns.extended, dateString);\n    }\n  }\n\n  set(date, flags, value) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(\n      date,\n      date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n    );\n  }\n\n  incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n", "import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampSecondsParser extends Parser {\n  priority = 40;\n\n  parse(dateString) {\n    return parseAnyDigitsSigned(dateString);\n  }\n\n  set(date, _flags, value) {\n    return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n  }\n\n  incompatibleTokens = \"*\";\n}\n", "import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampMillisecondsParser extends Parser {\n  priority = 20;\n\n  parse(dateString) {\n    return parseAnyDigitsSigned(dateString);\n  }\n\n  set(date, _flags, value) {\n    return [constructFrom(date, value), { timestampIsSet: true }];\n  }\n\n  incompatibleTokens = \"*\";\n}\n", "import { EraParser } from \"./parsers/EraParser.js\";\nimport { YearParser } from \"./parsers/YearParser.js\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.js\";\nimport { QuarterParser } from \"./parsers/QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./parsers/MonthParser.js\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.js\";\nimport { DateParser } from \"./parsers/DateParser.js\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.js\";\nimport { DayParser } from \"./parsers/DayParser.js\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./parsers/ISODayParser.js\";\nimport { AMPMParser } from \"./parsers/AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.js\";\nimport { MinuteParser } from \"./parsers/MinuteParser.js\";\nimport { SecondParser } from \"./parsers/SecondParser.js\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\nexport const parsers = {\n  G: new EraParser(),\n  y: new YearParser(),\n  Y: new LocalWeekYearParser(),\n  R: new ISOWeekYearParser(),\n  u: new ExtendedYearParser(),\n  Q: new QuarterParser(),\n  q: new StandAloneQuarterParser(),\n  M: new MonthParser(),\n  L: new StandAloneMonthParser(),\n  w: new LocalWeekParser(),\n  I: new ISOWeekParser(),\n  d: new DateParser(),\n  D: new DayOfYearParser(),\n  E: new DayParser(),\n  e: new LocalDayParser(),\n  c: new StandAloneLocalDayParser(),\n  i: new ISODayParser(),\n  a: new AMPMParser(),\n  b: new AMPMMidnightParser(),\n  B: new DayPeriodParser(),\n  h: new Hour1to12Parser(),\n  H: new Hour0to23Parser(),\n  K: new Hour0To11Parser(),\n  k: new Hour1To24Parser(),\n  m: new MinuteParser(),\n  s: new SecondParser(),\n  S: new FractionOfSecondParser(),\n  X: new ISOTimezoneWithZParser(),\n  x: new ISOTimezoneParser(),\n  t: new TimestampSecondsParser(),\n  T: new TimestampMillisecondsParser(),\n};\n", "import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getDefaultOptions } from \"./getDefaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\nimport { DateTimezoneSetter } from \"./parse/_lib/Setter.js\";\nimport { parsers } from \"./parse/_lib/parsers.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Sun           | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 001, ..., 999                |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangeably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n *    and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n  const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  if (!formatStr)\n    return dateStr ? invalidDate() : toDate(referenceDate, options?.in);\n\n  const subFnOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  // If timezone isn't specified, it will try to use the context or\n  // the reference date and fallback to the system time zone.\n  const setters = [new DateTimezoneSetter(options?.in, referenceDate)];\n\n  const tokens = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter in longFormatters) {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp);\n\n  const usedTokens = [];\n\n  for (let token of tokens) {\n    if (\n      !options?.useAdditionalWeekYearTokens &&\n      isProtectedWeekYearToken(token)\n    ) {\n      warnOrThrowProtectedError(token, formatStr, dateStr);\n    }\n    if (\n      !options?.useAdditionalDayOfYearTokens &&\n      isProtectedDayOfYearToken(token)\n    ) {\n      warnOrThrowProtectedError(token, formatStr, dateStr);\n    }\n\n    const firstCharacter = token[0];\n    const parser = parsers[firstCharacter];\n    if (parser) {\n      const { incompatibleTokens } = parser;\n      if (Array.isArray(incompatibleTokens)) {\n        const incompatibleToken = usedTokens.find(\n          (usedToken) =>\n            incompatibleTokens.includes(usedToken.token) ||\n            usedToken.token === firstCharacter,\n        );\n        if (incompatibleToken) {\n          throw new RangeError(\n            `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n          );\n        }\n      } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n        throw new RangeError(\n          `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n        );\n      }\n\n      usedTokens.push({ token: firstCharacter, fullToken: token });\n\n      const parseResult = parser.run(\n        dateStr,\n        token,\n        locale.match,\n        subFnOptions,\n      );\n\n      if (!parseResult) {\n        return invalidDate();\n      }\n\n      setters.push(parseResult.setter);\n\n      dateStr = parseResult.rest;\n    } else {\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      // Replace two single quote characters with one single quote character\n      if (token === \"''\") {\n        token = \"'\";\n      } else if (firstCharacter === \"'\") {\n        token = cleanEscapedString(token);\n      }\n\n      // Cut token from string, or, if string doesn't match the token, return Invalid Date\n      if (dateStr.indexOf(token) === 0) {\n        dateStr = dateStr.slice(token.length);\n      } else {\n        return invalidDate();\n      }\n    }\n  }\n\n  // Check if the remaining input contains something other than whitespace\n  if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n    return invalidDate();\n  }\n\n  const uniquePrioritySetters = setters\n    .map((setter) => setter.priority)\n    .sort((a, b) => b - a)\n    .filter((priority, index, array) => array.indexOf(priority) === index)\n    .map((priority) =>\n      setters\n        .filter((setter) => setter.priority === priority)\n        .sort((a, b) => b.subPriority - a.subPriority),\n    )\n    .map((setterArray) => setterArray[0]);\n\n  let date = toDate(referenceDate, options?.in);\n\n  if (isNaN(+date)) return invalidDate();\n\n  const flags = {};\n  for (const setter of uniquePrioritySetters) {\n    if (!setter.validate(date, subFnOptions)) {\n      return invalidDate();\n    }\n\n    const result = setter.set(date, flags, subFnOptions);\n    // Result is tuple (date, flags)\n    if (Array.isArray(result)) {\n      date = result[0];\n      Object.assign(flags, result[1]);\n      // Result is date\n    } else {\n      date = result;\n    }\n  }\n\n  return date;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfHour} function options.\n */\n\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an hour\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport function startOfHour(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setMinutes(0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfHour;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMinute} function options.\n */\n\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport function startOfMinute(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setSeconds(0, 0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfMinute;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfSecond} function options.\n */\n\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport function startOfSecond(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setMilliseconds(0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfSecond;\n", "import {\n  millisecondsInHour,\n  millisecondsInMinute,\n} from \"./constants.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n  const invalidDate = () => constructFrom(options?.in, NaN);\n\n  const additionalDigits = options?.additionalDigits ?? 2;\n  const dateStrings = splitDateString(argument);\n\n  let date;\n  if (dateStrings.date) {\n    const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n  }\n\n  if (!date || isNaN(+date)) return invalidDate();\n\n  const timestamp = +date;\n  let time = 0;\n  let offset;\n\n  if (dateStrings.time) {\n    time = parseTime(dateStrings.time);\n    if (isNaN(time)) return invalidDate();\n  }\n\n  if (dateStrings.timezone) {\n    offset = parseTimezone(dateStrings.timezone);\n    if (isNaN(offset)) return invalidDate();\n  } else {\n    const tmpDate = new Date(timestamp + time);\n    const result = toDate(0, options?.in);\n    result.setFullYear(\n      tmpDate.getUTCFullYear(),\n      tmpDate.getUTCMonth(),\n      tmpDate.getUTCDate(),\n    );\n    result.setHours(\n      tmpDate.getUTCHours(),\n      tmpDate.getUTCMinutes(),\n      tmpDate.getUTCSeconds(),\n      tmpDate.getUTCMilliseconds(),\n    );\n    return result;\n  }\n\n  return toDate(timestamp + time + offset, options?.in);\n}\n\nconst patterns = {\n  dateTimeDelimiter: /[T ]/,\n  timeZoneDelimiter: /[Z ]/i,\n  timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n  /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n  /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n  const dateStrings = {};\n  const array = dateString.split(patterns.dateTimeDelimiter);\n  let timeString;\n\n  // The regex match should only return at maximum two array elements.\n  // [date], [time], or [date, time].\n  if (array.length > 2) {\n    return dateStrings;\n  }\n\n  if (/:/.test(array[0])) {\n    timeString = array[0];\n  } else {\n    dateStrings.date = array[0];\n    timeString = array[1];\n    if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n      timeString = dateString.substr(\n        dateStrings.date.length,\n        dateString.length,\n      );\n    }\n  }\n\n  if (timeString) {\n    const token = patterns.timezone.exec(timeString);\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], \"\");\n      dateStrings.timezone = token[1];\n    } else {\n      dateStrings.time = timeString;\n    }\n  }\n\n  return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n  const regex = new RegExp(\n    \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n      (4 + additionalDigits) +\n      \"})|(\\\\d{2}|[+-]\\\\d{\" +\n      (2 + additionalDigits) +\n      \"})$)\",\n  );\n\n  const captures = dateString.match(regex);\n  // Invalid ISO-formatted year\n  if (!captures) return { year: NaN, restDateString: \"\" };\n\n  const year = captures[1] ? parseInt(captures[1]) : null;\n  const century = captures[2] ? parseInt(captures[2]) : null;\n\n  // either year or century is null, not both\n  return {\n    year: century === null ? year : century * 100,\n    restDateString: dateString.slice((captures[1] || captures[2]).length),\n  };\n}\n\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) return new Date(NaN);\n\n  const captures = dateString.match(dateRegex);\n  // Invalid ISO-formatted string\n  if (!captures) return new Date(NaN);\n\n  const isWeekDate = !!captures[4];\n  const dayOfYear = parseDateUnit(captures[1]);\n  const month = parseDateUnit(captures[2]) - 1;\n  const day = parseDateUnit(captures[3]);\n  const week = parseDateUnit(captures[4]);\n  const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n  if (isWeekDate) {\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN);\n    }\n    return dayOfISOWeekYear(year, week, dayOfWeek);\n  } else {\n    const date = new Date(0);\n    if (\n      !validateDate(year, month, day) ||\n      !validateDayOfYearDate(year, dayOfYear)\n    ) {\n      return new Date(NaN);\n    }\n    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n    return date;\n  }\n}\n\nfunction parseDateUnit(value) {\n  return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n  const captures = timeString.match(timeRegex);\n  if (!captures) return NaN; // Invalid ISO-formatted time\n\n  const hours = parseTimeUnit(captures[1]);\n  const minutes = parseTimeUnit(captures[2]);\n  const seconds = parseTimeUnit(captures[3]);\n\n  if (!validateTime(hours, minutes, seconds)) {\n    return NaN;\n  }\n\n  return (\n    hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n  );\n}\n\nfunction parseTimeUnit(value) {\n  return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n  if (timezoneString === \"Z\") return 0;\n\n  const captures = timezoneString.match(timezoneRegex);\n  if (!captures) return 0;\n\n  const sign = captures[1] === \"+\" ? -1 : 1;\n  const hours = parseInt(captures[2]);\n  const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n  if (!validateTimezone(hours, minutes)) {\n    return NaN;\n  }\n\n  return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  const date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  const fourthOfJanuaryDay = date.getUTCDay() || 7;\n  const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n  return (\n    month >= 0 &&\n    month <= 11 &&\n    date >= 1 &&\n    date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n  );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n  if (hours === 24) {\n    return minutes === 0 && seconds === 0;\n  }\n\n  return (\n    seconds >= 0 &&\n    seconds < 60 &&\n    minutes >= 0 &&\n    minutes < 60 &&\n    hours >= 0 &&\n    hours < 25\n  );\n}\n\nfunction validateTimezone(_hours, minutes) {\n  return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n", "/*!\n * chartjs-adapter-date-fns v3.0.0\n * https://www.chartjs.org\n * (c) 2022 chartjs-adapter-date-fns Contributors\n * Released under the MIT license\n */\nimport { _adapters } from 'chart.js';\nimport { toDate, parse, parseISO, isValid, format, addYears, addQuarters, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addMilliseconds, differenceInYears, differenceInQuarters, differenceInMonths, differenceInWeeks, differenceInDays, differenceInHours, differenceInMinutes, differenceInSeconds, differenceInMilliseconds, startOfYear, startOfQuarter, startOfMonth, startOfWeek, startOfDay, startOfHour, startOfMinute, startOfSecond, endOfYear, endOfQuarter, endOfMonth, endOfWeek, endOfDay, endOfHour, endOfMinute, endOfSecond } from 'date-fns';\n\nconst FORMATS = {\n  datetime: 'MMM d, yyyy, h:mm:ss aaaa',\n  millisecond: 'h:mm:ss.SSS aaaa',\n  second: 'h:mm:ss aaaa',\n  minute: 'h:mm aaaa',\n  hour: 'ha',\n  day: 'MMM d',\n  week: 'PP',\n  month: 'MMM yyyy',\n  quarter: 'qqq - yyyy',\n  year: 'yyyy'\n};\n\n_adapters._date.override({\n  _id: 'date-fns', // DEBUG\n\n  formats: function() {\n    return FORMATS;\n  },\n\n  parse: function(value, fmt) {\n    if (value === null || typeof value === 'undefined') {\n      return null;\n    }\n    const type = typeof value;\n    if (type === 'number' || value instanceof Date) {\n      value = toDate(value);\n    } else if (type === 'string') {\n      if (typeof fmt === 'string') {\n        value = parse(value, fmt, new Date(), this.options);\n      } else {\n        value = parseISO(value, this.options);\n      }\n    }\n    return isValid(value) ? value.getTime() : null;\n  },\n\n  format: function(time, fmt) {\n    return format(time, fmt, this.options);\n  },\n\n  add: function(time, amount, unit) {\n    switch (unit) {\n    case 'millisecond': return addMilliseconds(time, amount);\n    case 'second': return addSeconds(time, amount);\n    case 'minute': return addMinutes(time, amount);\n    case 'hour': return addHours(time, amount);\n    case 'day': return addDays(time, amount);\n    case 'week': return addWeeks(time, amount);\n    case 'month': return addMonths(time, amount);\n    case 'quarter': return addQuarters(time, amount);\n    case 'year': return addYears(time, amount);\n    default: return time;\n    }\n  },\n\n  diff: function(max, min, unit) {\n    switch (unit) {\n    case 'millisecond': return differenceInMilliseconds(max, min);\n    case 'second': return differenceInSeconds(max, min);\n    case 'minute': return differenceInMinutes(max, min);\n    case 'hour': return differenceInHours(max, min);\n    case 'day': return differenceInDays(max, min);\n    case 'week': return differenceInWeeks(max, min);\n    case 'month': return differenceInMonths(max, min);\n    case 'quarter': return differenceInQuarters(max, min);\n    case 'year': return differenceInYears(max, min);\n    default: return 0;\n    }\n  },\n\n  startOf: function(time, unit, weekday) {\n    switch (unit) {\n    case 'second': return startOfSecond(time);\n    case 'minute': return startOfMinute(time);\n    case 'hour': return startOfHour(time);\n    case 'day': return startOfDay(time);\n    case 'week': return startOfWeek(time);\n    case 'isoWeek': return startOfWeek(time, {weekStartsOn: +weekday});\n    case 'month': return startOfMonth(time);\n    case 'quarter': return startOfQuarter(time);\n    case 'year': return startOfYear(time);\n    default: return time;\n    }\n  },\n\n  endOf: function(time, unit) {\n    switch (unit) {\n    case 'second': return endOfSecond(time);\n    case 'minute': return endOfMinute(time);\n    case 'hour': return endOfHour(time);\n    case 'day': return endOfDay(time);\n    case 'week': return endOfWeek(time);\n    case 'month': return endOfMonth(time);\n    case 'quarter': return endOfQuarter(time);\n    case 'year': return endOfYear(time);\n    default: return time;\n    }\n  }\n});\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[2];\n    let keyFilter = matches[3];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName,\n        eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n        identifier: matches[5],\n        methodName: matches[6],\n        keyFilter: matches[1] || keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n    return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    shouldIgnoreKeyboardEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = this.keyFilter.split(\"+\");\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!hasProperty(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    shouldIgnoreMouseEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = [this.keyFilter];\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        return false;\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n    keyFilterDissatisfied(event, filters) {\n        const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n        return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        const actionEvent = this.prepareActionEvent(event);\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n            this.invokeWithEvent(actionEvent);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        const { controller } = this.context;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element, controller });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    prepareActionEvent(event) {\n        return Object.assign(event, { params: this.action.params });\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            this.method.call(this.controller, event);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n            return false;\n        }\n        if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(element, attributeName) {\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details) {\n        this._selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    get selector() {\n        return this._selector;\n    }\n    set selector(selector) {\n        this._selector = selector;\n        this.refresh();\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const { selector } = this;\n        if (selector) {\n            const matches = element.matches(selector);\n            if (this.delegate.selectorMatchElement) {\n                return matches && this.delegate.selectorMatchElement(element, this.details);\n            }\n            return matches;\n        }\n        else {\n            return false;\n        }\n    }\n    matchElementsInTree(tree) {\n        const { selector } = this;\n        if (selector) {\n            const match = this.matchElement(tree) ? [tree] : [];\n            const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n            return match.concat(matches);\n        }\n        else {\n            return [];\n        }\n    }\n    elementMatched(element) {\n        const { selector } = this;\n        if (selector) {\n            this.selectorMatched(element, selector);\n        }\n    }\n    elementUnmatched(element) {\n        const selectors = this.matchesByElement.getKeysForValue(element);\n        for (const selector of selectors) {\n            this.selectorUnmatched(element, selector);\n        }\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const { selector } = this;\n        if (selector) {\n            const matches = this.matchElement(element);\n            const matchedBefore = this.matchesByElement.has(selector, element);\n            if (matches && !matchedBefore) {\n                this.selectorMatched(element, selector);\n            }\n            else if (!matches && matchedBefore) {\n                this.selectorUnmatched(element, selector);\n            }\n        }\n    }\n    selectorMatched(element, selector) {\n        this.delegate.selectorMatched(element, selector, this.details);\n        this.matchesByElement.add(selector, element);\n    }\n    selectorUnmatched(element, selector) {\n        this.delegate.selectorUnmatched(element, selector, this.details);\n        this.matchesByElement.delete(selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.started = false;\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n        this.attributeObserverMap = new Map();\n    }\n    start() {\n        if (!this.started) {\n            this.outletDefinitions.forEach((outletName) => {\n                this.setupSelectorObserverForOutlet(outletName);\n                this.setupAttributeObserverForOutlet(outletName);\n            });\n            this.started = true;\n            this.dependentContexts.forEach((context) => context.refresh());\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n        this.attributeObserverMap.forEach((observer) => observer.refresh());\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.disconnectAllOutlets();\n            this.stopSelectorObservers();\n            this.stopAttributeObservers();\n        }\n    }\n    stopSelectorObservers() {\n        if (this.selectorObserverMap.size > 0) {\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    stopAttributeObservers() {\n        if (this.attributeObserverMap.size > 0) {\n            this.attributeObserverMap.forEach((observer) => observer.stop());\n            this.attributeObserverMap.clear();\n        }\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        const selector = this.selector(outletName);\n        const hasOutlet = this.hasOutlet(element, outletName);\n        const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n        if (selector) {\n            return hasOutlet && hasOutletController && element.matches(selector);\n        }\n        else {\n            return false;\n        }\n    }\n    elementMatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementAttributeValueChanged(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementUnmatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    updateSelectorObserverForOutlet(outletName) {\n        const observer = this.selectorObserverMap.get(outletName);\n        if (observer) {\n            observer.selector = this.selector(outletName);\n        }\n    }\n    setupSelectorObserverForOutlet(outletName) {\n        const selector = this.selector(outletName);\n        const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n        this.selectorObserverMap.set(outletName, selectorObserver);\n        selectorObserver.start();\n    }\n    setupAttributeObserverForOutlet(outletName) {\n        const attributeName = this.attributeNameForOutletName(outletName);\n        const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n        this.attributeObserverMap.set(outletName, attributeObserver);\n        attributeObserver.start();\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    attributeNameForOutletName(outletName) {\n        return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n    }\n    getOutletNameFromOutletAttributeName(attributeName) {\n        return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        return this.parseValueForElementAndIdentifier(element, identifier);\n    }\n    parseValueForElementAndIdentifier(element, identifier) {\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n        const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n        if (scope) {\n            this.scopeObserver.elementMatchedValue(scope.element, scope);\n        }\n        else {\n            console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n    return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n    let outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n    controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n    outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                    if (outletController)\n                        return outletController;\n                    throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n                }\n                throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outletElement) => {\n                        const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                        if (outletController)\n                            return outletController;\n                        console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    return outletElement;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const { controller, token, typeObject } = payload;\n    const hasType = isSomething(typeObject.type);\n    const hasDefault = isSomething(typeObject.default);\n    const fullObject = hasType && hasDefault;\n    const onlyType = hasType && !hasDefault;\n    const onlyDefault = !hasType && hasDefault;\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n    if (onlyType)\n        return typeFromObject;\n    if (onlyDefault)\n        return typeFromDefaultValue;\n    if (typeFromObject !== typeFromDefaultValue) {\n        const propertyPath = controller ? `${controller}.${token}` : token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n    }\n    if (fullObject)\n        return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const { controller, token, typeDefinition } = payload;\n    const typeObject = { controller, token, typeObject: typeDefinition };\n    const typeFromObject = parseValueTypeObject(typeObject);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const hasDefault = hasProperty(typeDefinition, \"default\");\n    const hasType = hasProperty(typeDefinition, \"type\");\n    const typeObject = typeDefinition;\n    if (hasDefault)\n        return typeObject.default;\n    if (hasType) {\n        const { type } = typeObject;\n        const constantFromType = parseValueTypeConstant(type);\n        if (constantFromType)\n            return defaultValuesByType[constantFromType];\n    }\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const { token, typeDefinition } = payload;\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value.replace(/_/g, \"\"));\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\n\nconst application = Application.start()\nwindow.Stimulus = application\n\n\nexport { application };", "import { Controller } from \"@hotwired/stimulus\"\n\n// Toggles the app between light and dark by flipping data-theme on <html> and\n// persisting the choice in the pp_theme cookie (so the server can stamp\n// data-theme into the first byte of HTML on the next request \u2014 no flash).\n// Icon visibility is driven by CSS off :root[data-theme]. See issue #0002.\nexport default class extends Controller {\n  toggle() {\n    const root = document.documentElement\n    const next = (root.getAttribute(\"data-theme\") === \"dark\") ? \"light\" : \"dark\"\n    root.setAttribute(\"data-theme\", next)\n    document.cookie = `pp_theme=${next}; path=/; max-age=31536000; samesite=lax`\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Dismisses a Ui::AlertComponent by removing it from the DOM. CSP-safe\n// alternative to an inline onclick handler.\nexport default class extends Controller {\n  dismiss() {\n    this.element.remove()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nconst _AnimatedNumber = class _AnimatedNumber extends Controller {\n  connect() {\n    this.lazyValue ? this.lazyAnimate() : this.animate();\n  }\n  animate() {\n    let startTimestamp = null;\n    const step = (timestamp) => {\n      startTimestamp || (startTimestamp = timestamp);\n      const elapsed = timestamp - startTimestamp, progress = Math.min(elapsed / this.durationValue, 1);\n      this.element.innerHTML = Math.floor(progress * (this.endValue - this.startValue) + this.startValue).toString(), progress < 1 && window.requestAnimationFrame(step);\n    };\n    window.requestAnimationFrame(step);\n  }\n  lazyAnimate() {\n    new IntersectionObserver((entries, observer2) => {\n      entries.forEach((entry) => {\n        entry.isIntersecting && (this.animate(), observer2.unobserve(entry.target));\n      });\n    }, this.lazyAnimateOptions).observe(this.element);\n  }\n  // eslint-disable-next-line\n  get lazyAnimateOptions() {\n    return {\n      threshold: this.lazyThresholdValue,\n      rootMargin: this.lazyRootMarginValue\n    };\n  }\n};\n_AnimatedNumber.values = {\n  start: Number,\n  end: Number,\n  duration: Number,\n  lazyThreshold: Number,\n  lazyRootMargin: {\n    type: String,\n    default: \"0px\"\n  },\n  lazy: Boolean\n};\nlet AnimatedNumber = _AnimatedNumber;\nexport {\n  AnimatedNumber as default\n};\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"amount-validator\"\nexport default class extends Controller {\n  static targets = ['amountField', 'alert']\n\n  validateAmount(event) {\n    const amount = parseInt(this.amountFieldTarget.value);\n    const fieldName = this.amountFieldTarget.dataset.fieldName;\n    let alertTarget = this.alertTarget;\n\n    if (isNaN(amount)){\n      this.amountFieldTarget.classList.add(\"border-red-600\");\n      alertTarget.innerHTML = `${fieldName} can't be blank.`\n      event.preventDefault();\n    }\n    else if (amount <=0 ) {\n      this.amountFieldTarget.classList.add(\"border-red-600\");\n      alertTarget.innerHTML = `${fieldName} must be greater than zero.`\n      event.preventDefault();\n    } else {\n      alertTarget.innerHTML = \"\"\n      this.amountFieldTarget.classList.remove(\"border-red-600\");\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport AOS from \"aos\"\nimport \"aos/dist/aos.css\"\n\n// Connects to data-controller=\"aos\"\nexport default class extends Controller {\n  connect() {\n    AOS.init({\n      once: true,     // Animate only once\n      duration: 800,  // Animation duration in ms\n    });\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\n// Connects to data-controller=\"apply-gst\"\nexport default class extends Controller {\n  static targets = [\n    'gstCalculatorModal',\n    'amountField',\n    'gstPercent',\n    'finalProductCost',\n    'finalGstCost',\n    'finalTotalCost',\n    'productCost',\n    'gstCost',\n    'totalCost',\n    'appliedGstPercent',\n    'appliedProductRate',\n    'gstIncludeCheckbox',\n  ];\n  connect() {\n    this.calculatePrice()\n  }\n\n  gstCalculator() {\n    this.showGstCalculatorModal();\n    this.updateFields();\n    this.calculatePriceBreakout();\n  }\n  \n  showGstCalculatorModal() {\n    this.gstCalculatorModalTarget.classList.remove('hidden');\n    document.getElementById('gst_popup').setAttribute('open', true);\n  }\n  \n  updateFields() {\n    const productRate = this.parseInput(this.amountFieldTarget.value);\n    const gstPercent = this.parseInput(this.gstPercentTarget.value);\n    this.appliedProductRateTarget.value = this.formatNumber(productRate);\n    this.appliedGstPercentTarget.value = this.formatNumber(gstPercent);\n    this.gstIncludeCheckboxTarget.checked = false;\n  }\n  \n  parseInput(value) {\n    let parsedValue = parseFloat(value);\n    return isNaN(parsedValue) || parsedValue < 0 ? 0.0 : parsedValue;\n  }\n  \n  formatNumber(value) {\n    return Number.isInteger(value) ? value.toFixed(1) : value.toFixed(2);\n  }\n  \n  calculatePriceBreakout() {\n    const productRate = this.parseInput(this.appliedProductRateTarget.value);\n    const gstPercent = this.parseInput(this.appliedGstPercentTarget.value);\n    const isGstInclude = this.gstIncludeCheckboxTarget.checked;\n  \n    this.calculateCosts(productRate, gstPercent, isGstInclude);\n  }\n  \n  calculateCosts(productRate, gstPercent, isGstInclude) {\n    let productCost, gstCost, totalCost;\n    if (isGstInclude) {\n      gstCost = productRate - (productRate * (100 / (100 + gstPercent)));\n      productCost = productRate - gstCost;\n      totalCost = productRate;\n    } else {\n      gstCost = (productRate * gstPercent) / 100;\n      productCost = productRate;\n      totalCost = productRate + gstCost;\n    }\n    this.updateCostTargets(productCost, gstCost, totalCost);\n  }\n  \n  updateCostTargets(productCost, gstCost, totalCost) {\n    this.productCostTarget.innerHTML = this.formatNumber(productCost);\n    this.gstCostTarget.innerHTML = this.formatNumber(gstCost);\n    this.totalCostTarget.innerHTML = this.formatNumber(totalCost);\n  }\n  \n  applyGst() {\n    const productFinalAmount = this.parseInput(this.productCostTarget.innerHTML);\n    const finalGstPercent = this.parseInput(this.appliedGstPercentTarget.value);\n    const finalGstCost = this.parseInput(this.gstCostTarget.innerHTML);\n    const totalCost = this.parseInput(this.totalCostTarget.innerHTML);\n    \n    this.amountFieldTarget.value = this.formatNumber(productFinalAmount);\n    this.gstPercentTarget.value = this.formatNumber(finalGstPercent);\n    this.updateFinalFields(productFinalAmount, finalGstCost, totalCost);\n\n    const alert  = this.element.querySelector('#price-alert')\n    if(alert && alert.innerHTML.trim() !== ''){\n      alert.innerHTML = \"\"\n      this.amountFieldTarget.classList.remove(\"border-red-600\");\n    }\n    \n    document.getElementById('gst_popup').removeAttribute('open');\n  }\n  \n  updateFinalFields(productFinalAmount, finalGstCost, totalCost) {\n    this.finalProductCostTarget.innerHTML = this.formatNumber(productFinalAmount);\n    this.finalGstCostTarget.innerHTML = this.formatNumber(finalGstCost);\n    this.finalTotalCostTarget.innerHTML = this.formatNumber(totalCost);\n  }\n  \n  calculatePrice() {\n    const productRate = this.parseInput(this.amountFieldTarget.value);\n    const gstPercent = this.parseInput(this.gstPercentTarget.value);\n    const gstCost = (productRate * gstPercent) / 100;\n    const totalCost = productRate + gstCost;\n  \n    this.updateFinalFields(productRate, gstCost, totalCost);\n  }\n  \n}\n\n", "import { Controller } from \"@hotwired/stimulus\";\nfunction debounce(callback, delay) {\n  let timeout;\n  return (...args) => {\n    clearTimeout(timeout), timeout = setTimeout(() => {\n      callback.apply(this, args);\n    }, delay);\n  };\n}\nconst _AutoSubmit = class _AutoSubmit extends Controller {\n  initialize() {\n    this.submit = this.submit.bind(this);\n  }\n  connect() {\n    this.delayValue > 0 && (this.submit = debounce(this.submit, this.delayValue));\n  }\n  submit() {\n    this.element.requestSubmit();\n  }\n};\n_AutoSubmit.values = {\n  delay: {\n    type: Number,\n    default: 150\n  }\n};\nlet AutoSubmit = _AutoSubmit;\nexport {\n  AutoSubmit as default\n};\n", "/*\nTurbo 7.3.0\nCopyright \u00A9 2023 37signals LLC\n */\n(function () {\n    if (window.Reflect === undefined ||\n        window.customElements === undefined ||\n        window.customElements.polyfillWrapFlushCallback) {\n        return;\n    }\n    const BuiltInHTMLElement = HTMLElement;\n    const wrapperForTheName = {\n        HTMLElement: function HTMLElement() {\n            return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n        },\n    };\n    window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n    HTMLElement.prototype = BuiltInHTMLElement.prototype;\n    HTMLElement.prototype.constructor = HTMLElement;\n    Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function(submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this);\n      submitter.click();\n    } else {\n      submitter = document.createElement(\"input\");\n      submitter.type = \"submit\";\n      submitter.hidden = true;\n      this.appendChild(submitter);\n      submitter.click();\n      this.removeChild(submitter);\n    }\n  };\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n    submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n    const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n    const candidate = element ? element.closest(\"input, button\") : null;\n    return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n    const submitter = findSubmitterFromClickTarget(event.target);\n    if (submitter && submitter.form) {\n        submittersByForm.set(submitter.form, submitter);\n    }\n}\n(function () {\n    if (\"submitter\" in Event.prototype)\n        return;\n    let prototype = window.Event.prototype;\n    if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n        prototype = window.SubmitEvent.prototype;\n    }\n    else if (\"SubmitEvent\" in window) {\n        return;\n    }\n    addEventListener(\"click\", clickCaptured, true);\n    Object.defineProperty(prototype, \"submitter\", {\n        get() {\n            if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n                return submittersByForm.get(this.target);\n            }\n        },\n    });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n    FrameLoadingStyle[\"eager\"] = \"eager\";\n    FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n    static get observedAttributes() {\n        return [\"disabled\", \"complete\", \"loading\", \"src\"];\n    }\n    constructor() {\n        super();\n        this.loaded = Promise.resolve();\n        this.delegate = new FrameElement.delegateConstructor(this);\n    }\n    connectedCallback() {\n        this.delegate.connect();\n    }\n    disconnectedCallback() {\n        this.delegate.disconnect();\n    }\n    reload() {\n        return this.delegate.sourceURLReloaded();\n    }\n    attributeChangedCallback(name) {\n        if (name == \"loading\") {\n            this.delegate.loadingStyleChanged();\n        }\n        else if (name == \"complete\") {\n            this.delegate.completeChanged();\n        }\n        else if (name == \"src\") {\n            this.delegate.sourceURLChanged();\n        }\n        else {\n            this.delegate.disabledChanged();\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\");\n    }\n    set src(value) {\n        if (value) {\n            this.setAttribute(\"src\", value);\n        }\n        else {\n            this.removeAttribute(\"src\");\n        }\n    }\n    get loading() {\n        return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n    }\n    set loading(value) {\n        if (value) {\n            this.setAttribute(\"loading\", value);\n        }\n        else {\n            this.removeAttribute(\"loading\");\n        }\n    }\n    get disabled() {\n        return this.hasAttribute(\"disabled\");\n    }\n    set disabled(value) {\n        if (value) {\n            this.setAttribute(\"disabled\", \"\");\n        }\n        else {\n            this.removeAttribute(\"disabled\");\n        }\n    }\n    get autoscroll() {\n        return this.hasAttribute(\"autoscroll\");\n    }\n    set autoscroll(value) {\n        if (value) {\n            this.setAttribute(\"autoscroll\", \"\");\n        }\n        else {\n            this.removeAttribute(\"autoscroll\");\n        }\n    }\n    get complete() {\n        return !this.delegate.isLoading;\n    }\n    get isActive() {\n        return this.ownerDocument === document && !this.isPreview;\n    }\n    get isPreview() {\n        var _a, _b;\n        return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n    }\n}\nfunction frameLoadingStyleFromString(style) {\n    switch (style.toLowerCase()) {\n        case \"lazy\":\n            return FrameLoadingStyle.lazy;\n        default:\n            return FrameLoadingStyle.eager;\n    }\n}\n\nfunction expandURL(locatable) {\n    return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n    let anchorMatch;\n    if (url.hash) {\n        return url.hash.slice(1);\n    }\n    else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n        return anchorMatch[1];\n    }\n}\nfunction getAction(form, submitter) {\n    const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n    return expandURL(action);\n}\nfunction getExtension(url) {\n    return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n    return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n    const prefix = getPrefix(url);\n    return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n    return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n    const anchor = getAnchor(url);\n    return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n    return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n    return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n    return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n    return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n    return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n    return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n    constructor(response) {\n        this.response = response;\n    }\n    get succeeded() {\n        return this.response.ok;\n    }\n    get failed() {\n        return !this.succeeded;\n    }\n    get clientError() {\n        return this.statusCode >= 400 && this.statusCode <= 499;\n    }\n    get serverError() {\n        return this.statusCode >= 500 && this.statusCode <= 599;\n    }\n    get redirected() {\n        return this.response.redirected;\n    }\n    get location() {\n        return expandURL(this.response.url);\n    }\n    get isHTML() {\n        return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n    }\n    get statusCode() {\n        return this.response.status;\n    }\n    get contentType() {\n        return this.header(\"Content-Type\");\n    }\n    get responseText() {\n        return this.response.clone().text();\n    }\n    get responseHTML() {\n        if (this.isHTML) {\n            return this.response.clone().text();\n        }\n        else {\n            return Promise.resolve(undefined);\n        }\n    }\n    header(name) {\n        return this.response.headers.get(name);\n    }\n}\n\nfunction activateScriptElement(element) {\n    if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n        return element;\n    }\n    else {\n        const createdScriptElement = document.createElement(\"script\");\n        const cspNonce = getMetaContent(\"csp-nonce\");\n        if (cspNonce) {\n            createdScriptElement.nonce = cspNonce;\n        }\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n    }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n    for (const { name, value } of sourceElement.attributes) {\n        destinationElement.setAttribute(name, value);\n    }\n}\nfunction createDocumentFragment(html) {\n    const template = document.createElement(\"template\");\n    template.innerHTML = html;\n    return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n    const event = new CustomEvent(eventName, {\n        cancelable,\n        bubbles: true,\n        composed: true,\n        detail,\n    });\n    if (target && target.isConnected) {\n        target.dispatchEvent(event);\n    }\n    else {\n        document.documentElement.dispatchEvent(event);\n    }\n    return event;\n}\nfunction nextAnimationFrame() {\n    return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n    return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n    return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n    return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n    const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n    const match = lines[0].match(/^\\s+/);\n    const indent = match ? match[0].length : 0;\n    return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n    return strings.reduce((result, string, i) => {\n        const value = values[i] == undefined ? \"\" : values[i];\n        return result + string + value;\n    }, \"\");\n}\nfunction uuid() {\n    return Array.from({ length: 36 })\n        .map((_, i) => {\n        if (i == 8 || i == 13 || i == 18 || i == 23) {\n            return \"-\";\n        }\n        else if (i == 14) {\n            return \"4\";\n        }\n        else if (i == 19) {\n            return (Math.floor(Math.random() * 4) + 8).toString(16);\n        }\n        else {\n            return Math.floor(Math.random() * 15).toString(16);\n        }\n    })\n        .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n    for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n        if (typeof value == \"string\")\n            return value;\n    }\n    return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n    return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.setAttribute(\"busy\", \"\");\n        }\n        element.setAttribute(\"aria-busy\", \"true\");\n    }\n}\nfunction clearBusyState(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.removeAttribute(\"busy\");\n        }\n        element.removeAttribute(\"aria-busy\");\n    }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n    return new Promise((resolve) => {\n        const onComplete = () => {\n            element.removeEventListener(\"error\", onComplete);\n            element.removeEventListener(\"load\", onComplete);\n            resolve();\n        };\n        element.addEventListener(\"load\", onComplete, { once: true });\n        element.addEventListener(\"error\", onComplete, { once: true });\n        setTimeout(resolve, timeoutInMilliseconds);\n    });\n}\nfunction getHistoryMethodForAction(action) {\n    switch (action) {\n        case \"replace\":\n            return history.replaceState;\n        case \"advance\":\n        case \"restore\":\n            return history.pushState;\n    }\n}\nfunction isAction(action) {\n    return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n    const action = getAttribute(\"data-turbo-action\", ...elements);\n    return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n    return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n    const element = getMetaElement(name);\n    return element && element.content;\n}\nfunction setMetaContent(name, content) {\n    let element = getMetaElement(name);\n    if (!element) {\n        element = document.createElement(\"meta\");\n        element.setAttribute(\"name\", name);\n        document.head.appendChild(element);\n    }\n    element.setAttribute(\"content\", content);\n    return element;\n}\nfunction findClosestRecursively(element, selector) {\n    var _a;\n    if (element instanceof Element) {\n        return (element.closest(selector) ||\n            findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n    }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n    FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n    FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n    FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n    FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n    FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n    switch (method.toLowerCase()) {\n        case \"get\":\n            return FetchMethod.get;\n        case \"post\":\n            return FetchMethod.post;\n        case \"put\":\n            return FetchMethod.put;\n        case \"patch\":\n            return FetchMethod.patch;\n        case \"delete\":\n            return FetchMethod.delete;\n    }\n}\nclass FetchRequest {\n    constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n        this.abortController = new AbortController();\n        this.resolveRequestPromise = (_value) => { };\n        this.delegate = delegate;\n        this.method = method;\n        this.headers = this.defaultHeaders;\n        this.body = body;\n        this.url = location;\n        this.target = target;\n    }\n    get location() {\n        return this.url;\n    }\n    get params() {\n        return this.url.searchParams;\n    }\n    get entries() {\n        return this.body ? Array.from(this.body.entries()) : [];\n    }\n    cancel() {\n        this.abortController.abort();\n    }\n    async perform() {\n        const { fetchOptions } = this;\n        this.delegate.prepareRequest(this);\n        await this.allowRequestToBeIntercepted(fetchOptions);\n        try {\n            this.delegate.requestStarted(this);\n            const response = await fetch(this.url.href, fetchOptions);\n            return await this.receive(response);\n        }\n        catch (error) {\n            if (error.name !== \"AbortError\") {\n                if (this.willDelegateErrorHandling(error)) {\n                    this.delegate.requestErrored(this, error);\n                }\n                throw error;\n            }\n        }\n        finally {\n            this.delegate.requestFinished(this);\n        }\n    }\n    async receive(response) {\n        const fetchResponse = new FetchResponse(response);\n        const event = dispatch(\"turbo:before-fetch-response\", {\n            cancelable: true,\n            detail: { fetchResponse },\n            target: this.target,\n        });\n        if (event.defaultPrevented) {\n            this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n        }\n        else if (fetchResponse.succeeded) {\n            this.delegate.requestSucceededWithResponse(this, fetchResponse);\n        }\n        else {\n            this.delegate.requestFailedWithResponse(this, fetchResponse);\n        }\n        return fetchResponse;\n    }\n    get fetchOptions() {\n        var _a;\n        return {\n            method: FetchMethod[this.method].toUpperCase(),\n            credentials: \"same-origin\",\n            headers: this.headers,\n            redirect: \"follow\",\n            body: this.isSafe ? null : this.body,\n            signal: this.abortSignal,\n            referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n        };\n    }\n    get defaultHeaders() {\n        return {\n            Accept: \"text/html, application/xhtml+xml\",\n        };\n    }\n    get isSafe() {\n        return this.method === FetchMethod.get;\n    }\n    get abortSignal() {\n        return this.abortController.signal;\n    }\n    acceptResponseType(mimeType) {\n        this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n    }\n    async allowRequestToBeIntercepted(fetchOptions) {\n        const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n        const event = dispatch(\"turbo:before-fetch-request\", {\n            cancelable: true,\n            detail: {\n                fetchOptions,\n                url: this.url,\n                resume: this.resolveRequestPromise,\n            },\n            target: this.target,\n        });\n        if (event.defaultPrevented)\n            await requestInterception;\n    }\n    willDelegateErrorHandling(error) {\n        const event = dispatch(\"turbo:fetch-request-error\", {\n            target: this.target,\n            cancelable: true,\n            detail: { request: this, error: error },\n        });\n        return !event.defaultPrevented;\n    }\n}\n\nclass AppearanceObserver {\n    constructor(delegate, element) {\n        this.started = false;\n        this.intersect = (entries) => {\n            const lastEntry = entries.slice(-1)[0];\n            if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n                this.delegate.elementAppearedInViewport(this.element);\n            }\n        };\n        this.delegate = delegate;\n        this.element = element;\n        this.intersectionObserver = new IntersectionObserver(this.intersect);\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.intersectionObserver.observe(this.element);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.intersectionObserver.unobserve(this.element);\n        }\n    }\n}\n\nclass StreamMessage {\n    static wrap(message) {\n        if (typeof message == \"string\") {\n            return new this(createDocumentFragment(message));\n        }\n        else {\n            return message;\n        }\n    }\n    constructor(fragment) {\n        this.fragment = importStreamElements(fragment);\n    }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n    for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n        const streamElement = document.importNode(element, true);\n        for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n            inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n        }\n        element.replaceWith(streamElement);\n    }\n    return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n    FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n    FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n    FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n    FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n    FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n    FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n    FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n    FormEnctype[\"multipart\"] = \"multipart/form-data\";\n    FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n    switch (encoding.toLowerCase()) {\n        case FormEnctype.multipart:\n            return FormEnctype.multipart;\n        case FormEnctype.plain:\n            return FormEnctype.plain;\n        default:\n            return FormEnctype.urlEncoded;\n    }\n}\nclass FormSubmission {\n    static confirmMethod(message, _element, _submitter) {\n        return Promise.resolve(confirm(message));\n    }\n    constructor(delegate, formElement, submitter, mustRedirect = false) {\n        this.state = FormSubmissionState.initialized;\n        this.delegate = delegate;\n        this.formElement = formElement;\n        this.submitter = submitter;\n        this.formData = buildFormData(formElement, submitter);\n        this.location = expandURL(this.action);\n        if (this.method == FetchMethod.get) {\n            mergeFormDataEntries(this.location, [...this.body.entries()]);\n        }\n        this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n        this.mustRedirect = mustRedirect;\n    }\n    get method() {\n        var _a;\n        const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n        return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n    }\n    get action() {\n        var _a;\n        const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n        if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n            return this.submitter.getAttribute(\"formaction\") || \"\";\n        }\n        else {\n            return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n        }\n    }\n    get body() {\n        if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n            return new URLSearchParams(this.stringFormData);\n        }\n        else {\n            return this.formData;\n        }\n    }\n    get enctype() {\n        var _a;\n        return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n    }\n    get isSafe() {\n        return this.fetchRequest.isSafe;\n    }\n    get stringFormData() {\n        return [...this.formData].reduce((entries, [name, value]) => {\n            return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n        }, []);\n    }\n    async start() {\n        const { initialized, requesting } = FormSubmissionState;\n        const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n        if (typeof confirmationMessage === \"string\") {\n            const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n            if (!answer) {\n                return;\n            }\n        }\n        if (this.state == initialized) {\n            this.state = requesting;\n            return this.fetchRequest.perform();\n        }\n    }\n    stop() {\n        const { stopping, stopped } = FormSubmissionState;\n        if (this.state != stopping && this.state != stopped) {\n            this.state = stopping;\n            this.fetchRequest.cancel();\n            return true;\n        }\n    }\n    prepareRequest(request) {\n        if (!request.isSafe) {\n            const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n            if (token) {\n                request.headers[\"X-CSRF-Token\"] = token;\n            }\n        }\n        if (this.requestAcceptsTurboStreamResponse(request)) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        var _a;\n        this.state = FormSubmissionState.waiting;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n        this.setSubmitsWith();\n        dispatch(\"turbo:submit-start\", {\n            target: this.formElement,\n            detail: { formSubmission: this },\n        });\n        this.delegate.formSubmissionStarted(this);\n    }\n    requestPreventedHandlingResponse(request, response) {\n        this.result = { success: response.succeeded, fetchResponse: response };\n    }\n    requestSucceededWithResponse(request, response) {\n        if (response.clientError || response.serverError) {\n            this.delegate.formSubmissionFailedWithResponse(this, response);\n        }\n        else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n            const error = new Error(\"Form responses must redirect to another location\");\n            this.delegate.formSubmissionErrored(this, error);\n        }\n        else {\n            this.state = FormSubmissionState.receiving;\n            this.result = { success: true, fetchResponse: response };\n            this.delegate.formSubmissionSucceededWithResponse(this, response);\n        }\n    }\n    requestFailedWithResponse(request, response) {\n        this.result = { success: false, fetchResponse: response };\n        this.delegate.formSubmissionFailedWithResponse(this, response);\n    }\n    requestErrored(request, error) {\n        this.result = { success: false, error };\n        this.delegate.formSubmissionErrored(this, error);\n    }\n    requestFinished(_request) {\n        var _a;\n        this.state = FormSubmissionState.stopped;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n        this.resetSubmitterText();\n        dispatch(\"turbo:submit-end\", {\n            target: this.formElement,\n            detail: Object.assign({ formSubmission: this }, this.result),\n        });\n        this.delegate.formSubmissionFinished(this);\n    }\n    setSubmitsWith() {\n        if (!this.submitter || !this.submitsWith)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.originalSubmitText = this.submitter.innerHTML;\n            this.submitter.innerHTML = this.submitsWith;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            this.originalSubmitText = input.value;\n            input.value = this.submitsWith;\n        }\n    }\n    resetSubmitterText() {\n        if (!this.submitter || !this.originalSubmitText)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.submitter.innerHTML = this.originalSubmitText;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            input.value = this.originalSubmitText;\n        }\n    }\n    requestMustRedirect(request) {\n        return !request.isSafe && this.mustRedirect;\n    }\n    requestAcceptsTurboStreamResponse(request) {\n        return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n    }\n    get submitsWith() {\n        var _a;\n        return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-turbo-submits-with\");\n    }\n}\nfunction buildFormData(formElement, submitter) {\n    const formData = new FormData(formElement);\n    const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n    const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n    if (name) {\n        formData.append(name, value || \"\");\n    }\n    return formData;\n}\nfunction getCookieValue(cookieName) {\n    if (cookieName != null) {\n        const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n        const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n        if (cookie) {\n            const value = cookie.split(\"=\").slice(1).join(\"=\");\n            return value ? decodeURIComponent(value) : undefined;\n        }\n    }\n}\nfunction responseSucceededWithoutRedirect(response) {\n    return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n    const searchParams = new URLSearchParams();\n    for (const [name, value] of entries) {\n        if (value instanceof File)\n            continue;\n        searchParams.append(name, value);\n    }\n    url.search = searchParams.toString();\n    return url;\n}\n\nclass Snapshot {\n    constructor(element) {\n        this.element = element;\n    }\n    get activeElement() {\n        return this.element.ownerDocument.activeElement;\n    }\n    get children() {\n        return [...this.element.children];\n    }\n    hasAnchor(anchor) {\n        return this.getElementForAnchor(anchor) != null;\n    }\n    getElementForAnchor(anchor) {\n        return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n    }\n    get isConnected() {\n        return this.element.isConnected;\n    }\n    get firstAutofocusableElement() {\n        const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n        for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n            if (element.closest(inertDisabledOrHidden) == null)\n                return element;\n            else\n                continue;\n        }\n        return null;\n    }\n    get permanentElements() {\n        return queryPermanentElementsAll(this.element);\n    }\n    getPermanentElementById(id) {\n        return getPermanentElementById(this.element, id);\n    }\n    getPermanentElementMapForSnapshot(snapshot) {\n        const permanentElementMap = {};\n        for (const currentPermanentElement of this.permanentElements) {\n            const { id } = currentPermanentElement;\n            const newPermanentElement = snapshot.getPermanentElementById(id);\n            if (newPermanentElement) {\n                permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n            }\n        }\n        return permanentElementMap;\n    }\n}\nfunction getPermanentElementById(node, id) {\n    return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n    return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.submitCaptured = () => {\n            this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n            this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n        };\n        this.submitBubbled = ((event) => {\n            if (!event.defaultPrevented) {\n                const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n                const submitter = event.submitter || undefined;\n                if (form &&\n                    submissionDoesNotDismissDialog(form, submitter) &&\n                    submissionDoesNotTargetIFrame(form, submitter) &&\n                    this.delegate.willSubmitForm(form, submitter)) {\n                    event.preventDefault();\n                    event.stopImmediatePropagation();\n                    this.delegate.formSubmitted(form, submitter);\n                }\n            }\n        });\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n            this.started = false;\n        }\n    }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n    const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n    return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n    if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n        const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n        for (const element of document.getElementsByName(target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass View {\n    constructor(delegate, element) {\n        this.resolveRenderPromise = (_value) => { };\n        this.resolveInterceptionPromise = (_value) => { };\n        this.delegate = delegate;\n        this.element = element;\n    }\n    scrollToAnchor(anchor) {\n        const element = this.snapshot.getElementForAnchor(anchor);\n        if (element) {\n            this.scrollToElement(element);\n            this.focusElement(element);\n        }\n        else {\n            this.scrollToPosition({ x: 0, y: 0 });\n        }\n    }\n    scrollToAnchorFromLocation(location) {\n        this.scrollToAnchor(getAnchor(location));\n    }\n    scrollToElement(element) {\n        element.scrollIntoView();\n    }\n    focusElement(element) {\n        if (element instanceof HTMLElement) {\n            if (element.hasAttribute(\"tabindex\")) {\n                element.focus();\n            }\n            else {\n                element.setAttribute(\"tabindex\", \"-1\");\n                element.focus();\n                element.removeAttribute(\"tabindex\");\n            }\n        }\n    }\n    scrollToPosition({ x, y }) {\n        this.scrollRoot.scrollTo(x, y);\n    }\n    scrollToTop() {\n        this.scrollToPosition({ x: 0, y: 0 });\n    }\n    get scrollRoot() {\n        return window;\n    }\n    async render(renderer) {\n        const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n        if (shouldRender) {\n            try {\n                this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n                this.renderer = renderer;\n                await this.prepareToRenderSnapshot(renderer);\n                const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n                const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n                const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n                if (!immediateRender)\n                    await renderInterception;\n                await this.renderSnapshot(renderer);\n                this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n                this.delegate.preloadOnLoadLinksForView(this.element);\n                this.finishRenderingSnapshot(renderer);\n            }\n            finally {\n                delete this.renderer;\n                this.resolveRenderPromise(undefined);\n                delete this.renderPromise;\n            }\n        }\n        else {\n            this.invalidate(renderer.reloadReason);\n        }\n    }\n    invalidate(reason) {\n        this.delegate.viewInvalidated(reason);\n    }\n    async prepareToRenderSnapshot(renderer) {\n        this.markAsPreview(renderer.isPreview);\n        await renderer.prepareToRender();\n    }\n    markAsPreview(isPreview) {\n        if (isPreview) {\n            this.element.setAttribute(\"data-turbo-preview\", \"\");\n        }\n        else {\n            this.element.removeAttribute(\"data-turbo-preview\");\n        }\n    }\n    async renderSnapshot(renderer) {\n        await renderer.render();\n    }\n    finishRenderingSnapshot(renderer) {\n        renderer.finishRendering();\n    }\n}\n\nclass FrameView extends View {\n    missing() {\n        this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n    }\n    get snapshot() {\n        return new Snapshot(this.element);\n    }\n}\n\nclass LinkInterceptor {\n    constructor(delegate, element) {\n        this.clickBubbled = (event) => {\n            if (this.respondsToEventTarget(event.target)) {\n                this.clickEvent = event;\n            }\n            else {\n                delete this.clickEvent;\n            }\n        };\n        this.linkClicked = ((event) => {\n            if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n                if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n                    this.clickEvent.preventDefault();\n                    event.preventDefault();\n                    this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n                }\n            }\n            delete this.clickEvent;\n        });\n        this.willVisit = ((_event) => {\n            delete this.clickEvent;\n        });\n        this.delegate = delegate;\n        this.element = element;\n    }\n    start() {\n        this.element.addEventListener(\"click\", this.clickBubbled);\n        document.addEventListener(\"turbo:click\", this.linkClicked);\n        document.addEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    stop() {\n        this.element.removeEventListener(\"click\", this.clickBubbled);\n        document.removeEventListener(\"turbo:click\", this.linkClicked);\n        document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    respondsToEventTarget(target) {\n        const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n        return element && element.closest(\"turbo-frame, html\") == this.element;\n    }\n}\n\nclass LinkClickObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.clickCaptured = () => {\n            this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n            this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n        };\n        this.clickBubbled = (event) => {\n            if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n                const target = (event.composedPath && event.composedPath()[0]) || event.target;\n                const link = this.findLinkFromClickTarget(target);\n                if (link && doesNotTargetIFrame(link)) {\n                    const location = this.getLocationForLink(link);\n                    if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n                        event.preventDefault();\n                        this.delegate.followedLinkToLocation(link, location);\n                    }\n                }\n            }\n        };\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n            this.started = false;\n        }\n    }\n    clickEventIsSignificant(event) {\n        return !((event.target && event.target.isContentEditable) ||\n            event.defaultPrevented ||\n            event.which > 1 ||\n            event.altKey ||\n            event.ctrlKey ||\n            event.metaKey ||\n            event.shiftKey);\n    }\n    findLinkFromClickTarget(target) {\n        return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n    }\n    getLocationForLink(link) {\n        return expandURL(link.getAttribute(\"href\") || \"\");\n    }\n}\nfunction doesNotTargetIFrame(anchor) {\n    if (anchor.hasAttribute(\"target\")) {\n        for (const element of document.getElementsByName(anchor.target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass FormLinkClickObserver {\n    constructor(delegate, element) {\n        this.delegate = delegate;\n        this.linkInterceptor = new LinkClickObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n    }\n    willFollowLinkToLocation(link, location, originalEvent) {\n        return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n            link.hasAttribute(\"data-turbo-method\"));\n    }\n    followedLinkToLocation(link, location) {\n        const form = document.createElement(\"form\");\n        const type = \"hidden\";\n        for (const [name, value] of location.searchParams) {\n            form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n        }\n        const action = Object.assign(location, { search: \"\" });\n        form.setAttribute(\"data-turbo\", \"true\");\n        form.setAttribute(\"action\", action.href);\n        form.setAttribute(\"hidden\", \"\");\n        const method = link.getAttribute(\"data-turbo-method\");\n        if (method)\n            form.setAttribute(\"method\", method);\n        const turboFrame = link.getAttribute(\"data-turbo-frame\");\n        if (turboFrame)\n            form.setAttribute(\"data-turbo-frame\", turboFrame);\n        const turboAction = getVisitAction(link);\n        if (turboAction)\n            form.setAttribute(\"data-turbo-action\", turboAction);\n        const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n        if (turboConfirm)\n            form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n        const turboStream = link.hasAttribute(\"data-turbo-stream\");\n        if (turboStream)\n            form.setAttribute(\"data-turbo-stream\", \"\");\n        this.delegate.submittedFormLinkToLocation(link, location, form);\n        document.body.appendChild(form);\n        form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n        requestAnimationFrame(() => form.requestSubmit());\n    }\n}\n\nclass Bardo {\n    static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n        const bardo = new this(delegate, permanentElementMap);\n        bardo.enter();\n        await callback();\n        bardo.leave();\n    }\n    constructor(delegate, permanentElementMap) {\n        this.delegate = delegate;\n        this.permanentElementMap = permanentElementMap;\n    }\n    enter() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n            this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n            this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n        }\n    }\n    leave() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement] = this.permanentElementMap[id];\n            this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n            this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n            this.delegate.leavingBardo(currentPermanentElement);\n        }\n    }\n    replaceNewPermanentElementWithPlaceholder(permanentElement) {\n        const placeholder = createPlaceholderForPermanentElement(permanentElement);\n        permanentElement.replaceWith(placeholder);\n    }\n    replaceCurrentPermanentElementWithClone(permanentElement) {\n        const clone = permanentElement.cloneNode(true);\n        permanentElement.replaceWith(clone);\n    }\n    replacePlaceholderWithPermanentElement(permanentElement) {\n        const placeholder = this.getPlaceholderById(permanentElement.id);\n        placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n    }\n    getPlaceholderById(id) {\n        return this.placeholders.find((element) => element.content == id);\n    }\n    get placeholders() {\n        return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n    }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n    const element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n    element.setAttribute(\"content\", permanentElement.id);\n    return element;\n}\n\nclass Renderer {\n    constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        this.activeElement = null;\n        this.currentSnapshot = currentSnapshot;\n        this.newSnapshot = newSnapshot;\n        this.isPreview = isPreview;\n        this.willRender = willRender;\n        this.renderElement = renderElement;\n        this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n    }\n    get shouldRender() {\n        return true;\n    }\n    get reloadReason() {\n        return;\n    }\n    prepareToRender() {\n        return;\n    }\n    finishRendering() {\n        if (this.resolvingFunctions) {\n            this.resolvingFunctions.resolve();\n            delete this.resolvingFunctions;\n        }\n    }\n    async preservingPermanentElements(callback) {\n        await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n    }\n    focusFirstAutofocusableElement() {\n        const element = this.connectedSnapshot.firstAutofocusableElement;\n        if (elementIsFocusable(element)) {\n            element.focus();\n        }\n    }\n    enteringBardo(currentPermanentElement) {\n        if (this.activeElement)\n            return;\n        if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n            this.activeElement = this.currentSnapshot.activeElement;\n        }\n    }\n    leavingBardo(currentPermanentElement) {\n        if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n            this.activeElement.focus();\n            this.activeElement = null;\n        }\n    }\n    get connectedSnapshot() {\n        return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n    }\n    get currentElement() {\n        return this.currentSnapshot.element;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    get permanentElementMap() {\n        return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n    }\n}\nfunction elementIsFocusable(element) {\n    return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        var _a;\n        const destinationRange = document.createRange();\n        destinationRange.selectNodeContents(currentElement);\n        destinationRange.deleteContents();\n        const frameElement = newElement;\n        const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n        if (sourceRange) {\n            sourceRange.selectNodeContents(frameElement);\n            currentElement.appendChild(sourceRange.extractContents());\n        }\n    }\n    constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n        this.delegate = delegate;\n    }\n    get shouldRender() {\n        return true;\n    }\n    async render() {\n        await nextAnimationFrame();\n        this.preservingPermanentElements(() => {\n            this.loadFrameElement();\n        });\n        this.scrollFrameIntoView();\n        await nextAnimationFrame();\n        this.focusFirstAutofocusableElement();\n        await nextAnimationFrame();\n        this.activateScriptElements();\n    }\n    loadFrameElement() {\n        this.delegate.willRenderFrame(this.currentElement, this.newElement);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    scrollFrameIntoView() {\n        if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n            const element = this.currentElement.firstElementChild;\n            const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n            const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n            if (element) {\n                element.scrollIntoView({ block, behavior });\n                return true;\n            }\n        }\n        return false;\n    }\n    activateScriptElements() {\n        for (const inertScriptElement of this.newScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    get newScriptElements() {\n        return this.currentElement.querySelectorAll(\"script\");\n    }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n    if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\nfunction readScrollBehavior(value, defaultValue) {\n    if (value == \"auto\" || value == \"smooth\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\n\nclass ProgressBar {\n    static get defaultCSS() {\n        return unindent `\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `;\n    }\n    constructor() {\n        this.hiding = false;\n        this.value = 0;\n        this.visible = false;\n        this.trickle = () => {\n            this.setValue(this.value + Math.random() / 100);\n        };\n        this.stylesheetElement = this.createStylesheetElement();\n        this.progressElement = this.createProgressElement();\n        this.installStylesheetElement();\n        this.setValue(0);\n    }\n    show() {\n        if (!this.visible) {\n            this.visible = true;\n            this.installProgressElement();\n            this.startTrickling();\n        }\n    }\n    hide() {\n        if (this.visible && !this.hiding) {\n            this.hiding = true;\n            this.fadeProgressElement(() => {\n                this.uninstallProgressElement();\n                this.stopTrickling();\n                this.visible = false;\n                this.hiding = false;\n            });\n        }\n    }\n    setValue(value) {\n        this.value = value;\n        this.refresh();\n    }\n    installStylesheetElement() {\n        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    }\n    installProgressElement() {\n        this.progressElement.style.width = \"0\";\n        this.progressElement.style.opacity = \"1\";\n        document.documentElement.insertBefore(this.progressElement, document.body);\n        this.refresh();\n    }\n    fadeProgressElement(callback) {\n        this.progressElement.style.opacity = \"0\";\n        setTimeout(callback, ProgressBar.animationDuration * 1.5);\n    }\n    uninstallProgressElement() {\n        if (this.progressElement.parentNode) {\n            document.documentElement.removeChild(this.progressElement);\n        }\n    }\n    startTrickling() {\n        if (!this.trickleInterval) {\n            this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n        }\n    }\n    stopTrickling() {\n        window.clearInterval(this.trickleInterval);\n        delete this.trickleInterval;\n    }\n    refresh() {\n        requestAnimationFrame(() => {\n            this.progressElement.style.width = `${10 + this.value * 90}%`;\n        });\n    }\n    createStylesheetElement() {\n        const element = document.createElement(\"style\");\n        element.type = \"text/css\";\n        element.textContent = ProgressBar.defaultCSS;\n        if (this.cspNonce) {\n            element.nonce = this.cspNonce;\n        }\n        return element;\n    }\n    createProgressElement() {\n        const element = document.createElement(\"div\");\n        element.className = \"turbo-progress-bar\";\n        return element;\n    }\n    get cspNonce() {\n        return getMetaContent(\"csp-nonce\");\n    }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n    constructor() {\n        super(...arguments);\n        this.detailsByOuterHTML = this.children\n            .filter((element) => !elementIsNoscript(element))\n            .map((element) => elementWithoutNonce(element))\n            .reduce((result, element) => {\n            const { outerHTML } = element;\n            const details = outerHTML in result\n                ? result[outerHTML]\n                : {\n                    type: elementType(element),\n                    tracked: elementIsTracked(element),\n                    elements: [],\n                };\n            return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n        }, {});\n    }\n    get trackedElementSignature() {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n            .join(\"\");\n    }\n    getScriptElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n    }\n    getStylesheetElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n    }\n    getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n            .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n            .filter(({ type }) => type == matchedType)\n            .map(({ elements: [element] }) => element);\n    }\n    get provisionalElements() {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n            if (type == null && !tracked) {\n                return [...result, ...elements];\n            }\n            else if (elements.length > 1) {\n                return [...result, ...elements.slice(1)];\n            }\n            else {\n                return result;\n            }\n        }, []);\n    }\n    getMetaValue(name) {\n        const element = this.findMetaElementByName(name);\n        return element ? element.getAttribute(\"content\") : null;\n    }\n    findMetaElementByName(name) {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n            return elementIsMetaElementWithName(element, name) ? element : result;\n        }, undefined);\n    }\n}\nfunction elementType(element) {\n    if (elementIsScript(element)) {\n        return \"script\";\n    }\n    else if (elementIsStylesheet(element)) {\n        return \"stylesheet\";\n    }\n}\nfunction elementIsTracked(element) {\n    return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n    const tagName = element.localName;\n    return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n    const tagName = element.localName;\n    return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n    const tagName = element.localName;\n    return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n    const tagName = element.localName;\n    return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n    if (element.hasAttribute(\"nonce\")) {\n        element.setAttribute(\"nonce\", \"\");\n    }\n    return element;\n}\n\nclass PageSnapshot extends Snapshot {\n    static fromHTMLString(html = \"\") {\n        return this.fromDocument(parseHTMLDocument(html));\n    }\n    static fromElement(element) {\n        return this.fromDocument(element.ownerDocument);\n    }\n    static fromDocument({ head, body }) {\n        return new this(body, new HeadSnapshot(head));\n    }\n    constructor(element, headSnapshot) {\n        super(element);\n        this.headSnapshot = headSnapshot;\n    }\n    clone() {\n        const clonedElement = this.element.cloneNode(true);\n        const selectElements = this.element.querySelectorAll(\"select\");\n        const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n        for (const [index, source] of selectElements.entries()) {\n            const clone = clonedSelectElements[index];\n            for (const option of clone.selectedOptions)\n                option.selected = false;\n            for (const option of source.selectedOptions)\n                clone.options[option.index].selected = true;\n        }\n        for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n            clonedPasswordInput.value = \"\";\n        }\n        return new PageSnapshot(clonedElement, this.headSnapshot);\n    }\n    get headElement() {\n        return this.headSnapshot.element;\n    }\n    get rootLocation() {\n        var _a;\n        const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    get cacheControlValue() {\n        return this.getSetting(\"cache-control\");\n    }\n    get isPreviewable() {\n        return this.cacheControlValue != \"no-preview\";\n    }\n    get isCacheable() {\n        return this.cacheControlValue != \"no-cache\";\n    }\n    get isVisitable() {\n        return this.getSetting(\"visit-control\") != \"reload\";\n    }\n    getSetting(name) {\n        return this.headSnapshot.getMetaValue(`turbo-${name}`);\n    }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n    TimingMetric[\"visitStart\"] = \"visitStart\";\n    TimingMetric[\"requestStart\"] = \"requestStart\";\n    TimingMetric[\"requestEnd\"] = \"requestEnd\";\n    TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n    VisitState[\"initialized\"] = \"initialized\";\n    VisitState[\"started\"] = \"started\";\n    VisitState[\"canceled\"] = \"canceled\";\n    VisitState[\"failed\"] = \"failed\";\n    VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n    action: \"advance\",\n    historyChanged: false,\n    visitCachedSnapshot: () => { },\n    willRender: true,\n    updateHistory: true,\n    shouldCacheSnapshot: true,\n    acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n    SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n    SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n    SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n    constructor(delegate, location, restorationIdentifier, options = {}) {\n        this.identifier = uuid();\n        this.timingMetrics = {};\n        this.followedRedirect = false;\n        this.historyChanged = false;\n        this.scrolled = false;\n        this.shouldCacheSnapshot = true;\n        this.acceptsStreamResponse = false;\n        this.snapshotCached = false;\n        this.state = VisitState.initialized;\n        this.delegate = delegate;\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier || uuid();\n        const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n        this.action = action;\n        this.historyChanged = historyChanged;\n        this.referrer = referrer;\n        this.snapshot = snapshot;\n        this.snapshotHTML = snapshotHTML;\n        this.response = response;\n        this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n        this.visitCachedSnapshot = visitCachedSnapshot;\n        this.willRender = willRender;\n        this.updateHistory = updateHistory;\n        this.scrolled = !willRender;\n        this.shouldCacheSnapshot = shouldCacheSnapshot;\n        this.acceptsStreamResponse = acceptsStreamResponse;\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    get restorationData() {\n        return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n    }\n    get silent() {\n        return this.isSamePage;\n    }\n    start() {\n        if (this.state == VisitState.initialized) {\n            this.recordTimingMetric(TimingMetric.visitStart);\n            this.state = VisitState.started;\n            this.adapter.visitStarted(this);\n            this.delegate.visitStarted(this);\n        }\n    }\n    cancel() {\n        if (this.state == VisitState.started) {\n            if (this.request) {\n                this.request.cancel();\n            }\n            this.cancelRender();\n            this.state = VisitState.canceled;\n        }\n    }\n    complete() {\n        if (this.state == VisitState.started) {\n            this.recordTimingMetric(TimingMetric.visitEnd);\n            this.state = VisitState.completed;\n            this.followRedirect();\n            if (!this.followedRedirect) {\n                this.adapter.visitCompleted(this);\n                this.delegate.visitCompleted(this);\n            }\n        }\n    }\n    fail() {\n        if (this.state == VisitState.started) {\n            this.state = VisitState.failed;\n            this.adapter.visitFailed(this);\n        }\n    }\n    changeHistory() {\n        var _a;\n        if (!this.historyChanged && this.updateHistory) {\n            const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n            const method = getHistoryMethodForAction(actionForHistory);\n            this.history.update(method, this.location, this.restorationIdentifier);\n            this.historyChanged = true;\n        }\n    }\n    issueRequest() {\n        if (this.hasPreloadedResponse()) {\n            this.simulateRequest();\n        }\n        else if (this.shouldIssueRequest() && !this.request) {\n            this.request = new FetchRequest(this, FetchMethod.get, this.location);\n            this.request.perform();\n        }\n    }\n    simulateRequest() {\n        if (this.response) {\n            this.startRequest();\n            this.recordResponse();\n            this.finishRequest();\n        }\n    }\n    startRequest() {\n        this.recordTimingMetric(TimingMetric.requestStart);\n        this.adapter.visitRequestStarted(this);\n    }\n    recordResponse(response = this.response) {\n        this.response = response;\n        if (response) {\n            const { statusCode } = response;\n            if (isSuccessful(statusCode)) {\n                this.adapter.visitRequestCompleted(this);\n            }\n            else {\n                this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n            }\n        }\n    }\n    finishRequest() {\n        this.recordTimingMetric(TimingMetric.requestEnd);\n        this.adapter.visitRequestFinished(this);\n    }\n    loadResponse() {\n        if (this.response) {\n            const { statusCode, responseHTML } = this.response;\n            this.render(async () => {\n                if (this.shouldCacheSnapshot)\n                    this.cacheSnapshot();\n                if (this.view.renderPromise)\n                    await this.view.renderPromise;\n                if (isSuccessful(statusCode) && responseHTML != null) {\n                    await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    this.complete();\n                }\n                else {\n                    await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n                    this.adapter.visitRendered(this);\n                    this.fail();\n                }\n            });\n        }\n    }\n    getCachedSnapshot() {\n        const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n        if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n            if (this.action == \"restore\" || snapshot.isPreviewable) {\n                return snapshot;\n            }\n        }\n    }\n    getPreloadedSnapshot() {\n        if (this.snapshotHTML) {\n            return PageSnapshot.fromHTMLString(this.snapshotHTML);\n        }\n    }\n    hasCachedSnapshot() {\n        return this.getCachedSnapshot() != null;\n    }\n    loadCachedSnapshot() {\n        const snapshot = this.getCachedSnapshot();\n        if (snapshot) {\n            const isPreview = this.shouldIssueRequest();\n            this.render(async () => {\n                this.cacheSnapshot();\n                if (this.isSamePage) {\n                    this.adapter.visitRendered(this);\n                }\n                else {\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    if (!isPreview) {\n                        this.complete();\n                    }\n                }\n            });\n        }\n    }\n    followRedirect() {\n        var _a;\n        if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n            this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n                action: \"replace\",\n                response: this.response,\n                shouldCacheSnapshot: false,\n                willRender: false,\n            });\n            this.followedRedirect = true;\n        }\n    }\n    goToSamePageAnchor() {\n        if (this.isSamePage) {\n            this.render(async () => {\n                this.cacheSnapshot();\n                this.performScroll();\n                this.changeHistory();\n                this.adapter.visitRendered(this);\n            });\n        }\n    }\n    prepareRequest(request) {\n        if (this.acceptsStreamResponse) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted() {\n        this.startRequest();\n    }\n    requestPreventedHandlingResponse(_request, _response) { }\n    async requestSucceededWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.redirectedToLocation = response.redirected ? response.location : undefined;\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    async requestFailedWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    requestErrored(_request, _error) {\n        this.recordResponse({\n            statusCode: SystemStatusCode.networkFailure,\n            redirected: false,\n        });\n    }\n    requestFinished() {\n        this.finishRequest();\n    }\n    performScroll() {\n        if (!this.scrolled && !this.view.forceReloaded) {\n            if (this.action == \"restore\") {\n                this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            else {\n                this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            if (this.isSamePage) {\n                this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n            }\n            this.scrolled = true;\n        }\n    }\n    scrollToRestoredPosition() {\n        const { scrollPosition } = this.restorationData;\n        if (scrollPosition) {\n            this.view.scrollToPosition(scrollPosition);\n            return true;\n        }\n    }\n    scrollToAnchor() {\n        const anchor = getAnchor(this.location);\n        if (anchor != null) {\n            this.view.scrollToAnchor(anchor);\n            return true;\n        }\n    }\n    recordTimingMetric(metric) {\n        this.timingMetrics[metric] = new Date().getTime();\n    }\n    getTimingMetrics() {\n        return Object.assign({}, this.timingMetrics);\n    }\n    getHistoryMethodForAction(action) {\n        switch (action) {\n            case \"replace\":\n                return history.replaceState;\n            case \"advance\":\n            case \"restore\":\n                return history.pushState;\n        }\n    }\n    hasPreloadedResponse() {\n        return typeof this.response == \"object\";\n    }\n    shouldIssueRequest() {\n        if (this.isSamePage) {\n            return false;\n        }\n        else if (this.action == \"restore\") {\n            return !this.hasCachedSnapshot();\n        }\n        else {\n            return this.willRender;\n        }\n    }\n    cacheSnapshot() {\n        if (!this.snapshotCached) {\n            this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n            this.snapshotCached = true;\n        }\n    }\n    async render(callback) {\n        this.cancelRender();\n        await new Promise((resolve) => {\n            this.frame = requestAnimationFrame(() => resolve());\n        });\n        await callback();\n        delete this.frame;\n    }\n    cancelRender() {\n        if (this.frame) {\n            cancelAnimationFrame(this.frame);\n            delete this.frame;\n        }\n    }\n}\nfunction isSuccessful(statusCode) {\n    return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n    constructor(session) {\n        this.progressBar = new ProgressBar();\n        this.showProgressBar = () => {\n            this.progressBar.show();\n        };\n        this.session = session;\n    }\n    visitProposedToLocation(location, options) {\n        this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n    }\n    visitStarted(visit) {\n        this.location = visit.location;\n        visit.loadCachedSnapshot();\n        visit.issueRequest();\n        visit.goToSamePageAnchor();\n    }\n    visitRequestStarted(visit) {\n        this.progressBar.setValue(0);\n        if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n            this.showVisitProgressBarAfterDelay();\n        }\n        else {\n            this.showProgressBar();\n        }\n    }\n    visitRequestCompleted(visit) {\n        visit.loadResponse();\n    }\n    visitRequestFailedWithStatusCode(visit, statusCode) {\n        switch (statusCode) {\n            case SystemStatusCode.networkFailure:\n            case SystemStatusCode.timeoutFailure:\n            case SystemStatusCode.contentTypeMismatch:\n                return this.reload({\n                    reason: \"request_failed\",\n                    context: {\n                        statusCode,\n                    },\n                });\n            default:\n                return visit.loadResponse();\n        }\n    }\n    visitRequestFinished(_visit) {\n        this.progressBar.setValue(1);\n        this.hideVisitProgressBar();\n    }\n    visitCompleted(_visit) { }\n    pageInvalidated(reason) {\n        this.reload(reason);\n    }\n    visitFailed(_visit) { }\n    visitRendered(_visit) { }\n    formSubmissionStarted(_formSubmission) {\n        this.progressBar.setValue(0);\n        this.showFormProgressBarAfterDelay();\n    }\n    formSubmissionFinished(_formSubmission) {\n        this.progressBar.setValue(1);\n        this.hideFormProgressBar();\n    }\n    showVisitProgressBarAfterDelay() {\n        this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n    hideVisitProgressBar() {\n        this.progressBar.hide();\n        if (this.visitProgressBarTimeout != null) {\n            window.clearTimeout(this.visitProgressBarTimeout);\n            delete this.visitProgressBarTimeout;\n        }\n    }\n    showFormProgressBarAfterDelay() {\n        if (this.formProgressBarTimeout == null) {\n            this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n        }\n    }\n    hideFormProgressBar() {\n        this.progressBar.hide();\n        if (this.formProgressBarTimeout != null) {\n            window.clearTimeout(this.formProgressBarTimeout);\n            delete this.formProgressBarTimeout;\n        }\n    }\n    reload(reason) {\n        var _a;\n        dispatch(\"turbo:reload\", { detail: reason });\n        window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n    }\n    get navigator() {\n        return this.session.navigator;\n    }\n}\n\nclass CacheObserver {\n    constructor() {\n        this.selector = \"[data-turbo-temporary]\";\n        this.deprecatedSelector = \"[data-turbo-cache=false]\";\n        this.started = false;\n        this.removeTemporaryElements = ((_event) => {\n            for (const element of this.temporaryElements) {\n                element.remove();\n            }\n        });\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    get temporaryElements() {\n        return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation];\n    }\n    get temporaryElementsWithDeprecation() {\n        const elements = document.querySelectorAll(this.deprecatedSelector);\n        if (elements.length) {\n            console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`);\n        }\n        return [...elements];\n    }\n}\n\nclass FrameRedirector {\n    constructor(session, element) {\n        this.session = session;\n        this.element = element;\n        this.linkInterceptor = new LinkInterceptor(this, element);\n        this.formSubmitObserver = new FormSubmitObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n        this.formSubmitObserver.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n        this.formSubmitObserver.stop();\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldRedirect(element);\n    }\n    linkClickIntercepted(element, url, event) {\n        const frame = this.findFrameElement(element);\n        if (frame) {\n            frame.delegate.linkClickIntercepted(element, url, event);\n        }\n    }\n    willSubmitForm(element, submitter) {\n        return (element.closest(\"turbo-frame\") == null &&\n            this.shouldSubmit(element, submitter) &&\n            this.shouldRedirect(element, submitter));\n    }\n    formSubmitted(element, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        if (frame) {\n            frame.delegate.formSubmitted(element, submitter);\n        }\n    }\n    shouldSubmit(form, submitter) {\n        var _a;\n        const action = getAction(form, submitter);\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n        return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n    }\n    shouldRedirect(element, submitter) {\n        const isNavigatable = element instanceof HTMLFormElement\n            ? this.session.submissionIsNavigatable(element, submitter)\n            : this.session.elementIsNavigatable(element);\n        if (isNavigatable) {\n            const frame = this.findFrameElement(element, submitter);\n            return frame ? frame != element.closest(\"turbo-frame\") : false;\n        }\n        else {\n            return false;\n        }\n    }\n    findFrameElement(element, submitter) {\n        const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n        if (id && id != \"_top\") {\n            const frame = this.element.querySelector(`#${id}:not([disabled])`);\n            if (frame instanceof FrameElement) {\n                return frame;\n            }\n        }\n    }\n}\n\nclass History {\n    constructor(delegate) {\n        this.restorationIdentifier = uuid();\n        this.restorationData = {};\n        this.started = false;\n        this.pageLoaded = false;\n        this.onPopState = (event) => {\n            if (this.shouldHandlePopState()) {\n                const { turbo } = event.state || {};\n                if (turbo) {\n                    this.location = new URL(window.location.href);\n                    const { restorationIdentifier } = turbo;\n                    this.restorationIdentifier = restorationIdentifier;\n                    this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n                }\n            }\n        };\n        this.onPageLoad = async (_event) => {\n            await nextMicrotask();\n            this.pageLoaded = true;\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"popstate\", this.onPopState, false);\n            addEventListener(\"load\", this.onPageLoad, false);\n            this.started = true;\n            this.replace(new URL(window.location.href));\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"popstate\", this.onPopState, false);\n            removeEventListener(\"load\", this.onPageLoad, false);\n            this.started = false;\n        }\n    }\n    push(location, restorationIdentifier) {\n        this.update(history.pushState, location, restorationIdentifier);\n    }\n    replace(location, restorationIdentifier) {\n        this.update(history.replaceState, location, restorationIdentifier);\n    }\n    update(method, location, restorationIdentifier = uuid()) {\n        const state = { turbo: { restorationIdentifier } };\n        method.call(history, state, \"\", location.href);\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier;\n    }\n    getRestorationDataForIdentifier(restorationIdentifier) {\n        return this.restorationData[restorationIdentifier] || {};\n    }\n    updateRestorationData(additionalData) {\n        const { restorationIdentifier } = this;\n        const restorationData = this.restorationData[restorationIdentifier];\n        this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n    }\n    assumeControlOfScrollRestoration() {\n        var _a;\n        if (!this.previousScrollRestoration) {\n            this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n            history.scrollRestoration = \"manual\";\n        }\n    }\n    relinquishControlOfScrollRestoration() {\n        if (this.previousScrollRestoration) {\n            history.scrollRestoration = this.previousScrollRestoration;\n            delete this.previousScrollRestoration;\n        }\n    }\n    shouldHandlePopState() {\n        return this.pageIsLoaded();\n    }\n    pageIsLoaded() {\n        return this.pageLoaded || document.readyState == \"complete\";\n    }\n}\n\nclass Navigator {\n    constructor(delegate) {\n        this.delegate = delegate;\n    }\n    proposeVisit(location, options = {}) {\n        if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n            if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n                this.delegate.visitProposedToLocation(location, options);\n            }\n            else {\n                window.location.href = location.toString();\n            }\n        }\n    }\n    startVisit(locatable, restorationIdentifier, options = {}) {\n        this.stop();\n        this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n        this.currentVisit.start();\n    }\n    submitForm(form, submitter) {\n        this.stop();\n        this.formSubmission = new FormSubmission(this, form, submitter, true);\n        this.formSubmission.start();\n    }\n    stop() {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n            delete this.formSubmission;\n        }\n        if (this.currentVisit) {\n            this.currentVisit.cancel();\n            delete this.currentVisit;\n        }\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    formSubmissionStarted(formSubmission) {\n        if (typeof this.adapter.formSubmissionStarted === \"function\") {\n            this.adapter.formSubmissionStarted(formSubmission);\n        }\n    }\n    async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n        if (formSubmission == this.formSubmission) {\n            const responseHTML = await fetchResponse.responseHTML;\n            if (responseHTML) {\n                const shouldCacheSnapshot = formSubmission.isSafe;\n                if (!shouldCacheSnapshot) {\n                    this.view.clearSnapshotCache();\n                }\n                const { statusCode, redirected } = fetchResponse;\n                const action = this.getActionForFormSubmission(formSubmission);\n                const visitOptions = {\n                    action,\n                    shouldCacheSnapshot,\n                    response: { statusCode, responseHTML, redirected },\n                };\n                this.proposeVisit(fetchResponse.location, visitOptions);\n            }\n        }\n    }\n    async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        const responseHTML = await fetchResponse.responseHTML;\n        if (responseHTML) {\n            const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n            if (fetchResponse.serverError) {\n                await this.view.renderError(snapshot, this.currentVisit);\n            }\n            else {\n                await this.view.renderPage(snapshot, false, true, this.currentVisit);\n            }\n            this.view.scrollToTop();\n            this.view.clearSnapshotCache();\n        }\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished(formSubmission) {\n        if (typeof this.adapter.formSubmissionFinished === \"function\") {\n            this.adapter.formSubmissionFinished(formSubmission);\n        }\n    }\n    visitStarted(visit) {\n        this.delegate.visitStarted(visit);\n    }\n    visitCompleted(visit) {\n        this.delegate.visitCompleted(visit);\n    }\n    locationWithActionIsSamePage(location, action) {\n        const anchor = getAnchor(location);\n        const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n        const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n        return (action !== \"replace\" &&\n            getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n            (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    getActionForFormSubmission({ submitter, formElement }) {\n        return getVisitAction(submitter, formElement) || \"advance\";\n    }\n}\n\nvar PageStage;\n(function (PageStage) {\n    PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n    PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n    PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n    PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n    constructor(delegate) {\n        this.stage = PageStage.initial;\n        this.started = false;\n        this.interpretReadyState = () => {\n            const { readyState } = this;\n            if (readyState == \"interactive\") {\n                this.pageIsInteractive();\n            }\n            else if (readyState == \"complete\") {\n                this.pageIsComplete();\n            }\n        };\n        this.pageWillUnload = () => {\n            this.delegate.pageWillUnload();\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            if (this.stage == PageStage.initial) {\n                this.stage = PageStage.loading;\n            }\n            document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n            addEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n            removeEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = false;\n        }\n    }\n    pageIsInteractive() {\n        if (this.stage == PageStage.loading) {\n            this.stage = PageStage.interactive;\n            this.delegate.pageBecameInteractive();\n        }\n    }\n    pageIsComplete() {\n        this.pageIsInteractive();\n        if (this.stage == PageStage.interactive) {\n            this.stage = PageStage.complete;\n            this.delegate.pageLoaded();\n        }\n    }\n    get readyState() {\n        return document.readyState;\n    }\n}\n\nclass ScrollObserver {\n    constructor(delegate) {\n        this.started = false;\n        this.onScroll = () => {\n            this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"scroll\", this.onScroll, false);\n            this.onScroll();\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"scroll\", this.onScroll, false);\n            this.started = false;\n        }\n    }\n    updatePosition(position) {\n        this.delegate.scrollPositionChanged(position);\n    }\n}\n\nclass StreamMessageRenderer {\n    render({ fragment }) {\n        Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n    }\n    enteringBardo(currentPermanentElement, newPermanentElement) {\n        newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n    }\n    leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n    const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n    const permanentElementMap = {};\n    for (const permanentElementInDocument of permanentElementsInDocument) {\n        const { id } = permanentElementInDocument;\n        for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n            const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n            if (elementInStream) {\n                permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n            }\n        }\n    }\n    return permanentElementMap;\n}\n\nclass StreamObserver {\n    constructor(delegate) {\n        this.sources = new Set();\n        this.started = false;\n        this.inspectFetchResponse = ((event) => {\n            const response = fetchResponseFromEvent(event);\n            if (response && fetchResponseIsStream(response)) {\n                event.preventDefault();\n                this.receiveMessageResponse(response);\n            }\n        });\n        this.receiveMessageEvent = (event) => {\n            if (this.started && typeof event.data == \"string\") {\n                this.receiveMessageHTML(event.data);\n            }\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    connectStreamSource(source) {\n        if (!this.streamSourceIsConnected(source)) {\n            this.sources.add(source);\n            source.addEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    disconnectStreamSource(source) {\n        if (this.streamSourceIsConnected(source)) {\n            this.sources.delete(source);\n            source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    streamSourceIsConnected(source) {\n        return this.sources.has(source);\n    }\n    async receiveMessageResponse(response) {\n        const html = await response.responseHTML;\n        if (html) {\n            this.receiveMessageHTML(html);\n        }\n    }\n    receiveMessageHTML(html) {\n        this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n    }\n}\nfunction fetchResponseFromEvent(event) {\n    var _a;\n    const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n    if (fetchResponse instanceof FetchResponse) {\n        return fetchResponse;\n    }\n}\nfunction fetchResponseIsStream(response) {\n    var _a;\n    const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n    return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        const { documentElement, body } = document;\n        documentElement.replaceChild(newElement, body);\n    }\n    async render() {\n        this.replaceHeadAndBody();\n        this.activateScriptElements();\n    }\n    replaceHeadAndBody() {\n        const { documentElement, head } = document;\n        documentElement.replaceChild(this.newHead, head);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    activateScriptElements() {\n        for (const replaceableElement of this.scriptElements) {\n            const parentNode = replaceableElement.parentNode;\n            if (parentNode) {\n                const element = activateScriptElement(replaceableElement);\n                parentNode.replaceChild(element, replaceableElement);\n            }\n        }\n    }\n    get newHead() {\n        return this.newSnapshot.headSnapshot.element;\n    }\n    get scriptElements() {\n        return document.documentElement.querySelectorAll(\"script\");\n    }\n}\n\nclass PageRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        if (document.body && newElement instanceof HTMLBodyElement) {\n            document.body.replaceWith(newElement);\n        }\n        else {\n            document.documentElement.appendChild(newElement);\n        }\n    }\n    get shouldRender() {\n        return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n    }\n    get reloadReason() {\n        if (!this.newSnapshot.isVisitable) {\n            return {\n                reason: \"turbo_visit_control_is_reload\",\n            };\n        }\n        if (!this.trackedElementsAreIdentical) {\n            return {\n                reason: \"tracked_element_mismatch\",\n            };\n        }\n    }\n    async prepareToRender() {\n        await this.mergeHead();\n    }\n    async render() {\n        if (this.willRender) {\n            await this.replaceBody();\n        }\n    }\n    finishRendering() {\n        super.finishRendering();\n        if (!this.isPreview) {\n            this.focusFirstAutofocusableElement();\n        }\n    }\n    get currentHeadSnapshot() {\n        return this.currentSnapshot.headSnapshot;\n    }\n    get newHeadSnapshot() {\n        return this.newSnapshot.headSnapshot;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    async mergeHead() {\n        const mergedHeadElements = this.mergeProvisionalElements();\n        const newStylesheetElements = this.copyNewHeadStylesheetElements();\n        this.copyNewHeadScriptElements();\n        await mergedHeadElements;\n        await newStylesheetElements;\n    }\n    async replaceBody() {\n        await this.preservingPermanentElements(async () => {\n            this.activateNewBody();\n            await this.assignNewBody();\n        });\n    }\n    get trackedElementsAreIdentical() {\n        return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n    }\n    async copyNewHeadStylesheetElements() {\n        const loadingElements = [];\n        for (const element of this.newHeadStylesheetElements) {\n            loadingElements.push(waitForLoad(element));\n            document.head.appendChild(element);\n        }\n        await Promise.all(loadingElements);\n    }\n    copyNewHeadScriptElements() {\n        for (const element of this.newHeadScriptElements) {\n            document.head.appendChild(activateScriptElement(element));\n        }\n    }\n    async mergeProvisionalElements() {\n        const newHeadElements = [...this.newHeadProvisionalElements];\n        for (const element of this.currentHeadProvisionalElements) {\n            if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n                document.head.removeChild(element);\n            }\n        }\n        for (const element of newHeadElements) {\n            document.head.appendChild(element);\n        }\n    }\n    isCurrentElementInElementList(element, elementList) {\n        for (const [index, newElement] of elementList.entries()) {\n            if (element.tagName == \"TITLE\") {\n                if (newElement.tagName != \"TITLE\") {\n                    continue;\n                }\n                if (element.innerHTML == newElement.innerHTML) {\n                    elementList.splice(index, 1);\n                    return true;\n                }\n            }\n            if (newElement.isEqualNode(element)) {\n                elementList.splice(index, 1);\n                return true;\n            }\n        }\n        return false;\n    }\n    removeCurrentHeadProvisionalElements() {\n        for (const element of this.currentHeadProvisionalElements) {\n            document.head.removeChild(element);\n        }\n    }\n    copyNewHeadProvisionalElements() {\n        for (const element of this.newHeadProvisionalElements) {\n            document.head.appendChild(element);\n        }\n    }\n    activateNewBody() {\n        document.adoptNode(this.newElement);\n        this.activateNewBodyScriptElements();\n    }\n    activateNewBodyScriptElements() {\n        for (const inertScriptElement of this.newBodyScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    async assignNewBody() {\n        await this.renderElement(this.currentElement, this.newElement);\n    }\n    get newHeadStylesheetElements() {\n        return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get newHeadScriptElements() {\n        return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get currentHeadProvisionalElements() {\n        return this.currentHeadSnapshot.provisionalElements;\n    }\n    get newHeadProvisionalElements() {\n        return this.newHeadSnapshot.provisionalElements;\n    }\n    get newBodyScriptElements() {\n        return this.newElement.querySelectorAll(\"script\");\n    }\n}\n\nclass SnapshotCache {\n    constructor(size) {\n        this.keys = [];\n        this.snapshots = {};\n        this.size = size;\n    }\n    has(location) {\n        return toCacheKey(location) in this.snapshots;\n    }\n    get(location) {\n        if (this.has(location)) {\n            const snapshot = this.read(location);\n            this.touch(location);\n            return snapshot;\n        }\n    }\n    put(location, snapshot) {\n        this.write(location, snapshot);\n        this.touch(location);\n        return snapshot;\n    }\n    clear() {\n        this.snapshots = {};\n    }\n    read(location) {\n        return this.snapshots[toCacheKey(location)];\n    }\n    write(location, snapshot) {\n        this.snapshots[toCacheKey(location)] = snapshot;\n    }\n    touch(location) {\n        const key = toCacheKey(location);\n        const index = this.keys.indexOf(key);\n        if (index > -1)\n            this.keys.splice(index, 1);\n        this.keys.unshift(key);\n        this.trim();\n    }\n    trim() {\n        for (const key of this.keys.splice(this.size)) {\n            delete this.snapshots[key];\n        }\n    }\n}\n\nclass PageView extends View {\n    constructor() {\n        super(...arguments);\n        this.snapshotCache = new SnapshotCache(10);\n        this.lastRenderedLocation = new URL(location.href);\n        this.forceReloaded = false;\n    }\n    renderPage(snapshot, isPreview = false, willRender = true, visit) {\n        const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n        if (!renderer.shouldRender) {\n            this.forceReloaded = true;\n        }\n        else {\n            visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        }\n        return this.render(renderer);\n    }\n    renderError(snapshot, visit) {\n        visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n        return this.render(renderer);\n    }\n    clearSnapshotCache() {\n        this.snapshotCache.clear();\n    }\n    async cacheSnapshot(snapshot = this.snapshot) {\n        if (snapshot.isCacheable) {\n            this.delegate.viewWillCacheSnapshot();\n            const { lastRenderedLocation: location } = this;\n            await nextEventLoopTick();\n            const cachedSnapshot = snapshot.clone();\n            this.snapshotCache.put(location, cachedSnapshot);\n            return cachedSnapshot;\n        }\n    }\n    getCachedSnapshotForLocation(location) {\n        return this.snapshotCache.get(location);\n    }\n    get snapshot() {\n        return PageSnapshot.fromElement(this.element);\n    }\n}\n\nclass Preloader {\n    constructor(delegate) {\n        this.selector = \"a[data-turbo-preload]\";\n        this.delegate = delegate;\n    }\n    get snapshotCache() {\n        return this.delegate.navigator.view.snapshotCache;\n    }\n    start() {\n        if (document.readyState === \"loading\") {\n            return document.addEventListener(\"DOMContentLoaded\", () => {\n                this.preloadOnLoadLinksForView(document.body);\n            });\n        }\n        else {\n            this.preloadOnLoadLinksForView(document.body);\n        }\n    }\n    preloadOnLoadLinksForView(element) {\n        for (const link of element.querySelectorAll(this.selector)) {\n            this.preloadURL(link);\n        }\n    }\n    async preloadURL(link) {\n        const location = new URL(link.href);\n        if (this.snapshotCache.has(location)) {\n            return;\n        }\n        try {\n            const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n            const responseText = await response.text();\n            const snapshot = PageSnapshot.fromHTMLString(responseText);\n            this.snapshotCache.put(location, snapshot);\n        }\n        catch (_) {\n        }\n    }\n}\n\nclass Session {\n    constructor() {\n        this.navigator = new Navigator(this);\n        this.history = new History(this);\n        this.preloader = new Preloader(this);\n        this.view = new PageView(this, document.documentElement);\n        this.adapter = new BrowserAdapter(this);\n        this.pageObserver = new PageObserver(this);\n        this.cacheObserver = new CacheObserver();\n        this.linkClickObserver = new LinkClickObserver(this, window);\n        this.formSubmitObserver = new FormSubmitObserver(this, document);\n        this.scrollObserver = new ScrollObserver(this);\n        this.streamObserver = new StreamObserver(this);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n        this.frameRedirector = new FrameRedirector(this, document.documentElement);\n        this.streamMessageRenderer = new StreamMessageRenderer();\n        this.drive = true;\n        this.enabled = true;\n        this.progressBarDelay = 500;\n        this.started = false;\n        this.formMode = \"on\";\n    }\n    start() {\n        if (!this.started) {\n            this.pageObserver.start();\n            this.cacheObserver.start();\n            this.formLinkClickObserver.start();\n            this.linkClickObserver.start();\n            this.formSubmitObserver.start();\n            this.scrollObserver.start();\n            this.streamObserver.start();\n            this.frameRedirector.start();\n            this.history.start();\n            this.preloader.start();\n            this.started = true;\n            this.enabled = true;\n        }\n    }\n    disable() {\n        this.enabled = false;\n    }\n    stop() {\n        if (this.started) {\n            this.pageObserver.stop();\n            this.cacheObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkClickObserver.stop();\n            this.formSubmitObserver.stop();\n            this.scrollObserver.stop();\n            this.streamObserver.stop();\n            this.frameRedirector.stop();\n            this.history.stop();\n            this.started = false;\n        }\n    }\n    registerAdapter(adapter) {\n        this.adapter = adapter;\n    }\n    visit(location, options = {}) {\n        const frameElement = options.frame ? document.getElementById(options.frame) : null;\n        if (frameElement instanceof FrameElement) {\n            frameElement.src = location.toString();\n            frameElement.loaded;\n        }\n        else {\n            this.navigator.proposeVisit(expandURL(location), options);\n        }\n    }\n    connectStreamSource(source) {\n        this.streamObserver.connectStreamSource(source);\n    }\n    disconnectStreamSource(source) {\n        this.streamObserver.disconnectStreamSource(source);\n    }\n    renderStreamMessage(message) {\n        this.streamMessageRenderer.render(StreamMessage.wrap(message));\n    }\n    clearCache() {\n        this.view.clearSnapshotCache();\n    }\n    setProgressBarDelay(delay) {\n        this.progressBarDelay = delay;\n    }\n    setFormMode(mode) {\n        this.formMode = mode;\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n        if (this.enabled) {\n            this.navigator.startVisit(location, restorationIdentifier, {\n                action: \"restore\",\n                historyChanged: true,\n            });\n        }\n        else {\n            this.adapter.pageInvalidated({\n                reason: \"turbo_disabled\",\n            });\n        }\n    }\n    scrollPositionChanged(position) {\n        this.history.updateRestorationData({ scrollPosition: position });\n    }\n    willSubmitFormLinkToLocation(link, location) {\n        return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n    }\n    submittedFormLinkToLocation() { }\n    willFollowLinkToLocation(link, location, event) {\n        return (this.elementIsNavigatable(link) &&\n            locationIsVisitable(location, this.snapshot.rootLocation) &&\n            this.applicationAllowsFollowingLinkToLocation(link, location, event));\n    }\n    followedLinkToLocation(link, location) {\n        const action = this.getActionForLink(link);\n        const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n        this.visit(location.href, { action, acceptsStreamResponse });\n    }\n    allowsVisitingLocationWithAction(location, action) {\n        return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n    }\n    visitProposedToLocation(location, options) {\n        extendURLWithDeprecatedProperties(location);\n        this.adapter.visitProposedToLocation(location, options);\n    }\n    visitStarted(visit) {\n        if (!visit.acceptsStreamResponse) {\n            markAsBusy(document.documentElement);\n        }\n        extendURLWithDeprecatedProperties(visit.location);\n        if (!visit.silent) {\n            this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n        }\n    }\n    visitCompleted(visit) {\n        clearBusyState(document.documentElement);\n        this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    }\n    locationWithActionIsSamePage(location, action) {\n        return this.navigator.locationWithActionIsSamePage(location, action);\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n    }\n    willSubmitForm(form, submitter) {\n        const action = getAction(form, submitter);\n        return (this.submissionIsNavigatable(form, submitter) &&\n            locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n    }\n    formSubmitted(form, submitter) {\n        this.navigator.submitForm(form, submitter);\n    }\n    pageBecameInteractive() {\n        this.view.lastRenderedLocation = this.location;\n        this.notifyApplicationAfterPageLoad();\n    }\n    pageLoaded() {\n        this.history.assumeControlOfScrollRestoration();\n    }\n    pageWillUnload() {\n        this.history.relinquishControlOfScrollRestoration();\n    }\n    receivedMessageFromStream(message) {\n        this.renderStreamMessage(message);\n    }\n    viewWillCacheSnapshot() {\n        var _a;\n        if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n            this.notifyApplicationBeforeCachingSnapshot();\n        }\n    }\n    allowsImmediateRender({ element }, options) {\n        const event = this.notifyApplicationBeforeRender(element, options);\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) {\n        this.view.lastRenderedLocation = this.history.location;\n        this.notifyApplicationAfterRender();\n    }\n    preloadOnLoadLinksForView(element) {\n        this.preloader.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated(reason) {\n        this.adapter.pageInvalidated(reason);\n    }\n    frameLoaded(frame) {\n        this.notifyApplicationAfterFrameLoad(frame);\n    }\n    frameRendered(fetchResponse, frame) {\n        this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n    }\n    applicationAllowsFollowingLinkToLocation(link, location, ev) {\n        const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n        return !event.defaultPrevented;\n    }\n    applicationAllowsVisitingLocation(location) {\n        const event = this.notifyApplicationBeforeVisitingLocation(location);\n        return !event.defaultPrevented;\n    }\n    notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n        return dispatch(\"turbo:click\", {\n            target: link,\n            detail: { url: location.href, originalEvent: event },\n            cancelable: true,\n        });\n    }\n    notifyApplicationBeforeVisitingLocation(location) {\n        return dispatch(\"turbo:before-visit\", {\n            detail: { url: location.href },\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterVisitingLocation(location, action) {\n        return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n    }\n    notifyApplicationBeforeCachingSnapshot() {\n        return dispatch(\"turbo:before-cache\");\n    }\n    notifyApplicationBeforeRender(newBody, options) {\n        return dispatch(\"turbo:before-render\", {\n            detail: Object.assign({ newBody }, options),\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterRender() {\n        return dispatch(\"turbo:render\");\n    }\n    notifyApplicationAfterPageLoad(timing = {}) {\n        return dispatch(\"turbo:load\", {\n            detail: { url: this.location.href, timing },\n        });\n    }\n    notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n        dispatchEvent(new HashChangeEvent(\"hashchange\", {\n            oldURL: oldURL.toString(),\n            newURL: newURL.toString(),\n        }));\n    }\n    notifyApplicationAfterFrameLoad(frame) {\n        return dispatch(\"turbo:frame-load\", { target: frame });\n    }\n    notifyApplicationAfterFrameRender(fetchResponse, frame) {\n        return dispatch(\"turbo:frame-render\", {\n            detail: { fetchResponse },\n            target: frame,\n            cancelable: true,\n        });\n    }\n    submissionIsNavigatable(form, submitter) {\n        if (this.formMode == \"off\") {\n            return false;\n        }\n        else {\n            const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n            if (this.formMode == \"optin\") {\n                return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n            }\n            else {\n                return submitterIsNavigatable && this.elementIsNavigatable(form);\n            }\n        }\n    }\n    elementIsNavigatable(element) {\n        const container = findClosestRecursively(element, \"[data-turbo]\");\n        const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n        if (this.drive || withinFrame) {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") != \"false\";\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") == \"true\";\n            }\n            else {\n                return false;\n            }\n        }\n    }\n    getActionForLink(link) {\n        return getVisitAction(link) || \"advance\";\n    }\n    get snapshot() {\n        return this.view.snapshot;\n    }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n    Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n    absoluteURL: {\n        get() {\n            return this.toString();\n        },\n    },\n};\n\nclass Cache {\n    constructor(session) {\n        this.session = session;\n    }\n    clear() {\n        this.session.clearCache();\n    }\n    resetCacheControl() {\n        this.setCacheControl(\"\");\n    }\n    exemptPageFromCache() {\n        this.setCacheControl(\"no-cache\");\n    }\n    exemptPageFromPreview() {\n        this.setCacheControl(\"no-preview\");\n    }\n    setCacheControl(value) {\n        setMetaContent(\"turbo-cache-control\", value);\n    }\n}\n\nconst StreamActions = {\n    after() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n    },\n    append() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.append(this.templateContent));\n    },\n    before() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n    },\n    prepend() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.prepend(this.templateContent));\n    },\n    remove() {\n        this.targetElements.forEach((e) => e.remove());\n    },\n    replace() {\n        this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n    },\n    update() {\n        this.targetElements.forEach((targetElement) => {\n            targetElement.innerHTML = \"\";\n            targetElement.append(this.templateContent);\n        });\n    },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n    session.start();\n}\nfunction registerAdapter(adapter) {\n    session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n    session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n    session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n    session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n    session.renderStreamMessage(message);\n}\nfunction clearCache() {\n    console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n    session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n    session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n    FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n    session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    navigator: navigator$1,\n    session: session,\n    cache: cache,\n    PageRenderer: PageRenderer,\n    PageSnapshot: PageSnapshot,\n    FrameRenderer: FrameRenderer,\n    start: start,\n    registerAdapter: registerAdapter,\n    visit: visit,\n    connectStreamSource: connectStreamSource,\n    disconnectStreamSource: disconnectStreamSource,\n    renderStreamMessage: renderStreamMessage,\n    clearCache: clearCache,\n    setProgressBarDelay: setProgressBarDelay,\n    setConfirmMethod: setConfirmMethod,\n    setFormMode: setFormMode,\n    StreamActions: StreamActions\n});\n\nclass TurboFrameMissingError extends Error {\n}\n\nclass FrameController {\n    constructor(element) {\n        this.fetchResponseLoaded = (_fetchResponse) => { };\n        this.currentFetchRequest = null;\n        this.resolveVisitPromise = () => { };\n        this.connected = false;\n        this.hasBeenLoaded = false;\n        this.ignoredAttributes = new Set();\n        this.action = null;\n        this.visitCachedSnapshot = ({ element }) => {\n            const frame = element.querySelector(\"#\" + this.element.id);\n            if (frame && this.previousFrameElement) {\n                frame.replaceChildren(...this.previousFrameElement.children);\n            }\n            delete this.previousFrameElement;\n        };\n        this.element = element;\n        this.view = new FrameView(this, this.element);\n        this.appearanceObserver = new AppearanceObserver(this, this.element);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n        this.linkInterceptor = new LinkInterceptor(this, this.element);\n        this.restorationIdentifier = uuid();\n        this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n    }\n    connect() {\n        if (!this.connected) {\n            this.connected = true;\n            if (this.loadingStyle == FrameLoadingStyle.lazy) {\n                this.appearanceObserver.start();\n            }\n            else {\n                this.loadSourceURL();\n            }\n            this.formLinkClickObserver.start();\n            this.linkInterceptor.start();\n            this.formSubmitObserver.start();\n        }\n    }\n    disconnect() {\n        if (this.connected) {\n            this.connected = false;\n            this.appearanceObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkInterceptor.stop();\n            this.formSubmitObserver.stop();\n        }\n    }\n    disabledChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.eager) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLChanged() {\n        if (this.isIgnoringChangesTo(\"src\"))\n            return;\n        if (this.element.isConnected) {\n            this.complete = false;\n        }\n        if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLReloaded() {\n        const { src } = this.element;\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            this.element.removeAttribute(\"complete\");\n        });\n        this.element.src = null;\n        this.element.src = src;\n        return this.element.loaded;\n    }\n    completeChanged() {\n        if (this.isIgnoringChangesTo(\"complete\"))\n            return;\n        this.loadSourceURL();\n    }\n    loadingStyleChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.lazy) {\n            this.appearanceObserver.start();\n        }\n        else {\n            this.appearanceObserver.stop();\n            this.loadSourceURL();\n        }\n    }\n    async loadSourceURL() {\n        if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n            this.element.loaded = this.visit(expandURL(this.sourceURL));\n            this.appearanceObserver.stop();\n            await this.element.loaded;\n            this.hasBeenLoaded = true;\n        }\n    }\n    async loadResponse(fetchResponse) {\n        if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n            this.sourceURL = fetchResponse.response.url;\n        }\n        try {\n            const html = await fetchResponse.responseHTML;\n            if (html) {\n                const document = parseHTMLDocument(html);\n                const pageSnapshot = PageSnapshot.fromDocument(document);\n                if (pageSnapshot.isVisitable) {\n                    await this.loadFrameResponse(fetchResponse, document);\n                }\n                else {\n                    await this.handleUnvisitableFrameResponse(fetchResponse);\n                }\n            }\n        }\n        finally {\n            this.fetchResponseLoaded = () => { };\n        }\n    }\n    elementAppearedInViewport(element) {\n        this.proposeVisitIfNavigatedWithAction(element, element);\n        this.loadSourceURL();\n    }\n    willSubmitFormLinkToLocation(link) {\n        return this.shouldInterceptNavigation(link);\n    }\n    submittedFormLinkToLocation(link, _location, form) {\n        const frame = this.findFrameElement(link);\n        if (frame)\n            form.setAttribute(\"data-turbo-frame\", frame.id);\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldInterceptNavigation(element);\n    }\n    linkClickIntercepted(element, location) {\n        this.navigateFrame(element, location);\n    }\n    willSubmitForm(element, submitter) {\n        return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n    }\n    formSubmitted(element, submitter) {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n        }\n        this.formSubmission = new FormSubmission(this, element, submitter);\n        const { fetchRequest } = this.formSubmission;\n        this.prepareRequest(fetchRequest);\n        this.formSubmission.start();\n    }\n    prepareRequest(request) {\n        var _a;\n        request.headers[\"Turbo-Frame\"] = this.id;\n        if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        markAsBusy(this.element);\n    }\n    requestPreventedHandlingResponse(_request, _response) {\n        this.resolveVisitPromise();\n    }\n    async requestSucceededWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    async requestFailedWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    requestErrored(request, error) {\n        console.error(error);\n        this.resolveVisitPromise();\n    }\n    requestFinished(_request) {\n        clearBusyState(this.element);\n    }\n    formSubmissionStarted({ formElement }) {\n        markAsBusy(formElement, this.findFrameElement(formElement));\n    }\n    formSubmissionSucceededWithResponse(formSubmission, response) {\n        const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.loadResponse(response);\n        if (!formSubmission.isSafe) {\n            session.clearCache();\n        }\n    }\n    formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        this.element.delegate.loadResponse(fetchResponse);\n        session.clearCache();\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished({ formElement }) {\n        clearBusyState(formElement, this.findFrameElement(formElement));\n    }\n    allowsImmediateRender({ element: newFrame }, options) {\n        const event = dispatch(\"turbo:before-frame-render\", {\n            target: this.element,\n            detail: Object.assign({ newFrame }, options),\n            cancelable: true,\n        });\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) { }\n    preloadOnLoadLinksForView(element) {\n        session.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated() { }\n    willRenderFrame(currentElement, _newElement) {\n        this.previousFrameElement = currentElement.cloneNode(true);\n    }\n    async loadFrameResponse(fetchResponse, document) {\n        const newFrameElement = await this.extractForeignFrameElement(document.body);\n        if (newFrameElement) {\n            const snapshot = new Snapshot(newFrameElement);\n            const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n            if (this.view.renderPromise)\n                await this.view.renderPromise;\n            this.changeHistory();\n            await this.view.render(renderer);\n            this.complete = true;\n            session.frameRendered(fetchResponse, this.element);\n            session.frameLoaded(this.element);\n            this.fetchResponseLoaded(fetchResponse);\n        }\n        else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n            this.handleFrameMissingFromResponse(fetchResponse);\n        }\n    }\n    async visit(url) {\n        var _a;\n        const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n        (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n        this.currentFetchRequest = request;\n        return new Promise((resolve) => {\n            this.resolveVisitPromise = () => {\n                this.resolveVisitPromise = () => { };\n                this.currentFetchRequest = null;\n                resolve();\n            };\n            request.perform();\n        });\n    }\n    navigateFrame(element, url, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n        this.withCurrentNavigationElement(element, () => {\n            frame.src = url;\n        });\n    }\n    proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n        this.action = getVisitAction(submitter, element, frame);\n        if (this.action) {\n            const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n            const { visitCachedSnapshot } = frame.delegate;\n            frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n                if (frame.src) {\n                    const { statusCode, redirected } = fetchResponse;\n                    const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n                    const response = { statusCode, redirected, responseHTML };\n                    const options = {\n                        response,\n                        visitCachedSnapshot,\n                        willRender: false,\n                        updateHistory: false,\n                        restorationIdentifier: this.restorationIdentifier,\n                        snapshot: pageSnapshot,\n                    };\n                    if (this.action)\n                        options.action = this.action;\n                    session.visit(frame.src, options);\n                }\n            };\n        }\n    }\n    changeHistory() {\n        if (this.action) {\n            const method = getHistoryMethodForAction(this.action);\n            session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n        }\n    }\n    async handleUnvisitableFrameResponse(fetchResponse) {\n        console.warn(`The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`);\n        await this.visitResponse(fetchResponse.response);\n    }\n    willHandleFrameMissingFromResponse(fetchResponse) {\n        this.element.setAttribute(\"complete\", \"\");\n        const response = fetchResponse.response;\n        const visit = async (url, options = {}) => {\n            if (url instanceof Response) {\n                this.visitResponse(url);\n            }\n            else {\n                session.visit(url, options);\n            }\n        };\n        const event = dispatch(\"turbo:frame-missing\", {\n            target: this.element,\n            detail: { response, visit },\n            cancelable: true,\n        });\n        return !event.defaultPrevented;\n    }\n    handleFrameMissingFromResponse(fetchResponse) {\n        this.view.missing();\n        this.throwFrameMissingError(fetchResponse);\n    }\n    throwFrameMissingError(fetchResponse) {\n        const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n        throw new TurboFrameMissingError(message);\n    }\n    async visitResponse(response) {\n        const wrapped = new FetchResponse(response);\n        const responseHTML = await wrapped.responseHTML;\n        const { location, redirected, statusCode } = wrapped;\n        return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n    }\n    findFrameElement(element, submitter) {\n        var _a;\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n    }\n    async extractForeignFrameElement(container) {\n        let element;\n        const id = CSS.escape(this.id);\n        try {\n            element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n            if (element) {\n                return element;\n            }\n            element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n            if (element) {\n                await element.loaded;\n                return await this.extractForeignFrameElement(element);\n            }\n        }\n        catch (error) {\n            console.error(error);\n            return new FrameElement();\n        }\n        return null;\n    }\n    formActionIsVisitable(form, submitter) {\n        const action = getAction(form, submitter);\n        return locationIsVisitable(expandURL(action), this.rootLocation);\n    }\n    shouldInterceptNavigation(element, submitter) {\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n            return false;\n        }\n        if (!this.enabled || id == \"_top\") {\n            return false;\n        }\n        if (id) {\n            const frameElement = getFrameElementById(id);\n            if (frameElement) {\n                return !frameElement.disabled;\n            }\n        }\n        if (!session.elementIsNavigatable(element)) {\n            return false;\n        }\n        if (submitter && !session.elementIsNavigatable(submitter)) {\n            return false;\n        }\n        return true;\n    }\n    get id() {\n        return this.element.id;\n    }\n    get enabled() {\n        return !this.element.disabled;\n    }\n    get sourceURL() {\n        if (this.element.src) {\n            return this.element.src;\n        }\n    }\n    set sourceURL(sourceURL) {\n        this.ignoringChangesToAttribute(\"src\", () => {\n            this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n        });\n    }\n    get loadingStyle() {\n        return this.element.loading;\n    }\n    get isLoading() {\n        return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n    }\n    get complete() {\n        return this.element.hasAttribute(\"complete\");\n    }\n    set complete(value) {\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            if (value) {\n                this.element.setAttribute(\"complete\", \"\");\n            }\n            else {\n                this.element.removeAttribute(\"complete\");\n            }\n        });\n    }\n    get isActive() {\n        return this.element.isActive && this.connected;\n    }\n    get rootLocation() {\n        var _a;\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    isIgnoringChangesTo(attributeName) {\n        return this.ignoredAttributes.has(attributeName);\n    }\n    ignoringChangesToAttribute(attributeName, callback) {\n        this.ignoredAttributes.add(attributeName);\n        callback();\n        this.ignoredAttributes.delete(attributeName);\n    }\n    withCurrentNavigationElement(element, callback) {\n        this.currentNavigationElement = element;\n        callback();\n        delete this.currentNavigationElement;\n    }\n}\nfunction getFrameElementById(id) {\n    if (id != null) {\n        const element = document.getElementById(id);\n        if (element instanceof FrameElement) {\n            return element;\n        }\n    }\n}\nfunction activateElement(element, currentURL) {\n    if (element) {\n        const src = element.getAttribute(\"src\");\n        if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n            throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n        }\n        if (element.ownerDocument !== document) {\n            element = document.importNode(element, true);\n        }\n        if (element instanceof FrameElement) {\n            element.connectedCallback();\n            element.disconnectedCallback();\n            return element;\n        }\n    }\n}\n\nclass StreamElement extends HTMLElement {\n    static async renderElement(newElement) {\n        await newElement.performAction();\n    }\n    async connectedCallback() {\n        try {\n            await this.render();\n        }\n        catch (error) {\n            console.error(error);\n        }\n        finally {\n            this.disconnect();\n        }\n    }\n    async render() {\n        var _a;\n        return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n            const event = this.beforeRenderEvent;\n            if (this.dispatchEvent(event)) {\n                await nextAnimationFrame();\n                await event.detail.render(this);\n            }\n        })()));\n    }\n    disconnect() {\n        try {\n            this.remove();\n        }\n        catch (_a) { }\n    }\n    removeDuplicateTargetChildren() {\n        this.duplicateChildren.forEach((c) => c.remove());\n    }\n    get duplicateChildren() {\n        var _a;\n        const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n        const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n        return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n    }\n    get performAction() {\n        if (this.action) {\n            const actionFunction = StreamActions[this.action];\n            if (actionFunction) {\n                return actionFunction;\n            }\n            this.raise(\"unknown action\");\n        }\n        this.raise(\"action attribute is missing\");\n    }\n    get targetElements() {\n        if (this.target) {\n            return this.targetElementsById;\n        }\n        else if (this.targets) {\n            return this.targetElementsByQuery;\n        }\n        else {\n            this.raise(\"target or targets attribute is missing\");\n        }\n    }\n    get templateContent() {\n        return this.templateElement.content.cloneNode(true);\n    }\n    get templateElement() {\n        if (this.firstElementChild === null) {\n            const template = this.ownerDocument.createElement(\"template\");\n            this.appendChild(template);\n            return template;\n        }\n        else if (this.firstElementChild instanceof HTMLTemplateElement) {\n            return this.firstElementChild;\n        }\n        this.raise(\"first child element must be a <template> element\");\n    }\n    get action() {\n        return this.getAttribute(\"action\");\n    }\n    get target() {\n        return this.getAttribute(\"target\");\n    }\n    get targets() {\n        return this.getAttribute(\"targets\");\n    }\n    raise(message) {\n        throw new Error(`${this.description}: ${message}`);\n    }\n    get description() {\n        var _a, _b;\n        return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n    }\n    get beforeRenderEvent() {\n        return new CustomEvent(\"turbo:before-stream-render\", {\n            bubbles: true,\n            cancelable: true,\n            detail: { newStream: this, render: StreamElement.renderElement },\n        });\n    }\n    get targetElementsById() {\n        var _a;\n        const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n        if (element !== null) {\n            return [element];\n        }\n        else {\n            return [];\n        }\n    }\n    get targetElementsByQuery() {\n        var _a;\n        const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n        if (elements.length !== 0) {\n            return Array.prototype.slice.call(elements);\n        }\n        else {\n            return [];\n        }\n    }\n}\n\nclass StreamSourceElement extends HTMLElement {\n    constructor() {\n        super(...arguments);\n        this.streamSource = null;\n    }\n    connectedCallback() {\n        this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n        connectStreamSource(this.streamSource);\n    }\n    disconnectedCallback() {\n        if (this.streamSource) {\n            disconnectStreamSource(this.streamSource);\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\") || \"\";\n    }\n}\n\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n    customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n    customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n    customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n    let element = document.currentScript;\n    if (!element)\n        return;\n    if (element.hasAttribute(\"data-turbo-suppress-warning\"))\n        return;\n    element = element.parentElement;\n    while (element) {\n        if (element == document.body) {\n            return console.warn(unindent `\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `, element.outerHTML);\n        }\n        element = element.parentElement;\n    }\n})();\n\nwindow.Turbo = Turbo;\nstart();\n\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, {\n      received: this.dispatchMessageEvent.bind(this),\n      connected: this.subscriptionConnected.bind(this),\n      disconnected: this.subscriptionDisconnected.bind(this)\n    })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  subscriptionConnected() {\n    this.setAttribute(\"connected\", \"\")\n  }\n\n  subscriptionDisconnected() {\n    this.removeAttribute(\"connected\")\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "import { Controller } from \"@hotwired/stimulus\"\nimport { Turbo } from \"@hotwired/turbo-rails\"\n\n// Connects to data-controller=\"bulk-delivery-update\"\nexport default class extends Controller {\n  static targets = [ \"delivery_modal\", \"product_price\", \"form_data\", \"delivery_modal_count\", \"delivery_modal_progress_bar\", \"txnOwnerSelectBox\"]\n\n  connect() {\n    this.abortController = new AbortController();\n\n    document.addEventListener(\"turbo:before-visit\", () => {\n      this.abortFetchRequest();\n    });\n  }\n\n  disconnect() {\n    this.delivery_modalTarget.close();\n    this.abortFetchRequest();\n  }\n\n  buildTransactionParams(formData) {\n    const data = {};\n    formData.forEach((value, key) => {\n      if (key.includes('][')) {\n          const [fieldName, index, fieldProperty] = key.split(/\\[|\\]/).filter(Boolean);\n          if (!data[fieldName]) {\n              data[fieldName] = [];\n          }\n          data[fieldName][index] = data[fieldName][index] || {};\n          data[fieldName][index][fieldProperty] = value;\n\n      } else {\n        data[key] = value;\n      }\n    });\n    data['transaction_owner_id'] = this.txnOwnerSelectBoxTarget.value\n    return data;\n  }\n\n  transactionsToSubmit(data) {\n    const isValidType = type => type === \"0\" || type === \"1\";\n  \n    data.transactions = data.transactions.filter(({ id, initial_qty, quantity, jar_transaction_type }) => {\n      const type = String(jar_transaction_type);\n  \n      if (!isValidType(type)) return false;\n  \n      if (id && initial_qty !== undefined) {\n        return quantity !== initial_qty;\n      }\n  \n      return quantity !== \"0\";\n    });\n  \n    return data;\n  }\n\n  shouldSubmitTransaction(transactionData) {\n    return (transactionData[\"transactions\"].length > 0 && !transactionData['transactions'].some(transaction => transaction.quantity == \"\") && ((transactionData[\"delivery_status\"] == 'true' && transactionData[\"is_quantity_changed\"] == 'true') || transactionData[\"delivery_status\"] == 'false'))\n  }\n\n  transactionsIndexesToSkip() {\n    let totalRequestCount = this.formDataTargets.length\n    const skipIndexes = [];\n\n    for (let index = 0; index < totalRequestCount; index++) {\n      const form = this.formDataTargets[index]\n      const formData = new FormData(form);\n      const data = this.buildTransactionParams(formData);\n      const transactionData = this.transactionsToSubmit(data)\n      if (!this.shouldSubmitTransaction(transactionData)) {\n        skipIndexes.push(index)\n      }\n    }\n\n    return skipIndexes;\n  }\n\n  requestJarTransactionUpdate(index, requestCount, skipIndexes) {\n\n    let total_request_count = this.formDataTargets.length;\n\n    if (skipIndexes.includes(index)) {\n      if(total_request_count > index+1) {\n        this.requestJarTransactionUpdate(index+1, requestCount, skipIndexes)\n      } else {\n        this.delivery_modalTarget.close();\n        this.reloadWindow();\n      }\n    }\n\n    const form = this.formDataTargets[index]\n    let token = document.getElementsByName('csrf-token')[0].content\n    const formData = new FormData(form);\n    const data = this.transactionsToSubmit(this.buildTransactionParams(formData))\n    // API call\n    if (this.shouldSubmitTransaction(data) && this.shouldExecuteTxn) {\n      this.model_data_update(total_request_count - skipIndexes.length ,requestCount)\n      fetch(form.action, {\n        method: \"post\",\n        headers: {\n          Accept: \"text/vnd.turbo-stream.html\",\n          \"Content-Type\": \"application/json\",\n          \"X-CSRF-Token\": token\n        },\n        body: JSON.stringify({\n          customer_txns_data: data\n        }),\n        signal: this.abortController.signal\n      }).then((response) => response.text())\n      .then(html => {\n        Turbo.renderStreamMessage(html);\n        if(total_request_count > index+1) {\n          this.requestJarTransactionUpdate(index+1, requestCount+1, skipIndexes)\n        } else {\n          this.delivery_modalTarget.close();\n          this.reloadWindow();\n        }\n      }).catch(error => {\n      });\n    }\n    if(this.shouldExecuteTxn == false) {\n      this.reloadWindow();\n    }\n  }\n\n  update() {\n    if (this.form_dataTargets.length == 0) {\n      alert(\"No deliveries to create or update. Please select at least one delivery.\");\n      return;\n    }\n\n    this.shouldExecuteTxn = true;\n    this.formDataTargets = this.form_dataTargets;\n    const skipIndexes = this.transactionsIndexesToSkip();\n    this.requestJarTransactionUpdate(0, 1, skipIndexes)\n  }\n\n  model_data_update(total_request_count,current_count) {\n    this.delivery_modal_countTarget.innerHTML = `${current_count}/${total_request_count}`\n    this.delivery_modal_progress_barTarget.max = total_request_count\n    this.delivery_modal_progress_barTarget.value = current_count\n    this.delivery_modalTarget.show();\n  }\n\n  skip() {\n    const confirmation = confirm(`Are you sure?\\n All the remaining deliveries will be skipped.\\n if you click on Ok button.`);\n    if (confirmation) {\n      this.shouldExecuteTxn = false;\n    }\n  }\n\n  reloadWindow() {\n    const form = this.formDataTargets[0];\n    const formData = new FormData(form);\n    const data = this.transactionsToSubmit(this.buildTransactionParams(formData))\n    const baseUrl = `/web/deliveries/new?customer_group_id=${parseInt(data['cg_id'])}&search=&delivery_date=${data['txn_date']}&shift=${data['shift']}&delivery_status=${data['filter_delivery_status']}&schedule_delivery_status=${data['schedule_delivery_status']}`;\n\n    const customerIdParam = this.formDataTargets.length > 1 ? '' : `&customer_id=${parseInt(data['customer_id'])}`;\n    const url = `${baseUrl}${customerIdParam}`;\n    Turbo.visit(url, { frame: this.formDataTargets.length > 1 ? 'delivery-customers' : data['customer_id'] });\n  }\n\n  abortFetchRequest() {\n    if (this.abortController) {\n      this.abortController.abort();\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"color-changer\"\nexport default class extends Controller {\n  static targets = [ \"changeColorInput\", \"divContainer\", \"quantityChangedLabel\", \"isQuantityChanged\"]\n  connect() {\n  }\n\n  increment_change(){\n    const inputTargets = this.changeColorInputTargets;\n    let count=0;\n    for (const el of this.changeColorInputTargets) {\n      let { initialValue, isProductDelivered, isProductReceived } = el.dataset;\n      let current_value = parseInt(el.value);\n      if (isProductDelivered == \"true\" || isProductReceived==\"true\") {\n        if (current_value != parseInt(initialValue)) {\n          this.divContainerTarget.classList.add('border-2', 'border-l-4', 'border-solid', 'border-yellow-500');\n          this.quantityChangedLabelTarget.classList.remove('hidden');\n          this.isQuantityChangedTarget.value = true\n          break;\n        } else {\n          count++;\n        }\n      } else {\n        if (current_value =! parseInt(initialValue)) {\n          this.divContainerTarget.classList.remove( 'border-red-500');\n          this.divContainerTarget.classList.add('border-green-500');\n          this.isQuantityChangedTarget.value = \"\"\n          break;\n        }\n\n      }\n\n    }\n    if (count == inputTargets.length) {\n      this.divContainerTarget.classList.remove('border-2', 'border-l-4', 'border-solid', 'border-yellow-500');\n      this.divContainerTarget.classList.add('input-primary');\n      this.quantityChangedLabelTarget.classList.add('hidden');\n      this.isQuantityChangedTarget.value = \"\"\n    }\n  }\n\n  decrement_change(){\n    let count=0;\n    const inputTargets = this.changeColorInputTargets;\n    const isProductDelivered = this.changeColorInputTarget.dataset.isProductDelivered;\n    const isProductReceived = this.changeColorInputTarget.dataset.isProductReceived;\n    if (isProductDelivered == \"true\" || isProductReceived==\"true\") {\n      inputTargets.forEach(el => {\n        const initialValue = el.dataset.initialValue;\n        let current_value = parseInt(el.value);\n        if (current_value != parseInt(initialValue)) {\n          this.divContainerTarget.classList.add('border-2', 'border-l-4', 'border-solid', 'border-yellow-500');\n          this.quantityChangedLabelTarget.classList.remove('hidden');\n          this.isQuantityChangedTarget.value = true\n        } else {\n          count++;\n        }\n      })\n\n    } else {\n      if (inputTargets.every(el => parseInt(el.value) === 0)) {\n        this.divContainerTarget.classList.add('border-2', 'border-l-4', 'border-solid', 'border-red-500');\n        this.isQuantityChangedTarget.value = true;\n      }\n    }\n\n    if (count == inputTargets.length){\n      this.divContainerTarget.classList.remove('border-2', 'border-l-4', 'border-solid', 'border-yellow-500', );\n        this.quantityChangedLabelTarget.classList.add('hidden');\n        this.isQuantityChangedTarget.value = '';\n    }\n  }\n\n  handleChange(event){\n    const value = event.target.value\n    if (value !== '') {\n      if (parseFloat(value) > parseFloat(event.target.dataset.initialValue)){\n        this.increment_change();\n      } else {\n        this.decrement_change();\n      }\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"delivery\"\nexport default class extends Controller {\n  static targets = [\"delivered_input\", \"received_input\", \"unbalance_jar\", \"product_price\", \"product_cost_label\", \"delivery_status\"]\n\n  connect() {\n    this.update_price_label()\n  }\n\n  handleChange(event) {\n    const value = event.target.value;\n    if (value !== '') {\n      const txnType = event.target.dataset.deliveryTarget.split('_')[0];\n      const initialValue = parseInt(event.target.dataset.initialValue);\n      if (parseInt(value) > initialValue) {\n        this[`${txnType}Increment`](false);\n      } else {\n        this[`${txnType}Decrement`](false);\n      }\n    }\n  }\n\n  deliveredIncrement(canStepChange = true) {\n    if (canStepChange)\n    this.delivered_inputTarget.stepUp()\n\n    this.update_price_label()\n    this.validate_product_quantity()\n  }\n\n  deliveredDecrement(canStepChange = true) {\n    if (canStepChange)\n    this.delivered_inputTarget.stepDown()\n\n    this.update_price_label()\n    this.validate_product_quantity()\n  }\n\n  receivedIncrement(canStepChange = true) {\n    let unbalance_jar_quantity = parseInt(this.unbalance_jarTarget.dataset.productUnbalanceQty)\n    let is_delivery_done = this.delivery_statusTarget.value\n\n    let delivered_quantity = parseInt(this.delivered_inputTarget.value)\n    let received_quantity = parseInt(this.received_inputTarget.value)\n\n    let delivered_initial_quantity = parseInt(this.delivered_inputTarget.dataset.initialValue)\n    let received_initial_quantity = parseInt(this.received_inputTarget.dataset.initialValue)\n    if (canStepChange){\n      if ( is_delivery_done != \"true\" && received_quantity < unbalance_jar_quantity + delivered_quantity )\n      { this.received_inputTarget.stepUp() }\n      else if ( is_delivery_done == \"true\"  && received_quantity < unbalance_jar_quantity + received_initial_quantity+ (delivered_quantity-delivered_initial_quantity)) {\n        { this.received_inputTarget.stepUp() }\n      }\n    }\n  }\n\n  receivedDecrement(canStepChange = true) {\n    if (canStepChange)\n    this.received_inputTarget.stepDown()\n\n    this.validate_product_quantity()\n  }\n\n  update_price_label() {\n    let product_quantity = parseInt(this.delivered_inputTarget.value)\n    let price = parseFloat(this.product_priceTarget.dataset.productPrice)\n    if ( product_quantity > 0 )\n      this.product_cost_labelTarget.innerHTML = `Product Cost (${product_quantity} * &#8377 ${price} ) = &#8377  ${ product_quantity * price }`\n    else\n    this.product_cost_labelTarget.innerHTML = \"\"\n  }\n\n  validate_product_quantity() {\n    const receivedInputTarget = this.element.querySelector('[data-delivery-target=\"received_input\"]');\n    if (receivedInputTarget) {\n      let unbalance_jar_quantity = parseInt(this.unbalance_jarTarget.dataset.productUnbalanceQty)\n      let is_delivery_done = this.delivery_statusTarget.value\n\n      let delivered_quantity = parseInt(this.delivered_inputTarget.value)\n      let received_quantity = parseInt(this.received_inputTarget.value)\n\n      let delivered_initial_quantity = parseInt(this.delivered_inputTarget.dataset.initialValue)\n      let received_initial_quantity = parseInt(this.received_inputTarget.dataset.initialValue)\n\n      if (is_delivery_done != \"true\") {\n        if (unbalance_jar_quantity + delivered_quantity >= received_quantity){\n          this.received_inputTarget.classList.remove('input-error', 'border-2')\n          this.received_inputTarget.classList.add('input-primary')\n        } else {\n          this.received_inputTarget.classList.add('input-error', 'border-2')\n          this.received_inputTarget.classList.remove('input-primary')\n        }\n      } else {\n          if (received_quantity <= unbalance_jar_quantity + received_initial_quantity+ (delivered_quantity-delivered_initial_quantity)) {\n            this.received_inputTarget.classList.remove('input-error', 'border-2')\n            this.received_inputTarget.classList.add('input-primary')\n          } else {\n            this.received_inputTarget.classList.add('input-error', 'border-2')\n            this.received_inputTarget.classList.remove('input-primary')\n          }\n      }\n    }\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"bulk-delivery-navigate\"\nexport default class extends Controller {\n  static targets = ['numberField', 'tabSize']\n  \n\n  navigate(event) {\n    this.inputs = this.numberFieldTargets;\n\n    const nextTabSize = parseInt(this.tabSizeTarget.dataset.tabsize)\n\n    const currentIndex = this.inputs.indexOf(event.target);\n    if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n      event.preventDefault();\n      let nextIndex = currentIndex;\n\n      if (event.key === \"ArrowUp\" && currentIndex > 0) {\n        nextIndex -= nextTabSize;\n      } else if (event.key === \"ArrowDown\" && currentIndex < this.inputs.length - 1) {\n        nextIndex += nextTabSize;\n      }\n      this.inputs[nextIndex]?.focus();\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"bulk-delivery-payment-list\"\nexport default class extends Controller {\n  static targets = [\"panel\"]\n\n  connect() {\n    this.closeOnOutsideClick = this.closeOnOutsideClick.bind(this)\n    document.addEventListener(\"click\", this.closeOnOutsideClick)\n  }\n\n  disconnect() {\n    document.removeEventListener(\"click\", this.closeOnOutsideClick)\n  }\n\n  toggle() {\n    this.panelTarget.classList.toggle(\"hidden\")\n  }\n\n  closeOnOutsideClick(event) {\n    if (!this.element.contains(event.target)) {\n      this.panelTarget.classList.add(\"hidden\")\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"customer-filter-confirm-box\"\nexport default class extends Controller {\n  static targets = [\"resetButton\", \"filtersPaymentPreference\", \"formPaymentPreference\", \"filtersCustomerFilter\", \"filtersForm\"]\n  connect() {\n  }\n\n  cancel(){\n    if(this.hasResetButtonTarget){\n      this.resetButtonTarget.click();\n    }\n  }\n\n  apply(){\n   if(this.hasFormPaymentPreferenceTarget){\n    this.filtersPaymentPreferenceTarget.innerHTML = '';\n    const formPaymentPreferences = this.formPaymentPreferenceTarget;\n    if(this.hasFiltersPaymentPreferenceTarget){\n      this.filtersPaymentPreferenceTarget.appendChild(formPaymentPreferences.cloneNode(true));\n    }\n   }\n  }\n\n  proceed(event){\n    if(this.hasFiltersCustomerFilterTarget){\n      this.filtersFormTarget.innerHTML = '';\n      const filtersCustomerFilter = this.filtersCustomerFilterTarget;\n      if(this.hasFiltersFormTarget){\n        this.filtersFormTarget.appendChild(filtersCustomerFilter.cloneNode(true));\n        event.currentTarget.closest(\"#confirm_box\").remove(); //  for closing confirm box model\n        filtersCustomerFilter.classList.add(\"hidden\")\n      }\n     }\n  }\n\n  selectUpdate(event){\n    event.currentTarget.options[event.currentTarget.selectedIndex].setAttribute(\"selected\",\"\");\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"customer-leaves\"\nexport default class extends Controller {\n  static targets = ['startDate', 'endDate', 'submitBtn', 'customerId']\n\n  updateDate(event) {\n\n    const startDate = new Date(this.startDateTarget.value);\n    startDate.setHours(0, 0, 0, 0);\n\n    const endDate = new Date(this.endDateTarget.value);\n    endDate.setHours(0, 0, 0, 0);\n\n    let eventType = event.target.dataset.customerLeavesTarget;\n    this.validateDateRange(startDate, endDate, eventType);\n  }\n\n  validateDateRange(startDate, endDate, eventType) {\n    if (startDate > endDate) {\n      this.endDateTarget.classList.add(\"border-red-500\");\n      this.disableButton();\n    } else {\n      this.enableButton();\n      this.endDateTarget.classList.remove(\"border-red-500\");\n      this.setMinDateOnEndDateField(eventType, startDate)\n    }\n  }\n  enableButton() {\n    this.submitBtnTarget.removeAttribute('disabled');\n  }\n\n  disableButton() {\n    this.submitBtnTarget.setAttribute('disabled', 'disabled');\n  }\n\n  setMinDateOnEndDateField(eventType, startDate) {\n    if (eventType === \"startDate\") {\n      startDate.setDate(startDate.getDate() + 1);\n      this.endDateTarget.setAttribute('min', startDate.toISOString().split('T')[0]);\n    }\n  }\n\n  getJarTransactionDates(event) {\n    event.preventDefault();\n    const form = event.currentTarget.form;\n    const token = document.getElementsByName('csrf-token')[0].content;\n    const data = {\n      startDate: this.startDateTarget.value,\n      endDate: this.endDateTarget.value,\n      customerId: this.customerIdTarget.value || this.customerIdTarget.dataset.customerId\n    };\n\n    if (Object.values(data).some(value => value === '')) {\n      alert('Please fill in all fields.');\n      return;\n    }\n    const url = `/web/customers/${parseInt(data.customerId)}/jar_transactions_date`;\n    fetch(url, {\n      method: \"post\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\",\n        \"Content-Type\": \"application/json\",\n        \"X-CSRF-Token\": token\n      },\n      body: JSON.stringify({\n        leave_info: data\n      })\n    })\n    .then(response => response.json())\n    .then(response => {\n      if (response.transactions_date.length > 0) {\n        let confirmation = confirm(`Are you sure?\\n Jar-transaction is already exist for ${response.transactions_date}.\\n If you want, you can still add leaves.`);\n        if (!confirmation) {\n          return;\n        }\n      }\n      Turbo.navigator.submitForm(form);\n    })\n    .catch(error => {\n      console.error('Error:', error);\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"customer-product\"\nexport default class extends Controller {\n  static targets = ['monthlyField',\n                    'rentedField',\n                    'refilledField',\n                    'warnField',\n                    'blockField',\n                    'destroyFlag',\n                    'priceAndQtyInputContainer',\n                    'priceAndQtyInput',\n                    'monthlyPriceAndQtyInput',\n                    'price',\n                    'quantity',\n                    'warnQuantity',\n                    'blockQuantity',\n                    'monthlyQuantity',\n                    'monthlyPrice',\n                    'receivedQuantity',\n                    'receivedQtyContainer',\n                    'pendingLabel',\n                    'monthlyLabel',\n                    'regularLabel',\n                    'regularButton',\n                    'weekdaysButton',\n                    'monthlyButton',\n                    'rentedButton',\n                    'refilledButton',\n                    'warnButton',\n                    'blockButton',\n                    'isCustomerProduct',\n                    'divHideAble',\n                    'upArrow',\n                    'downArrow',\n                    'dayOfWeek',\n                    'recurringContainer',\n                    'dayOfWeekAlert',\n                    'unitPriceLabel',\n                    'monthlyPriceLabel',\n                    'monthlyBtn']\n  connect() {\n    this.regularButtonTargets.forEach(el => {\n      if(el.checked) {\n        this.isRegular({ target: { dataset: { targetId: el.dataset.targetId, initialChecked: el.dataset.initialChecked, gstPercentage: el.dataset.gstPercentage, gstEnabled: el.dataset.gstEnabled} } });\n      }\n    })\n\n    this.monthlyButtonTargets.forEach(el => {\n      if(el.checked) {\n        this.isMonthly({ target: { dataset: { targetId: el.dataset.targetId, initialChecked: el.dataset.initialChecked, gstPercentage: el.dataset.gstPercentage, gstEnabled: el.dataset.gstEnabled } } });\n      }\n    })\n\n    this.rentedButtonTargets.forEach(el => {\n      if(el.checked) {\n        this.isRented({ target: { dataset: { targetId: el.dataset.targetId, initialChecked: el.dataset.initialChecked, gstPercentage: el.dataset.gstPercentage, gstEnabled: el.dataset.gstEnabled } } });\n      }\n    })\n  }\n\n  isRegular(event) {\n    let targetId = event.target.dataset.targetId;\n    this.buildRegularFormAttribute(targetId, event);\n    this.hideMonthlyQtyAndPriceContainer(targetId);\n    this.showQtyAndPriceContainer(targetId);\n    this.hideMonthlyLabel(targetId);\n    this.showRegularLabel(targetId, event);\n    this.updateRegularInitialValue(targetId, event);\n    this.showRecurringContainer(targetId)\n    this.updateIsMonthlyDataAttr(targetId, false)\n    this.showProductPrice(targetId, 'unitPrice', parseFloat(event.target.dataset.gstPercentage), event.target.dataset.gstEnabled);\n    this.showRefilledCheckBoxAndSetInitialValue(targetId);\n  }\n\n  isMonthly(event){\n    let targetId = event.target.dataset.targetId;\n    this.buildMonthlyFormAttribute(targetId);\n    this.showMonthlyQtyAndPriceContainer(targetId);\n    this.showQtyAndPriceContainer(targetId);\n    this.showMonthlyLabel(targetId, event);\n    this.hideRegularLabel(targetId);\n    this.updateMonthlyInitialValue(targetId, event);\n    this.showRecurringContainer(targetId)\n    this.updateIsMonthlyDataAttr(targetId, true)\n    this.showProductPrice(targetId, 'unitPrice', parseFloat(event.target.dataset.gstPercentage), event.target.dataset.gstEnabled)\n    this.showProductPrice(targetId, 'monthlyPrice', parseFloat(event.target.dataset.gstPercentage), event.target.dataset.gstEnabled, 'true')\n    this.showRefilledCheckBoxAndSetInitialValue(targetId);\n  }\n\n  isRented(event){\n    let targetId = event.target.dataset.targetId;\n    this.buildRentedFormAttribute(targetId);\n    this.hideQtyAndPriceContainer(targetId);\n    this.showMonthlyQtyAndPriceContainer(targetId);\n    this.hideMonthlyLabel(targetId);\n    this.hideRegularLabel(targetId);\n    this.updateRentedInitialValue(targetId, event);\n    this.hideRecurringContainer(targetId)\n    this.updateIsMonthlyDataAttr(targetId, false)\n    this.showProductPrice(targetId, 'monthlyPrice', parseFloat(event.target.dataset.gstPercentage), event.target.dataset.gstEnabled)\n    this.hideRefilledCheckBoxAndSetToFalse(targetId)\n  }\n\n  isDestroyed(event){\n    let customerProductId = event.target.dataset.customerProductId.trim();\n    let productId = event.target.dataset.productId.trim();\n    this.updateIsCustomerProductFlag(event, productId);\n    if (customerProductId.length !=0 ) {\n      if (event.target.checked==true) {\n        this.changeDestroyFieldValue(productId, \"false\");\n      } else {\n        this.changeDestroyFieldValue(productId, \"true\");\n      }\n    }\n  }\n\n  isRefilled(event){\n    let targetId = event.target.dataset.targetId;\n    let targets = this.refilledFieldTargets;\n    let value = event.target.checked;\n    this.updateFiledValue(targets, targetId, value)\n    this.toggleReceivedQtyVisibility(targetId, value)\n  }\n\n  toggleReceivedQtyVisibility(targetId, isRefilled) {\n    const containers = [\n      ...this.receivedQtyContainerTargets,\n      ...this.pendingLabelTargets\n    ];\n\n    containers.forEach(el => {\n      if (el.dataset.targetId == targetId) {\n        el.classList.toggle('hidden', isRefilled);\n      }\n    })\n  }\n\n  isWarn(event){\n    let targetId = event.target.dataset.targetId;\n    let targets = this.warnFieldTargets;\n    let value = event.target.checked;\n    this.updateFiledValue(targets, targetId, value);\n  }\n\n  isBlock(event){\n    let targetId = event.target.dataset.targetId;\n    let targets = this.blockFieldTargets;\n    let value = event.target.checked;\n    this.updateFiledValue(targets, targetId, value);\n  }\n\n  hideRefilledCheckBoxAndSetToFalse(targetId) {\n    this.updateFiledValue(this.refilledFieldTargets, targetId, false);\n    this.addAttribute(this.refilledButtonTargets, targetId);\n    this.toggleReceivedQtyVisibility(targetId, false);\n  }\n\n  showRefilledCheckBoxAndSetInitialValue(targetId) {\n    this.removeAttributeAndUpdateValue(this.refilledButtonTargets, targetId);\n    const checkbox = this.refilledButtonTargets.find(el => el.dataset.targetId == targetId);\n    if (checkbox) {\n      this.toggleReceivedQtyVisibility(targetId, checkbox.checked);\n    }\n  }\n\n  showRecurringContainer(targetId){\n    let targetContainers =  this.recurringContainerTargets;\n    targetContainers.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.classList.remove(\"hidden\");\n      }\n    })\n  }\n\n  hideRecurringContainer(targetId){\n    let targetContainers =  this.recurringContainerTargets;\n    targetContainers.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.classList.add(\"hidden\");\n      }\n    })\n  }\n\n  toggleFlexClass(targetId, classToBeAdded, classToBeRemoved) {\n    let targetContainers = this.priceAndQtyInputContainerTargets;\n    targetContainers.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.classList.remove(classToBeRemoved);\n        el.classList.add(classToBeAdded);\n      }\n    })\n  }\n\n  buildRegularFormAttribute(targetId, event) {\n    this.changeMonthFieldValue(targetId, \"false\");\n    this.changeRentedFieldValue(targetId, \"false\");\n    this.toggleFlexClass(targetId, 'flex-col', 'flex-col-reverse');\n    this.setMonthlyPriceANdQuantityValue(targetId, event);\n  }\n\n  buildMonthlyFormAttribute(targetId) {\n    this.changeMonthFieldValue(targetId, \"true\");\n    this.changeRentedFieldValue(targetId, \"false\")\n    this.toggleFlexClass(targetId ,'flex-col-reverse', 'flex-col');\n  }\n\n  buildRentedFormAttribute(targetId) {\n    this.changeMonthFieldValue(targetId, \"false\");\n    this.changeRentedFieldValue(targetId, \"true\");\n    this.toggleFlexClass(targetId, 'flex-col', 'flex-col-reverse');\n    this.setPriceAndQuantityToZero(targetId);\n  }\n\n  changeMonthFieldValue(targetId, value){\n    let monthFieldTarget = this.monthlyFieldTargets;\n    this.updateFiledValue(monthFieldTarget, targetId, value);\n  }\n\n  changeRentedFieldValue(targetId, value){\n    let rentedFieldTarget = this.rentedFieldTargets;\n    this.updateFiledValue(rentedFieldTarget, targetId, value);\n  }\n\n  changeDestroyFieldValue(targetId, value){\n    let destroyFlagTarget = this.destroyFlagTargets;\n    this.updateFiledValue(destroyFlagTarget, targetId, value);\n  }\n\n  setMonthlyPriceANdQuantityValue(targetId, event) {\n    const monthlyPriceTargets = this.monthlyPriceTargets;\n    this.updateFiledValue(monthlyPriceTargets, targetId, 0);\n\n    const monthlyQtyTargets = this.monthlyQuantityTargets;\n    this.updateFiledValue(monthlyQtyTargets, targetId, 0);\n  }\n\n  setPriceAndQuantityToZero(targetId) {\n    const priceTargets = this.priceTargets;\n    this.updateFiledValue(priceTargets, targetId, 0);\n\n    const qtyTargets = this.quantityTargets;\n    this.updateFiledValue(qtyTargets, targetId, 0);\n\n    this.updateFiledValue(this.receivedQuantityTargets, targetId, 0);\n    this.refreshPendingLabel(targetId);\n  }\n\n  updateIsCustomerProductFlag(event, productId) {\n    const isCustomerProductTarget = this.isCustomerProductTargets;\n    let value = event.target.checked ? true: false;\n    this.updateFiledValue(isCustomerProductTarget, productId, value)\n  }\n\n  updateRegularInitialValue(targetId, event) {\n    const initialChecked = event.target.dataset.initialChecked;\n    const priceTargets = this.priceTargets;\n    const qtyTargets = this.quantityTargets;\n    this.updateInitialValue(priceTargets, targetId);\n    if (initialChecked == \"true\") {\n      this.updateInitialValue(qtyTargets, targetId);\n    } else {\n      this.updateFiledValue(qtyTargets, targetId, 0);\n    }\n    this.refreshPendingLabel(targetId);\n  }\n\n  updateMonthlyInitialValue(targetId, event) {\n    const initialChecked = event.target.dataset.initialChecked;\n    const priceTargets = this.priceTargets;\n    const qtyTargets = this.quantityTargets;\n\n    const monthlyPriceTargets = this.monthlyPriceTargets;\n    const monthlyQtyTargets = this.monthlyQuantityTargets;\n\n    this.updateInitialValue(priceTargets, targetId);\n    this.updateInitialValue(monthlyPriceTargets, targetId);\n    if (initialChecked == \"true\") {\n      this.updateInitialValue(qtyTargets, targetId);\n      this.updateInitialValue(monthlyQtyTargets, targetId);\n    } else {\n      this.updateFiledValue(qtyTargets, targetId, 0);\n      this.updateFiledValue(monthlyQtyTargets, targetId, 0)\n    }\n    this.refreshPendingLabel(targetId);\n  }\n\n  updateRentedInitialValue(targetId, event) {\n    const initialChecked = event.target.dataset.initialChecked;\n    const monthlyPriceTargets = this.monthlyPriceTargets;\n    const monthlyQtyTargets = this.monthlyQuantityTargets;\n\n    this.updateInitialValue(monthlyPriceTargets, targetId);\n    if (initialChecked == \"true\") {\n      this.updateInitialValue(monthlyQtyTargets, targetId);\n    } else {\n      this.updateFiledValue(monthlyQtyTargets, targetId, 1)\n    }\n  }\n\n  updateInitialValue(targets, targetId) {\n    targets.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.value = el.dataset.initialValue;\n      }\n    })\n  }\n\n  updateFiledValue(target, targetId, value) {\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.value = value;\n      }\n    })\n  }\n\n  hideMonthlyQtyAndPriceContainer(targetId) {\n    const monthlyQtyAndPriceContainerTargets = this.monthlyPriceAndQtyInputTargets;\n    this.addClass(monthlyQtyAndPriceContainerTargets, targetId, \"hidden\");\n  }\n\n  hideQtyAndPriceContainer(targetId) {\n   const qtyAndPriceContainerTarget = this.priceAndQtyInputTargets;\n   this.addClass(qtyAndPriceContainerTarget, targetId, \"hidden\");\n  }\n\n  showMonthlyQtyAndPriceContainer(targetId) {\n    const monthlyQtyAndPriceContainerTargets = this.monthlyPriceAndQtyInputTargets;\n    this.removeClass(monthlyQtyAndPriceContainerTargets, targetId, \"hidden\");\n  }\n\n  showQtyAndPriceContainer(targetId) {\n    const qtyAndPriceContainerTarget = this.priceAndQtyInputTargets;\n    this.removeClass(qtyAndPriceContainerTarget, targetId, \"hidden\");\n  }\n\n  hideMonthlyLabel(targetId) {\n  const monthlyLabelTarget = this.monthlyLabelTargets;\n  this.addClass(monthlyLabelTarget, targetId, \"hidden\")\n  }\n\n  hideRegularLabel(targetId) {\n  const regularLabelTarget = this.regularLabelTargets;\n  this.addClass(regularLabelTarget, targetId, \"hidden\")\n  }\n\n  showMonthlyLabel(targetId) {\n  const monthlyLabelTarget = this.monthlyLabelTargets;\n  this.removeClass(monthlyLabelTarget, targetId, \"hidden\")\n  }\n\n  showRegularLabel(targetId) {\n  const regularLabelTarget = this.regularLabelTargets;\n  this.removeClass(regularLabelTarget, targetId, \"hidden\")\n  }\n\n  addClass(target, targetId, classToBeAdded) {\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.classList.add(classToBeAdded);\n      }\n    })\n  }\n\n  removeClass(target, targetId, classToBeRemoved) {\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.classList.remove(classToBeRemoved);\n      }\n    })\n  }\n\n  addAttribute(target, targetId) {\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.setAttribute('disabled', 'disabled')\n      }\n    })\n  }\n\n  removeAttributeAndUpdateValue(target, targetId, attribute) {\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.removeAttribute('disabled')\n        if(el.checked)\n          this.updateFiledValue(this.refilledFieldTargets, targetId, true);\n        else\n        this.updateFiledValue(this.refilledFieldTargets, targetId, false);\n      }\n    })\n  }\n\n\n  toggleArrowTargets(event) {\n    const targetId = event.target.dataset.targetId;\n    this.divHideAbleTargets.forEach(el => {\n      if (el.dataset.targetId == targetId) {\n        el.hidden = !el.hidden\n        if (el.hidden) {\n          el.classList.add('hidden')\n          this.showArrow(this.upArrowTargets, targetId);\n          this.hideArrow(this.downArrowTargets, targetId);\n        } else {\n          el.classList.remove('hidden')\n          this.hideArrow(this.upArrowTargets, targetId);\n          this.showArrow(this.downArrowTargets, targetId);\n        }\n      }\n    })\n  }\n\n  hideArrow(target, targetId) {\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.classList.add('hidden');\n      }\n    })\n  }\n\n  showArrow(target, targetId){\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.classList.remove('hidden');\n      }\n    })\n  }\n\n  incPrice(event){\n    const targetId = event.target.dataset.targetId;\n    const priceTargets = this.priceTargets;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    this.incValue(priceTargets, targetId)\n    this.showProductPrice(targetId, 'unitPrice', gstPercentage, gstEnabled)\n  }\n\n  decPrice(event){\n    const targetId = event.target.dataset.targetId;\n    const priceTargets = this.priceTargets;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    this.decValue(priceTargets, targetId);\n    this.showProductPrice(targetId, 'unitPrice', gstPercentage, gstEnabled)\n  }\n\n  incWarnQuantity(event) {\n    const targetId = event.target.dataset.targetId;\n    const warnTargets = this.warnQuantityTargets;\n    this.incValue(warnTargets, targetId);\n  }\n\n  decWarnQuantity(event) {\n    const targetId = event.target.dataset.targetId;\n    const warnTargets = this.warnQuantityTargets;\n    this.decValue(warnTargets, targetId);\n  }\n\n  incBlockQuantity(event) {\n    const targetId = event.target.dataset.targetId;\n    const blockTargets = this.blockQuantityTargets;\n    this.incValue(blockTargets, targetId);\n  }\n\n  decBlockQuantity(event) {\n    const targetId = event.target.dataset.targetId;\n    const blockTargets = this.blockQuantityTargets;\n    this.decValue(blockTargets, targetId);\n  }\n\n  incQty(event){\n    const targetId = event.target.dataset.targetId;\n    const qtyTargets = this.quantityTargets;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    this.incValue(qtyTargets, targetId)\n    this.showProductPrice(targetId, 'unitPrice', gstPercentage, gstEnabled)\n    this.refreshPendingLabel(targetId)\n  }\n\n  decQty(event){\n    const targetId = event.target.dataset.targetId;\n    const qtyTargets = this.quantityTargets;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    this.decValue(qtyTargets, targetId)\n    this.showProductPrice(targetId, 'unitPrice', gstPercentage, gstEnabled)\n    this.refreshPendingLabel(targetId)\n  }\n\n  incReceivedQty(event){\n    const targetId = event.target.dataset.targetId;\n    this.incValue(this.receivedQuantityTargets, targetId)\n    this.refreshPendingLabel(targetId)\n  }\n\n  decReceivedQty(event){\n    const targetId = event.target.dataset.targetId;\n    this.decValue(this.receivedQuantityTargets, targetId)\n    this.refreshPendingLabel(targetId)\n  }\n\n  updatePendingQty(event){\n    this.refreshPendingLabel(event.target.dataset.targetId);\n  }\n\n  refreshPendingLabel(targetId){\n    const quantity = parseInt(this.getValue(this.quantityTargets, targetId)) || 0;\n    let receivedQty = parseInt(this.getValue(this.receivedQuantityTargets, targetId)) || 0;\n\n    if (receivedQty > quantity) {\n      receivedQty = quantity;\n      this.updateFiledValue(this.receivedQuantityTargets, targetId, receivedQty);\n    }\n\n    this.pendingLabelTargets.forEach(el => {\n      if (el.dataset.targetId == targetId) {\n        el.innerHTML = `Pending to receive: ${quantity - receivedQty}`;\n      }\n    });\n  }\n\n  incMonthlyPrice(event){\n    const targetId = event.target.dataset.targetId;\n    const monthlyPriceTargets = this.monthlyPriceTargets;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    const isMonthly = event.target.dataset.isMonthly;\n    this.incValue(monthlyPriceTargets, targetId)\n    this.showProductPrice(targetId, 'monthlyPrice', gstPercentage, gstEnabled, isMonthly)\n  }\n\n  decMonthlyPrice(event){\n    const targetId = event.target.dataset.targetId;\n    const monthlyPriceTargets = this.monthlyPriceTargets;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    const isMonthly = event.target.dataset.isMonthly;\n    this.decValue(monthlyPriceTargets, targetId)\n    this.showProductPrice(targetId, 'monthlyPrice', gstPercentage, gstEnabled, isMonthly)\n  }\n\n  incMonthlyQty(event){\n    const targetId = event.target.dataset.targetId;\n    const monthlyQtyTargets = this.monthlyQuantityTargets;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    const isMonthly = event.target.dataset.isMonthly;\n    this.incValue(monthlyQtyTargets, targetId)\n    this.showProductPrice(targetId, 'monthlyPrice', gstPercentage, gstEnabled, isMonthly)\n  }\n\n  decMonthlyQty(event){\n    const targetId = event.target.dataset.targetId;\n    const monthlyQtyTargets = this.monthlyQuantityTargets;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    const isMonthly = event.target.dataset.isMonthly;\n    this.decValue(monthlyQtyTargets, targetId)\n    this.showProductPrice(targetId, 'monthlyPrice', gstPercentage, gstEnabled, isMonthly)\n  }\n\n  incValue(target, targetId){\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        if(el.dataset.isPriceField == 'true') {\n          el.value = (parseFloat(el.value)+1).toFixed(1);\n        } else {\n          el.value = parseInt(el.value)+1;\n        }\n      }\n    })\n  }\n\n  decValue(target, targetId){\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId && parseInt(el.value)>0) {\n        if(el.dataset.isPriceField == 'true') {\n          el.value = (parseFloat(el.value)-1).toFixed(1);\n        } else {\n          el.value = parseInt(el.value)-1;\n        }\n      }\n    })\n  }\n\n  validate(event) {\n    let daysOfWeek = this.dayOfWeekTargets;\n    this.weekdaysButtonTargets.forEach(el => {\n      const targetId = el.dataset.targetId;\n      let days = [];\n      daysOfWeek.forEach(day=>{\n        if(day.dataset.targetId == targetId) {\n          days.push(day);\n        }\n      })\n      if(el.checked)\n        if (days.some(element => element.checked) == false) {\n          this.notifyCustomer(targetId);\n          event.preventDefault();\n        }\n    })\n  }\n\n  notifyCustomer(targetId) {\n    this.dayOfWeekAlertTargets.forEach(el=>{\n      if (el.dataset.targetId == targetId) {\n        el.innerHTML = \"Please select any days\"\n      }\n    })\n  }\n  showPrice(event){\n    const targetId = event.target.dataset.targetId;\n    const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n    const gstEnabled =event.target.dataset.gstEnabled;\n    const isMonthly = event.target.dataset.isMonthly;\n    const labelTarget =['price','quantity'].includes(event.currentTarget.dataset.customerProductTarget) ? 'unitPrice' : 'monthlyPrice'\n    this.showProductPrice(targetId, labelTarget, gstPercentage, gstEnabled, isMonthly)\n  }\n\n  showProductPrice(targetId, labelTarget, gstPercentage, gstEnabled, isMonthly = 'false') {\n    const isUnitPrice = (labelTarget === 'unitPrice');\n    const priceTarget = isUnitPrice ? this.priceTargets : this.monthlyPriceTargets;\n    const qtyTarget = isUnitPrice ? this.quantityTargets : this.monthlyQuantityTargets;\n    const priceLabelTargets = isUnitPrice ? this.unitPriceLabelTargets : this.monthlyPriceLabelTargets;\n    const price = parseFloat(this.getValue(priceTarget, targetId));\n    const qty = parseFloat(this.getValue(qtyTarget, targetId));\n    this.updatePriceLabel(priceLabelTargets, targetId, price, qty, gstPercentage, gstEnabled, isMonthly)\n  }\n\n  getValue(targets, targetId) {\n    const target = targets.find(el => el.dataset.targetId == targetId);\n    return target ? target.value : undefined;\n  }\n\n  updatePriceLabel(priceLabelTargets, targetId, price, qty, gstPercentage, gstEnabled, isMonthly) {\n    price = isNaN(price) ? 0 : price;\n    qty = isNaN(qty) ? 0 : qty;\n    priceLabelTargets.forEach(el => {\n      if (el.dataset.targetId == targetId) {\n        if(isMonthly=='false'){\n          if(gstEnabled == 'true' && gstPercentage > 0){\n            el.innerHTML = `Price To Customer (\u20B9 ${price * qty} + \u20B9 ${price * qty * gstPercentage/100} GST) =  \u20B9 ${((price+(price*gstPercentage/100))*qty).toFixed(2)}`;\n          } else {\n            el.innerHTML = `Price To Customer (\u20B9 ${price} * ${qty}) = \u20B9 ${(price * qty).toFixed(2)}`;\n          }\n        } else {\n          if(gstEnabled == 'true' && gstPercentage > 0){\n            el.innerHTML = `Price To Customer (\u20B9 ${price} + \u20B9 ${price * gstPercentage/100} GST) =  \u20B9 ${((price+(price*gstPercentage/100))).toFixed(2)}`;\n          } else {\n            el.innerHTML = `Price To Customer = \u20B9 ${price.toFixed(2)}`;\n          }\n        }\n      }\n    });\n  }\n\n  updateIsMonthlyDataAttr(targetId, value){\n    const updateDataAttr = (elements) => {\n      elements.forEach(el => {\n        if (el.dataset.targetId == targetId) {\n          el.dataset.isMonthly = value;\n        }\n      });\n    };\n\n    [this.monthlyBtnTargets, this.monthlyPriceTargets, this.monthlyQuantityTargets].forEach(updateDataAttr);\n  }\n}", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"productSelect\", \"priceDisplay\", \"priceInput\", \"depositInput\"];\n\n  connect() {\n    this.productSelectTargets.forEach((select) => this.syncFromSelect(select));\n  }\n\n  productSelectTargetConnected(select) {\n    this.syncFromSelect(select);\n  }\n\n  syncProduct(event) {\n    this.syncFromSelect(event.currentTarget);\n  }\n\n  syncFromSelect(select) {\n    const index = this.productSelectTargets.indexOf(select);\n    if (index < 0) return;\n\n    const selectedOption = select.options[select.selectedIndex];\n    const rate = selectedOption?.dataset?.rate;\n    const deposit = selectedOption?.dataset?.deposit;\n\n    this.priceDisplayTargets[index].textContent = rate ? `Rs. ${Number(rate).toFixed(2)}` : \"Select product to view price\";\n    this.priceInputTargets[index].value = rate || \"\";\n    this.depositInputTargets[index].value = deposit || 0;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\n    \"cartDrawer\", \"cartFab\", \"drawerBackdrop\", \"fabBadge\",\n    \"container\", \"count\", \"emptyState\", \"filterButton\", \"item\", \"productCard\",\n    \"searchEmptyState\", \"searchInput\", \"searchSummary\",\n    \"step1Panel\", \"step1Tab\", \"step2Count\", \"step2EndDate\", \"step2Panel\", \"step2StartDate\", \"step2Tab\", \"step2Total\", \"total\"\n  ]\n\n  connect() {\n    this.activeFilter = \"all\"\n    this.reindex()\n    this.recalculate()\n    this.filterProducts()\n    this.syncSteps()\n  }\n\n  disconnect() {\n  }\n\n  // \u2500\u2500\u2500 Cart drawer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  openCart(event) {\n    event?.preventDefault()\n    this.cartDrawerTarget.classList.remove(\"translate-x-full\")\n    this.cartDrawerTarget.classList.add(\"translate-x-0\")\n    this.drawerBackdropTarget.classList.remove(\"hidden\")\n    document.body.style.overflow = \"hidden\"\n  }\n\n  closeCart(event) {\n    event?.preventDefault()\n    this.cartDrawerTarget.classList.add(\"translate-x-full\")\n    this.cartDrawerTarget.classList.remove(\"translate-x-0\")\n    this.drawerBackdropTarget.classList.add(\"hidden\")\n    document.body.style.overflow = \"\"\n  }\n\n  // \u2500\u2500\u2500 Product actions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  addProduct(event) {\n    event.preventDefault()\n\n    const button = event.currentTarget\n    const card = button.closest(\"[data-event-product-card]\")\n    const context = this.cardContext(card)\n\n    if (!context) return\n\n    if (!context.requiredAt.trim()) {\n      window.alert(\"Select the booking date and time before adding this product.\")\n      context.datetimeInput?.focus()\n      return\n    }\n\n    this.setCartItemQuantity({\n      productId: context.productId,\n      productName: context.productName,\n      price: context.price,\n      requiredAt: context.requiredAt,\n      quantity: this.cartQuantityFor(context.productId, context.requiredAt) + 1\n    })\n\n    this.handlePostAdd(button)\n  }\n\n  removeProduct(event) {\n    event.preventDefault()\n\n    const item = event.currentTarget.closest('[data-agency-customer-event-checkout-target=\"item\"]')\n    item?.remove()\n\n    this.reindex()\n    this.recalculate()\n  }\n\n  incrementProduct(event) {\n    event.preventDefault()\n\n    const context = this.cardContext(event.currentTarget.closest(\"[data-event-product-card]\"))\n    if (!context) return\n\n    if (!context.requiredAt.trim()) {\n      window.alert(\"Select the booking date and time before updating the cart.\")\n      context.datetimeInput?.focus()\n      return\n    }\n\n    this.setCartItemQuantity({\n      productId: context.productId,\n      productName: context.productName,\n      price: context.price,\n      requiredAt: context.requiredAt,\n      quantity: this.cartQuantityFor(context.productId, context.requiredAt) + 1\n    })\n  }\n\n  decrementProduct(event) {\n    event.preventDefault()\n\n    const context = this.cardContext(event.currentTarget.closest(\"[data-event-product-card]\"))\n    if (!context) return\n\n    if (!context.requiredAt.trim()) {\n      window.alert(\"Select the booking date and time before updating the cart.\")\n      context.datetimeInput?.focus()\n      return\n    }\n\n    this.setCartItemQuantity({\n      productId: context.productId,\n      productName: context.productName,\n      price: context.price,\n      requiredAt: context.requiredAt,\n      quantity: this.cartQuantityFor(context.productId, context.requiredAt) - 1\n    })\n  }\n\n  syncProductCard(event) {\n    const card = event?.currentTarget?.closest(\"[data-event-product-card]\")\n    if (!card) return\n\n    this.syncCardState(card)\n  }\n\n  // \u2500\u2500\u2500 Search and filter \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  filterProducts() {\n    const query = this.searchQuery()\n    let visibleCount = 0\n\n    this.productCardTargets.forEach((card) => {\n      const matches = this.matchesSearch(card, query) && this.matchesFilter(card)\n      card.classList.toggle(\"hidden\", !matches)\n\n      if (matches) visibleCount += 1\n    })\n\n    if (this.hasSearchSummaryTarget) {\n      this.searchSummaryTarget.textContent = `${visibleCount} of ${this.productCardTargets.length} products`\n    }\n\n    if (this.hasSearchEmptyStateTarget) {\n      this.searchEmptyStateTarget.classList.toggle(\"hidden\", visibleCount > 0)\n    }\n  }\n\n  clearSearch() {\n    if (!this.hasSearchInputTarget) return\n\n    this.searchInputTarget.value = \"\"\n    this.filterProducts()\n    this.searchInputTarget.focus()\n  }\n\n  setFilter(event) {\n    event.preventDefault()\n    this.activeFilter = event.currentTarget.dataset.filterValue || \"all\"\n    this.updateFilterButtons()\n    this.filterProducts()\n  }\n\n  // \u2500\u2500\u2500 Step navigation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  continueToStep2(event) {\n    event.preventDefault()\n\n    if (!this.step1Complete()) {\n      window.alert(\"Add at least one product to the cart before continuing.\")\n      return\n    }\n\n    this.closeCart()\n    this.openStep(2)\n  }\n\n  goToStep1(event) {\n    event?.preventDefault()\n    this.openStep(1)\n  }\n\n  goToStep2(event) {\n    event?.preventDefault()\n\n    if (!this.step1Complete()) {\n      window.alert(\"Complete Step 1 first.\")\n      return\n    }\n\n    this.openStep(2)\n  }\n\n  // \u2500\u2500\u2500 Recalculate totals \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  recalculate() {\n    let total = 0\n    const bookingDates = []\n\n    this.itemTargets.forEach((item) => {\n      const quantityInput = item.querySelector('input[name*=\"[qunatity]\"]')\n      const priceInput = item.querySelector('input[name*=\"[price]\"]')\n      const datetimeInput = item.querySelector('input[name*=\"[required_at]\"]')\n      const subtotalNode = item.querySelector('[data-agency-customer-event-checkout-target=\"rowSubtotal\"]')\n      const parsedQuantity = parseInt(quantityInput?.value || \"1\", 10)\n      const quantity = Number.isNaN(parsedQuantity) ? 1 : Math.max(parsedQuantity, 1)\n      const price = Number(priceInput?.value || 0)\n      const subtotal = quantity * price\n      const dateValue = datetimeInput?.value\n\n      quantityInput.value = quantity\n      if (subtotalNode) subtotalNode.textContent = this.formatCurrency(subtotal)\n      total += subtotal\n\n      if (dateValue) bookingDates.push(new Date(dateValue))\n    })\n\n    const itemCount = this.itemTargets.length\n\n    // Update all count targets\n    this.countTargets.forEach((target) => {\n      target.textContent = String(itemCount)\n    })\n\n    // Update FAB badge\n    if (this.hasFabBadgeTarget) {\n      this.fabBadgeTarget.textContent = String(itemCount)\n      // Pulse animation on add\n      this.fabBadgeTarget.classList.remove(\"scale-125\")\n      void this.fabBadgeTarget.offsetWidth // reflow\n      this.fabBadgeTarget.classList.add(\"scale-125\")\n      setTimeout(() => this.fabBadgeTarget.classList.remove(\"scale-125\"), 200)\n    }\n\n    // Update totals\n    this.totalTargets.forEach((target) => {\n      target.textContent = this.formatCurrency(total)\n    })\n\n    // Empty state\n    if (this.hasEmptyStateTarget) {\n      this.emptyStateTarget.classList.toggle(\"hidden\", itemCount > 0)\n    }\n\n    if (this.hasStep2CountTarget) {\n      this.step2CountTarget.textContent = String(itemCount)\n    }\n\n    if (this.hasStep2TotalTarget) {\n      this.step2TotalTarget.textContent = this.formatCurrency(total)\n    }\n\n    this.updateBookingWindow(bookingDates)\n    this.syncProductCardsFromCart()\n\n    this.syncSteps()\n  }\n\n  reindex() {\n    this.itemTargets.forEach((item, index) => {\n      item.querySelectorAll(\"input[name]\").forEach((input) => {\n        input.name = input.name.replace(/\\[\\d+\\]/, `[${index}]`)\n      })\n    })\n  }\n\n  // \u2500\u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  cartRowMarkup({ index, price, productId, productName, quantity, requiredAt }) {\n    const itemName = (field) => `event_checkout_items[${index}][${field}]`\n    const safeQuantity = Math.max(Number.parseInt(quantity, 10) || 1, 1)\n    const unitPriceLabel = this.formatCurrency(price)\n    const subtotalLabel = this.formatCurrency(safeQuantity * price)\n    const safeProductId = this.escapeHtml(productId)\n    const safeProductName = this.escapeHtml(productName)\n    const safeRequiredAt = this.escapeHtml(requiredAt)\n    const recalculateAction = \"input->agency-customer-event-checkout#recalculate\"\n\n    return [\n      `\n      <div\n        class=\"rounded-2xl border border-slate-200 bg-white shadow-sm overflow-hidden\"\n        data-agency-customer-event-checkout-target=\"item\"\n        data-product-id=\"${safeProductId}\"\n      >\n        <div class=\"flex items-center justify-between gap-2 border-b border-slate-100 bg-slate-50 px-3 py-2\">\n          <div class=\"min-w-0\">\n            <div class=\"truncate text-sm font-semibold text-slate-900\">${safeProductName}</div>\n            <div class=\"text-xs text-slate-400\">${unitPriceLabel} / unit</div>\n          </div>\n          ${this.removeProductButtonMarkup()}\n        </div>\n        <div class=\"grid grid-cols-1 gap-2 p-3 sm:grid-cols-[1fr_80px_auto]\">\n          ${this.cartInputGroupMarkup({\n            action: recalculateAction,\n            classes: \"input input-bordered input-sm w-full min-w-0 rounded-xl text-xs\",\n            label: \"Date &amp; Time\",\n            min: null,\n            name: itemName(\"required_at\"),\n            step: null,\n            type: \"datetime-local\",\n            value: safeRequiredAt\n          })}\n          ${this.cartInputGroupMarkup({\n            action: recalculateAction,\n            classes: \"input input-bordered input-sm w-full min-w-0 rounded-xl text-xs\",\n            label: \"Qty\",\n            min: \"1\",\n            name: itemName(\"qunatity\"),\n            step: \"1\",\n            type: \"number\",\n            value: safeQuantity\n          })}\n          <div class=\"flex flex-col justify-end\">\n            <div class=\"text-[10px] font-semibold uppercase tracking-wide text-slate-400\">Subtotal</div>\n            <div class=\"mt-1 text-sm font-bold text-slate-900\" data-agency-customer-event-checkout-target=\"rowSubtotal\">\n              ${subtotalLabel}\n            </div>\n          </div>\n        </div>\n        ${this.hiddenInputMarkup(itemName(\"product_id\"), safeProductId)}\n        ${this.hiddenInputMarkup(itemName(\"price\"), price)}\n        ${this.hiddenInputMarkup(itemName(\"discount_percentage\"), 0)}\n      </div>\n    `\n    ].join(\"\")\n  }\n\n  formatCurrency(amount) {\n    return `Rs. ${Number(amount).toFixed(2)}`\n  }\n\n  cartInputGroupMarkup({ action, classes, label, min, name, step, type, value }) {\n    const attributes = [\n      `type=\"${type}\"`,\n      `name=\"${this.escapeHtml(name)}\"`,\n      `value=\"${this.escapeHtml(value)}\"`,\n      `class=\"${classes}\"`,\n      `data-action=\"${action}\"`\n    ]\n\n    if (min !== null) attributes.push(`min=\"${min}\"`)\n    if (step !== null) attributes.push(`step=\"${step}\"`)\n\n    return `\n      <div class=\"min-w-0\">\n        <label class=\"mb-1 block text-[10px] font-semibold uppercase tracking-wide text-slate-400\">${label}</label>\n        <input\n          ${attributes.join(\"\\n          \")}\n        >\n      </div>\n    `\n  }\n\n  hiddenInputMarkup(name, value) {\n    return `<input type=\"hidden\" name=\"${this.escapeHtml(name)}\" value=\"${this.escapeHtml(value)}\">`\n  }\n\n  removeProductButtonMarkup() {\n    return `\n      <button\n        type=\"button\"\n        class=\"flex-shrink-0 rounded-lg p-1.5 text-red-400 hover:bg-red-50 hover:text-red-600 transition-colors\"\n        data-action=\"agency-customer-event-checkout#removeProduct\"\n        title=\"Remove\"\n      >\n        <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n          <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n        </svg>\n      </button>\n    `\n  }\n\n  escapeHtml(value) {\n    return String(value ?? \"\").replace(/[&<>\"']/g, (char) => {\n      const entities = {\n        \"&\": \"&amp;\",\n        \"<\": \"&lt;\",\n        \">\": \"&gt;\",\n        '\"': \"&quot;\",\n        \"'\": \"&#39;\"\n      }\n\n      return entities[char]\n    })\n  }\n\n  searchQuery() {\n    return (this.hasSearchInputTarget ? this.searchInputTarget.value : \"\").trim().toLowerCase()\n  }\n\n  matchesSearch(card, query) {\n    if (!query) return true\n\n    const searchableText = [\n      card.dataset.productName,\n      this.formatSearchPrice(card.dataset.productPrice),\n      String(card.dataset.productType || \"\").replace(\"-\", \" \")\n    ].join(\" \")\n\n    return searchableText.includes(query)\n  }\n\n  matchesFilter(card) {\n    if (this.activeFilter === \"all\") return true\n    return card.dataset.productType === this.activeFilter\n  }\n\n  updateFilterButtons() {\n    if (!this.hasFilterButtonTarget) return\n\n    this.filterButtonTargets.forEach((button) => {\n      const active = button.dataset.filterValue === this.activeFilter\n      button.classList.toggle(\"bg-sky-600\", active)\n      button.classList.toggle(\"border-sky-200\", active)\n      button.classList.toggle(\"text-white\", active)\n      button.classList.toggle(\"hover:bg-sky-700\", active)\n\n      button.classList.toggle(\"bg-white\", !active)\n      button.classList.toggle(\"border-slate-200\", !active)\n      button.classList.toggle(\"text-slate-700\", !active)\n      button.classList.toggle(\"hover:border-sky-200\", !active)\n      button.classList.toggle(\"hover:text-sky-700\", !active)\n    })\n  }\n\n  formatSearchPrice(price) {\n    const amount = Number(price || 0)\n    return Number.isNaN(amount) ? \"\" : `${amount.toFixed(2)} ${Math.round(amount)}`\n  }\n\n  formatDateLabel(date) {\n    if (!(date instanceof Date) || Number.isNaN(date.getTime())) return \"Not set\"\n\n    return new Intl.DateTimeFormat(\"en-IN\", {\n      day: \"2-digit\",\n      month: \"short\",\n      year: \"numeric\"\n    }).format(date)\n  }\n\n  updateBookingWindow(bookingDates) {\n    const validDates = bookingDates\n      .filter((date) => date instanceof Date && !Number.isNaN(date.getTime()))\n      .sort((a, b) => a - b)\n\n    const startLabel = validDates.length > 0 ? this.formatDateLabel(validDates[0]) : \"Not set\"\n    const endLabel = validDates.length > 0 ? this.formatDateLabel(validDates[validDates.length - 1]) : \"Not set\"\n\n    if (this.hasStep2StartDateTarget) {\n      this.step2StartDateTargets.forEach((target) => {\n        target.textContent = startLabel\n      })\n    }\n\n    if (this.hasStep2EndDateTarget) {\n      this.step2EndDateTargets.forEach((target) => {\n        target.textContent = endLabel\n      })\n    }\n  }\n\n  step1Complete() {\n    return this.itemTargets.length > 0\n  }\n\n  handlePostAdd(button) {\n    this.syncProductCardsFromCart()\n  }\n\n  openStep(stepNumber) {\n    const step1Open = stepNumber === 1\n    this.step1PanelTarget.classList.toggle(\"hidden\", !step1Open)\n    this.step2PanelTarget.classList.toggle(\"hidden\", step1Open)\n\n    // Show/hide FAB only on step 1\n    if (this.hasCartFabTarget) {\n      this.cartFabTarget.classList.toggle(\"hidden\", !step1Open)\n    }\n\n    this.step1TabTarget.classList.toggle(\"bg-slate-50\", !step1Open)\n    this.step1TabTarget.classList.toggle(\"bg-white\", step1Open)\n    this.step2TabTarget.classList.toggle(\"bg-slate-50\", step1Open)\n    this.step2TabTarget.classList.toggle(\"bg-white\", !step1Open)\n  }\n\n  syncSteps() {\n    const canOpenStep2 = this.step1Complete()\n\n    this.step2TabTarget.classList.toggle(\"opacity-50\", !canOpenStep2)\n    this.step2TabTarget.classList.toggle(\"cursor-not-allowed\", !canOpenStep2)\n    this.updateFilterButtons()\n\n    if (!canOpenStep2 && !this.step2PanelTarget.classList.contains(\"hidden\")) {\n      this.openStep(1)\n    }\n  }\n\n  cardContext(card) {\n    if (!card) return null\n\n    const datetimeInput = card.querySelector('[data-agency-customer-event-checkout-target=\"cardDatetimeInput\"]')\n\n    return {\n      card,\n      datetimeInput,\n      price: Number(card.dataset.productPrice || 0),\n      productId: String(card.dataset.productId || \"\"),\n      productName: card.dataset.productNameDisplay || card.dataset.productName || \"\",\n      requiredAt: datetimeInput?.value || \"\"\n    }\n  }\n\n  setCartItemQuantity({ productId, productName, price, requiredAt, quantity }) {\n    const normalizedQuantity = Math.max(Number.parseInt(quantity, 10) || 0, 0)\n    const existingItem = this.findCartItem(productId, requiredAt)\n\n    if (normalizedQuantity <= 0) {\n      existingItem?.remove()\n      this.reindex()\n      this.recalculate()\n      return\n    }\n\n    if (existingItem) {\n      const quantityInput = existingItem.querySelector('input[name*=\"[qunatity]\"]')\n      quantityInput.value = normalizedQuantity\n      this.recalculate()\n      return\n    }\n\n    const index = this.itemTargets.length\n    this.containerTarget.insertAdjacentHTML(\"beforeend\", this.cartRowMarkup({\n      index,\n      price,\n      productId,\n      productName,\n      quantity: normalizedQuantity,\n      requiredAt\n    }))\n\n    this.reindex()\n    this.recalculate()\n  }\n\n  findCartItem(productId, requiredAt) {\n    return this.itemTargets.find((item) =>\n      item.dataset.productId === String(productId) &&\n      item.querySelector('input[name*=\"[required_at]\"]')?.value === requiredAt\n    )\n  }\n\n  cartQuantityFor(productId, requiredAt) {\n    const item = this.findCartItem(productId, requiredAt)\n    const quantityInput = item?.querySelector('input[name*=\"[qunatity]\"]')\n    return Math.max(Number.parseInt(quantityInput?.value || \"0\", 10) || 0, 0)\n  }\n\n  syncProductCardsFromCart() {\n    this.productCardTargets.forEach((card) => this.syncCardState(card))\n  }\n\n  syncCardState(card) {\n    const context = this.cardContext(card)\n    if (!context) return\n\n    const quantity = context.requiredAt.trim() ? this.cartQuantityFor(context.productId, context.requiredAt) : 0\n    const addButton = card.querySelector(\"[data-card-add-button]\")\n    const quantityControls = card.querySelector(\"[data-card-quantity-controls]\")\n    const quantityValue = card.querySelector(\"[data-card-cart-quantity]\")\n    const quantityLabel = card.querySelector(\"[data-card-cart-label]\")\n\n    if (quantityValue) {\n      quantityValue.textContent = String(quantity)\n    }\n\n    if (quantityLabel) {\n      quantityLabel.textContent = quantity > 0 ? `${quantity} in cart` : \"Not in cart\"\n    }\n\n    addButton?.classList.toggle(\"hidden\", quantity > 0)\n    quantityControls?.classList.toggle(\"hidden\", quantity <= 0)\n  }\n}\n", "/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n  if (target === void 0) {\n    target = {};\n  }\n  if (src === void 0) {\n    src = {};\n  }\n  Object.keys(src).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst ssrWindow = {\n  document: ssrDocument,\n  navigator: {\n    userAgent: ''\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  },\n  history: {\n    replaceState() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n", "import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n  if (selector === void 0) {\n    selector = '';\n  }\n  const window = getWindow();\n  const children = [...element.children];\n  if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n    children.push(...element.assignedElements());\n  }\n  if (!selector) {\n    return children;\n  }\n  return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n  // Breadth-first search through all parent's children and assigned elements\n  const elementsQueue = [slot];\n  while (elementsQueue.length > 0) {\n    const elementToCheck = elementsQueue.shift();\n    if (el === elementToCheck) {\n      return true;\n    }\n    elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot?.children || []), ...(elementToCheck.assignedElements?.() || []));\n  }\n}\nfunction elementIsChildOf(el, parent) {\n  const window = getWindow();\n  let isChild = parent.contains(el);\n  if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n    const children = [...parent.assignedElements()];\n    isChild = children.includes(el);\n    if (!isChild) {\n      isChild = elementIsChildOfSlot(el, parent);\n    }\n  }\n  return isChild;\n}\nfunction showWarning(text) {\n  try {\n    console.warn(text);\n    return;\n  } catch (err) {\n    // err\n  }\n}\nfunction createElement(tag, classes) {\n  if (classes === void 0) {\n    classes = [];\n  }\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n  return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n  return v => {\n    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n      return v + 0.001;\n    }\n    return v;\n  };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n", "import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  const device = getDevice();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n  const isSafariBrowser = isSafari();\n  const need3dFix = isSafariBrowser || isWebView && device.ios;\n  return {\n    isSafari: needPerspectiveFix || isSafariBrowser,\n    needPerspectiveFix,\n    need3dFix,\n    isWebView\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize(_ref) {\n  let {\n    swiper,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(_ref2 => {\n          let {\n            contentBoxSize,\n            contentRect,\n            target\n          } = _ref2;\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const observers = [];\n  const window = getWindow();\n  const attach = function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit() {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slides);\n  } else if (swiper.grid) {\n    swiper.grid.unsetSlides();\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    let slide;\n    if (slides[i]) slide = slides[i];\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slides);\n    }\n    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[swiper.getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n      if (slides[i]) {\n        slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n    if (allSlidesSize + offsetSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  swiper.emit('slidesUpdated');\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesProgress(translate) {\n  if (translate === void 0) {\n    translate = this && this.translate || 0;\n  }\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n    }\n    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n  swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  let activeSlide;\n  let prevSlide;\n  let nextSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    if (gridEnabled) {\n      activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n      nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n      prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n    } else {\n      activeSlide = slides[activeIndex];\n    }\n  }\n  if (activeSlide) {\n    if (!gridEnabled) {\n      // Next Slide\n      nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !nextSlide) {\n        nextSlide = slides[0];\n      }\n\n      // Prev Slide\n      prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !prevSlide === 0) {\n        prevSlide = slides[slides.length - 1];\n      }\n    }\n  }\n  slides.forEach(slideEl => {\n    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n  });\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (!lazyEl && swiper.isElement) {\n      if (slideEl.shadowRoot) {\n        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n      } else {\n        // init later\n        requestAnimationFrame(() => {\n          if (slideEl.shadowRoot) {\n            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n            if (lazyEl) lazyEl.remove();\n          }\n        });\n      }\n    }\n    if (lazyEl) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let i = 0; i < slidesGrid.length; i += 1) {\n    if (typeof slidesGrid[i + 1] !== 'undefined') {\n      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n        activeIndex = i;\n      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\n      }\n    } else if (translate >= slidesGrid[i]) {\n      activeIndex = i;\n    }\n  }\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex && !swiper.params.loop) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n    swiper.realIndex = getVirtualRealIndex(activeIndex);\n    return;\n  }\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled && params.loop) {\n    realIndex = getVirtualRealIndex(activeIndex);\n  } else if (gridEnabled) {\n    const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n    if (Number.isNaN(activeSlideIndex)) {\n      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n    }\n    realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n  } else if (swiper.slides[activeIndex]) {\n    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n    if (slideIndex) {\n      realIndex = parseInt(slideIndex, 10);\n    } else {\n      realIndex = activeIndex;\n    }\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    if (previousRealIndex !== realIndex) {\n      swiper.emit('realIndexChange');\n    }\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(el, path) {\n  const swiper = this;\n  const params = swiper.params;\n  let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n        slide = pathEl;\n      }\n    });\n  }\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n  if (axis === void 0) {\n    axis = this.isHorizontal() ? 'x' : 'y';\n  }\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n  return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n  if (translate === void 0) {\n    translate = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (translateBounds === void 0) {\n    translateBounds = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          swiper.animating = false;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n  let {\n    swiper,\n    runCallbacks,\n    direction,\n    step\n  } = _ref;\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) {\n        return false;\n      }\n    }\n  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // initial virtual\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  const isInitialVirtual = isVirtual && initial;\n  // Update Index\n  if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  const browser = getBrowser();\n  const isSafari = browser.isSafari;\n  if (isVirtual && !initial && isSafari && swiper.isElement) {\n    swiper.virtual.update(false, false, slideIndex);\n  }\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      let targetSlideIndex;\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n      } else {\n        targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n      }\n      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n      const {\n        centeredSlides\n      } = swiper.params;\n      let slidesPerView = swiper.params.slidesPerView;\n      if (slidesPerView === 'auto') {\n        slidesPerView = swiper.slidesPerViewDynamic();\n      } else {\n        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n        if (centeredSlides && slidesPerView % 2 === 0) {\n          slidesPerView = slidesPerView + 1;\n        }\n      }\n      let needLoopFix = cols - targetSlideIndex < slidesPerView;\n      if (centeredSlides) {\n        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n      }\n      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n        needLoopFix = false;\n      }\n      if (needLoopFix) {\n        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n        swiper.loopFix({\n          direction,\n          slideTo: true,\n          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n        });\n      }\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n      } else {\n        newIndex = swiper.getSlideIndexByData(newIndex);\n      }\n    }\n  }\n  requestAnimationFrame(() => {\n    swiper.slideTo(newIndex, speed, runCallbacks, internal);\n  });\n  return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n      requestAnimationFrame(() => {\n        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n      });\n      return true;\n    }\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  const isFreeMode = params.freeMode && params.freeMode.enabled;\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n    requestAnimationFrame(() => {\n      swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n    });\n    return true;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (threshold === void 0) {\n    threshold = 0.5;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  if (swiper.destroyed) return;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const initSlides = () => {\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    slides.forEach((el, index) => {\n      el.setAttribute('data-swiper-slide-index', index);\n    });\n  };\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n  const addBlankSlides = amountOfSlides => {\n    for (let i = 0; i < amountOfSlides; i += 1) {\n      const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n      swiper.slidesEl.append(slideEl);\n    }\n  };\n  if (shouldFillGroup) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else if (shouldFillGrid) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else {\n    initSlides();\n  }\n  swiper.loopFix({\n    slideRealIndex,\n    direction: params.centeredSlides ? undefined : 'next'\n  });\n}\n\nfunction loopFix(_temp) {\n  let {\n    slideRealIndex,\n    slideTo = true,\n    direction,\n    setTranslate,\n    activeSlideIndex,\n    byController,\n    byMousewheel\n  } = _temp === void 0 ? {} : _temp;\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  const {\n    centeredSlides\n  } = params;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!params.centeredSlides && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  let slidesPerView = params.slidesPerView;\n  if (slidesPerView === 'auto') {\n    slidesPerView = swiper.slidesPerViewDynamic();\n  } else {\n    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n    if (centeredSlides && slidesPerView % 2 === 0) {\n      slidesPerView = slidesPerView + 1;\n    }\n  }\n  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n  let loopedSlides = slidesPerGroup;\n  if (loopedSlides % slidesPerGroup !== 0) {\n    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n  }\n  loopedSlides += params.loopAdditionalSlides;\n  swiper.loopedSlides = loopedSlides;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  if (slides.length < slidesPerView + loopedSlides) {\n    showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n  } else if (gridEnabled && params.grid.fill === 'row') {\n    showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n  }\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  let activeIndex = swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n  // prepend last slides before start\n  if (activeColIndexWithShift < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        const colIndexToPrepend = cols - index - 1;\n        for (let i = slides.length - 1; i >= 0; i -= 1) {\n          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n        }\n        // slides.forEach((slide, slideIndex) => {\n        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n        // });\n      } else {\n        prependSlidesIndexes.push(cols - index - 1);\n      }\n    }\n  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        slides.forEach((slide, slideIndex) => {\n          if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n        });\n      } else {\n        appendSlidesIndexes.push(index);\n      }\n    }\n  }\n  swiper.__preventObserver__ = true;\n  requestAnimationFrame(() => {\n    swiper.__preventObserver__ = false;\n  });\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n    swiper.slides.forEach((slide, slideIndex) => {\n      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n    });\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix({\n          ...loopParams,\n          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix({\n        ...loopParams,\n        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n      });\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n  if (base === void 0) {\n    base = this;\n  }\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n  const window = getWindow();\n  const {\n    params\n  } = swiper;\n  const edgeSwipeDetection = params.edgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n      return true;\n    }\n    return false;\n  }\n  return true;\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const data = swiper.touchEventsData;\n  if (e.type === 'pointerdown') {\n    if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n      return;\n    }\n    data.pointerId = e.pointerId;\n  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n    data.touchId = e.targetTouches[0].identifier;\n  }\n  if (e.type === 'touchstart') {\n    // don't proceed touch event\n    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n    return;\n  }\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = e.composedPath ? e.composedPath() : e.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  if (!preventEdgeSwipe(swiper, e, startX)) {\n    return;\n  }\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (e.type === 'pointermove') {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    const id = e.pointerId;\n    if (id !== data.pointerId) return;\n  }\n  let targetTouch;\n  if (e.type === 'touchmove') {\n    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  } else {\n    targetTouch = e;\n  }\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n    document.activeElement.blur();\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  touches.previousX = touches.currentX;\n  touches.previousY = touches.currentY;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n  if (!data.isMoved) {\n    if (isLoop && allowLoopFix) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true,\n        detail: {\n          bySwiperTouchMove: true\n        }\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  let loopFixed;\n  new Date().getTime();\n  if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n    Object.assign(touches, {\n      startX: pageX,\n      startY: pageY,\n      currentX: pageX,\n      currentY: pageY,\n      startTranslate: data.currentTranslate\n    });\n    data.loopSwapReset = true;\n    data.startTranslate = data.currentTranslate;\n    return;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetTouch;\n  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n  if (!isTouchEvent) {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    if (e.pointerId !== data.pointerId) return;\n    targetTouch = e;\n  } else {\n    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  data.pointerId = null;\n  data.touchId = null;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n  const swiper = this;\n  if (swiper.documentTouchHandlerProceeded) return;\n  swiper.documentTouchHandlerProceeded = true;\n  if (swiper.params.touchReleaseOnEdges) {\n    swiper.el.style.touchAction = 'auto';\n  }\n}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n  if (!el || typeof el === 'string') return;\n\n  // Touch Events\n  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n    passive: false,\n    capture\n  });\n  el[domMethod]('touchstart', swiper.onTouchStart, {\n    passive: false\n  });\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('touchmove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('touchend', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('touchcancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('contextmenu', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n  const document = getDocument();\n\n  // Get breakpoint for window/container width and update parameters\n  const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n  const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n  const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasGrabCursor = swiper.params.grabCursor;\n  const isGrabCursor = breakpointParams.grabCursor;\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n  if (wasGrabCursor && !isGrabCursor) {\n    swiper.unsetGrabCursor();\n  } else if (!wasGrabCursor && isGrabCursor) {\n    swiper.setGrabCursor();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  const wasLoop = params.loop;\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  const hasLoop = swiper.params.loop;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (initialized) {\n    if (needsReLoop) {\n      swiper.loopDestroy();\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (!wasLoop && hasLoop) {\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (wasLoop && !hasLoop) {\n      swiper.loopDestroy();\n    }\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n  if (base === void 0) {\n    base = 'window';\n  }\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  if (!el || typeof el === 'string') return;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  swiperElementNodeName: 'SWIPER-CONTAINER',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  eventsPrefix: 'swiper',\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 5,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopAddBlankSlides: true,\n  loopAdditionalSlides: 0,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideFullyVisibleClass: 'swiper-slide-fully-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj) {\n    if (obj === void 0) {\n      obj = {};\n    }\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n      params[moduleParamName].auto = true;\n    }\n    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n      params[moduleParamName].auto = true;\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor() {\n    let el;\n    let params;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        pointerId: null,\n        touchId: null\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getDirectionLabel(property) {\n    if (this.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view, exact) {\n    if (view === void 0) {\n      view = 'current';\n    }\n    if (exact === void 0) {\n      exact = false;\n    }\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += Math.ceil(slides[i].swiperSlideSize);\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n  changeDirection(newDirection, needUpdate) {\n    if (needUpdate === void 0) {\n      needUpdate = true;\n    }\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n    if (swiper.isElement) {\n      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n    }\n    lazyElements.forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance, cleanStyles) {\n    if (deleteInstance === void 0) {\n      deleteInstance = true;\n    }\n    if (cleanStyles === void 0) {\n      cleanStyles = true;\n    }\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      if (el && typeof el !== 'string') {\n        el.removeAttribute('style');\n      }\n      if (wrapperEl) {\n        wrapperEl.removeAttribute('style');\n      }\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      if (swiper.el && typeof swiper.el !== 'string') {\n        swiper.el.swiper = null;\n      }\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  const document = getDocument();\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n  const tempDOM = document.createElement('div');\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    // eslint-disable-next-line\n    let slideEl;\n    if (params.renderSlide) {\n      slideEl = params.renderSlide.call(swiper, slide, index);\n      if (typeof slideEl === 'string') {\n        tempDOM.innerHTML = slideEl;\n        slideEl = tempDOM.children[0];\n      }\n    } else if (swiper.isElement) {\n      slideEl = createElement('swiper-slide');\n    } else {\n      slideEl = createElement('div', swiper.params.slideClass);\n    }\n    slideEl.setAttribute('data-swiper-slide-index', index);\n    if (!params.renderSlide) {\n      slideEl.innerHTML = slide;\n    }\n    if (params.cache) {\n      swiper.virtual.cache[index] = slideEl;\n    }\n    return slideEl;\n  }\n  function update(force, beforeInit, forceActiveIndex) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides,\n      loop: isLoop,\n      initialSlide\n    } = swiper.params;\n    if (beforeInit && !isLoop && initialSlide > 0) {\n      return;\n    }\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n    const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n    }\n    let from = activeIndex - slidesBefore;\n    let to = activeIndex + slidesAfter;\n    if (!isLoop) {\n      from = Math.max(from, 0);\n      to = Math.min(to, slides.length - 1);\n    }\n    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    if (isLoop && activeIndex >= slidesBefore) {\n      from -= slidesBefore;\n      if (!centeredSlides) offset += swiper.slidesGrid[0];\n    } else if (isLoop && activeIndex < slidesBefore) {\n      from = -slidesBefore;\n      if (centeredSlides) offset += swiper.slidesGrid[0];\n    }\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n      slidesBefore,\n      slidesAfter\n    });\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      emit('virtualUpdate');\n    }\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.forEach(slideEl => {\n          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n        });\n      }\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()\n      });\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    const getSlideIndex = index => {\n      let slideIndex = index;\n      if (index < 0) {\n        slideIndex = slides.length + index;\n      } else if (slideIndex >= slides.length) {\n        // eslint-disable-next-line\n        slideIndex = slideIndex - slides.length;\n      }\n      return slideIndex;\n    };\n    if (force) {\n      swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n        slideEl.remove();\n      });\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          const slideIndex = getSlideIndex(i);\n          swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n            slideEl.remove();\n          });\n        }\n      }\n    }\n    const loopFrom = isLoop ? -slides.length : 0;\n    const loopTo = isLoop ? slides.length * 2 : slides.length;\n    for (let i = loopFrom; i < loopTo; i += 1) {\n      if (i >= from && i <= to) {\n        const slideIndex = getSlideIndex(i);\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(slideIndex);\n        } else {\n          if (i > previousTo) appendIndexes.push(slideIndex);\n          if (i < previousFrom) prependIndexes.push(slideIndex);\n        }\n      }\n    }\n    appendIndexes.forEach(index => {\n      swiper.slidesEl.append(renderSlide(slides[index], index));\n    });\n    if (isLoop) {\n      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n        const index = prependIndexes[i];\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      }\n    } else {\n      prependIndexes.sort((a, b) => b - a);\n      prependIndexes.forEach(index => {\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      });\n    }\n    elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n    });\n    onRendered();\n  }\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    update(true);\n  }\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const cachedEl = cache[cachedIndex];\n        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n        if (cachedElIndex) {\n          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n          // shift cache indexes\n          Object.keys(swiper.virtual.cache).forEach(key => {\n            if (key > slidesIndexes) {\n              swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n              swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n              delete swiper.virtual.cache[key];\n            }\n          });\n        }\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n        // shift cache indexes\n        Object.keys(swiper.virtual.cache).forEach(key => {\n          if (key > slidesIndexes) {\n            swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n            swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n            delete swiper.virtual.cache[key];\n          }\n        });\n      }\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    let domSlidesAssigned;\n    if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n      if (slides && slides.length) {\n        swiper.virtual.slides = [...slides];\n        domSlidesAssigned = true;\n        slides.forEach((slideEl, slideIndex) => {\n          slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n          swiper.virtual.cache[slideIndex] = slideEl;\n          slideEl.remove();\n        });\n      }\n    }\n    if (!domSlidesAssigned) {\n      swiper.virtual.slides = swiper.params.virtual.slides;\n    }\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n    update(false, true);\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}\n\nexport { Virtual as default };\n", "import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40;\n    // Directions locks\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const el = swiper.el;\n      const swiperWidth = el.clientWidth;\n      const swiperHeight = el.clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = elementOffset(el);\n      if (rtl) swiperOffset.left -= el.scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n    emit('keyPress', kc);\n    return undefined;\n  }\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    document.addEventListener('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    document.removeEventListener('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}\n\nexport { Keyboard as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null,\n      noMousewheelClass: 'swiper-no-mousewheel'\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    }\n\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    lastScrollTime = new window.Date().getTime();\n    // Return false as a default\n    return false;\n  }\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  }\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n\n    // Ignore event if the target or its parents have the swiper-no-mousewheel class\n    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n    const params = swiper.params.mousewheel;\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta;\n\n    // Get the scroll positions\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n    // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      };\n\n      // Keep the most recent events\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n        if (swiper.params.loop) {\n          swiper.loopFix({\n            direction: newEvent.direction < 0 ? 'next' : 'prev',\n            byMousewheel: true\n          });\n        }\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              if (swiper.destroyed || !swiper.params) return;\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              if (swiper.destroyed || !swiper.params) return;\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n          return true;\n        }\n      }\n    }\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n  function events(method) {\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    targetEl[method]('mouseenter', handleMouseEnter);\n    targetEl[method]('mouseleave', handleMouseLeave);\n    targetEl[method]('wheel', handle);\n  }\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n    if (swiper.mousewheel.enabled) return false;\n    events('addEventListener');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n    if (!swiper.mousewheel.enabled) return false;\n    events('removeEventListener');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}\n\nexport { Mousewheel as default };\n", "import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n", "import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    prevEl: null\n  };\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      } else if (res && res.length === 1) {\n        res = res[0];\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (swiper.enabled) {\n      update();\n      return;\n    }\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n    if (swiper.isElement && !targetIsButton) {\n      const path = e.path || e.composedPath && e.composedPath();\n      if (path) {\n        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n      }\n    }\n    if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n", "function classesToSelector(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n", "import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n  }\n  function setSideBullets(bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    if (!bulletEl) return;\n    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n    if (bulletEl) {\n      bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n      if (bulletEl) {\n        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n      }\n    }\n  }\n  function getMoveDirection(prevIndex, nextIndex, length) {\n    prevIndex = prevIndex % length;\n    nextIndex = nextIndex % length;\n    if (nextIndex === prevIndex + 1) {\n      return 'next';\n    } else if (nextIndex === prevIndex - 1) {\n      return 'previous';\n    }\n    return;\n  }\n  function onBulletClick(e) {\n    const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n    if (!bulletEl) {\n      return;\n    }\n    e.preventDefault();\n    const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n    if (swiper.params.loop) {\n      if (swiper.realIndex === index) return;\n      const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n      if (moveDirection === 'next') {\n        swiper.slideNext();\n      } else if (moveDirection === 'previous') {\n        swiper.slidePrev();\n      } else {\n        swiper.slideToLoop(index);\n      }\n    } else {\n      swiper.slideTo(index);\n    }\n  }\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    // Current/Total\n    let current;\n    let previousIndex;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      previousIndex = swiper.previousRealIndex || 0;\n      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n      previousIndex = swiper.previousSnapIndex;\n    } else {\n      previousIndex = swiper.previousIndex || 0;\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n        el.forEach(subEl => {\n          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n        });\n        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n          dynamicBulletIndex += current - (previousIndex || 0);\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.forEach(bulletEl => {\n        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n        bulletEl.classList.remove(...classesToRemove);\n      });\n      if (el.length > 1) {\n        bullets.forEach(bullet => {\n          const bulletIndex = elementIndex(bullet);\n          if (bulletIndex === current) {\n            bullet.classList.add(...params.bulletActiveClass.split(' '));\n          } else if (swiper.isElement) {\n            bullet.setAttribute('part', 'bullet');\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n            if (bulletIndex === firstIndex) {\n              setSideBullets(bullet, 'prev');\n            }\n            if (bulletIndex === lastIndex) {\n              setSideBullets(bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const bullet = bullets[current];\n        if (bullet) {\n          bullet.classList.add(...params.bulletActiveClass.split(' '));\n        }\n        if (swiper.isElement) {\n          bullets.forEach((bulletEl, bulletIndex) => {\n            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n          });\n        }\n        if (params.dynamicBullets) {\n          const firstDisplayedBullet = bullets[firstIndex];\n          const lastDisplayedBullet = bullets[lastIndex];\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            if (bullets[i]) {\n              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n          }\n          setSideBullets(firstDisplayedBullet, 'prev');\n          setSideBullets(lastDisplayedBullet, 'next');\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.forEach(bullet => {\n          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n        });\n      }\n    }\n    el.forEach((subEl, subElIndex) => {\n      if (params.type === 'fraction') {\n        subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n          fractionEl.textContent = params.formatFractionCurrent(current + 1);\n        });\n        subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n          totalEl.textContent = params.formatFractionTotal(total);\n        });\n      }\n      if (params.type === 'progressbar') {\n        let progressbarDirection;\n        if (params.progressbarOpposite) {\n          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n        } else {\n          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n        }\n        const scale = (current + 1) / total;\n        let scaleX = 1;\n        let scaleY = 1;\n        if (progressbarDirection === 'horizontal') {\n          scaleX = scale;\n        } else {\n          scaleY = scale;\n        }\n        subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n        });\n      }\n      if (params.type === 'custom' && params.renderCustom) {\n        subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n        if (subElIndex === 0) emit('paginationRender', subEl);\n      } else {\n        if (subElIndex === 0) emit('paginationRender', subEl);\n        emit('paginationUpdate', subEl);\n      }\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n      }\n    });\n  }\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          // prettier-ignore\n          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n    }\n    swiper.pagination.bullets = [];\n    el.forEach(subEl => {\n      if (params.type !== 'custom') {\n        subEl.innerHTML = paginationHTML || '';\n      }\n      if (params.type === 'bullets') {\n        swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n      }\n    });\n    if (params.type !== 'custom') {\n      emit('paginationRender', el[0]);\n    }\n  }\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = [...document.querySelectorAll(params.el)];\n    }\n    if (!el) {\n      el = params.el;\n    }\n    if (!el || el.length === 0) return;\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n      el = [...swiper.el.querySelectorAll(params.el)];\n      // check if it belongs to another nested Swiper\n      if (el.length > 1) {\n        el = el.find(subEl => {\n          if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n          return true;\n        });\n      }\n    }\n    if (Array.isArray(el) && el.length === 1) el = el[0];\n    Object.assign(swiper.pagination, {\n      el\n    });\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (params.type === 'bullets' && params.clickable) {\n        subEl.classList.add(...(params.clickableClass || '').split(' '));\n      }\n      subEl.classList.add(params.modifierClass + params.type);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n      if (params.type === 'bullets' && params.dynamicBullets) {\n        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n        dynamicBulletIndex = 0;\n        if (params.dynamicMainBullets < 1) {\n          params.dynamicMainBullets = 1;\n        }\n      }\n      if (params.type === 'progressbar' && params.progressbarOpposite) {\n        subEl.classList.add(params.progressbarOppositeClass);\n      }\n      if (params.clickable) {\n        subEl.addEventListener('click', onBulletClick);\n      }\n      if (!swiper.enabled) {\n        subEl.classList.add(params.lockClass);\n      }\n    });\n  }\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => {\n        subEl.classList.remove(params.hiddenClass);\n        subEl.classList.remove(params.modifierClass + params.type);\n        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        if (params.clickable) {\n          subEl.classList.remove(...(params.clickableClass || '').split(' '));\n          subEl.removeEventListener('click', onBulletClick);\n        }\n      });\n    }\n    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n  }\n  on('changeDirection', () => {\n    if (!swiper.pagination || !swiper.pagination.el) return;\n    const params = swiper.params.pagination;\n    let {\n      el\n    } = swiper.pagination;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    update();\n  });\n  on('snapGridLengthChange', () => {\n    render();\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const el = makeElementsArray(swiper.pagination.el);\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n    }\n    init();\n    render();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Pagination as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null\n  };\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n      dragEl.style.width = `${newSize}px`;\n    } else {\n      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n      dragEl.style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(timeout);\n      el.style.opacity = 1;\n      timeout = setTimeout(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n  }\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n  }\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    dragEl.style.width = '';\n    dragEl.style.height = '';\n    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.width = `${dragSize}px`;\n    } else {\n      dragEl.style.height = `${dragSize}px`;\n    }\n    if (divider >= 1) {\n      el.style.display = 'none';\n    } else {\n      el.style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      el.style.opacity = 0;\n    }\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function getPointerPosition(e) {\n    return swiper.isHorizontal() ? e.clientX : e.clientY;\n  }\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    wrapperEl.style.transitionDuration = '100ms';\n    dragEl.style.transitionDuration = '100ms';\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    el.style.transitionDuration = '0ms';\n    if (params.hide) {\n      el.style.opacity = 1;\n    }\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n    }\n    emit('scrollbarDragStart', e);\n  }\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    wrapperEl.style.transitionDuration = '0ms';\n    el.style.transitionDuration = '0ms';\n    dragEl.style.transitionDuration = '0ms';\n    emit('scrollbarDragMove', e);\n  }\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = '';\n      wrapperEl.style.transitionDuration = '';\n    }\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n    emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n  function events(method) {\n    const {\n      scrollbar,\n      params\n    } = swiper;\n    const el = scrollbar.el;\n    if (!el) return;\n    const target = el;\n    const activeListener = params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n    target[eventMethod]('pointerdown', onDragStart, activeListener);\n    document[eventMethod]('pointermove', onDragMove, activeListener);\n    document[eventMethod]('pointerup', onDragEnd, passiveListener);\n  }\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n  function init() {\n    const {\n      scrollbar,\n      el: swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = document.querySelectorAll(params.el);\n      if (!el.length) return;\n    } else if (!el) {\n      el = params.el;\n    }\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n      el = swiperEl.querySelector(params.el);\n    }\n    if (el.length > 0) el = el[0];\n    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let dragEl;\n    if (el) {\n      dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n      if (!dragEl) {\n        dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n        el.append(dragEl);\n      }\n    }\n    Object.assign(scrollbar, {\n      el,\n      dragEl\n    });\n    if (params.draggable) {\n      enableDraggable();\n    }\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n    }\n  }\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const el = swiper.scrollbar.el;\n    if (el) {\n      el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n    }\n    disableDraggable();\n  }\n  on('changeDirection', () => {\n    if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n    const params = swiper.params.scrollbar;\n    let {\n      el\n    } = swiper.scrollbar;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock changeDirection', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      el\n    } = swiper.scrollbar;\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    }\n    init();\n    updateSize();\n    setTranslate();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n\nexport { Scrollbar as default };\n", "import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n  const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const rtlFactor = rtl ? -1 : 1;\n    const p = el.getAttribute('data-swiper-parallax') || '0';\n    let x = el.getAttribute('data-swiper-parallax-x');\n    let y = el.getAttribute('data-swiper-parallax-y');\n    const scale = el.getAttribute('data-swiper-parallax-scale');\n    const opacity = el.getAttribute('data-swiper-parallax-opacity');\n    const rotate = el.getAttribute('data-swiper-parallax-rotate');\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      el.style.opacity = currentOpacity;\n    }\n    let transform = `translate3d(${x}, ${y}, 0px)`;\n    if (typeof scale !== 'undefined' && scale !== null) {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      transform += ` scale(${currentScale})`;\n    }\n    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n      const currentRotate = rotate * progress * -1;\n      transform += ` rotate(${currentRotate}deg)`;\n    }\n    el.style.transform = transform;\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      slides,\n      progress,\n      snapGrid,\n      isElement\n    } = swiper;\n    const elements = elementChildren(el, elementsSelector);\n    if (swiper.isElement) {\n      elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n    }\n    elements.forEach(subEl => {\n      setTransform(subEl, progress);\n    });\n    slides.forEach((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n        setTransform(subEl, slideProgress);\n      });\n    });\n  };\n  const setTransition = function (duration) {\n    if (duration === void 0) {\n      duration = swiper.params.speed;\n    }\n    const {\n      el,\n      hostEl\n    } = swiper;\n    const elements = [...el.querySelectorAll(elementsSelector)];\n    if (swiper.isElement) {\n      elements.push(...hostEl.querySelectorAll(elementsSelector));\n    }\n    elements.forEach(parallaxEl => {\n      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n    });\n  };\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}\n\nexport { Parallax as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      limitToOriginalSize: false,\n      maxRatio: 3,\n      minRatio: 1,\n      panOnMouseMove: false,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let isPanningWithMouse = false;\n  let mousePanStart = {\n    x: 0,\n    y: 0\n  };\n  const mousePanSensitivity = -3; // Negative to invert pan direction\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const evCache = [];\n  const gesture = {\n    originX: 0,\n    originY: 0,\n    slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    imageEl: undefined,\n    imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.imageEl;\n        const slideEl = gesture.slideEl;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n      scale = value;\n    }\n  });\n  function getDistanceBetweenTouches() {\n    if (evCache.length < 2) return 1;\n    const x1 = evCache[0].pageX;\n    const y1 = evCache[0].pageY;\n    const x2 = evCache[1].pageX;\n    const y2 = evCache[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  }\n  function getMaxRatio() {\n    const params = swiper.params.zoom;\n    const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n      const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n      return Math.min(imageMaxRatio, maxRatio);\n    }\n    return maxRatio;\n  }\n  function getScaleOrigin() {\n    if (evCache.length < 2) return {\n      x: null,\n      y: null\n    };\n    const box = gesture.imageEl.getBoundingClientRect();\n    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n  }\n  function getSlideSelector() {\n    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  }\n  function eventWithinSlide(e) {\n    const slideSelector = getSlideSelector();\n    if (e.target.matches(slideSelector)) return true;\n    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n  function eventWithinZoomContainer(e) {\n    const selector = `.${swiper.params.zoom.containerClass}`;\n    if (e.target.matches(selector)) return true;\n    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n\n  // Events\n  function onGestureStart(e) {\n    if (e.pointerType === 'mouse') {\n      evCache.splice(0, evCache.length);\n    }\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    evCache.push(e);\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureTouched = true;\n    gesture.scaleStart = getDistanceBetweenTouches();\n    if (!gesture.slideEl) {\n      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n      if (!gesture.imageWrapEl) {\n        gesture.imageEl = undefined;\n        return;\n      }\n      gesture.maxRatio = getMaxRatio();\n    }\n    if (gesture.imageEl) {\n      const [originX, originY] = getScaleOrigin();\n      gesture.originX = originX;\n      gesture.originY = originY;\n      gesture.imageEl.style.transitionDuration = '0ms';\n    }\n    isScaling = true;\n  }\n  function onGestureChange(e) {\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache[pointerIndex] = e;\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureMoved = true;\n    gesture.scaleMove = getDistanceBetweenTouches();\n    if (!gesture.imageEl) {\n      return;\n    }\n    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function onGestureEnd(e) {\n    if (!eventWithinSlide(e)) return;\n    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n    if (!fakeGestureTouched || !fakeGestureMoved) {\n      return;\n    }\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    if (!gesture.imageEl) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale > 1 && gesture.slideEl) {\n      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    } else if (zoom.scale <= 1 && gesture.slideEl) {\n      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    }\n    if (zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n      gesture.slideEl = undefined;\n    }\n  }\n  let allowTouchMoveTimeout;\n  function allowTouchMove() {\n    swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n  }\n  function preventTouchMove() {\n    clearTimeout(allowTouchMoveTimeout);\n    swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n    allowTouchMoveTimeout = setTimeout(() => {\n      if (swiper.destroyed) return;\n      allowTouchMove();\n    });\n  }\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.imageEl) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    const event = evCache.length > 0 ? evCache[0] : e;\n    image.touchesStart.x = event.pageX;\n    image.touchesStart.y = event.pageY;\n  }\n  function onTouchMove(e) {\n    const isMouseEvent = e.pointerType === 'mouse';\n    const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;\n    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n      return;\n    }\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) {\n      return;\n    }\n    if (!image.isTouched || !gesture.slideEl) {\n      if (isMousePan) onMouseMove(e);\n      return;\n    }\n    if (isMousePan) {\n      onMouseMove(e);\n      return;\n    }\n    if (!image.isMoved) {\n      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n      image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n      image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n      gesture.slideWidth = gesture.slideEl.offsetWidth;\n      gesture.slideHeight = gesture.slideEl.offsetHeight;\n      gesture.imageWrapEl.style.transitionDuration = '0ms';\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n    if (touchesDiff > 5) {\n      swiper.allowClick = false;\n    }\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        allowTouchMove();\n        return;\n      }\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        allowTouchMove();\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n    preventTouchMove();\n    image.isMoved = true;\n    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n    const {\n      originX,\n      originY\n    } = gesture;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    evCache.length = 0;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n      if (gesture.imageEl) {\n        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n      }\n      if (gesture.imageWrapEl) {\n        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n      }\n      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.slideEl = undefined;\n      gesture.imageEl = undefined;\n      gesture.imageWrapEl = undefined;\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n  }\n  function onMouseMove(e) {\n    // Only pan if zoomed in and mouse panning is enabled\n    if (currentScale <= 1 || !gesture.imageWrapEl) return;\n    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n    const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;\n    const matrix = new window.DOMMatrix(currentTransform);\n    if (!isPanningWithMouse) {\n      isPanningWithMouse = true;\n      mousePanStart.x = e.clientX;\n      mousePanStart.y = e.clientY;\n      image.startX = matrix.e;\n      image.startY = matrix.f;\n      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n      gesture.slideWidth = gesture.slideEl.offsetWidth;\n      gesture.slideHeight = gesture.slideEl.offsetHeight;\n      return;\n    }\n    const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;\n    const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;\n    const scaledWidth = image.width * currentScale;\n    const scaledHeight = image.height * currentScale;\n    const slideWidth = gesture.slideWidth;\n    const slideHeight = gesture.slideHeight;\n    const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n    const maxX = -minX;\n    const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n    const maxY = -minY;\n    const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);\n    const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);\n    gesture.imageWrapEl.style.transitionDuration = '0ms';\n    gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;\n    mousePanStart.x = e.clientX;\n    mousePanStart.y = e.clientY;\n    image.startX = newX;\n    image.startY = newY;\n  }\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (e && e.target) {\n        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      }\n      if (!gesture.slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n        } else {\n          gesture.slideEl = swiper.slides[swiper.activeIndex];\n        }\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.pageX;\n      touchY = e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n    const forceZoomRatio = typeof e === 'number' ? e : null;\n    if (currentScale === 1 && forceZoomRatio) {\n      touchX = undefined;\n      touchY = undefined;\n      image.touchesStart.x = undefined;\n      image.touchesStart.y = undefined;\n    }\n    const maxRatio = getMaxRatio();\n    zoom.scale = forceZoomRatio || maxRatio;\n    currentScale = forceZoomRatio || maxRatio;\n    if (e && !(currentScale === 1 && forceZoomRatio)) {\n      slideWidth = gesture.slideEl.offsetWidth;\n      slideHeight = gesture.slideEl.offsetHeight;\n      offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n      offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n      imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    if (forceZoomRatio && zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n      } else {\n        gesture.slideEl = swiper.slides[swiper.activeIndex];\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n    zoom.scale = 1;\n    currentScale = 1;\n    image.touchesStart.x = undefined;\n    image.touchesStart.y = undefined;\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    gesture.slideEl = undefined;\n    gesture.originX = 0;\n    gesture.originY = 0;\n    if (swiper.params.zoom.panOnMouseMove) {\n      mousePanStart = {\n        x: 0,\n        y: 0\n      };\n      if (isPanningWithMouse) {\n        isPanningWithMouse = false;\n        image.startX = 0;\n        image.startY = 0;\n      }\n    }\n  }\n\n  // Toggle Zoom\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n  function getListeners() {\n    const passiveListener = swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = swiper.params.passiveListeners ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  // Attach/Detach Events\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd();\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}\n\nexport { Zoom as default };\n", "import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n    }\n  });\n\n  swiper.controller = {\n    control: undefined\n  };\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }();\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2\u2212x1) \u00D7 (y3\u2212y1)) \u00F7 (x3\u2212x1) + y1\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n    return this;\n  }\n  function getInterpolateFunction(c) {\n    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n  }\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n    function setControlledTranslate(c) {\n      if (c.destroyed) return;\n\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n          multiplier = 1;\n        }\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      if (c.destroyed) return;\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        elementTransitionEnd(c.wrapperEl, () => {\n          if (!controlled) return;\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n  on('beforeInit', () => {\n    if (typeof window !== 'undefined' && (\n    // eslint-disable-line\n    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n      const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n      controlElements.forEach(controlElement => {\n        if (!swiper.controller.control) swiper.controller.control = [];\n        if (controlElement && controlElement.swiper) {\n          swiper.controller.control.push(controlElement.swiper);\n        } else if (controlElement) {\n          const eventName = `${swiper.params.eventsPrefix}init`;\n          const onControllerSwiper = e => {\n            swiper.controller.control.push(e.detail[0]);\n            swiper.update();\n            controlElement.removeEventListener(eventName, onControllerSwiper);\n          };\n          controlElement.addEventListener(eventName, onControllerSwiper);\n        }\n      });\n      return;\n    }\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}\n\nexport { Controller as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      containerRole: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null,\n      scrollOnFocus: true\n    }\n  });\n  swiper.a11y = {\n    clicked: false\n  };\n  let liveRegion = null;\n  let preventFocusHandler;\n  let focusTargetSlideEl;\n  let visibilityChangedTimestamp = new Date().getTime();\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.innerHTML = '';\n    notification.innerHTML = message;\n  }\n  function getRandomNumber(size) {\n    if (size === void 0) {\n      size = 16;\n    }\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n  function makeElFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '0');\n    });\n  }\n  function makeElNotFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '-1');\n    });\n  }\n  function addElRole(el, role) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('role', role);\n    });\n  }\n  function addElRoleDescription(el, description) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-roledescription', description);\n    });\n  }\n  function addElControls(el, controls) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-controls', controls);\n    });\n  }\n  function addElLabel(el, label) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-label', label);\n    });\n  }\n  function addElId(el, id) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('id', id);\n    });\n  }\n  function addElLive(el, live) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-live', live);\n    });\n  }\n  function disableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', true);\n    });\n  }\n  function enableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', false);\n    });\n  }\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const targetEl = e.target;\n    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n      if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n    }\n    if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n      const prevEls = makeElementsArray(swiper.navigation.prevEl);\n      const nextEls = makeElementsArray(swiper.navigation.nextEl);\n      if (nextEls.includes(targetEl)) {\n        if (!(swiper.isEnd && !swiper.params.loop)) {\n          swiper.slideNext();\n        }\n        if (swiper.isEnd) {\n          notify(params.lastSlideMessage);\n        } else {\n          notify(params.nextSlideMessage);\n        }\n      }\n      if (prevEls.includes(targetEl)) {\n        if (!(swiper.isBeginning && !swiper.params.loop)) {\n          swiper.slidePrev();\n        }\n        if (swiper.isBeginning) {\n          notify(params.firstSlideMessage);\n        } else {\n          notify(params.prevSlideMessage);\n        }\n      }\n    }\n    if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n      targetEl.click();\n    }\n  }\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (prevEl) {\n      if (swiper.isBeginning) {\n        disableEl(prevEl);\n        makeElNotFocusable(prevEl);\n      } else {\n        enableEl(prevEl);\n        makeElFocusable(prevEl);\n      }\n    }\n    if (nextEl) {\n      if (swiper.isEnd) {\n        disableEl(nextEl);\n        makeElNotFocusable(nextEl);\n      } else {\n        enableEl(nextEl);\n        makeElFocusable(nextEl);\n      }\n    }\n  }\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.forEach(bulletEl => {\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable(bulletEl);\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole(bulletEl, 'button');\n          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n        }\n      }\n      if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n        bulletEl.setAttribute('aria-current', 'true');\n      } else {\n        bulletEl.removeAttribute('aria-current');\n      }\n    });\n  }\n  const initNavEl = (el, wrapperId, message) => {\n    makeElFocusable(el);\n    if (el.tagName !== 'BUTTON') {\n      addElRole(el, 'button');\n      el.addEventListener('keydown', onEnterOrSpaceKey);\n    }\n    addElLabel(el, message);\n    addElControls(el, wrapperId);\n  };\n  const handlePointerDown = e => {\n    if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n      preventFocusHandler = true;\n    }\n    swiper.a11y.clicked = true;\n  };\n  const handlePointerUp = () => {\n    preventFocusHandler = false;\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!swiper.destroyed) {\n          swiper.a11y.clicked = false;\n        }\n      });\n    });\n  };\n  const onVisibilityChange = e => {\n    visibilityChangedTimestamp = new Date().getTime();\n  };\n  const handleFocus = e => {\n    if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n    if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    focusTargetSlideEl = slideEl;\n    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n    if (swiper.isHorizontal()) {\n      swiper.el.scrollLeft = 0;\n    } else {\n      swiper.el.scrollTop = 0;\n    }\n    requestAnimationFrame(() => {\n      if (preventFocusHandler) return;\n      if (swiper.params.loop) {\n        swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n      } else {\n        swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n      }\n      preventFocusHandler = false;\n    });\n  };\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n    }\n    if (params.slideRole) {\n      addElRole(swiper.slides, params.slideRole);\n    }\n    const slidesLength = swiper.slides.length;\n    if (params.slideLabelMessage) {\n      swiper.slides.forEach((slideEl, index) => {\n        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel(slideEl, ariaLabelMessage);\n      });\n    }\n  };\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.el.append(liveRegion);\n\n    // Container\n    const containerEl = swiper.el;\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n    }\n    if (params.containerMessage) {\n      addElLabel(containerEl, params.containerMessage);\n    }\n    if (params.containerRole) {\n      addElRole(containerEl, params.containerRole);\n    }\n\n    // Wrapper\n    const wrapperEl = swiper.wrapperEl;\n    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId(wrapperEl, wrapperId);\n    addElLive(wrapperEl, live);\n\n    // Slide\n    initSlides();\n\n    // Navigation\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = makeElementsArray(swiper.pagination.el);\n      paginationEl.forEach(el => {\n        el.addEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n    swiper.el.addEventListener('focus', handleFocus, true);\n    swiper.el.addEventListener('focus', handleFocus, true);\n    swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.addEventListener('pointerup', handlePointerUp, true);\n  };\n  function destroy() {\n    if (liveRegion) liveRegion.remove();\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = makeElementsArray(swiper.pagination.el);\n      paginationEl.forEach(el => {\n        el.removeEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n    // Tab focus\n    if (swiper.el && typeof swiper.el !== 'string') {\n      swiper.el.removeEventListener('focus', handleFocus, true);\n      swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n      swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n    }\n  }\n  on('beforeInit', () => {\n    liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n    liveRegion.setAttribute('aria-live', 'assertive');\n    liveRegion.setAttribute('aria-atomic', 'true');\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}\n\nexport { A11y as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n  let initialized = false;\n  let paths = {};\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n    const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n    let value = slugify(slide.getAttribute('data-history'));\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key ? `${key}/` : ''}${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key ? `${key}/` : ''}${value}`;\n    }\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides[i];\n        const slideHistory = slugify(slide.getAttribute('data-history'));\n        if (slideHistory === value) {\n          const index = swiper.getSlideIndex(slide);\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) {\n      if (!swiper.params.history.replaceState) {\n        window.addEventListener('popstate', setHistoryPopState);\n      }\n      return;\n    }\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n  const destroy = () => {\n    const window = getWindow();\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}\n\nexport { History as default };\n", "import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    on\n  } = _ref;\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n      getSlideIndex(_s, hash) {\n        if (swiper.virtual && swiper.params.virtual.enabled) {\n          const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);\n          if (!slideWithHash) return 0;\n          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n          return index;\n        }\n        return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n      }\n    }\n  });\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n      swiper.slideTo(newIndex);\n    }\n  };\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n      emit('hashSet');\n    } else {\n      document.location.hash = activeSlideHash || '';\n      emit('hashSet');\n    }\n  };\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      window.addEventListener('hashchange', onHashChange);\n    }\n  };\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      window.removeEventListener('hashchange', onHashChange);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}\n\nexport { HashNavigation as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit,\n    params\n  } = _ref;\n  swiper.autoplay = {\n    running: false,\n    paused: false,\n    timeLeft: 0\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: false,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n  let timeout;\n  let raf;\n  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayTimeLeft;\n  let autoplayStartTime = new Date().getTime();\n  let wasPaused;\n  let isTouched;\n  let pausedByTouch;\n  let touchStartTimeout;\n  let slideChanged;\n  let pausedByInteraction;\n  let pausedByPointerEnter;\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n    if (e.target !== swiper.wrapperEl) return;\n    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n      return;\n    }\n    resume();\n  }\n  const calcTimeLeft = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      wasPaused = true;\n    } else if (wasPaused) {\n      autoplayDelayCurrent = autoplayTimeLeft;\n      wasPaused = false;\n    }\n    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n    swiper.autoplay.timeLeft = timeLeft;\n    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n    raf = requestAnimationFrame(() => {\n      calcTimeLeft();\n    });\n  };\n  const getSlideDelay = () => {\n    let activeSlideEl;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n    } else {\n      activeSlideEl = swiper.slides[swiper.activeIndex];\n    }\n    if (!activeSlideEl) return undefined;\n    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n    return currentSlideDelay;\n  };\n  const run = delayForce => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    cancelAnimationFrame(raf);\n    calcTimeLeft();\n    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n    autoplayDelayTotal = swiper.params.autoplay.delay;\n    autoplayDelayCurrent = swiper.params.autoplay.delay;\n    const currentSlideDelay = getSlideDelay();\n    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n      delay = currentSlideDelay;\n      autoplayDelayTotal = currentSlideDelay;\n      autoplayDelayCurrent = currentSlideDelay;\n    }\n    autoplayTimeLeft = delay;\n    const speed = swiper.params.speed;\n    const proceed = () => {\n      if (!swiper || swiper.destroyed) return;\n      if (swiper.params.autoplay.reverseDirection) {\n        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n          swiper.slidePrev(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n          emit('autoplay');\n        }\n      } else {\n        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n          swiper.slideNext(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(0, speed, true, true);\n          emit('autoplay');\n        }\n      }\n      if (swiper.params.cssMode) {\n        autoplayStartTime = new Date().getTime();\n        requestAnimationFrame(() => {\n          run();\n        });\n      }\n    };\n    if (delay > 0) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        proceed();\n      }, delay);\n    } else {\n      requestAnimationFrame(() => {\n        proceed();\n      });\n    }\n\n    // eslint-disable-next-line\n    return delay;\n  };\n  const start = () => {\n    autoplayStartTime = new Date().getTime();\n    swiper.autoplay.running = true;\n    run();\n    emit('autoplayStart');\n  };\n  const stop = () => {\n    swiper.autoplay.running = false;\n    clearTimeout(timeout);\n    cancelAnimationFrame(raf);\n    emit('autoplayStop');\n  };\n  const pause = (internal, reset) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    clearTimeout(timeout);\n    if (!internal) {\n      pausedByInteraction = true;\n    }\n    const proceed = () => {\n      emit('autoplayPause');\n      if (swiper.params.autoplay.waitForTransition) {\n        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n      } else {\n        resume();\n      }\n    };\n    swiper.autoplay.paused = true;\n    if (reset) {\n      if (slideChanged) {\n        autoplayTimeLeft = swiper.params.autoplay.delay;\n      }\n      slideChanged = false;\n      proceed();\n      return;\n    }\n    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n    proceed();\n  };\n  const resume = () => {\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n    autoplayStartTime = new Date().getTime();\n    if (pausedByInteraction) {\n      pausedByInteraction = false;\n      run(autoplayTimeLeft);\n    } else {\n      run();\n    }\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n  };\n  const onVisibilityChange = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    const document = getDocument();\n    if (document.visibilityState === 'hidden') {\n      pausedByInteraction = true;\n      pause(true);\n    }\n    if (document.visibilityState === 'visible') {\n      resume();\n    }\n  };\n  const onPointerEnter = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByInteraction = true;\n    pausedByPointerEnter = true;\n    if (swiper.animating || swiper.autoplay.paused) return;\n    pause(true);\n  };\n  const onPointerLeave = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByPointerEnter = false;\n    if (swiper.autoplay.paused) {\n      resume();\n    }\n  };\n  const attachMouseEvents = () => {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.el.addEventListener('pointerenter', onPointerEnter);\n      swiper.el.addEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const detachMouseEvents = () => {\n    if (swiper.el && typeof swiper.el !== 'string') {\n      swiper.el.removeEventListener('pointerenter', onPointerEnter);\n      swiper.el.removeEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const attachDocumentEvents = () => {\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n  };\n  const detachDocumentEvents = () => {\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  };\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      attachMouseEvents();\n      attachDocumentEvents();\n      start();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n    detachDocumentEvents();\n    if (swiper.autoplay.running) {\n      stop();\n    }\n  });\n  on('_freeModeStaticRelease', () => {\n    if (pausedByTouch || pausedByInteraction) {\n      resume();\n    }\n  });\n  on('_freeModeNoMomentumRelease', () => {\n    if (!swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (internal || !swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n      return;\n    }\n    isTouched = true;\n    pausedByTouch = false;\n    pausedByInteraction = false;\n    touchStartTimeout = setTimeout(() => {\n      pausedByInteraction = true;\n      pausedByTouch = true;\n      pause(true);\n    }, 200);\n  });\n  on('touchEnd', () => {\n    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n    clearTimeout(touchStartTimeout);\n    clearTimeout(timeout);\n    if (swiper.params.autoplay.disableOnInteraction) {\n      pausedByTouch = false;\n      isTouched = false;\n      return;\n    }\n    if (pausedByTouch && swiper.params.cssMode) resume();\n    pausedByTouch = false;\n    isTouched = false;\n  });\n  on('slideChange', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    slideChanged = true;\n  });\n  Object.assign(swiper.autoplay, {\n    start,\n    stop,\n    pause,\n    resume\n  });\n}\n\nexport { Autoplay as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      swiper.slideToLoop(slideToIndex);\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  }\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper.update();\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n          slideEl.classList.add(thumbActiveClass);\n        });\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        if (thumbsSwiper.slides[swiper.realIndex + i]) {\n          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n        }\n      }\n    }\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      const currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n  }\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n      const document = getDocument();\n      const getThumbsElementAndInit = () => {\n        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n        if (thumbsElement && thumbsElement.swiper) {\n          thumbs.swiper = thumbsElement.swiper;\n          init();\n          update(true);\n        } else if (thumbsElement) {\n          const eventName = `${swiper.params.eventsPrefix}init`;\n          const onThumbsSwiper = e => {\n            thumbs.swiper = e.detail[0];\n            thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n            init();\n            update(true);\n            thumbs.swiper.update();\n            swiper.update();\n          };\n          thumbsElement.addEventListener(eventName, onThumbsSwiper);\n        }\n        return thumbsElement;\n      };\n      const watchForThumbsToAppear = () => {\n        if (swiper.destroyed) return;\n        const thumbsElement = getThumbsElementAndInit();\n        if (!thumbsElement) {\n          requestAnimationFrame(watchForThumbsToAppear);\n        }\n      };\n      requestAnimationFrame(watchForThumbsToAppear);\n    } else {\n      init();\n      update(true);\n    }\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}\n\nexport { Thumb as default };\n", "import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    once\n  } = _ref;\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n  function onTouchStart() {\n    if (swiper.params.cssMode) return;\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n  function onTouchMove() {\n    if (swiper.params.cssMode) return;\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper;\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n  function onTouchEnd(_ref2) {\n    let {\n      currentPos\n    } = _ref2;\n    if (swiper.params.cssMode) return;\n    const {\n      params,\n      wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper;\n    // Time diff\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        elementTransitionEnd(wrapperEl, () => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            elementTransitionEnd(wrapperEl, () => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          elementTransitionEnd(wrapperEl, () => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      emit('_freeModeStaticRelease');\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}\n\nexport { freeMode as default };\n", "function Grid(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n  let wasMultiRow;\n  const getSpaceBetween = () => {\n    let spaceBetween = swiper.params.spaceBetween;\n    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n    } else if (typeof spaceBetween === 'string') {\n      spaceBetween = parseFloat(spaceBetween);\n    }\n    return spaceBetween;\n  };\n  const initSlides = slides => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n    numFullColumns = Math.floor(slidesLength / rows);\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n    slidesPerRow = slidesNumberEvenToRows / rows;\n  };\n  const unsetSlides = () => {\n    if (swiper.slides) {\n      swiper.slides.forEach(slide => {\n        if (slide.swiperSlideGridSet) {\n          slide.style.height = '';\n          slide.style[swiper.getDirectionLabel('margin-top')] = '';\n        }\n      });\n    }\n  };\n  const updateSlide = (i, slide, slides) => {\n    const {\n      slidesPerGroup\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n    // Set slides order\n    let newSlideOrderIndex;\n    let column;\n    let row;\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.style.order = newSlideOrderIndex;\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n    slide.row = row;\n    slide.column = column;\n    slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n    slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n    slide.swiperSlideGridSet = true;\n  };\n  const updateWrapperSize = (slideSize, snapGrid) => {\n    const {\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    if (!swiper.params.cssMode) {\n      swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n    }\n    if (centeredSlides) {\n      const newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid.splice(0, snapGrid.length);\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n  const onInit = () => {\n    wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n  };\n  const onUpdate = () => {\n    const {\n      params,\n      el\n    } = swiper;\n    const isMultiRow = params.grid && params.grid.rows > 1;\n    if (wasMultiRow && !isMultiRow) {\n      el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n      numFullColumns = 1;\n      swiper.emitContainerClasses();\n    } else if (!wasMultiRow && isMultiRow) {\n      el.classList.add(`${params.containerModifierClass}grid`);\n      if (params.grid.fill === 'column') {\n        el.classList.add(`${params.containerModifierClass}grid-column`);\n      }\n      swiper.emitContainerClasses();\n    }\n    wasMultiRow = isMultiRow;\n  };\n  on('init', onInit);\n  on('update', onUpdate);\n  swiper.grid = {\n    initSlides,\n    unsetSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}\n\nexport { Grid as default };\n", "function appendSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  const appendElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.append(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.append(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) appendElement(slides[i]);\n    }\n  } else {\n    appendElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n}\n\nfunction prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  const prependElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.prepend(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.prepend(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) prependElement(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    prependElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.recalcSlides();\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides[i];\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) slidesEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    slidesEl.append(slides);\n  }\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    slidesEl.append(slidesBuffer[i]);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n  let {\n    swiper\n  } = _ref;\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}\n\nexport { Manipulation as default };\n", "function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.effect !== effect) return;\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return;\n      // remove shadows\n      swiper.slides.forEach(slideEl => {\n        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n      });\n      // create new one\n      recreateShadows();\n    }\n  });\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (swiper.params.effect !== effect) return;\n    if (!swiper.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}\n\nexport { effectInit as e };\n", "import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n  const transformEl = getSlideTransformEl(slideEl);\n  if (transformEl !== slideEl) {\n    transformEl.style.backfaceVisibility = 'hidden';\n    transformEl.style['-webkit-backface-visibility'] = 'hidden';\n  }\n  return transformEl;\n}\n\nexport { effectTarget as e };\n", "import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n  let {\n    swiper,\n    duration,\n    transformElements,\n    allSlides\n  } = _ref;\n  const {\n    activeIndex\n  } = swiper;\n  const getSlide = el => {\n    if (!el.parentElement) {\n      // assume shadow root\n      const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);\n      return slide;\n    }\n    return el.parentElement;\n  };\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let transitionEndTarget;\n    if (allSlides) {\n      transitionEndTarget = transformElements;\n    } else {\n      transitionEndTarget = transformElements.filter(transformEl => {\n        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n        return swiper.getSlideIndex(el) === activeIndex;\n      });\n    }\n    transitionEndTarget.forEach(el => {\n      elementTransitionEnd(el, () => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const evt = new window.CustomEvent('transitionend', {\n          bubbles: true,\n          cancelable: true\n        });\n        swiper.wrapperEl.dispatchEvent(evt);\n      });\n    });\n  }\n}\n\nexport { effectVirtualTransitionEnd as e };\n", "import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    fadeEffect: {\n      crossFade: false\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = swiper.slides[i];\n      const offset = slideEl.swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.opacity = slideOpacity;\n      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFade as default };\n", "import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n  const createSlideShadows = (slideEl, progress, isHorizontal) => {\n    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n      slideEl.append(shadowBefore);\n    }\n    if (!shadowAfter) {\n      shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n      slideEl.append(shadowAfter);\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.forEach(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows(slideEl, progress, isHorizontal);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const r = getRotateFix(swiper);\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          swiper.wrapperEl.append(cubeShadowEl);\n        }\n        cubeShadowEl.style.height = `${swiperWidth}px`;\n      } else {\n        cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          el.append(cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n      const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n      slideEl.style.transform = transform;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress, isHorizontal);\n      }\n    }\n    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n      }\n    }\n    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n  const setTransition = duration => {\n    const {\n      el,\n      slides\n    } = swiper;\n    slides.forEach(slideEl => {\n      slideEl.style.transitionDuration = `${duration}ms`;\n      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n        subEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      const shadowEl = el.querySelector('.swiper-cube-shadow');\n      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n    }\n  };\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}\n\nexport { EffectCube as default };\n", "import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n  const shadowContainer = getSlideTransformEl(slideEl);\n  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n  if (!shadowEl) {\n    shadowEl = createElement('div', shadowClass.split(' '));\n    shadowContainer.append(shadowEl);\n  }\n  return shadowEl;\n}\n\nexport { createShadow as c };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true\n    }\n  });\n  const createSlideShadows = (slideEl, progress) => {\n    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n    if (!shadowAfter) {\n      shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // Set shadows\n    swiper.params.flipEffect;\n    swiper.slides.forEach(slideEl => {\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      createSlideShadows(slideEl, progress);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n    const rotateFix = getRotateFix(swiper);\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress);\n      }\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFlip as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true\n    }\n  });\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    const r = getRotateFix(swiper);\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const slideEl = slides[i];\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = slideEl.swiperSlideOffset;\n      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = slideTransform;\n      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n        if (!shadowBeforeEl) {\n          shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n        }\n        if (!shadowAfterEl) {\n          shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n  };\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}\n\nexport { EffectCoverflow as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    creativeEffect: {\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n    const rotateFix = getRotateFix(swiper);\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      }\n      // set translate\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      });\n      // set rotates\n      r.forEach((value, index) => {\n        let val = data.rotate[index] * Math.abs(progress * multiplier);\n        r[index] = val;\n      });\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n      // Set shadows\n      if (custom && data.shadow || !custom) {\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl && data.shadow) {\n          shadowEl = createShadow('creative', slideEl);\n        }\n        if (shadowEl) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n      targetEl.style.opacity = opacityString;\n      if (data.origin) {\n        targetEl.style.transformOrigin = data.origin;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCreative as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      rotate: true,\n      perSlideRotate: 2,\n      perSlideOffset: 8\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = slideEl.swiperSlideOffset;\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n      }\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -params.perSlideRotate * progress;\n      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n      /* eslint-disable */\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n        scale(${scaleString})\n      `;\n      /* eslint-enable */\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl) {\n          shadowEl = createShadow('cards', slideEl);\n        }\n        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      _loopSwapReset: false,\n      watchSlidesProgress: true,\n      loopAdditionalSlides: 3,\n      centeredSlides: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCards as default };\n", "/**\n * Swiper 11.2.2\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 31, 2025\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Swiper from \"swiper/bundle\";\nconst _Carousel = class _Carousel extends Controller {\n  connect() {\n    this.swiper = new Swiper(this.element, {\n      ...this.defaultOptions,\n      ...this.optionsValue\n    });\n  }\n  disconnect() {\n    this.swiper.destroy(), this.swiper = void 0;\n  }\n  get defaultOptions() {\n    return {};\n  }\n};\n_Carousel.values = {\n  options: Object\n};\nlet Carousel = _Carousel;\nexport {\n  Carousel as default\n};\n", "import { Controller } from \"@hotwired/stimulus\";\nconst _Clipboard = class _Clipboard extends Controller {\n  connect() {\n    this.hasButtonTarget && (this.originalContent = this.buttonTarget.innerHTML);\n  }\n  copy(event) {\n    event.preventDefault();\n    const text = this.sourceTarget.innerHTML || this.sourceTarget.value;\n    navigator.clipboard.writeText(text).then(() => this.copied());\n  }\n  copied() {\n    this.hasButtonTarget && (this.timeout && clearTimeout(this.timeout), this.buttonTarget.innerHTML = this.successContentValue, this.timeout = setTimeout(() => {\n      this.buttonTarget.innerHTML = this.originalContent;\n    }, this.successDurationValue));\n  }\n};\n_Clipboard.targets = [\"button\", \"source\"], _Clipboard.values = {\n  successContent: String,\n  successDuration: {\n    type: Number,\n    default: 2e3\n  }\n};\nlet Clipboard = _Clipboard;\nexport {\n  Clipboard as default\n};\n", "import { Controller } from '@hotwired/stimulus';\n\n// Connects to data-controller=\"date-range\"\nexport default class extends Controller {\n  static targets = ['startDate', 'endDate', 'searchBtn', 'searchIconBtn'];\n\n  updateDate(event) {\n    const inputDate = new Date(event.target.value);\n    inputDate.setHours(0, 0, 0, 0);\n    \n    var todaysDate = new Date();\n    if (this.endDateTarget.dataset.isPnlReport == 'true' ){\n      todaysDate = new Date(todaysDate.getFullYear, todaysDate.getMonth + 1, 0)\n    }\n    todaysDate.setHours(0, 0, 0, 0);\n\n    const startDate = new Date(this.startDateTarget.value);\n    startDate.setHours(0, 0, 0, 0);\n\n    const endDate = new Date(this.endDateTarget.value);\n    endDate.setHours(0, 0, 0, 0);\n    \n    const eventType = event.target.dataset.dateRangeTarget;\n    const isEventField = this.startDateTarget.dataset.isEventField === 'true' ? true : false;\n    this.validateFutureDate(eventType, inputDate, todaysDate, startDate, endDate, isEventField);\n  }\n\n  validateFutureDate(eventType, inputDate, todaysDate, startDate, endDate, isEventField) {\n    const targetElement =\n      eventType === 'startDate' ? this.startDateTarget : this.endDateTarget;\n    const isFutureDate = inputDate > todaysDate;\n\n    if (isFutureDate && !isEventField) {\n      this.disableButton();\n      targetElement.classList.add('border-red-500');\n    } else {\n      if(eventType === 'startDate'){\n        this.setMinDateOnEndDateField(inputDate)\n      } else {\n        this.setMaxDateOnStartDateField(inputDate)\n      }\n      this.validateDateRange(todaysDate, startDate, endDate, isEventField);\n    }\n  }\n\n  validateDateRange(todaysDate, startDate, endDate, isEventField) {\n    if (isEventField ? startDate > endDate : (startDate > endDate || endDate > todaysDate)) {\n      this.endDateTarget.classList.add('border-red-500');\n      this.disableButton();\n    } else {\n      this.enableButton();\n      this.startDateTarget.classList.remove('border-red-500');\n      this.endDateTarget.classList.remove('border-red-500');\n    }\n  }\n\n  updateReportEndDate () {\n    let startDate = new Date(this.startDateTarget.value)\n    let endDate = new Date(this.endDateTarget.value)\n    const todaysDate = new Date();\n\n    if (!isNaN(startDate) && !isNaN(endDate)) {\n      let diffInDays = (endDate - startDate) / (1000 * 60 * 60 * 24)\n      let newEndDate = new Date(startDate)\n      newEndDate.setDate(startDate.getDate() + 365)\n      \n      if (diffInDays > 365) {\n        \n        this.endDateTarget.value = newEndDate.toISOString().split('T')[0]\n        this.endDateTarget.min = startDate.toISOString().split('T')[0]\n        this.endDateTarget.max = newEndDate.toISOString().split('T')[0]\n        this.startDateTarget.max = newEndDate.toISOString().split('T')[0]\n        \n      } else {\n        this.endDateTarget.min = startDate.toISOString().split('T')[0]\n        const maxDate = (newEndDate <= todaysDate) ? newEndDate : todaysDate\n        this.endDateTarget.max = maxDate.toISOString().split('T')[0]\n      }\n    }\n  }\n  enableButton() {\n    this.searchBtnTarget.removeAttribute('disabled');\n    this.searchIconBtnTarget.removeAttribute('disabled');\n  }\n\n  disableButton() {\n    this.searchBtnTarget.setAttribute('disabled', 'disabled');\n    this.searchIconBtnTarget.setAttribute('disabled', 'disabled');\n  }\n  setMinDateOnEndDateField(inputDate) {\n    inputDate.setDate(inputDate.getDate() + 1)\n    this.endDateTarget.setAttribute(\n      'min',\n      inputDate.toISOString().split('T')[0]\n    )\n  }\n  setMaxDateOnStartDateField(inputDate) {\n    inputDate.setDate(inputDate.getDate() + 1)\n    this.startDateTarget.setAttribute(\n      'max',\n      inputDate.toISOString().split('T')[0]\n    )\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"delete-user\"\nexport default class extends Controller {\n  static targets = [\"mobileNumber\",\"errorAlert\"]\n  connect() {\n  }\n  submitForm(event)\n  {\n    event.preventDefault();\n    this.errorAlertTarget.classList.remove(\"alert\", \"alert-error\")\n    this.errorAlertTarget.innerHTML= \"\"\n    const form = event.currentTarget.form;\n    const mobile_no = this.mobileNumberTarget.value;\n    const url =`/sales/get_user?mobile_no=${mobile_no}`;\n    fetch(url,{\n      method: \"get\",\n      headers: {\n        Accept: \"text/html\",\n      }\n    }).then(response=>response.json())\n    .then(response => {\n      if (response.success) {\n      const agency_name = response.agency_name ? response.agency_name: \"NA\";\n      let  confirmation =  confirm(`Name: ${response.user.name} \\n Mobile_Number : ${response.mobile_no} \\n Agency_Name : ${agency_name} \\n Role : ${response.role}`)\n        if (!confirmation) {\n          return;\n        }\n      form.action = `/sales/delete_user/${response.user.id}`;\n      Turbo.navigator.submitForm(form)\n      }else{\n        this.errorAlertTarget.classList.add(\"alert\",\"alert-error\")\n        this.errorAlertTarget.innerHTML= response.error\n      }\n     })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static values = { dialogId: String }\n\n  get dialog() {\n    return document.getElementById(this.dialogIdValue)\n  }\n\n  open() {\n    if (this.dialog && !this.dialog.open) {\n      this.dialog.showModal()\n    }\n  }\n\n  close() {\n    if (this.dialog && this.dialog.open) {\n      this.dialog.close()\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Connects to data-controller=\"dropdown\"\nexport default class extends Controller {\n  static targets = ['input', 'options', 'hiddenField']\n\n  connect () {\n    //this is for closing of dropdown box on outside click\n    document.addEventListener('click', this.closeDropdown.bind(this))\n  }\n\n  toggleDropdown () {\n    this.optionsTarget.classList.toggle('hidden')\n  }\n\n  selectOption (e) {\n    const selectedValue = e.currentTarget.querySelector('.selected-value')\n    this.inputTarget.textContent = selectedValue.textContent.trim()\n    this.hiddenFieldTarget.value = selectedValue.dataset.value\n    this.toggleDropdown()\n  }\n\n  closeDropdown (event) {\n    if (!this.element.contains(event.target)) {\n      this.optionsTarget.classList.add('hidden')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Connects to data-controller=\"employee-payments\"\nexport default class extends Controller {\n  static targets = ['currentUser', 'userField', 'transactionTypeText']\n  connect(){\n    this.updateUser()\n  }\n  updateUser () {\n    const transactionType = this.element.querySelector('input[type=\"radio\"]:checked').value\n    const isDeposit = transactionType === 'deposit'\n    this.currentUserTarget.textContent = isDeposit\n      ? this.userFieldTarget.dataset.currentUserName\n      : ''\n    this.userFieldTarget.classList.toggle('hidden', isDeposit)\n    this.currentUserTarget.classList.toggle('hidden', !isDeposit)\n    \n    if(isDeposit){\n     this.transactionTypeTextTarget.textContent = \"Deposit money to self\"\n    }else if (transactionType === 'receive'){\n      this.transactionTypeTextTarget.textContent = \"Payment received from employee\"\n    }else{\n      this.transactionTypeTextTarget.textContent = \"Payment give to employee\"\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"employee-wallet-amount\"\nexport default class extends Controller {\n  static targets = ['amount', 'initialAmount', 'alert'];\n  connect() {\n  }\n\n  walletAmountConfirmation(event){\n    const newAmount = parseInt(this.amountTarget.value);\n    const initialAmount = parseInt(this.initialAmountTarget.dataset.initialAmount);\n\n    if(initialAmount != newAmount && newAmount > 0) {\n      let confirmation = confirm(`Are you sure?\\nWallet amount of ${initialAmount} will be replaced by ${newAmount},\\nand the new wallet amount will be ${newAmount}.`);\n\n      if (!confirmation) {\n        event.preventDefault();\n      }\n    } else {\n      this.checkAmount(event)\n    }\n  }\n\n  checkAmount(event){\n    const newAmount = parseInt(this.amountTarget.value);\n    if (newAmount < 0 ) {\n      this.alertTarget.innerHTML = \"Amount must be greater than zero.\"\n      this.amountTarget.classList.add(\"border-red-600\");\n      event.preventDefault();\n    } else {\n      this.alertTarget.innerHTML = \"\"\n      this.amountTarget.classList.remove(\"border-red-600\");    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Connects to data-controller=\"event\"\nexport default class extends Controller {\n  static targets = [\n    'mobileNo',\n    'address',\n    'existCust',\n    'newCust',\n    'nameField',\n    'customerType'\n  ]\n  connect () {}\n\n  updateCustomerDetails(event) {\n    const { mobile, address, name } = event.currentTarget.dataset\n    this.setValues(mobile, address, name)\n  }\n\n  checkCustomerType() {\n    const customerType =\n      this.customerTypeTarget.options[this.customerTypeTarget.selectedIndex]\n        .value\n    if (customerType === 'new') {\n      this.removeSelectedCustomer()\n      this.toggleVisibility(true, false)\n      this.setValues()\n      this.nameFieldTarget.required=true\n    } else {\n      this.nameFieldTarget.required=false\n      this.setValues()\n      this.toggleVisibility(false, true)\n    }\n  }\n\n  setValues(mobile = '', address = '', name = '') {\n    this.mobileNoTarget.value = mobile\n    this.addressTarget.value = address\n    this.nameFieldTarget.value = name\n  }\n\n  toggleVisibility(existCust, newCust) {\n    this.existCustTarget.classList.toggle('hidden', existCust)\n    this.newCustTarget.classList.toggle('hidden', newCust)\n  }\n\n  removeSelectedCustomer(){\n    this.element.querySelector(\"#event_customer_customer_id\").value = \"\"\n    this.element.querySelector(\"#selected_customer_id\").innerHTML = 'Select an option...'\n    const elements = this.element.querySelectorAll('[data-js=\"check\"]');\n    elements.forEach(element => {\n      element.classList.add('hidden');\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"event-jar-booking\"\nexport default class extends Controller {\n  static targets = [\n    \"selectProduct\",\n    \"productId\",\n    \"removeProduct\",\n    \"deleteButton\",\n  ];\n  connect() { }\n\n  fetchProduct() {\n    const selectedProduct =\n      this.selectProductTarget.options[this.selectProductTarget.selectedIndex]\n        .value;\n    const eventId = this.selectProductTarget.dataset.eventId;\n    this.selectProductTarget.selectedIndex = 0;\n\n    const productAlreadyPresent = this.productIdTargets.some(\n      (el) => el.value === selectedProduct\n    );\n\n    if (productAlreadyPresent) {\n      this.showErrorMessage(\"Product is already exist in list\");\n    } else {\n      const alertMessage = this.element.querySelector(\"#product-alert\");\n      alertMessage.innerHTML = \"\";\n      alertMessage.classList.remove(\"alert\", \"bg-gray-700\", \"text-white\");\n      if (selectedProduct) {\n        this.url = `/web/events/${eventId}/event_product_booking_summaries/product?id=${selectedProduct}`;\n        this.fetchAndUpdate(this.url);\n      }\n    }\n  }\n\n  removeProduct(event) {\n    const productName = event.currentTarget.dataset.productname;\n    if (\n      confirm(\n        `Are you sure?\\nFrom this product booking \"${productName}\" will be deleted!`\n      )\n    ) {\n      const targetId = event.currentTarget.dataset.id;\n      const targetIndex = event.currentTarget.dataset.index;\n      const id = `event_product_booking_summary_event_product_bookings_attributes_${targetIndex}_id`;\n      const idField = this.element.querySelector(`#${id}`);\n      const productCount = parseInt(event.currentTarget.dataset.productcount);\n      if (productCount === 1) {\n        this.showErrorMessage(\"Every booking should have at least one Product\");\n        event.preventDefault();\n      } else {\n        this.removeElements(idField, this.deleteButtonTargets, targetId);\n      }\n    } else {\n      event.preventDefault();\n    }\n  }\n\n  validateFields(event) {\n    const requiredAt = this.element.querySelector(\n      \"#event_product_booking_summary_required_at\"\n    );\n    if (requiredAt.value === \"\") {\n      this.element.querySelector(\"#requiredAt-field-error\").innerHTML =\n        \"Booking date-time can't be blank\";\n      event.preventDefault();\n    } else {\n      const productsNode = this.element.querySelector(\"#event_products\");\n      if (productsNode.childElementCount == 0) {\n        this.showErrorMessage(\"Product list can't be empty\");\n        event.preventDefault();\n      }\n    }\n  }\n\n  clearErrorMessage() {\n    this.element.querySelector(\"#requiredAt-field-error\").innerHTML = \"\";\n  }\n\n  showErrorMessage(message) {\n    const alertMessage = this.element.querySelector(\"#product-alert\");\n    alertMessage.classList.add(\"alert\", \"bg-gray-700\", \"text-white\");\n    alertMessage.innerHTML = `<span class=\"text-center\">${message}</span>`;\n    alertMessage.animate(\n      [ { opacity: 1 }, { opacity: 0 } ],\n      { duration: 4000 }\n    ).onfinish = () => {\n      alertMessage.innerHTML = \"\";\n      alertMessage.classList.remove(\"alert\", \"bg-gray-700\", \"text-white\");\n    }\n  }\n  fetchAndUpdate(url) {\n    fetch(url, {\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\",\n      },\n    })\n      .then((response) => response.text())\n      .then((html) => Turbo.renderStreamMessage(html));\n  }\n\n  removeElements(idField, deleteButtonTargets, targetId) {\n    if (idField) {\n      idField.remove();\n      deleteButtonTargets.forEach((el) => {\n        el.dataset.productcount = el.dataset.productcount - 1;\n      });\n    }else\n    {\n      this.removeProductTargets.find((el) => el.id === targetId)?.remove();\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"gateway\"\nexport default class extends Controller {\n  static targets = [\"paytmFields\", \"phonepeFields\", \"razorpayFields\"];\n\n  connect(){\n    \n  }\n\n  toggleFields(event) {\n    const selectedGateway = event.target.value;\n\n    this.paytmFieldsTarget.classList.add(\"hidden\");\n    this.phonepeFieldsTarget.classList.add(\"hidden\");\n    this.razorpayFieldsTarget.classList.add(\"hidden\")\n\n    if (selectedGateway === \"paytm\") {\n      this.paytmFieldsTarget.classList.remove(\"hidden\");\n    } else if (selectedGateway === \"phonepe\") {\n      this.phonepeFieldsTarget.classList.remove(\"hidden\");\n    } else if (selectedGateway === \"razorpay\") {\n      this.razorpayFieldsTarget.classList.remove(\"hidden\");\n    }   \n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n// Connects to data-controller=\"monthly-card-filter\"\nexport default class extends Controller {\n  static targets = [\"customerId\", \"order\", \"month\"]\n\n  validateValues(event) {\n    const targets = [\n      { target: this.orderTarget, message: 'Please select order.' },\n      { target: this.monthTarget, message: 'Please select month.' },\n      { target: this.customerIdTarget, message: 'Please select customer name.' }\n    ];\n\n    targets.forEach(({ target, message }) => {\n      if (target.value === '') {\n        alert(message);\n        event.preventDefault();\n      }\n    });\n  }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"multi-select\"\nexport default class extends Controller {\n  static targets = ['options', 'selectedItems']\n\n  connect() {\n    document.addEventListener('click', this.handleOutsideClick.bind(this))\n    this.updateSelection()\n  }\n\n  disconnect() {\n    document.removeEventListener('click', this.handleOutsideClick.bind(this))\n  }\n\n  toggle() {\n    this.optionsTarget.classList.toggle('hidden')\n  }\n\n  updateSelection() {\n    const checkboxes = this.optionsTarget.querySelectorAll(\"input[type='checkbox']\")\n    const selected = Array.from(checkboxes)\n      .filter(checkbox => checkbox.checked)\n      .map(checkbox => checkbox.value)\n    this.selectedItemsTarget.value = selected.length ? selected.join(', ') : \"\"\n  }\n\n  handleOutsideClick(event) {\n    if (!this.element.contains(event.target)) {\n      this.optionsTarget.classList.add('hidden')\n    }\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n\nexport default class extends Controller {\n  static targets =['selectAll',\"checkbox\"]\n  connect() {\n  }\n\n  toggleChildren() {\n    if (this.selectAllTarget.checked) {\n      this.checkboxTargets.map(x => x.checked = true)\n    } else {\n      this.checkboxTargets.map(x => x.checked = false)\n    }\n  }\n\n  toggleParent() {\n    if (this.checkboxTargets.map(x => x.checked).includes(false)) {\n      this.selectAllTarget.checked = false\n    } else {\n      this.selectAllTarget.checked = true\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"expence\"\nexport default class extends Controller {\n  static targets = ['expence_date', 'submit_btn']\n\n  validateDate(event) {\n    const expenceDate = new Date(this.expence_dateTarget.value);\n    expenceDate.setHours(0, 0, 0, 0);\n\n    const todaysDate = new Date();\n    todaysDate.setHours(0, 0, 0, 0);\n\n    this.validateFutureDate(expenceDate, todaysDate);\n  }\n\n  validateFutureDate(expenceDate, todaysDate) {\n    if (todaysDate < expenceDate) {\n      this.expence_dateTarget.classList.add(\"border-red-500\");\n      this.disableButton();\n    } else {\n      this.enableButton();\n      this.expence_dateTarget.classList.remove(\"border-red-500\");\n    }\n  }\n\n  enableButton() {\n    this.submit_btnTarget.removeAttribute('disabled');\n  }\n\n  disableButton() {\n    this.submit_btnTarget.setAttribute('disabled', 'disabled');\n  }\n}", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"fancy-select\"\nexport default class extends Controller {\n  static targets = [\"list\", \"item\", \"selected\", \"input\", \"searchField\"];\n\n  connect() {\n    this.selectedOption();\n    document.addEventListener('click', this.handleOutsideClick.bind(this));\n    this.activeIndex = -1;\n    this.isNavigatingWithKeyboard = false;\n  }\n\n  toggle() {\n    this.listTarget.classList.toggle(\"hidden\");\n    this.selectedTarget.classList.toggle(\"border-2\", !this.listTarget.classList.contains(\"hidden\"));\n    this.selectedTarget.classList.toggle(\"border-gray-500\", !this.listTarget.classList.contains(\"hidden\"));\n  }\n\n  choose(event) {\n    const selectedItem = event.currentTarget;\n    const id = selectedItem.dataset.id;\n\n    this.updateSelectedOption(selectedItem);\n    this.inputTarget.value = id;\n    this.close();\n  }\n\n  search(event) {\n    const searchInput = event.target.value.toLowerCase();\n    this.activeIndex = -1;\n\n    this.itemTargets.forEach((item) => {\n      const itemName = item.querySelector(\".item-name\").textContent.toLowerCase();\n      item.classList.toggle(\"hidden\", !itemName.includes(searchInput));\n    });\n  }\n\n  clearText() {\n    this.searchFieldTarget.value = '';\n    this.itemTargets.forEach(item => item.classList.remove(\"hidden\"));\n  }\n\n  clearSelectBox() {\n    this.inputTarget.value = '';\n    this.selectedTarget.innerHTML = this.selectedTarget.dataset.label;\n    this.resetItems();\n    this.close();\n  }\n\n  selectedOption() {\n    const selectedValue = this.inputTarget.value.trim();\n    if (selectedValue) {\n      const selectedItem = this.itemTargets.find(item => item.dataset.id === selectedValue);\n      if (selectedItem) {\n        this.updateSelectedOption(selectedItem);\n      }\n    }\n  }\n\n  handleOutsideClick(event) {\n    if (!this.element.contains(event.target)) {\n      this.close();\n    }\n  }\n\n  navigate(event) {\n    const key = event.key;\n    this.isNavigatingWithKeyboard = true;\n\n    if (key === \"ArrowDown\") {\n      event.preventDefault();\n      this.updateActiveIndex(1);\n    } else if (key === \"ArrowUp\") {\n      event.preventDefault();\n      this.updateActiveIndex(-1);\n    } else if (key === \"Enter\" && this.activeIndex >= 0) {\n      event.preventDefault();\n      this.selectItem(this.activeIndex);\n    } else if (key === \"Escape\") {\n      this.close();\n    }\n\n    // Reset hover behavior after keyboard navigation ends\n    setTimeout(() => this.isNavigatingWithKeyboard = false, 0);\n  }\n\n  updateActiveIndex(index) {\n    const visibleItems = this.visibleItems;\n    this.activeIndex = Math.min(Math.max(this.activeIndex + index, 0), visibleItems.length - 1);\n    this.updateActiveItem(visibleItems);\n  }\n\n  updateActiveItem(visibleItems) {\n    this.resetItems();\n    const activeItem = this.itemTargets[visibleItems[this.activeIndex]];\n    if (activeItem) {\n      activeItem.classList.add(\"bg-indigo-600\", \"text-white\");\n      activeItem.scrollIntoView({ block: \"nearest\" });\n    }\n  }\n\n  selectItem(index) {\n    const selectedItem = this.itemTargets[this.visibleItems[index]];\n    selectedItem.click();  \n  }\n\n  updateSelectedOption(item) {\n    this.selectedTarget.innerHTML = item.querySelector(`[data-js=\"label\"]`).outerHTML;\n    this.resetItems();\n    item.classList.add(\"bg-indigo-600\", \"text-white\");\n    item.querySelector(`[data-js=\"title\"]`).classList.add(\"font-semibold\");\n    item.querySelector(`[data-js=\"check\"]`).classList.remove(\"hidden\");\n  }\n\n  resetItems() {\n    this.itemTargets.forEach(item => {\n      item.classList.remove(\"bg-indigo-600\", \"text-white\");\n      item.querySelector(`[data-js=\"title\"]`).classList.remove(\"font-semibold\");\n      item.querySelector(`[data-js=\"check\"]`).classList.add(\"hidden\");\n    });\n  }\n\n  get visibleItems() {\n    return this.itemTargets.reduce((indexes, item, index) => {\n      if (!item.classList.contains(\"hidden\")) indexes.push(index);\n      return indexes;\n    }, []);\n  }\n\n  close() {\n    this.listTarget.classList.add(\"hidden\");\n    this.selectedTarget.classList.remove(\"border-2\", \"border-gray-500\");\n  }\n\n  hover(event) {\n    if (!this.isNavigatingWithKeyboard) { \n      const hoveredItem = event.currentTarget;\n      const index = this.itemTargets.indexOf(hoveredItem);\n      if (index !== -1) {\n        this.activeIndex = this.visibleItems.indexOf(index);\n        this.updateActiveItem(this.visibleItems);\n      }\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"fetch-agency-user\"\nexport default class extends Controller {\n  connect () {\n    this.update()\n  }\n  \n  update() {\n    const selectedAgency = this.element.options[this.element.selectedIndex].value;\n    this.url = `/sales/agencies/${selectedAgency}/users`;\n\n    fetch(this.url, {\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\"\n      }\n    }).then((response) => response.text())\n    .then(html => Turbo.renderStreamMessage(html))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Connects to data-controller=\"fetch-customer\"\nexport default class extends Controller {\n  connect () {\n  }\n\n  customerDetails (event) {\n    const selectedCustomer = event.currentTarget.dataset.id\n    if (selectedCustomer) {\n      this.url = `/web/customers/${selectedCustomer}/details`\n      fetch(this.url, {\n        headers: {\n          Accept: 'text/vnd.turbo-stream.html'\n        }\n      })\n        .then(response => response.text())\n        .then(html => Turbo.renderStreamMessage(html))\n    }\n  }\n\n  clearFetchData(){\n    this.element.querySelector('#customer_data').innerHTML = ''\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"fetch-event-product-bookings\"\nexport default class extends Controller {\n  static targets=['selectedDateTime']\n  connect() {\n  }\n  fetchBookings(){\n    const selectedDateTime = this.selectedDateTimeTarget.options[this.selectedDateTimeTarget.selectedIndex].value\n    const event_id=this.selectedDateTimeTarget.dataset.eventId;\n    if (selectedDateTime) {\n    this.url = `/web/events/${event_id}/event_product_transaction_summaries/product_transactions?datetime=${selectedDateTime}`\n    fetch(this.url, {\n      headers: {\n        Accept: 'text/vnd.turbo-stream.html'\n      }\n    })\n      .then(response => response.text())\n      .then(html => Turbo.renderStreamMessage(html))\n  }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Connects to data-controller=\"removals\"\nexport default class extends Controller {\n  timeoutId = null; // to store the timeout ID\n\n  connect () {\n    this.timeoutId =  setTimeout(() => {\n      this.fadeout()\n    }, 2500)\n  }\n  fadeout () {\n    this.element.remove()\n  }\n\n  disconnect() {\n    if (this.timeoutId !== null) {\n      clearTimeout(this.timeoutId); \n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\"mobile\"]\n\n  connect(){\n    this.blurMobileNo();\n  }\n\n  toggleMobileBlur(event) {\n    this.blurMobileNo();\n    const encodedMobileNo = event.currentTarget.dataset.mobileNo;\n\n    if (encodedMobileNo) {\n      const decodedMobileNo = atob(encodedMobileNo);\n      event.currentTarget.innerHTML = decodedMobileNo;\n      event.currentTarget.classList.remove('blur-sm', 'cursor-pointer');\n    }\n  }\n\n  blurMobileNo(){\n    this.mobileTargets.forEach(element => {\n      element.innerHTML = \"0000000000\";\n      element.classList.add('blur-sm', 'cursor-pointer');\n    });\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"mobile-no-validator\"\nexport default class extends Controller {\n  static targets = [\"submitBtn\"]\n  validate(event) {\n    if (event.target.value === '' || /^[\\d,]+$/.test(event.target.value.replace(/\\s/g, ''))) {\n      event.target.classList.remove(\"border-red-500\");\n      this.enableButton();\n    } else {\n      event.target.classList.add(\"border-red-500\");\n      this.disableButton();\n    }\n  }\n\n  enableButton() {\n    this.submitBtnTarget.removeAttribute('disabled');\n  }\n\n  disableButton() {\n    this.submitBtnTarget.setAttribute('disabled', 'disabled');\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Reusable marketing-lead capture modal.\n// Open from anywhere with:\n//   <button type=\"button\"\n//           data-action=\"click->marketing-lead-modal#open\"\n//           data-marketing-lead-modal-cta-param=\"hero_form\">Book Demo</button>\n//\n// The modal element must live in the same DOM once (usually in application.html.erb).\n// It listens for a global `pp:lead-modal:open` event too, so external inline scripts\n// can dispatch `window.dispatchEvent(new CustomEvent('pp:lead-modal:open', { detail: { cta, name } }))`.\nexport default class extends Controller {\n  static targets = [\n    \"backdrop\", \"dialog\", \"panel\",\n    \"form\",\n    \"nameRow\", \"nameInput\", \"mobileInput\",\n    \"sourceCta\", \"sourcePath\", \"utmSource\", \"utmMedium\", \"utmCampaign\",\n    \"openedAt\", \"honeypot\",\n    \"error\", \"submit\", \"submitLabel\", \"submitSpinner\"\n  ]\n  static values = {\n    endpoint: String,\n    whatsappUrl: String\n  }\n\n  connect() {\n    this._keydownBound = this._handleKeydown.bind(this)\n    this._externalOpenBound = this._handleExternalOpen.bind(this)\n    this._delegatedOpenBound = this._delegatedOpen.bind(this)\n    window.addEventListener(\"pp:lead-modal:open\", this._externalOpenBound)\n    // Auto-wire any element with data-lead-modal-open for non-Stimulus opens.\n    document.addEventListener(\"click\", this._delegatedOpenBound, true)\n  }\n\n  disconnect() {\n    window.removeEventListener(\"pp:lead-modal:open\", this._externalOpenBound)\n    document.removeEventListener(\"click\", this._delegatedOpenBound, true)\n    document.removeEventListener(\"keydown\", this._keydownBound)\n    document.body.style.overflow = \"\"\n  }\n\n  _delegatedOpen(e) {\n    const el = e.target.closest(\"[data-lead-modal-open]\")\n    if (!el) return\n    e.preventDefault()\n    this.openWithOptions({\n      cta: el.dataset.leadSourceCta || el.dataset.ppCta || \"other\",\n      nameRequired: el.dataset.leadNameRequired === \"true\"\n    })\n  }\n\n  _handleExternalOpen(e) {\n    const detail = (e && e.detail) || {}\n    this.openWithOptions({\n      cta: detail.cta || \"other\",\n      nameRequired: !!detail.nameRequired\n    })\n  }\n\n  open(event) {\n    const cta = (event && event.params && event.params.cta)\n      || (event && event.currentTarget && event.currentTarget.dataset.marketingLeadModalCtaParam)\n      || (event && event.currentTarget && event.currentTarget.dataset.leadSourceCta)\n      || \"other\"\n    const nameRequired = !!(event && event.params && event.params.nameRequired)\n    this.openWithOptions({ cta, nameRequired, trigger: event && event.currentTarget })\n  }\n\n  openWithOptions({ cta, nameRequired, trigger } = {}) {\n    this._lastTrigger = trigger || document.activeElement\n    this._reset()\n\n    if (this.hasSourceCtaTarget) this.sourceCtaTarget.value = cta || \"other\"\n    if (this.hasSourcePathTarget) this.sourcePathTarget.value = window.location.pathname || \"/\"\n\n    const utm = this._utmFromQuery()\n    if (this.hasUtmSourceTarget) this.utmSourceTarget.value = utm.utm_source\n    if (this.hasUtmMediumTarget) this.utmMediumTarget.value = utm.utm_medium\n    if (this.hasUtmCampaignTarget) this.utmCampaignTarget.value = utm.utm_campaign\n\n    if (this.hasOpenedAtTarget) this.openedAtTarget.value = String(Math.floor(Date.now() / 1000))\n\n    if (this.hasNameRowTarget) {\n      this.nameRowTarget.classList.toggle(\"hidden\", !nameRequired)\n      if (this.hasNameInputTarget) {\n        this.nameInputTarget.required = !!nameRequired\n        this.nameInputTarget.placeholder = nameRequired ? \"Your name\" : \"Your name (optional)\"\n      }\n    }\n\n    this.backdropTarget.classList.remove(\"hidden\")\n    this.dialogTarget.classList.remove(\"hidden\")\n    this.dialogTarget.classList.add(\"flex\")\n    document.body.style.overflow = \"hidden\"\n    document.addEventListener(\"keydown\", this._keydownBound)\n\n    // Focus the mobile field after a tick so assistive tech hears the label.\n    setTimeout(() => {\n      if (this.hasMobileInputTarget) this.mobileInputTarget.focus()\n    }, 40)\n\n    this._trackGA(\"lead_modal_open\", { cta })\n  }\n\n  close() {\n    if (!this.dialogTarget.classList.contains(\"hidden\")) {\n      document.removeEventListener(\"keydown\", this._keydownBound)\n      this.backdropTarget.classList.add(\"hidden\")\n      this.dialogTarget.classList.add(\"hidden\")\n      this.dialogTarget.classList.remove(\"flex\")\n      document.body.style.overflow = \"\"\n      // Return focus to the originating button for keyboard users.\n      if (this._lastTrigger && typeof this._lastTrigger.focus === \"function\") {\n        try { this._lastTrigger.focus() } catch (_e) {}\n      }\n    }\n  }\n\n  onBackdropClick() {\n    this.close()\n  }\n\n  onPanelClick(event) {\n    event.stopPropagation()\n  }\n\n  _handleKeydown(e) {\n    if (e.key === \"Escape\") {\n      this.close()\n    } else if (e.key === \"Tab\") {\n      this._trapFocus(e)\n    }\n  }\n\n  _trapFocus(e) {\n    if (!this.hasPanelTarget) return\n    const focusables = this.panelTarget.querySelectorAll(\n      'a[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n    )\n    if (!focusables.length) return\n    const first = focusables[0]\n    const last = focusables[focusables.length - 1]\n    if (e.shiftKey && document.activeElement === first) {\n      e.preventDefault()\n      last.focus()\n    } else if (!e.shiftKey && document.activeElement === last) {\n      e.preventDefault()\n      first.focus()\n    }\n  }\n\n  // Fire-and-forget: open WhatsApp synchronously in the same user-gesture\n  // (no popup blocker), fire API in the background, close the modal. Matches\n  // the inline-form flow so both paths feel identical.\n  submit(event) {\n    event.preventDefault()\n    this._clearError()\n\n    const mobile = this._normalizedMobile()\n    if (!/^[6-9]\\d{9}$/.test(mobile)) {\n      this._showError(\"Please enter a valid 10-digit Indian mobile number.\")\n      if (this.hasMobileInputTarget) this.mobileInputTarget.focus()\n      return\n    }\n    const name = this.hasNameInputTarget ? this.nameInputTarget.value.trim() : \"\"\n    if (this.hasNameInputTarget && this.nameInputTarget.required && !name) {\n      this._showError(\"Please enter your name.\")\n      this.nameInputTarget.focus()\n      return\n    }\n\n    // Open WhatsApp in the same click tick \u2014 browsers allow this without\n    // popup-blocker interference. `noopener` makes window.open return null\n    // by spec, so we can't meaningfully check the return value.\n    window.open(this._buildWhatsAppUrl(mobile, name), \"_blank\", \"noopener\")\n\n    // 2. Fire API in background; response is ignored.\n    this._fireLead({\n      marketing_lead: {\n        name: name,\n        mobile_no: mobile,\n        source_path: this.sourcePathTarget.value,\n        source_cta: this.sourceCtaTarget.value,\n        utm_source: this.utmSourceTarget.value,\n        utm_medium: this.utmMediumTarget.value,\n        utm_campaign: this.utmCampaignTarget.value\n      },\n      honeypot: this.hasHoneypotTarget ? this.honeypotTarget.value : \"\",\n      opened_at: parseInt(this.openedAtTarget.value || \"0\", 10)\n    })\n\n    this._trackGA(\"lead_submit\", { cta: this.sourceCtaTarget.value, method: \"modal_fire_forget\" })\n\n    // 3. Close the modal.\n    this.close()\n  }\n\n  _fireLead(payload) {\n    try {\n      fetch(this.endpointValue, {\n        method: \"POST\",\n        credentials: \"same-origin\",\n        keepalive: true,\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"Accept\": \"application/json\",\n          \"X-CSRF-Token\": this._csrfToken()\n        },\n        body: JSON.stringify(payload)\n      }).catch(() => {})\n    } catch (_e) {}\n  }\n\n  _buildWhatsAppUrl(mobile, name) {\n    const intro = name ? `Hi Pure Pani team! I'm ${name}. ` : \"Hi Pure Pani team! \"\n    const text = `${intro}My mobile: ${mobile}. I'd like a free demo for my water delivery business.`\n    return `https://wa.me/916265754402?text=${encodeURIComponent(text)}`\n  }\n\n  _reset() {\n    if (this.hasFormTarget) this.formTarget.reset()\n    this._clearError()\n  }\n\n  _normalizedMobile() {\n    if (!this.hasMobileInputTarget) return \"\"\n    let raw = (this.mobileInputTarget.value || \"\").replace(/\\D/g, \"\")\n    raw = raw.replace(/^91(\\d{10})$/, \"$1\")\n    raw = raw.replace(/^0(\\d{10})$/, \"$1\")\n    return raw\n  }\n\n  _showError(msg) {\n    if (!this.hasErrorTarget) return\n    this.errorTarget.textContent = msg\n    this.errorTarget.classList.remove(\"hidden\")\n  }\n\n  _clearError() {\n    if (!this.hasErrorTarget) return\n    this.errorTarget.textContent = \"\"\n    this.errorTarget.classList.add(\"hidden\")\n  }\n\n  _csrfToken() {\n    const meta = document.querySelector('meta[name=\"csrf-token\"]')\n    return meta ? meta.getAttribute(\"content\") : \"\"\n  }\n\n  _utmFromQuery() {\n    const out = { utm_source: \"\", utm_medium: \"\", utm_campaign: \"\" }\n    try {\n      const qs = new URLSearchParams(window.location.search)\n      out.utm_source = qs.get(\"utm_source\") || \"\"\n      out.utm_medium = qs.get(\"utm_medium\") || \"\"\n      out.utm_campaign = qs.get(\"utm_campaign\") || \"\"\n    } catch (_e) {}\n    return out\n  }\n\n  _trackGA(event, params) {\n    if (typeof window.gtag !== \"function\") return\n    try { window.gtag(\"event\", event, params || {}) } catch (_e) {}\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"image-preview\"\nexport default class extends Controller {\n  static targets = [\"preview\", \"fileField\"]\n\n  preview(event) {\n    const input = event.target;\n    const defaultUrl = input.dataset.defaultImageUrl || `${window.location.origin}/assets/profile.png`;\n    const topMargin = input.dataset.defaultImagePt || \"1\";\n    const file = input.files[0];\n\n    if (file) {\n      const reader = new FileReader();\n      reader.onload = (e) => {\n        this.previewTarget.src = e.target.result;\n        this.addRemoveButton(defaultUrl, topMargin);\n      }\n      reader.readAsDataURL(file);\n    } else {\n      this.resetPreview(defaultUrl);\n    }\n  }\n\n  addRemoveButton(defaultUrl, _topMargin) {\n    if (!this.hasFileFieldTarget) return\n    if (this.fileFieldTarget.parentElement.querySelector(\".qr-remove-btn\")) return\n\n    const btn = document.createElement(\"button\")\n    btn.type = \"button\"\n    btn.className = \"qr-remove-btn inline-flex items-center gap-1 mt-2 text-[12px] font-semibold text-rose-600 hover:text-rose-700 transition\"\n    btn.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 14L5 10l4-4M5 10h10a4 4 0 010 8h-1\"/></svg> Undo selection`\n\n    btn.addEventListener(\"click\", (e) => {\n      e.preventDefault()\n      this.resetPreview(defaultUrl)\n    })\n\n    this.fileFieldTarget.insertAdjacentElement(\"afterend\", btn)\n  }\n\n  resetPreview(defaultUrl) {\n    this.fileFieldTarget.value = \"\"\n    this.previewTarget.src = defaultUrl\n\n    const btn = this.fileFieldTarget.parentElement.querySelector(\".qr-remove-btn\")\n    if (btn) btn.remove()\n  }\n}", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['hideable', 'closeButton', 'toggleButton']\n\n  connect () {\n    this.toggleVisibility(this.hideableTarget.dataset.initialHidden === 'true')\n    document.addEventListener('click', this.handleOutsideClick.bind(this))\n  }\n\n  hideTargets () {\n    this.toggleVisibility(true)\n  }\n\n  toggleTargets () {\n    const isHidden = (this.hideableTarget.hidden = !this.hideableTarget.hidden)\n    this.toggleVisibility(isHidden)\n  }\n\n  toggleVisibility (isHidden) {\n    const { hideableTarget, toggleButtonTarget, closeButtonTarget } = this\n\n    hideableTarget.hidden = isHidden\n    hideableTarget.classList.toggle('hidden', isHidden)\n    toggleButtonTarget.classList.toggle('hidden', !isHidden)\n    closeButtonTarget.classList.toggle('hidden', isHidden)\n  }\n\n  handleOutsideClick(event) {\n    if (!this.element.contains(event.target)) {\n      this.hideTargets();\n    }\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Client-side tabs for the dashboard. Panels are display:none when inactive,\n// so the lazy turbo-frames inside a hidden panel only fetch once that panel is\n// shown for the first time \u2014 keeping the initial page light.\nexport default class extends Controller {\n  static targets = [\"tab\", \"panel\"]\n\n  connect() {\n    const hash = (window.location.hash || \"\").replace(\"#\", \"\")\n    const known = this.tabTargets.some((t) => t.dataset.tab === hash)\n    const initial = known ? hash : this.tabTargets[0]?.dataset.tab\n    if (initial) this.activate(initial, false)\n  }\n\n  select(event) {\n    this.activate(event.currentTarget.dataset.tab, true)\n  }\n\n  activate(name, updateHash) {\n    this.tabTargets.forEach((t) => {\n      const active = t.dataset.tab === name\n      t.classList.toggle(\"pp-tab-active\", active)\n      t.setAttribute(\"aria-selected\", active ? \"true\" : \"false\")\n    })\n    this.panelTargets.forEach((p) => {\n      p.classList.toggle(\"hidden\", p.dataset.tab !== name)\n    })\n    if (updateHash) {\n      history.replaceState(null, \"\", `#${name}`)\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['number', 'priceLabel']\n\n  connect () {\n    this.submitBtn = document.getElementById('submitBtn')\n  }\n\n  numberIncrement (event) {\n    const currentTarget = event.currentTarget.dataset.id;\n    const targetNumber = document.getElementById(currentTarget);\n    const isFloatOrBigDecimal = ['Float', 'BigDecimal'].includes(targetNumber.dataset.numbertype);\n    const max = this.effectiveMax(targetNumber);\n\n    let nextValue = (parseFloat(targetNumber.value) || 0) + 1;\n    if (max !== null && nextValue > max) {\n      nextValue = max;\n    }\n\n    targetNumber.value = isFloatOrBigDecimal ? nextValue.toFixed(2) : nextValue;\n    targetNumber.classList.remove('border-red-500')\n    this.syncLinkedFields(targetNumber);\n    this.validateNumber();\n    this.calculatePrice(event);\n  }\n\n  numberDecrement (event) {\n    const currentTarget = event.currentTarget.dataset.id;\n    const targetNumber = document.getElementById(currentTarget);\n\n    if (targetNumber.value > (targetNumber.min || 1)) {\n      const isFloatOrBigDecimal = ['Float', 'BigDecimal'].includes(targetNumber.dataset.numbertype);\n\n      if (isFloatOrBigDecimal) {\n        targetNumber.value = (parseFloat(targetNumber.value) - 1).toFixed(1);\n      } else {\n        targetNumber.value = parseFloat(targetNumber.value)-1;\n      }\n      this.syncLinkedFields(targetNumber);\n      this.validateNumber();\n      this.calculatePrice(event);\n    }\n  }\n\n  // Some fields (e.g. a \"Receive\" field) allow up to a base amount plus\n  // whatever is currently entered in another linked field (e.g. \"Deliver\"),\n  // via data-base-max-value + data-linked-field-id-value. Falls back to the\n  // plain HTML max attribute when not linked.\n  effectiveMax (el) {\n    if (el.dataset.linkedFieldId) {\n      // base may be negative (more already received elsewhere than\n      // delivered elsewhere) \u2014 that surplus must eat into the linked\n      // field's live value, so only floor the combined result, not base\n      // on its own.\n      const base = parseFloat(el.dataset.baseMax) || 0\n      const linked = document.getElementById(el.dataset.linkedFieldId)\n      const linkedValue = linked ? (parseFloat(linked.value) || 0) : 0\n      return Math.max(0, base + linkedValue)\n    }\n    return el.max !== '' ? parseFloat(el.max) : null\n  }\n\n  // When a field changes, clamp down any field that declares it as its\n  // linked field, since that field's effective max may have just shrunk.\n  syncLinkedFields (sourceEl) {\n    this.numberTargets.forEach(el => {\n      if (el.dataset.linkedFieldId !== sourceEl.id) return\n\n      const max = this.effectiveMax(el)\n      if (max !== null && parseFloat(el.value) > max) {\n        el.value = max\n        el.classList.remove('border-red-500')\n      }\n    })\n  }\n\n  validateNumber (event) {\n    if (event && event.target) {\n      this.syncLinkedFields(event.target)\n    }\n\n    let isValid = true\n    this.numberTargets.forEach(el => {\n      const max = this.effectiveMax(el)\n      const tooHigh = max !== null && parseFloat(el.value) > max\n      if (el.value < (el.min || 1) || tooHigh) {\n        isValid = false\n        el.classList.add('border-red-500')\n        if(event){\n          event.preventDefault()\n        }\n      } else {\n        el.classList.remove('border-red-500')\n      }\n    })\n\n    if (this.submitBtn) {\n      this.submitBtn.disabled = !isValid\n    }\n  }\n\n  validateAtLeastOneNonZero(event) {\n  const atLeastOneNonZero = this.numberTargets.some(el => el.value > 0);\n\n  this.numberTargets.forEach(el => {\n    if (atLeastOneNonZero) {\n      el.classList.remove('border-red-500');\n    } else {\n      el.classList.add('border-red-500');\n    }\n  });\n\n  if (this.submitBtn) {\n    this.submitBtn.disabled = !atLeastOneNonZero;\n  }\n\n  if (event && !atLeastOneNonZero) {\n    event.preventDefault();\n  }\n}\n\n  calculatePrice(event){\n    if (this.hasPriceLabelTarget) {\n      const productId = parseInt(event.target.dataset.productId);\n      const priceElement = document.getElementById(`${productId}_price`);\n      const qtyElement = document.getElementById(`${productId}_qunatity`);\n      const price = parseFloat(priceElement.value || priceElement.getAttribute('value'));\n      const qty = parseFloat(qtyElement.value || qtyElement.getAttribute('value'))\n      const gstPercentage = parseFloat(event.target.dataset.gstPercentage);\n      this.updatePriceTarget(productId, price, qty, gstPercentage);\n    }\n  }\n\n  findTargetById(productId) {\n    return this.numberTargets.find(target => target.id == productId);\n  }\n\n  updatePriceTarget(productId, price, qty, gstPercentage){\n    const priceTarget = this.priceLabelTargets.find(target => target.id == productId)\n    if( gstPercentage > 0){\n      priceTarget.innerHTML = `Price To Customer (\u20B9 ${(price * qty).toFixed(2)} + \u20B9 ${(price * qty * gstPercentage/100).toFixed(2)} GST) =  \u20B9 ${((price+(price*gstPercentage/100))*qty).toFixed(2)}`;\n    } else {\n      priceTarget.innerHTML = `Price To Customer (\u20B9 ${price.toFixed(2)} * ${qty}) = \u20B9 ${(price * qty).toFixed(2)}`;\n    }\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"opening-delivery\"\nexport default class extends Controller {\n  static targets = ['dateField', 'quantity', 'alert']\n  connect() {\n    document.addEventListener(\"click\", this.handleClick.bind(this));\n  }\n  updateScheduleDeliveryTransactionDate(event) {\n    const dateString = event.target.value;\n    if(this.isValidDate(dateString)) {\n      this.dateFieldTargets.forEach(el => {\n        el.value = dateString;\n      })\n    }\n  }\n\n  handleClick(event) {\n    if (event.target.dataset.action != 'click->opening-delivery#validate') {\n      this.alertTarget.innerHTML =\"\"\n    }\n  }\n\n  isValidDate(dateString) {\n    const date = new Date(dateString);\n    return !isNaN(date.getTime()) && date.toISOString().slice(0, 10) === dateString;\n  }\n\n  incQty(event){\n    const targetId = event.target.dataset.targetId;\n    const qtyTargets = this.quantityTargets;\n    this.incValue(qtyTargets, targetId)\n  }\n\n  decQty(event){\n    const targetId = event.target.dataset.targetId;\n    const qtyTargets = this.quantityTargets;\n    this.decValue(qtyTargets, targetId)\n  }\n\n  incValue(target, targetId){\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.value = parseInt(el.value)+1;\n      }\n    })\n  }\n\n  decValue(target, targetId){\n    target.forEach(el => {\n      if(el.dataset.targetId == targetId && parseInt(el.value)>0) {\n        el.value = (parseFloat(el.value)-1);\n      }\n    })\n  }\n\n  validate(event) {\n    let quantityTargets = this.quantityTargets;\n    if (quantityTargets.every(element => element.value == 0)) {\n      this.notifyCustomer(\"please Deliver at least one product\");\n      event.preventDefault();\n    }\n  }\n\n  notifyCustomer(msg) {\n    this.alertTarget.innerHTML = msg;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"opening-amount\"\nexport default class extends Controller {\n  static targets = ['advanceAmountForm', 'dueAmountForm', 'advanceButton', 'dueButton']\n\n  connect () {\n    if (this.advanceButtonTarget.checked) {\n      this.showAdvanceAmountForm();\n    } else {\n      this.showDueAmountForm();\n    }\n  }\n\n  showDueAmountForm() {\n    this.dueAmountFormTarget.classList.remove(\"hidden\");\n    this.advanceAmountFormTarget.classList.add(\"hidden\");\n  }\n\n  showAdvanceAmountForm() {\n    this.advanceAmountFormTarget.classList.remove(\"hidden\");\n    this.dueAmountFormTarget.classList.add(\"hidden\");\n  }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"payment-reminder\"\nexport default class extends Controller {\n  static targets = ['daysLabel',\n                    'dateField',\n                    'daysList',\n                    'monthList',\n                    'dailyButton',\n                    'weekdaysButton',\n                    'monthlyButton',\n                    'checkedDays',\n                    'checkedDate',\n                    'dayOfMonth',\n                    'alert']\n  connect() {\n    if (this.weekdaysButtonTarget.checked) {\n      this.weekdays();\n    } else if (this.monthlyButtonTarget.checked) {\n      this.monthly();\n    }\n    else {\n      this.dailyButtonTarget.checked=true;\n      this.daily();\n    }\n  }\n\n  daily() {\n    this.daysListTarget.classList.add('hidden');\n    this.monthListTarget.classList.add('hidden');\n    const today = new Date(this.dateFieldTarget.value);\n    const dates = this.generateDates(today, 1);\n    this.daysLabelTarget.innerHTML = dates.join(', ');\n    this.alertTarget.innerHTML = \"\";\n  }\n\n  weekdays() {\n    this.daysListTarget.classList.remove('hidden');\n    this.monthListTarget.classList.add('hidden');\n    this.updateWeekDaysDates();\n    this.alertTarget.innerHTML = \"\";\n  }\n\n  monthly() {\n    this.daysListTarget.classList.add('hidden');\n    this.monthListTarget.classList.remove('hidden');\n    this.generateMonthDates();\n    this.alertTarget.innerHTML = \"\";\n  }\n\n  generateDates(today, step) {\n    return Array.from({ length: 4 }, (_, day) => {\n      const date = new Date(today);\n      date.setDate(today.getDate() + day * step);\n      return date.toLocaleDateString('en-US', { day: '2-digit', month: 'short' });\n    });\n    this.alertTarget.innerHTML = \"\";\n  }\n\n  selectDate() {\n    if (this.dailyButtonTarget.checked) {\n      this.alertTarget.innerHTML = \"\";\n      this.daily();\n    } else if (this.weekdaysButtonTarget.checked) {\n      this.alertTarget.innerHTML = \"\";\n      this.weekdays();\n    } else {\n      this.alertTarget.innerHTML = \"\";\n      this.monthly();\n    }\n  }\n\n  updateWeekDaysDates() {\n    const start_date = this.dateFieldTarget.value;\n    let days = []\n    this.checkedDaysTargets.forEach(el => {\n      if (el.checked) {\n        days.push(el.dataset.name)\n      }\n    });\n    let result = this.getNextFourDates(days, start_date);\n    this.daysLabelTarget.innerHTML = result.join(', ');\n    this.alertTarget.innerHTML = \"\";\n  }\n\n  getNextFourDates(dayNames, start_date) {\n    const daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\n    // Get current date\n    let currentDate = new Date(start_date);\n    currentDate.setDate(currentDate.getDate() + 1);\n\n    let upcomingDates = [];\n    let selectedDays = [];\n\n    // Convert day names to their respective indices\n    dayNames.forEach(dayName => {\n        let inputDayIndex = daysOfWeek.indexOf(dayName);\n        if (inputDayIndex !== -1) {\n            selectedDays.push(inputDayIndex);\n        }\n    });\n\n    // Calculate the number of dates per day\n    let datesPerDay = Math.ceil(4 / selectedDays.length);\n\n    // Loop through each selected day and calculate the upcoming dates\n    selectedDays.forEach(inputDayIndex => {\n        // Calculate the difference in days between the input day and the current day\n        let dayDifference = inputDayIndex - currentDate.getDay();\n        if (dayDifference < 0) {\n            dayDifference += 7; // if the input day is earlier in the week, add 7 days to get the next occurrence\n        }\n\n        // Calculate the next 4 dates for this day\n        for (let i = 0; i < datesPerDay; i++) {\n            let upcomingDate = new Date(currentDate);\n            upcomingDate.setDate(currentDate.getDate() + dayDifference + (i * 7)); // Add multiples of 7 to get subsequent occurrences\n            upcomingDates.push(upcomingDate.toLocaleDateString('en-US', { day: '2-digit', month: 'short' }));\n        }\n    });\n\n    // Return only the first 4 dates if more than 4 dates were calculated\n    return this.sort_dates(upcomingDates).slice(0, 4);\n  }\n\n  sort_dates(upcomingDates) {\n    upcomingDates.sort((a, b) => {\n      const parseDate = (dateStr) => new Date(`${dateStr} ${new Date().getFullYear()}`);\n      return parseDate(a) - parseDate(b);\n    });\n    return upcomingDates;\n  }\n\n  generateMonthDates() {\n    let selectedDays = [];\n    const startDateStr = this.dateFieldTarget.value;\n    this.checkedDateTargets.forEach(el => {\n      if (el.checked) {\n        selectedDays.push(el.dataset.name)\n      }\n    });\n    const startDate = new Date(startDateStr);\n    let result = this.generateNextFiveDates(selectedDays, startDate);\n\n    result = this.sortAndFilterResult(result, startDate);\n    result = this.generateDateAndMonthSTR(result);\n    this.daysLabelTarget.innerHTML = result.join(', ');\n    this.alertTarget.innerHTML = \"\";\n  }\n\n  generateNextFiveDates(selectedDays, startDate){\n    const currentMonth = startDate.getMonth();\n    const currentYear = startDate.getFullYear();\n    let result = [];\n    let lastOfMonth = 0;\n    selectedDays.forEach(selectedDay => {\n      for (let i = 0; i < 5; i++) {\n        lastOfMonth = 0;\n        const month = (currentMonth + i) % 12;\n        const year = currentYear + Math.floor((currentMonth + i) / 12);\n        const lastDayOfMonth = new Date(year, month+1, 0).getDate();\n        if (selectedDay == -1){\n         lastOfMonth = lastDayOfMonth.toString()\n        }\n        if (parseInt(selectedDay) <= lastDayOfMonth || lastOfMonth > 0 ) {\n          const date = lastOfMonth > 0 ? new Date(year, month, lastOfMonth) : new Date(year, month, selectedDay);\n          result.push({date: date});\n        }\n      }\n    });\n    return result;\n  }\n\n  sortAndFilterResult(result, startDate) {\n    startDate.setHours(0, 0, 0, 0);\n    result = result.filter(date => date.date >= startDate);\n\n    result.sort(function(a,b){\n      return new Date(a.date)-new Date(b.date)\n    });\n    return result;\n  }\n\n  generateDateAndMonthSTR(result) {\n\n    // Array to hold month names\n    const monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n        \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n    ];\n\n    // Iterate through the dates array and extract date and month names\n    const formattedDatesArray = result\n    .filter((item, index, self) =>\n        index === self.findIndex(obj => obj.date.getTime() === item.date.getTime())\n    )\n    .slice(0, 4)\n    .map(item => {\n        const date = item.date.getDate();\n        const month = monthNames[item.date.getMonth()];\n        return `${date} ${month}`;\n    });\n    return formattedDatesArray;\n  }\n  validate(event) {\n    let daysOfWeekTargets = this.checkedDaysTargets;\n    let daysOfMonthTargets = this.checkedDateTargets;\n    if (this.weekdaysButtonTarget.checked) {\n      if (daysOfWeekTargets.some(element => element.checked) == false) {\n        this.notifyCustomer(\"please select any day\");\n        event.preventDefault();\n      }\n    } else if(this.monthlyButtonTarget.checked) {\n      if (daysOfMonthTargets.some(element => element.checked) == false) {\n        this.notifyCustomer(\"please select any date\");\n        event.preventDefault();\n      }\n    }\n  }\n\n  notifyCustomer(msg) {\n    this.alertTarget.innerHTML = msg;\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\n// Connects to data-controller=\"print-reports\"\nexport default class extends Controller {\n  static targets = ['report', 'fileName'];\n  connect() { }\n  \n  async download(event) {\n    const printContents = this.reportTarget.innerHTML;\n    const originalTitle = document.title;\n    const fileName = this.reportTarget.dataset.filename;\n    const orientation = event.currentTarget.dataset.pageOrientation;\n\n    const printContainer = document.createElement('div');\n    printContainer.innerHTML = printContents;\n\n    printContainer.classList.add('print-area');\n\n    // Hide everything except the selected content during printing\n    const style = document.createElement('style');\n    style.innerHTML = `\n    @media print { \n      @page {\n        margin-top: 1rem;\n        margin-bottom: 0;\n        size: ${orientation};\n    }\n        body > *:not(.print-area) { display: none !important; }\n    }\n`;\n    document.head.appendChild(style);\n\n    document.body.appendChild(printContainer);\n\n    document.title = fileName;\n\n    // Wait for print dialog to close\n    await new Promise((resolve) => {\n      window.onafterprint = () => {\n        resolve();\n      };\n      window.print();\n    });\n\n    document.title = originalTitle;\n    document.body.removeChild(printContainer);\n    document.head.removeChild(style);\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { Turbo } from \"@hotwired/turbo-rails\";\n\nexport default class extends Controller {\n  submit(event) {\n    event.preventDefault();\n\n    const form = this.element;\n    const confirmBox = document.getElementById(\"custom-confirm-box\");\n    const productNameInput = form.querySelector(\"#product_name\");\n    const productRateInput = form.querySelector(\"#product_rate\");\n    const returnableCheckbox = form.querySelector(\"#product_returnable\");\n    const productName = this.titleize(productNameInput.value);\n    const productRate = parseFloat(productRateInput.value).toFixed(1);\n    const isReturnable = returnableCheckbox.checked;\n    const receiveProduct = confirmBox.querySelector(\"#receive_product\");\n    const productText = this.generateProductText(productName, isReturnable);\n\n    this.showProductPopup();\n    this.showConfirmationDialog(confirmBox, productName, productRate, productText, isReturnable, receiveProduct, form);\n  }\n  showProductPopup() {\n    document.getElementById(\"product_popup1\").setAttribute(\"open\", true);\n  }\n\n  showConfirmationDialog(confirmBox, productName, productRate, productText, isReturnable, receiveProduct, form) {\n    confirmBox.classList.remove(\"hidden\")\n    this.toggleReturnableClass(receiveProduct, isReturnable);\n    this.updateConfirmationContent(confirmBox, productName, productRate, productText);\n    this.addConfirmationEventListeners(confirmBox, form);\n  }\n\n  toggleReturnableClass(receiveProduct, isReturnable) {\n    receiveProduct.classList.toggle(\"hidden\", !isReturnable);\n  }\n\n  updateConfirmationContent(confirmBox, productName, productRate, productText) {\n    confirmBox.querySelector(\"#product_name\").textContent = productName;\n    confirmBox.querySelector(\"#product_rate\").textContent = `Rate: ${productRate}/-`;\n    confirmBox.querySelector(\"#product_text\").textContent = productText;\n  }\n\n  addConfirmationEventListeners(confirmBox, form) {\n    confirmBox.addEventListener(\"confirmed\", () => {\n      Turbo.navigator.submitForm(form);\n    });\n\n    confirmBox.addEventListener(\"canceled\", () => {\n      confirmBox.classList.add(\"hidden\");\n    });\n  }\n\n  generateProductText(productName, isReturnable) {\n    const returnabilityStatus = isReturnable ? \"returnable\" : \"non-returnable\";\n    const returnabilityOption = isReturnable ? \"will\" : \"won't\";\n    const anyOrAn = isReturnable ? \"an\" : \"any\";\n\n    return `The ${productName} will be categorized as a ${returnabilityStatus} product, and you ${returnabilityOption} find ${anyOrAn} option to receive empty containers of this product on every delivery screens.`;\n  }\n\n  confirm() {\n    this.hideConfirmBox();\n    this.dispatchConfirmationEvent(\"confirmed\");\n  }\n\n  cancel() {\n    this.hideConfirmBox();\n    this.dispatchConfirmationEvent(\"canceled\");\n  }\n\n  hideConfirmBox() {\n    this.element.classList.add('hidden')\n  }\n\n  dispatchConfirmationEvent(eventName) {\n    this.element.dispatchEvent(new CustomEvent(eventName));\n  }\n\n  titleize(str) {\n    return str.toLowerCase().replace(/(?:^|\\s|-)\\w/g, (match) => match.toUpperCase());\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"product-images-preview\"\nexport default class extends Controller {\n  static targets = [\"previewContainer\", \"input\"]\n\n  preview(event) {\n    const input = event.target\n    const files = input.files\n\n    this.previewContainerTarget.innerHTML = '' // Clear previous previews\n\n    Array.from(files).forEach((file, index) => {\n      if (file.type.startsWith('image/')) {\n        const reader = new FileReader()\n        reader.onload = (e) => {\n          const imgContainer = document.createElement('div')\n          imgContainer.className = 'relative inline-block m-2'\n\n          const img = document.createElement('img')\n          img.src = e.target.result\n          img.className = 'w-20 h-20 rounded-md border border-gray-500' // Tailwind CSS classes\n          imgContainer.appendChild(img)\n\n          const deleteBtn = document.createElement('button')\n          deleteBtn.className = 'absolute top-0 right-0 text-white rounded-full p-1 text-xs' // Tailwind CSS classes\n\n          const deleteIcon = document.createElement('img')\n          deleteIcon.src = '/assets/trash-can.png' // Update this to your actual path\n          deleteIcon.className = 'w-4 h-4' // Tailwind CSS classes for the icon\n          deleteBtn.appendChild(deleteIcon)\n\n          deleteBtn.dataset.index = index\n          deleteBtn.addEventListener('click', () => this.removeImage(index))\n          imgContainer.appendChild(deleteBtn)\n\n          this.previewContainerTarget.appendChild(imgContainer)\n        }\n        reader.readAsDataURL(file)\n      }\n    })\n  }\n\n  removeImage(index) {\n    // Remove the image preview\n    const filesArray = Array.from(this.previewContainerTarget.children)\n    const targetFile = filesArray[index]\n\n    if (targetFile) {\n      this.previewContainerTarget.removeChild(targetFile)\n    }\n\n    // Remove the image from the input field\n    const dataTransfer = new DataTransfer()\n    const inputFiles = Array.from(this.inputTarget.files)\n\n    inputFiles.forEach((file, i) => {\n      if (i !== index) {\n        dataTransfer.items.add(file)\n      }\n    })\n\n    this.inputTarget.files = dataTransfer.files\n\n    // Re-render the previews to update indices\n    this.preview({ target: this.inputTarget })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"profiles\"\nexport default class extends Controller {\n  static targets = [\"accountNo\", \"confirmAccountNo\", \"submitButton\", \"errorMessage\", \"confirmAccountNoContainer\"];\n  connect() {\n  }\n\n  validateAccountNo(event){\n    const accountNo = this.accountNoTarget.value;\n    const initialAccountNo = this.accountNoTarget.dataset.initialValue;\n    this.toggleConfirmAccountContainer(accountNo, initialAccountNo,event);\n  }\n\n  toggleConfirmAccountContainer(accountNo, initialAccountNo, event){\n    const confirmContainerTarget = this.confirmAccountNoContainerTarget;\n    if ((accountNo === initialAccountNo )) {\n      confirmContainerTarget.classList.add(\"hidden\");\n      this.showSubmitButton();\n      this.alertMsg(\"\");\n    } else if (accountNo === this.confirmAccountNoTarget.value ) {\n      this.showSubmitButton();\n      this.alertMsg(\"\");\n    } else {\n      confirmContainerTarget.classList.remove(\"hidden\");\n      this.alertMsg(\"Account number do not match\");\n      event.preventDefault();\n    }\n  }\n\n\n  hideSubmitButton(){\n    this.submitButtonTarget.disabled = true;\n  }\n\n  showSubmitButton(){\n    this.submitButtonTarget.disabled = false;\n  }\n\n  alertMsg(msg){\n    this.errorMessageTarget.textContent = msg;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"product-inventory\"\nexport default class extends Controller {\n  static targets = ['filledMissingJar',\"emptyMissingJar\",\"emptyUnloadQty\",\"filledUnloadQty\",\"deliveredQty\",\"receivedQty\",\"loadQty\"]\n  connect() {\n  }\n\n  checkMissingJar(loadQuantity, unloadQuantity, deliveredOrReceivedQty, missingJarTarget) {\n    const missingJar = loadQuantity - deliveredOrReceivedQty - unloadQuantity;\n  \n    if (missingJar === 0 || isNaN(missingJar)) {\n      missingJarTarget.classList.add(\"hidden\");\n    } else {\n      missingJarTarget.querySelector(\"#jarCount\").innerHTML = missingJar;\n      missingJarTarget.classList.remove(\"hidden\");\n\n    }\n  }\n  \n  checkFilledMissingJar() {\n    const loadQuantity = parseInt(this.loadQtyTarget.value, 10);\n    const filledUnloadQty = parseInt(this.filledUnloadQtyTarget.value, 10);\n    const deliveredQty = parseInt(this.deliveredQtyTarget.innerHTML, 10);\n  \n    this.checkMissingJar(loadQuantity, filledUnloadQty, deliveredQty, this.filledMissingJarTarget);\n  }\n  \n  checkEmptyMissingJar() {\n    const receivedQty = parseInt(this.receivedQtyTarget.textContent, 10);\n    const emptyUnloadQty = parseInt(this.emptyUnloadQtyTarget.value, 10);\n    this.checkMissingJar(receivedQty, emptyUnloadQty, 0, this.emptyMissingJarTarget);\n  }\n  \n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"profit-and-loss\"\nexport default class extends Controller {\n  static targets = [ \n    \"filterToggle\", \n    \"dateRangeContainer\", \n    \"monthContainer\", \n    \"dateRangeInput\", \n    \"monthInput\" \n  ]\n  connect() {\n    \n  }\n\n  toggleFilter() {\n    if (this.filterToggleTarget.checked) {\n      this.showDateRangeFilter()\n    } else {\n      this.showMonthFilter()\n    }\n  }\n\n  showDateRangeFilter() {\n    // Hide month container\n    this.monthContainerTarget.classList.add('hidden')\n    this.monthInputTarget.disabled = true\n\n    // Show date range container\n    this.dateRangeContainerTarget.classList.remove('hidden')\n    this.dateRangeInputs.forEach(input => input.disabled = false)\n  }\n\n  showMonthFilter() {\n    // Hide date range container\n    this.dateRangeContainerTarget.classList.add('hidden')\n    this.dateRangeInputs.forEach(input => input.disabled = true)\n\n    // Show month container\n    this.monthContainerTarget.classList.remove('hidden')\n    this.monthInputTarget.disabled = false\n  }\n\n  get dateRangeInputs() {\n    return this.dateRangeInputTargets\n  }\n}\n\n\n\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"randomize-mobile-no\"\nexport default class extends Controller {\n  static targets = ['mobInputContainer', 'mobileField', 'billingMobileField', 'randMobCheckBox', 'mobCheckBoxContainer', 'billingMobCheckBox']\n\n  // toggleMobContainer(event) {\n  //   const mobInputContainer = this.mobInputContainerTarget;\n  //   const customerMobileNo = mobInputContainer.querySelector('#customer_mobile_no');\n  //   customerMobileNo.required = event.target.value !== 'true';\n  //   mobInputContainer.classList.toggle('hidden');\n  // }\n\n  validateMobNO(event) {\n    // if(this.hasRandMobCheckBoxTarget == false || this.randMobCheckBoxTarget.checked == false) {\n      const mobNoTarget = this.mobileFieldTarget;\n      const billingMobNoTarget = this.billingMobileFieldTarget;\n      if (mobNoTarget.value && mobNoTarget.value.length<10){\n        mobNoTarget.classList.add(\"border-red-500\");\n        event.preventDefault();\n      }\n\n      if (billingMobNoTarget.value && billingMobNoTarget.value.length<10){\n        billingMobNoTarget.classList.add(\"border-red-500\");\n        event.preventDefault();\n      }\n    // }\n  }\n\n  // toggleCheckBoxAndAlert(event){\n  //   this.mobileFieldTarget.classList.remove(\"border-red-500\");\n  //   if (event.target.value.length >= 1) {\n  //     this.mobCheckBoxContainerTarget.classList.add(\"hidden\");\n  //   } else {\n  //     this.mobCheckBoxContainerTarget.classList.remove(\"hidden\");\n  //   }\n  //   this.setBillingMobileNo();\n  // }\n\n  setBillingMobileNo(){\n    const mobNoTarget = this.mobileFieldTarget;\n    const billingMobNoTarget = this.billingMobileFieldTarget;\n    const billingCheckBox = this.billingMobCheckBoxTarget;\n    if(billingCheckBox.checked && mobNoTarget.value !== '') {\n      billingMobNoTarget.value = mobNoTarget.value;\n    } else {\n      billingMobNoTarget.value = billingMobNoTarget.dataset.initialValue;\n      billingCheckBox.checked = false;\n    }\n  }\n\n  validateBillingMobNO(){\n    const mobNoTarget = this.mobileFieldTarget;\n    const billingMobNoTarget = this.billingMobileFieldTarget;\n    const billingCheckBox = this.billingMobCheckBoxTarget;\n    if(mobNoTarget.value == billingMobNoTarget.value) {\n      billingCheckBox.checked = true;\n    } else {\n      billingCheckBox.checked = false;\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"report-page-size\"\nexport default class extends Controller {\n  static targets=['pageSizeContainer']\n  \n  togglePageSize(event){\n    let allowPageSizeReports = ['invoice_summary', 'invoice_detail', 'invoice_summary_v2', 'invoice_summary_v3']\n    if(allowPageSizeReports.includes(event.target.value)){\n      this.pageSizeContainerTarget.classList.remove(\"hidden\");\n    } else {\n      this.pageSizeContainerTarget.classList.add(\"hidden\");\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Connects to data-controller=\"reports\"\nexport default class extends Controller {\n  static targets = ['selected_action']\n  connect () {\n    this.updateFormAction()\n  }\n\n  updateFormAction () {\n    let selectedAction = this.selected_actionTarget.value\n    this.element.action = `/web/reports/${selectedAction}`\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Connects to data-controller=\"request-reports\"\nexport default class extends Controller {\n  static targets = ['reportType', 'notice']\n  connect () {\n    this.updateText()\n  }\n\n  updateText () {\n    const selectedReport =\n      this.reportTypeTarget.options[this.reportTypeTarget.selectedIndex].value\n\n    switch (selectedReport) {\n      case 'invoice_summary':\n        this.noticeTarget.textContent =\n          'You will get all the products delivery and amount summary for a specific month.'\n        break\n\n      case 'invoice_detail':\n        this.noticeTarget.textContent =\n          'You will get all the products delivery and amount details for a specific month. The report may go into two pages.'\n        break\n\n      case 'invoice_summary_v2':\n        this.noticeTarget.textContent =\n          'You will get all the products delivery and amount details for a specific month in a single page.'\n        break\n\n      case 'invoice_summary_v3':\n        this.noticeTarget.textContent =\n          'You will get all the products delivery and amount summary for a specific month. This report will look different than the invoice summary report.'\n        break\n\n      case 'four_invoice_summaries_in_one_page':\n        this.noticeTarget.textContent =\n          'You will get four invoice summaries in one page without product details.'\n        break\n\n      case 'four_invoice_summaries_in_one_page_v2':\n        this.noticeTarget.textContent =\n          'You will get four invoice summaries in one page with product details. Only a maximum of two product details will be displayed due to space constraints.'\n        break\n\n      case 'customer_monthly_transaction_report':\n        this.noticeTarget.textContent =\n          'A monthly report is a summary of your business activities during a specific month.'\n        break\n\n      case 'two_invoice_summaries_in_one_page':\n          this.noticeTarget.textContent =\n            'You will get two invoice summaries in one page without product details.'\n        break\n      default:this.noticeTarget.textContent=\"\"\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"schedule-delivery\"\nexport default class extends Controller {\n  static targets = ['daysLabel', 'dateField', 'daysList', 'dailyButton', 'alternateButton', 'weekdaysButton', 'checkedDays','recurringType', 'dayOfWeekAlert']\n  connect() {\n    if(this.dailyButtonTarget.checked) {\n      this.daily({ target: { dataset: { targetId: this.dailyButtonTarget.dataset.targetId } } });\n    } else if(this.alternateButtonTarget.checked) {\n      this.alternate({ target: { dataset: { targetId: this.alternateButtonTarget.dataset.targetId } } });\n    } else {\n      this.weekdays({ target: { dataset: { targetId: this.weekdaysButtonTarget.dataset.targetId } } });\n    }\n  }\n\n  daily(event) {\n    let targetId = event.target.dataset.targetId;\n    this.daysListTarget.classList.add('hidden');\n    const today = new Date(this.dateFieldTarget.value);\n    const dates = this.generateDates(today, 1);\n    this.daysLabelTarget.innerHTML = dates.join(', ');\n    this.updateDeliveryRecurringFormAttributes(targetId, 'daily');\n  }\n\n  alternate(event) {\n    let targetId = event.target.dataset.targetId;\n    this.daysListTarget.classList.add('hidden');\n    const today = new Date(this.dateFieldTarget.value);\n    const dates = this.generateDates(today, 2);\n    this.daysLabelTarget.innerHTML = dates.join(', ');\n    this.updateDeliveryRecurringFormAttributes(targetId, 'alternate');\n  }\n\n  weekdays(event) {\n    let targetId = event.target.dataset.targetId;\n    this.daysListTarget.classList.remove('hidden');\n    this.updateDates({ target: { dataset: { targetId: this.dailyButtonTarget.dataset.targetId } } });\n    this.updateDeliveryRecurringFormAttributes(targetId, 'weekly');\n  }\n\n  generateDates(today, step) {\n    return Array.from({ length: 4 }, (_, day) => {\n      const date = new Date(today);\n      date.setDate(today.getDate() + day * step);\n      return date.toLocaleDateString('en-US', { day: '2-digit', month: 'short' });\n    });\n  }\n\n  selectDate() {\n    if (this.dailyButtonTarget.checked) {\n      this.daily({ target: { dataset: { targetId: this.dailyButtonTarget.dataset.targetId } } });\n    } else if (this.alternateButtonTarget.checked) {\n      this.alternate({ target: { dataset: { targetId: this.alternateButtonTarget.dataset.targetId } } });\n    } else {\n      this.updateDates({ target: { dataset: { targetId: this.dailyButtonTarget.dataset.targetId } } });\n    }\n  }\n\n  updateDates(event) {\n    const start_date = this.dateFieldTarget.value;\n    let days = []\n    this.checkedDaysTargets.forEach(el => {\n      if (el.checked) {\n        days.push(el.dataset.name)\n      }\n    });\n    let result = this.getNextFourDates(days, start_date);\n    this.daysLabelTarget.innerHTML = result.join(', ');\n    this.hideAlertLabel(event.target.dataset.targetId);\n  }\n\n  getNextFourDates(dayNames, start_date) {\n    const daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\n    // Get current date\n    let currentDate = new Date(start_date);\n    currentDate.setDate(currentDate.getDate() + 1);\n\n    let upcomingDates = [];\n    let selectedDays = [];\n\n    // Convert day names to their respective indices\n    dayNames.forEach(dayName => {\n        let inputDayIndex = daysOfWeek.indexOf(dayName);\n        if (inputDayIndex !== -1) {\n            selectedDays.push(inputDayIndex);\n        }\n    });\n\n    // Calculate the number of dates per day\n    let datesPerDay = Math.ceil(4 / selectedDays.length);\n\n    // Loop through each selected day and calculate the upcoming dates\n    selectedDays.forEach(inputDayIndex => {\n        // Calculate the difference in days between the input day and the current day\n        let dayDifference = inputDayIndex - currentDate.getDay();\n        if (dayDifference < 0) {\n            dayDifference += 7; // if the input day is earlier in the week, add 7 days to get the next occurrence\n        }\n\n        // Calculate the next 4 dates for this day\n        for (let i = 0; i < datesPerDay; i++) {\n            let upcomingDate = new Date(currentDate);\n            upcomingDate.setDate(currentDate.getDate() + dayDifference + (i * 7)); // Add multiples of 7 to get subsequent occurrences\n            upcomingDates.push(upcomingDate.toLocaleDateString('en-US', { day: '2-digit', month: 'short' }));\n        }\n    });\n\n    // Return only the first 4 dates if more than 4 dates were calculated\n    return upcomingDates.sort().slice(0, 4);\n  }\n\n  updateDeliveryRecurringFormAttributes(targetId, value) {\n    let recurringTypeTargets = this.recurringTypeTargets;\n    recurringTypeTargets.forEach(el => {\n      if(el.dataset.targetId == targetId) {\n        el.value = value;\n      }\n    })\n  }\n\n  hideAlertLabel(targetId) {\n    this.dayOfWeekAlertTargets.forEach(el=>{\n      if (el.dataset.targetId == targetId) {\n        el.innerHTML = \"\";\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"sms-settings\"\nexport default class extends Controller {\n  static targets = ['input']\n  \n  connect() {\n    const id = this.element.querySelector('#send_invoice_ready_msg_yes').checked \n      ? 'send_invoice_ready_msg_yes' \n      : 'send_invoice_ready_msg_no';\n    this.toggleDayField({ target: { id } });\n  }\n\n  increment(){\n    const inputTarget = this.inputTarget;\n    if(inputTarget.value == ''){\n      inputTarget.value = 0;\n    }\n    inputTarget.stepUp();\n    this.validate();\n  }\n\n  decrement(){\n    const inputTarget = this.inputTarget;\n    if(inputTarget.value == ''){\n      inputTarget.value = 1;\n    }\n    inputTarget.stepDown();\n    this.validate();\n  }\n\n  validate(){\n    const inputTarget = this.inputTarget;\n    if ( parseInt(inputTarget.value) >= 0){\n      inputTarget.classList.remove(\"border-red-500\");\n    } else {\n      inputTarget.classList.add(\"border-red-500\");\n    }\n  }\n\n  toggleDayField(event){\n    const dayContainer  = this.element.querySelector('#day-container');\n    if (event.target.id.slice(-2) == 'no'){\n      dayContainer.classList.add('hidden');\n    } else {\n      dayContainer.classList.remove('hidden');\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n// Connects to data-controller=\"search-filter\"\nexport default class extends Controller {\n  static targets = ['item']\n  connect () {\n  }\n\n  search (event) {\n    const searchInput = event.target.value.toLowerCase()\n\n    this.itemTargets.forEach(item => {\n      const itemName = item\n        .querySelector('.item-name')\n        .textContent.toLowerCase()\n\n      if (itemName.includes(searchInput)) {\n        item.classList.remove('hidden')\n      } else {\n        item.classList.add('hidden')\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"turbo-frame-loader\"\nexport default class extends Controller {\n  static targets = [\"loader\"];\n\n  connect() {\n    this.showLoader();\n    document.addEventListener(\"turbo:before-fetch-request\", this.showLoader.bind(this))\n    document.addEventListener(\"turbo:before-cache\", this.hideLoader.bind(this))\n    document.addEventListener(\"turbo:load\", this.hideLoader.bind(this))\n  }\n\n  disconnect() {\n    document.removeEventListener(\"turbo:before-fetch-request\", this.showLoader.bind(this))\n    document.removeEventListener(\"turbo:before-cache\", this.hideLoader.bind(this))\n    document.removeEventListener(\"turbo:load\", this.hideLoader.bind(this))\n  }\n\n\n  showLoader() {\n    this.loaderTarget.classList.remove(\"hidden\")\n  }\n\n  hideLoader() {\n    this.loaderTarget.classList.add(\"hidden\")\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"loader\"\nexport default class extends Controller {\n  static targets = ['loader']\n  connect() {\n  }\n\n  show() {\n    this.loaderTarget.classList.remove(\"hidden\");\n  }\n\n  hide() {\n    this.loaderTarget.classList.add(\"hidden\");\n  }\n\n}", "/**!\n * Sortable 1.15.6\n * @author\tRubaXa   <trash@rubaxa.org>\n * @author\towenm    <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n    keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n  return target;\n}\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n  return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.6\";\n\nfunction userAgent(pattern) {\n  if (typeof window !== 'undefined' && window.navigator) {\n    return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n  }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n  capture: false,\n  passive: false\n};\nfunction on(el, event, fn) {\n  el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n  el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n  if (!selector) return;\n  selector[0] === '>' && (selector = selector.substring(1));\n  if (el) {\n    try {\n      if (el.matches) {\n        return el.matches(selector);\n      } else if (el.msMatchesSelector) {\n        return el.msMatchesSelector(selector);\n      } else if (el.webkitMatchesSelector) {\n        return el.webkitMatchesSelector(selector);\n      }\n    } catch (_) {\n      return false;\n    }\n  }\n  return false;\n}\nfunction getParentOrHost(el) {\n  return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n  if (el) {\n    ctx = ctx || document;\n    do {\n      if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n        return el;\n      }\n      if (el === ctx) break;\n      /* jshint boss:true */\n    } while (el = getParentOrHost(el));\n  }\n  return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n  if (el && name) {\n    if (el.classList) {\n      el.classList[state ? 'add' : 'remove'](name);\n    } else {\n      var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n      el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n    }\n  }\n}\nfunction css(el, prop, val) {\n  var style = el && el.style;\n  if (style) {\n    if (val === void 0) {\n      if (document.defaultView && document.defaultView.getComputedStyle) {\n        val = document.defaultView.getComputedStyle(el, '');\n      } else if (el.currentStyle) {\n        val = el.currentStyle;\n      }\n      return prop === void 0 ? val : val[prop];\n    } else {\n      if (!(prop in style) && prop.indexOf('webkit') === -1) {\n        prop = '-webkit-' + prop;\n      }\n      style[prop] = val + (typeof val === 'string' ? '' : 'px');\n    }\n  }\n}\nfunction matrix(el, selfOnly) {\n  var appliedTransforms = '';\n  if (typeof el === 'string') {\n    appliedTransforms = el;\n  } else {\n    do {\n      var transform = css(el, 'transform');\n      if (transform && transform !== 'none') {\n        appliedTransforms = transform + ' ' + appliedTransforms;\n      }\n      /* jshint boss:true */\n    } while (!selfOnly && (el = el.parentNode));\n  }\n  var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n  /*jshint -W056 */\n  return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n  if (ctx) {\n    var list = ctx.getElementsByTagName(tagName),\n      i = 0,\n      n = list.length;\n    if (iterator) {\n      for (; i < n; i++) {\n        iterator(list[i], i);\n      }\n    }\n    return list;\n  }\n  return [];\n}\nfunction getWindowScrollingElement() {\n  var scrollingElement = document.scrollingElement;\n  if (scrollingElement) {\n    return scrollingElement;\n  } else {\n    return document.documentElement;\n  }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param  {HTMLElement} el                       The element whose boundingClientRect is wanted\r\n * @param  {[Boolean]} relativeToContainingBlock  Whether the rect should be relative to the containing block of (including) the container\r\n * @param  {[Boolean]} relativeToNonStaticParent  Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param  {[Boolean]} undoScale                  Whether the container's scale() should be undone\r\n * @param  {[HTMLElement]} container              The parent the element will be placed in\r\n * @return {Object}                               The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n  if (!el.getBoundingClientRect && el !== window) return;\n  var elRect, top, left, bottom, right, height, width;\n  if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n    elRect = el.getBoundingClientRect();\n    top = elRect.top;\n    left = elRect.left;\n    bottom = elRect.bottom;\n    right = elRect.right;\n    height = elRect.height;\n    width = elRect.width;\n  } else {\n    top = 0;\n    left = 0;\n    bottom = window.innerHeight;\n    right = window.innerWidth;\n    height = window.innerHeight;\n    width = window.innerWidth;\n  }\n  if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n    // Adjust for translate()\n    container = container || el.parentNode;\n\n    // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n    // Not needed on <= IE11\n    if (!IE11OrLess) {\n      do {\n        if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n          var containerRect = container.getBoundingClientRect();\n\n          // Set relative to edges of padding box of container\n          top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n          left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n          bottom = top + elRect.height;\n          right = left + elRect.width;\n          break;\n        }\n        /* jshint boss:true */\n      } while (container = container.parentNode);\n    }\n  }\n  if (undoScale && el !== window) {\n    // Adjust for scale()\n    var elMatrix = matrix(container || el),\n      scaleX = elMatrix && elMatrix.a,\n      scaleY = elMatrix && elMatrix.d;\n    if (elMatrix) {\n      top /= scaleY;\n      left /= scaleX;\n      width /= scaleX;\n      height /= scaleY;\n      bottom = top + height;\n      right = left + width;\n    }\n  }\n  return {\n    top: top,\n    left: left,\n    bottom: bottom,\n    right: right,\n    width: width,\n    height: height\n  };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param  {HTMLElement}  el           The element who's side being scrolled out of view is in question\r\n * @param  {String}       elSide       Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param  {String}       parentSide   Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement}               The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n  var parent = getParentAutoScrollElement(el, true),\n    elSideVal = getRect(el)[elSide];\n\n  /* jshint boss:true */\n  while (parent) {\n    var parentSideVal = getRect(parent)[parentSide],\n      visible = void 0;\n    if (parentSide === 'top' || parentSide === 'left') {\n      visible = elSideVal >= parentSideVal;\n    } else {\n      visible = elSideVal <= parentSideVal;\n    }\n    if (!visible) return parent;\n    if (parent === getWindowScrollingElement()) break;\n    parent = getParentAutoScrollElement(parent, false);\n  }\n  return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param  {HTMLElement} el       The parent element\r\n * @param  {Number} childNum      The index of the child\r\n * @param  {Object} options       Parent Sortable's options\r\n * @return {HTMLElement}          The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n  var currentChild = 0,\n    i = 0,\n    children = el.children;\n  while (i < children.length) {\n    if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n      if (currentChild === childNum) {\n        return children[i];\n      }\n      currentChild++;\n    }\n    i++;\n  }\n  return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param  {HTMLElement} el       Parent element\r\n * @param  {selector} selector    Any other elements that should be ignored\r\n * @return {HTMLElement}          The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n  var last = el.lastElementChild;\n  while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n    last = last.previousElementSibling;\n  }\n  return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param  {HTMLElement} el\r\n * @param  {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n  var index = 0;\n  if (!el || !el.parentNode) {\n    return -1;\n  }\n\n  /* jshint boss:true */\n  while (el = el.previousElementSibling) {\n    if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n      index++;\n    }\n  }\n  return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param  {HTMLElement} el\r\n * @return {Array}             Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n  var offsetLeft = 0,\n    offsetTop = 0,\n    winScroller = getWindowScrollingElement();\n  if (el) {\n    do {\n      var elMatrix = matrix(el),\n        scaleX = elMatrix.a,\n        scaleY = elMatrix.d;\n      offsetLeft += el.scrollLeft * scaleX;\n      offsetTop += el.scrollTop * scaleY;\n    } while (el !== winScroller && (el = el.parentNode));\n  }\n  return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param  {Array} arr   Array that may or may not hold the object\r\n * @param  {Object} obj  An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number}      The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n  for (var i in arr) {\n    if (!arr.hasOwnProperty(i)) continue;\n    for (var key in obj) {\n      if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n    }\n  }\n  return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n  // skip to window\n  if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n  var elem = el;\n  var gotSelf = false;\n  do {\n    // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n    if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n      var elemCSS = css(elem);\n      if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n        if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n        if (gotSelf || includeSelf) return elem;\n        gotSelf = true;\n      }\n    }\n    /* jshint boss:true */\n  } while (elem = elem.parentNode);\n  return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n  if (dst && src) {\n    for (var key in src) {\n      if (src.hasOwnProperty(key)) {\n        dst[key] = src[key];\n      }\n    }\n  }\n  return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n  return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n  return function () {\n    if (!_throttleTimeout) {\n      var args = arguments,\n        _this = this;\n      if (args.length === 1) {\n        callback.call(_this, args[0]);\n      } else {\n        callback.apply(_this, args);\n      }\n      _throttleTimeout = setTimeout(function () {\n        _throttleTimeout = void 0;\n      }, ms);\n    }\n  };\n}\nfunction cancelThrottle() {\n  clearTimeout(_throttleTimeout);\n  _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n  el.scrollLeft += x;\n  el.scrollTop += y;\n}\nfunction clone(el) {\n  var Polymer = window.Polymer;\n  var $ = window.jQuery || window.Zepto;\n  if (Polymer && Polymer.dom) {\n    return Polymer.dom(el).cloneNode(true);\n  } else if ($) {\n    return $(el).clone(true)[0];\n  } else {\n    return el.cloneNode(true);\n  }\n}\nfunction setRect(el, rect) {\n  css(el, 'position', 'absolute');\n  css(el, 'top', rect.top);\n  css(el, 'left', rect.left);\n  css(el, 'width', rect.width);\n  css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n  css(el, 'position', '');\n  css(el, 'top', '');\n  css(el, 'left', '');\n  css(el, 'width', '');\n  css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n  var rect = {};\n  Array.from(container.children).forEach(function (child) {\n    var _rect$left, _rect$top, _rect$right, _rect$bottom;\n    if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n    var childRect = getRect(child);\n    rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n    rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n    rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n    rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n  });\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n  var animationStates = [],\n    animationCallbackId;\n  return {\n    captureAnimationState: function captureAnimationState() {\n      animationStates = [];\n      if (!this.options.animation) return;\n      var children = [].slice.call(this.el.children);\n      children.forEach(function (child) {\n        if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n        animationStates.push({\n          target: child,\n          rect: getRect(child)\n        });\n        var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n        // If animating: compensate for current animation\n        if (child.thisAnimationDuration) {\n          var childMatrix = matrix(child, true);\n          if (childMatrix) {\n            fromRect.top -= childMatrix.f;\n            fromRect.left -= childMatrix.e;\n          }\n        }\n        child.fromRect = fromRect;\n      });\n    },\n    addAnimationState: function addAnimationState(state) {\n      animationStates.push(state);\n    },\n    removeAnimationState: function removeAnimationState(target) {\n      animationStates.splice(indexOfObject(animationStates, {\n        target: target\n      }), 1);\n    },\n    animateAll: function animateAll(callback) {\n      var _this = this;\n      if (!this.options.animation) {\n        clearTimeout(animationCallbackId);\n        if (typeof callback === 'function') callback();\n        return;\n      }\n      var animating = false,\n        animationTime = 0;\n      animationStates.forEach(function (state) {\n        var time = 0,\n          target = state.target,\n          fromRect = target.fromRect,\n          toRect = getRect(target),\n          prevFromRect = target.prevFromRect,\n          prevToRect = target.prevToRect,\n          animatingRect = state.rect,\n          targetMatrix = matrix(target, true);\n        if (targetMatrix) {\n          // Compensate for current animation\n          toRect.top -= targetMatrix.f;\n          toRect.left -= targetMatrix.e;\n        }\n        target.toRect = toRect;\n        if (target.thisAnimationDuration) {\n          // Could also check if animatingRect is between fromRect and toRect\n          if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n          // Make sure animatingRect is on line between toRect & fromRect\n          (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n            // If returning to same place as started from animation and on same axis\n            time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n          }\n        }\n\n        // if fromRect != toRect: animate\n        if (!isRectEqual(toRect, fromRect)) {\n          target.prevFromRect = fromRect;\n          target.prevToRect = toRect;\n          if (!time) {\n            time = _this.options.animation;\n          }\n          _this.animate(target, animatingRect, toRect, time);\n        }\n        if (time) {\n          animating = true;\n          animationTime = Math.max(animationTime, time);\n          clearTimeout(target.animationResetTimer);\n          target.animationResetTimer = setTimeout(function () {\n            target.animationTime = 0;\n            target.prevFromRect = null;\n            target.fromRect = null;\n            target.prevToRect = null;\n            target.thisAnimationDuration = null;\n          }, time);\n          target.thisAnimationDuration = time;\n        }\n      });\n      clearTimeout(animationCallbackId);\n      if (!animating) {\n        if (typeof callback === 'function') callback();\n      } else {\n        animationCallbackId = setTimeout(function () {\n          if (typeof callback === 'function') callback();\n        }, animationTime);\n      }\n      animationStates = [];\n    },\n    animate: function animate(target, currentRect, toRect, duration) {\n      if (duration) {\n        css(target, 'transition', '');\n        css(target, 'transform', '');\n        var elMatrix = matrix(this.el),\n          scaleX = elMatrix && elMatrix.a,\n          scaleY = elMatrix && elMatrix.d,\n          translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n          translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n        target.animatingX = !!translateX;\n        target.animatingY = !!translateY;\n        css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n        this.forRepaintDummy = repaint(target); // repaint\n\n        css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n        css(target, 'transform', 'translate3d(0,0,0)');\n        typeof target.animated === 'number' && clearTimeout(target.animated);\n        target.animated = setTimeout(function () {\n          css(target, 'transition', '');\n          css(target, 'transform', '');\n          target.animated = false;\n          target.animatingX = false;\n          target.animatingY = false;\n        }, duration);\n      }\n    }\n  };\n}\nfunction repaint(target) {\n  return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n  return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n  initializeByDefault: true\n};\nvar PluginManager = {\n  mount: function mount(plugin) {\n    // Set default static properties\n    for (var option in defaults) {\n      if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n        plugin[option] = defaults[option];\n      }\n    }\n    plugins.forEach(function (p) {\n      if (p.pluginName === plugin.pluginName) {\n        throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n      }\n    });\n    plugins.push(plugin);\n  },\n  pluginEvent: function pluginEvent(eventName, sortable, evt) {\n    var _this = this;\n    this.eventCanceled = false;\n    evt.cancel = function () {\n      _this.eventCanceled = true;\n    };\n    var eventNameGlobal = eventName + 'Global';\n    plugins.forEach(function (plugin) {\n      if (!sortable[plugin.pluginName]) return;\n      // Fire global events if it exists in this sortable\n      if (sortable[plugin.pluginName][eventNameGlobal]) {\n        sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n          sortable: sortable\n        }, evt));\n      }\n\n      // Only fire plugin event if plugin is enabled in this sortable,\n      // and plugin has event defined\n      if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n        sortable[plugin.pluginName][eventName](_objectSpread2({\n          sortable: sortable\n        }, evt));\n      }\n    });\n  },\n  initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n    plugins.forEach(function (plugin) {\n      var pluginName = plugin.pluginName;\n      if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n      var initialized = new plugin(sortable, el, sortable.options);\n      initialized.sortable = sortable;\n      initialized.options = sortable.options;\n      sortable[pluginName] = initialized;\n\n      // Add default options from plugin\n      _extends(defaults, initialized.defaults);\n    });\n    for (var option in sortable.options) {\n      if (!sortable.options.hasOwnProperty(option)) continue;\n      var modified = this.modifyOption(sortable, option, sortable.options[option]);\n      if (typeof modified !== 'undefined') {\n        sortable.options[option] = modified;\n      }\n    }\n  },\n  getEventProperties: function getEventProperties(name, sortable) {\n    var eventProperties = {};\n    plugins.forEach(function (plugin) {\n      if (typeof plugin.eventProperties !== 'function') return;\n      _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n    });\n    return eventProperties;\n  },\n  modifyOption: function modifyOption(sortable, name, value) {\n    var modifiedValue;\n    plugins.forEach(function (plugin) {\n      // Plugin must exist on the Sortable\n      if (!sortable[plugin.pluginName]) return;\n\n      // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n      if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n        modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n      }\n    });\n    return modifiedValue;\n  }\n};\n\nfunction dispatchEvent(_ref) {\n  var sortable = _ref.sortable,\n    rootEl = _ref.rootEl,\n    name = _ref.name,\n    targetEl = _ref.targetEl,\n    cloneEl = _ref.cloneEl,\n    toEl = _ref.toEl,\n    fromEl = _ref.fromEl,\n    oldIndex = _ref.oldIndex,\n    newIndex = _ref.newIndex,\n    oldDraggableIndex = _ref.oldDraggableIndex,\n    newDraggableIndex = _ref.newDraggableIndex,\n    originalEvent = _ref.originalEvent,\n    putSortable = _ref.putSortable,\n    extraEventProperties = _ref.extraEventProperties;\n  sortable = sortable || rootEl && rootEl[expando];\n  if (!sortable) return;\n  var evt,\n    options = sortable.options,\n    onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n  // Support for new CustomEvent feature\n  if (window.CustomEvent && !IE11OrLess && !Edge) {\n    evt = new CustomEvent(name, {\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    evt = document.createEvent('Event');\n    evt.initEvent(name, true, true);\n  }\n  evt.to = toEl || rootEl;\n  evt.from = fromEl || rootEl;\n  evt.item = targetEl || rootEl;\n  evt.clone = cloneEl;\n  evt.oldIndex = oldIndex;\n  evt.newIndex = newIndex;\n  evt.oldDraggableIndex = oldDraggableIndex;\n  evt.newDraggableIndex = newDraggableIndex;\n  evt.originalEvent = originalEvent;\n  evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n  var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n  for (var option in allEventProperties) {\n    evt[option] = allEventProperties[option];\n  }\n  if (rootEl) {\n    rootEl.dispatchEvent(evt);\n  }\n  if (options[onName]) {\n    options[onName].call(sortable, evt);\n  }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n    originalEvent = _ref.evt,\n    data = _objectWithoutProperties(_ref, _excluded);\n  PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n    dragEl: dragEl,\n    parentEl: parentEl,\n    ghostEl: ghostEl,\n    rootEl: rootEl,\n    nextEl: nextEl,\n    lastDownEl: lastDownEl,\n    cloneEl: cloneEl,\n    cloneHidden: cloneHidden,\n    dragStarted: moved,\n    putSortable: putSortable,\n    activeSortable: Sortable.active,\n    originalEvent: originalEvent,\n    oldIndex: oldIndex,\n    oldDraggableIndex: oldDraggableIndex,\n    newIndex: newIndex,\n    newDraggableIndex: newDraggableIndex,\n    hideGhostForTarget: _hideGhostForTarget,\n    unhideGhostForTarget: _unhideGhostForTarget,\n    cloneNowHidden: function cloneNowHidden() {\n      cloneHidden = true;\n    },\n    cloneNowShown: function cloneNowShown() {\n      cloneHidden = false;\n    },\n    dispatchSortableEvent: function dispatchSortableEvent(name) {\n      _dispatchEvent({\n        sortable: sortable,\n        name: name,\n        originalEvent: originalEvent\n      });\n    }\n  }, data));\n};\nfunction _dispatchEvent(info) {\n  dispatchEvent(_objectSpread2({\n    putSortable: putSortable,\n    cloneEl: cloneEl,\n    targetEl: dragEl,\n    rootEl: rootEl,\n    oldIndex: oldIndex,\n    oldDraggableIndex: oldDraggableIndex,\n    newIndex: newIndex,\n    newDraggableIndex: newDraggableIndex\n  }, info));\n}\nvar dragEl,\n  parentEl,\n  ghostEl,\n  rootEl,\n  nextEl,\n  lastDownEl,\n  cloneEl,\n  cloneHidden,\n  oldIndex,\n  newIndex,\n  oldDraggableIndex,\n  newDraggableIndex,\n  activeGroup,\n  putSortable,\n  awaitingDragStarted = false,\n  ignoreNextClick = false,\n  sortables = [],\n  tapEvt,\n  touchEvt,\n  lastDx,\n  lastDy,\n  tapDistanceLeft,\n  tapDistanceTop,\n  moved,\n  lastTarget,\n  lastDirection,\n  pastFirstInvertThresh = false,\n  isCircumstantialInvert = false,\n  targetMoveDistance,\n  // For positioning ghost absolutely\n  ghostRelativeParent,\n  ghostRelativeParentInitialScroll = [],\n  // (left, top)\n\n  _silent = false,\n  savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n  PositionGhostAbsolutely = IOS,\n  CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n  // This will not pass for IE9, because IE9 DnD only works on anchors\n  supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n  supportCssPointerEvents = function () {\n    if (!documentExists) return;\n    // false when <= IE11\n    if (IE11OrLess) {\n      return false;\n    }\n    var el = document.createElement('x');\n    el.style.cssText = 'pointer-events:auto';\n    return el.style.pointerEvents === 'auto';\n  }(),\n  _detectDirection = function _detectDirection(el, options) {\n    var elCSS = css(el),\n      elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n      child1 = getChild(el, 0, options),\n      child2 = getChild(el, 1, options),\n      firstChildCSS = child1 && css(child1),\n      secondChildCSS = child2 && css(child2),\n      firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n      secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n    if (elCSS.display === 'flex') {\n      return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n    }\n    if (elCSS.display === 'grid') {\n      return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n    }\n    if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n      var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n      return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n    }\n    return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n  },\n  _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n    var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n      dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n      dragElOppLength = vertical ? dragRect.width : dragRect.height,\n      targetS1Opp = vertical ? targetRect.left : targetRect.top,\n      targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n      targetOppLength = vertical ? targetRect.width : targetRect.height;\n    return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n  },\n  /**\r\n   * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n   * @param  {Number} x      X position\r\n   * @param  {Number} y      Y position\r\n   * @return {HTMLElement}   Element of the first found nearest Sortable\r\n   */\n  _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n    var ret;\n    sortables.some(function (sortable) {\n      var threshold = sortable[expando].options.emptyInsertThreshold;\n      if (!threshold || lastChild(sortable)) return;\n      var rect = getRect(sortable),\n        insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n        insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n      if (insideHorizontally && insideVertically) {\n        return ret = sortable;\n      }\n    });\n    return ret;\n  },\n  _prepareGroup = function _prepareGroup(options) {\n    function toFn(value, pull) {\n      return function (to, from, dragEl, evt) {\n        var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n        if (value == null && (pull || sameGroup)) {\n          // Default pull value\n          // Default pull and put value if same group\n          return true;\n        } else if (value == null || value === false) {\n          return false;\n        } else if (pull && value === 'clone') {\n          return value;\n        } else if (typeof value === 'function') {\n          return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n        } else {\n          var otherGroup = (pull ? to : from).options.group.name;\n          return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n        }\n      };\n    }\n    var group = {};\n    var originalGroup = options.group;\n    if (!originalGroup || _typeof(originalGroup) != 'object') {\n      originalGroup = {\n        name: originalGroup\n      };\n    }\n    group.name = originalGroup.name;\n    group.checkPull = toFn(originalGroup.pull, true);\n    group.checkPut = toFn(originalGroup.put);\n    group.revertClone = originalGroup.revertClone;\n    options.group = group;\n  },\n  _hideGhostForTarget = function _hideGhostForTarget() {\n    if (!supportCssPointerEvents && ghostEl) {\n      css(ghostEl, 'display', 'none');\n    }\n  },\n  _unhideGhostForTarget = function _unhideGhostForTarget() {\n    if (!supportCssPointerEvents && ghostEl) {\n      css(ghostEl, 'display', '');\n    }\n  };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n  document.addEventListener('click', function (evt) {\n    if (ignoreNextClick) {\n      evt.preventDefault();\n      evt.stopPropagation && evt.stopPropagation();\n      evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n      ignoreNextClick = false;\n      return false;\n    }\n  }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n  if (dragEl) {\n    evt = evt.touches ? evt.touches[0] : evt;\n    var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n    if (nearest) {\n      // Create imitation event\n      var event = {};\n      for (var i in evt) {\n        if (evt.hasOwnProperty(i)) {\n          event[i] = evt[i];\n        }\n      }\n      event.target = event.rootEl = nearest;\n      event.preventDefault = void 0;\n      event.stopPropagation = void 0;\n      nearest[expando]._onDragOver(event);\n    }\n  }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n  if (dragEl) {\n    dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n  }\n};\n\n/**\r\n * @class  Sortable\r\n * @param  {HTMLElement}  el\r\n * @param  {Object}       [options]\r\n */\nfunction Sortable(el, options) {\n  if (!(el && el.nodeType && el.nodeType === 1)) {\n    throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n  }\n  this.el = el; // root element\n  this.options = options = _extends({}, options);\n\n  // Export instance\n  el[expando] = this;\n  var defaults = {\n    group: null,\n    sort: true,\n    disabled: false,\n    store: null,\n    handle: null,\n    draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n    swapThreshold: 1,\n    // percentage; 0 <= x <= 1\n    invertSwap: false,\n    // invert always\n    invertedSwapThreshold: null,\n    // will be set to same as swapThreshold if default\n    removeCloneOnHide: true,\n    direction: function direction() {\n      return _detectDirection(el, this.options);\n    },\n    ghostClass: 'sortable-ghost',\n    chosenClass: 'sortable-chosen',\n    dragClass: 'sortable-drag',\n    ignore: 'a, img',\n    filter: null,\n    preventOnFilter: true,\n    animation: 0,\n    easing: null,\n    setData: function setData(dataTransfer, dragEl) {\n      dataTransfer.setData('Text', dragEl.textContent);\n    },\n    dropBubble: false,\n    dragoverBubble: false,\n    dataIdAttr: 'data-id',\n    delay: 0,\n    delayOnTouchOnly: false,\n    touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n    forceFallback: false,\n    fallbackClass: 'sortable-fallback',\n    fallbackOnBody: false,\n    fallbackTolerance: 0,\n    fallbackOffset: {\n      x: 0,\n      y: 0\n    },\n    // Disabled on Safari: #1571; Enabled on Safari IOS: #2244\n    supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && (!Safari || IOS),\n    emptyInsertThreshold: 5\n  };\n  PluginManager.initializePlugins(this, el, defaults);\n\n  // Set default options\n  for (var name in defaults) {\n    !(name in options) && (options[name] = defaults[name]);\n  }\n  _prepareGroup(options);\n\n  // Bind all private methods\n  for (var fn in this) {\n    if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n      this[fn] = this[fn].bind(this);\n    }\n  }\n\n  // Setup drag mode\n  this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n  if (this.nativeDraggable) {\n    // Touch start threshold cannot be greater than the native dragstart threshold\n    this.options.touchStartThreshold = 1;\n  }\n\n  // Bind events\n  if (options.supportPointer) {\n    on(el, 'pointerdown', this._onTapStart);\n  } else {\n    on(el, 'mousedown', this._onTapStart);\n    on(el, 'touchstart', this._onTapStart);\n  }\n  if (this.nativeDraggable) {\n    on(el, 'dragover', this);\n    on(el, 'dragenter', this);\n  }\n  sortables.push(this.el);\n\n  // Restore sorting\n  options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n  // Add animation state manager\n  _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n  constructor: Sortable,\n  _isOutsideThisEl: function _isOutsideThisEl(target) {\n    if (!this.el.contains(target) && target !== this.el) {\n      lastTarget = null;\n    }\n  },\n  _getDirection: function _getDirection(evt, target) {\n    return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n  },\n  _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n    if (!evt.cancelable) return;\n    var _this = this,\n      el = this.el,\n      options = this.options,\n      preventOnFilter = options.preventOnFilter,\n      type = evt.type,\n      touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n      target = (touch || evt).target,\n      originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n      filter = options.filter;\n    _saveInputCheckedState(el);\n\n    // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n    if (dragEl) {\n      return;\n    }\n    if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n      return; // only left button and enabled\n    }\n\n    // cancel dnd if original target is content editable\n    if (originalTarget.isContentEditable) {\n      return;\n    }\n\n    // Safari ignores further event handling after mousedown\n    if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n      return;\n    }\n    target = closest(target, options.draggable, el, false);\n    if (target && target.animated) {\n      return;\n    }\n    if (lastDownEl === target) {\n      // Ignoring duplicate `down`\n      return;\n    }\n\n    // Get the index of the dragged element within its parent\n    oldIndex = index(target);\n    oldDraggableIndex = index(target, options.draggable);\n\n    // Check filter\n    if (typeof filter === 'function') {\n      if (filter.call(this, evt, target, this)) {\n        _dispatchEvent({\n          sortable: _this,\n          rootEl: originalTarget,\n          name: 'filter',\n          targetEl: target,\n          toEl: el,\n          fromEl: el\n        });\n        pluginEvent('filter', _this, {\n          evt: evt\n        });\n        preventOnFilter && evt.preventDefault();\n        return; // cancel dnd\n      }\n    } else if (filter) {\n      filter = filter.split(',').some(function (criteria) {\n        criteria = closest(originalTarget, criteria.trim(), el, false);\n        if (criteria) {\n          _dispatchEvent({\n            sortable: _this,\n            rootEl: criteria,\n            name: 'filter',\n            targetEl: target,\n            fromEl: el,\n            toEl: el\n          });\n          pluginEvent('filter', _this, {\n            evt: evt\n          });\n          return true;\n        }\n      });\n      if (filter) {\n        preventOnFilter && evt.preventDefault();\n        return; // cancel dnd\n      }\n    }\n    if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n      return;\n    }\n\n    // Prepare `dragstart`\n    this._prepareDragStart(evt, touch, target);\n  },\n  _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n    var _this = this,\n      el = _this.el,\n      options = _this.options,\n      ownerDocument = el.ownerDocument,\n      dragStartFn;\n    if (target && !dragEl && target.parentNode === el) {\n      var dragRect = getRect(target);\n      rootEl = el;\n      dragEl = target;\n      parentEl = dragEl.parentNode;\n      nextEl = dragEl.nextSibling;\n      lastDownEl = target;\n      activeGroup = options.group;\n      Sortable.dragged = dragEl;\n      tapEvt = {\n        target: dragEl,\n        clientX: (touch || evt).clientX,\n        clientY: (touch || evt).clientY\n      };\n      tapDistanceLeft = tapEvt.clientX - dragRect.left;\n      tapDistanceTop = tapEvt.clientY - dragRect.top;\n      this._lastX = (touch || evt).clientX;\n      this._lastY = (touch || evt).clientY;\n      dragEl.style['will-change'] = 'all';\n      dragStartFn = function dragStartFn() {\n        pluginEvent('delayEnded', _this, {\n          evt: evt\n        });\n        if (Sortable.eventCanceled) {\n          _this._onDrop();\n          return;\n        }\n        // Delayed drag has been triggered\n        // we can re-enable the events: touchmove/mousemove\n        _this._disableDelayedDragEvents();\n        if (!FireFox && _this.nativeDraggable) {\n          dragEl.draggable = true;\n        }\n\n        // Bind the events: dragstart/dragend\n        _this._triggerDragStart(evt, touch);\n\n        // Drag start event\n        _dispatchEvent({\n          sortable: _this,\n          name: 'choose',\n          originalEvent: evt\n        });\n\n        // Chosen item\n        toggleClass(dragEl, options.chosenClass, true);\n      };\n\n      // Disable \"draggable\"\n      options.ignore.split(',').forEach(function (criteria) {\n        find(dragEl, criteria.trim(), _disableDraggable);\n      });\n      on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n      if (options.supportPointer) {\n        on(ownerDocument, 'pointerup', _this._onDrop);\n        // Native D&D triggers pointercancel\n        !this.nativeDraggable && on(ownerDocument, 'pointercancel', _this._onDrop);\n      } else {\n        on(ownerDocument, 'mouseup', _this._onDrop);\n        on(ownerDocument, 'touchend', _this._onDrop);\n        on(ownerDocument, 'touchcancel', _this._onDrop);\n      }\n\n      // Make dragEl draggable (must be before delay for FireFox)\n      if (FireFox && this.nativeDraggable) {\n        this.options.touchStartThreshold = 4;\n        dragEl.draggable = true;\n      }\n      pluginEvent('delayStart', this, {\n        evt: evt\n      });\n\n      // Delay is impossible for native DnD in Edge or IE\n      if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n        if (Sortable.eventCanceled) {\n          this._onDrop();\n          return;\n        }\n        // If the user moves the pointer or let go the click or touch\n        // before the delay has been reached:\n        // disable the delayed drag\n        if (options.supportPointer) {\n          on(ownerDocument, 'pointerup', _this._disableDelayedDrag);\n          on(ownerDocument, 'pointercancel', _this._disableDelayedDrag);\n        } else {\n          on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n          on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n          on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n        }\n        on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n        on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n        options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n        _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n      } else {\n        dragStartFn();\n      }\n    }\n  },\n  _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n    var touch = e.touches ? e.touches[0] : e;\n    if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n      this._disableDelayedDrag();\n    }\n  },\n  _disableDelayedDrag: function _disableDelayedDrag() {\n    dragEl && _disableDraggable(dragEl);\n    clearTimeout(this._dragStartTimer);\n    this._disableDelayedDragEvents();\n  },\n  _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n    var ownerDocument = this.el.ownerDocument;\n    off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n    off(ownerDocument, 'touchend', this._disableDelayedDrag);\n    off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n    off(ownerDocument, 'pointerup', this._disableDelayedDrag);\n    off(ownerDocument, 'pointercancel', this._disableDelayedDrag);\n    off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n    off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n    off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n  },\n  _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n    touch = touch || evt.pointerType == 'touch' && evt;\n    if (!this.nativeDraggable || touch) {\n      if (this.options.supportPointer) {\n        on(document, 'pointermove', this._onTouchMove);\n      } else if (touch) {\n        on(document, 'touchmove', this._onTouchMove);\n      } else {\n        on(document, 'mousemove', this._onTouchMove);\n      }\n    } else {\n      on(dragEl, 'dragend', this);\n      on(rootEl, 'dragstart', this._onDragStart);\n    }\n    try {\n      if (document.selection) {\n        _nextTick(function () {\n          document.selection.empty();\n        });\n      } else {\n        window.getSelection().removeAllRanges();\n      }\n    } catch (err) {}\n  },\n  _dragStarted: function _dragStarted(fallback, evt) {\n    awaitingDragStarted = false;\n    if (rootEl && dragEl) {\n      pluginEvent('dragStarted', this, {\n        evt: evt\n      });\n      if (this.nativeDraggable) {\n        on(document, 'dragover', _checkOutsideTargetEl);\n      }\n      var options = this.options;\n\n      // Apply effect\n      !fallback && toggleClass(dragEl, options.dragClass, false);\n      toggleClass(dragEl, options.ghostClass, true);\n      Sortable.active = this;\n      fallback && this._appendGhost();\n\n      // Drag start event\n      _dispatchEvent({\n        sortable: this,\n        name: 'start',\n        originalEvent: evt\n      });\n    } else {\n      this._nulling();\n    }\n  },\n  _emulateDragOver: function _emulateDragOver() {\n    if (touchEvt) {\n      this._lastX = touchEvt.clientX;\n      this._lastY = touchEvt.clientY;\n      _hideGhostForTarget();\n      var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n      var parent = target;\n      while (target && target.shadowRoot) {\n        target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n        if (target === parent) break;\n        parent = target;\n      }\n      dragEl.parentNode[expando]._isOutsideThisEl(target);\n      if (parent) {\n        do {\n          if (parent[expando]) {\n            var inserted = void 0;\n            inserted = parent[expando]._onDragOver({\n              clientX: touchEvt.clientX,\n              clientY: touchEvt.clientY,\n              target: target,\n              rootEl: parent\n            });\n            if (inserted && !this.options.dragoverBubble) {\n              break;\n            }\n          }\n          target = parent; // store last element\n        }\n        /* jshint boss:true */ while (parent = getParentOrHost(parent));\n      }\n      _unhideGhostForTarget();\n    }\n  },\n  _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n    if (tapEvt) {\n      var options = this.options,\n        fallbackTolerance = options.fallbackTolerance,\n        fallbackOffset = options.fallbackOffset,\n        touch = evt.touches ? evt.touches[0] : evt,\n        ghostMatrix = ghostEl && matrix(ghostEl, true),\n        scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n        scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n        relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n        dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n        dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n      // only set the status to dragging, when we are actually dragging\n      if (!Sortable.active && !awaitingDragStarted) {\n        if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n          return;\n        }\n        this._onDragStart(evt, true);\n      }\n      if (ghostEl) {\n        if (ghostMatrix) {\n          ghostMatrix.e += dx - (lastDx || 0);\n          ghostMatrix.f += dy - (lastDy || 0);\n        } else {\n          ghostMatrix = {\n            a: 1,\n            b: 0,\n            c: 0,\n            d: 1,\n            e: dx,\n            f: dy\n          };\n        }\n        var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n        css(ghostEl, 'webkitTransform', cssMatrix);\n        css(ghostEl, 'mozTransform', cssMatrix);\n        css(ghostEl, 'msTransform', cssMatrix);\n        css(ghostEl, 'transform', cssMatrix);\n        lastDx = dx;\n        lastDy = dy;\n        touchEvt = touch;\n      }\n      evt.cancelable && evt.preventDefault();\n    }\n  },\n  _appendGhost: function _appendGhost() {\n    // Bug if using scale(): https://stackoverflow.com/questions/2637058\n    // Not being adjusted for\n    if (!ghostEl) {\n      var container = this.options.fallbackOnBody ? document.body : rootEl,\n        rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n        options = this.options;\n\n      // Position absolutely\n      if (PositionGhostAbsolutely) {\n        // Get relatively positioned parent\n        ghostRelativeParent = container;\n        while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n          ghostRelativeParent = ghostRelativeParent.parentNode;\n        }\n        if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n          if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n          rect.top += ghostRelativeParent.scrollTop;\n          rect.left += ghostRelativeParent.scrollLeft;\n        } else {\n          ghostRelativeParent = getWindowScrollingElement();\n        }\n        ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n      }\n      ghostEl = dragEl.cloneNode(true);\n      toggleClass(ghostEl, options.ghostClass, false);\n      toggleClass(ghostEl, options.fallbackClass, true);\n      toggleClass(ghostEl, options.dragClass, true);\n      css(ghostEl, 'transition', '');\n      css(ghostEl, 'transform', '');\n      css(ghostEl, 'box-sizing', 'border-box');\n      css(ghostEl, 'margin', 0);\n      css(ghostEl, 'top', rect.top);\n      css(ghostEl, 'left', rect.left);\n      css(ghostEl, 'width', rect.width);\n      css(ghostEl, 'height', rect.height);\n      css(ghostEl, 'opacity', '0.8');\n      css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n      css(ghostEl, 'zIndex', '100000');\n      css(ghostEl, 'pointerEvents', 'none');\n      Sortable.ghost = ghostEl;\n      container.appendChild(ghostEl);\n\n      // Set transform-origin\n      css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n    }\n  },\n  _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n    var _this = this;\n    var dataTransfer = evt.dataTransfer;\n    var options = _this.options;\n    pluginEvent('dragStart', this, {\n      evt: evt\n    });\n    if (Sortable.eventCanceled) {\n      this._onDrop();\n      return;\n    }\n    pluginEvent('setupClone', this);\n    if (!Sortable.eventCanceled) {\n      cloneEl = clone(dragEl);\n      cloneEl.removeAttribute(\"id\");\n      cloneEl.draggable = false;\n      cloneEl.style['will-change'] = '';\n      this._hideClone();\n      toggleClass(cloneEl, this.options.chosenClass, false);\n      Sortable.clone = cloneEl;\n    }\n\n    // #1143: IFrame support workaround\n    _this.cloneId = _nextTick(function () {\n      pluginEvent('clone', _this);\n      if (Sortable.eventCanceled) return;\n      if (!_this.options.removeCloneOnHide) {\n        rootEl.insertBefore(cloneEl, dragEl);\n      }\n      _this._hideClone();\n      _dispatchEvent({\n        sortable: _this,\n        name: 'clone'\n      });\n    });\n    !fallback && toggleClass(dragEl, options.dragClass, true);\n\n    // Set proper drop events\n    if (fallback) {\n      ignoreNextClick = true;\n      _this._loopId = setInterval(_this._emulateDragOver, 50);\n    } else {\n      // Undo what was set in _prepareDragStart before drag started\n      off(document, 'mouseup', _this._onDrop);\n      off(document, 'touchend', _this._onDrop);\n      off(document, 'touchcancel', _this._onDrop);\n      if (dataTransfer) {\n        dataTransfer.effectAllowed = 'move';\n        options.setData && options.setData.call(_this, dataTransfer, dragEl);\n      }\n      on(document, 'drop', _this);\n\n      // #1276 fix:\n      css(dragEl, 'transform', 'translateZ(0)');\n    }\n    awaitingDragStarted = true;\n    _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n    on(document, 'selectstart', _this);\n    moved = true;\n    window.getSelection().removeAllRanges();\n    if (Safari) {\n      css(document.body, 'user-select', 'none');\n    }\n  },\n  // Returns true - if no further action is needed (either inserted or another condition)\n  _onDragOver: function _onDragOver( /**Event*/evt) {\n    var el = this.el,\n      target = evt.target,\n      dragRect,\n      targetRect,\n      revert,\n      options = this.options,\n      group = options.group,\n      activeSortable = Sortable.active,\n      isOwner = activeGroup === group,\n      canSort = options.sort,\n      fromSortable = putSortable || activeSortable,\n      vertical,\n      _this = this,\n      completedFired = false;\n    if (_silent) return;\n    function dragOverEvent(name, extra) {\n      pluginEvent(name, _this, _objectSpread2({\n        evt: evt,\n        isOwner: isOwner,\n        axis: vertical ? 'vertical' : 'horizontal',\n        revert: revert,\n        dragRect: dragRect,\n        targetRect: targetRect,\n        canSort: canSort,\n        fromSortable: fromSortable,\n        target: target,\n        completed: completed,\n        onMove: function onMove(target, after) {\n          return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n        },\n        changed: changed\n      }, extra));\n    }\n\n    // Capture animation state\n    function capture() {\n      dragOverEvent('dragOverAnimationCapture');\n      _this.captureAnimationState();\n      if (_this !== fromSortable) {\n        fromSortable.captureAnimationState();\n      }\n    }\n\n    // Return invocation when dragEl is inserted (or completed)\n    function completed(insertion) {\n      dragOverEvent('dragOverCompleted', {\n        insertion: insertion\n      });\n      if (insertion) {\n        // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n        if (isOwner) {\n          activeSortable._hideClone();\n        } else {\n          activeSortable._showClone(_this);\n        }\n        if (_this !== fromSortable) {\n          // Set ghost class to new sortable's ghost class\n          toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n          toggleClass(dragEl, options.ghostClass, true);\n        }\n        if (putSortable !== _this && _this !== Sortable.active) {\n          putSortable = _this;\n        } else if (_this === Sortable.active && putSortable) {\n          putSortable = null;\n        }\n\n        // Animation\n        if (fromSortable === _this) {\n          _this._ignoreWhileAnimating = target;\n        }\n        _this.animateAll(function () {\n          dragOverEvent('dragOverAnimationComplete');\n          _this._ignoreWhileAnimating = null;\n        });\n        if (_this !== fromSortable) {\n          fromSortable.animateAll();\n          fromSortable._ignoreWhileAnimating = null;\n        }\n      }\n\n      // Null lastTarget if it is not inside a previously swapped element\n      if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n        lastTarget = null;\n      }\n\n      // no bubbling and not fallback\n      if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n        dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n        // Do not detect for empty insert if already inserted\n        !insertion && nearestEmptyInsertDetectEvent(evt);\n      }\n      !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n      return completedFired = true;\n    }\n\n    // Call when dragEl has been inserted\n    function changed() {\n      newIndex = index(dragEl);\n      newDraggableIndex = index(dragEl, options.draggable);\n      _dispatchEvent({\n        sortable: _this,\n        name: 'change',\n        toEl: el,\n        newIndex: newIndex,\n        newDraggableIndex: newDraggableIndex,\n        originalEvent: evt\n      });\n    }\n    if (evt.preventDefault !== void 0) {\n      evt.cancelable && evt.preventDefault();\n    }\n    target = closest(target, options.draggable, el, true);\n    dragOverEvent('dragOver');\n    if (Sortable.eventCanceled) return completedFired;\n    if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n      return completed(false);\n    }\n    ignoreNextClick = false;\n    if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n    : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n      vertical = this._getDirection(evt, target) === 'vertical';\n      dragRect = getRect(dragEl);\n      dragOverEvent('dragOverValid');\n      if (Sortable.eventCanceled) return completedFired;\n      if (revert) {\n        parentEl = rootEl; // actualization\n        capture();\n        this._hideClone();\n        dragOverEvent('revert');\n        if (!Sortable.eventCanceled) {\n          if (nextEl) {\n            rootEl.insertBefore(dragEl, nextEl);\n          } else {\n            rootEl.appendChild(dragEl);\n          }\n        }\n        return completed(true);\n      }\n      var elLastChild = lastChild(el, options.draggable);\n      if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n        // Insert to end of list\n\n        // If already at end of list: Do not insert\n        if (elLastChild === dragEl) {\n          return completed(false);\n        }\n\n        // if there is a last element, it is the target\n        if (elLastChild && el === evt.target) {\n          target = elLastChild;\n        }\n        if (target) {\n          targetRect = getRect(target);\n        }\n        if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n          capture();\n          if (elLastChild && elLastChild.nextSibling) {\n            // the last draggable element is not the last node\n            el.insertBefore(dragEl, elLastChild.nextSibling);\n          } else {\n            el.appendChild(dragEl);\n          }\n          parentEl = el; // actualization\n\n          changed();\n          return completed(true);\n        }\n      } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n        // Insert to start of list\n        var firstChild = getChild(el, 0, options, true);\n        if (firstChild === dragEl) {\n          return completed(false);\n        }\n        target = firstChild;\n        targetRect = getRect(target);\n        if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n          capture();\n          el.insertBefore(dragEl, firstChild);\n          parentEl = el; // actualization\n\n          changed();\n          return completed(true);\n        }\n      } else if (target.parentNode === el) {\n        targetRect = getRect(target);\n        var direction = 0,\n          targetBeforeFirstSwap,\n          differentLevel = dragEl.parentNode !== el,\n          differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n          side1 = vertical ? 'top' : 'left',\n          scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n          scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n        if (lastTarget !== target) {\n          targetBeforeFirstSwap = targetRect[side1];\n          pastFirstInvertThresh = false;\n          isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n        }\n        direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n        var sibling;\n        if (direction !== 0) {\n          // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n          var dragIndex = index(dragEl);\n          do {\n            dragIndex -= direction;\n            sibling = parentEl.children[dragIndex];\n          } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n        }\n        // If dragEl is already beside target: Do not insert\n        if (direction === 0 || sibling === target) {\n          return completed(false);\n        }\n        lastTarget = target;\n        lastDirection = direction;\n        var nextSibling = target.nextElementSibling,\n          after = false;\n        after = direction === 1;\n        var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n        if (moveVector !== false) {\n          if (moveVector === 1 || moveVector === -1) {\n            after = moveVector === 1;\n          }\n          _silent = true;\n          setTimeout(_unsilent, 30);\n          capture();\n          if (after && !nextSibling) {\n            el.appendChild(dragEl);\n          } else {\n            target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n          }\n\n          // Undo chrome's scroll adjustment (has no effect on other browsers)\n          if (scrolledPastTop) {\n            scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n          }\n          parentEl = dragEl.parentNode; // actualization\n\n          // must be done before animation\n          if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n            targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n          }\n          changed();\n          return completed(true);\n        }\n      }\n      if (el.contains(dragEl)) {\n        return completed(false);\n      }\n    }\n    return false;\n  },\n  _ignoreWhileAnimating: null,\n  _offMoveEvents: function _offMoveEvents() {\n    off(document, 'mousemove', this._onTouchMove);\n    off(document, 'touchmove', this._onTouchMove);\n    off(document, 'pointermove', this._onTouchMove);\n    off(document, 'dragover', nearestEmptyInsertDetectEvent);\n    off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n    off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n  },\n  _offUpEvents: function _offUpEvents() {\n    var ownerDocument = this.el.ownerDocument;\n    off(ownerDocument, 'mouseup', this._onDrop);\n    off(ownerDocument, 'touchend', this._onDrop);\n    off(ownerDocument, 'pointerup', this._onDrop);\n    off(ownerDocument, 'pointercancel', this._onDrop);\n    off(ownerDocument, 'touchcancel', this._onDrop);\n    off(document, 'selectstart', this);\n  },\n  _onDrop: function _onDrop( /**Event*/evt) {\n    var el = this.el,\n      options = this.options;\n\n    // Get the index of the dragged element within its parent\n    newIndex = index(dragEl);\n    newDraggableIndex = index(dragEl, options.draggable);\n    pluginEvent('drop', this, {\n      evt: evt\n    });\n    parentEl = dragEl && dragEl.parentNode;\n\n    // Get again after plugin event\n    newIndex = index(dragEl);\n    newDraggableIndex = index(dragEl, options.draggable);\n    if (Sortable.eventCanceled) {\n      this._nulling();\n      return;\n    }\n    awaitingDragStarted = false;\n    isCircumstantialInvert = false;\n    pastFirstInvertThresh = false;\n    clearInterval(this._loopId);\n    clearTimeout(this._dragStartTimer);\n    _cancelNextTick(this.cloneId);\n    _cancelNextTick(this._dragStartId);\n\n    // Unbind events\n    if (this.nativeDraggable) {\n      off(document, 'drop', this);\n      off(el, 'dragstart', this._onDragStart);\n    }\n    this._offMoveEvents();\n    this._offUpEvents();\n    if (Safari) {\n      css(document.body, 'user-select', '');\n    }\n    css(dragEl, 'transform', '');\n    if (evt) {\n      if (moved) {\n        evt.cancelable && evt.preventDefault();\n        !options.dropBubble && evt.stopPropagation();\n      }\n      ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n      if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n        // Remove clone(s)\n        cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n      }\n      if (dragEl) {\n        if (this.nativeDraggable) {\n          off(dragEl, 'dragend', this);\n        }\n        _disableDraggable(dragEl);\n        dragEl.style['will-change'] = '';\n\n        // Remove classes\n        // ghostClass is added in dragStarted\n        if (moved && !awaitingDragStarted) {\n          toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n        }\n        toggleClass(dragEl, this.options.chosenClass, false);\n\n        // Drag stop event\n        _dispatchEvent({\n          sortable: this,\n          name: 'unchoose',\n          toEl: parentEl,\n          newIndex: null,\n          newDraggableIndex: null,\n          originalEvent: evt\n        });\n        if (rootEl !== parentEl) {\n          if (newIndex >= 0) {\n            // Add event\n            _dispatchEvent({\n              rootEl: parentEl,\n              name: 'add',\n              toEl: parentEl,\n              fromEl: rootEl,\n              originalEvent: evt\n            });\n\n            // Remove event\n            _dispatchEvent({\n              sortable: this,\n              name: 'remove',\n              toEl: parentEl,\n              originalEvent: evt\n            });\n\n            // drag from one list and drop into another\n            _dispatchEvent({\n              rootEl: parentEl,\n              name: 'sort',\n              toEl: parentEl,\n              fromEl: rootEl,\n              originalEvent: evt\n            });\n            _dispatchEvent({\n              sortable: this,\n              name: 'sort',\n              toEl: parentEl,\n              originalEvent: evt\n            });\n          }\n          putSortable && putSortable.save();\n        } else {\n          if (newIndex !== oldIndex) {\n            if (newIndex >= 0) {\n              // drag & drop within the same list\n              _dispatchEvent({\n                sortable: this,\n                name: 'update',\n                toEl: parentEl,\n                originalEvent: evt\n              });\n              _dispatchEvent({\n                sortable: this,\n                name: 'sort',\n                toEl: parentEl,\n                originalEvent: evt\n              });\n            }\n          }\n        }\n        if (Sortable.active) {\n          /* jshint eqnull:true */\n          if (newIndex == null || newIndex === -1) {\n            newIndex = oldIndex;\n            newDraggableIndex = oldDraggableIndex;\n          }\n          _dispatchEvent({\n            sortable: this,\n            name: 'end',\n            toEl: parentEl,\n            originalEvent: evt\n          });\n\n          // Save sorting\n          this.save();\n        }\n      }\n    }\n    this._nulling();\n  },\n  _nulling: function _nulling() {\n    pluginEvent('nulling', this);\n    rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n    savedInputChecked.forEach(function (el) {\n      el.checked = true;\n    });\n    savedInputChecked.length = lastDx = lastDy = 0;\n  },\n  handleEvent: function handleEvent( /**Event*/evt) {\n    switch (evt.type) {\n      case 'drop':\n      case 'dragend':\n        this._onDrop(evt);\n        break;\n      case 'dragenter':\n      case 'dragover':\n        if (dragEl) {\n          this._onDragOver(evt);\n          _globalDragOver(evt);\n        }\n        break;\n      case 'selectstart':\n        evt.preventDefault();\n        break;\n    }\n  },\n  /**\r\n   * Serializes the item into an array of string.\r\n   * @returns {String[]}\r\n   */\n  toArray: function toArray() {\n    var order = [],\n      el,\n      children = this.el.children,\n      i = 0,\n      n = children.length,\n      options = this.options;\n    for (; i < n; i++) {\n      el = children[i];\n      if (closest(el, options.draggable, this.el, false)) {\n        order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n      }\n    }\n    return order;\n  },\n  /**\r\n   * Sorts the elements according to the array.\r\n   * @param  {String[]}  order  order of the items\r\n   */\n  sort: function sort(order, useAnimation) {\n    var items = {},\n      rootEl = this.el;\n    this.toArray().forEach(function (id, i) {\n      var el = rootEl.children[i];\n      if (closest(el, this.options.draggable, rootEl, false)) {\n        items[id] = el;\n      }\n    }, this);\n    useAnimation && this.captureAnimationState();\n    order.forEach(function (id) {\n      if (items[id]) {\n        rootEl.removeChild(items[id]);\n        rootEl.appendChild(items[id]);\n      }\n    });\n    useAnimation && this.animateAll();\n  },\n  /**\r\n   * Save the current sorting\r\n   */\n  save: function save() {\n    var store = this.options.store;\n    store && store.set && store.set(this);\n  },\n  /**\r\n   * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n   * @param   {HTMLElement}  el\r\n   * @param   {String}       [selector]  default: `options.draggable`\r\n   * @returns {HTMLElement|null}\r\n   */\n  closest: function closest$1(el, selector) {\n    return closest(el, selector || this.options.draggable, this.el, false);\n  },\n  /**\r\n   * Set/get option\r\n   * @param   {string} name\r\n   * @param   {*}      [value]\r\n   * @returns {*}\r\n   */\n  option: function option(name, value) {\n    var options = this.options;\n    if (value === void 0) {\n      return options[name];\n    } else {\n      var modifiedValue = PluginManager.modifyOption(this, name, value);\n      if (typeof modifiedValue !== 'undefined') {\n        options[name] = modifiedValue;\n      } else {\n        options[name] = value;\n      }\n      if (name === 'group') {\n        _prepareGroup(options);\n      }\n    }\n  },\n  /**\r\n   * Destroy\r\n   */\n  destroy: function destroy() {\n    pluginEvent('destroy', this);\n    var el = this.el;\n    el[expando] = null;\n    off(el, 'mousedown', this._onTapStart);\n    off(el, 'touchstart', this._onTapStart);\n    off(el, 'pointerdown', this._onTapStart);\n    if (this.nativeDraggable) {\n      off(el, 'dragover', this);\n      off(el, 'dragenter', this);\n    }\n    // Remove draggable attributes\n    Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n      el.removeAttribute('draggable');\n    });\n    this._onDrop();\n    this._disableDelayedDragEvents();\n    sortables.splice(sortables.indexOf(this.el), 1);\n    this.el = el = null;\n  },\n  _hideClone: function _hideClone() {\n    if (!cloneHidden) {\n      pluginEvent('hideClone', this);\n      if (Sortable.eventCanceled) return;\n      css(cloneEl, 'display', 'none');\n      if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n        cloneEl.parentNode.removeChild(cloneEl);\n      }\n      cloneHidden = true;\n    }\n  },\n  _showClone: function _showClone(putSortable) {\n    if (putSortable.lastPutMode !== 'clone') {\n      this._hideClone();\n      return;\n    }\n    if (cloneHidden) {\n      pluginEvent('showClone', this);\n      if (Sortable.eventCanceled) return;\n\n      // show clone at dragEl or original position\n      if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n        rootEl.insertBefore(cloneEl, dragEl);\n      } else if (nextEl) {\n        rootEl.insertBefore(cloneEl, nextEl);\n      } else {\n        rootEl.appendChild(cloneEl);\n      }\n      if (this.options.group.revertClone) {\n        this.animate(dragEl, cloneEl);\n      }\n      css(cloneEl, 'display', '');\n      cloneHidden = false;\n    }\n  }\n};\nfunction _globalDragOver( /**Event*/evt) {\n  if (evt.dataTransfer) {\n    evt.dataTransfer.dropEffect = 'move';\n  }\n  evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n  var evt,\n    sortable = fromEl[expando],\n    onMoveFn = sortable.options.onMove,\n    retVal;\n  // Support for new CustomEvent feature\n  if (window.CustomEvent && !IE11OrLess && !Edge) {\n    evt = new CustomEvent('move', {\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    evt = document.createEvent('Event');\n    evt.initEvent('move', true, true);\n  }\n  evt.to = toEl;\n  evt.from = fromEl;\n  evt.dragged = dragEl;\n  evt.draggedRect = dragRect;\n  evt.related = targetEl || toEl;\n  evt.relatedRect = targetRect || getRect(toEl);\n  evt.willInsertAfter = willInsertAfter;\n  evt.originalEvent = originalEvent;\n  fromEl.dispatchEvent(evt);\n  if (onMoveFn) {\n    retVal = onMoveFn.call(sortable, evt, originalEvent);\n  }\n  return retVal;\n}\nfunction _disableDraggable(el) {\n  el.draggable = false;\n}\nfunction _unsilent() {\n  _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n  var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n  var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n  var spacer = 10;\n  return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n  var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n  var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n  var spacer = 10;\n  return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n  var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n    targetLength = vertical ? targetRect.height : targetRect.width,\n    targetS1 = vertical ? targetRect.top : targetRect.left,\n    targetS2 = vertical ? targetRect.bottom : targetRect.right,\n    invert = false;\n  if (!invertSwap) {\n    // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n    if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n      // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n      // check if past first invert threshold on side opposite of lastDirection\n      if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n        // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n        pastFirstInvertThresh = true;\n      }\n      if (!pastFirstInvertThresh) {\n        // dragEl shadow (target move distance shadow)\n        if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n        : mouseOnAxis > targetS2 - targetMoveDistance) {\n          return -lastDirection;\n        }\n      } else {\n        invert = true;\n      }\n    } else {\n      // Regular\n      if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n        return _getInsertDirection(target);\n      }\n    }\n  }\n  invert = invert || invertSwap;\n  if (invert) {\n    // Invert of regular\n    if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n      return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n    }\n  }\n  return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param  {HTMLElement} target       The target whose position dragEl is being inserted at\r\n * @return {Number}                   Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n  if (index(dragEl) < index(target)) {\n    return 1;\n  } else {\n    return -1;\n  }\n}\n\n/**\r\n * Generate id\r\n * @param   {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n  var str = el.tagName + el.className + el.src + el.href + el.textContent,\n    i = str.length,\n    sum = 0;\n  while (i--) {\n    sum += str.charCodeAt(i);\n  }\n  return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n  savedInputChecked.length = 0;\n  var inputs = root.getElementsByTagName('input');\n  var idx = inputs.length;\n  while (idx--) {\n    var el = inputs[idx];\n    el.checked && savedInputChecked.push(el);\n  }\n}\nfunction _nextTick(fn) {\n  return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n  return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n  on(document, 'touchmove', function (evt) {\n    if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n      evt.preventDefault();\n    }\n  });\n}\n\n// Export utils\nSortable.utils = {\n  on: on,\n  off: off,\n  css: css,\n  find: find,\n  is: function is(el, selector) {\n    return !!closest(el, selector, el, false);\n  },\n  extend: extend,\n  throttle: throttle,\n  closest: closest,\n  toggleClass: toggleClass,\n  clone: clone,\n  index: index,\n  nextTick: _nextTick,\n  cancelNextTick: _cancelNextTick,\n  detectDirection: _detectDirection,\n  getChild: getChild,\n  expando: expando\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param  {HTMLElement} element The element\r\n * @return {Sortable|undefined}         The instance of Sortable\r\n */\nSortable.get = function (element) {\n  return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param  {...SortablePlugin|SortablePlugin[]} plugins       Plugins being mounted\r\n */\nSortable.mount = function () {\n  for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n    plugins[_key] = arguments[_key];\n  }\n  if (plugins[0].constructor === Array) plugins = plugins[0];\n  plugins.forEach(function (plugin) {\n    if (!plugin.prototype || !plugin.prototype.constructor) {\n      throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n    }\n    if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n    PluginManager.mount(plugin);\n  });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement}  el\r\n * @param {Object}      [options]\r\n */\nSortable.create = function (el, options) {\n  return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n  scrollEl,\n  scrollRootEl,\n  scrolling = false,\n  lastAutoScrollX,\n  lastAutoScrollY,\n  touchEvt$1,\n  pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n  function AutoScroll() {\n    this.defaults = {\n      scroll: true,\n      forceAutoScrollFallback: false,\n      scrollSensitivity: 30,\n      scrollSpeed: 10,\n      bubbleScroll: true\n    };\n\n    // Bind all private methods\n    for (var fn in this) {\n      if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n  }\n  AutoScroll.prototype = {\n    dragStarted: function dragStarted(_ref) {\n      var originalEvent = _ref.originalEvent;\n      if (this.sortable.nativeDraggable) {\n        on(document, 'dragover', this._handleAutoScroll);\n      } else {\n        if (this.options.supportPointer) {\n          on(document, 'pointermove', this._handleFallbackAutoScroll);\n        } else if (originalEvent.touches) {\n          on(document, 'touchmove', this._handleFallbackAutoScroll);\n        } else {\n          on(document, 'mousemove', this._handleFallbackAutoScroll);\n        }\n      }\n    },\n    dragOverCompleted: function dragOverCompleted(_ref2) {\n      var originalEvent = _ref2.originalEvent;\n      // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n      if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n        this._handleAutoScroll(originalEvent);\n      }\n    },\n    drop: function drop() {\n      if (this.sortable.nativeDraggable) {\n        off(document, 'dragover', this._handleAutoScroll);\n      } else {\n        off(document, 'pointermove', this._handleFallbackAutoScroll);\n        off(document, 'touchmove', this._handleFallbackAutoScroll);\n        off(document, 'mousemove', this._handleFallbackAutoScroll);\n      }\n      clearPointerElemChangedInterval();\n      clearAutoScrolls();\n      cancelThrottle();\n    },\n    nulling: function nulling() {\n      touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n      autoScrolls.length = 0;\n    },\n    _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n      this._handleAutoScroll(evt, true);\n    },\n    _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n      var _this = this;\n      var x = (evt.touches ? evt.touches[0] : evt).clientX,\n        y = (evt.touches ? evt.touches[0] : evt).clientY,\n        elem = document.elementFromPoint(x, y);\n      touchEvt$1 = evt;\n\n      // IE does not seem to have native autoscroll,\n      // Edge's autoscroll seems too conditional,\n      // MACOS Safari does not have autoscroll,\n      // Firefox and Chrome are good\n      if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n        autoScroll(evt, this.options, elem, fallback);\n\n        // Listener for pointer element change\n        var ogElemScroller = getParentAutoScrollElement(elem, true);\n        if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n          pointerElemChangedInterval && clearPointerElemChangedInterval();\n          // Detect for pointer elem change, emulating native DnD behaviour\n          pointerElemChangedInterval = setInterval(function () {\n            var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n            if (newElem !== ogElemScroller) {\n              ogElemScroller = newElem;\n              clearAutoScrolls();\n            }\n            autoScroll(evt, _this.options, newElem, fallback);\n          }, 10);\n          lastAutoScrollX = x;\n          lastAutoScrollY = y;\n        }\n      } else {\n        // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n        if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n          clearAutoScrolls();\n          return;\n        }\n        autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n      }\n    }\n  };\n  return _extends(AutoScroll, {\n    pluginName: 'scroll',\n    initializeByDefault: true\n  });\n}\nfunction clearAutoScrolls() {\n  autoScrolls.forEach(function (autoScroll) {\n    clearInterval(autoScroll.pid);\n  });\n  autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n  clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n  // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n  if (!options.scroll) return;\n  var x = (evt.touches ? evt.touches[0] : evt).clientX,\n    y = (evt.touches ? evt.touches[0] : evt).clientY,\n    sens = options.scrollSensitivity,\n    speed = options.scrollSpeed,\n    winScroller = getWindowScrollingElement();\n  var scrollThisInstance = false,\n    scrollCustomFn;\n\n  // New scroll root, set scrollEl\n  if (scrollRootEl !== rootEl) {\n    scrollRootEl = rootEl;\n    clearAutoScrolls();\n    scrollEl = options.scroll;\n    scrollCustomFn = options.scrollFn;\n    if (scrollEl === true) {\n      scrollEl = getParentAutoScrollElement(rootEl, true);\n    }\n  }\n  var layersOut = 0;\n  var currentParent = scrollEl;\n  do {\n    var el = currentParent,\n      rect = getRect(el),\n      top = rect.top,\n      bottom = rect.bottom,\n      left = rect.left,\n      right = rect.right,\n      width = rect.width,\n      height = rect.height,\n      canScrollX = void 0,\n      canScrollY = void 0,\n      scrollWidth = el.scrollWidth,\n      scrollHeight = el.scrollHeight,\n      elCSS = css(el),\n      scrollPosX = el.scrollLeft,\n      scrollPosY = el.scrollTop;\n    if (el === winScroller) {\n      canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n      canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n    } else {\n      canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n      canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n    }\n    var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n    var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n    if (!autoScrolls[layersOut]) {\n      for (var i = 0; i <= layersOut; i++) {\n        if (!autoScrolls[i]) {\n          autoScrolls[i] = {};\n        }\n      }\n    }\n    if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n      autoScrolls[layersOut].el = el;\n      autoScrolls[layersOut].vx = vx;\n      autoScrolls[layersOut].vy = vy;\n      clearInterval(autoScrolls[layersOut].pid);\n      if (vx != 0 || vy != 0) {\n        scrollThisInstance = true;\n        /* jshint loopfunc:true */\n        autoScrolls[layersOut].pid = setInterval(function () {\n          // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n          if (isFallback && this.layer === 0) {\n            Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n          }\n          var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n          var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n          if (typeof scrollCustomFn === 'function') {\n            if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n              return;\n            }\n          }\n          scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n        }.bind({\n          layer: layersOut\n        }), 24);\n      }\n    }\n    layersOut++;\n  } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n  scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n  var originalEvent = _ref.originalEvent,\n    putSortable = _ref.putSortable,\n    dragEl = _ref.dragEl,\n    activeSortable = _ref.activeSortable,\n    dispatchSortableEvent = _ref.dispatchSortableEvent,\n    hideGhostForTarget = _ref.hideGhostForTarget,\n    unhideGhostForTarget = _ref.unhideGhostForTarget;\n  if (!originalEvent) return;\n  var toSortable = putSortable || activeSortable;\n  hideGhostForTarget();\n  var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n  var target = document.elementFromPoint(touch.clientX, touch.clientY);\n  unhideGhostForTarget();\n  if (toSortable && !toSortable.el.contains(target)) {\n    dispatchSortableEvent('spill');\n    this.onSpill({\n      dragEl: dragEl,\n      putSortable: putSortable\n    });\n  }\n};\nfunction Revert() {}\nRevert.prototype = {\n  startIndex: null,\n  dragStart: function dragStart(_ref2) {\n    var oldDraggableIndex = _ref2.oldDraggableIndex;\n    this.startIndex = oldDraggableIndex;\n  },\n  onSpill: function onSpill(_ref3) {\n    var dragEl = _ref3.dragEl,\n      putSortable = _ref3.putSortable;\n    this.sortable.captureAnimationState();\n    if (putSortable) {\n      putSortable.captureAnimationState();\n    }\n    var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n    if (nextSibling) {\n      this.sortable.el.insertBefore(dragEl, nextSibling);\n    } else {\n      this.sortable.el.appendChild(dragEl);\n    }\n    this.sortable.animateAll();\n    if (putSortable) {\n      putSortable.animateAll();\n    }\n  },\n  drop: drop\n};\n_extends(Revert, {\n  pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n  onSpill: function onSpill(_ref4) {\n    var dragEl = _ref4.dragEl,\n      putSortable = _ref4.putSortable;\n    var parentSortable = putSortable || this.sortable;\n    parentSortable.captureAnimationState();\n    dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n    parentSortable.animateAll();\n  },\n  drop: drop\n};\n_extends(Remove, {\n  pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n  function Swap() {\n    this.defaults = {\n      swapClass: 'sortable-swap-highlight'\n    };\n  }\n  Swap.prototype = {\n    dragStart: function dragStart(_ref) {\n      var dragEl = _ref.dragEl;\n      lastSwapEl = dragEl;\n    },\n    dragOverValid: function dragOverValid(_ref2) {\n      var completed = _ref2.completed,\n        target = _ref2.target,\n        onMove = _ref2.onMove,\n        activeSortable = _ref2.activeSortable,\n        changed = _ref2.changed,\n        cancel = _ref2.cancel;\n      if (!activeSortable.options.swap) return;\n      var el = this.sortable.el,\n        options = this.options;\n      if (target && target !== el) {\n        var prevSwapEl = lastSwapEl;\n        if (onMove(target) !== false) {\n          toggleClass(target, options.swapClass, true);\n          lastSwapEl = target;\n        } else {\n          lastSwapEl = null;\n        }\n        if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n          toggleClass(prevSwapEl, options.swapClass, false);\n        }\n      }\n      changed();\n      completed(true);\n      cancel();\n    },\n    drop: function drop(_ref3) {\n      var activeSortable = _ref3.activeSortable,\n        putSortable = _ref3.putSortable,\n        dragEl = _ref3.dragEl;\n      var toSortable = putSortable || this.sortable;\n      var options = this.options;\n      lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n      if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n        if (dragEl !== lastSwapEl) {\n          toSortable.captureAnimationState();\n          if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n          swapNodes(dragEl, lastSwapEl);\n          toSortable.animateAll();\n          if (toSortable !== activeSortable) activeSortable.animateAll();\n        }\n      }\n    },\n    nulling: function nulling() {\n      lastSwapEl = null;\n    }\n  };\n  return _extends(Swap, {\n    pluginName: 'swap',\n    eventProperties: function eventProperties() {\n      return {\n        swapItem: lastSwapEl\n      };\n    }\n  });\n}\nfunction swapNodes(n1, n2) {\n  var p1 = n1.parentNode,\n    p2 = n2.parentNode,\n    i1,\n    i2;\n  if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n  i1 = index(n1);\n  i2 = index(n2);\n  if (p1.isEqualNode(p2) && i1 < i2) {\n    i2++;\n  }\n  p1.insertBefore(n2, p1.children[i1]);\n  p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n  multiDragClones = [],\n  lastMultiDragSelect,\n  // for selection with modifier key down (SHIFT)\n  multiDragSortable,\n  initialFolding = false,\n  // Initial multi-drag fold when drag started\n  folding = false,\n  // Folding any other time\n  dragStarted = false,\n  dragEl$1,\n  clonesFromRect,\n  clonesHidden;\nfunction MultiDragPlugin() {\n  function MultiDrag(sortable) {\n    // Bind all private methods\n    for (var fn in this) {\n      if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n    if (!sortable.options.avoidImplicitDeselect) {\n      if (sortable.options.supportPointer) {\n        on(document, 'pointerup', this._deselectMultiDrag);\n      } else {\n        on(document, 'mouseup', this._deselectMultiDrag);\n        on(document, 'touchend', this._deselectMultiDrag);\n      }\n    }\n    on(document, 'keydown', this._checkKeyDown);\n    on(document, 'keyup', this._checkKeyUp);\n    this.defaults = {\n      selectedClass: 'sortable-selected',\n      multiDragKey: null,\n      avoidImplicitDeselect: false,\n      setData: function setData(dataTransfer, dragEl) {\n        var data = '';\n        if (multiDragElements.length && multiDragSortable === sortable) {\n          multiDragElements.forEach(function (multiDragElement, i) {\n            data += (!i ? '' : ', ') + multiDragElement.textContent;\n          });\n        } else {\n          data = dragEl.textContent;\n        }\n        dataTransfer.setData('Text', data);\n      }\n    };\n  }\n  MultiDrag.prototype = {\n    multiDragKeyDown: false,\n    isMultiDrag: false,\n    delayStartGlobal: function delayStartGlobal(_ref) {\n      var dragged = _ref.dragEl;\n      dragEl$1 = dragged;\n    },\n    delayEnded: function delayEnded() {\n      this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n    },\n    setupClone: function setupClone(_ref2) {\n      var sortable = _ref2.sortable,\n        cancel = _ref2.cancel;\n      if (!this.isMultiDrag) return;\n      for (var i = 0; i < multiDragElements.length; i++) {\n        multiDragClones.push(clone(multiDragElements[i]));\n        multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n        multiDragClones[i].draggable = false;\n        multiDragClones[i].style['will-change'] = '';\n        toggleClass(multiDragClones[i], this.options.selectedClass, false);\n        multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n      }\n      sortable._hideClone();\n      cancel();\n    },\n    clone: function clone(_ref3) {\n      var sortable = _ref3.sortable,\n        rootEl = _ref3.rootEl,\n        dispatchSortableEvent = _ref3.dispatchSortableEvent,\n        cancel = _ref3.cancel;\n      if (!this.isMultiDrag) return;\n      if (!this.options.removeCloneOnHide) {\n        if (multiDragElements.length && multiDragSortable === sortable) {\n          insertMultiDragClones(true, rootEl);\n          dispatchSortableEvent('clone');\n          cancel();\n        }\n      }\n    },\n    showClone: function showClone(_ref4) {\n      var cloneNowShown = _ref4.cloneNowShown,\n        rootEl = _ref4.rootEl,\n        cancel = _ref4.cancel;\n      if (!this.isMultiDrag) return;\n      insertMultiDragClones(false, rootEl);\n      multiDragClones.forEach(function (clone) {\n        css(clone, 'display', '');\n      });\n      cloneNowShown();\n      clonesHidden = false;\n      cancel();\n    },\n    hideClone: function hideClone(_ref5) {\n      var _this = this;\n      var sortable = _ref5.sortable,\n        cloneNowHidden = _ref5.cloneNowHidden,\n        cancel = _ref5.cancel;\n      if (!this.isMultiDrag) return;\n      multiDragClones.forEach(function (clone) {\n        css(clone, 'display', 'none');\n        if (_this.options.removeCloneOnHide && clone.parentNode) {\n          clone.parentNode.removeChild(clone);\n        }\n      });\n      cloneNowHidden();\n      clonesHidden = true;\n      cancel();\n    },\n    dragStartGlobal: function dragStartGlobal(_ref6) {\n      var sortable = _ref6.sortable;\n      if (!this.isMultiDrag && multiDragSortable) {\n        multiDragSortable.multiDrag._deselectMultiDrag();\n      }\n      multiDragElements.forEach(function (multiDragElement) {\n        multiDragElement.sortableIndex = index(multiDragElement);\n      });\n\n      // Sort multi-drag elements\n      multiDragElements = multiDragElements.sort(function (a, b) {\n        return a.sortableIndex - b.sortableIndex;\n      });\n      dragStarted = true;\n    },\n    dragStarted: function dragStarted(_ref7) {\n      var _this2 = this;\n      var sortable = _ref7.sortable;\n      if (!this.isMultiDrag) return;\n      if (this.options.sort) {\n        // Capture rects,\n        // hide multi drag elements (by positioning them absolute),\n        // set multi drag elements rects to dragRect,\n        // show multi drag elements,\n        // animate to rects,\n        // unset rects & remove from DOM\n\n        sortable.captureAnimationState();\n        if (this.options.animation) {\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            css(multiDragElement, 'position', 'absolute');\n          });\n          var dragRect = getRect(dragEl$1, false, true, true);\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            setRect(multiDragElement, dragRect);\n          });\n          folding = true;\n          initialFolding = true;\n        }\n      }\n      sortable.animateAll(function () {\n        folding = false;\n        initialFolding = false;\n        if (_this2.options.animation) {\n          multiDragElements.forEach(function (multiDragElement) {\n            unsetRect(multiDragElement);\n          });\n        }\n\n        // Remove all auxiliary multidrag items from el, if sorting enabled\n        if (_this2.options.sort) {\n          removeMultiDragElements();\n        }\n      });\n    },\n    dragOver: function dragOver(_ref8) {\n      var target = _ref8.target,\n        completed = _ref8.completed,\n        cancel = _ref8.cancel;\n      if (folding && ~multiDragElements.indexOf(target)) {\n        completed(false);\n        cancel();\n      }\n    },\n    revert: function revert(_ref9) {\n      var fromSortable = _ref9.fromSortable,\n        rootEl = _ref9.rootEl,\n        sortable = _ref9.sortable,\n        dragRect = _ref9.dragRect;\n      if (multiDragElements.length > 1) {\n        // Setup unfold animation\n        multiDragElements.forEach(function (multiDragElement) {\n          sortable.addAnimationState({\n            target: multiDragElement,\n            rect: folding ? getRect(multiDragElement) : dragRect\n          });\n          unsetRect(multiDragElement);\n          multiDragElement.fromRect = dragRect;\n          fromSortable.removeAnimationState(multiDragElement);\n        });\n        folding = false;\n        insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n      }\n    },\n    dragOverCompleted: function dragOverCompleted(_ref10) {\n      var sortable = _ref10.sortable,\n        isOwner = _ref10.isOwner,\n        insertion = _ref10.insertion,\n        activeSortable = _ref10.activeSortable,\n        parentEl = _ref10.parentEl,\n        putSortable = _ref10.putSortable;\n      var options = this.options;\n      if (insertion) {\n        // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n        if (isOwner) {\n          activeSortable._hideClone();\n        }\n        initialFolding = false;\n        // If leaving sort:false root, or already folding - Fold to new location\n        if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n          // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n          var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            setRect(multiDragElement, dragRectAbsolute);\n\n            // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n            // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n            parentEl.appendChild(multiDragElement);\n          });\n          folding = true;\n        }\n\n        // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n        if (!isOwner) {\n          // Only remove if not folding (folding will remove them anyways)\n          if (!folding) {\n            removeMultiDragElements();\n          }\n          if (multiDragElements.length > 1) {\n            var clonesHiddenBefore = clonesHidden;\n            activeSortable._showClone(sortable);\n\n            // Unfold animation for clones if showing from hidden\n            if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n              multiDragClones.forEach(function (clone) {\n                activeSortable.addAnimationState({\n                  target: clone,\n                  rect: clonesFromRect\n                });\n                clone.fromRect = clonesFromRect;\n                clone.thisAnimationDuration = null;\n              });\n            }\n          } else {\n            activeSortable._showClone(sortable);\n          }\n        }\n      }\n    },\n    dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n      var dragRect = _ref11.dragRect,\n        isOwner = _ref11.isOwner,\n        activeSortable = _ref11.activeSortable;\n      multiDragElements.forEach(function (multiDragElement) {\n        multiDragElement.thisAnimationDuration = null;\n      });\n      if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n        clonesFromRect = _extends({}, dragRect);\n        var dragMatrix = matrix(dragEl$1, true);\n        clonesFromRect.top -= dragMatrix.f;\n        clonesFromRect.left -= dragMatrix.e;\n      }\n    },\n    dragOverAnimationComplete: function dragOverAnimationComplete() {\n      if (folding) {\n        folding = false;\n        removeMultiDragElements();\n      }\n    },\n    drop: function drop(_ref12) {\n      var evt = _ref12.originalEvent,\n        rootEl = _ref12.rootEl,\n        parentEl = _ref12.parentEl,\n        sortable = _ref12.sortable,\n        dispatchSortableEvent = _ref12.dispatchSortableEvent,\n        oldIndex = _ref12.oldIndex,\n        putSortable = _ref12.putSortable;\n      var toSortable = putSortable || this.sortable;\n      if (!evt) return;\n      var options = this.options,\n        children = parentEl.children;\n\n      // Multi-drag selection\n      if (!dragStarted) {\n        if (options.multiDragKey && !this.multiDragKeyDown) {\n          this._deselectMultiDrag();\n        }\n        toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n        if (!~multiDragElements.indexOf(dragEl$1)) {\n          multiDragElements.push(dragEl$1);\n          dispatchEvent({\n            sortable: sortable,\n            rootEl: rootEl,\n            name: 'select',\n            targetEl: dragEl$1,\n            originalEvent: evt\n          });\n\n          // Modifier activated, select from last to dragEl\n          if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n            var lastIndex = index(lastMultiDragSelect),\n              currentIndex = index(dragEl$1);\n            if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n              (function () {\n                // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n                // (but previous selection existed)\n                var n, i;\n                if (currentIndex > lastIndex) {\n                  i = lastIndex;\n                  n = currentIndex;\n                } else {\n                  i = currentIndex;\n                  n = lastIndex + 1;\n                }\n                var filter = options.filter;\n                for (; i < n; i++) {\n                  if (~multiDragElements.indexOf(children[i])) continue;\n                  // Check if element is draggable\n                  if (!closest(children[i], options.draggable, parentEl, false)) continue;\n                  // Check if element is filtered\n                  var filtered = filter && (typeof filter === 'function' ? filter.call(sortable, evt, children[i], sortable) : filter.split(',').some(function (criteria) {\n                    return closest(children[i], criteria.trim(), parentEl, false);\n                  }));\n                  if (filtered) continue;\n                  toggleClass(children[i], options.selectedClass, true);\n                  multiDragElements.push(children[i]);\n                  dispatchEvent({\n                    sortable: sortable,\n                    rootEl: rootEl,\n                    name: 'select',\n                    targetEl: children[i],\n                    originalEvent: evt\n                  });\n                }\n              })();\n            }\n          } else {\n            lastMultiDragSelect = dragEl$1;\n          }\n          multiDragSortable = toSortable;\n        } else {\n          multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n          lastMultiDragSelect = null;\n          dispatchEvent({\n            sortable: sortable,\n            rootEl: rootEl,\n            name: 'deselect',\n            targetEl: dragEl$1,\n            originalEvent: evt\n          });\n        }\n      }\n\n      // Multi-drag drop\n      if (dragStarted && this.isMultiDrag) {\n        folding = false;\n        // Do not \"unfold\" after around dragEl if reverted\n        if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n          var dragRect = getRect(dragEl$1),\n            multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n          if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n          toSortable.captureAnimationState();\n          if (!initialFolding) {\n            if (options.animation) {\n              dragEl$1.fromRect = dragRect;\n              multiDragElements.forEach(function (multiDragElement) {\n                multiDragElement.thisAnimationDuration = null;\n                if (multiDragElement !== dragEl$1) {\n                  var rect = folding ? getRect(multiDragElement) : dragRect;\n                  multiDragElement.fromRect = rect;\n\n                  // Prepare unfold animation\n                  toSortable.addAnimationState({\n                    target: multiDragElement,\n                    rect: rect\n                  });\n                }\n              });\n            }\n\n            // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n            // properly they must all be removed\n            removeMultiDragElements();\n            multiDragElements.forEach(function (multiDragElement) {\n              if (children[multiDragIndex]) {\n                parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n              } else {\n                parentEl.appendChild(multiDragElement);\n              }\n              multiDragIndex++;\n            });\n\n            // If initial folding is done, the elements may have changed position because they are now\n            // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n            // must be fired here as Sortable will not.\n            if (oldIndex === index(dragEl$1)) {\n              var update = false;\n              multiDragElements.forEach(function (multiDragElement) {\n                if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n                  update = true;\n                  return;\n                }\n              });\n              if (update) {\n                dispatchSortableEvent('update');\n                dispatchSortableEvent('sort');\n              }\n            }\n          }\n\n          // Must be done after capturing individual rects (scroll bar)\n          multiDragElements.forEach(function (multiDragElement) {\n            unsetRect(multiDragElement);\n          });\n          toSortable.animateAll();\n        }\n        multiDragSortable = toSortable;\n      }\n\n      // Remove clones if necessary\n      if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n        multiDragClones.forEach(function (clone) {\n          clone.parentNode && clone.parentNode.removeChild(clone);\n        });\n      }\n    },\n    nullingGlobal: function nullingGlobal() {\n      this.isMultiDrag = dragStarted = false;\n      multiDragClones.length = 0;\n    },\n    destroyGlobal: function destroyGlobal() {\n      this._deselectMultiDrag();\n      off(document, 'pointerup', this._deselectMultiDrag);\n      off(document, 'mouseup', this._deselectMultiDrag);\n      off(document, 'touchend', this._deselectMultiDrag);\n      off(document, 'keydown', this._checkKeyDown);\n      off(document, 'keyup', this._checkKeyUp);\n    },\n    _deselectMultiDrag: function _deselectMultiDrag(evt) {\n      if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n      // Only deselect if selection is in this sortable\n      if (multiDragSortable !== this.sortable) return;\n\n      // Only deselect if target is not item in this sortable\n      if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n      // Only deselect if left click\n      if (evt && evt.button !== 0) return;\n      while (multiDragElements.length) {\n        var el = multiDragElements[0];\n        toggleClass(el, this.options.selectedClass, false);\n        multiDragElements.shift();\n        dispatchEvent({\n          sortable: this.sortable,\n          rootEl: this.sortable.el,\n          name: 'deselect',\n          targetEl: el,\n          originalEvent: evt\n        });\n      }\n    },\n    _checkKeyDown: function _checkKeyDown(evt) {\n      if (evt.key === this.options.multiDragKey) {\n        this.multiDragKeyDown = true;\n      }\n    },\n    _checkKeyUp: function _checkKeyUp(evt) {\n      if (evt.key === this.options.multiDragKey) {\n        this.multiDragKeyDown = false;\n      }\n    }\n  };\n  return _extends(MultiDrag, {\n    // Static methods & properties\n    pluginName: 'multiDrag',\n    utils: {\n      /**\r\n       * Selects the provided multi-drag item\r\n       * @param  {HTMLElement} el    The element to be selected\r\n       */\n      select: function select(el) {\n        var sortable = el.parentNode[expando];\n        if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n        if (multiDragSortable && multiDragSortable !== sortable) {\n          multiDragSortable.multiDrag._deselectMultiDrag();\n          multiDragSortable = sortable;\n        }\n        toggleClass(el, sortable.options.selectedClass, true);\n        multiDragElements.push(el);\n      },\n      /**\r\n       * Deselects the provided multi-drag item\r\n       * @param  {HTMLElement} el    The element to be deselected\r\n       */\n      deselect: function deselect(el) {\n        var sortable = el.parentNode[expando],\n          index = multiDragElements.indexOf(el);\n        if (!sortable || !sortable.options.multiDrag || !~index) return;\n        toggleClass(el, sortable.options.selectedClass, false);\n        multiDragElements.splice(index, 1);\n      }\n    },\n    eventProperties: function eventProperties() {\n      var _this3 = this;\n      var oldIndicies = [],\n        newIndicies = [];\n      multiDragElements.forEach(function (multiDragElement) {\n        oldIndicies.push({\n          multiDragElement: multiDragElement,\n          index: multiDragElement.sortableIndex\n        });\n\n        // multiDragElements will already be sorted if folding\n        var newIndex;\n        if (folding && multiDragElement !== dragEl$1) {\n          newIndex = -1;\n        } else if (folding) {\n          newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n        } else {\n          newIndex = index(multiDragElement);\n        }\n        newIndicies.push({\n          multiDragElement: multiDragElement,\n          index: newIndex\n        });\n      });\n      return {\n        items: _toConsumableArray(multiDragElements),\n        clones: [].concat(multiDragClones),\n        oldIndicies: oldIndicies,\n        newIndicies: newIndicies\n      };\n    },\n    optionListeners: {\n      multiDragKey: function multiDragKey(key) {\n        key = key.toLowerCase();\n        if (key === 'ctrl') {\n          key = 'Control';\n        } else if (key.length > 1) {\n          key = key.charAt(0).toUpperCase() + key.substr(1);\n        }\n        return key;\n      }\n    }\n  });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n  multiDragElements.forEach(function (multiDragElement, i) {\n    var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n    if (target) {\n      rootEl.insertBefore(multiDragElement, target);\n    } else {\n      rootEl.appendChild(multiDragElement);\n    }\n  });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param  {[Boolean]} elementsInserted  Whether the multi-drag elements are inserted\r\n * @param  {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n  multiDragClones.forEach(function (clone, i) {\n    var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n    if (target) {\n      rootEl.insertBefore(clone, target);\n    } else {\n      rootEl.appendChild(clone);\n    }\n  });\n}\nfunction removeMultiDragElements() {\n  multiDragElements.forEach(function (multiDragElement) {\n    if (multiDragElement === dragEl$1) return;\n    multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n  });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n", "import { Controller } from '@hotwired/stimulus'\nimport Sortable from 'sortablejs'\n\n// Connects to data-controller=\"sortable\"\nexport default class extends Controller {\n  static targets = [\n    'modal',\n    'moveButton',\n    'moveInput',\n    'hideable',\n    'number',\n    'modalAppend',\n    'moveToButton'\n  ]\n  connect () {\n    const sortableContainerId = this.element.id\n    const isDefault = this.element.dataset.isDefault === 'true'\n    new Sortable(this.element, {\n      group: {\n        name: 'shared',\n        put: !(sortableContainerId === 'left' && isDefault)\n      },\n      sort: sortableContainerId !== 'left',\n      animation: 150,\n      onAdd: this.onAdd.bind(this),\n      onUpdate: this.onUpdate.bind(this),\n      onRemove: this.onRemove.bind(this)\n    })\n  }\n\n  getToken () {\n    return document.getElementsByName('csrf-token')[0].content\n  }\n\n  fetchData (updatePath, body) {\n    const token = this.getToken()\n    fetch(updatePath, {\n      method: 'PATCH',\n      body: JSON.stringify({\n        customer_group: body\n      }),\n      headers: {\n        Accept: 'text/vnd.turbo-stream.html',\n        'Content-Type': 'application/json',\n        'X-CSRF-Token': token\n      }\n    })\n      .then(response => response.text())\n      .then(html => {\n        if (html.includes('Invalid position provided')) {\n          window.location.reload();\n        } else {\n          Turbo.renderStreamMessage(html)\n        }\n      })\n  }\n\n  onAdd (event) {\n    if (event.to.id === 'right' && event.from.id === 'left') {\n      const updatePath = this.element.dataset.updateUrl\n      const body = {\n        customer_ids: [event.item.dataset.customerId]\n      }\n\n      this.fetchData(updatePath, body)\n    }else{\n      if(event.to.id === 'right' && event.from.id === 'right'){\n        event.item.parentNode.removeChild(event.item);\n        event.from.appendChild(event.item);\n      }\n    }\n  }\n\n  onRemove (event) {\n    if (event.from.id === 'right' && event.to.id === 'left') {\n      const updatePath = this.element.dataset.updateUrl\n      const body = {\n        remove_customer_ids: [event.item.dataset.customerId]\n      }\n\n      this.fetchData(updatePath, body)\n    }\n  }\n  \n  onUpdate (event) {\n    const customerId = event.item.dataset.customerId\n    const position = event.newIndex + 1\n    this.updateCustomerPosition(customerId, position)\n  }\n\n  updateCustomerPosition (customerId, position) {\n    const updatePath = this.element.dataset.updateUrl\n    const body = {\n      customer_positions: [\n        {\n          customer_id: customerId,\n          position: position\n        }\n      ]\n    }\n    this.fetchData(updatePath, body)\n  }\n\n  updateMovePosition (event) {\n    event.currentTarget.dataset.position = this.numberTarget.value\n    this.updatePosition(event)\n  }\n\n  updatePosition (event) {\n    const customerId =\n      event.currentTarget.closest('#modalInsert').dataset.customerId\n    const position = parseInt(event.currentTarget.dataset.position)\n    this.updateCustomerPosition(customerId, position)\n  }\n\n  toggleModal (event) {\n    this.modalTarget.classList.toggle('hidden')\n\n    let modalElement = event.currentTarget.nextElementSibling\n    let customerId = modalElement.dataset.customerId\n    modalElement.appendChild(this.modalTarget)\n\n    let numberField = this.numberTarget\n    numberField.value = modalElement.dataset.position\n    numberField.id = customerId\n\n    let numberChangeButtons =\n      numberField.parentNode.querySelectorAll('.change-number')\n    numberChangeButtons.forEach(el => {\n      el.dataset.id = customerId\n    })\n    this.updateElementsVisibility(true, false)\n    this.toggleButtonsVisibility(false, true)\n  }\n\n  hideModal () {\n    if (this.moveInputTarget.classList.contains('hidden')) {\n      let modalTarget = this.modalTarget\n      modalTarget.classList.add('hidden')\n      this.modalTarget.parentNode.removeChild(modalTarget)\n      this.modalAppendTarget.appendChild(modalTarget)\n\n      this.moveInputTarget.classList.add('hidden')\n    } else {\n      this.updateElementsVisibility(true, false)\n      this.toggleButtonsVisibility(false, true)\n    }\n  }\n\n  showMoveInput () {\n    this.updateElementsVisibility(false, true)\n    this.toggleButtonsVisibility(true, false)\n  }\n\n  toggleButtonsVisibility (moveToButtonVisible, moveButtonVisible) {\n    this.moveToButtonTarget.classList.toggle('hidden', moveToButtonVisible)\n    this.moveButtonTarget.classList.toggle('hidden', moveButtonVisible)\n  }\n\n  updateElementsVisibility (moveInputVisible, hideableVisible) {\n    this.moveInputTarget.classList.toggle('hidden', moveInputVisible)\n    this.hideableTargets.forEach(el => {\n      el.classList.toggle('hidden', hideableVisible)\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"scroll\"\nexport default class extends Controller {\n  connect() {\n    if (this.element.dataset.scrollOnConnect == 'true') {\n      this.triggerScroll();\n    }\n  }\n  triggerScroll() {\n    const targetId = this.element.getAttribute(\"data-target-id\");\n    if (targetId) {\n      const targetSection = document.getElementById(targetId);\n      targetSection.scrollIntoView({ behavior: 'smooth' });\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"settings-nav\" (Ui::SettingsNavComponent).\n// Sections load into a turbo frame without a URL change, so the selected\n// highlight is kept client-side: exactly one item carries .pp-set-active.\nexport default class extends Controller {\n  static targets = [\"item\"]\n\n  select(event) {\n    const link = event.target.closest('[data-settings-nav-target=\"item\"]')\n    if (!link) return\n\n    this.itemTargets.forEach((el) => {\n      el.classList.toggle(\"pp-set-active\", el === link)\n      el.toggleAttribute(\"aria-current\", el === link)\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = ['numOfCustomers', 'planType']\n\n  connect() {\n\n  }\n\n  updateNumOfCustomersAndPlanType(event) {\n    const selectedValue = event.target.value;\n\n    if (selectedValue === 'Web App') {\n      this.numOfCustomersTarget.classList.add(\"hidden\");\n      if(this.hasPlanTypeTarget){\n        this.updatePlanTypeForWebApp();\n      }\n    } else {\n      this.numOfCustomersTarget.classList.remove(\"hidden\");\n      if(this.hasPlanTypeTarget){\n        this.updatePlanTypeForMobileApp();\n      }\n    }\n  }\n\n  updatePlanTypeForWebApp() {\n    // Add \"Quarterly\" and \"Half Yearly\" to plan type options for Web App\n    this.planTypeTarget.innerHTML = `\n      <option value=\"0\">Monthly</option>\n      <option value=\"2\">Quarterly</option>\n      <option value=\"3\">Half Yearly</option>\n      <option value=\"1\">Yearly</option>\n    `;\n  }\n\n  updatePlanTypeForMobileApp() {\n    // Only show \"Monthly\" and \"Yearly\" for Mobile App\n    this.planTypeTarget.innerHTML = `\n      <option value=\"0\">Monthly</option>\n      <option value=\"1\">Yearly</option>\n      <option value=\"2\">Two Yearly</option>\n      <option value=\"3\">Three Yearly</option>\n    `;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"user-permission\"\nexport default class extends Controller {\n  static targets = ['allowedCreateBackDays',\n                    'allowedUpdateBackDays',\n                    'createCheckBox',\n                    'updateCheckBox',\n                    'createInputBox',\n                    'updateInputBox',\n                    'createPermissionAlert',\n                    'updatePermissionAlert',\n                    'qrCodeDelivery',\n                    'manualDelivery',\n                    \"days\",\n                    \"hours\",\n                    \"minutes\",\n                    \"totalMinutes\"];\n  connect() {\n    this.create();\n    this.update();\n  }\n  create() {\n    const checkbox = this.createCheckBoxTarget;\n    const backDaysTarget = this.allowedCreateBackDaysTarget;\n    const labelTarget = this.createPermissionAlertTarget;\n    if (checkbox.checked) {\n      backDaysTarget.classList.remove('hidden');\n      this.createPermissionAlertTarget.classList.remove('hidden');\n      this.showQrAndManualDeliveryCheckbox();\n      this.showDates(labelTarget, 'create')\n    } else {\n      backDaysTarget.classList.add('hidden');\n      this.createPermissionAlertTarget.classList.add('hidden');\n      this.hideQrAndManualDeliveryCheckbox();\n    }\n  }\n  update() {\n    const checkbox = this.updateCheckBoxTarget;\n    const backDaysTarget = this.allowedUpdateBackDaysTarget;\n    if (checkbox.checked) {\n      backDaysTarget.classList.remove('hidden');\n      this.updatePermissionAlertTarget.classList.remove('hidden');\n      this.showQrAndManualDeliveryCheckbox();\n      this.showUpdatePermissionAlert()\n    } else {\n      backDaysTarget.classList.add('hidden');\n      this.updatePermissionAlertTarget.classList.add('hidden');\n      this.hideQrAndManualDeliveryCheckbox();\n    }\n  }\n  createIncrement() {\n    const inputTarget = this.createInputBoxTarget;\n    if (parseInt(inputTarget.value) < 90) {\n      inputTarget.stepUp();\n      const labelTarget = this.createPermissionAlertTarget;\n      this.showDates(labelTarget, 'create');\n    }\n  }\n  createDecrement(){\n    this.createInputBoxTarget.stepDown();\n    const labelTarget = this.createPermissionAlertTarget;\n    this.showDates(labelTarget, 'create');\n  }\n\n  showDates(target, action){\n    if (action == 'create') {\n      var days = parseInt(this.createInputBoxTarget.value);\n    } else {\n      var days = parseInt(this.updateInputBoxTarget.value);\n    }\n    const todaysDate = this.formattedDate(new Date);\n    const startDate = this.formattedDate(new Date(Date.now() - days * 24 * 60 * 60 * 1000));\n    this.updateLabelText(target, action, startDate, todaysDate );\n  }\n\n  formattedDate(date){\n   return date.toLocaleDateString('en-GB', { day: '2-digit', month: '2-digit', year: 'numeric' });\n  }\n\n  updateLabelText(target, action, startDate, todaysDate ){\n    target.innerHTML = `Allowed to ${action} deliveries entries from ${startDate} to ${todaysDate}`\n  }\n\n  updateDateLabel(event) {\n    const backDays = event.target.value;\n    if (backDays <= 90) {\n      const actionType = event.target.dataset.actionName;\n      const labelTarget = actionType == \"create\" ? this.createPermissionAlertTarget : this.updatePermissionAlertTarget;\n\n      const todaysDate = this.formattedDate(new Date);\n      const startDate = this.formattedDate(new Date(Date.now() - backDays * 24 * 60 * 60 * 1000));\n      this.updateLabelText(labelTarget, actionType, startDate, todaysDate);\n    }\n  }\n\n  showQrAndManualDeliveryCheckbox() {\n    this.qrCodeDeliveryTarget.classList.remove('hidden');\n    this.manualDeliveryTarget.classList.remove('hidden');\n  }\n\n  hideQrAndManualDeliveryCheckbox() {\n    if (!this.createCheckBoxTarget.checked && !this.updateCheckBoxTarget.checked) {\n      this.qrCodeDeliveryTarget.classList.add('hidden');\n      this.manualDeliveryTarget.classList.add('hidden');\n    }\n  }\n\n  validate(event){\n    const parentContainer = event.currentTarget.closest('.parent-container');\n    const inputFields = parentContainer.querySelectorAll('input');\n    const actionName = event.target.name.slice(-5,-1);\n    if (actionName == \"read\" && !event.target.checked) {\n      inputFields.forEach(el=>{\n        if (el.type == \"checkbox\") {\n          el.checked=false;\n        }\n      })\n      this.create();\n      this.update();\n    } else if(actionName != \"read\") {\n      for (let i = 0; i < inputFields.length; i++) {\n        let el = inputFields[i];\n        if (el.type == \"checkbox\" && event.target.checked) {\n          el.checked = true;\n          return;\n        }\n      }\n    }\n  }\n\n  validateDeliveryPermission(event){\n    const createCheckbox = this.createCheckBoxTarget;\n    const updateCheckbox = this.updateCheckBoxTarget;\n    const qrCheckBox = this.element.querySelector('#user_jar_transaction_by_qr_code');\n    const manualCheckBox = this.element.querySelector('#user_jar_transaction_by_manually');\n\n    if ((createCheckbox.checked || updateCheckbox.checked) && !(qrCheckBox.checked || manualCheckBox.checked)) {\n      window.alert(\"Enable QR code or manual delivery permissions for create or update jar transaction permissions.\");\n      event.preventDefault();\n    }\n\n  }\n\n  getTimeValues() {\n    const getValue = (target) => parseInt(target?.value || 0, 10)\n\n    return {\n      days: getValue(this.daysTarget),\n      hours: getValue(this.hoursTarget),\n      minutes: getValue(this.minutesTarget)\n    }\n  }\n\n  calculateMinutes() {\n    const { days, hours, minutes } = this.getTimeValues()\n\n    this.totalMinutesTarget.value =\n      (days * 24 * 60) +\n      (hours * 60) +\n      minutes\n  }\n\n  showUpdatePermissionAlert() {\n    const { days, hours, minutes } = this.getTimeValues()\n    const labelTarget = this.updatePermissionAlertTarget\n\n    if (days === 0 && hours === 0 && minutes === 0) {\n      labelTarget.innerHTML =\n        `Allowed to update delivery entries 1 day after delivery date`\n      return\n    }\n\n    labelTarget.innerHTML =\n      `Allowed to update delivery entries ${days} day ${hours} hour ${minutes} minute after delivery date`\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"verify-otp\"\n//\n// Resend throttling (persisted in localStorage so it survives the modal\n// re-rendering on every resend/verify, and page reloads):\n//   - 60s cooldown between resends\n//   - after MAX_RESENDS resends, lock the resend link for 30 min\n// State is keyed by the target mobile number (data-verify-otp-key-value).\nexport default class extends Controller {\n  static targets = [\"verifyButton\", \"resendButton\", \"errorLabel\", \"timer\"]\n  static values = { key: String }\n\n  COOLDOWN_MS = 60 * 1000        // 1 min between resends\n  MAX_RESENDS = 3                // lock after this many resends\n  LOCK_MS = 30 * 60 * 1000       // 30 min lock\n\n  connect() {\n    this.refresh()\n    this.intervalId = setInterval(() => this.refresh(), 1000)\n  }\n\n  disconnect() {\n    if (this.intervalId) clearInterval(this.intervalId)\n  }\n\n  // ----- OTP length validation (verify button) --------------------------\n  validateLength(event) {\n    if (event.target.value.length >= 6) {\n      this.verifyButtonTarget.disabled = false\n      this.errorLabelTarget.innerHTML = \"\"\n      event.target.classList.remove(\"border-red-500\")\n    } else {\n      this.errorLabelTarget.innerHTML = \"Please enter 6 digits OTP\"\n      event.target.classList.add(\"border-red-500\")\n      this.verifyButtonTarget.disabled = true\n    }\n  }\n\n  // ----- Resend throttling ----------------------------------------------\n  storageKey() {\n    return `otp_resend_${this.hasKeyValue && this.keyValue ? this.keyValue : \"default\"}`\n  }\n\n  readState() {\n    try {\n      const raw = localStorage.getItem(this.storageKey())\n      if (raw) return JSON.parse(raw)\n    } catch (e) { /* ignore */ }\n    return { count: 0, lastResendAt: 0, lockedUntil: 0 }\n  }\n\n  writeState(state) {\n    try { localStorage.setItem(this.storageKey(), JSON.stringify(state)) } catch (e) { /* ignore */ }\n  }\n\n  // Fires on resend click, before Turbo navigates. The link is only clickable\n  // when enabled (cooldown/lock apply pointer-events-none), so reaching here\n  // means a resend is allowed: record it and arm the lock on the last one.\n  recordResend() {\n    const state = this.readState()\n    const now = Date.now()\n    state.count = (state.count || 0) + 1\n    state.lastResendAt = now\n    if (state.count >= this.MAX_RESENDS) state.lockedUntil = now + this.LOCK_MS\n    this.writeState(state)\n  }\n\n  // Recompute resend link state from storage + wall clock (runs every second).\n  refresh() {\n    if (!this.hasResendButtonTarget) return\n    let state = this.readState()\n    const now = Date.now()\n\n    // Expired lock, or a long-idle counter \u2192 reset to a clean slate.\n    if (state.lockedUntil && now >= state.lockedUntil) {\n      state = { count: 0, lastResendAt: 0, lockedUntil: 0 }\n      this.writeState(state)\n    } else if (!state.lockedUntil && state.lastResendAt && now - state.lastResendAt > this.LOCK_MS) {\n      state = { count: 0, lastResendAt: 0, lockedUntil: 0 }\n      this.writeState(state)\n    }\n\n    if (state.lockedUntil && now < state.lockedUntil) {\n      this.setResend(false)\n      this.setTimer(`Too many attempts. Try again in ${this.fmt(state.lockedUntil - now)}`, true)\n    } else if (state.lastResendAt && now < state.lastResendAt + this.COOLDOWN_MS) {\n      this.setResend(false)\n      this.setTimer(`Resend available in ${this.fmt(state.lastResendAt + this.COOLDOWN_MS - now)}`, false)\n    } else {\n      this.setResend(true)\n      this.setTimer(\"\", false)\n    }\n  }\n\n  fmt(ms) {\n    const total = Math.max(0, Math.ceil(ms / 1000))\n    const m = Math.floor(total / 60)\n    const s = total % 60\n    return `${m}:${String(s).padStart(2, \"0\")}`\n  }\n\n  setResend(enabled) {\n    const link = this.resendButtonTarget\n    if (enabled) {\n      link.classList.remove(\"pointer-events-none\", \"opacity-50\", \"cursor-not-allowed\")\n      if (link.dataset.originalhref) link.setAttribute(\"href\", link.dataset.originalhref)\n    } else {\n      link.classList.add(\"pointer-events-none\", \"opacity-50\", \"cursor-not-allowed\")\n      link.removeAttribute(\"href\")\n    }\n  }\n\n  setTimer(text, locked) {\n    if (!this.hasTimerTarget) return\n    this.timerTarget.textContent = text\n    this.timerTarget.classList.toggle(\"hidden\", text === \"\")\n    this.timerTarget.classList.toggle(\"text-[color:var(--pp-error)]\", locked)\n    this.timerTarget.classList.toggle(\"text-[color:var(--pp-text-muted)]\", !locked)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Connects to data-controller=\"products\"\nexport default class extends Controller {\n  static targets = ['hideable', 'up_arrow_hideable', 'down_arrow_hideable', 'div_hideable']\n\n  connect () {\n    this.hideableTargets.forEach(el => {\n      if (el.dataset.initialHidden == 'true') {\n        el.hidden = true\n        el.classList.add('hidden')\n      } else {\n        el.hidden = false\n        el.classList.remove('hidden')\n      }\n    })\n\n    this.div_hideableTargets.forEach(el => {\n      if (el.dataset.initialHidden == 'false') {\n        el.hidden = false\n        el.classList.remove('hidden')\n        this.down_arrow_hideableTarget.classList.remove('hidden')\n        this.up_arrow_hideableTarget.classList.add('hidden')\n      }\n    })\n  }\n\n  showTargets () {\n    this.hideableTargets.forEach(el => {\n      el.hidden = false\n      el.classList.remove('hidden')\n    })\n  }\n\n  hideTargets () {\n    this.hideableTargets.forEach(el => {\n      el.hidden = true\n      el.classList.add('hidden')\n    })\n  }\n\n  toggleTargets () {\n    console.log('-------------clicked for toggle')\n    this.hideableTargets.forEach(el => {\n      el.hidden = !el.hidden\n      if (el.hidden) {\n        el.classList.add('hidden')\n      } else {\n        el.classList.remove('hidden')\n      }\n    })\n  }\n\n  toggleArrowTargets () {\n    this.div_hideableTargets.forEach(el => {\n      el.hidden = !el.hidden\n      if (el.hidden) {\n        el.classList.add('hidden')\n        this.up_arrow_hideableTarget.classList.remove('hidden')\n        this.down_arrow_hideableTarget.classList.add('hidden')\n      } else {\n        el.classList.remove('hidden')\n        this.down_arrow_hideableTarget.classList.remove('hidden')\n        this.up_arrow_hideableTarget.classList.add('hidden')\n      }\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"fetch-group\"\nexport default class extends Controller {\n  connect() {\n  }\n\n  groupCustomers () {\n    const selectedGroup = this.element.options[this.element.selectedIndex].value\n    if (selectedGroup) {\n      this.url = `/web/groups/${selectedGroup}/customers`\n      fetch(this.url, {\n        headers: {\n          Accept: 'text/vnd.turbo-stream.html'\n        }\n      })\n        .then(response => response.text())\n        .then(html => Turbo.renderStreamMessage(html))\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n// Connects to data-controller=\"password-visibility\"\nexport default class extends Controller {\n  static targets = [\"password\", \"confirmPassword\", \"visibleIcon\", \"hideIcon\", \"visibleIconCP\", \"hideIconCP\", \"submitButton\", \"errorMessage\"];\n\n  connect() {\n    if (!this.hasPasswordTarget) return;\n\n    this.passwordTarget.addEventListener(\"input\", () => {\n      this.validatePassword();\n    });\n  }\n\n  visiblePassword() {\n    if (this.hasVisibleIconTarget && this.hasHideIconTarget) {\n      this.visibleIconTarget.hidden = !this.visibleIconTarget.hidden;\n      this.hideIconTarget.hidden = !this.hideIconTarget.hidden;\n    }\n\n    if (!this.hasPasswordTarget) return;\n    this.passwordTarget.type = this.passwordTarget.type === \"password\" ? \"text\" : \"password\";\n  }\n\n  visibleConfirmPassword() {\n    if (this.hasVisibleIconCPTarget && this.hasHideIconCPTarget) {\n      this.visibleIconCPTarget.hidden = !this.visibleIconCPTarget.hidden;\n      this.hideIconCPTarget.hidden = !this.hideIconCPTarget.hidden;\n    }\n\n    if (!this.hasConfirmPasswordTarget) return;\n    this.confirmPasswordTarget.type = this.confirmPasswordTarget.type === \"password\" ? \"text\" : \"password\";\n  }\n\n  validatePassword() {\n    if (!this.hasPasswordTarget || !this.hasConfirmPasswordTarget) return;\n\n    const password = this.passwordTarget.value;\n    const confirmPassword = this.confirmPasswordTarget.value;\n\n    if (confirmPassword && password !== confirmPassword) {\n      this.hideSubmitButton();\n      if (this.hasErrorMessageTarget) this.errorMessageTarget.textContent = \"Passwords do not match\";\n    } else if (password && password.length < 6) {\n      this.hideSubmitButton();\n      if (this.hasErrorMessageTarget) this.errorMessageTarget.textContent = \"Password must be at least 6 characters long\";\n    } else {\n      if (this.hasErrorMessageTarget) this.errorMessageTarget.textContent = \"\";\n      this.showSubmitButton();\n    }\n  }\n\n  hideSubmitButton(){\n    if (!this.hasSubmitButtonTarget) return;\n    this.submitButtonTarget.disabled = true;\n  }\n\n  showSubmitButton(){\n    if (!this.hasSubmitButtonTarget) return;\n    this.submitButtonTarget.disabled = false;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"warn-and-block\"\nexport default class extends Controller {\n  static targets = [\n    'isWarn',\n    'isBlock',\n    'isDueAmountType',\n    'isAdvanceAmountType',\n    'blockAmount',\n    'warnAmount',\n    'submit',\n    'warnContainer',\n    'blockContainer',\n    'errorsContainer'\n  ]\n  connect() {\n    this.warnHideable();\n    this.blockHideable();\n  }\n\n  warnHideable(){\n    const action = this.isWarnTarget.dataset.actionType;\n    let targetContainer = this.warnContainerTarget;\n    const isWarn = this.isWarnTarget.checked;\n    const warnAmountTarget = this.warnAmountTarget;\n\n    this.toggle(action, targetContainer, isWarn, warnAmountTarget);\n  }\n\n  blockHideable(){\n      const action = this.isWarnTarget.dataset.actionType;\n      let targetContainer = this.blockContainerTarget;\n      const isBlock = this.isBlockTarget.checked;\n      const blockAmountTarget = this.blockAmountTarget;\n\n    this.toggle(action, targetContainer, isBlock, blockAmountTarget);\n  }\n\n  validate(event){\n    const isDueAmountType = this.isDueAmountTypeTarget.checked;\n    const isAdvanceAmountType = this.isAdvanceAmountTypeTarget.checked;\n    const isBlock = this.isBlockTarget.checked;\n    const isWarn = this.isWarnTarget.checked;\n    const blockAmount = parseInt(this.blockAmountTarget.value);\n    const warnAmount = parseInt(this.warnAmountTarget.value);\n    if(isDueAmountType && (isBlock && isWarn) && (warnAmount > blockAmount))\n    {\n      this.errorsContainerTarget.innerHTML = \" ERROR:<br><br> Warn amount can not be greater than block amount.\";\n      this.errorsContainerTarget.classList.add(\"p-2\");\n      event.preventDefault();\n    }\n\n    if(isAdvanceAmountType && (isBlock && isWarn) && (warnAmount < blockAmount))\n    {\n      this.errorsContainerTarget.innerHTML = \" ERROR:<br><br> Warn amount can not be less than block amount.\";\n      this.errorsContainerTarget.classList.add(\"p-2\");\n      event.preventDefault();\n    }\n  }\n\n  toggle(action, targetContainer, isWarnOrBlock, amountTarget){\n    if(action === \"new\"){\n      this.newActionToggle(isWarnOrBlock, targetContainer, amountTarget)\n    }else if(action === \"edit\"){\n      this.editActionToggle(isWarnOrBlock, targetContainer, amountTarget)\n    }\n  }\n\n  newActionToggle(isWarnOrBlock, targetContainer, amountTarget){\n    if(isWarnOrBlock){\n      this.show(targetContainer);\n    }else{\n      amountTarget.value = 0.0;\n      this.hide(targetContainer);\n    }\n  }\n\n  editActionToggle(isWarnOrBlock, targetContainer, amountTarget){\n    const amount = parseFloat(amountTarget.value);\n    if(amount > 0.0 || (amount === 0.0 && isWarnOrBlock)){\n      this.show(targetContainer);\n    }else{\n      this.hide(targetContainer);\n    }\n  }\n\n  hide(targetContainer){\n    if(!targetContainer.classList.contains('hidden')){\n      targetContainer.classList.add('hidden');\n    }\n  }\n\n  show(targetContainer){\n    if(targetContainer.classList.contains('hidden')){\n      targetContainer.classList.remove('hidden');\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"bulk-deliveries\"\nexport default class extends Controller {\n  static targets = ['inputField']\n\n  clearDefaultQuantity() {\n    if (this.element.dataset.quantity === \"0\" && this.inputFieldTarget.value === \"0\") {\n      this.inputFieldTarget.value = \"\"\n    }\n  }\n\n  submit() {\n    if (this.submitted) {\n      return false\n    }\n\n    this.restoreDefaultQuantity()\n\n    if (this.element.dataset.quantity != this.currentQuantity()) {\n      this.element.requestSubmit();\n    }\n  }\n\n  disableSubmitBtnEvent(event) {\n    if (this.element.dataset.quantity == this.currentQuantity()) {\n      event.preventDefault();\n      return false;\n    }\n\n    this.submitted = true;\n  }\n\n  currentQuantity() {\n    return this.inputFieldTarget.value === \"\" ? \"0\" : this.inputFieldTarget.value\n  }\n\n  restoreDefaultQuantity() {\n    if (this.element.dataset.quantity === \"0\" && this.inputFieldTarget.value === \"\") {\n      this.inputFieldTarget.value = \"0\"\n    }\n  }\n}\n", "export var HOOKS = [\n    \"onChange\",\n    \"onClose\",\n    \"onDayCreate\",\n    \"onDestroy\",\n    \"onKeyDown\",\n    \"onMonthChange\",\n    \"onOpen\",\n    \"onParseConfig\",\n    \"onReady\",\n    \"onValueUpdate\",\n    \"onYearChange\",\n    \"onPreCalendarPosition\",\n];\nexport var defaults = {\n    _disable: [],\n    allowInput: false,\n    allowInvalidPreload: false,\n    altFormat: \"F j, Y\",\n    altInput: false,\n    altInputClass: \"form-control input\",\n    animate: typeof window === \"object\" &&\n        window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n    ariaDateFormat: \"F j, Y\",\n    autoFillDefaultTime: true,\n    clickOpens: true,\n    closeOnSelect: true,\n    conjunction: \", \",\n    dateFormat: \"Y-m-d\",\n    defaultHour: 12,\n    defaultMinute: 0,\n    defaultSeconds: 0,\n    disable: [],\n    disableMobile: false,\n    enableSeconds: false,\n    enableTime: false,\n    errorHandler: function (err) {\n        return typeof console !== \"undefined\" && console.warn(err);\n    },\n    getWeek: function (givenDate) {\n        var date = new Date(givenDate.getTime());\n        date.setHours(0, 0, 0, 0);\n        date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n        var week1 = new Date(date.getFullYear(), 0, 4);\n        return (1 +\n            Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n                3 +\n                ((week1.getDay() + 6) % 7)) /\n                7));\n    },\n    hourIncrement: 1,\n    ignoredFocusElements: [],\n    inline: false,\n    locale: \"default\",\n    minuteIncrement: 5,\n    mode: \"single\",\n    monthSelectorType: \"dropdown\",\n    nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n    noCalendar: false,\n    now: new Date(),\n    onChange: [],\n    onClose: [],\n    onDayCreate: [],\n    onDestroy: [],\n    onKeyDown: [],\n    onMonthChange: [],\n    onOpen: [],\n    onParseConfig: [],\n    onReady: [],\n    onValueUpdate: [],\n    onYearChange: [],\n    onPreCalendarPosition: [],\n    plugins: [],\n    position: \"auto\",\n    positionElement: undefined,\n    prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n    shorthandCurrentMonth: false,\n    showMonths: 1,\n    static: false,\n    time_24hr: false,\n    weekNumbers: false,\n    wrap: false,\n};\n", "export var english = {\n    weekdays: {\n        shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        longhand: [\n            \"Sunday\",\n            \"Monday\",\n            \"Tuesday\",\n            \"Wednesday\",\n            \"Thursday\",\n            \"Friday\",\n            \"Saturday\",\n        ],\n    },\n    months: {\n        shorthand: [\n            \"Jan\",\n            \"Feb\",\n            \"Mar\",\n            \"Apr\",\n            \"May\",\n            \"Jun\",\n            \"Jul\",\n            \"Aug\",\n            \"Sep\",\n            \"Oct\",\n            \"Nov\",\n            \"Dec\",\n        ],\n        longhand: [\n            \"January\",\n            \"February\",\n            \"March\",\n            \"April\",\n            \"May\",\n            \"June\",\n            \"July\",\n            \"August\",\n            \"September\",\n            \"October\",\n            \"November\",\n            \"December\",\n        ],\n    },\n    daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    firstDayOfWeek: 0,\n    ordinal: function (nth) {\n        var s = nth % 100;\n        if (s > 3 && s < 21)\n            return \"th\";\n        switch (s % 10) {\n            case 1:\n                return \"st\";\n            case 2:\n                return \"nd\";\n            case 3:\n                return \"rd\";\n            default:\n                return \"th\";\n        }\n    },\n    rangeSeparator: \" to \",\n    weekAbbreviation: \"Wk\",\n    scrollTitle: \"Scroll to increment\",\n    toggleTitle: \"Click to toggle\",\n    amPM: [\"AM\", \"PM\"],\n    yearAriaLabel: \"Year\",\n    monthAriaLabel: \"Month\",\n    hourAriaLabel: \"Hour\",\n    minuteAriaLabel: \"Minute\",\n    time_24hr: false,\n};\nexport default english;\n", "export var pad = function (number, length) {\n    if (length === void 0) { length = 2; }\n    return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n    var t;\n    return function () {\n        var _this = this;\n        var args = arguments;\n        clearTimeout(t);\n        t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n    };\n}\nexport var arrayify = function (obj) {\n    return obj instanceof Array ? obj : [obj];\n};\n", "export function toggleClass(elem, className, bool) {\n    if (bool === true)\n        return elem.classList.add(className);\n    elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n    var e = window.document.createElement(tag);\n    className = className || \"\";\n    content = content || \"\";\n    e.className = className;\n    if (content !== undefined)\n        e.textContent = content;\n    return e;\n}\nexport function clearNode(node) {\n    while (node.firstChild)\n        node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n    if (condition(node))\n        return node;\n    else if (node.parentNode)\n        return findParent(node.parentNode, condition);\n    return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n    var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n    if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n        numInput.type = \"number\";\n    }\n    else {\n        numInput.type = \"text\";\n        numInput.pattern = \"\\\\d*\";\n    }\n    if (opts !== undefined)\n        for (var key in opts)\n            numInput.setAttribute(key, opts[key]);\n    wrapper.appendChild(numInput);\n    wrapper.appendChild(arrowUp);\n    wrapper.appendChild(arrowDown);\n    return wrapper;\n}\nexport function getEventTarget(event) {\n    try {\n        if (typeof event.composedPath === \"function\") {\n            var path = event.composedPath();\n            return path[0];\n        }\n        return event.target;\n    }\n    catch (error) {\n        return event.target;\n    }\n}\n", "import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n    D: doNothing,\n    F: function (dateObj, monthName, locale) {\n        dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n    },\n    G: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    H: function (dateObj, hour) {\n        dateObj.setHours(parseFloat(hour));\n    },\n    J: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    K: function (dateObj, amPM, locale) {\n        dateObj.setHours((dateObj.getHours() % 12) +\n            12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n    },\n    M: function (dateObj, shortMonth, locale) {\n        dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n    },\n    S: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n    W: function (dateObj, weekNum, locale) {\n        var weekNumber = parseInt(weekNum);\n        var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n        date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n        return date;\n    },\n    Y: function (dateObj, year) {\n        dateObj.setFullYear(parseFloat(year));\n    },\n    Z: function (_, ISODate) { return new Date(ISODate); },\n    d: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    h: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    i: function (dateObj, minutes) {\n        dateObj.setMinutes(parseFloat(minutes));\n    },\n    j: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    l: doNothing,\n    m: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    n: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    s: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    u: function (_, unixMillSeconds) {\n        return new Date(parseFloat(unixMillSeconds));\n    },\n    w: doNothing,\n    y: function (dateObj, year) {\n        dateObj.setFullYear(2000 + parseFloat(year));\n    },\n};\nexport var tokenRegex = {\n    D: \"\",\n    F: \"\",\n    G: \"(\\\\d\\\\d|\\\\d)\",\n    H: \"(\\\\d\\\\d|\\\\d)\",\n    J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n    K: \"\",\n    M: \"\",\n    S: \"(\\\\d\\\\d|\\\\d)\",\n    U: \"(.+)\",\n    W: \"(\\\\d\\\\d|\\\\d)\",\n    Y: \"(\\\\d{4})\",\n    Z: \"(.+)\",\n    d: \"(\\\\d\\\\d|\\\\d)\",\n    h: \"(\\\\d\\\\d|\\\\d)\",\n    i: \"(\\\\d\\\\d|\\\\d)\",\n    j: \"(\\\\d\\\\d|\\\\d)\",\n    l: \"\",\n    m: \"(\\\\d\\\\d|\\\\d)\",\n    n: \"(\\\\d\\\\d|\\\\d)\",\n    s: \"(\\\\d\\\\d|\\\\d)\",\n    u: \"(.+)\",\n    w: \"(\\\\d\\\\d|\\\\d)\",\n    y: \"(\\\\d{2})\",\n};\nexport var formats = {\n    Z: function (date) { return date.toISOString(); },\n    D: function (date, locale, options) {\n        return locale.weekdays.shorthand[formats.w(date, locale, options)];\n    },\n    F: function (date, locale, options) {\n        return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n    },\n    G: function (date, locale, options) {\n        return pad(formats.h(date, locale, options));\n    },\n    H: function (date) { return pad(date.getHours()); },\n    J: function (date, locale) {\n        return locale.ordinal !== undefined\n            ? date.getDate() + locale.ordinal(date.getDate())\n            : date.getDate();\n    },\n    K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n    M: function (date, locale) {\n        return monthToStr(date.getMonth(), true, locale);\n    },\n    S: function (date) { return pad(date.getSeconds()); },\n    U: function (date) { return date.getTime() / 1000; },\n    W: function (date, _, options) {\n        return options.getWeek(date);\n    },\n    Y: function (date) { return pad(date.getFullYear(), 4); },\n    d: function (date) { return pad(date.getDate()); },\n    h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n    i: function (date) { return pad(date.getMinutes()); },\n    j: function (date) { return date.getDate(); },\n    l: function (date, locale) {\n        return locale.weekdays.longhand[date.getDay()];\n    },\n    m: function (date) { return pad(date.getMonth() + 1); },\n    n: function (date) { return date.getMonth() + 1; },\n    s: function (date) { return date.getSeconds(); },\n    u: function (date) { return date.getTime(); },\n    w: function (date) { return date.getDay(); },\n    y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n    return function (dateObj, frmt, overrideLocale) {\n        var locale = overrideLocale || l10n;\n        if (config.formatDate !== undefined && !isMobile) {\n            return config.formatDate(dateObj, frmt, locale);\n        }\n        return frmt\n            .split(\"\")\n            .map(function (c, i, arr) {\n            return formats[c] && arr[i - 1] !== \"\\\\\"\n                ? formats[c](dateObj, locale, config)\n                : c !== \"\\\\\"\n                    ? c\n                    : \"\";\n        })\n            .join(\"\");\n    };\n};\nexport var createDateParser = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n    return function (date, givenFormat, timeless, customLocale) {\n        if (date !== 0 && !date)\n            return undefined;\n        var locale = customLocale || l10n;\n        var parsedDate;\n        var dateOrig = date;\n        if (date instanceof Date)\n            parsedDate = new Date(date.getTime());\n        else if (typeof date !== \"string\" &&\n            date.toFixed !== undefined)\n            parsedDate = new Date(date);\n        else if (typeof date === \"string\") {\n            var format = givenFormat || (config || defaults).dateFormat;\n            var datestr = String(date).trim();\n            if (datestr === \"today\") {\n                parsedDate = new Date();\n                timeless = true;\n            }\n            else if (config && config.parseDate) {\n                parsedDate = config.parseDate(date, format);\n            }\n            else if (/Z$/.test(datestr) ||\n                /GMT$/.test(datestr)) {\n                parsedDate = new Date(date);\n            }\n            else {\n                var matched = void 0, ops = [];\n                for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                    var token = format[i];\n                    var isBackSlash = token === \"\\\\\";\n                    var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                    if (tokenRegex[token] && !escaped) {\n                        regexStr += tokenRegex[token];\n                        var match = new RegExp(regexStr).exec(date);\n                        if (match && (matched = true)) {\n                            ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n                                fn: revFormat[token],\n                                val: match[++matchIndex],\n                            });\n                        }\n                    }\n                    else if (!isBackSlash)\n                        regexStr += \".\";\n                }\n                parsedDate =\n                    !config || !config.noCalendar\n                        ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n                        : new Date(new Date().setHours(0, 0, 0, 0));\n                ops.forEach(function (_a) {\n                    var fn = _a.fn, val = _a.val;\n                    return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n                });\n                parsedDate = matched ? parsedDate : undefined;\n            }\n        }\n        if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n            config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n            return undefined;\n        }\n        if (timeless === true)\n            parsedDate.setHours(0, 0, 0, 0);\n        return parsedDate;\n    };\n};\nexport function compareDates(date1, date2, timeless) {\n    if (timeless === void 0) { timeless = true; }\n    if (timeless !== false) {\n        return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n            new Date(date2.getTime()).setHours(0, 0, 0, 0));\n    }\n    return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n    return (3600 * (date1.getHours() - date2.getHours()) +\n        60 * (date1.getMinutes() - date2.getMinutes()) +\n        date1.getSeconds() -\n        date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n    return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n    return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n    var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n    return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n    DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n    var hours = config.defaultHour;\n    var minutes = config.defaultMinute;\n    var seconds = config.defaultSeconds;\n    if (config.minDate !== undefined) {\n        var minHour = config.minDate.getHours();\n        var minMinutes = config.minDate.getMinutes();\n        var minSeconds = config.minDate.getSeconds();\n        if (hours < minHour) {\n            hours = minHour;\n        }\n        if (hours === minHour && minutes < minMinutes) {\n            minutes = minMinutes;\n        }\n        if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n            seconds = config.minDate.getSeconds();\n    }\n    if (config.maxDate !== undefined) {\n        var maxHr = config.maxDate.getHours();\n        var maxMinutes = config.maxDate.getMinutes();\n        hours = Math.min(hours, maxHr);\n        if (hours === maxHr)\n            minutes = Math.min(maxMinutes, minutes);\n        if (hours === maxHr && minutes === maxMinutes)\n            seconds = config.maxDate.getSeconds();\n    }\n    return { hours: hours, minutes: minutes, seconds: seconds };\n}\n", "\"use strict\";\nif (typeof Object.assign !== \"function\") {\n    Object.assign = function (target) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!target) {\n            throw TypeError(\"Cannot convert undefined or null to object\");\n        }\n        var _loop_1 = function (source) {\n            if (source) {\n                Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n            }\n        };\n        for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n            var source = args_1[_a];\n            _loop_1(source);\n        }\n        return target;\n    };\n}\n", "var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n    var self = {\n        config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n        l10n: English,\n    };\n    self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    self._handlers = [];\n    self.pluginElements = [];\n    self.loadedPlugins = [];\n    self._bind = bind;\n    self._setHoursFromDate = setHoursFromDate;\n    self._positionCalendar = positionCalendar;\n    self.changeMonth = changeMonth;\n    self.changeYear = changeYear;\n    self.clear = clear;\n    self.close = close;\n    self.onMouseOver = onMouseOver;\n    self._createElement = createElement;\n    self.createDay = createDay;\n    self.destroy = destroy;\n    self.isEnabled = isEnabled;\n    self.jumpToDate = jumpToDate;\n    self.updateValue = updateValue;\n    self.open = open;\n    self.redraw = redraw;\n    self.set = set;\n    self.setDate = setDate;\n    self.toggle = toggle;\n    function setupHelperFunctions() {\n        self.utils = {\n            getDaysInMonth: function (month, yr) {\n                if (month === void 0) { month = self.currentMonth; }\n                if (yr === void 0) { yr = self.currentYear; }\n                if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n                    return 29;\n                return self.l10n.daysInMonth[month];\n            },\n        };\n    }\n    function init() {\n        self.element = self.input = element;\n        self.isOpen = false;\n        parseConfig();\n        setupLocale();\n        setupInputs();\n        setupDates();\n        setupHelperFunctions();\n        if (!self.isMobile)\n            build();\n        bindEvents();\n        if (self.selectedDates.length || self.config.noCalendar) {\n            if (self.config.enableTime) {\n                setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n            }\n            updateValue(false);\n        }\n        setCalendarWidth();\n        var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n        if (!self.isMobile && isSafari) {\n            positionCalendar();\n        }\n        triggerEvent(\"onReady\");\n    }\n    function getClosestActiveElement() {\n        var _a;\n        return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n            .activeElement || document.activeElement);\n    }\n    function bindToInstance(fn) {\n        return fn.bind(self);\n    }\n    function setCalendarWidth() {\n        var config = self.config;\n        if (config.weekNumbers === false && config.showMonths === 1) {\n            return;\n        }\n        else if (config.noCalendar !== true) {\n            window.requestAnimationFrame(function () {\n                if (self.calendarContainer !== undefined) {\n                    self.calendarContainer.style.visibility = \"hidden\";\n                    self.calendarContainer.style.display = \"block\";\n                }\n                if (self.daysContainer !== undefined) {\n                    var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n                    self.daysContainer.style.width = daysWidth + \"px\";\n                    self.calendarContainer.style.width =\n                        daysWidth +\n                            (self.weekWrapper !== undefined\n                                ? self.weekWrapper.offsetWidth\n                                : 0) +\n                            \"px\";\n                    self.calendarContainer.style.removeProperty(\"visibility\");\n                    self.calendarContainer.style.removeProperty(\"display\");\n                }\n            });\n        }\n    }\n    function updateTime(e) {\n        if (self.selectedDates.length === 0) {\n            var defaultDate = self.config.minDate === undefined ||\n                compareDates(new Date(), self.config.minDate) >= 0\n                ? new Date()\n                : new Date(self.config.minDate.getTime());\n            var defaults = getDefaultHours(self.config);\n            defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n            self.selectedDates = [defaultDate];\n            self.latestSelectedDateObj = defaultDate;\n        }\n        if (e !== undefined && e.type !== \"blur\") {\n            timeWrapper(e);\n        }\n        var prevValue = self._input.value;\n        setHoursFromInputs();\n        updateValue();\n        if (self._input.value !== prevValue) {\n            self._debouncedChange();\n        }\n    }\n    function ampm2military(hour, amPM) {\n        return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n    }\n    function military2ampm(hour) {\n        switch (hour % 24) {\n            case 0:\n            case 12:\n                return 12;\n            default:\n                return hour % 12;\n        }\n    }\n    function setHoursFromInputs() {\n        if (self.hourElement === undefined || self.minuteElement === undefined)\n            return;\n        var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n            ? (parseInt(self.secondElement.value, 10) || 0) % 60\n            : 0;\n        if (self.amPM !== undefined) {\n            hours = ampm2military(hours, self.amPM.textContent);\n        }\n        var limitMinHours = self.config.minTime !== undefined ||\n            (self.config.minDate &&\n                self.minDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n                    0);\n        var limitMaxHours = self.config.maxTime !== undefined ||\n            (self.config.maxDate &&\n                self.maxDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n                    0);\n        if (self.config.maxTime !== undefined &&\n            self.config.minTime !== undefined &&\n            self.config.minTime > self.config.maxTime) {\n            var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n            var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n            var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n            if (currentTime > maxBound && currentTime < minBound) {\n                var result = parseSeconds(minBound);\n                hours = result[0];\n                minutes = result[1];\n                seconds = result[2];\n            }\n        }\n        else {\n            if (limitMaxHours) {\n                var maxTime = self.config.maxTime !== undefined\n                    ? self.config.maxTime\n                    : self.config.maxDate;\n                hours = Math.min(hours, maxTime.getHours());\n                if (hours === maxTime.getHours())\n                    minutes = Math.min(minutes, maxTime.getMinutes());\n                if (minutes === maxTime.getMinutes())\n                    seconds = Math.min(seconds, maxTime.getSeconds());\n            }\n            if (limitMinHours) {\n                var minTime = self.config.minTime !== undefined\n                    ? self.config.minTime\n                    : self.config.minDate;\n                hours = Math.max(hours, minTime.getHours());\n                if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n                    minutes = minTime.getMinutes();\n                if (minutes === minTime.getMinutes())\n                    seconds = Math.max(seconds, minTime.getSeconds());\n            }\n        }\n        setHours(hours, minutes, seconds);\n    }\n    function setHoursFromDate(dateObj) {\n        var date = dateObj || self.latestSelectedDateObj;\n        if (date && date instanceof Date) {\n            setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n        }\n    }\n    function setHours(hours, minutes, seconds) {\n        if (self.latestSelectedDateObj !== undefined) {\n            self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n        }\n        if (!self.hourElement || !self.minuteElement || self.isMobile)\n            return;\n        self.hourElement.value = pad(!self.config.time_24hr\n            ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n            : hours);\n        self.minuteElement.value = pad(minutes);\n        if (self.amPM !== undefined)\n            self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n        if (self.secondElement !== undefined)\n            self.secondElement.value = pad(seconds);\n    }\n    function onYearInput(event) {\n        var eventTarget = getEventTarget(event);\n        var year = parseInt(eventTarget.value) + (event.delta || 0);\n        if (year / 1000 > 1 ||\n            (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n            changeYear(year);\n        }\n    }\n    function bind(element, event, handler, options) {\n        if (event instanceof Array)\n            return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n        if (element instanceof Array)\n            return element.forEach(function (el) { return bind(el, event, handler, options); });\n        element.addEventListener(event, handler, options);\n        self._handlers.push({\n            remove: function () { return element.removeEventListener(event, handler, options); },\n        });\n    }\n    function triggerChange() {\n        triggerEvent(\"onChange\");\n    }\n    function bindEvents() {\n        if (self.config.wrap) {\n            [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n                Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n                    return bind(el, \"click\", self[evt]);\n                });\n            });\n        }\n        if (self.isMobile) {\n            setupMobile();\n            return;\n        }\n        var debouncedResize = debounce(onResize, 50);\n        self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n        if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n            bind(self.daysContainer, \"mouseover\", function (e) {\n                if (self.config.mode === \"range\")\n                    onMouseOver(getEventTarget(e));\n            });\n        bind(self._input, \"keydown\", onKeyDown);\n        if (self.calendarContainer !== undefined) {\n            bind(self.calendarContainer, \"keydown\", onKeyDown);\n        }\n        if (!self.config.inline && !self.config.static)\n            bind(window, \"resize\", debouncedResize);\n        if (window.ontouchstart !== undefined)\n            bind(window.document, \"touchstart\", documentClick);\n        else\n            bind(window.document, \"mousedown\", documentClick);\n        bind(window.document, \"focus\", documentClick, { capture: true });\n        if (self.config.clickOpens === true) {\n            bind(self._input, \"focus\", self.open);\n            bind(self._input, \"click\", self.open);\n        }\n        if (self.daysContainer !== undefined) {\n            bind(self.monthNav, \"click\", onMonthNavClick);\n            bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n            bind(self.daysContainer, \"click\", selectDate);\n        }\n        if (self.timeContainer !== undefined &&\n            self.minuteElement !== undefined &&\n            self.hourElement !== undefined) {\n            var selText = function (e) {\n                return getEventTarget(e).select();\n            };\n            bind(self.timeContainer, [\"increment\"], updateTime);\n            bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n            bind(self.timeContainer, \"click\", timeIncrement);\n            bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n            if (self.secondElement !== undefined)\n                bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n            if (self.amPM !== undefined) {\n                bind(self.amPM, \"click\", function (e) {\n                    updateTime(e);\n                });\n            }\n        }\n        if (self.config.allowInput) {\n            bind(self._input, \"blur\", onBlur);\n        }\n    }\n    function jumpToDate(jumpDate, triggerChange) {\n        var jumpTo = jumpDate !== undefined\n            ? self.parseDate(jumpDate)\n            : self.latestSelectedDateObj ||\n                (self.config.minDate && self.config.minDate > self.now\n                    ? self.config.minDate\n                    : self.config.maxDate && self.config.maxDate < self.now\n                        ? self.config.maxDate\n                        : self.now);\n        var oldYear = self.currentYear;\n        var oldMonth = self.currentMonth;\n        try {\n            if (jumpTo !== undefined) {\n                self.currentYear = jumpTo.getFullYear();\n                self.currentMonth = jumpTo.getMonth();\n            }\n        }\n        catch (e) {\n            e.message = \"Invalid date supplied: \" + jumpTo;\n            self.config.errorHandler(e);\n        }\n        if (triggerChange && self.currentYear !== oldYear) {\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        if (triggerChange &&\n            (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n            triggerEvent(\"onMonthChange\");\n        }\n        self.redraw();\n    }\n    function timeIncrement(e) {\n        var eventTarget = getEventTarget(e);\n        if (~eventTarget.className.indexOf(\"arrow\"))\n            incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n    }\n    function incrementNumInput(e, delta, inputElem) {\n        var target = e && getEventTarget(e);\n        var input = inputElem ||\n            (target && target.parentNode && target.parentNode.firstChild);\n        var event = createEvent(\"increment\");\n        event.delta = delta;\n        input && input.dispatchEvent(event);\n    }\n    function build() {\n        var fragment = window.document.createDocumentFragment();\n        self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n        self.calendarContainer.tabIndex = -1;\n        if (!self.config.noCalendar) {\n            fragment.appendChild(buildMonthNav());\n            self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n            if (self.config.weekNumbers) {\n                var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n                self.innerContainer.appendChild(weekWrapper);\n                self.weekNumbers = weekNumbers;\n                self.weekWrapper = weekWrapper;\n            }\n            self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n            self.rContainer.appendChild(buildWeekdays());\n            if (!self.daysContainer) {\n                self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n                self.daysContainer.tabIndex = -1;\n            }\n            buildDays();\n            self.rContainer.appendChild(self.daysContainer);\n            self.innerContainer.appendChild(self.rContainer);\n            fragment.appendChild(self.innerContainer);\n        }\n        if (self.config.enableTime) {\n            fragment.appendChild(buildTime());\n        }\n        toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n        toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n        toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n        self.calendarContainer.appendChild(fragment);\n        var customAppend = self.config.appendTo !== undefined &&\n            self.config.appendTo.nodeType !== undefined;\n        if (self.config.inline || self.config.static) {\n            self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n            if (self.config.inline) {\n                if (!customAppend && self.element.parentNode)\n                    self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n                else if (self.config.appendTo !== undefined)\n                    self.config.appendTo.appendChild(self.calendarContainer);\n            }\n            if (self.config.static) {\n                var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n                if (self.element.parentNode)\n                    self.element.parentNode.insertBefore(wrapper, self.element);\n                wrapper.appendChild(self.element);\n                if (self.altInput)\n                    wrapper.appendChild(self.altInput);\n                wrapper.appendChild(self.calendarContainer);\n            }\n        }\n        if (!self.config.static && !self.config.inline)\n            (self.config.appendTo !== undefined\n                ? self.config.appendTo\n                : window.document.body).appendChild(self.calendarContainer);\n    }\n    function createDay(className, date, _dayNumber, i) {\n        var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n        dayElement.dateObj = date;\n        dayElement.$i = i;\n        dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n        if (className.indexOf(\"hidden\") === -1 &&\n            compareDates(date, self.now) === 0) {\n            self.todayDateElem = dayElement;\n            dayElement.classList.add(\"today\");\n            dayElement.setAttribute(\"aria-current\", \"date\");\n        }\n        if (dateIsEnabled) {\n            dayElement.tabIndex = -1;\n            if (isDateSelected(date)) {\n                dayElement.classList.add(\"selected\");\n                self.selectedDateElem = dayElement;\n                if (self.config.mode === \"range\") {\n                    toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n                        compareDates(date, self.selectedDates[0], true) === 0);\n                    toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n                        compareDates(date, self.selectedDates[1], true) === 0);\n                    if (className === \"nextMonthDay\")\n                        dayElement.classList.add(\"inRange\");\n                }\n            }\n        }\n        else {\n            dayElement.classList.add(\"flatpickr-disabled\");\n        }\n        if (self.config.mode === \"range\") {\n            if (isDateInRange(date) && !isDateSelected(date))\n                dayElement.classList.add(\"inRange\");\n        }\n        if (self.weekNumbers &&\n            self.config.showMonths === 1 &&\n            className !== \"prevMonthDay\" &&\n            i % 7 === 6) {\n            self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n        }\n        triggerEvent(\"onDayCreate\", dayElement);\n        return dayElement;\n    }\n    function focusOnDayElem(targetNode) {\n        targetNode.focus();\n        if (self.config.mode === \"range\")\n            onMouseOver(targetNode);\n    }\n    function getFirstAvailableDay(delta) {\n        var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        for (var m = startMonth; m != endMonth; m += delta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = delta > 0 ? 0 : month.children.length - 1;\n            var endIndex = delta > 0 ? month.children.length : -1;\n            for (var i = startIndex; i != endIndex; i += delta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n                    return c;\n            }\n        }\n        return undefined;\n    }\n    function getNextAvailableDay(current, delta) {\n        var givenMonth = current.className.indexOf(\"Month\") === -1\n            ? current.dateObj.getMonth()\n            : self.currentMonth;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        var loopDelta = delta > 0 ? 1 : -1;\n        for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = givenMonth - self.currentMonth === m\n                ? current.$i + delta\n                : delta < 0\n                    ? month.children.length - 1\n                    : 0;\n            var numMonthDays = month.children.length;\n            for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 &&\n                    isEnabled(c.dateObj) &&\n                    Math.abs(current.$i - i) >= Math.abs(delta))\n                    return focusOnDayElem(c);\n            }\n        }\n        self.changeMonth(loopDelta);\n        focusOnDay(getFirstAvailableDay(loopDelta), 0);\n        return undefined;\n    }\n    function focusOnDay(current, offset) {\n        var activeElement = getClosestActiveElement();\n        var dayFocused = isInView(activeElement || document.body);\n        var startElem = current !== undefined\n            ? current\n            : dayFocused\n                ? activeElement\n                : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n                    ? self.selectedDateElem\n                    : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n                        ? self.todayDateElem\n                        : getFirstAvailableDay(offset > 0 ? 1 : -1);\n        if (startElem === undefined) {\n            self._input.focus();\n        }\n        else if (!dayFocused) {\n            focusOnDayElem(startElem);\n        }\n        else {\n            getNextAvailableDay(startElem, offset);\n        }\n    }\n    function buildMonthDays(year, month) {\n        var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n        var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n        var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n        var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n        for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n        }\n        for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n        }\n        for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n            (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n        }\n        var dayContainer = createElement(\"div\", \"dayContainer\");\n        dayContainer.appendChild(days);\n        return dayContainer;\n    }\n    function buildDays() {\n        if (self.daysContainer === undefined) {\n            return;\n        }\n        clearNode(self.daysContainer);\n        if (self.weekNumbers)\n            clearNode(self.weekNumbers);\n        var frag = document.createDocumentFragment();\n        for (var i = 0; i < self.config.showMonths; i++) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n        }\n        self.daysContainer.appendChild(frag);\n        self.days = self.daysContainer.firstChild;\n        if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n            onMouseOver();\n        }\n    }\n    function buildMonthSwitch() {\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType !== \"dropdown\")\n            return;\n        var shouldBuildMonth = function (month) {\n            if (self.config.minDate !== undefined &&\n                self.currentYear === self.config.minDate.getFullYear() &&\n                month < self.config.minDate.getMonth()) {\n                return false;\n            }\n            return !(self.config.maxDate !== undefined &&\n                self.currentYear === self.config.maxDate.getFullYear() &&\n                month > self.config.maxDate.getMonth());\n        };\n        self.monthsDropdownContainer.tabIndex = -1;\n        self.monthsDropdownContainer.innerHTML = \"\";\n        for (var i = 0; i < 12; i++) {\n            if (!shouldBuildMonth(i))\n                continue;\n            var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n            month.value = new Date(self.currentYear, i).getMonth().toString();\n            month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n            month.tabIndex = -1;\n            if (self.currentMonth === i) {\n                month.selected = true;\n            }\n            self.monthsDropdownContainer.appendChild(month);\n        }\n    }\n    function buildMonth() {\n        var container = createElement(\"div\", \"flatpickr-month\");\n        var monthNavFragment = window.document.createDocumentFragment();\n        var monthElement;\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType === \"static\") {\n            monthElement = createElement(\"span\", \"cur-month\");\n        }\n        else {\n            self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n            self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n            bind(self.monthsDropdownContainer, \"change\", function (e) {\n                var target = getEventTarget(e);\n                var selectedMonth = parseInt(target.value, 10);\n                self.changeMonth(selectedMonth - self.currentMonth);\n                triggerEvent(\"onMonthChange\");\n            });\n            buildMonthSwitch();\n            monthElement = self.monthsDropdownContainer;\n        }\n        var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n        var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n        yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n        if (self.config.minDate) {\n            yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n        }\n        if (self.config.maxDate) {\n            yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n            yearElement.disabled =\n                !!self.config.minDate &&\n                    self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n        }\n        var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n        currentMonth.appendChild(monthElement);\n        currentMonth.appendChild(yearInput);\n        monthNavFragment.appendChild(currentMonth);\n        container.appendChild(monthNavFragment);\n        return {\n            container: container,\n            yearElement: yearElement,\n            monthElement: monthElement,\n        };\n    }\n    function buildMonths() {\n        clearNode(self.monthNav);\n        self.monthNav.appendChild(self.prevMonthNav);\n        if (self.config.showMonths) {\n            self.yearElements = [];\n            self.monthElements = [];\n        }\n        for (var m = self.config.showMonths; m--;) {\n            var month = buildMonth();\n            self.yearElements.push(month.yearElement);\n            self.monthElements.push(month.monthElement);\n            self.monthNav.appendChild(month.container);\n        }\n        self.monthNav.appendChild(self.nextMonthNav);\n    }\n    function buildMonthNav() {\n        self.monthNav = createElement(\"div\", \"flatpickr-months\");\n        self.yearElements = [];\n        self.monthElements = [];\n        self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n        self.prevMonthNav.innerHTML = self.config.prevArrow;\n        self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n        self.nextMonthNav.innerHTML = self.config.nextArrow;\n        buildMonths();\n        Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n            get: function () { return self.__hidePrevMonthArrow; },\n            set: function (bool) {\n                if (self.__hidePrevMonthArrow !== bool) {\n                    toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hidePrevMonthArrow = bool;\n                }\n            },\n        });\n        Object.defineProperty(self, \"_hideNextMonthArrow\", {\n            get: function () { return self.__hideNextMonthArrow; },\n            set: function (bool) {\n                if (self.__hideNextMonthArrow !== bool) {\n                    toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hideNextMonthArrow = bool;\n                }\n            },\n        });\n        self.currentYearElement = self.yearElements[0];\n        updateNavigationCurrentMonth();\n        return self.monthNav;\n    }\n    function buildTime() {\n        self.calendarContainer.classList.add(\"hasTime\");\n        if (self.config.noCalendar)\n            self.calendarContainer.classList.add(\"noCalendar\");\n        var defaults = getDefaultHours(self.config);\n        self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n        self.timeContainer.tabIndex = -1;\n        var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n        var hourInput = createNumberInput(\"flatpickr-hour\", {\n            \"aria-label\": self.l10n.hourAriaLabel,\n        });\n        self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n        var minuteInput = createNumberInput(\"flatpickr-minute\", {\n            \"aria-label\": self.l10n.minuteAriaLabel,\n        });\n        self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n        self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n        self.hourElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getHours()\n            : self.config.time_24hr\n                ? defaults.hours\n                : military2ampm(defaults.hours));\n        self.minuteElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getMinutes()\n            : defaults.minutes);\n        self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n        self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n        self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n        self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n        self.hourElement.setAttribute(\"maxlength\", \"2\");\n        self.minuteElement.setAttribute(\"min\", \"0\");\n        self.minuteElement.setAttribute(\"max\", \"59\");\n        self.minuteElement.setAttribute(\"maxlength\", \"2\");\n        self.timeContainer.appendChild(hourInput);\n        self.timeContainer.appendChild(separator);\n        self.timeContainer.appendChild(minuteInput);\n        if (self.config.time_24hr)\n            self.timeContainer.classList.add(\"time24hr\");\n        if (self.config.enableSeconds) {\n            self.timeContainer.classList.add(\"hasSeconds\");\n            var secondInput = createNumberInput(\"flatpickr-second\");\n            self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n            self.secondElement.value = pad(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getSeconds()\n                : defaults.seconds);\n            self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n            self.secondElement.setAttribute(\"min\", \"0\");\n            self.secondElement.setAttribute(\"max\", \"59\");\n            self.secondElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n            self.timeContainer.appendChild(secondInput);\n        }\n        if (!self.config.time_24hr) {\n            self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n                ? self.hourElement.value\n                : self.config.defaultHour) > 11)]);\n            self.amPM.title = self.l10n.toggleTitle;\n            self.amPM.tabIndex = -1;\n            self.timeContainer.appendChild(self.amPM);\n        }\n        return self.timeContainer;\n    }\n    function buildWeekdays() {\n        if (!self.weekdayContainer)\n            self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n        else\n            clearNode(self.weekdayContainer);\n        for (var i = self.config.showMonths; i--;) {\n            var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n            self.weekdayContainer.appendChild(container);\n        }\n        updateWeekdays();\n        return self.weekdayContainer;\n    }\n    function updateWeekdays() {\n        if (!self.weekdayContainer) {\n            return;\n        }\n        var firstDayOfWeek = self.l10n.firstDayOfWeek;\n        var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n        if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n            weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n        }\n        for (var i = self.config.showMonths; i--;) {\n            self.weekdayContainer.children[i].innerHTML = \"\\n      <span class='flatpickr-weekday'>\\n        \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n      </span>\\n      \";\n        }\n    }\n    function buildWeeks() {\n        self.calendarContainer.classList.add(\"hasWeeks\");\n        var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n        weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n        var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n        weekWrapper.appendChild(weekNumbers);\n        return {\n            weekWrapper: weekWrapper,\n            weekNumbers: weekNumbers,\n        };\n    }\n    function changeMonth(value, isOffset) {\n        if (isOffset === void 0) { isOffset = true; }\n        var delta = isOffset ? value : value - self.currentMonth;\n        if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n            (delta > 0 && self._hideNextMonthArrow === true))\n            return;\n        self.currentMonth += delta;\n        if (self.currentMonth < 0 || self.currentMonth > 11) {\n            self.currentYear += self.currentMonth > 11 ? 1 : -1;\n            self.currentMonth = (self.currentMonth + 12) % 12;\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        buildDays();\n        triggerEvent(\"onMonthChange\");\n        updateNavigationCurrentMonth();\n    }\n    function clear(triggerChangeEvent, toInitial) {\n        if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n        if (toInitial === void 0) { toInitial = true; }\n        self.input.value = \"\";\n        if (self.altInput !== undefined)\n            self.altInput.value = \"\";\n        if (self.mobileInput !== undefined)\n            self.mobileInput.value = \"\";\n        self.selectedDates = [];\n        self.latestSelectedDateObj = undefined;\n        if (toInitial === true) {\n            self.currentYear = self._initialDate.getFullYear();\n            self.currentMonth = self._initialDate.getMonth();\n        }\n        if (self.config.enableTime === true) {\n            var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n            setHours(hours, minutes, seconds);\n        }\n        self.redraw();\n        if (triggerChangeEvent)\n            triggerEvent(\"onChange\");\n    }\n    function close() {\n        self.isOpen = false;\n        if (!self.isMobile) {\n            if (self.calendarContainer !== undefined) {\n                self.calendarContainer.classList.remove(\"open\");\n            }\n            if (self._input !== undefined) {\n                self._input.classList.remove(\"active\");\n            }\n        }\n        triggerEvent(\"onClose\");\n    }\n    function destroy() {\n        if (self.config !== undefined)\n            triggerEvent(\"onDestroy\");\n        for (var i = self._handlers.length; i--;) {\n            self._handlers[i].remove();\n        }\n        self._handlers = [];\n        if (self.mobileInput) {\n            if (self.mobileInput.parentNode)\n                self.mobileInput.parentNode.removeChild(self.mobileInput);\n            self.mobileInput = undefined;\n        }\n        else if (self.calendarContainer && self.calendarContainer.parentNode) {\n            if (self.config.static && self.calendarContainer.parentNode) {\n                var wrapper = self.calendarContainer.parentNode;\n                wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n                if (wrapper.parentNode) {\n                    while (wrapper.firstChild)\n                        wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n                    wrapper.parentNode.removeChild(wrapper);\n                }\n            }\n            else\n                self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n        }\n        if (self.altInput) {\n            self.input.type = \"text\";\n            if (self.altInput.parentNode)\n                self.altInput.parentNode.removeChild(self.altInput);\n            delete self.altInput;\n        }\n        if (self.input) {\n            self.input.type = self.input._type;\n            self.input.classList.remove(\"flatpickr-input\");\n            self.input.removeAttribute(\"readonly\");\n        }\n        [\n            \"_showTimeInput\",\n            \"latestSelectedDateObj\",\n            \"_hideNextMonthArrow\",\n            \"_hidePrevMonthArrow\",\n            \"__hideNextMonthArrow\",\n            \"__hidePrevMonthArrow\",\n            \"isMobile\",\n            \"isOpen\",\n            \"selectedDateElem\",\n            \"minDateHasTime\",\n            \"maxDateHasTime\",\n            \"days\",\n            \"daysContainer\",\n            \"_input\",\n            \"_positionElement\",\n            \"innerContainer\",\n            \"rContainer\",\n            \"monthNav\",\n            \"todayDateElem\",\n            \"calendarContainer\",\n            \"weekdayContainer\",\n            \"prevMonthNav\",\n            \"nextMonthNav\",\n            \"monthsDropdownContainer\",\n            \"currentMonthElement\",\n            \"currentYearElement\",\n            \"navigationCurrentMonth\",\n            \"selectedDateElem\",\n            \"config\",\n        ].forEach(function (k) {\n            try {\n                delete self[k];\n            }\n            catch (_) { }\n        });\n    }\n    function isCalendarElem(elem) {\n        return self.calendarContainer.contains(elem);\n    }\n    function documentClick(e) {\n        if (self.isOpen && !self.config.inline) {\n            var eventTarget_1 = getEventTarget(e);\n            var isCalendarElement = isCalendarElem(eventTarget_1);\n            var isInput = eventTarget_1 === self.input ||\n                eventTarget_1 === self.altInput ||\n                self.element.contains(eventTarget_1) ||\n                (e.path &&\n                    e.path.indexOf &&\n                    (~e.path.indexOf(self.input) ||\n                        ~e.path.indexOf(self.altInput)));\n            var lostFocus = !isInput &&\n                !isCalendarElement &&\n                !isCalendarElem(e.relatedTarget);\n            var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n                return elem.contains(eventTarget_1);\n            });\n            if (lostFocus && isIgnored) {\n                if (self.config.allowInput) {\n                    self.setDate(self._input.value, false, self.config.altInput\n                        ? self.config.altFormat\n                        : self.config.dateFormat);\n                }\n                if (self.timeContainer !== undefined &&\n                    self.minuteElement !== undefined &&\n                    self.hourElement !== undefined &&\n                    self.input.value !== \"\" &&\n                    self.input.value !== undefined) {\n                    updateTime();\n                }\n                self.close();\n                if (self.config &&\n                    self.config.mode === \"range\" &&\n                    self.selectedDates.length === 1)\n                    self.clear(false);\n            }\n        }\n    }\n    function changeYear(newYear) {\n        if (!newYear ||\n            (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n            (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n            return;\n        var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n        self.currentYear = newYearNum || self.currentYear;\n        if (self.config.maxDate &&\n            self.currentYear === self.config.maxDate.getFullYear()) {\n            self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n        }\n        else if (self.config.minDate &&\n            self.currentYear === self.config.minDate.getFullYear()) {\n            self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n        }\n        if (isNewYear) {\n            self.redraw();\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n    }\n    function isEnabled(date, timeless) {\n        var _a;\n        if (timeless === void 0) { timeless = true; }\n        var dateToCheck = self.parseDate(date, undefined, timeless);\n        if ((self.config.minDate &&\n            dateToCheck &&\n            compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n            (self.config.maxDate &&\n                dateToCheck &&\n                compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n            return false;\n        if (!self.config.enable && self.config.disable.length === 0)\n            return true;\n        if (dateToCheck === undefined)\n            return false;\n        var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n        for (var i = 0, d = void 0; i < array.length; i++) {\n            d = array[i];\n            if (typeof d === \"function\" &&\n                d(dateToCheck))\n                return bool;\n            else if (d instanceof Date &&\n                dateToCheck !== undefined &&\n                d.getTime() === dateToCheck.getTime())\n                return bool;\n            else if (typeof d === \"string\") {\n                var parsed = self.parseDate(d, undefined, true);\n                return parsed && parsed.getTime() === dateToCheck.getTime()\n                    ? bool\n                    : !bool;\n            }\n            else if (typeof d === \"object\" &&\n                dateToCheck !== undefined &&\n                d.from &&\n                d.to &&\n                dateToCheck.getTime() >= d.from.getTime() &&\n                dateToCheck.getTime() <= d.to.getTime())\n                return bool;\n        }\n        return !bool;\n    }\n    function isInView(elem) {\n        if (self.daysContainer !== undefined)\n            return (elem.className.indexOf(\"hidden\") === -1 &&\n                elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                self.daysContainer.contains(elem));\n        return false;\n    }\n    function onBlur(e) {\n        var isInput = e.target === self._input;\n        var valueChanged = self._input.value.trimEnd() !== getDateStr();\n        if (isInput &&\n            valueChanged &&\n            !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n            self.setDate(self._input.value, true, e.target === self.altInput\n                ? self.config.altFormat\n                : self.config.dateFormat);\n        }\n    }\n    function onKeyDown(e) {\n        var eventTarget = getEventTarget(e);\n        var isInput = self.config.wrap\n            ? element.contains(eventTarget)\n            : eventTarget === self._input;\n        var allowInput = self.config.allowInput;\n        var allowKeydown = self.isOpen && (!allowInput || !isInput);\n        var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n        if (e.keyCode === 13 && isInput) {\n            if (allowInput) {\n                self.setDate(self._input.value, true, eventTarget === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n                self.close();\n                return eventTarget.blur();\n            }\n            else {\n                self.open();\n            }\n        }\n        else if (isCalendarElem(eventTarget) ||\n            allowKeydown ||\n            allowInlineKeydown) {\n            var isTimeObj = !!self.timeContainer &&\n                self.timeContainer.contains(eventTarget);\n            switch (e.keyCode) {\n                case 13:\n                    if (isTimeObj) {\n                        e.preventDefault();\n                        updateTime();\n                        focusAndClose();\n                    }\n                    else\n                        selectDate(e);\n                    break;\n                case 27:\n                    e.preventDefault();\n                    focusAndClose();\n                    break;\n                case 8:\n                case 46:\n                    if (isInput && !self.config.allowInput) {\n                        e.preventDefault();\n                        self.clear();\n                    }\n                    break;\n                case 37:\n                case 39:\n                    if (!isTimeObj && !isInput) {\n                        e.preventDefault();\n                        var activeElement = getClosestActiveElement();\n                        if (self.daysContainer !== undefined &&\n                            (allowInput === false ||\n                                (activeElement && isInView(activeElement)))) {\n                            var delta_1 = e.keyCode === 39 ? 1 : -1;\n                            if (!e.ctrlKey)\n                                focusOnDay(undefined, delta_1);\n                            else {\n                                e.stopPropagation();\n                                changeMonth(delta_1);\n                                focusOnDay(getFirstAvailableDay(1), 0);\n                            }\n                        }\n                    }\n                    else if (self.hourElement)\n                        self.hourElement.focus();\n                    break;\n                case 38:\n                case 40:\n                    e.preventDefault();\n                    var delta = e.keyCode === 40 ? 1 : -1;\n                    if ((self.daysContainer &&\n                        eventTarget.$i !== undefined) ||\n                        eventTarget === self.input ||\n                        eventTarget === self.altInput) {\n                        if (e.ctrlKey) {\n                            e.stopPropagation();\n                            changeYear(self.currentYear - delta);\n                            focusOnDay(getFirstAvailableDay(1), 0);\n                        }\n                        else if (!isTimeObj)\n                            focusOnDay(undefined, delta * 7);\n                    }\n                    else if (eventTarget === self.currentYearElement) {\n                        changeYear(self.currentYear - delta);\n                    }\n                    else if (self.config.enableTime) {\n                        if (!isTimeObj && self.hourElement)\n                            self.hourElement.focus();\n                        updateTime(e);\n                        self._debouncedChange();\n                    }\n                    break;\n                case 9:\n                    if (isTimeObj) {\n                        var elems = [\n                            self.hourElement,\n                            self.minuteElement,\n                            self.secondElement,\n                            self.amPM,\n                        ]\n                            .concat(self.pluginElements)\n                            .filter(function (x) { return x; });\n                        var i = elems.indexOf(eventTarget);\n                        if (i !== -1) {\n                            var target = elems[i + (e.shiftKey ? -1 : 1)];\n                            e.preventDefault();\n                            (target || self._input).focus();\n                        }\n                    }\n                    else if (!self.config.noCalendar &&\n                        self.daysContainer &&\n                        self.daysContainer.contains(eventTarget) &&\n                        e.shiftKey) {\n                        e.preventDefault();\n                        self._input.focus();\n                    }\n                    break;\n                default:\n                    break;\n            }\n        }\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            switch (e.key) {\n                case self.l10n.amPM[0].charAt(0):\n                case self.l10n.amPM[0].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[0];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n                case self.l10n.amPM[1].charAt(0):\n                case self.l10n.amPM[1].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[1];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n            }\n        }\n        if (isInput || isCalendarElem(eventTarget)) {\n            triggerEvent(\"onKeyDown\", e);\n        }\n    }\n    function onMouseOver(elem, cellClass) {\n        if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n        if (self.selectedDates.length !== 1 ||\n            (elem &&\n                (!elem.classList.contains(cellClass) ||\n                    elem.classList.contains(\"flatpickr-disabled\"))))\n            return;\n        var hoverDate = elem\n            ? elem.dateObj.getTime()\n            : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n        var containsDisabled = false;\n        var minRange = 0, maxRange = 0;\n        for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n            if (!isEnabled(new Date(t), true)) {\n                containsDisabled =\n                    containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n                if (t < initialDate && (!minRange || t > minRange))\n                    minRange = t;\n                else if (t > initialDate && (!maxRange || t < maxRange))\n                    maxRange = t;\n            }\n        }\n        var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n        hoverableCells.forEach(function (dayElem) {\n            var date = dayElem.dateObj;\n            var timestamp = date.getTime();\n            var outOfRange = (minRange > 0 && timestamp < minRange) ||\n                (maxRange > 0 && timestamp > maxRange);\n            if (outOfRange) {\n                dayElem.classList.add(\"notAllowed\");\n                [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n                    dayElem.classList.remove(c);\n                });\n                return;\n            }\n            else if (containsDisabled && !outOfRange)\n                return;\n            [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n                dayElem.classList.remove(c);\n            });\n            if (elem !== undefined) {\n                elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n                    ? \"startRange\"\n                    : \"endRange\");\n                if (initialDate < hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"startRange\");\n                else if (initialDate > hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"endRange\");\n                if (timestamp >= minRange &&\n                    (maxRange === 0 || timestamp <= maxRange) &&\n                    isBetween(timestamp, initialDate, hoverDate))\n                    dayElem.classList.add(\"inRange\");\n            }\n        });\n    }\n    function onResize() {\n        if (self.isOpen && !self.config.static && !self.config.inline)\n            positionCalendar();\n    }\n    function open(e, positionElement) {\n        if (positionElement === void 0) { positionElement = self._positionElement; }\n        if (self.isMobile === true) {\n            if (e) {\n                e.preventDefault();\n                var eventTarget = getEventTarget(e);\n                if (eventTarget) {\n                    eventTarget.blur();\n                }\n            }\n            if (self.mobileInput !== undefined) {\n                self.mobileInput.focus();\n                self.mobileInput.click();\n            }\n            triggerEvent(\"onOpen\");\n            return;\n        }\n        else if (self._input.disabled || self.config.inline) {\n            return;\n        }\n        var wasOpen = self.isOpen;\n        self.isOpen = true;\n        if (!wasOpen) {\n            self.calendarContainer.classList.add(\"open\");\n            self._input.classList.add(\"active\");\n            triggerEvent(\"onOpen\");\n            positionCalendar(positionElement);\n        }\n        if (self.config.enableTime === true && self.config.noCalendar === true) {\n            if (self.config.allowInput === false &&\n                (e === undefined ||\n                    !self.timeContainer.contains(e.relatedTarget))) {\n                setTimeout(function () { return self.hourElement.select(); }, 50);\n            }\n        }\n    }\n    function minMaxDateSetter(type) {\n        return function (date) {\n            var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n            var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n            if (dateObj !== undefined) {\n                self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n                    dateObj.getHours() > 0 ||\n                        dateObj.getMinutes() > 0 ||\n                        dateObj.getSeconds() > 0;\n            }\n            if (self.selectedDates) {\n                self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n                if (!self.selectedDates.length && type === \"min\")\n                    setHoursFromDate(dateObj);\n                updateValue();\n            }\n            if (self.daysContainer) {\n                redraw();\n                if (dateObj !== undefined)\n                    self.currentYearElement[type] = dateObj.getFullYear().toString();\n                else\n                    self.currentYearElement.removeAttribute(type);\n                self.currentYearElement.disabled =\n                    !!inverseDateObj &&\n                        dateObj !== undefined &&\n                        inverseDateObj.getFullYear() === dateObj.getFullYear();\n            }\n        };\n    }\n    function parseConfig() {\n        var boolOpts = [\n            \"wrap\",\n            \"weekNumbers\",\n            \"allowInput\",\n            \"allowInvalidPreload\",\n            \"clickOpens\",\n            \"time_24hr\",\n            \"enableTime\",\n            \"noCalendar\",\n            \"altInput\",\n            \"shorthandCurrentMonth\",\n            \"inline\",\n            \"static\",\n            \"enableSeconds\",\n            \"disableMobile\",\n        ];\n        var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n        var formats = {};\n        self.config.parseDate = userConfig.parseDate;\n        self.config.formatDate = userConfig.formatDate;\n        Object.defineProperty(self.config, \"enable\", {\n            get: function () { return self.config._enable; },\n            set: function (dates) {\n                self.config._enable = parseDateRules(dates);\n            },\n        });\n        Object.defineProperty(self.config, \"disable\", {\n            get: function () { return self.config._disable; },\n            set: function (dates) {\n                self.config._disable = parseDateRules(dates);\n            },\n        });\n        var timeMode = userConfig.mode === \"time\";\n        if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n            var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n            formats.dateFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                    : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n        }\n        if (userConfig.altInput &&\n            (userConfig.enableTime || timeMode) &&\n            !userConfig.altFormat) {\n            var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n            formats.altFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                    : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n        }\n        Object.defineProperty(self.config, \"minDate\", {\n            get: function () { return self.config._minDate; },\n            set: minMaxDateSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxDate\", {\n            get: function () { return self.config._maxDate; },\n            set: minMaxDateSetter(\"max\"),\n        });\n        var minMaxTimeSetter = function (type) { return function (val) {\n            self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n        }; };\n        Object.defineProperty(self.config, \"minTime\", {\n            get: function () { return self.config._minTime; },\n            set: minMaxTimeSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxTime\", {\n            get: function () { return self.config._maxTime; },\n            set: minMaxTimeSetter(\"max\"),\n        });\n        if (userConfig.mode === \"time\") {\n            self.config.noCalendar = true;\n            self.config.enableTime = true;\n        }\n        Object.assign(self.config, formats, userConfig);\n        for (var i = 0; i < boolOpts.length; i++)\n            self.config[boolOpts[i]] =\n                self.config[boolOpts[i]] === true ||\n                    self.config[boolOpts[i]] === \"true\";\n        HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n            self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n        });\n        self.isMobile =\n            !self.config.disableMobile &&\n                !self.config.inline &&\n                self.config.mode === \"single\" &&\n                !self.config.disable.length &&\n                !self.config.enable &&\n                !self.config.weekNumbers &&\n                /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n        for (var i = 0; i < self.config.plugins.length; i++) {\n            var pluginConf = self.config.plugins[i](self) || {};\n            for (var key in pluginConf) {\n                if (HOOKS.indexOf(key) > -1) {\n                    self.config[key] = arrayify(pluginConf[key])\n                        .map(bindToInstance)\n                        .concat(self.config[key]);\n                }\n                else if (typeof userConfig[key] === \"undefined\")\n                    self.config[key] = pluginConf[key];\n            }\n        }\n        if (!userConfig.altInputClass) {\n            self.config.altInputClass =\n                getInputElem().className + \" \" + self.config.altInputClass;\n        }\n        triggerEvent(\"onParseConfig\");\n    }\n    function getInputElem() {\n        return self.config.wrap\n            ? element.querySelector(\"[data-input]\")\n            : element;\n    }\n    function setupLocale() {\n        if (typeof self.config.locale !== \"object\" &&\n            typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n            self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n        self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n            ? self.config.locale\n            : self.config.locale !== \"default\"\n                ? flatpickr.l10ns[self.config.locale]\n                : undefined));\n        tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n        tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n        tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n        tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n        tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n        var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n        if (userConfig.time_24hr === undefined &&\n            flatpickr.defaultConfig.time_24hr === undefined) {\n            self.config.time_24hr = self.l10n.time_24hr;\n        }\n        self.formatDate = createDateFormatter(self);\n        self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    }\n    function positionCalendar(customPositionElement) {\n        if (typeof self.config.position === \"function\") {\n            return void self.config.position(self, customPositionElement);\n        }\n        if (self.calendarContainer === undefined)\n            return;\n        triggerEvent(\"onPreCalendarPosition\");\n        var positionElement = customPositionElement || self._positionElement;\n        var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n            (configPosVertical !== \"below\" &&\n                distanceFromBottom < calendarHeight &&\n                inputBounds.top > calendarHeight);\n        var top = window.pageYOffset +\n            inputBounds.top +\n            (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n        toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n        toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n        if (self.config.inline)\n            return;\n        var left = window.pageXOffset + inputBounds.left;\n        var isCenter = false;\n        var isRight = false;\n        if (configPosHorizontal === \"center\") {\n            left -= (calendarWidth - inputBounds.width) / 2;\n            isCenter = true;\n        }\n        else if (configPosHorizontal === \"right\") {\n            left -= calendarWidth - inputBounds.width;\n            isRight = true;\n        }\n        toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n        toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n        toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n        var right = window.document.body.offsetWidth -\n            (window.pageXOffset + inputBounds.right);\n        var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n        var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n        toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n        if (self.config.static)\n            return;\n        self.calendarContainer.style.top = top + \"px\";\n        if (!rightMost) {\n            self.calendarContainer.style.left = left + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n        else if (!centerMost) {\n            self.calendarContainer.style.left = \"auto\";\n            self.calendarContainer.style.right = right + \"px\";\n        }\n        else {\n            var doc = getDocumentStyleSheet();\n            if (doc === undefined)\n                return;\n            var bodyWidth = window.document.body.offsetWidth;\n            var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n            var centerBefore = \".flatpickr-calendar.centerMost:before\";\n            var centerAfter = \".flatpickr-calendar.centerMost:after\";\n            var centerIndex = doc.cssRules.length;\n            var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n            toggleClass(self.calendarContainer, \"rightMost\", false);\n            toggleClass(self.calendarContainer, \"centerMost\", true);\n            doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n            self.calendarContainer.style.left = centerLeft + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n    }\n    function getDocumentStyleSheet() {\n        var editableSheet = null;\n        for (var i = 0; i < document.styleSheets.length; i++) {\n            var sheet = document.styleSheets[i];\n            if (!sheet.cssRules)\n                continue;\n            try {\n                sheet.cssRules;\n            }\n            catch (err) {\n                continue;\n            }\n            editableSheet = sheet;\n            break;\n        }\n        return editableSheet != null ? editableSheet : createStyleSheet();\n    }\n    function createStyleSheet() {\n        var style = document.createElement(\"style\");\n        document.head.appendChild(style);\n        return style.sheet;\n    }\n    function redraw() {\n        if (self.config.noCalendar || self.isMobile)\n            return;\n        buildMonthSwitch();\n        updateNavigationCurrentMonth();\n        buildDays();\n    }\n    function focusAndClose() {\n        self._input.focus();\n        if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n            navigator.msMaxTouchPoints !== undefined) {\n            setTimeout(self.close, 0);\n        }\n        else {\n            self.close();\n        }\n    }\n    function selectDate(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        var isSelectable = function (day) {\n            return day.classList &&\n                day.classList.contains(\"flatpickr-day\") &&\n                !day.classList.contains(\"flatpickr-disabled\") &&\n                !day.classList.contains(\"notAllowed\");\n        };\n        var t = findParent(getEventTarget(e), isSelectable);\n        if (t === undefined)\n            return;\n        var target = t;\n        var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n        var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n            selectedDate.getMonth() >\n                self.currentMonth + self.config.showMonths - 1) &&\n            self.config.mode !== \"range\";\n        self.selectedDateElem = target;\n        if (self.config.mode === \"single\")\n            self.selectedDates = [selectedDate];\n        else if (self.config.mode === \"multiple\") {\n            var selectedIndex = isDateSelected(selectedDate);\n            if (selectedIndex)\n                self.selectedDates.splice(parseInt(selectedIndex), 1);\n            else\n                self.selectedDates.push(selectedDate);\n        }\n        else if (self.config.mode === \"range\") {\n            if (self.selectedDates.length === 2) {\n                self.clear(false, false);\n            }\n            self.latestSelectedDateObj = selectedDate;\n            self.selectedDates.push(selectedDate);\n            if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n                self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n        }\n        setHoursFromInputs();\n        if (shouldChangeMonth) {\n            var isNewYear = self.currentYear !== selectedDate.getFullYear();\n            self.currentYear = selectedDate.getFullYear();\n            self.currentMonth = selectedDate.getMonth();\n            if (isNewYear) {\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            triggerEvent(\"onMonthChange\");\n        }\n        updateNavigationCurrentMonth();\n        buildDays();\n        updateValue();\n        if (!shouldChangeMonth &&\n            self.config.mode !== \"range\" &&\n            self.config.showMonths === 1)\n            focusOnDayElem(target);\n        else if (self.selectedDateElem !== undefined &&\n            self.hourElement === undefined) {\n            self.selectedDateElem && self.selectedDateElem.focus();\n        }\n        if (self.hourElement !== undefined)\n            self.hourElement !== undefined && self.hourElement.focus();\n        if (self.config.closeOnSelect) {\n            var single = self.config.mode === \"single\" && !self.config.enableTime;\n            var range = self.config.mode === \"range\" &&\n                self.selectedDates.length === 2 &&\n                !self.config.enableTime;\n            if (single || range) {\n                focusAndClose();\n            }\n        }\n        triggerChange();\n    }\n    var CALLBACKS = {\n        locale: [setupLocale, updateWeekdays],\n        showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n        minDate: [jumpToDate],\n        maxDate: [jumpToDate],\n        positionElement: [updatePositionElement],\n        clickOpens: [\n            function () {\n                if (self.config.clickOpens === true) {\n                    bind(self._input, \"focus\", self.open);\n                    bind(self._input, \"click\", self.open);\n                }\n                else {\n                    self._input.removeEventListener(\"focus\", self.open);\n                    self._input.removeEventListener(\"click\", self.open);\n                }\n            },\n        ],\n    };\n    function set(option, value) {\n        if (option !== null && typeof option === \"object\") {\n            Object.assign(self.config, option);\n            for (var key in option) {\n                if (CALLBACKS[key] !== undefined)\n                    CALLBACKS[key].forEach(function (x) { return x(); });\n            }\n        }\n        else {\n            self.config[option] = value;\n            if (CALLBACKS[option] !== undefined)\n                CALLBACKS[option].forEach(function (x) { return x(); });\n            else if (HOOKS.indexOf(option) > -1)\n                self.config[option] = arrayify(value);\n        }\n        self.redraw();\n        updateValue(true);\n    }\n    function setSelectedDate(inputDate, format) {\n        var dates = [];\n        if (inputDate instanceof Array)\n            dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n        else if (inputDate instanceof Date || typeof inputDate === \"number\")\n            dates = [self.parseDate(inputDate, format)];\n        else if (typeof inputDate === \"string\") {\n            switch (self.config.mode) {\n                case \"single\":\n                case \"time\":\n                    dates = [self.parseDate(inputDate, format)];\n                    break;\n                case \"multiple\":\n                    dates = inputDate\n                        .split(self.config.conjunction)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                case \"range\":\n                    dates = inputDate\n                        .split(self.l10n.rangeSeparator)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                default:\n                    break;\n            }\n        }\n        else\n            self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n        self.selectedDates = (self.config.allowInvalidPreload\n            ? dates\n            : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n        if (self.config.mode === \"range\")\n            self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n    }\n    function setDate(date, triggerChange, format) {\n        if (triggerChange === void 0) { triggerChange = false; }\n        if (format === void 0) { format = self.config.dateFormat; }\n        if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n            return self.clear(triggerChange);\n        setSelectedDate(date, format);\n        self.latestSelectedDateObj =\n            self.selectedDates[self.selectedDates.length - 1];\n        self.redraw();\n        jumpToDate(undefined, triggerChange);\n        setHoursFromDate();\n        if (self.selectedDates.length === 0) {\n            self.clear(false);\n        }\n        updateValue(triggerChange);\n        if (triggerChange)\n            triggerEvent(\"onChange\");\n    }\n    function parseDateRules(arr) {\n        return arr\n            .slice()\n            .map(function (rule) {\n            if (typeof rule === \"string\" ||\n                typeof rule === \"number\" ||\n                rule instanceof Date) {\n                return self.parseDate(rule, undefined, true);\n            }\n            else if (rule &&\n                typeof rule === \"object\" &&\n                rule.from &&\n                rule.to)\n                return {\n                    from: self.parseDate(rule.from, undefined),\n                    to: self.parseDate(rule.to, undefined),\n                };\n            return rule;\n        })\n            .filter(function (x) { return x; });\n    }\n    function setupDates() {\n        self.selectedDates = [];\n        self.now = self.parseDate(self.config.now) || new Date();\n        var preloadedDate = self.config.defaultDate ||\n            ((self.input.nodeName === \"INPUT\" ||\n                self.input.nodeName === \"TEXTAREA\") &&\n                self.input.placeholder &&\n                self.input.value === self.input.placeholder\n                ? null\n                : self.input.value);\n        if (preloadedDate)\n            setSelectedDate(preloadedDate, self.config.dateFormat);\n        self._initialDate =\n            self.selectedDates.length > 0\n                ? self.selectedDates[0]\n                : self.config.minDate &&\n                    self.config.minDate.getTime() > self.now.getTime()\n                    ? self.config.minDate\n                    : self.config.maxDate &&\n                        self.config.maxDate.getTime() < self.now.getTime()\n                        ? self.config.maxDate\n                        : self.now;\n        self.currentYear = self._initialDate.getFullYear();\n        self.currentMonth = self._initialDate.getMonth();\n        if (self.selectedDates.length > 0)\n            self.latestSelectedDateObj = self.selectedDates[0];\n        if (self.config.minTime !== undefined)\n            self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n        if (self.config.maxTime !== undefined)\n            self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n        self.minDateHasTime =\n            !!self.config.minDate &&\n                (self.config.minDate.getHours() > 0 ||\n                    self.config.minDate.getMinutes() > 0 ||\n                    self.config.minDate.getSeconds() > 0);\n        self.maxDateHasTime =\n            !!self.config.maxDate &&\n                (self.config.maxDate.getHours() > 0 ||\n                    self.config.maxDate.getMinutes() > 0 ||\n                    self.config.maxDate.getSeconds() > 0);\n    }\n    function setupInputs() {\n        self.input = getInputElem();\n        if (!self.input) {\n            self.config.errorHandler(new Error(\"Invalid input element specified\"));\n            return;\n        }\n        self.input._type = self.input.type;\n        self.input.type = \"text\";\n        self.input.classList.add(\"flatpickr-input\");\n        self._input = self.input;\n        if (self.config.altInput) {\n            self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n            self._input = self.altInput;\n            self.altInput.placeholder = self.input.placeholder;\n            self.altInput.disabled = self.input.disabled;\n            self.altInput.required = self.input.required;\n            self.altInput.tabIndex = self.input.tabIndex;\n            self.altInput.type = \"text\";\n            self.input.setAttribute(\"type\", \"hidden\");\n            if (!self.config.static && self.input.parentNode)\n                self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n        }\n        if (!self.config.allowInput)\n            self._input.setAttribute(\"readonly\", \"readonly\");\n        updatePositionElement();\n    }\n    function updatePositionElement() {\n        self._positionElement = self.config.positionElement || self._input;\n    }\n    function setupMobile() {\n        var inputType = self.config.enableTime\n            ? self.config.noCalendar\n                ? \"time\"\n                : \"datetime-local\"\n            : \"date\";\n        self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n        self.mobileInput.tabIndex = 1;\n        self.mobileInput.type = inputType;\n        self.mobileInput.disabled = self.input.disabled;\n        self.mobileInput.required = self.input.required;\n        self.mobileInput.placeholder = self.input.placeholder;\n        self.mobileFormatStr =\n            inputType === \"datetime-local\"\n                ? \"Y-m-d\\\\TH:i:S\"\n                : inputType === \"date\"\n                    ? \"Y-m-d\"\n                    : \"H:i:S\";\n        if (self.selectedDates.length > 0) {\n            self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n        }\n        if (self.config.minDate)\n            self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n        if (self.config.maxDate)\n            self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n        if (self.input.getAttribute(\"step\"))\n            self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n        self.input.type = \"hidden\";\n        if (self.altInput !== undefined)\n            self.altInput.type = \"hidden\";\n        try {\n            if (self.input.parentNode)\n                self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n        }\n        catch (_a) { }\n        bind(self.mobileInput, \"change\", function (e) {\n            self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n            triggerEvent(\"onChange\");\n            triggerEvent(\"onClose\");\n        });\n    }\n    function toggle(e) {\n        if (self.isOpen === true)\n            return self.close();\n        self.open(e);\n    }\n    function triggerEvent(event, data) {\n        if (self.config === undefined)\n            return;\n        var hooks = self.config[event];\n        if (hooks !== undefined && hooks.length > 0) {\n            for (var i = 0; hooks[i] && i < hooks.length; i++)\n                hooks[i](self.selectedDates, self.input.value, self, data);\n        }\n        if (event === \"onChange\") {\n            self.input.dispatchEvent(createEvent(\"change\"));\n            self.input.dispatchEvent(createEvent(\"input\"));\n        }\n    }\n    function createEvent(name) {\n        var e = document.createEvent(\"Event\");\n        e.initEvent(name, true, true);\n        return e;\n    }\n    function isDateSelected(date) {\n        for (var i = 0; i < self.selectedDates.length; i++) {\n            var selectedDate = self.selectedDates[i];\n            if (selectedDate instanceof Date &&\n                compareDates(selectedDate, date) === 0)\n                return \"\" + i;\n        }\n        return false;\n    }\n    function isDateInRange(date) {\n        if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n            return false;\n        return (compareDates(date, self.selectedDates[0]) >= 0 &&\n            compareDates(date, self.selectedDates[1]) <= 0);\n    }\n    function updateNavigationCurrentMonth() {\n        if (self.config.noCalendar || self.isMobile || !self.monthNav)\n            return;\n        self.yearElements.forEach(function (yearElement, i) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                self.monthElements[i].textContent =\n                    monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n            }\n            else {\n                self.monthsDropdownContainer.value = d.getMonth().toString();\n            }\n            yearElement.value = d.getFullYear().toString();\n        });\n        self._hidePrevMonthArrow =\n            self.config.minDate !== undefined &&\n                (self.currentYear === self.config.minDate.getFullYear()\n                    ? self.currentMonth <= self.config.minDate.getMonth()\n                    : self.currentYear < self.config.minDate.getFullYear());\n        self._hideNextMonthArrow =\n            self.config.maxDate !== undefined &&\n                (self.currentYear === self.config.maxDate.getFullYear()\n                    ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n                    : self.currentYear > self.config.maxDate.getFullYear());\n    }\n    function getDateStr(specificFormat) {\n        var format = specificFormat ||\n            (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n        return self.selectedDates\n            .map(function (dObj) { return self.formatDate(dObj, format); })\n            .filter(function (d, i, arr) {\n            return self.config.mode !== \"range\" ||\n                self.config.enableTime ||\n                arr.indexOf(d) === i;\n        })\n            .join(self.config.mode !== \"range\"\n            ? self.config.conjunction\n            : self.l10n.rangeSeparator);\n    }\n    function updateValue(triggerChange) {\n        if (triggerChange === void 0) { triggerChange = true; }\n        if (self.mobileInput !== undefined && self.mobileFormatStr) {\n            self.mobileInput.value =\n                self.latestSelectedDateObj !== undefined\n                    ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n                    : \"\";\n        }\n        self.input.value = getDateStr(self.config.dateFormat);\n        if (self.altInput !== undefined) {\n            self.altInput.value = getDateStr(self.config.altFormat);\n        }\n        if (triggerChange !== false)\n            triggerEvent(\"onValueUpdate\");\n    }\n    function onMonthNavClick(e) {\n        var eventTarget = getEventTarget(e);\n        var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n        var isNextMonth = self.nextMonthNav.contains(eventTarget);\n        if (isPrevMonth || isNextMonth) {\n            changeMonth(isPrevMonth ? -1 : 1);\n        }\n        else if (self.yearElements.indexOf(eventTarget) >= 0) {\n            eventTarget.select();\n        }\n        else if (eventTarget.classList.contains(\"arrowUp\")) {\n            self.changeYear(self.currentYear + 1);\n        }\n        else if (eventTarget.classList.contains(\"arrowDown\")) {\n            self.changeYear(self.currentYear - 1);\n        }\n    }\n    function timeWrapper(e) {\n        e.preventDefault();\n        var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            self.amPM.textContent =\n                self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n        }\n        var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n            (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n        var newValue = curValue + step * delta;\n        if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n            var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n            if (newValue < min) {\n                newValue =\n                    max +\n                        newValue +\n                        int(!isHourElem) +\n                        (int(isHourElem) && int(!self.amPM));\n                if (isMinuteElem)\n                    incrementNumInput(undefined, -1, self.hourElement);\n            }\n            else if (newValue > max) {\n                newValue =\n                    input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n                if (isMinuteElem)\n                    incrementNumInput(undefined, 1, self.hourElement);\n            }\n            if (self.amPM &&\n                isHourElem &&\n                (step === 1\n                    ? newValue + curValue === 23\n                    : Math.abs(newValue - curValue) > step)) {\n                self.amPM.textContent =\n                    self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n            }\n            input.value = pad(newValue);\n        }\n    }\n    init();\n    return self;\n}\nfunction _flatpickr(nodeList, config) {\n    var nodes = Array.prototype.slice\n        .call(nodeList)\n        .filter(function (x) { return x instanceof HTMLElement; });\n    var instances = [];\n    for (var i = 0; i < nodes.length; i++) {\n        var node = nodes[i];\n        try {\n            if (node.getAttribute(\"data-fp-omit\") !== null)\n                continue;\n            if (node._flatpickr !== undefined) {\n                node._flatpickr.destroy();\n                node._flatpickr = undefined;\n            }\n            node._flatpickr = FlatpickrInstance(node, config || {});\n            instances.push(node._flatpickr);\n        }\n        catch (e) {\n            console.error(e);\n        }\n    }\n    return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n    typeof HTMLCollection !== \"undefined\" &&\n    typeof NodeList !== \"undefined\") {\n    HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n    HTMLElement.prototype.flatpickr = function (config) {\n        return _flatpickr([this], config);\n    };\n}\nvar flatpickr = function (selector, config) {\n    if (typeof selector === \"string\") {\n        return _flatpickr(window.document.querySelectorAll(selector), config);\n    }\n    else if (selector instanceof Node) {\n        return _flatpickr([selector], config);\n    }\n    else {\n        return _flatpickr(selector, config);\n    }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n    en: __assign({}, English),\n    default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n    flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n    flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n    jQuery.fn.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n}\nDate.prototype.fp_incr = function (days) {\n    return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n    window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "import { Controller } from \"@hotwired/stimulus\"\nimport flatpickr from \"flatpickr\";\n\nimport monthSelectPlugin from \"flatpickr/dist/plugins/monthSelect\";\nrequire(\"flatpickr/dist/plugins/monthSelect/style.css\")\n\n\n// Connects to data-controller=\"month-picker\"\nexport default class extends Controller {\n  static targets = [\"monthPicker\"]\n\n  static values = {\n    initialMonth: String,\n    maxDate: String,\n    minDate: String\n  }\n\n  connect() {\n    this.picker = flatpickr(this.monthPickerTarget, {\n      enableTime: true,\n      maxDate: this.maxDateValue || 'today',\n      minDate: this.minDateValue || new Date().fp_incr(-365),\n      defaultDate: this.initialMonthValue || null,\n      plugins: [new monthSelectPlugin({\n        shorthand: true, //defaults to false\n        dateFormat: \"Y-m\", //defaults to \"F Y\"\n        altFormat: \"Y-m\", //defaults to \"F Y\"\n      })],\n      disableMobile: true\n    });\n  }\n\n  disconnect() {\n    this.picker.destroy();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport flatpickr from \"flatpickr\";\n\n// Connects to data-controller=\"date-picker\"\nexport default class extends Controller {\n  static targets = [\"datePicker\"];\n\n  static values = {\n    initialDate: String,\n    maxDate: String,\n    minDate: String,\n    altInputClass: String,\n  };\n\n  connect() {\n    // In static mode flatpickr moves the input into a wrapper div, which\n    // makes Stimulus disconnect/reconnect this controller \u2014 reuse the\n    // existing instance instead of re-initializing in a loop.\n    if (this.datePickerTarget._flatpickr) {\n      this.picker = this.datePickerTarget._flatpickr;\n      return;\n    }\n\n    const options = {\n      altInput: true,\n      altFormat: \"F j, Y\",\n      enableTime: false,\n      maxDate: this.maxDateValue || 'today',\n      minDate: this.minDateValue || new Date().fp_incr(-365),\n      defaultDate: new Date(this.initialDateValue) || null,\n      dateFormat: \"Y-m-d\",\n      // Inside a <dialog> (top layer) the body-appended calendar renders\n      // behind the modal, so render it next to the input instead.\n      static: !!this.element.closest(\"dialog\"),\n    }\n    // flatpickr's visible alt input takes its class ONLY from altInputClass\n    // (default: daisyUI \"form-control input\"), dropping the source input's\n    // styling. Copy the source classes so pp-input fields keep their look;\n    // data-date-picker-alt-input-class-value still overrides when set.\n    options.altInputClass = this.altInputClassValue || this.datePickerTarget.className;\n    this.picker = flatpickr(this.datePickerTarget, options);\n\n    // flatpickr's own CSS hardcodes `.flatpickr-wrapper { display: inline-block }`,\n    // which collapses w-full inputs inside the wrapper it creates in static mode.\n    // Fix it on this instance's wrapper only, instead of overriding the class globally.\n    if (options.static) {\n      this.datePickerTarget.parentElement.classList.add(\"block\", \"w-full\");\n    }\n  }\n\n  disconnect() {\n    // Skip destroy when the element was only moved within the page (e.g.\n    // into flatpickr's static-mode wrapper), not removed from it.\n    if (!this.element.isConnected) this.picker.destroy();\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\nimport flatpickr from \"flatpickr\";\nimport rangePlugin from \"flatpickr/dist/plugins/rangePlugin\";\n\n\n// Connects to data-controller=\"month-picker\"\nexport default class extends Controller {\n  static targets = [\"firstDateInput\", \"secondDateInput\"]\n\n  static values = {\n    initialDate: String,\n    endDate: String,\n    maxDate: String,\n    minDate: String\n  }\n\n  connect() {\n    this.picker = flatpickr(this.firstDateInputTarget, {\n      enableTime: false,\n      maxDate: this.maxDateValue || 'today',\n      minDate: this.minDateValue || new Date(2020,0.1),\n      defaultDate: new Date(this.initialDateValue) || null,\n      dateFormat: \"Y-m-d\",\n\n      plugins: [new rangePlugin({ input: this.secondDateInputTarget})],\n      disableMobile: true,\n      onReady: () => {\n        // \u2705 Set second date manually if provided\n        if (this.endDateValue) {\n          this.secondDateInputTarget.value = this.endDateValue;\n        }\n      }\n    });\n  }\n\n\n  disconnect() {\n    this.picker.destroy();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport flatpickr from \"flatpickr\";\n\n// Connects to data-controller=\"date-time-picker\"\nexport default class extends Controller {\n  static targets = [\"dateTimePicker\"];\n\n  static values = {\n    initialDate: String,\n    maxDate: String,\n    minDate: String,\n  };\n\n  connect() {\n    // A native <dialog> shown via showModal() (e.g. the my_shop \"shop-modal\"\n    // controller) renders in the browser's top layer, above all regular DOM\n    // content regardless of z-index. Flatpickr's calendar defaults to\n    // appending itself to document.body, which is outside that top layer and\n    // so gets stuck rendering behind the dialog. Append inside the dialog\n    // instead so the calendar shares its stacking context.\n    const dialog = this.element.closest(\"dialog\");\n\n    this.picker = flatpickr(this.dateTimePickerTarget, {\n      enableTime: true,\n      maxDate: this.maxDateValue || new Date().fp_incr(365),\n      minDate: this.minDateValue || new Date().fp_incr(-365),\n      defaultDate: this.initialDateValue || null,\n      dateFormat: \"Y-m-d H:i\",\n      appendTo: dialog || document.body\n    });\n  }\n\n  disconnect() {\n    this.picker.destroy();\n  }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"tickets\"\nexport default class extends Controller {\n  static targets = [ \"filtersForm\", \"dueTodayButton\", \"dueRangeButton\", \"dueAllButton\", \"singleDateWrapper\", \"rangeWrapper\", \"dueModeInput\", \"priorityChip\", \"statusChip\", \"priorityInput\", \"statusInput\"]\n\n  connect() {\n    if (this.hasDueModeInputTarget) {\n      const mode = this.dueModeInputTarget.value || \"today\"\n      this.updateDueModeButtons(mode)\n    }\n\n    // Ensure chips reflect any pre-selected filters on initial load\n    this.updatePriorityChipStyles()\n    this.updateStatusChipStyles()\n  }\n\n  // ----- Due date mode -----\n  updateDueModeButtons(mode) {\n    if (!this.hasDueTodayButtonTarget) return\n\n    this.dueTodayButtonTarget.dataset.active = mode === \"today\"\n    this.dueRangeButtonTarget.dataset.active = mode === \"range\"\n    this.dueAllButtonTarget.dataset.active = mode === \"all\"\n\n    if (this.hasSingleDateWrapperTarget) {\n      this.singleDateWrapperTarget.hidden = mode !== \"today\"\n    }\n    if (this.hasRangeWrapperTarget) {\n      this.rangeWrapperTarget.hidden = mode !== \"range\"\n    }\n\n    if (this.hasDueModeInputTarget) {\n      this.dueModeInputTarget.value = mode\n    }\n  }\n\n  setDueToday() {\n    this.updateDueModeButtons(\"today\")\n  }\n\n  setDueRange() {\n    this.updateDueModeButtons(\"range\")\n  }\n\n  setDueAll() {\n    this.updateDueModeButtons(\"all\")\n  }\n\n  // ----- Priority chips (multi-select) -----\n  togglePriority(event) {\n    const value = event.currentTarget.dataset.priorityValue\n\n    this.toggleChip({\n      value,\n      inputName: \"priorities[]\",\n      inputTargetName: \"priorityInput\",\n      updateStyles: () => this.updatePriorityChipStyles()\n    })\n  }\n\n  updatePriorityChipStyles() {\n    const activeValues = this.priorityInputTargets.map((i) => i.value)\n\n    this.priorityChipTargets.forEach((chip) => {\n      const value = chip.dataset.priorityValue\n      const active = activeValues.includes(value)\n      chip.classList.toggle(\"bg-[#0f4c81]\", active)\n      chip.classList.toggle(\"text-white\", active)\n      chip.classList.toggle(\"border-[#0f4c81]\", active)\n    })\n  }\n\n  // ----- Status chips (multi-select) -----\n  toggleStatus(event) {\n    const value = event.currentTarget.dataset.statusValue\n\n    this.toggleChip({\n      value,\n      inputName: \"statuses[]\",\n      inputTargetName: \"statusInput\",\n      updateStyles: () => this.updateStatusChipStyles()\n    })\n  }\n\n  updateStatusChipStyles() {\n    const activeValues = this.statusInputTargets.map((i) => i.value)\n\n    this.statusChipTargets.forEach((chip) => {\n      const value = chip.dataset.statusValue\n      const active = activeValues.includes(value)\n      chip.classList.toggle(\"bg-[#0f4c81]\", active)\n      chip.classList.toggle(\"text-white\", active)\n      chip.classList.toggle(\"border-[#0f4c81]\", active)\n    })\n  }\n\n  // ----- Shared helpers -----\n  toggleChip({ value, inputName, inputTargetName, updateStyles }) {\n    if (!this.hasFiltersFormTarget) return\n\n    const inputs = this[`${inputTargetName}Targets`]\n    const existing = inputs.find((input) => input.value === value)\n\n    if (existing) {\n      existing.remove()\n    } else {\n      const input = document.createElement(\"input\")\n      input.type = \"hidden\"\n      input.name = inputName\n      input.value = value\n      input.dataset.ticketsTarget = inputTargetName\n      this.filtersFormTarget.appendChild(input)\n    }\n\n    updateStyles()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Handles updating the Lead Source By Month chart when the year changes\nexport default class extends Controller {\n  static targets = [\"year\"]\n\n  leadSourceByYear() {\n    const year = this.yearTarget.value\n    const chart = Chartkick.charts[\"lead-source-year-chart\"]\n\n    if (chart && year) {\n      chart.updateData(`/sales/lead_source_by_month_for_year?year=${year}`)\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"template\", \"container\"]\n\n  connect() {\n  console.log(\"Nested form controller connected!\")\n}\n\n  add(e) {\n    e.preventDefault()\n\n    let content = this.templateTarget.innerHTML\n                  .replace(/NEW_RECORD/g, new Date().getTime())\n\n    this.containerTarget.insertAdjacentHTML(\"beforeend\", content)\n  }\n\n  remove(e) {\n    e.preventDefault()\n  \n    const wrapper = e.target.closest(\"[data-new-record]\")\n    const isNew = wrapper.dataset.newRecord === \"true\"\n  \n    if (isNew) {\n      // New record \u2192 remove completely\n      wrapper.remove()\n    } else {\n      // Existing record \u2192 mark for destruction\n      const destroyField = wrapper.querySelector(\"input[name*='_destroy']\")\n      destroyField.value = \"1\"\n      wrapper.style.display = \"none\"\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"type\", \"imageField\", \"videoField\", \"previewImageField\", \"videoUrl\", \"startDate\", \"endDate\"]\n\n  connect() {\n    this.setStartDateMin()\n    this.toggle()\n  }\n\n  toggle() {\n    const value = this.typeTarget.value\n    const isVideo = value === \"video\"\n\n    this.imageFieldTarget.classList.toggle(\"hidden\", isVideo)\n    this.videoFieldTarget.classList.toggle(\"hidden\", !isVideo)\n    this.previewImageFieldTarget.classList.toggle(\"hidden\", !isVideo)\n\n    if (this.hasVideoUrlTarget) {\n      this.videoUrlTarget.required = isVideo\n    }\n  }\n\n  updateEndMin() {\n    if (!this.hasStartDateTarget || !this.hasEndDateTarget) return\n\n    const startVal = this.startDateTarget.value\n    if (!startVal) return\n\n    this.endDateTarget.min = startVal\n\n    if (this.endDateTarget.value && this.endDateTarget.value < startVal) {\n      this.endDateTarget.value = startVal\n    }\n  }\n\n  setStartDateMin() {\n    if (!this.hasStartDateTarget) return\n\n    const today = new Date().toISOString().split(\"T\")[0]\n    this.startDateTarget.min = today\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport Sortable from 'sortablejs'\n\n// Connects to data-controller=\"row-sort\". Drag-reorders the rows of any\n// acts_as_list-backed table (categories, online products, ...) and PATCHes\n// the new order to data-reorder-url. Each row needs a data-sort-id=\"<id>\".\nexport default class extends Controller {\n  connect () {\n    this.sortable = new Sortable(this.element, {\n      animation: 150,\n      handle: '[data-drag-handle]',\n      onEnd: this.onEnd.bind(this)\n    })\n  }\n\n  disconnect () {\n    this.sortable.destroy()\n  }\n\n  onEnd () {\n    const ids = [...this.element.querySelectorAll('[data-sort-id]')].map(el => el.dataset.sortId)\n    const token = document.querySelector('meta[name=\"csrf-token\"]').content\n\n    fetch(this.element.dataset.reorderUrl, {\n      method: 'PATCH',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-CSRF-Token': token,\n        'Accept': 'application/json'\n      },\n      body: JSON.stringify({ ids })\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['depositField', 'cutoffDaysInput', 'cutoffHint']\n\n  connect () {\n    this.updateCutoffHint()\n  }\n\n  updateCutoffHint () {\n    if (!this.hasCutoffDaysInputTarget || !this.hasCutoffHintTarget) return\n\n    const rawValue = this.cutoffDaysInputTarget.value.trim()\n\n    if (rawValue === '') {\n      this.cutoffHintTarget.textContent = 'Customers can book this product any day.'\n      return\n    }\n\n    const days = parseInt(rawValue, 10) || 0\n\n    this.cutoffHintTarget.textContent = days === 0\n      ? 'Customers can book this product for same-day delivery.'\n      : `Customers must place the order ${days} day${days === 1 ? '' : 's'} before delivery.`\n  }\n\n  toggleDeposit () {\n    const select = this.element.querySelector('select[name=\"online_product[product_id]\"]')\n    if (!select) return\n\n    const selected = select.options[select.selectedIndex]\n    const returnable = selected && selected.dataset.returnable === 'true'\n\n    this.depositFieldTargets.forEach(el => {\n      el.hidden = !returnable\n      el.classList.toggle('hidden', !returnable)\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\n    'discountFields',\n    'cashbackFields',\n    'promoCodeField',\n    'discountPercentageField',\n    'fixedDiscountField',\n    'maxDiscountField',\n    'flatDiscountSection',\n    'flatDiscountCheckbox'\n  ]\n\n  connect () {\n    this.updateFields()\n  }\n\n  updateFields () {\n    const type = this.discountTypeSelect()?.value\n    // For persisted records there is no select \u2014 server-side rendering handles initial state\n    if (!type) return\n\n    const isWalletTopup = type === 'wallet_topup'\n    const isPromo = type === 'promo'\n    const showsFlatToggle = type === 'cod' || type === 'online_payment' || isPromo\n\n    this.toggle(this.discountFieldsTargets, showsFlatToggle)\n    this.toggle(this.cashbackFieldsTargets, isWalletTopup)\n    this.toggle(this.promoCodeFieldTargets, isPromo)\n    this.toggle(this.flatDiscountSectionTargets, showsFlatToggle)\n\n    if (showsFlatToggle) {\n      this.applyFlatDiscountMode()\n    }\n  }\n\n  updateDiscountType () {\n    this.updateFields()\n    this.clearAmounts()\n  }\n\n  // Fired when the \"Want to apply flat discount?\" checkbox changes (create only)\n  toggleFlatDiscount () {\n    this.clearDiscountAmounts()\n    this.applyFlatDiscountMode()\n  }\n\n  // Fired when the discount percentage input changes\n  onPercentageInput () {\n    const isFlat = this.hasFlatDiscountCheckboxTarget && this.flatDiscountCheckboxTarget.checked\n\n    if (!isFlat) {\n      this.toggle(this.maxDiscountFieldTargets, this.percentageValue() > 0)\n    }\n  }\n\n  applyFlatDiscountMode () {\n    const isFlat = this.hasFlatDiscountCheckboxTarget && this.flatDiscountCheckboxTarget.checked\n\n    this.toggle(this.discountPercentageFieldTargets, !isFlat)\n    this.toggle(this.maxDiscountFieldTargets, !isFlat)\n    this.toggle(this.fixedDiscountFieldTargets, isFlat)\n\n    // Zero out whichever side is now hidden so a stale value (e.g. re-rendered\n    // after a failed submit, when the checkbox always comes back unchecked)\n    // never rides along into the next submit alongside the visible side.\n    if (isFlat) {\n      this.clearFields(['discount_percentage', 'max_discount_amount'])\n    } else {\n      this.clearFields(['fixed_discount'])\n    }\n  }\n\n  percentageValue () {\n    const input = this.element.querySelector('input[name*=\"discount_percentage\"]')\n    return input ? parseFloat(input.value) || 0 : 0\n  }\n\n  toggle (targets, visible) {\n    targets.forEach(el => {\n      el.hidden = !visible\n      el.classList.toggle('hidden', !visible)\n    })\n  }\n\n  discountTypeSelect () {\n    return this.element.querySelector('select[name=\"white_label_online_discount[discount_type]\"]')\n  }\n\n  clearFields (names) {\n    names.forEach(name => {\n      const input = this.element.querySelector(`input[name*=\"${name}\"]`)\n      if (input) input.value = 0\n    })\n  }\n\n  clearAmounts () {\n    this.clearFields(['cashback_value', 'discount_percentage', 'fixed_discount', 'max_discount_amount'])\n    const promoInput = this.element.querySelector('input[name*=\"promo_code\"]')\n    if (promoInput) promoInput.value = ''\n  }\n\n  clearDiscountAmounts () {\n    this.clearFields(['discount_percentage', 'fixed_discount', 'max_discount_amount'])\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"tab\"]\n\n  activate({ currentTarget }) {\n    const active   = (this.element.dataset.tabActiveClasses   || \"\").split(\" \").filter(Boolean)\n    const inactive = (this.element.dataset.tabInactiveClasses || \"\").split(\" \").filter(Boolean)\n    this.tabTargets.forEach(tab => {\n      const isActive = tab === currentTarget\n      active.forEach(c   => tab.classList.toggle(c, isActive))\n      inactive.forEach(c => tab.classList.toggle(c, !isActive))\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  connect() {\n    this.element.showModal()\n  }\n\n  close(event) {\n    if (event) event.preventDefault()\n    this.element.close()\n    const frame = document.getElementById(\"modal\")\n    if (frame) frame.innerHTML = \"\"\n  }\n\n  disconnect() {\n    if (this.element.open) this.element.close()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Manages tab buttons + their corresponding panels in one place.\n// Tab buttons: data-panel-tabs-target=\"tab\" data-panel-target=\"<panel-id>\"\n// Panels:      data-panel-tabs-target=\"panel\" id=\"<panel-id>\"\nexport default class extends Controller {\n  static targets = [\"tab\", \"panel\"]\n\n  activate({ currentTarget }) {\n    const targetPanelId = currentTarget.dataset.panelTarget\n\n    this.tabTargets.forEach(tab => {\n      tab.classList.toggle(\"tab-active\", tab === currentTarget)\n    })\n\n    this.panelTargets.forEach(panel => {\n      panel.classList.toggle(\"hidden\", panel.id !== targetPanelId)\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"tag-input\"\n// Renders the comma-separated value of a hidden field as removable chips,\n// with a text input for adding new ones (Enter or comma to add, Backspace\n// on an empty input to pop the last chip).\nexport default class extends Controller {\n  static targets = [\"chips\", \"input\", \"hidden\"]\n\n  connect() {\n    this.tags = this.parse(this.hiddenTarget.value)\n    this.render()\n  }\n\n  keydown(event) {\n    if (event.key === \"Enter\" || event.key === \",\") {\n      event.preventDefault()\n      this.addFromInput()\n    } else if (event.key === \"Backspace\" && this.inputTarget.value === \"\" && this.tags.length > 0) {\n      event.preventDefault()\n      this.tags.pop()\n      this.render()\n    }\n  }\n\n  addFromInput() {\n    const value = this.inputTarget.value.trim().replace(/,$/, \"\")\n    this.inputTarget.value = \"\"\n    if (value.length === 0) return\n    if (!this.tags.includes(value)) this.tags.push(value)\n    this.render()\n  }\n\n  remove(event) {\n    const index = Number(event.currentTarget.dataset.index)\n    this.tags.splice(index, 1)\n    this.render()\n  }\n\n  parse(value) {\n    return value\n      .split(\",\")\n      .map((tag) => tag.trim())\n      .filter((tag) => tag.length > 0)\n  }\n\n  render() {\n    this.hiddenTarget.value = this.tags.join(\", \")\n    this.chipsTarget.innerHTML = this.tags\n      .map((tag, index) => {\n        const safe = this.escapeHtml(tag)\n        return `<span class=\"inline-flex items-center gap-1 bg-gray-100 text-sm rounded-full pl-3 pr-2 py-1\">\n          ${safe}\n          <button type=\"button\" data-action=\"tag-input#remove\" data-index=\"${index}\" aria-label=\"Remove ${safe}\" class=\"text-gray-500 hover:text-gray-800 leading-none\">&times;</button>\n        </span>`\n      })\n      .join(\"\")\n  }\n\n  escapeHtml(text) {\n    const div = document.createElement(\"div\")\n    div.textContent = text\n    return div.innerHTML\n  }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\nimport 'swiper/css/bundle'\nrequire(\"flatpickr/dist/flatpickr.css\")\n\nimport ThemeController from \"./theme_controller\"\napplication.register(\"theme\", ThemeController)\n\nimport AlertController from \"./alert_controller\"\napplication.register(\"alert\", AlertController)\n\nimport AnimatedNumber from '@stimulus-components/animated-number'\napplication.register('animated-number', AnimatedNumber)\n\nimport AmountValidatorController from \"./amount_validator_controller\"\napplication.register(\"amount-validator\", AmountValidatorController)\n\nimport AosController from \"./aos_controller\"\napplication.register(\"aos\", AosController)\n\nimport ApplyGstController from \"./apply_gst_controller\"\napplication.register(\"apply-gst\", ApplyGstController)\n\nimport AutoSubmit from '@stimulus-components/auto-submit'\napplication.register('auto-submit', AutoSubmit)\n\nimport BulkDeliveryUpdateController from \"./bulk_delivery/bulk_delivery_update_controller\"\napplication.register(\"bulk-delivery-update\", BulkDeliveryUpdateController)\n\nimport ColorChangerController from \"./bulk_delivery/color_changer_controller\"\napplication.register(\"color-changer\", ColorChangerController)\n\nimport DeliveryController from \"./bulk_delivery/delivery_controller\"\napplication.register(\"delivery\", DeliveryController)\n\nimport BulkDeliveryNavigateController from \"./bulk_delivery_navigate_controller\"\napplication.register(\"bulk-delivery-navigate\", BulkDeliveryNavigateController)\n\nimport BulkDeliveryPaymentListController from \"./bulk_delivery_payment_list_controller\"\napplication.register(\"bulk-delivery-payment-list\", BulkDeliveryPaymentListController)\n\nimport CustomerFilterConfirmBoxController from \"./customer_filter_confirm_box_controller\"\napplication.register(\"customer-filter-confirm-box\", CustomerFilterConfirmBoxController)\n\nimport CustomerLeavesController from \"./customer_leaves_controller\"\napplication.register(\"customer-leaves\", CustomerLeavesController)\n\nimport CustomerProductController from \"./customer_product_controller\"\napplication.register(\"customer-product\", CustomerProductController)\n\nimport CustomerEventBookingController from \"./customer_event_booking_controller\"\napplication.register(\"customer-event-booking\", CustomerEventBookingController)\n\nimport AgencyCustomerEventCheckoutController from \"./agency_customer_event_checkout_controller\"\napplication.register(\"agency-customer-event-checkout\", AgencyCustomerEventCheckoutController)\n\nimport Carousel from '@stimulus-components/carousel'\napplication.register('carousel', Carousel)\n\nimport Clipboard from '@stimulus-components/clipboard'\napplication.register('clipboard', Clipboard)\n\nimport DateRangeController from \"./date_range_controller\"\napplication.register(\"date-range\", DateRangeController)\n\nimport DeleteUserController from \"./delete_user_controller\"\napplication.register(\"delete-user\", DeleteUserController)\n\nimport DialogModalController from \"./dialog_modal_controller\"\napplication.register(\"dialog-modal\", DialogModalController)\n\nimport DropdownController from \"./dropdown_controller\"\napplication.register(\"dropdown\", DropdownController)\n\nimport EmployeePaymentsController from \"./employee_payments_controller\"\napplication.register(\"employee-payments\", EmployeePaymentsController)\n\nimport EmployeeWalletAmountController from \"./employee_wallet_amount_controller\"\napplication.register(\"employee-wallet-amount\", EmployeeWalletAmountController)\n\nimport EventController from \"./event_controller\"\napplication.register(\"event\", EventController)\n\nimport EventJarBookingController from './event_jar_booking_controller'\napplication.register('event-jar-booking', EventJarBookingController)\n\nimport GatewayController from \"./gateway_controller\"\napplication.register(\"gateway\", GatewayController)\n\nimport MonthlyCardFilterController from \"./monthly_card_filter_controller\"\napplication.register(\"monthly-card-filter\", MonthlyCardFilterController)\n\nimport MultiSelectController from \"./multi_select_controller\"\napplication.register(\"multi-select\", MultiSelectController)\n\nimport CheckboxSelectAllController from \"./checkbox_select_all_controller\"\napplication.register(\"checkbox-select-all\", CheckboxSelectAllController)\n\nimport ExpenceController from \"./expence_controller\"\napplication.register(\"expence\", ExpenceController)\n\nimport FancySelectController from \"./fancy_select_controller\"\napplication.register(\"fancy-select\", FancySelectController)\n\nimport FetchAgencyUserController from \"./fetch_agency_user_controller\"\napplication.register(\"fetch-agency-user\", FetchAgencyUserController)\n\nimport FetchCustomerController from \"./fetch_customer_controller\"\napplication.register(\"fetch-customer\", FetchCustomerController)\n\nimport FetchEventProductBookingsController from \"./fetch_event_product_bookings_controller\"\napplication.register(\"fetch-event-product-bookings\", FetchEventProductBookingsController)\n\nimport FlashRemoveController from \"./flash_remove_controller\"\napplication.register(\"flash-remove\", FlashRemoveController)\n\nimport MobileBlurController from \"./mobile_blur_controller\"\napplication.register(\"mobile-blur\", MobileBlurController)\n\nimport MobileNoValidatorController from \"./mobile_no_validator_controller\"\napplication.register(\"mobile-no-validator\", MobileNoValidatorController)\n\nimport MarketingLeadModalController from \"./marketing_lead_modal_controller\"\napplication.register(\"marketing-lead-modal\", MarketingLeadModalController)\n\nimport ImagePreviewController from \"./image_preview_controller\"\napplication.register(\"image-preview\", ImagePreviewController)\n\nimport NavToggleController from \"./nav_toggle_controller\"\napplication.register(\"nav-toggle\", NavToggleController)\n\nimport TabsController from \"./tabs_controller\"\napplication.register(\"tabs\", TabsController)\n\nimport NumberIncrementDecrementController from \"./number_increment_decrement_controller\"\napplication.register(\"number-increment-decrement\", NumberIncrementDecrementController)\n\nimport OpeningDeliveryController from \"./opening_delivery_controller\"\napplication.register(\"opening-delivery\", OpeningDeliveryController)\n\nimport OpeningAmountController from \"./opening_amount_controller\"\napplication.register(\"opening-amount\", OpeningAmountController)\n\nimport PaymentReminderController from \"./payment_reminder_controller\"\napplication.register(\"payment-reminder\", PaymentReminderController)\n\nimport PrintReportsController from \"./print_reports_controller\"\napplication.register(\"print-reports\", PrintReportsController)\n\nimport ProductConfirmBoxController from \"./product_confirm_box_controller\"\napplication.register(\"product-confirm-box\", ProductConfirmBoxController)\n\nimport ProductImagesPreviewController from \"./product_images_preview_controller\"\napplication.register(\"product-images-preview\", ProductImagesPreviewController)\n\nimport ProfilesController from \"./profiles_controller\"\napplication.register(\"profiles\", ProfilesController)\n\nimport ProductInventoryController from \"./product_inventory_controller\"\napplication.register(\"product-inventory\", ProductInventoryController)\n\nimport ProfitAndLossController from \"./profit_and_loss_controller\"\napplication.register(\"profit-and-loss\", ProfitAndLossController)\n\nimport RandomizeMobileNoController from \"./randomize_mobile_no_controller\"\napplication.register(\"randomize-mobile-no\", RandomizeMobileNoController)\n\nimport ReportPageSizeController from \"./report_page_size_controller\"\napplication.register(\"report-page-size\", ReportPageSizeController)\n\nimport ReportsController from \"./reports_controller\"\napplication.register(\"reports\", ReportsController)\n\nimport RequestReportsController from \"./request_reports_controller\"\napplication.register(\"request-reports\", RequestReportsController)\n\nimport ScheduleDeliveryController from \"./schedule_delivery_controller\"\napplication.register(\"schedule-delivery\", ScheduleDeliveryController)\n\nimport SmsSettingsController from \"./sms_settings_controller\"\napplication.register(\"sms-settings\", SmsSettingsController)\n\nimport SearchFilterController from \"./search_filter_controller\"\napplication.register(\"search-filter\", SearchFilterController)\n\nimport TurboFrameLoaderController from \"./turbo_frame_loader_controller\"\napplication.register(\"turbo-frame-loader\", TurboFrameLoaderController)\n\nimport LoaderController from \"./loader_controller\"\napplication.register(\"loader\", LoaderController)\n\nimport SortableController from \"./sortable_controller\"\napplication.register(\"sortable\", SortableController)\n\nimport ScrollController from \"./scroll_controller\"\napplication.register(\"scroll\", ScrollController)\n\nimport SettingsNavController from \"./settings_nav_controller\"\napplication.register(\"settings-nav\", SettingsNavController)\n\nimport ToggleNoOfCustomerController from \"./toggle_no_of_customer_controller\"\napplication.register(\"toggle-no-of-customer\", ToggleNoOfCustomerController)\n\nimport UserPermissionController from \"./user_permission_controller\"\napplication.register(\"user-permission\", UserPermissionController)\n\nimport VerifyOtpController from \"./verify_otp_controller\"\napplication.register(\"verify-otp\", VerifyOtpController)\n\nimport VisibilityController from \"./visibility_controller\"\napplication.register(\"visibility\", VisibilityController)\n\nimport FetchGroupController from \"./fetch_group_controller\"\napplication.register(\"fetch-group\", FetchGroupController)\n\nimport PasswordVisibilityController from \"./password_visibility_controller\"\napplication.register(\"password-visibility\", PasswordVisibilityController)\n\nimport WarnAndBlockController from \"./warn_and_block_controller\"\napplication.register(\"warn-and-block\", WarnAndBlockController)\n\nimport BulkDeliveriesController from \"./bulk_deliveries_controller\"\napplication.register(\"bulk-deliveries\", BulkDeliveriesController)\n\nimport MonthPickerController from \"./month_picker_controller\"\napplication.register(\"month-picker\", MonthPickerController)\n\nimport DatePickerController from \"./date_picker_controller\"\napplication.register(\"date-picker\", DatePickerController)\n\nimport DateRangePickerController from \"./date_range_picker_controller\"\napplication.register(\"date-range-picker\", DateRangePickerController)\n\nimport DateTimePickerController from \"./date_time_picker_controller\"\napplication.register(\"date-time-picker\", DateTimePickerController)\n\nimport TicketsController from \"./tickets_controller\"\napplication.register(\"tickets\", TicketsController)\n\nimport GrapsController from \"./graps_controller\"\napplication.register(\"graps\", GrapsController)\n\n\nimport NestedFormController from \"./nested_form_controller\"\napplication.register(\"nested-form\", NestedFormController)\n\nimport BannerItemController from \"./banner_item_controller\"\napplication.register(\"banner-item\", BannerItemController)\n\nimport RowSortController from \"./row_sort_controller\"\napplication.register(\"row-sort\", RowSortController)\n\nimport OnlineProductFormController from \"./online_product_form_controller\"\napplication.register(\"online-product-form\", OnlineProductFormController)\n\nimport OnlineDiscountFormController from \"./online_discount_form_controller\"\napplication.register(\"online-discount-form\", OnlineDiscountFormController)\n\n\nimport TabController from \"./tab_controller\"\napplication.register(\"tab\", TabController)\n\nimport ShopModalController from \"./shop_modal_controller\"\napplication.register(\"shop-modal\", ShopModalController)\n\nimport PanelTabsController from \"./panel_tabs_controller\"\napplication.register(\"panel-tabs\", PanelTabsController)\nimport TagInputController from \"./tag_input_controller\"\napplication.register(\"tag-input\", TagInputController)\n", "export const attachmentSelector = \"[data-trix-attachment]\"\n\nconst attachments = {\n  preview: {\n    presentation: \"gallery\",\n    caption: {\n      name: true,\n      size: true,\n    },\n  },\n  file: {\n    caption: {\n      size: true,\n    },\n  },\n}\nexport default attachments\n", "const attributes = {\n  default: {\n    tagName: \"div\",\n    parse: false,\n  },\n  quote: {\n    tagName: \"blockquote\",\n    nestable: true,\n  },\n  heading1: {\n    tagName: \"h1\",\n    terminal: true,\n    breakOnReturn: true,\n    group: false,\n  },\n  code: {\n    tagName: \"pre\",\n    terminal: true,\n    htmlAttributes: [ \"language\" ],\n    text: {\n      plaintext: true,\n    },\n  },\n  bulletList: {\n    tagName: \"ul\",\n    parse: false,\n  },\n  bullet: {\n    tagName: \"li\",\n    listAttribute: \"bulletList\",\n    group: false,\n    nestable: true,\n    test(element) {\n      return tagName(element.parentNode) === attributes[this.listAttribute].tagName\n    },\n  },\n  numberList: {\n    tagName: \"ol\",\n    parse: false,\n  },\n  number: {\n    tagName: \"li\",\n    listAttribute: \"numberList\",\n    group: false,\n    nestable: true,\n    test(element) {\n      return tagName(element.parentNode) === attributes[this.listAttribute].tagName\n    },\n  },\n  attachmentGallery: {\n    tagName: \"div\",\n    exclusive: true,\n    terminal: true,\n    parse: false,\n    group: false,\n  },\n}\n\nconst tagName = (element) => element?.tagName?.toLowerCase()\n\nexport default attributes\n", "const androidVersionMatch = navigator.userAgent.match(/android\\s([0-9]+.*Chrome)/i)\nconst androidVersion = androidVersionMatch && parseInt(androidVersionMatch[1])\n\nexport default {\n  // Android emits composition events when moving the cursor through existing text\n  // Introduced in Chrome 65: https://bugs.chromium.org/p/chromium/issues/detail?id=764439#c9\n  composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n\n  // Android 13, especially on Samsung keyboards, emits extra compositionend and beforeinput events\n  // that can make the input handler lose the current selection or enter an infinite input -> render -> input\n  // loop.\n  recentAndroid: androidVersion && androidVersion > 12,\n  samsungAndroid: androidVersion && navigator.userAgent.match(/Android.*SM-/),\n\n  // IE 11 activates resizing handles on editable elements that have \"layout\"\n  forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n  // https://www.w3.org/TR/input-events-1/ + https://www.w3.org/TR/input-events-2/\n  supportsInputEvents: typeof InputEvent !== \"undefined\" &&\n    [ \"data\", \"getTargetRanges\", \"inputType\" ].every(prop => prop in InputEvent.prototype),\n}\n", "export default {\n  ADD_ATTR: [ \"language\" ],\n  SAFE_FOR_XML: false,\n  RETURN_DOM: true\n}\n", "export default {\n  attachFiles: \"Attach Files\",\n  bold: \"Bold\",\n  bullets: \"Bullets\",\n  byte: \"Byte\",\n  bytes: \"Bytes\",\n  captionPlaceholder: \"Add a caption…\",\n  code: \"Code\",\n  heading1: \"Heading\",\n  indent: \"Increase Level\",\n  italic: \"Italic\",\n  link: \"Link\",\n  numbers: \"Numbers\",\n  outdent: \"Decrease Level\",\n  quote: \"Quote\",\n  redo: \"Redo\",\n  remove: \"Remove\",\n  strike: \"Strikethrough\",\n  undo: \"Undo\",\n  unlink: \"Unlink\",\n  url: \"URL\",\n  urlPlaceholder: \"Enter a URL…\",\n  GB: \"GB\",\n  KB: \"KB\",\n  MB: \"MB\",\n  PB: \"PB\",\n  TB: \"TB\",\n}\n", "/* eslint-disable\n    no-case-declarations,\n*/\nimport lang from \"trix/config/lang\"\n\nconst sizes = [ lang.bytes, lang.KB, lang.MB, lang.GB, lang.TB, lang.PB ]\n\nexport default {\n  prefix: \"IEC\",\n  precision: 2,\n\n  formatter(number) {\n    switch (number) {\n      case 0:\n        return `0 ${lang.bytes}`\n      case 1:\n        return `1 ${lang.byte}`\n      default:\n        let base\n\n        if (this.prefix === \"SI\") {\n          base = 1000\n        } else if (this.prefix === \"IEC\") {\n          base = 1024\n        }\n\n        const exp = Math.floor(Math.log(number) / Math.log(base))\n        const humanSize = number / Math.pow(base, exp)\n        const string = humanSize.toFixed(this.precision)\n        const withoutInsignificantZeros = string.replace(/0*$/, \"\").replace(/\\.$/, \"\")\n        return `${withoutInsignificantZeros} ${sizes[exp]}`\n    }\n  },\n}\n", "export const ZERO_WIDTH_SPACE = \"\\uFEFF\"\nexport const NON_BREAKING_SPACE = \"\\u00A0\"\nexport const OBJECT_REPLACEMENT_CHARACTER = \"\\uFFFC\"\n", "export const extend = function(properties) {\n  for (const key in properties) {\n    const value = properties[key]\n    this[key] = value\n  }\n  return this\n}\n", "import blockAttributes from \"trix/config/block_attributes\"\nimport { ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport { extend } from \"./extend\"\nimport { attachmentSelector } from \"trix/config/attachments\"\n\nconst html = document.documentElement\nconst match = html.matches\n\nexport const handleEvent = function(eventName, { onElement, matchingSelector, withCallback, inPhase, preventDefault, times } = {}) {\n  const element = onElement ? onElement : html\n  const selector = matchingSelector\n  const useCapture = inPhase === \"capturing\"\n\n  const handler = function(event) {\n    if (times != null && --times === 0) {\n      handler.destroy()\n    }\n    const target = findClosestElementFromNode(event.target, { matchingSelector: selector })\n    if (target != null) {\n      withCallback?.call(target, event, target)\n      if (preventDefault) {\n        event.preventDefault()\n      }\n    }\n  }\n\n  handler.destroy = () => element.removeEventListener(eventName, handler, useCapture)\n\n  element.addEventListener(eventName, handler, useCapture)\n  return handler\n}\n\nexport const handleEventOnce = function(eventName, options = {}) {\n  options.times = 1\n  return handleEvent(eventName, options)\n}\n\nexport const triggerEvent = function(eventName, { onElement, bubbles, cancelable, attributes } = {}) {\n  const element = onElement != null ? onElement : html\n  bubbles = bubbles !== false\n  cancelable = cancelable !== false\n\n  const event = document.createEvent(\"Events\")\n  event.initEvent(eventName, bubbles, cancelable)\n  if (attributes != null) {\n    extend.call(event, attributes)\n  }\n  return element.dispatchEvent(event)\n}\n\nexport const elementMatchesSelector = function(element, selector) {\n  if (element?.nodeType === 1) {\n    return match.call(element, selector)\n  }\n}\n\nexport const findClosestElementFromNode = function(node, { matchingSelector, untilNode } = {}) {\n  while (node && node.nodeType !== Node.ELEMENT_NODE) {\n    node = node.parentNode\n  }\n  if (node == null) {\n    return\n  }\n\n  if (matchingSelector != null) {\n    if (node.closest && untilNode == null) {\n      return node.closest(matchingSelector)\n    } else {\n      while (node && node !== untilNode) {\n        if (elementMatchesSelector(node, matchingSelector)) {\n          return node\n        }\n        node = node.parentNode\n      }\n    }\n  } else {\n    return node\n  }\n}\n\nexport const findInnerElement = function(element) {\n  while (element?.firstElementChild) {\n    element = element.firstElementChild\n  }\n  return element\n}\n\nexport const innerElementIsActive = (element) =>\n  document.activeElement !== element && elementContainsNode(element, document.activeElement)\n\nexport const elementContainsNode = function(element, node) {\n  if (!element || !node) {\n    return\n  }\n  while (node) {\n    if (node === element) {\n      return true\n    }\n    node = node.parentNode\n  }\n}\n\nexport const findNodeFromContainerAndOffset = function(container, offset) {\n  if (!container) {\n    return\n  }\n  if (container.nodeType === Node.TEXT_NODE) {\n    return container\n  } else if (offset === 0) {\n    return container.firstChild != null ? container.firstChild : container\n  } else {\n    return container.childNodes.item(offset - 1)\n  }\n}\n\nexport const findElementFromContainerAndOffset = function(container, offset) {\n  const node = findNodeFromContainerAndOffset(container, offset)\n  return findClosestElementFromNode(node)\n}\n\nexport const findChildIndexOfNode = function(node) {\n  if (!node?.parentNode) {\n    return\n  }\n  let childIndex = 0\n  node = node.previousSibling\n  while (node) {\n    childIndex++\n    node = node.previousSibling\n  }\n  return childIndex\n}\n\nexport const removeNode = (node) => node?.parentNode?.removeChild(node)\n\nexport const walkTree = function(tree, { onlyNodesOfType, usingFilter, expandEntityReferences } = {}) {\n  const whatToShow = (() => {\n    switch (onlyNodesOfType) {\n      case \"element\":\n        return NodeFilter.SHOW_ELEMENT\n      case \"text\":\n        return NodeFilter.SHOW_TEXT\n      case \"comment\":\n        return NodeFilter.SHOW_COMMENT\n      default:\n        return NodeFilter.SHOW_ALL\n    }\n  })()\n\n  return document.createTreeWalker(\n    tree,\n    whatToShow,\n    usingFilter != null ? usingFilter : null,\n    expandEntityReferences === true\n  )\n}\n\nexport const tagName = (element) => element?.tagName?.toLowerCase()\n\nexport const makeElement = function(tag, options = {}) {\n  let key, value\n  if (typeof tag === \"object\") {\n    options = tag\n    tag = options.tagName\n  } else {\n    options = { attributes: options }\n  }\n\n  const element = document.createElement(tag)\n\n  if (options.editable != null) {\n    if (options.attributes == null) {\n      options.attributes = {}\n    }\n    options.attributes.contenteditable = options.editable\n  }\n\n  if (options.attributes) {\n    for (key in options.attributes) {\n      value = options.attributes[key]\n      element.setAttribute(key, value)\n    }\n  }\n\n  if (options.style) {\n    for (key in options.style) {\n      value = options.style[key]\n      element.style[key] = value\n    }\n  }\n\n  if (options.data) {\n    for (key in options.data) {\n      value = options.data[key]\n      element.dataset[key] = value\n    }\n  }\n\n  if (options.className) {\n    options.className.split(\" \").forEach((className) => {\n      element.classList.add(className)\n    })\n  }\n\n  if (options.textContent) {\n    element.textContent = options.textContent\n  }\n\n  if (options.childNodes) {\n    [].concat(options.childNodes).forEach((childNode) => {\n      element.appendChild(childNode)\n    })\n  }\n\n  return element\n}\n\nlet blockTagNames = undefined\n\nexport const getBlockTagNames = function() {\n  if (blockTagNames != null) {\n    return blockTagNames\n  }\n\n  blockTagNames = []\n  for (const key in blockAttributes) {\n    const attributes = blockAttributes[key]\n    if (attributes.tagName) {\n      blockTagNames.push(attributes.tagName)\n    }\n  }\n\n  return blockTagNames\n}\n\nexport const nodeIsBlockContainer = (node) => nodeIsBlockStartComment(node?.firstChild)\n\nexport const nodeProbablyIsBlockContainer = function(node) {\n  return getBlockTagNames().includes(tagName(node)) && !getBlockTagNames().includes(tagName(node.firstChild))\n}\n\nexport const nodeIsBlockStart = function(node, { strict } = { strict: true }) {\n  if (strict) {\n    return nodeIsBlockStartComment(node)\n  } else {\n    return (\n      nodeIsBlockStartComment(node) || !nodeIsBlockStartComment(node.firstChild) && nodeProbablyIsBlockContainer(node)\n    )\n  }\n}\n\nexport const nodeIsBlockStartComment = (node) => nodeIsCommentNode(node) && node?.data === \"block\"\n\nexport const nodeIsCommentNode = (node) => node?.nodeType === Node.COMMENT_NODE\n\nexport const nodeIsCursorTarget = function(node, { name } = {}) {\n  if (!node) {\n    return\n  }\n  if (nodeIsTextNode(node)) {\n    if (node.data === ZERO_WIDTH_SPACE) {\n      if (name) {\n        return node.parentNode.dataset.trixCursorTarget === name\n      } else {\n        return true\n      }\n    }\n  } else {\n    return nodeIsCursorTarget(node.firstChild)\n  }\n}\n\nexport const nodeIsAttachmentElement = (node) => elementMatchesSelector(node, attachmentSelector)\n\nexport const nodeIsEmptyTextNode = (node) => nodeIsTextNode(node) && node?.data === \"\"\n\nexport const nodeIsTextNode = (node) => node?.nodeType === Node.TEXT_NODE\n", "import browser from \"trix/config/browser\"\nimport { makeElement, removeNode } from \"trix/core/helpers/dom\"\n\nconst input = {\n  level2Enabled: true,\n\n  getLevel() {\n    if (this.level2Enabled && browser.supportsInputEvents) {\n      return 2\n    } else {\n      return 0\n    }\n  },\n  pickFiles(callback) {\n    const input = makeElement(\"input\", { type: \"file\", multiple: true, hidden: true, id: this.fileInputId })\n\n    input.addEventListener(\"change\", () => {\n      callback(input.files)\n      removeNode(input)\n    })\n\n    removeNode(document.getElementById(this.fileInputId))\n    document.body.appendChild(input)\n    input.click()\n  }\n}\n\nexport default input\n", "export default {\n  8: \"backspace\",\n  9: \"tab\",\n  13: \"return\",\n  27: \"escape\",\n  37: \"left\",\n  39: \"right\",\n  46: \"delete\",\n  68: \"d\",\n  72: \"h\",\n  79: \"o\",\n}\n", "export default {\n  removeBlankTableCells: false,\n  tableCellSeparator: \" | \",\n  tableRowSeparator: \"\\n\",\n}\n", "import { attachmentSelector } from \"trix/config/attachments\"\n\nexport default {\n  bold: {\n    tagName: \"strong\",\n    inheritable: true,\n    parser(element) {\n      const style = window.getComputedStyle(element)\n      return style.fontWeight === \"bold\" || style.fontWeight >= 600\n    },\n  },\n  italic: {\n    tagName: \"em\",\n    inheritable: true,\n    parser(element) {\n      const style = window.getComputedStyle(element)\n      return style.fontStyle === \"italic\"\n    },\n  },\n  href: {\n    groupTagName: \"a\",\n    parser(element) {\n      const matchingSelector = `a:not(${attachmentSelector})`\n      const link = element.closest(matchingSelector)\n      if (link) {\n        return link.getAttribute(\"href\")\n      }\n    },\n  },\n  strike: {\n    tagName: \"del\",\n    inheritable: true,\n  },\n  frozen: {\n    style: { backgroundColor: \"highlight\" },\n  },\n}\n", "import lang from \"trix/config/lang\"\n\nexport default {\n  getDefaultHTML() {\n    return `<div class=\"trix-button-row\">\n      <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"${lang.bold}\" tabindex=\"-1\">${lang.bold}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"${lang.italic}\" tabindex=\"-1\">${lang.italic}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"${lang.strike}\" tabindex=\"-1\">${lang.strike}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"${lang.link}\" tabindex=\"-1\">${lang.link}</button>\n      </span>\n\n      <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"${lang.heading1}\" tabindex=\"-1\">${lang.heading1}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"${lang.quote}\" tabindex=\"-1\">${lang.quote}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"${lang.code}\" tabindex=\"-1\">${lang.code}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"${lang.bullets}\" tabindex=\"-1\">${lang.bullets}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"${lang.numbers}\" tabindex=\"-1\">${lang.numbers}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"${lang.outdent}\" tabindex=\"-1\">${lang.outdent}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"${lang.indent}\" tabindex=\"-1\">${lang.indent}</button>\n      </span>\n\n      <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"${lang.attachFiles}\" tabindex=\"-1\">${lang.attachFiles}</button>\n      </span>\n\n      <span class=\"trix-button-group-spacer\"></span>\n\n      <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"${lang.undo}\" tabindex=\"-1\">${lang.undo}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"${lang.redo}\" tabindex=\"-1\">${lang.redo}</button>\n      </span>\n    </div>\n\n    <div class=\"trix-dialogs\" data-trix-dialogs>\n      <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\n        <div class=\"trix-dialog__link-fields\">\n          <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"${lang.urlPlaceholder}\" aria-label=\"${lang.url}\" data-trix-validate-href required data-trix-input>\n          <div class=\"trix-button-group\">\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"${lang.link}\" data-trix-method=\"setAttribute\">\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"${lang.unlink}\" data-trix-method=\"removeAttribute\">\n          </div>\n        </div>\n      </div>\n    </div>`\n  },\n}\n", "const undo = { interval: 5000 }\nexport default undo\n", "export default {\n  attachment: \"attachment\",\n  attachmentCaption: \"attachment__caption\",\n  attachmentCaptionEditor: \"attachment__caption-editor\",\n  attachmentMetadata: \"attachment__metadata\",\n  attachmentMetadataContainer: \"attachment__metadata-container\",\n  attachmentName: \"attachment__name\",\n  attachmentProgress: \"attachment__progress\",\n  attachmentSize: \"attachment__size\",\n  attachmentToolbar: \"attachment__toolbar\",\n  attachmentGallery: \"attachment-gallery\",\n}\n", "export default class BasicObject {\n  static proxyMethod(expression) {\n    const { name, toMethod, toProperty, optional } = parseProxyMethodExpression(expression)\n\n    this.prototype[name] = function() {\n      let subject\n      let object\n\n      if (toMethod) {\n        if (optional) {\n          object = this[toMethod]?.()\n        } else {\n          object = this[toMethod]()\n        }\n      } else if (toProperty) {\n        object = this[toProperty]\n      }\n\n      if (optional) {\n        subject = object?.[name]\n        if (subject) {\n          return apply.call(subject, object, arguments)\n        }\n      } else {\n        subject = object[name]\n        return apply.call(subject, object, arguments)\n      }\n    }\n  }\n}\n\nconst parseProxyMethodExpression = function(expression) {\n  const match = expression.match(proxyMethodExpressionPattern)\n  if (!match) {\n    throw new Error(`can't parse @proxyMethod expression: ${expression}`)\n  }\n\n  const args = { name: match[4] }\n\n  if (match[2] != null) {\n    args.toMethod = match[1]\n  } else {\n    args.toProperty = match[1]\n  }\n\n  if (match[3] != null) {\n    args.optional = true\n  }\n\n  return args\n}\n\nconst { apply } = Function.prototype\n\nconst proxyMethodExpressionPattern = new RegExp(\"\\\n^\\\n(.+?)\\\n(\\\\(\\\\))?\\\n(\\\\?)?\\\n\\\\.\\\n(.+?)\\\n$\\\n\")\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class UTF16String extends BasicObject {\n  static box(value = \"\") {\n    if (value instanceof this) {\n      return value\n    } else {\n      return this.fromUCS2String(value?.toString())\n    }\n  }\n\n  static fromUCS2String(ucs2String) {\n    return new this(ucs2String, ucs2decode(ucs2String))\n  }\n\n  static fromCodepoints(codepoints) {\n    return new this(ucs2encode(codepoints), codepoints)\n  }\n\n  constructor(ucs2String, codepoints) {\n    super(...arguments)\n    this.ucs2String = ucs2String\n    this.codepoints = codepoints\n    this.length = this.codepoints.length\n    this.ucs2Length = this.ucs2String.length\n  }\n\n  offsetToUCS2Offset(offset) {\n    return ucs2encode(this.codepoints.slice(0, Math.max(0, offset))).length\n  }\n\n  offsetFromUCS2Offset(ucs2Offset) {\n    return ucs2decode(this.ucs2String.slice(0, Math.max(0, ucs2Offset))).length\n  }\n\n  slice() {\n    return this.constructor.fromCodepoints(this.codepoints.slice(...arguments))\n  }\n\n  charAt(offset) {\n    return this.slice(offset, offset + 1)\n  }\n\n  isEqualTo(value) {\n    return this.constructor.box(value).ucs2String === this.ucs2String\n  }\n\n  toJSON() {\n    return this.ucs2String\n  }\n\n  getCacheKey() {\n    return this.ucs2String\n  }\n\n  toString() {\n    return this.ucs2String\n  }\n}\n\nconst hasArrayFrom = Array.from?.(\"\\ud83d\\udc7c\").length === 1\nconst hasStringCodePointAt = \" \".codePointAt?.(0) != null\nconst hasStringFromCodePoint = String.fromCodePoint?.(32, 128124) === \" \\ud83d\\udc7c\"\n\n// UCS-2 conversion helpers ported from Mathias Bynens' Punycode.js:\n// https://github.com/bestiejs/punycode.js#punycodeucs2\n\nlet ucs2decode, ucs2encode\n\n// Creates an array containing the numeric code points of each Unicode\n// character in the string. While JavaScript uses UCS-2 internally,\n// this function will convert a pair of surrogate halves (each of which\n// UCS-2 exposes as separate characters) into a single code point,\n// matching UTF-16.\nif (hasArrayFrom && hasStringCodePointAt) {\n  ucs2decode = (string) => Array.from(string).map((char) => char.codePointAt(0))\n} else {\n  ucs2decode = function(string) {\n    const output = []\n    let counter = 0\n    const { length } = string\n\n    while (counter < length) {\n      let value = string.charCodeAt(counter++)\n      if (0xd800 <= value && value <= 0xdbff && counter < length) {\n        // high surrogate, and there is a next character\n        const extra = string.charCodeAt(counter++)\n        if ((extra & 0xfc00) === 0xdc00) {\n          // low surrogate\n          value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000\n        } else {\n          // unmatched surrogate; only append this code unit, in case the\n          // next code unit is the high surrogate of a surrogate pair\n          counter--\n        }\n      }\n      output.push(value)\n    }\n\n    return output\n  }\n}\n\n// Creates a string based on an array of numeric code points.\nif (hasStringFromCodePoint) {\n  ucs2encode = (array) => String.fromCodePoint(...Array.from(array || []))\n} else {\n  ucs2encode = function(array) {\n    const characters = (() => {\n      const result = []\n\n      Array.from(array).forEach((value) => {\n        let output = \"\"\n        if (value > 0xffff) {\n          value -= 0x10000\n          output += String.fromCharCode(value >>> 10 & 0x3ff | 0xd800)\n          value = 0xdc00 | value & 0x3ff\n        }\n        result.push(output + String.fromCharCode(value))\n      })\n\n      return result\n    })()\n\n    return characters.join(\"\")\n  }\n}\n", "import BasicObject from \"trix/core/basic_object\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\n\nlet id = 0\n\nexport default class TrixObject extends BasicObject {\n  static fromJSONString(jsonString) {\n    return this.fromJSON(JSON.parse(jsonString))\n  }\n\n  constructor() {\n    super(...arguments)\n    this.id = ++id\n  }\n\n  hasSameConstructorAs(object) {\n    return this.constructor === object?.constructor\n  }\n\n  isEqualTo(object) {\n    return this === object\n  }\n\n  inspect() {\n    const parts = []\n    const contents = this.contentsForInspection() || {}\n\n    for (const key in contents) {\n      const value = contents[key]\n      parts.push(`${key}=${value}`)\n    }\n\n    return `#<${this.constructor.name}:${this.id}${parts.length ? ` ${parts.join(\", \")}` : \"\"}>`\n  }\n\n  contentsForInspection() {}\n\n  toJSONString() {\n    return JSON.stringify(this)\n  }\n\n  toUTF16String() {\n    return UTF16String.box(this)\n  }\n\n  getCacheKey() {\n    return this.id.toString()\n  }\n}\n", "/* eslint-disable\n    id-length,\n*/\nexport const arraysAreEqual = function(a = [], b = []) {\n  if (a.length !== b.length) {\n    return false\n  }\n  for (let index = 0; index < a.length; index++) {\n    const value = a[index]\n    if (value !== b[index]) {\n      return false\n    }\n  }\n  return true\n}\n\nexport const arrayStartsWith = (a = [], b = []) => arraysAreEqual(a.slice(0, b.length), b)\n\nexport const spliceArray = function(array, ...args) {\n  const result = array.slice(0)\n  result.splice(...args)\n  return result\n}\n\nexport const summarizeArrayChange = function(oldArray = [], newArray = []) {\n  const added = []\n  const removed = []\n\n  const existingValues = new Set()\n\n  oldArray.forEach((value) => {\n    existingValues.add(value)\n  })\n\n  const currentValues = new Set()\n\n  newArray.forEach((value) => {\n    currentValues.add(value)\n    if (!existingValues.has(value)) {\n      added.push(value)\n    }\n  })\n\n  oldArray.forEach((value) => {\n    if (!currentValues.has(value)) {\n      removed.push(value)\n    }\n  })\n\n  return { added, removed }\n}\n", "import { makeElement } from \"trix/core/helpers/dom\"\n\n// https://github.com/mathiasbynens/unicode-2.1.8/blob/master/Bidi_Class/Right_To_Left/regex.js\nconst RTL_PATTERN =\n  /[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/\n\nexport const getDirection = (function() {\n  const input = makeElement(\"input\", { dir: \"auto\", name: \"x\", dirName: \"x.dir\" })\n  const textArea = makeElement(\"textarea\", { dir: \"auto\", name: \"y\", dirName: \"y.dir\" })\n  const form = makeElement(\"form\")\n  form.appendChild(input)\n  form.appendChild(textArea)\n\n  const supportsDirName = (function() {\n    try {\n      return new FormData(form).has(textArea.dirName)\n    } catch (error) {\n      return false\n    }\n  })()\n\n  const supportsDirSelector = (function() {\n    try {\n      return input.matches(\":dir(ltr),:dir(rtl)\")\n    } catch (error) {\n      return false\n    }\n  })()\n\n  if (supportsDirName) {\n    return function(string) {\n      textArea.value = string\n      return new FormData(form).get(textArea.dirName)\n    }\n  } else if (supportsDirSelector) {\n    return function(string) {\n      input.value = string\n      if (input.matches(\":dir(rtl)\")) {\n        return \"rtl\"\n      } else {\n        return \"ltr\"\n      }\n    }\n  } else {\n    return function(string) {\n      const char = string.trim().charAt(0)\n      if (RTL_PATTERN.test(char)) {\n        return \"rtl\"\n      } else {\n        return \"ltr\"\n      }\n    }\n  }\n})()\n", "import * as config from \"trix/config\"\n\nlet allAttributeNames = null\nlet blockAttributeNames = null\nlet textAttributeNames = null\nlet listAttributeNames = null\n\nexport const getAllAttributeNames = () => {\n  if (!allAttributeNames) {\n    allAttributeNames = getTextAttributeNames().concat(getBlockAttributeNames())\n  }\n  return allAttributeNames\n}\n\nexport const getBlockConfig = (attributeName) => config.blockAttributes[attributeName]\n\nexport const getBlockAttributeNames = () => {\n  if (!blockAttributeNames) {\n    blockAttributeNames = Object.keys(config.blockAttributes)\n  }\n  return blockAttributeNames\n}\n\nexport const getTextConfig = (attributeName) => config.textAttributes[attributeName]\n\nexport const getTextAttributeNames = () => {\n  if (!textAttributeNames) {\n    textAttributeNames = Object.keys(config.textAttributes)\n  }\n  return textAttributeNames\n}\n\nexport const getListAttributeNames = () => {\n  if (!listAttributeNames) {\n    listAttributeNames = []\n    for (const key in config.blockAttributes) {\n      const { listAttribute } = config.blockAttributes[key]\n      if (listAttribute != null) {\n        listAttributeNames.push(listAttribute)\n      }\n    }\n  }\n  return listAttributeNames\n}\n", "/* eslint-disable\n*/\nexport const installDefaultCSSForTagName = function(tagName, defaultCSS) {\n  const styleElement = insertStyleElementForTagName(tagName)\n  styleElement.textContent = defaultCSS.replace(/%t/g, tagName)\n}\n\nconst insertStyleElementForTagName = function(tagName) {\n  const element = document.createElement(\"style\")\n  element.setAttribute(\"type\", \"text/css\")\n  element.setAttribute(\"data-tag-name\", tagName.toLowerCase())\n  const nonce = getCSPNonce()\n  if (nonce) {\n    element.setAttribute(\"nonce\", nonce)\n  }\n  document.head.insertBefore(element, document.head.firstChild)\n  return element\n}\n\nconst getCSPNonce = function() {\n  const element = getMetaElement(\"trix-csp-nonce\") || getMetaElement(\"csp-nonce\")\n  if (element) {\n    const { nonce, content } = element\n    return nonce == \"\" ? content : nonce\n  }\n}\n\nconst getMetaElement = (name) => document.head.querySelector(`meta[name=${name}]`)\n", "const testTransferData = { \"application/x-trix-feature-detection\": \"test\" }\n\nexport const dataTransferIsPlainText = function(dataTransfer) {\n  const text = dataTransfer.getData(\"text/plain\")\n  const html = dataTransfer.getData(\"text/html\")\n\n  if (text && html) {\n    const { body } = new DOMParser().parseFromString(html, \"text/html\")\n    if (body.textContent === text) {\n      return !body.querySelector(\"*\")\n    }\n  } else {\n    return text?.length\n  }\n}\n\nexport const dataTransferIsMsOfficePaste = ({ dataTransfer }) => {\n  return dataTransfer.types.includes(\"Files\") &&\n    dataTransfer.types.includes(\"text/html\") &&\n    dataTransfer.getData(\"text/html\").includes(\"urn:schemas-microsoft-com:office:office\")\n}\n\nexport const dataTransferIsWritable = function(dataTransfer) {\n  if (!dataTransfer?.setData) return false\n\n  for (const key in testTransferData) {\n    const value = testTransferData[key]\n\n    try {\n      dataTransfer.setData(key, value)\n      if (!dataTransfer.getData(key) === value) return false\n    } catch (error) {\n      return false\n    }\n  }\n  return true\n}\n\nexport const keyEventIsKeyboardCommand = (function() {\n  if (/Mac|^iP/.test(navigator.platform)) {\n    return (event) => event.metaKey\n  } else {\n    return (event) => event.ctrlKey\n  }\n})()\n\nexport function shouldRenderInmmediatelyToDealWithIOSDictation(inputEvent) {\n  if (/iPhone|iPad/.test(navigator.userAgent)) {\n    // Handle garbled content and duplicated newlines when using dictation on iOS 18+. Upon dictation completion, iOS sends\n    // the list of insertText / insertParagraph events in a quick sequence. If we don't render\n    // the editor synchronously, the internal range fails to update and results in garbled content or duplicated newlines.\n    //\n    // This workaround is necessary because iOS doesn't send composing events as expected while dictating:\n    // https://bugs.webkit.org/show_bug.cgi?id=261764\n    return !inputEvent.inputType || inputEvent.inputType === \"insertParagraph\"\n  } else {\n    return false\n  }\n}\n", "export const defer = (fn) => setTimeout(fn, 1)\n", "/* eslint-disable\n    id-length,\n*/\nexport const copyObject = function(object = {}) {\n  const result = {}\n  for (const key in object) {\n    const value = object[key]\n    result[key] = value\n  }\n  return result\n}\n\nexport const objectsAreEqual = function(a = {}, b = {}) {\n  if (Object.keys(a).length !== Object.keys(b).length) {\n    return false\n  }\n  for (const key in a) {\n    const value = a[key]\n    if (value !== b[key]) {\n      return false\n    }\n  }\n  return true\n}\n", "import { copyObject, objectsAreEqual } from \"trix/core/helpers/objects\"\n\nexport const normalizeRange = function(range) {\n  if (range == null) return\n\n  if (!Array.isArray(range)) {\n    range = [ range, range ]\n  }\n  return [ copyValue(range[0]), copyValue(range[1] != null ? range[1] : range[0]) ]\n}\n\nexport const rangeIsCollapsed = function(range) {\n  if (range == null) return\n\n  const [ start, end ] = normalizeRange(range)\n  return rangeValuesAreEqual(start, end)\n}\n\nexport const rangesAreEqual = function(leftRange, rightRange) {\n  if (leftRange == null || rightRange == null) return\n\n  const [ leftStart, leftEnd ] = normalizeRange(leftRange)\n  const [ rightStart, rightEnd ] = normalizeRange(rightRange)\n  return rangeValuesAreEqual(leftStart, rightStart) && rangeValuesAreEqual(leftEnd, rightEnd)\n}\n\nconst copyValue = function(value) {\n  if (typeof value === \"number\") {\n    return value\n  } else {\n    return copyObject(value)\n  }\n}\n\nconst rangeValuesAreEqual = function(left, right) {\n  if (typeof left === \"number\") {\n    return left === right\n  } else {\n    return objectsAreEqual(left, right)\n  }\n}\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class SelectionChangeObserver extends BasicObject {\n  constructor() {\n    super(...arguments)\n    this.update = this.update.bind(this)\n    this.selectionManagers = []\n  }\n\n  start() {\n    if (!this.started) {\n      this.started = true\n      document.addEventListener(\"selectionchange\", this.update, true)\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false\n      return document.removeEventListener(\"selectionchange\", this.update, true)\n    }\n  }\n\n  registerSelectionManager(selectionManager) {\n    if (!this.selectionManagers.includes(selectionManager)) {\n      this.selectionManagers.push(selectionManager)\n      return this.start()\n    }\n  }\n\n  unregisterSelectionManager(selectionManager) {\n    this.selectionManagers = this.selectionManagers.filter((sm) => sm !== selectionManager)\n    if (this.selectionManagers.length === 0) {\n      return this.stop()\n    }\n  }\n\n  notifySelectionManagersOfSelectionChange() {\n    return this.selectionManagers.map((selectionManager) => selectionManager.selectionDidChange())\n  }\n\n  update() {\n    this.notifySelectionManagersOfSelectionChange()\n  }\n\n  reset() {\n    this.update()\n  }\n}\n\nexport const selectionChangeObserver = new SelectionChangeObserver()\n\nexport const getDOMSelection = function() {\n  const selection = window.getSelection()\n  if (selection.rangeCount > 0) {\n    return selection\n  }\n}\n\nexport const getDOMRange = function() {\n  const domRange = getDOMSelection()?.getRangeAt(0)\n  if (domRange) {\n    if (!domRangeIsPrivate(domRange)) {\n      return domRange\n    }\n  }\n}\n\nexport const setDOMRange = function(domRange) {\n  const selection = window.getSelection()\n  selection.removeAllRanges()\n  selection.addRange(domRange)\n  return selectionChangeObserver.update()\n}\n\n// In Firefox, clicking certain <input> elements changes the selection to a\n// private element used to draw its UI. Attempting to access properties of those\n// elements throws an error.\n// https://bugzilla.mozilla.org/show_bug.cgi?id=208427\nconst domRangeIsPrivate = (domRange) => nodeIsPrivate(domRange.startContainer) || nodeIsPrivate(domRange.endContainer)\n\nconst nodeIsPrivate = (node) => !Object.getPrototypeOf(node)\n", "/* eslint-disable\n    id-length,\n    no-useless-escape,\n*/\nimport { NON_BREAKING_SPACE, ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\n\nexport const normalizeSpaces = (string) =>\n  string.replace(new RegExp(`${ZERO_WIDTH_SPACE}`, \"g\"), \"\").replace(new RegExp(`${NON_BREAKING_SPACE}`, \"g\"), \" \")\n\nexport const normalizeNewlines = (string) => string.replace(/\\r\\n?/g, \"\\n\")\n\nexport const breakableWhitespacePattern = new RegExp(`[^\\\\S${NON_BREAKING_SPACE}]`)\n\nexport const squishBreakableWhitespace = (string) =>\n  string\n    // Replace all breakable whitespace characters with a space\n    .replace(new RegExp(`${breakableWhitespacePattern.source}`, \"g\"), \" \")\n    // Replace two or more spaces with a single space\n    .replace(/\\ {2,}/g, \" \")\n\nexport const summarizeStringChange = function(oldString, newString) {\n  let added, removed\n  oldString = UTF16String.box(oldString)\n  newString = UTF16String.box(newString)\n\n  if (newString.length < oldString.length) {\n    [ removed, added ] = utf16StringDifferences(oldString, newString)\n  } else {\n    [ added, removed ] = utf16StringDifferences(newString, oldString)\n  }\n\n  return { added, removed }\n}\n\nconst utf16StringDifferences = function(a, b) {\n  if (a.isEqualTo(b)) {\n    return [ \"\", \"\" ]\n  }\n\n  const diffA = utf16StringDifference(a, b)\n  const { length } = diffA.utf16String\n\n  let diffB\n\n  if (length) {\n    const { offset } = diffA\n    const codepoints = a.codepoints.slice(0, offset).concat(a.codepoints.slice(offset + length))\n    diffB = utf16StringDifference(b, UTF16String.fromCodepoints(codepoints))\n  } else {\n    diffB = utf16StringDifference(b, a)\n  }\n\n  return [ diffA.utf16String.toString(), diffB.utf16String.toString() ]\n}\n\nconst utf16StringDifference = function(a, b) {\n  let leftIndex = 0\n  let rightIndexA = a.length\n  let rightIndexB = b.length\n\n  while (leftIndex < rightIndexA && a.charAt(leftIndex).isEqualTo(b.charAt(leftIndex))) {\n    leftIndex++\n  }\n\n  while (rightIndexA > leftIndex + 1 && a.charAt(rightIndexA - 1).isEqualTo(b.charAt(rightIndexB - 1))) {\n    rightIndexA--\n    rightIndexB--\n  }\n\n  return {\n    utf16String: a.slice(leftIndex, rightIndexA),\n    offset: leftIndex,\n  }\n}\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport { arraysAreEqual } from \"trix/core/helpers\"\n\nexport default class Hash extends TrixObject {\n  static fromCommonAttributesOfObjects(objects = []) {\n    if (!objects.length) {\n      return new this()\n    }\n    let hash = box(objects[0])\n    let keys = hash.getKeys()\n\n    objects.slice(1).forEach((object) => {\n      keys = hash.getKeysCommonToHash(box(object))\n      hash = hash.slice(keys)\n    })\n\n    return hash\n  }\n\n  static box(values) {\n    return box(values)\n  }\n\n  constructor(values = {}) {\n    super(...arguments)\n    this.values = copy(values)\n  }\n\n  add(key, value) {\n    return this.merge(object(key, value))\n  }\n\n  remove(key) {\n    return new Hash(copy(this.values, key))\n  }\n\n  get(key) {\n    return this.values[key]\n  }\n\n  has(key) {\n    return key in this.values\n  }\n\n  merge(values) {\n    return new Hash(merge(this.values, unbox(values)))\n  }\n\n  slice(keys) {\n    const values = {}\n\n    Array.from(keys).forEach((key) => {\n      if (this.has(key)) {\n        values[key] = this.values[key]\n      }\n    })\n\n    return new Hash(values)\n  }\n\n  getKeys() {\n    return Object.keys(this.values)\n  }\n\n  getKeysCommonToHash(hash) {\n    hash = box(hash)\n    return this.getKeys().filter((key) => this.values[key] === hash.values[key])\n  }\n\n  isEqualTo(values) {\n    return arraysAreEqual(this.toArray(), box(values).toArray())\n  }\n\n  isEmpty() {\n    return this.getKeys().length === 0\n  }\n\n  toArray() {\n    if (!this.array) {\n      const result = []\n      for (const key in this.values) {\n        const value = this.values[key]\n        result.push(result.push(key, value))\n      }\n      this.array = result.slice(0)\n    }\n\n    return this.array\n  }\n\n  toObject() {\n    return copy(this.values)\n  }\n\n  toJSON() {\n    return this.toObject()\n  }\n\n  contentsForInspection() {\n    return { values: JSON.stringify(this.values) }\n  }\n}\n\nconst object = function(key, value) {\n  const result = {}\n  result[key] = value\n  return result\n}\n\nconst merge = function(object, values) {\n  const result = copy(object)\n  for (const key in values) {\n    const value = values[key]\n    result[key] = value\n  }\n  return result\n}\n\nconst copy = function(object, keyToRemove) {\n  const result = {}\n  const sortedKeys = Object.keys(object).sort()\n\n  sortedKeys.forEach((key) => {\n    if (key !== keyToRemove) {\n      result[key] = object[key]\n    }\n  })\n\n  return result\n}\n\nconst box = function(object) {\n  if (object instanceof Hash) {\n    return object\n  } else {\n    return new Hash(object)\n  }\n}\n\nconst unbox = function(object) {\n  if (object instanceof Hash) {\n    return object.values\n  } else {\n    return object\n  }\n}\n", "export default class ObjectGroup {\n  static groupObjects(ungroupedObjects = [], { depth, asTree } = {}) {\n    let group\n    if (asTree) {\n      if (depth == null) {\n        depth = 0\n      }\n    }\n    const objects = []\n\n    Array.from(ungroupedObjects).forEach((object) => {\n      if (group) {\n        if (object.canBeGrouped?.(depth) && group[group.length - 1].canBeGroupedWith?.(object, depth)) {\n          group.push(object)\n          return\n        } else {\n          objects.push(new this(group, { depth, asTree }))\n          group = null\n        }\n      }\n\n      if (object.canBeGrouped?.(depth)) {\n        group = [ object ]\n      } else {\n        objects.push(object)\n      }\n    })\n\n    if (group) {\n      objects.push(new this(group, { depth, asTree }))\n    }\n    return objects\n  }\n\n  constructor(objects = [], { depth, asTree }) {\n    this.objects = objects\n    if (asTree) {\n      this.depth = depth\n      this.objects = this.constructor.groupObjects(this.objects, { asTree, depth: this.depth + 1 })\n    }\n  }\n\n  getObjects() {\n    return this.objects\n  }\n\n  getDepth() {\n    return this.depth\n  }\n\n  getCacheKey() {\n    const keys = [ \"objectGroup\" ]\n    Array.from(this.getObjects()).forEach((object) => {\n      keys.push(object.getCacheKey())\n    })\n    return keys.join(\"/\")\n  }\n}\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class ObjectMap extends BasicObject {\n  constructor(objects = []) {\n    super(...arguments)\n    this.objects = {}\n\n    Array.from(objects).forEach((object) => {\n      const hash = JSON.stringify(object)\n      if (this.objects[hash] == null) {\n        this.objects[hash] = object\n      }\n    })\n  }\n\n  find(object) {\n    const hash = JSON.stringify(object)\n    return this.objects[hash]\n  }\n}\n", "export default class ElementStore {\n  constructor(elements) {\n    this.reset(elements)\n  }\n\n  add(element) {\n    const key = getKey(element)\n    this.elements[key] = element\n  }\n\n  remove(element) {\n    const key = getKey(element)\n    const value = this.elements[key]\n    if (value) {\n      delete this.elements[key]\n      return value\n    }\n  }\n\n  reset(elements = []) {\n    this.elements = {}\n    Array.from(elements).forEach((element) => {\n      this.add(element)\n    })\n    return elements\n  }\n}\n\nconst getKey = (element) => element.dataset.trixStoreKey\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class Operation extends BasicObject {\n  isPerforming() {\n    return this.performing === true\n  }\n\n  hasPerformed() {\n    return this.performed === true\n  }\n\n  hasSucceeded() {\n    return this.performed && this.succeeded\n  }\n\n  hasFailed() {\n    return this.performed && !this.succeeded\n  }\n\n  getPromise() {\n    if (!this.promise) {\n      this.promise = new Promise((resolve, reject) => {\n        this.performing = true\n        return this.perform((succeeded, result) => {\n          this.succeeded = succeeded\n          this.performing = false\n          this.performed = true\n\n          if (this.succeeded) {\n            resolve(result)\n          } else {\n            reject(result)\n          }\n        })\n      })\n    }\n\n    return this.promise\n  }\n\n  perform(callback) {\n    return callback(false)\n  }\n\n  release() {\n    this.promise?.cancel?.()\n    this.promise = null\n    this.performing = null\n    this.performed = null\n    this.succeeded = null\n  }\n}\n\nOperation.proxyMethod(\"getPromise().then\")\nOperation.proxyMethod(\"getPromise().catch\")\n", "import BasicObject from \"trix/core/basic_object\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\n\nexport default class ObjectView extends BasicObject {\n  constructor(object, options = {}) {\n    super(...arguments)\n    this.object = object\n    this.options = options\n    this.childViews = []\n    this.rootView = this\n  }\n\n  getNodes() {\n    if (!this.nodes) { this.nodes = this.createNodes() }\n    return this.nodes.map((node) => node.cloneNode(true))\n  }\n\n  invalidate() {\n    this.nodes = null\n    this.childViews = []\n    return this.parentView?.invalidate()\n  }\n\n  invalidateViewForObject(object) {\n    return this.findViewForObject(object)?.invalidate()\n  }\n\n  findOrCreateCachedChildView(viewClass, object, options) {\n    let view = this.getCachedViewForObject(object)\n    if (view) {\n      this.recordChildView(view)\n    } else {\n      view = this.createChildView(...arguments)\n      this.cacheViewForObject(view, object)\n    }\n    return view\n  }\n\n  createChildView(viewClass, object, options = {}) {\n    if (object instanceof ObjectGroup) {\n      options.viewClass = viewClass\n      viewClass = ObjectGroupView\n    }\n\n    const view = new viewClass(object, options)\n    return this.recordChildView(view)\n  }\n\n  recordChildView(view) {\n    view.parentView = this\n    view.rootView = this.rootView\n    this.childViews.push(view)\n    return view\n  }\n\n  getAllChildViews() {\n    let views = []\n\n    this.childViews.forEach((childView) => {\n      views.push(childView)\n      views = views.concat(childView.getAllChildViews())\n    })\n\n    return views\n  }\n\n  findElement() {\n    return this.findElementForObject(this.object)\n  }\n\n  findElementForObject(object) {\n    const id = object?.id\n    if (id) {\n      return this.rootView.element.querySelector(`[data-trix-id='${id}']`)\n    }\n  }\n\n  findViewForObject(object) {\n    for (const view of this.getAllChildViews()) {\n      if (view.object === object) {\n        return view\n      }\n    }\n  }\n\n  getViewCache() {\n    if (this.rootView === this) {\n      if (this.isViewCachingEnabled()) {\n        if (!this.viewCache) { this.viewCache = {} }\n        return this.viewCache\n      }\n    } else {\n      return this.rootView.getViewCache()\n    }\n  }\n\n  isViewCachingEnabled() {\n    return this.shouldCacheViews !== false\n  }\n\n  enableViewCaching() {\n    this.shouldCacheViews = true\n  }\n\n  disableViewCaching() {\n    this.shouldCacheViews = false\n  }\n\n  getCachedViewForObject(object) {\n    return this.getViewCache()?.[object.getCacheKey()]\n  }\n\n  cacheViewForObject(view, object) {\n    const cache = this.getViewCache()\n    if (cache) {\n      cache[object.getCacheKey()] = view\n    }\n  }\n\n  garbageCollectCachedViews() {\n    const cache = this.getViewCache()\n    if (cache) {\n      const views = this.getAllChildViews().concat(this)\n      const objectKeys = views.map((view) => view.object.getCacheKey())\n      for (const key in cache) {\n        if (!objectKeys.includes(key)) {\n          delete cache[key]\n        }\n      }\n    }\n  }\n}\n\nexport class ObjectGroupView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.objectGroup = this.object\n    this.viewClass = this.options.viewClass\n    delete this.options.viewClass\n  }\n\n  getChildViews() {\n    if (!this.childViews.length) {\n      Array.from(this.objectGroup.getObjects()).forEach((object) => {\n        this.findOrCreateCachedChildView(this.viewClass, object, this.options)\n      })\n    }\n    return this.childViews\n  }\n\n  createNodes() {\n    const element = this.createContainerElement()\n\n    this.getChildViews().forEach((view) => {\n      Array.from(view.getNodes()).forEach((node) => {\n        element.appendChild(node)\n      })\n    })\n\n    return [ element ]\n  }\n\n  createContainerElement(depth = this.objectGroup.getDepth()) {\n    return this.getChildViews()[0].createContainerElement(depth)\n  }\n}\n", "/*! @license DOMPurify 3.2.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.5/LICENSE */\n\nconst {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor\n} = Object;\nlet {\n  freeze,\n  seal,\n  create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n  apply,\n  construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!apply) {\n  apply = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\nif (!construct) {\n  construct = function construct(Func, args) {\n    return new Func(...args);\n  };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n  return function (thisArg) {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    return apply(func, thisArg, args);\n  };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return construct(func, args);\n  };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n  return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (value && typeof value === 'object' && value.constructor === Object) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n  return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue() {\n    return null;\n  }\n  return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: ARIA_ATTR,\n  ATTR_WHITESPACE: ATTR_WHITESPACE,\n  CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n  DATA_ATTR: DATA_ATTR,\n  DOCTYPE_NAME: DOCTYPE_NAME,\n  ERB_EXPR: ERB_EXPR,\n  IS_ALLOWED_URI: IS_ALLOWED_URI,\n  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n  MUSTACHE_EXPR: MUSTACHE_EXPR,\n  TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5,\n  // Deprecated\n  entityNode: 6,\n  // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\nconst _createHooksMap = function _createHooksMap() {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n};\nfunction createDOMPurify() {\n  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  const DOMPurify = root => createDOMPurify(root);\n  DOMPurify.version = '3.2.5';\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n  let {\n    document\n  } = window;\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes\n  } = window;\n  const ElementPrototype = Element.prototype;\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName\n  } = document;\n  const {\n    importNode\n  } = originalDocument;\n  let hooks = _createHooksMap();\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT\n  } = EXPRESSIONS;\n  let {\n    IS_ALLOWED_URI: IS_ALLOWED_URI$1\n  } = EXPRESSIONS;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n  const formElement = document.createElement('form');\n  const isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function _parseConfig() {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n      }\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n      }\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n      }\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function _checkValidNamespace(element) {\n    let parent = getParentNode(element);\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function _removeAttribute(name, element) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element\n      });\n    }\n    element.removeAttribute(name);\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n    const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    const body = doc.body || doc.documentElement;\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function _createNodeIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function _isClobbered(element) {\n    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n  };\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function _isNode(value) {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n  function _executeHooks(hooks, currentNode, data) {\n    arrayForEach(hooks, hook => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function _sanitizeElements(currentNode) {\n    let content = null;\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n          return false;\n        }\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n          return false;\n        }\n      }\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        content = stringReplace(content, expr, ' ');\n      });\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n      // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n      // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n      return false;\n    } else ;\n    return true;\n  };\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n    const {\n      attributes\n    } = currentNode;\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined\n    };\n    let l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const {\n        name,\n        namespaceURI,\n        value: attrValue\n      } = attr;\n      const lcName = transformCaseFunc(name);\n      let value = name === 'value' ? attrValue : stringTrim(attrValue);\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n      /* Handle attributes that require Trusted Types */\n      if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              {\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n              }\n            case 'TrustedScriptURL':\n              {\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n              }\n          }\n        }\n      }\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n        } else {\n          arrayPop(DOMPurify.removed);\n        }\n      } catch (_) {}\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n      // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n      return returnNode;\n    }\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  DOMPurify.setConfig = function () {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n      return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n    return arrayPop(hooks[entryPoint]);\n  };\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport { nodeIsAttachmentElement, removeNode, tagName, walkTree } from \"trix/core/helpers\"\nimport DOMPurify from \"dompurify\"\nimport * as config from \"trix/config\"\n\nDOMPurify.addHook(\"uponSanitizeAttribute\", function (node, data) {\n  const allowedAttributePattern = /^data-trix-/\n  if (allowedAttributePattern.test(data.attrName)) {\n    data.forceKeepAttr = true\n  }\n})\n\nconst DEFAULT_ALLOWED_ATTRIBUTES = \"style href src width height language class\".split(\" \")\nconst DEFAULT_FORBIDDEN_PROTOCOLS = \"javascript:\".split(\" \")\nconst DEFAULT_FORBIDDEN_ELEMENTS = \"script iframe form noscript\".split(\" \")\n\nexport default class HTMLSanitizer extends BasicObject {\n  static setHTML(element, html, options) {\n    const sanitizedElement = new this(html, options).sanitize()\n    const sanitizedHtml = sanitizedElement.getHTML ? sanitizedElement.getHTML() : sanitizedElement.outerHTML\n    element.innerHTML = sanitizedHtml\n  }\n\n  static sanitize(html, options) {\n    const sanitizer = new this(html, options)\n    sanitizer.sanitize()\n    return sanitizer\n  }\n\n  constructor(html, { allowedAttributes, forbiddenProtocols, forbiddenElements, purifyOptions } = {}) {\n    super(...arguments)\n    this.allowedAttributes = allowedAttributes || DEFAULT_ALLOWED_ATTRIBUTES\n    this.forbiddenProtocols = forbiddenProtocols || DEFAULT_FORBIDDEN_PROTOCOLS\n    this.forbiddenElements = forbiddenElements || DEFAULT_FORBIDDEN_ELEMENTS\n    this.purifyOptions = purifyOptions || {}\n    this.body = createBodyElementForHTML(html)\n  }\n\n  sanitize() {\n    this.sanitizeElements()\n    this.normalizeListElementNesting()\n    const purifyConfig = Object.assign({}, config.dompurify, this.purifyOptions)\n    DOMPurify.setConfig(purifyConfig)\n    this.body = DOMPurify.sanitize(this.body)\n\n    return this.body\n  }\n\n  getHTML() {\n    return this.body.innerHTML\n  }\n\n  getBody() {\n    return this.body\n  }\n\n  // Private\n\n  sanitizeElements() {\n    const walker = walkTree(this.body)\n    const nodesToRemove = []\n\n    while (walker.nextNode()) {\n      const node = walker.currentNode\n      switch (node.nodeType) {\n        case Node.ELEMENT_NODE:\n          if (this.elementIsRemovable(node)) {\n            nodesToRemove.push(node)\n          } else {\n            this.sanitizeElement(node)\n          }\n          break\n        case Node.COMMENT_NODE:\n          nodesToRemove.push(node)\n          break\n      }\n    }\n\n    nodesToRemove.forEach((node) => removeNode(node))\n\n    return this.body\n  }\n\n  sanitizeElement(element) {\n    if (element.hasAttribute(\"href\")) {\n      if (this.forbiddenProtocols.includes(element.protocol)) {\n        element.removeAttribute(\"href\")\n      }\n    }\n\n    Array.from(element.attributes).forEach(({ name }) => {\n      if (!this.allowedAttributes.includes(name) && name.indexOf(\"data-trix\") !== 0) {\n        element.removeAttribute(name)\n      }\n    })\n\n    return element\n  }\n\n  normalizeListElementNesting() {\n    Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach((listElement) => {\n      const previousElement = listElement.previousElementSibling\n      if (previousElement) {\n        if (tagName(previousElement) === \"li\") {\n          previousElement.appendChild(listElement)\n        }\n      }\n    })\n\n    return this.body\n  }\n\n  elementIsRemovable(element) {\n    if (element?.nodeType !== Node.ELEMENT_NODE) return\n    return this.elementIsForbidden(element) || this.elementIsntSerializable(element)\n  }\n\n  elementIsForbidden(element) {\n    return this.forbiddenElements.includes(tagName(element))\n  }\n\n  elementIsntSerializable(element) {\n    return element.getAttribute(\"data-trix-serialize\") === \"false\" && !nodeIsAttachmentElement(element)\n  }\n}\n\nconst createBodyElementForHTML = function(html = \"\") {\n  // Remove everything after </html>\n  html = html.replace(/<\\/html[^>]*>[^]*$/i, \"</html>\")\n  const doc = document.implementation.createHTMLDocument(\"\")\n  doc.documentElement.innerHTML = html\n\n  Array.from(doc.head.querySelectorAll(\"style\")).forEach((element) => {\n    doc.body.appendChild(element)\n  })\n\n  return doc.body\n}\n", "import * as config from \"trix/config\"\nimport { ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport { copyObject, makeElement } from \"trix/core/helpers\"\nimport ObjectView from \"trix/views/object_view\"\nimport HTMLSanitizer from \"trix/models/html_sanitizer\"\n\nconst { css } = config\n\nexport default class AttachmentView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.attachment = this.object\n    this.attachment.uploadProgressDelegate = this\n    this.attachmentPiece = this.options.piece\n  }\n\n  createContentNodes() {\n    return []\n  }\n\n  createNodes() {\n    let innerElement\n    const figure = innerElement = makeElement({\n      tagName: \"figure\",\n      className: this.getClassName(),\n      data: this.getData(),\n      editable: false,\n    })\n\n    const href = this.getHref()\n    if (href) {\n      innerElement = makeElement({ tagName: \"a\", editable: false, attributes: { href, tabindex: -1 } })\n      figure.appendChild(innerElement)\n    }\n\n    if (this.attachment.hasContent()) {\n      HTMLSanitizer.setHTML(innerElement, this.attachment.getContent())\n    } else {\n      this.createContentNodes().forEach((node) => {\n        innerElement.appendChild(node)\n      })\n    }\n\n    innerElement.appendChild(this.createCaptionElement())\n\n    if (this.attachment.isPending()) {\n      this.progressElement = makeElement({\n        tagName: \"progress\",\n        attributes: {\n          class: css.attachmentProgress,\n          value: this.attachment.getUploadProgress(),\n          max: 100,\n        },\n        data: {\n          trixMutable: true,\n          trixStoreKey: [ \"progressElement\", this.attachment.id ].join(\"/\"),\n        },\n      })\n\n      figure.appendChild(this.progressElement)\n    }\n\n    return [ createCursorTarget(\"left\"), figure, createCursorTarget(\"right\") ]\n  }\n\n  createCaptionElement() {\n    const figcaption = makeElement({ tagName: \"figcaption\", className: css.attachmentCaption })\n    const caption = this.attachmentPiece.getCaption()\n    if (caption) {\n      figcaption.classList.add(`${css.attachmentCaption}--edited`)\n      figcaption.textContent = caption\n    } else {\n      let name, size\n      const captionConfig = this.getCaptionConfig()\n      if (captionConfig.name) {\n        name = this.attachment.getFilename()\n      }\n      if (captionConfig.size) {\n        size = this.attachment.getFormattedFilesize()\n      }\n\n      if (name) {\n        const nameElement = makeElement({ tagName: \"span\", className: css.attachmentName, textContent: name })\n        figcaption.appendChild(nameElement)\n      }\n\n      if (size) {\n        if (name) {\n          figcaption.appendChild(document.createTextNode(\" \"))\n        }\n        const sizeElement = makeElement({ tagName: \"span\", className: css.attachmentSize, textContent: size })\n        figcaption.appendChild(sizeElement)\n      }\n    }\n\n    return figcaption\n  }\n\n  getClassName() {\n    const names = [ css.attachment, `${css.attachment}--${this.attachment.getType()}` ]\n    const extension = this.attachment.getExtension()\n    if (extension) {\n      names.push(`${css.attachment}--${extension}`)\n    }\n    return names.join(\" \")\n  }\n\n  getData() {\n    const data = {\n      trixAttachment: JSON.stringify(this.attachment),\n      trixContentType: this.attachment.getContentType(),\n      trixId: this.attachment.id,\n    }\n\n    const { attributes } = this.attachmentPiece\n    if (!attributes.isEmpty()) {\n      data.trixAttributes = JSON.stringify(attributes)\n    }\n\n    if (this.attachment.isPending()) {\n      data.trixSerialize = false\n    }\n\n    return data\n  }\n\n  getHref() {\n    if (!htmlContainsTagName(this.attachment.getContent(), \"a\")) {\n      return this.attachment.getHref()\n    }\n  }\n\n  getCaptionConfig() {\n    const type = this.attachment.getType()\n    const captionConfig = copyObject(config.attachments[type]?.caption)\n    if (type === \"file\") {\n      captionConfig.name = true\n    }\n    return captionConfig\n  }\n\n  findProgressElement() {\n    return this.findElement()?.querySelector(\"progress\")\n  }\n\n  // Attachment delegate\n\n  attachmentDidChangeUploadProgress() {\n    const value = this.attachment.getUploadProgress()\n    const progressElement = this.findProgressElement()\n    if (progressElement) {\n      progressElement.value = value\n    }\n  }\n}\n\nconst createCursorTarget = (name) =>\n  makeElement({\n    tagName: \"span\",\n    textContent: ZERO_WIDTH_SPACE,\n    data: {\n      trixCursorTarget: name,\n      trixSerialize: false,\n    },\n  })\n\nconst htmlContainsTagName = function(html, tagName) {\n  const div = makeElement(\"div\")\n  HTMLSanitizer.setHTML(div, html || \"\")\n  return div.querySelector(tagName)\n}\n", "import * as config from \"trix/config\"\nimport { makeElement } from \"trix/core/helpers\"\n\nimport AttachmentView from \"trix/views/attachment_view\"\n\nexport default class PreviewableAttachmentView extends AttachmentView {\n  constructor() {\n    super(...arguments)\n    this.attachment.previewDelegate = this\n  }\n\n  createContentNodes() {\n    this.image = makeElement({\n      tagName: \"img\",\n      attributes: {\n        src: \"\",\n      },\n      data: {\n        trixMutable: true,\n      },\n    })\n\n    this.refresh(this.image)\n    return [ this.image ]\n  }\n\n  createCaptionElement() {\n    const figcaption = super.createCaptionElement(...arguments)\n    if (!figcaption.textContent) {\n      figcaption.setAttribute(\"data-trix-placeholder\", config.lang.captionPlaceholder)\n    }\n    return figcaption\n  }\n\n  refresh(image) {\n    if (!image) { image = this.findElement()?.querySelector(\"img\") }\n    if (image) {\n      return this.updateAttributesForImage(image)\n    }\n  }\n\n  updateAttributesForImage(image) {\n    const url = this.attachment.getURL()\n    const previewURL = this.attachment.getPreviewURL()\n    image.src = previewURL || url\n\n    if (previewURL === url) {\n      image.removeAttribute(\"data-trix-serialized-attributes\")\n    } else {\n      const serializedAttributes = JSON.stringify({ src: url })\n      image.setAttribute(\"data-trix-serialized-attributes\", serializedAttributes)\n    }\n\n    const width = this.attachment.getWidth()\n    const height = this.attachment.getHeight()\n\n    if (width != null) {\n      image.width = width\n    }\n    if (height != null) {\n      image.height = height\n    }\n\n    const storeKey = [ \"imageElement\", this.attachment.id, image.src, image.width, image.height ].join(\"/\")\n    image.dataset.trixStoreKey = storeKey\n  }\n\n  // Attachment delegate\n\n  attachmentDidChangeAttributes() {\n    this.refresh(this.image)\n    return this.refresh()\n  }\n}\n", "/* eslint-disable\n    no-useless-escape,\n    no-var,\n*/\nimport { NON_BREAKING_SPACE } from \"trix/constants\"\n\nimport ObjectView from \"trix/views/object_view\"\nimport AttachmentView from \"trix/views/attachment_view\"\nimport PreviewableAttachmentView from \"trix/views/previewable_attachment_view\"\n\nimport { findInnerElement, getTextConfig, makeElement } from \"trix/core/helpers\"\n\nexport default class PieceView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.piece = this.object\n    this.attributes = this.piece.getAttributes()\n    this.textConfig = this.options.textConfig\n    this.context = this.options.context\n\n    if (this.piece.attachment) {\n      this.attachment = this.piece.attachment\n    } else {\n      this.string = this.piece.toString()\n    }\n  }\n\n  createNodes() {\n    let nodes = this.attachment ? this.createAttachmentNodes() : this.createStringNodes()\n    const element = this.createElement()\n    if (element) {\n      const innerElement = findInnerElement(element)\n      Array.from(nodes).forEach((node) => {\n        innerElement.appendChild(node)\n      })\n      nodes = [ element ]\n    }\n    return nodes\n  }\n\n  createAttachmentNodes() {\n    const constructor = this.attachment.isPreviewable() ? PreviewableAttachmentView : AttachmentView\n\n    const view = this.createChildView(constructor, this.piece.attachment, { piece: this.piece })\n    return view.getNodes()\n  }\n\n  createStringNodes() {\n    if (this.textConfig?.plaintext) {\n      return [ document.createTextNode(this.string) ]\n    } else {\n      const nodes = []\n      const iterable = this.string.split(\"\\n\")\n      for (let index = 0; index < iterable.length; index++) {\n        const substring = iterable[index]\n        if (index > 0) {\n          const element = makeElement(\"br\")\n          nodes.push(element)\n        }\n\n        if (substring.length) {\n          const node = document.createTextNode(this.preserveSpaces(substring))\n          nodes.push(node)\n        }\n      }\n      return nodes\n    }\n  }\n\n  createElement() {\n    let element, key, value\n    const styles = {}\n\n    for (key in this.attributes) {\n      value = this.attributes[key]\n      const config = getTextConfig(key)\n      if (config) {\n        if (config.tagName) {\n          var innerElement\n          const pendingElement = makeElement(config.tagName)\n\n          if (innerElement) {\n            innerElement.appendChild(pendingElement)\n            innerElement = pendingElement\n          } else {\n            element = innerElement = pendingElement\n          }\n        }\n\n        if (config.styleProperty) {\n          styles[config.styleProperty] = value\n        }\n\n        if (config.style) {\n          for (key in config.style) {\n            value = config.style[key]\n            styles[key] = value\n          }\n        }\n      }\n    }\n\n    if (Object.keys(styles).length) {\n      if (!element) { element = makeElement(\"span\") }\n      for (key in styles) {\n        value = styles[key]\n        element.style[key] = value\n      }\n    }\n    return element\n  }\n\n  createContainerElement() {\n    for (const key in this.attributes) {\n      const value = this.attributes[key]\n      const config = getTextConfig(key)\n      if (config) {\n        if (config.groupTagName) {\n          const attributes = {}\n          attributes[key] = value\n          return makeElement(config.groupTagName, attributes)\n        }\n      }\n    }\n  }\n\n  preserveSpaces(string) {\n    if (this.context.isLast) {\n      string = string.replace(/\\ $/, NON_BREAKING_SPACE)\n    }\n\n    string = string\n      .replace(/(\\S)\\ {3}(\\S)/g, `$1 ${NON_BREAKING_SPACE} $2`)\n      .replace(/\\ {2}/g, `${NON_BREAKING_SPACE} `)\n      .replace(/\\ {2}/g, ` ${NON_BREAKING_SPACE}`)\n\n    if (this.context.isFirst || this.context.followsWhitespace) {\n      string = string.replace(/^\\ /, NON_BREAKING_SPACE)\n    }\n\n    return string\n  }\n}\n", "/* eslint-disable\n    no-var,\n*/\nimport ObjectView from \"trix/views/object_view\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\nimport PieceView from \"trix/views/piece_view\"\n\nexport default class TextView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.text = this.object\n    this.textConfig = this.options.textConfig\n  }\n\n  createNodes() {\n    const nodes = []\n    const pieces = ObjectGroup.groupObjects(this.getPieces())\n    const lastIndex = pieces.length - 1\n\n    for (let index = 0; index < pieces.length; index++) {\n      const piece = pieces[index]\n      const context = {}\n      if (index === 0) {\n        context.isFirst = true\n      }\n      if (index === lastIndex) {\n        context.isLast = true\n      }\n      if (endsWithWhitespace(previousPiece)) {\n        context.followsWhitespace = true\n      }\n\n      const view = this.findOrCreateCachedChildView(PieceView, piece, { textConfig: this.textConfig, context })\n      nodes.push(...Array.from(view.getNodes() || []))\n\n      var previousPiece = piece\n    }\n    return nodes\n  }\n\n  getPieces() {\n    return Array.from(this.text.getPieces()).filter((piece) => !piece.hasAttribute(\"blockBreak\"))\n  }\n}\n\nconst endsWithWhitespace = (piece) => /\\s$/.test(piece?.toString())\n", "import * as config from \"trix/config\"\nimport ObjectView from \"trix/views/object_view\"\nimport TextView from \"trix/views/text_view\"\n\nimport { getBlockConfig, makeElement } from \"trix/core/helpers\"\nconst { css } = config\n\nexport default class BlockView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.block = this.object\n    this.attributes = this.block.getAttributes()\n  }\n\n  createNodes() {\n    const comment = document.createComment(\"block\")\n    const nodes = [ comment ]\n    if (this.block.isEmpty()) {\n      nodes.push(makeElement(\"br\"))\n    } else {\n      const textConfig = getBlockConfig(this.block.getLastAttribute())?.text\n      const textView = this.findOrCreateCachedChildView(TextView, this.block.text, { textConfig })\n      nodes.push(...Array.from(textView.getNodes() || []))\n      if (this.shouldAddExtraNewlineElement()) {\n        nodes.push(makeElement(\"br\"))\n      }\n    }\n\n    if (this.attributes.length) {\n      return nodes\n    } else {\n      let attributes\n      const { tagName } = config.blockAttributes.default\n      if (this.block.isRTL()) {\n        attributes = { dir: \"rtl\" }\n      }\n\n      const element = makeElement({ tagName, attributes })\n      nodes.forEach((node) => element.appendChild(node))\n      return [ element ]\n    }\n  }\n\n  createContainerElement(depth) {\n    const attributes = {}\n    let className\n    const attributeName = this.attributes[depth]\n\n    const { tagName, htmlAttributes = [] } = getBlockConfig(attributeName)\n\n    if (depth === 0 && this.block.isRTL()) {\n      Object.assign(attributes, { dir: \"rtl\" })\n    }\n\n    if (attributeName === \"attachmentGallery\") {\n      const size = this.block.getBlockBreakPosition()\n      className = `${css.attachmentGallery} ${css.attachmentGallery}--${size}`\n    }\n\n    Object.entries(this.block.htmlAttributes).forEach(([ name, value ]) => {\n      if (htmlAttributes.includes(name)) {\n        attributes[name] = value\n      }\n    })\n\n    return makeElement({ tagName, className, attributes })\n  }\n\n  // A single <br> at the end of a block element has no visual representation\n  // so add an extra one.\n  shouldAddExtraNewlineElement() {\n    return /\\n\\n$/.test(this.block.toString())\n  }\n}\n", "import { makeElement } from \"trix/core/helpers\"\n\nimport ElementStore from \"trix/core/collections/element_store\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\nimport ObjectView from \"trix/views/object_view\"\nimport BlockView from \"trix/views/block_view\"\n\nimport { defer } from \"trix/core/helpers\"\n\nexport default class DocumentView extends ObjectView {\n  static render(document) {\n    const element = makeElement(\"div\")\n    const view = new this(document, { element })\n    view.render()\n    view.sync()\n    return element\n  }\n\n  constructor() {\n    super(...arguments)\n    this.element = this.options.element\n    this.elementStore = new ElementStore()\n    this.setDocument(this.object)\n  }\n\n  setDocument(document) {\n    if (!document.isEqualTo(this.document)) {\n      this.document = this.object = document\n    }\n  }\n\n  render() {\n    this.childViews = []\n\n    this.shadowElement = makeElement(\"div\")\n\n    if (!this.document.isEmpty()) {\n      const objects = ObjectGroup.groupObjects(this.document.getBlocks(), { asTree: true })\n\n      Array.from(objects).forEach((object) => {\n        const view = this.findOrCreateCachedChildView(BlockView, object)\n        Array.from(view.getNodes()).map((node) => this.shadowElement.appendChild(node))\n      })\n    }\n  }\n\n  isSynced() {\n    return elementsHaveEqualHTML(this.shadowElement, this.element)\n  }\n\n  sync() {\n    const fragment = this.createDocumentFragmentForSync()\n    while (this.element.lastChild) {\n      this.element.removeChild(this.element.lastChild)\n    }\n    this.element.appendChild(fragment)\n    return this.didSync()\n  }\n\n  // Private\n\n  didSync() {\n    this.elementStore.reset(findStoredElements(this.element))\n    return defer(() => this.garbageCollectCachedViews())\n  }\n\n  createDocumentFragmentForSync() {\n    const fragment = document.createDocumentFragment()\n\n    Array.from(this.shadowElement.childNodes).forEach((node) => {\n      fragment.appendChild(node.cloneNode(true))\n    })\n\n    Array.from(findStoredElements(fragment)).forEach((element) => {\n      const storedElement = this.elementStore.remove(element)\n      if (storedElement) {\n        element.parentNode.replaceChild(storedElement, element)\n      }\n    })\n\n    return fragment\n  }\n}\n\nconst findStoredElements = (element) => element.querySelectorAll(\"[data-trix-store-key]\")\n\nconst elementsHaveEqualHTML = (element, otherElement) =>\n  ignoreSpaces(element.innerHTML) === ignoreSpaces(otherElement.innerHTML)\n\nconst ignoreSpaces = (html) => html.replace(/&nbsp;/g, \" \")\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Hash from \"trix/core/collections/hash\"\n\nexport default class Piece extends TrixObject {\n  static types = {}\n\n  static registerType(type, constructor) {\n    constructor.type = type\n    this.types[type] = constructor\n  }\n\n  static fromJSON(pieceJSON) {\n    const constructor = this.types[pieceJSON.type]\n    if (constructor) {\n      return constructor.fromJSON(pieceJSON)\n    }\n  }\n\n  constructor(value, attributes = {}) {\n    super(...arguments)\n    this.attributes = Hash.box(attributes)\n  }\n\n  copyWithAttributes(attributes) {\n    return new this.constructor(this.getValue(), attributes)\n  }\n\n  copyWithAdditionalAttributes(attributes) {\n    return this.copyWithAttributes(this.attributes.merge(attributes))\n  }\n\n  copyWithoutAttribute(attribute) {\n    return this.copyWithAttributes(this.attributes.remove(attribute))\n  }\n\n  copy() {\n    return this.copyWithAttributes(this.attributes)\n  }\n\n  getAttribute(attribute) {\n    return this.attributes.get(attribute)\n  }\n\n  getAttributesHash() {\n    return this.attributes\n  }\n\n  getAttributes() {\n    return this.attributes.toObject()\n  }\n\n  hasAttribute(attribute) {\n    return this.attributes.has(attribute)\n  }\n\n  hasSameStringValueAsPiece(piece) {\n    return piece && this.toString() === piece.toString()\n  }\n\n  hasSameAttributesAsPiece(piece) {\n    return piece && (this.attributes === piece.attributes || this.attributes.isEqualTo(piece.attributes))\n  }\n\n  isBlockBreak() {\n    return false\n  }\n\n  isEqualTo(piece) {\n    return (\n      super.isEqualTo(...arguments) ||\n      this.hasSameConstructorAs(piece) &&\n        this.hasSameStringValueAsPiece(piece) &&\n        this.hasSameAttributesAsPiece(piece)\n    )\n  }\n\n  isEmpty() {\n    return this.length === 0\n  }\n\n  isSerializable() {\n    return true\n  }\n\n  toJSON() {\n    return {\n      type: this.constructor.type,\n      attributes: this.getAttributes(),\n    }\n  }\n\n  contentsForInspection() {\n    return {\n      type: this.constructor.type,\n      attributes: this.attributes.inspect(),\n    }\n  }\n\n  // Grouping\n\n  canBeGrouped() {\n    return this.hasAttribute(\"href\")\n  }\n\n  canBeGroupedWith(piece) {\n    return this.getAttribute(\"href\") === piece.getAttribute(\"href\")\n  }\n\n  // Splittable\n\n  getLength() {\n    return this.length\n  }\n\n  canBeConsolidatedWith(piece) {\n    return false\n  }\n}\n", "import Operation from \"trix/core/utilities/operation\"\n\nexport default class ImagePreloadOperation extends Operation {\n  constructor(url) {\n    super(...arguments)\n    this.url = url\n  }\n\n  perform(callback) {\n    const image = new Image()\n\n    image.onload = () => {\n      image.width = this.width = image.naturalWidth\n      image.height = this.height = image.naturalHeight\n      return callback(true, image)\n    }\n\n    image.onerror = () => callback(false)\n\n    image.src = this.url\n  }\n}\n", "import * as config from \"trix/config\"\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Hash from \"trix/core/collections/hash\"\nimport ImagePreloadOperation from \"trix/operations/image_preload_operation\"\n\nexport default class Attachment extends TrixObject {\n  static previewablePattern = /^image(\\/(gif|png|webp|jpe?g)|$)/\n\n  static attachmentForFile(file) {\n    const attributes = this.attributesForFile(file)\n    const attachment = new this(attributes)\n    attachment.setFile(file)\n    return attachment\n  }\n\n  static attributesForFile(file) {\n    return new Hash({\n      filename: file.name,\n      filesize: file.size,\n      contentType: file.type,\n    })\n  }\n\n  static fromJSON(attachmentJSON) {\n    return new this(attachmentJSON)\n  }\n\n  constructor(attributes = {}) {\n    super(attributes)\n    this.releaseFile = this.releaseFile.bind(this)\n    this.attributes = Hash.box(attributes)\n    this.didChangeAttributes()\n  }\n\n  getAttribute(attribute) {\n    return this.attributes.get(attribute)\n  }\n\n  hasAttribute(attribute) {\n    return this.attributes.has(attribute)\n  }\n\n  getAttributes() {\n    return this.attributes.toObject()\n  }\n\n  setAttributes(attributes = {}) {\n    const newAttributes = this.attributes.merge(attributes)\n    if (!this.attributes.isEqualTo(newAttributes)) {\n      this.attributes = newAttributes\n      this.didChangeAttributes()\n      this.previewDelegate?.attachmentDidChangeAttributes?.(this)\n      return this.delegate?.attachmentDidChangeAttributes?.(this)\n    }\n  }\n\n  didChangeAttributes() {\n    if (this.isPreviewable()) {\n      return this.preloadURL()\n    }\n  }\n\n  isPending() {\n    return this.file != null && !(this.getURL() || this.getHref())\n  }\n\n  isPreviewable() {\n    if (this.attributes.has(\"previewable\")) {\n      return this.attributes.get(\"previewable\")\n    } else {\n      return Attachment.previewablePattern.test(this.getContentType())\n    }\n  }\n\n  getType() {\n    if (this.hasContent()) {\n      return \"content\"\n    } else if (this.isPreviewable()) {\n      return \"preview\"\n    } else {\n      return \"file\"\n    }\n  }\n\n  getURL() {\n    return this.attributes.get(\"url\")\n  }\n\n  getHref() {\n    return this.attributes.get(\"href\")\n  }\n\n  getFilename() {\n    return this.attributes.get(\"filename\") || \"\"\n  }\n\n  getFilesize() {\n    return this.attributes.get(\"filesize\")\n  }\n\n  getFormattedFilesize() {\n    const filesize = this.attributes.get(\"filesize\")\n    if (typeof filesize === \"number\") {\n      return config.fileSize.formatter(filesize)\n    } else {\n      return \"\"\n    }\n  }\n\n  getExtension() {\n    return this.getFilename()\n      .match(/\\.(\\w+)$/)?.[1]\n      .toLowerCase()\n  }\n\n  getContentType() {\n    return this.attributes.get(\"contentType\")\n  }\n\n  hasContent() {\n    return this.attributes.has(\"content\")\n  }\n\n  getContent() {\n    return this.attributes.get(\"content\")\n  }\n\n  getWidth() {\n    return this.attributes.get(\"width\")\n  }\n\n  getHeight() {\n    return this.attributes.get(\"height\")\n  }\n\n  getFile() {\n    return this.file\n  }\n\n  setFile(file) {\n    this.file = file\n    if (this.isPreviewable()) {\n      return this.preloadFile()\n    }\n  }\n\n  releaseFile() {\n    this.releasePreloadedFile()\n    this.file = null\n  }\n\n  getUploadProgress() {\n    return this.uploadProgress != null ? this.uploadProgress : 0\n  }\n\n  setUploadProgress(value) {\n    if (this.uploadProgress !== value) {\n      this.uploadProgress = value\n      return this.uploadProgressDelegate?.attachmentDidChangeUploadProgress?.(this)\n    }\n  }\n\n  toJSON() {\n    return this.getAttributes()\n  }\n\n  getCacheKey() {\n    return [ super.getCacheKey(...arguments), this.attributes.getCacheKey(), this.getPreviewURL() ].join(\"/\")\n  }\n\n  // Previewable\n\n  getPreviewURL() {\n    return this.previewURL || this.preloadingURL\n  }\n\n  setPreviewURL(url) {\n    if (url !== this.getPreviewURL()) {\n      this.previewURL = url\n      this.previewDelegate?.attachmentDidChangeAttributes?.(this)\n      return this.delegate?.attachmentDidChangePreviewURL?.(this)\n    }\n  }\n\n  preloadURL() {\n    return this.preload(this.getURL(), this.releaseFile)\n  }\n\n  preloadFile() {\n    if (this.file) {\n      this.fileObjectURL = URL.createObjectURL(this.file)\n      return this.preload(this.fileObjectURL)\n    }\n  }\n\n  releasePreloadedFile() {\n    if (this.fileObjectURL) {\n      URL.revokeObjectURL(this.fileObjectURL)\n      this.fileObjectURL = null\n    }\n  }\n\n  preload(url, callback) {\n    if (url && url !== this.getPreviewURL()) {\n      this.preloadingURL = url\n      const operation = new ImagePreloadOperation(url)\n      return operation\n        .then(({ width, height }) => {\n          if (!this.getWidth() || !this.getHeight()) {\n            this.setAttributes({ width, height })\n          }\n          this.preloadingURL = null\n          this.setPreviewURL(url)\n          return callback?.()\n        })\n        .catch(() => {\n          this.preloadingURL = null\n          return callback?.()\n        })\n    }\n  }\n}\n", "import { OBJECT_REPLACEMENT_CHARACTER } from \"trix/constants\"\n\nimport Attachment from \"trix/models/attachment\"\nimport Piece from \"trix/models/piece\"\n\nexport default class AttachmentPiece extends Piece {\n  static permittedAttributes = [ \"caption\", \"presentation\" ]\n\n  static fromJSON(pieceJSON) {\n    return new this(Attachment.fromJSON(pieceJSON.attachment), pieceJSON.attributes)\n  }\n\n  constructor(attachment) {\n    super(...arguments)\n    this.attachment = attachment\n    this.length = 1\n    this.ensureAttachmentExclusivelyHasAttribute(\"href\")\n    if (!this.attachment.hasContent()) {\n      this.removeProhibitedAttributes()\n    }\n  }\n\n  ensureAttachmentExclusivelyHasAttribute(attribute) {\n    if (this.hasAttribute(attribute)) {\n      if (!this.attachment.hasAttribute(attribute)) {\n        this.attachment.setAttributes(this.attributes.slice([ attribute ]))\n      }\n      this.attributes = this.attributes.remove(attribute)\n    }\n  }\n\n  removeProhibitedAttributes() {\n    const attributes = this.attributes.slice(AttachmentPiece.permittedAttributes)\n    if (!attributes.isEqualTo(this.attributes)) {\n      this.attributes = attributes\n    }\n  }\n\n  getValue() {\n    return this.attachment\n  }\n\n  isSerializable() {\n    return !this.attachment.isPending()\n  }\n\n  getCaption() {\n    return this.attributes.get(\"caption\") || \"\"\n  }\n\n  isEqualTo(piece) {\n    return super.isEqualTo(piece) && this.attachment.id === piece?.attachment?.id\n  }\n\n  toString() {\n    return OBJECT_REPLACEMENT_CHARACTER\n  }\n\n  toJSON() {\n    const json = super.toJSON(...arguments)\n    json.attachment = this.attachment\n    return json\n  }\n\n  getCacheKey() {\n    return [ super.getCacheKey(...arguments), this.attachment.getCacheKey() ].join(\"/\")\n  }\n\n  toConsole() {\n    return JSON.stringify(this.toString())\n  }\n}\n\nPiece.registerType(\"attachment\", AttachmentPiece)\n", "import Piece from \"trix/models/piece\"\n\nimport { normalizeNewlines } from \"trix/core/helpers\"\n\nexport default class StringPiece extends Piece {\n  static fromJSON(pieceJSON) {\n    return new this(pieceJSON.string, pieceJSON.attributes)\n  }\n\n  constructor(string) {\n    super(...arguments)\n    this.string = normalizeNewlines(string)\n    this.length = this.string.length\n  }\n\n  getValue() {\n    return this.string\n  }\n\n  toString() {\n    return this.string.toString()\n  }\n\n  isBlockBreak() {\n    return this.toString() === \"\\n\" && this.getAttribute(\"blockBreak\") === true\n  }\n\n  toJSON() {\n    const result = super.toJSON(...arguments)\n    result.string = this.string\n    return result\n  }\n\n  // Splittable\n\n  canBeConsolidatedWith(piece) {\n    return piece && this.hasSameConstructorAs(piece) && this.hasSameAttributesAsPiece(piece)\n  }\n\n  consolidateWith(piece) {\n    return new this.constructor(this.toString() + piece.toString(), this.attributes)\n  }\n\n  splitAtOffset(offset) {\n    let left, right\n    if (offset === 0) {\n      left = null\n      right = this\n    } else if (offset === this.length) {\n      left = this\n      right = null\n    } else {\n      left = new this.constructor(this.string.slice(0, offset), this.attributes)\n      right = new this.constructor(this.string.slice(offset), this.attributes)\n    }\n    return [ left, right ]\n  }\n\n  toConsole() {\n    let { string } = this\n    if (string.length > 15) {\n      string = string.slice(0, 14) + \"…\"\n    }\n    return JSON.stringify(string.toString())\n  }\n}\n\nPiece.registerType(\"string\", StringPiece)\n", "/* eslint-disable\n    prefer-const,\n*/\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport { spliceArray } from \"trix/core/helpers\"\n\nexport default class SplittableList extends TrixObject {\n  static box(objects) {\n    if (objects instanceof this) {\n      return objects\n    } else {\n      return new this(objects)\n    }\n  }\n\n  constructor(objects = []) {\n    super(...arguments)\n    this.objects = objects.slice(0)\n    this.length = this.objects.length\n  }\n\n  indexOf(object) {\n    return this.objects.indexOf(object)\n  }\n\n  splice(...args) {\n    return new this.constructor(spliceArray(this.objects, ...args))\n  }\n\n  eachObject(callback) {\n    return this.objects.map((object, index) => callback(object, index))\n  }\n\n  insertObjectAtIndex(object, index) {\n    return this.splice(index, 0, object)\n  }\n\n  insertSplittableListAtIndex(splittableList, index) {\n    return this.splice(index, 0, ...splittableList.objects)\n  }\n\n  insertSplittableListAtPosition(splittableList, position) {\n    const [ objects, index ] = this.splitObjectAtPosition(position)\n    return new this.constructor(objects).insertSplittableListAtIndex(splittableList, index)\n  }\n\n  editObjectAtIndex(index, callback) {\n    return this.replaceObjectAtIndex(callback(this.objects[index]), index)\n  }\n\n  replaceObjectAtIndex(object, index) {\n    return this.splice(index, 1, object)\n  }\n\n  removeObjectAtIndex(index) {\n    return this.splice(index, 1)\n  }\n\n  getObjectAtIndex(index) {\n    return this.objects[index]\n  }\n\n  getSplittableListInRange(range) {\n    const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n    return new this.constructor(objects.slice(leftIndex, rightIndex + 1))\n  }\n\n  selectSplittableList(test) {\n    const objects = this.objects.filter((object) => test(object))\n    return new this.constructor(objects)\n  }\n\n  removeObjectsInRange(range) {\n    const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n    return new this.constructor(objects).splice(leftIndex, rightIndex - leftIndex + 1)\n  }\n\n  transformObjectsInRange(range, transform) {\n    const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n    const transformedObjects = objects.map((object, index) =>\n      leftIndex <= index && index <= rightIndex ? transform(object) : object\n    )\n    return new this.constructor(transformedObjects)\n  }\n\n  splitObjectsAtRange(range) {\n    let rightOuterIndex\n    let [ objects, leftInnerIndex, offset ] = this.splitObjectAtPosition(startOfRange(range))\n    ;[ objects, rightOuterIndex ] = new this.constructor(objects).splitObjectAtPosition(endOfRange(range) + offset)\n\n    return [ objects, leftInnerIndex, rightOuterIndex - 1 ]\n  }\n\n  getObjectAtPosition(position) {\n    const { index } = this.findIndexAndOffsetAtPosition(position)\n    return this.objects[index]\n  }\n\n  splitObjectAtPosition(position) {\n    let splitIndex, splitOffset\n    const { index, offset } = this.findIndexAndOffsetAtPosition(position)\n    const objects = this.objects.slice(0)\n    if (index != null) {\n      if (offset === 0) {\n        splitIndex = index\n        splitOffset = 0\n      } else {\n        const object = this.getObjectAtIndex(index)\n        const [ leftObject, rightObject ] = object.splitAtOffset(offset)\n        objects.splice(index, 1, leftObject, rightObject)\n        splitIndex = index + 1\n        splitOffset = leftObject.getLength() - offset\n      }\n    } else {\n      splitIndex = objects.length\n      splitOffset = 0\n    }\n\n    return [ objects, splitIndex, splitOffset ]\n  }\n\n  consolidate() {\n    const objects = []\n    let pendingObject = this.objects[0]\n\n    this.objects.slice(1).forEach((object) => {\n      if (pendingObject.canBeConsolidatedWith?.(object)) {\n        pendingObject = pendingObject.consolidateWith(object)\n      } else {\n        objects.push(pendingObject)\n        pendingObject = object\n      }\n    })\n\n    if (pendingObject) {\n      objects.push(pendingObject)\n    }\n\n    return new this.constructor(objects)\n  }\n\n  consolidateFromIndexToIndex(startIndex, endIndex) {\n    const objects = this.objects.slice(0)\n    const objectsInRange = objects.slice(startIndex, endIndex + 1)\n    const consolidatedInRange = new this.constructor(objectsInRange).consolidate().toArray()\n    return this.splice(startIndex, objectsInRange.length, ...consolidatedInRange)\n  }\n\n  findIndexAndOffsetAtPosition(position) {\n    let index\n    let currentPosition = 0\n    for (index = 0; index < this.objects.length; index++) {\n      const object = this.objects[index]\n      const nextPosition = currentPosition + object.getLength()\n      if (currentPosition <= position && position < nextPosition) {\n        return { index, offset: position - currentPosition }\n      }\n      currentPosition = nextPosition\n    }\n    return { index: null, offset: null }\n  }\n\n  findPositionAtIndexAndOffset(index, offset) {\n    let position = 0\n    for (let currentIndex = 0; currentIndex < this.objects.length; currentIndex++) {\n      const object = this.objects[currentIndex]\n      if (currentIndex < index) {\n        position += object.getLength()\n      } else if (currentIndex === index) {\n        position += offset\n        break\n      }\n    }\n    return position\n  }\n\n  getEndPosition() {\n    if (this.endPosition == null) {\n      this.endPosition = 0\n      this.objects.forEach((object) => this.endPosition += object.getLength())\n    }\n\n    return this.endPosition\n  }\n\n  toString() {\n    return this.objects.join(\"\")\n  }\n\n  toArray() {\n    return this.objects.slice(0)\n  }\n\n  toJSON() {\n    return this.toArray()\n  }\n\n  isEqualTo(splittableList) {\n    return super.isEqualTo(...arguments) || objectArraysAreEqual(this.objects, splittableList?.objects)\n  }\n\n  contentsForInspection() {\n    return {\n      objects: `[${this.objects.map((object) => object.inspect()).join(\", \")}]`,\n    }\n  }\n}\n\nconst objectArraysAreEqual = function(left, right = []) {\n  if (left.length !== right.length) {\n    return false\n  }\n  let result = true\n  for (let index = 0; index < left.length; index++) {\n    const object = left[index]\n    if (result && !object.isEqualTo(right[index])) {\n      result = false\n    }\n  }\n  return result\n}\n\nconst startOfRange = (range) => range[0]\n\nconst endOfRange = (range) => range[1]\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport { getDirection } from \"trix/core/helpers\"\n\nimport Piece from \"trix/models/piece\"\nimport AttachmentPiece from \"trix/models/attachment_piece\"\nimport StringPiece from \"trix/models/string_piece\"\nimport SplittableList from \"trix/models/splittable_list\"\n\nimport Hash from \"trix/core/collections/hash\"\n\nexport default class Text extends TrixObject {\n  static textForAttachmentWithAttributes(attachment, attributes) {\n    const piece = new AttachmentPiece(attachment, attributes)\n    return new this([ piece ])\n  }\n\n  static textForStringWithAttributes(string, attributes) {\n    const piece = new StringPiece(string, attributes)\n    return new this([ piece ])\n  }\n\n  static fromJSON(textJSON) {\n    const pieces = Array.from(textJSON).map((pieceJSON) => Piece.fromJSON(pieceJSON))\n    return new this(pieces)\n  }\n\n  constructor(pieces = []) {\n    super(...arguments)\n    const notEmpty = pieces.filter((piece) => !piece.isEmpty())\n    this.pieceList = new SplittableList(notEmpty)\n  }\n\n  copy() {\n    return this.copyWithPieceList(this.pieceList)\n  }\n\n  copyWithPieceList(pieceList) {\n    return new this.constructor(pieceList.consolidate().toArray())\n  }\n\n  copyUsingObjectMap(objectMap) {\n    const pieces = this.getPieces().map((piece) => objectMap.find(piece) || piece)\n    return new this.constructor(pieces)\n  }\n\n  appendText(text) {\n    return this.insertTextAtPosition(text, this.getLength())\n  }\n\n  insertTextAtPosition(text, position) {\n    return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(text.pieceList, position))\n  }\n\n  removeTextAtRange(range) {\n    return this.copyWithPieceList(this.pieceList.removeObjectsInRange(range))\n  }\n\n  replaceTextAtRange(text, range) {\n    return this.removeTextAtRange(range).insertTextAtPosition(text, range[0])\n  }\n\n  moveTextFromRangeToPosition(range, position) {\n    if (range[0] <= position && position <= range[1]) return\n    const text = this.getTextAtRange(range)\n    const length = text.getLength()\n    if (range[0] < position) {\n      position -= length\n    }\n    return this.removeTextAtRange(range).insertTextAtPosition(text, position)\n  }\n\n  addAttributeAtRange(attribute, value, range) {\n    const attributes = {}\n    attributes[attribute] = value\n    return this.addAttributesAtRange(attributes, range)\n  }\n\n  addAttributesAtRange(attributes, range) {\n    return this.copyWithPieceList(\n      this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithAdditionalAttributes(attributes))\n    )\n  }\n\n  removeAttributeAtRange(attribute, range) {\n    return this.copyWithPieceList(\n      this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithoutAttribute(attribute))\n    )\n  }\n\n  setAttributesAtRange(attributes, range) {\n    return this.copyWithPieceList(\n      this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithAttributes(attributes))\n    )\n  }\n\n  getAttributesAtPosition(position) {\n    return this.pieceList.getObjectAtPosition(position)?.getAttributes() || {}\n  }\n\n  getCommonAttributes() {\n    const objects = Array.from(this.pieceList.toArray()).map((piece) => piece.getAttributes())\n    return Hash.fromCommonAttributesOfObjects(objects).toObject()\n  }\n\n  getCommonAttributesAtRange(range) {\n    return this.getTextAtRange(range).getCommonAttributes() || {}\n  }\n\n  getExpandedRangeForAttributeAtOffset(attributeName, offset) {\n    let right\n    let left = right = offset\n    const length = this.getLength()\n\n    while (left > 0 && this.getCommonAttributesAtRange([ left - 1, right ])[attributeName]) {\n      left--\n    }\n    while (right < length && this.getCommonAttributesAtRange([ offset, right + 1 ])[attributeName]) {\n      right++\n    }\n\n    return [ left, right ]\n  }\n\n  getTextAtRange(range) {\n    return this.copyWithPieceList(this.pieceList.getSplittableListInRange(range))\n  }\n\n  getStringAtRange(range) {\n    return this.pieceList.getSplittableListInRange(range).toString()\n  }\n\n  getStringAtPosition(position) {\n    return this.getStringAtRange([ position, position + 1 ])\n  }\n\n  startsWithString(string) {\n    return this.getStringAtRange([ 0, string.length ]) === string\n  }\n\n  endsWithString(string) {\n    const length = this.getLength()\n    return this.getStringAtRange([ length - string.length, length ]) === string\n  }\n\n  getAttachmentPieces() {\n    return this.pieceList.toArray().filter((piece) => !!piece.attachment)\n  }\n\n  getAttachments() {\n    return this.getAttachmentPieces().map((piece) => piece.attachment)\n  }\n\n  getAttachmentAndPositionById(attachmentId) {\n    let position = 0\n    for (const piece of this.pieceList.toArray()) {\n      if (piece.attachment?.id === attachmentId) {\n        return { attachment: piece.attachment, position }\n      }\n      position += piece.length\n    }\n    return { attachment: null, position: null }\n  }\n\n  getAttachmentById(attachmentId) {\n    const { attachment } = this.getAttachmentAndPositionById(attachmentId)\n    return attachment\n  }\n\n  getRangeOfAttachment(attachment) {\n    const attachmentAndPosition = this.getAttachmentAndPositionById(attachment.id)\n    const position = attachmentAndPosition.position\n    attachment = attachmentAndPosition.attachment\n    if (attachment) {\n      return [ position, position + 1 ]\n    }\n  }\n\n  updateAttributesForAttachment(attributes, attachment) {\n    const range = this.getRangeOfAttachment(attachment)\n    if (range) {\n      return this.addAttributesAtRange(attributes, range)\n    } else {\n      return this\n    }\n  }\n\n  getLength() {\n    return this.pieceList.getEndPosition()\n  }\n\n  isEmpty() {\n    return this.getLength() === 0\n  }\n\n  isEqualTo(text) {\n    return super.isEqualTo(text) || text?.pieceList?.isEqualTo(this.pieceList)\n  }\n\n  isBlockBreak() {\n    return this.getLength() === 1 && this.pieceList.getObjectAtIndex(0).isBlockBreak()\n  }\n\n  eachPiece(callback) {\n    return this.pieceList.eachObject(callback)\n  }\n\n  getPieces() {\n    return this.pieceList.toArray()\n  }\n\n  getPieceAtPosition(position) {\n    return this.pieceList.getObjectAtPosition(position)\n  }\n\n  contentsForInspection() {\n    return { pieceList: this.pieceList.inspect() }\n  }\n\n  toSerializableText() {\n    const pieceList = this.pieceList.selectSplittableList((piece) => piece.isSerializable())\n    return this.copyWithPieceList(pieceList)\n  }\n\n  toString() {\n    return this.pieceList.toString()\n  }\n\n  toJSON() {\n    return this.pieceList.toJSON()\n  }\n\n  toConsole() {\n    return JSON.stringify(this.pieceList.toArray().map((piece) => JSON.parse(piece.toConsole())))\n  }\n\n  // BIDI\n\n  getDirection() {\n    return getDirection(this.toString())\n  }\n\n  isRTL() {\n    return this.getDirection() === \"rtl\"\n  }\n}\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Text from \"trix/models/text\"\n\nimport {\n  arraysAreEqual,\n  getBlockConfig,\n  getListAttributeNames,\n  objectsAreEqual,\n  spliceArray,\n} from \"trix/core/helpers\"\n\nexport default class Block extends TrixObject {\n  static fromJSON(blockJSON) {\n    const text = Text.fromJSON(blockJSON.text)\n    return new this(text, blockJSON.attributes, blockJSON.htmlAttributes)\n  }\n\n  constructor(text, attributes, htmlAttributes) {\n    super(...arguments)\n    this.text = applyBlockBreakToText(text || new Text())\n    this.attributes = attributes || []\n    this.htmlAttributes = htmlAttributes || {}\n  }\n\n  isEmpty() {\n    return this.text.isBlockBreak()\n  }\n\n  isEqualTo(block) {\n    if (super.isEqualTo(block)) return true\n\n    return this.text.isEqualTo(block?.text) && arraysAreEqual(this.attributes, block?.attributes) && objectsAreEqual(this.htmlAttributes, block?.htmlAttributes)\n  }\n\n  copyWithText(text) {\n    return new Block(text, this.attributes, this.htmlAttributes)\n  }\n\n  copyWithoutText() {\n    return this.copyWithText(null)\n  }\n\n  copyWithAttributes(attributes) {\n    return new Block(this.text, attributes, this.htmlAttributes)\n  }\n\n  copyWithoutAttributes() {\n    return this.copyWithAttributes(null)\n  }\n\n  copyUsingObjectMap(objectMap) {\n    const mappedText = objectMap.find(this.text)\n    if (mappedText) {\n      return this.copyWithText(mappedText)\n    } else {\n      return this.copyWithText(this.text.copyUsingObjectMap(objectMap))\n    }\n  }\n\n  addAttribute(attribute) {\n    const attributes = this.attributes.concat(expandAttribute(attribute))\n    return this.copyWithAttributes(attributes)\n  }\n\n  addHTMLAttribute(attribute, value) {\n    const htmlAttributes = Object.assign({}, this.htmlAttributes, { [attribute]: value })\n    return new Block(this.text, this.attributes, htmlAttributes)\n  }\n\n  removeAttribute(attribute) {\n    const { listAttribute } = getBlockConfig(attribute)\n    const attributes = removeLastValue(removeLastValue(this.attributes, attribute), listAttribute)\n    return this.copyWithAttributes(attributes)\n  }\n\n  removeLastAttribute() {\n    return this.removeAttribute(this.getLastAttribute())\n  }\n\n  getLastAttribute() {\n    return getLastElement(this.attributes)\n  }\n\n  getAttributes() {\n    return this.attributes.slice(0)\n  }\n\n  getAttributeLevel() {\n    return this.attributes.length\n  }\n\n  getAttributeAtLevel(level) {\n    return this.attributes[level - 1]\n  }\n\n  hasAttribute(attributeName) {\n    return this.attributes.includes(attributeName)\n  }\n\n  hasAttributes() {\n    return this.getAttributeLevel() > 0\n  }\n\n  getLastNestableAttribute() {\n    return getLastElement(this.getNestableAttributes())\n  }\n\n  getNestableAttributes() {\n    return this.attributes.filter((attribute) => getBlockConfig(attribute).nestable)\n  }\n\n  getNestingLevel() {\n    return this.getNestableAttributes().length\n  }\n\n  decreaseNestingLevel() {\n    const attribute = this.getLastNestableAttribute()\n    if (attribute) {\n      return this.removeAttribute(attribute)\n    } else {\n      return this\n    }\n  }\n\n  increaseNestingLevel() {\n    const attribute = this.getLastNestableAttribute()\n    if (attribute) {\n      const index = this.attributes.lastIndexOf(attribute)\n      const attributes = spliceArray(this.attributes, index + 1, 0, ...expandAttribute(attribute))\n      return this.copyWithAttributes(attributes)\n    } else {\n      return this\n    }\n  }\n\n  getListItemAttributes() {\n    return this.attributes.filter((attribute) => getBlockConfig(attribute).listAttribute)\n  }\n\n  isListItem() {\n    return getBlockConfig(this.getLastAttribute())?.listAttribute\n  }\n\n  isTerminalBlock() {\n    return getBlockConfig(this.getLastAttribute())?.terminal\n  }\n\n  breaksOnReturn() {\n    return getBlockConfig(this.getLastAttribute())?.breakOnReturn\n  }\n\n  findLineBreakInDirectionFromPosition(direction, position) {\n    const string = this.toString()\n    let result\n    switch (direction) {\n      case \"forward\":\n        result = string.indexOf(\"\\n\", position)\n        break\n      case \"backward\":\n        result = string.slice(0, position).lastIndexOf(\"\\n\")\n    }\n\n    if (result !== -1) {\n      return result\n    }\n  }\n\n  contentsForInspection() {\n    return {\n      text: this.text.inspect(),\n      attributes: this.attributes,\n    }\n  }\n\n  toString() {\n    return this.text.toString()\n  }\n\n  toJSON() {\n    return {\n      text: this.text,\n      attributes: this.attributes,\n      htmlAttributes: this.htmlAttributes,\n    }\n  }\n\n  // BIDI\n\n  getDirection() {\n    return this.text.getDirection()\n  }\n\n  isRTL() {\n    return this.text.isRTL()\n  }\n\n  // Splittable\n\n  getLength() {\n    return this.text.getLength()\n  }\n\n  canBeConsolidatedWith(block) {\n    return !this.hasAttributes() && !block.hasAttributes() && this.getDirection() === block.getDirection()\n  }\n\n  consolidateWith(block) {\n    const newlineText = Text.textForStringWithAttributes(\"\\n\")\n    const text = this.getTextWithoutBlockBreak().appendText(newlineText)\n    return this.copyWithText(text.appendText(block.text))\n  }\n\n  splitAtOffset(offset) {\n    let left, right\n    if (offset === 0) {\n      left = null\n      right = this\n    } else if (offset === this.getLength()) {\n      left = this\n      right = null\n    } else {\n      left = this.copyWithText(this.text.getTextAtRange([ 0, offset ]))\n      right = this.copyWithText(this.text.getTextAtRange([ offset, this.getLength() ]))\n    }\n    return [ left, right ]\n  }\n\n  getBlockBreakPosition() {\n    return this.text.getLength() - 1\n  }\n\n  getTextWithoutBlockBreak() {\n    if (textEndsInBlockBreak(this.text)) {\n      return this.text.getTextAtRange([ 0, this.getBlockBreakPosition() ])\n    } else {\n      return this.text.copy()\n    }\n  }\n\n  // Grouping\n\n  canBeGrouped(depth) {\n    return this.attributes[depth]\n  }\n\n  canBeGroupedWith(otherBlock, depth) {\n    const otherAttributes = otherBlock.getAttributes()\n    const otherAttribute = otherAttributes[depth]\n    const attribute = this.attributes[depth]\n\n    return (\n      attribute === otherAttribute &&\n      !(getBlockConfig(attribute).group === false && !getListAttributeNames().includes(otherAttributes[depth + 1])) &&\n      (this.getDirection() === otherBlock.getDirection() || otherBlock.isEmpty())\n    )\n  }\n}\n\n// Block breaks\n\nconst applyBlockBreakToText = function(text) {\n  text = unmarkExistingInnerBlockBreaksInText(text)\n  text = addBlockBreakToText(text)\n  return text\n}\n\nconst unmarkExistingInnerBlockBreaksInText = function(text) {\n  let modified = false\n  const pieces = text.getPieces()\n\n  let innerPieces = pieces.slice(0, pieces.length - 1)\n  const lastPiece = pieces[pieces.length - 1]\n\n  if (!lastPiece) return text\n\n  innerPieces = innerPieces.map((piece) => {\n    if (piece.isBlockBreak()) {\n      modified = true\n      return unmarkBlockBreakPiece(piece)\n    } else {\n      return piece\n    }\n  })\n\n  if (modified) {\n    return new Text([ ...innerPieces, lastPiece ])\n  } else {\n    return text\n  }\n}\n\nconst blockBreakText = Text.textForStringWithAttributes(\"\\n\", { blockBreak: true })\n\nconst addBlockBreakToText = function(text) {\n  if (textEndsInBlockBreak(text)) {\n    return text\n  } else {\n    return text.appendText(blockBreakText)\n  }\n}\n\nconst textEndsInBlockBreak = function(text) {\n  const length = text.getLength()\n  if (length === 0) {\n    return false\n  }\n  const endText = text.getTextAtRange([ length - 1, length ])\n  return endText.isBlockBreak()\n}\n\nconst unmarkBlockBreakPiece = (piece) => piece.copyWithoutAttribute(\"blockBreak\")\n\n// Attributes\n\nconst expandAttribute = function(attribute) {\n  const { listAttribute } = getBlockConfig(attribute)\n  if (listAttribute) {\n    return [ listAttribute, attribute ]\n  } else {\n    return [ attribute ]\n  }\n}\n\n// Array helpers\n\nconst getLastElement = (array) => array.slice(-1)[0]\n\nconst removeLastValue = function(array, value) {\n  const index = array.lastIndexOf(value)\n  if (index === -1) {\n    return array\n  } else {\n    return spliceArray(array, index, 1)\n  }\n}\n", "import * as config from \"trix/config\"\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport Text from \"trix/models/text\"\nimport Block from \"trix/models/block\"\nimport SplittableList from \"trix/models/splittable_list\"\nimport Hash from \"trix/core/collections/hash\"\nimport ObjectMap from \"trix/core/collections/object_map\"\n\nimport { arraysAreEqual, getBlockConfig, normalizeRange, rangeIsCollapsed } from \"trix/core/helpers\"\n\nexport default class Document extends TrixObject {\n  static fromJSON(documentJSON) {\n    const blocks = Array.from(documentJSON).map((blockJSON) => Block.fromJSON(blockJSON))\n    return new this(blocks)\n  }\n\n  static fromString(string, textAttributes) {\n    const text = Text.textForStringWithAttributes(string, textAttributes)\n    return new this([ new Block(text) ])\n  }\n\n  constructor(blocks = []) {\n    super(...arguments)\n    if (blocks.length === 0) {\n      blocks = [ new Block() ]\n    }\n    this.blockList = SplittableList.box(blocks)\n  }\n\n  isEmpty() {\n    const block = this.getBlockAtIndex(0)\n    return this.blockList.length === 1 && block.isEmpty() && !block.hasAttributes()\n  }\n\n  copy(options = {}) {\n    const blocks = options.consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray()\n\n    return new this.constructor(blocks)\n  }\n\n  copyUsingObjectsFromDocument(sourceDocument) {\n    const objectMap = new ObjectMap(sourceDocument.getObjects())\n    return this.copyUsingObjectMap(objectMap)\n  }\n\n  copyUsingObjectMap(objectMap) {\n    const blocks = this.getBlocks().map((block) => {\n      const mappedBlock = objectMap.find(block)\n      return mappedBlock || block.copyUsingObjectMap(objectMap)\n    })\n    return new this.constructor(blocks)\n  }\n\n  copyWithBaseBlockAttributes(blockAttributes = []) {\n    const blocks = this.getBlocks().map((block) => {\n      const attributes = blockAttributes.concat(block.getAttributes())\n      return block.copyWithAttributes(attributes)\n    })\n\n    return new this.constructor(blocks)\n  }\n\n  replaceBlock(oldBlock, newBlock) {\n    const index = this.blockList.indexOf(oldBlock)\n    if (index === -1) {\n      return this\n    }\n    return new this.constructor(this.blockList.replaceObjectAtIndex(newBlock, index))\n  }\n\n  insertDocumentAtRange(document, range) {\n    const { blockList } = document\n    range = normalizeRange(range)\n    let [ position ] = range\n    const { index, offset } = this.locationFromPosition(position)\n\n    let result = this\n    const block = this.getBlockAtPosition(position)\n\n    if (rangeIsCollapsed(range) && block.isEmpty() && !block.hasAttributes()) {\n      result = new this.constructor(result.blockList.removeObjectAtIndex(index))\n    } else if (block.getBlockBreakPosition() === offset) {\n      position++\n    }\n\n    result = result.removeTextAtRange(range)\n    return new this.constructor(result.blockList.insertSplittableListAtPosition(blockList, position))\n  }\n\n  mergeDocumentAtRange(document, range) {\n    let formattedDocument, result\n    range = normalizeRange(range)\n    const [ startPosition ] = range\n    const startLocation = this.locationFromPosition(startPosition)\n    const blockAttributes = this.getBlockAtIndex(startLocation.index).getAttributes()\n    const baseBlockAttributes = document.getBaseBlockAttributes()\n    const trailingBlockAttributes = blockAttributes.slice(-baseBlockAttributes.length)\n\n    if (arraysAreEqual(baseBlockAttributes, trailingBlockAttributes)) {\n      const leadingBlockAttributes = blockAttributes.slice(0, -baseBlockAttributes.length)\n      formattedDocument = document.copyWithBaseBlockAttributes(leadingBlockAttributes)\n    } else {\n      formattedDocument = document.copy({ consolidateBlocks: true }).copyWithBaseBlockAttributes(blockAttributes)\n    }\n\n    const blockCount = formattedDocument.getBlockCount()\n    const firstBlock = formattedDocument.getBlockAtIndex(0)\n\n    if (arraysAreEqual(blockAttributes, firstBlock.getAttributes())) {\n      const firstText = firstBlock.getTextWithoutBlockBreak()\n      result = this.insertTextAtRange(firstText, range)\n\n      if (blockCount > 1) {\n        formattedDocument = new this.constructor(formattedDocument.getBlocks().slice(1))\n        const position = startPosition + firstText.getLength()\n        result = result.insertDocumentAtRange(formattedDocument, position)\n      }\n    } else {\n      result = this.insertDocumentAtRange(formattedDocument, range)\n    }\n\n    return result\n  }\n\n  insertTextAtRange(text, range) {\n    range = normalizeRange(range)\n    const [ startPosition ] = range\n    const { index, offset } = this.locationFromPosition(startPosition)\n\n    const document = this.removeTextAtRange(range)\n    return new this.constructor(\n      document.blockList.editObjectAtIndex(index, (block) =>\n        block.copyWithText(block.text.insertTextAtPosition(text, offset))\n      )\n    )\n  }\n\n  removeTextAtRange(range) {\n    let blocks\n    range = normalizeRange(range)\n    const [ leftPosition, rightPosition ] = range\n    if (rangeIsCollapsed(range)) {\n      return this\n    }\n    const [ leftLocation, rightLocation ] = Array.from(this.locationRangeFromRange(range))\n\n    const leftIndex = leftLocation.index\n    const leftOffset = leftLocation.offset\n    const leftBlock = this.getBlockAtIndex(leftIndex)\n\n    const rightIndex = rightLocation.index\n    const rightOffset = rightLocation.offset\n    const rightBlock = this.getBlockAtIndex(rightIndex)\n\n    const removeRightNewline =\n      rightPosition - leftPosition === 1 &&\n      leftBlock.getBlockBreakPosition() === leftOffset &&\n      rightBlock.getBlockBreakPosition() !== rightOffset &&\n      rightBlock.text.getStringAtPosition(rightOffset) === \"\\n\"\n\n    if (removeRightNewline) {\n      blocks = this.blockList.editObjectAtIndex(rightIndex, (block) =>\n        block.copyWithText(block.text.removeTextAtRange([ rightOffset, rightOffset + 1 ]))\n      )\n    } else {\n      let block\n      const leftText = leftBlock.text.getTextAtRange([ 0, leftOffset ])\n      const rightText = rightBlock.text.getTextAtRange([ rightOffset, rightBlock.getLength() ])\n      const text = leftText.appendText(rightText)\n\n      const removingLeftBlock = leftIndex !== rightIndex && leftOffset === 0\n      const useRightBlock = removingLeftBlock && leftBlock.getAttributeLevel() >= rightBlock.getAttributeLevel()\n\n      if (useRightBlock) {\n        block = rightBlock.copyWithText(text)\n      } else {\n        block = leftBlock.copyWithText(text)\n      }\n\n      const affectedBlockCount = rightIndex + 1 - leftIndex\n      blocks = this.blockList.splice(leftIndex, affectedBlockCount, block)\n    }\n\n    return new this.constructor(blocks)\n  }\n\n  moveTextFromRangeToPosition(range, position) {\n    let text\n    range = normalizeRange(range)\n    const [ startPosition, endPosition ] = range\n    if (startPosition <= position && position <= endPosition) {\n      return this\n    }\n\n    let document = this.getDocumentAtRange(range)\n    let result = this.removeTextAtRange(range)\n\n    const movingRightward = startPosition < position\n    if (movingRightward) {\n      position -= document.getLength()\n    }\n\n    const [ firstBlock, ...blocks ] = document.getBlocks()\n    if (blocks.length === 0) {\n      text = firstBlock.getTextWithoutBlockBreak()\n      if (movingRightward) {\n        position += 1\n      }\n    } else {\n      text = firstBlock.text\n    }\n\n    result = result.insertTextAtRange(text, position)\n    if (blocks.length === 0) {\n      return result\n    }\n\n    document = new this.constructor(blocks)\n    position += text.getLength()\n\n    return result.insertDocumentAtRange(document, position)\n  }\n\n  addAttributeAtRange(attribute, value, range) {\n    let { blockList } = this\n    this.eachBlockAtRange(\n      range,\n      (block, textRange, index) =>\n        blockList = blockList.editObjectAtIndex(index, function() {\n          if (getBlockConfig(attribute)) {\n            return block.addAttribute(attribute, value)\n          } else {\n            if (textRange[0] === textRange[1]) {\n              return block\n            } else {\n              return block.copyWithText(block.text.addAttributeAtRange(attribute, value, textRange))\n            }\n          }\n        })\n    )\n    return new this.constructor(blockList)\n  }\n\n  addAttribute(attribute, value) {\n    let { blockList } = this\n    this.eachBlock(\n      (block, index) => blockList = blockList.editObjectAtIndex(index, () => block.addAttribute(attribute, value))\n    )\n    return new this.constructor(blockList)\n  }\n\n  removeAttributeAtRange(attribute, range) {\n    let { blockList } = this\n    this.eachBlockAtRange(range, function(block, textRange, index) {\n      if (getBlockConfig(attribute)) {\n        blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(attribute))\n      } else if (textRange[0] !== textRange[1]) {\n        blockList = blockList.editObjectAtIndex(index, () =>\n          block.copyWithText(block.text.removeAttributeAtRange(attribute, textRange))\n        )\n      }\n    })\n    return new this.constructor(blockList)\n  }\n\n  updateAttributesForAttachment(attributes, attachment) {\n    const range = this.getRangeOfAttachment(attachment)\n    const [ startPosition ] = Array.from(range)\n    const { index } = this.locationFromPosition(startPosition)\n    const text = this.getTextAtIndex(index)\n\n    return new this.constructor(\n      this.blockList.editObjectAtIndex(index, (block) =>\n        block.copyWithText(text.updateAttributesForAttachment(attributes, attachment))\n      )\n    )\n  }\n\n  removeAttributeForAttachment(attribute, attachment) {\n    const range = this.getRangeOfAttachment(attachment)\n    return this.removeAttributeAtRange(attribute, range)\n  }\n\n  setHTMLAttributeAtPosition(position, name, value) {\n    const block = this.getBlockAtPosition(position)\n    const updatedBlock = block.addHTMLAttribute(name, value)\n    return this.replaceBlock(block, updatedBlock)\n  }\n\n  insertBlockBreakAtRange(range) {\n    let blocks\n    range = normalizeRange(range)\n    const [ startPosition ] = range\n    const { offset } = this.locationFromPosition(startPosition)\n\n    const document = this.removeTextAtRange(range)\n    if (offset === 0) {\n      blocks = [ new Block() ]\n    }\n    return new this.constructor(\n      document.blockList.insertSplittableListAtPosition(new SplittableList(blocks), startPosition)\n    )\n  }\n\n  applyBlockAttributeAtRange(attributeName, value, range) {\n    const expanded = this.expandRangeToLineBreaksAndSplitBlocks(range)\n    let document = expanded.document\n    range = expanded.range\n    const blockConfig = getBlockConfig(attributeName)\n\n    if (blockConfig.listAttribute) {\n      document = document.removeLastListAttributeAtRange(range, { exceptAttributeName: attributeName })\n      const converted = document.convertLineBreaksToBlockBreaksInRange(range)\n      document = converted.document\n      range = converted.range\n    } else if (blockConfig.exclusive) {\n      document = document.removeBlockAttributesAtRange(range)\n    } else if (blockConfig.terminal) {\n      document = document.removeLastTerminalAttributeAtRange(range)\n    } else {\n      document = document.consolidateBlocksAtRange(range)\n    }\n\n    return document.addAttributeAtRange(attributeName, value, range)\n  }\n\n  removeLastListAttributeAtRange(range, options = {}) {\n    let { blockList } = this\n    this.eachBlockAtRange(range, function(block, textRange, index) {\n      const lastAttributeName = block.getLastAttribute()\n      if (!lastAttributeName) {\n        return\n      }\n      if (!getBlockConfig(lastAttributeName).listAttribute) {\n        return\n      }\n      if (lastAttributeName === options.exceptAttributeName) {\n        return\n      }\n      blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName))\n    })\n    return new this.constructor(blockList)\n  }\n\n  removeLastTerminalAttributeAtRange(range) {\n    let { blockList } = this\n    this.eachBlockAtRange(range, function(block, textRange, index) {\n      const lastAttributeName = block.getLastAttribute()\n      if (!lastAttributeName) {\n        return\n      }\n      if (!getBlockConfig(lastAttributeName).terminal) {\n        return\n      }\n      blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName))\n    })\n    return new this.constructor(blockList)\n  }\n\n  removeBlockAttributesAtRange(range) {\n    let { blockList } = this\n    this.eachBlockAtRange(range, function(block, textRange, index) {\n      if (block.hasAttributes()) {\n        blockList = blockList.editObjectAtIndex(index, () => block.copyWithoutAttributes())\n      }\n    })\n    return new this.constructor(blockList)\n  }\n\n  expandRangeToLineBreaksAndSplitBlocks(range) {\n    let position\n    range = normalizeRange(range)\n    let [ startPosition, endPosition ] = range\n    const startLocation = this.locationFromPosition(startPosition)\n    const endLocation = this.locationFromPosition(endPosition)\n    let document = this\n\n    const startBlock = document.getBlockAtIndex(startLocation.index)\n    startLocation.offset = startBlock.findLineBreakInDirectionFromPosition(\"backward\", startLocation.offset)\n    if (startLocation.offset != null) {\n      position = document.positionFromLocation(startLocation)\n      document = document.insertBlockBreakAtRange([ position, position + 1 ])\n      endLocation.index += 1\n      endLocation.offset -= document.getBlockAtIndex(startLocation.index).getLength()\n      startLocation.index += 1\n    }\n    startLocation.offset = 0\n\n    if (endLocation.offset === 0 && endLocation.index > startLocation.index) {\n      endLocation.index -= 1\n      endLocation.offset = document.getBlockAtIndex(endLocation.index).getBlockBreakPosition()\n    } else {\n      const endBlock = document.getBlockAtIndex(endLocation.index)\n      if (endBlock.text.getStringAtRange([ endLocation.offset - 1, endLocation.offset ]) === \"\\n\") {\n        endLocation.offset -= 1\n      } else {\n        endLocation.offset = endBlock.findLineBreakInDirectionFromPosition(\"forward\", endLocation.offset)\n      }\n      if (endLocation.offset !== endBlock.getBlockBreakPosition()) {\n        position = document.positionFromLocation(endLocation)\n        document = document.insertBlockBreakAtRange([ position, position + 1 ])\n      }\n    }\n\n    startPosition = document.positionFromLocation(startLocation)\n    endPosition = document.positionFromLocation(endLocation)\n    range = normalizeRange([ startPosition, endPosition ])\n\n    return { document, range }\n  }\n\n  convertLineBreaksToBlockBreaksInRange(range) {\n    range = normalizeRange(range)\n    let [ position ] = range\n    const string = this.getStringAtRange(range).slice(0, -1)\n    let document = this\n\n    string.replace(/.*?\\n/g, function(match) {\n      position += match.length\n      document = document.insertBlockBreakAtRange([ position - 1, position ])\n    })\n\n    return { document, range }\n  }\n\n  consolidateBlocksAtRange(range) {\n    range = normalizeRange(range)\n    const [ startPosition, endPosition ] = range\n    const startIndex = this.locationFromPosition(startPosition).index\n    const endIndex = this.locationFromPosition(endPosition).index\n    return new this.constructor(this.blockList.consolidateFromIndexToIndex(startIndex, endIndex))\n  }\n\n  getDocumentAtRange(range) {\n    range = normalizeRange(range)\n    const blocks = this.blockList.getSplittableListInRange(range).toArray()\n    return new this.constructor(blocks)\n  }\n\n  getStringAtRange(range) {\n    let endIndex\n    const array = range = normalizeRange(range),\n      endPosition = array[array.length - 1]\n    if (endPosition !== this.getLength()) {\n      endIndex = -1\n    }\n    return this.getDocumentAtRange(range).toString().slice(0, endIndex)\n  }\n\n  getBlockAtIndex(index) {\n    return this.blockList.getObjectAtIndex(index)\n  }\n\n  getBlockAtPosition(position) {\n    const { index } = this.locationFromPosition(position)\n    return this.getBlockAtIndex(index)\n  }\n\n  getTextAtIndex(index) {\n    return this.getBlockAtIndex(index)?.text\n  }\n\n  getTextAtPosition(position) {\n    const { index } = this.locationFromPosition(position)\n    return this.getTextAtIndex(index)\n  }\n\n  getPieceAtPosition(position) {\n    const { index, offset } = this.locationFromPosition(position)\n    return this.getTextAtIndex(index).getPieceAtPosition(offset)\n  }\n\n  getCharacterAtPosition(position) {\n    const { index, offset } = this.locationFromPosition(position)\n    return this.getTextAtIndex(index).getStringAtRange([ offset, offset + 1 ])\n  }\n\n  getLength() {\n    return this.blockList.getEndPosition()\n  }\n\n  getBlocks() {\n    return this.blockList.toArray()\n  }\n\n  getBlockCount() {\n    return this.blockList.length\n  }\n\n  getEditCount() {\n    return this.editCount\n  }\n\n  eachBlock(callback) {\n    return this.blockList.eachObject(callback)\n  }\n\n  eachBlockAtRange(range, callback) {\n    let block, textRange\n    range = normalizeRange(range)\n    const [ startPosition, endPosition ] = range\n    const startLocation = this.locationFromPosition(startPosition)\n    const endLocation = this.locationFromPosition(endPosition)\n\n    if (startLocation.index === endLocation.index) {\n      block = this.getBlockAtIndex(startLocation.index)\n      textRange = [ startLocation.offset, endLocation.offset ]\n      return callback(block, textRange, startLocation.index)\n    } else {\n      for (let index = startLocation.index; index <= endLocation.index; index++) {\n        block = this.getBlockAtIndex(index)\n        if (block) {\n          switch (index) {\n            case startLocation.index:\n              textRange = [ startLocation.offset, block.text.getLength() ]\n              break\n            case endLocation.index:\n              textRange = [ 0, endLocation.offset ]\n              break\n            default:\n              textRange = [ 0, block.text.getLength() ]\n          }\n          callback(block, textRange, index)\n        }\n      }\n    }\n  }\n\n  getCommonAttributesAtRange(range) {\n    range = normalizeRange(range)\n    const [ startPosition ] = range\n    if (rangeIsCollapsed(range)) {\n      return this.getCommonAttributesAtPosition(startPosition)\n    } else {\n      const textAttributes = []\n      const blockAttributes = []\n\n      this.eachBlockAtRange(range, function(block, textRange) {\n        if (textRange[0] !== textRange[1]) {\n          textAttributes.push(block.text.getCommonAttributesAtRange(textRange))\n          return blockAttributes.push(attributesForBlock(block))\n        }\n      })\n\n      return Hash.fromCommonAttributesOfObjects(textAttributes)\n        .merge(Hash.fromCommonAttributesOfObjects(blockAttributes))\n        .toObject()\n    }\n  }\n\n  getCommonAttributesAtPosition(position) {\n    let key, value\n    const { index, offset } = this.locationFromPosition(position)\n    const block = this.getBlockAtIndex(index)\n    if (!block) {\n      return {}\n    }\n\n    const commonAttributes = attributesForBlock(block)\n    const attributes = block.text.getAttributesAtPosition(offset)\n    const attributesLeft = block.text.getAttributesAtPosition(offset - 1)\n    const inheritableAttributes = Object.keys(config.textAttributes).filter((key) => {\n      return config.textAttributes[key].inheritable\n    })\n\n    for (key in attributesLeft) {\n      value = attributesLeft[key]\n      if (value === attributes[key] || inheritableAttributes.includes(key)) {\n        commonAttributes[key] = value\n      }\n    }\n\n    return commonAttributes\n  }\n\n  getRangeOfCommonAttributeAtPosition(attributeName, position) {\n    const { index, offset } = this.locationFromPosition(position)\n    const text = this.getTextAtIndex(index)\n    const [ startOffset, endOffset ] = Array.from(text.getExpandedRangeForAttributeAtOffset(attributeName, offset))\n\n    const start = this.positionFromLocation({ index, offset: startOffset })\n    const end = this.positionFromLocation({ index, offset: endOffset })\n    return normalizeRange([ start, end ])\n  }\n\n  getBaseBlockAttributes() {\n    let baseBlockAttributes = this.getBlockAtIndex(0).getAttributes()\n\n    for (let blockIndex = 1; blockIndex < this.getBlockCount(); blockIndex++) {\n      const blockAttributes = this.getBlockAtIndex(blockIndex).getAttributes()\n      const lastAttributeIndex = Math.min(baseBlockAttributes.length, blockAttributes.length)\n\n      baseBlockAttributes = (() => {\n        const result = []\n        for (let index = 0; index < lastAttributeIndex; index++) {\n          if (blockAttributes[index] !== baseBlockAttributes[index]) {\n            break\n          }\n          result.push(blockAttributes[index])\n        }\n        return result\n      })()\n    }\n\n    return baseBlockAttributes\n  }\n\n  getAttachmentById(attachmentId) {\n    for (const attachment of this.getAttachments()) {\n      if (attachment.id === attachmentId) {\n        return attachment\n      }\n    }\n  }\n\n  getAttachmentPieces() {\n    let attachmentPieces = []\n    this.blockList.eachObject(({ text }) => attachmentPieces = attachmentPieces.concat(text.getAttachmentPieces()))\n    return attachmentPieces\n  }\n\n  getAttachments() {\n    return this.getAttachmentPieces().map((piece) => piece.attachment)\n  }\n\n  getRangeOfAttachment(attachment) {\n    let position = 0\n    const iterable = this.blockList.toArray()\n    for (let index = 0; index < iterable.length; index++) {\n      const { text } = iterable[index]\n      const textRange = text.getRangeOfAttachment(attachment)\n      if (textRange) {\n        return normalizeRange([ position + textRange[0], position + textRange[1] ])\n      }\n      position += text.getLength()\n    }\n  }\n\n  getLocationRangeOfAttachment(attachment) {\n    const range = this.getRangeOfAttachment(attachment)\n    return this.locationRangeFromRange(range)\n  }\n\n  getAttachmentPieceForAttachment(attachment) {\n    for (const piece of this.getAttachmentPieces()) {\n      if (piece.attachment === attachment) {\n        return piece\n      }\n    }\n  }\n\n  findRangesForBlockAttribute(attributeName) {\n    let position = 0\n    const ranges = []\n\n    this.getBlocks().forEach((block) => {\n      const length = block.getLength()\n      if (block.hasAttribute(attributeName)) {\n        ranges.push([ position, position + length ])\n      }\n      position += length\n    })\n\n    return ranges\n  }\n\n  findRangesForTextAttribute(attributeName, { withValue } = {}) {\n    let position = 0\n    let range = []\n    const ranges = []\n\n    const match = function(piece) {\n      if (withValue) {\n        return piece.getAttribute(attributeName) === withValue\n      } else {\n        return piece.hasAttribute(attributeName)\n      }\n    }\n\n    this.getPieces().forEach((piece) => {\n      const length = piece.getLength()\n      if (match(piece)) {\n        if (range[1] === position) {\n          range[1] = position + length\n        } else {\n          ranges.push(range = [ position, position + length ])\n        }\n      }\n      position += length\n    })\n\n    return ranges\n  }\n\n  locationFromPosition(position) {\n    const location = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, position))\n    if (location.index != null) {\n      return location\n    } else {\n      const blocks = this.getBlocks()\n      return { index: blocks.length - 1, offset: blocks[blocks.length - 1].getLength() }\n    }\n  }\n\n  positionFromLocation(location) {\n    return this.blockList.findPositionAtIndexAndOffset(location.index, location.offset)\n  }\n\n  locationRangeFromPosition(position) {\n    return normalizeRange(this.locationFromPosition(position))\n  }\n\n  locationRangeFromRange(range) {\n    range = normalizeRange(range)\n    if (!range) return\n\n    const [ startPosition, endPosition ] = Array.from(range)\n    const startLocation = this.locationFromPosition(startPosition)\n    const endLocation = this.locationFromPosition(endPosition)\n    return normalizeRange([ startLocation, endLocation ])\n  }\n\n  rangeFromLocationRange(locationRange) {\n    let rightPosition\n    locationRange = normalizeRange(locationRange)\n    const leftPosition = this.positionFromLocation(locationRange[0])\n    if (!rangeIsCollapsed(locationRange)) {\n      rightPosition = this.positionFromLocation(locationRange[1])\n    }\n    return normalizeRange([ leftPosition, rightPosition ])\n  }\n\n  isEqualTo(document) {\n    return this.blockList.isEqualTo(document?.blockList)\n  }\n\n  getTexts() {\n    return this.getBlocks().map((block) => block.text)\n  }\n\n  getPieces() {\n    const pieces = []\n\n    Array.from(this.getTexts()).forEach((text) => {\n      pieces.push(...Array.from(text.getPieces() || []))\n    })\n\n    return pieces\n  }\n\n  getObjects() {\n    return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())\n  }\n\n  toSerializableDocument() {\n    const blocks = []\n    this.blockList.eachObject((block) => blocks.push(block.copyWithText(block.text.toSerializableText())))\n    return new this.constructor(blocks)\n  }\n\n  toString() {\n    return this.blockList.toString()\n  }\n\n  toJSON() {\n    return this.blockList.toJSON()\n  }\n\n  toConsole() {\n    return JSON.stringify(this.blockList.toArray().map((block) => JSON.parse(block.text.toConsole())))\n  }\n}\n\nconst attributesForBlock = function(block) {\n  const attributes = {}\n  const attributeName = block.getLastAttribute()\n  if (attributeName) {\n    attributes[attributeName] = true\n  }\n  return attributes\n}\n", "/* eslint-disable\n    no-case-declarations,\n    no-irregular-whitespace,\n*/\nimport * as config from \"trix/config\"\nimport BasicObject from \"trix/core/basic_object\"\nimport Document from \"trix/models/document\"\nimport HTMLSanitizer from \"trix/models/html_sanitizer\"\n\nimport {\n  arraysAreEqual,\n  breakableWhitespacePattern,\n  elementContainsNode,\n  findClosestElementFromNode,\n  getBlockTagNames,\n  makeElement,\n  nodeIsAttachmentElement,\n  normalizeSpaces,\n  removeNode,\n  squishBreakableWhitespace,\n  tagName,\n  walkTree,\n} from \"trix/core/helpers\"\n\nconst pieceForString = (string, attributes = {}) => {\n  const type = \"string\"\n  string = normalizeSpaces(string)\n  return { string, attributes, type }\n}\n\nconst pieceForAttachment = (attachment, attributes = {}) => {\n  const type = \"attachment\"\n  return { attachment, attributes, type }\n}\n\nconst blockForAttributes = (attributes = {}, htmlAttributes = {}) => {\n  const text = []\n  return { text, attributes, htmlAttributes }\n}\n\nconst parseTrixDataAttribute = (element, name) => {\n  try {\n    return JSON.parse(element.getAttribute(`data-trix-${name}`))\n  } catch (error) {\n    return {}\n  }\n}\n\nconst getImageDimensions = (element) => {\n  const width = element.getAttribute(\"width\")\n  const height = element.getAttribute(\"height\")\n  const dimensions = {}\n  if (width) {\n    dimensions.width = parseInt(width, 10)\n  }\n  if (height) {\n    dimensions.height = parseInt(height, 10)\n  }\n  return dimensions\n}\n\nexport default class HTMLParser extends BasicObject {\n  static parse(html, options) {\n    const parser = new this(html, options)\n    parser.parse()\n    return parser\n  }\n\n  constructor(html, { referenceElement, purifyOptions } = {}) {\n    super(...arguments)\n    this.html = html\n    this.referenceElement = referenceElement\n    this.purifyOptions = purifyOptions\n    this.blocks = []\n    this.blockElements = []\n    this.processedElements = []\n  }\n\n  getDocument() {\n    return Document.fromJSON(this.blocks)\n  }\n\n  // HTML parsing\n\n  parse() {\n    try {\n      this.createHiddenContainer()\n      HTMLSanitizer.setHTML(this.containerElement, this.html, { purifyOptions: this.purifyOptions })\n      const walker = walkTree(this.containerElement, { usingFilter: nodeFilter })\n      while (walker.nextNode()) {\n        this.processNode(walker.currentNode)\n      }\n      return this.translateBlockElementMarginsToNewlines()\n    } finally {\n      this.removeHiddenContainer()\n    }\n  }\n\n  createHiddenContainer() {\n    if (this.referenceElement) {\n      this.containerElement = this.referenceElement.cloneNode(false)\n      this.containerElement.removeAttribute(\"id\")\n      this.containerElement.setAttribute(\"data-trix-internal\", \"\")\n      this.containerElement.style.display = \"none\"\n      return this.referenceElement.parentNode.insertBefore(this.containerElement, this.referenceElement.nextSibling)\n    } else {\n      this.containerElement = makeElement({ tagName: \"div\", style: { display: \"none\" } })\n      return document.body.appendChild(this.containerElement)\n    }\n  }\n\n  removeHiddenContainer() {\n    return removeNode(this.containerElement)\n  }\n\n  processNode(node) {\n    switch (node.nodeType) {\n      case Node.TEXT_NODE:\n        if (!this.isInsignificantTextNode(node)) {\n          this.appendBlockForTextNode(node)\n          return this.processTextNode(node)\n        }\n        break\n      case Node.ELEMENT_NODE:\n        this.appendBlockForElement(node)\n        return this.processElement(node)\n    }\n  }\n\n  appendBlockForTextNode(node) {\n    const element = node.parentNode\n    if (element === this.currentBlockElement && this.isBlockElement(node.previousSibling)) {\n      return this.appendStringWithAttributes(\"\\n\")\n    } else if (element === this.containerElement || this.isBlockElement(element)) {\n      const attributes = this.getBlockAttributes(element)\n      const htmlAttributes = this.getBlockHTMLAttributes(element)\n      if (!arraysAreEqual(attributes, this.currentBlock?.attributes)) {\n        this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element, htmlAttributes)\n        this.currentBlockElement = element\n      }\n    }\n  }\n\n  appendBlockForElement(element) {\n    const elementIsBlockElement = this.isBlockElement(element)\n    const currentBlockContainsElement = elementContainsNode(this.currentBlockElement, element)\n\n    if (elementIsBlockElement && !this.isBlockElement(element.firstChild)) {\n      if (!this.isInsignificantTextNode(element.firstChild) || !this.isBlockElement(element.firstElementChild)) {\n        const attributes = this.getBlockAttributes(element)\n        const htmlAttributes = this.getBlockHTMLAttributes(element)\n        if (element.firstChild) {\n          if (!(currentBlockContainsElement && arraysAreEqual(attributes, this.currentBlock.attributes))) {\n            this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element, htmlAttributes)\n            this.currentBlockElement = element\n          } else {\n            return this.appendStringWithAttributes(\"\\n\")\n          }\n        }\n      }\n    } else if (this.currentBlockElement && !currentBlockContainsElement && !elementIsBlockElement) {\n      const parentBlockElement = this.findParentBlockElement(element)\n      if (parentBlockElement) {\n        return this.appendBlockForElement(parentBlockElement)\n      } else {\n        this.currentBlock = this.appendEmptyBlock()\n        this.currentBlockElement = null\n      }\n    }\n  }\n\n  findParentBlockElement(element) {\n    let { parentElement } = element\n    while (parentElement && parentElement !== this.containerElement) {\n      if (this.isBlockElement(parentElement) && this.blockElements.includes(parentElement)) {\n        return parentElement\n      } else {\n        parentElement = parentElement.parentElement\n      }\n    }\n    return null\n  }\n\n  processTextNode(node) {\n    let string = node.data\n    if (!elementCanDisplayPreformattedText(node.parentNode)) {\n      string = squishBreakableWhitespace(string)\n      if (stringEndsWithWhitespace(node.previousSibling?.textContent)) {\n        string = leftTrimBreakableWhitespace(string)\n      }\n    }\n    return this.appendStringWithAttributes(string, this.getTextAttributes(node.parentNode))\n  }\n\n  processElement(element) {\n    let attributes\n    if (nodeIsAttachmentElement(element)) {\n      attributes = parseTrixDataAttribute(element, \"attachment\")\n      if (Object.keys(attributes).length) {\n        const textAttributes = this.getTextAttributes(element)\n        this.appendAttachmentWithAttributes(attributes, textAttributes)\n        // We have everything we need so avoid processing inner nodes\n        element.innerHTML = \"\"\n      }\n      return this.processedElements.push(element)\n    } else {\n      switch (tagName(element)) {\n        case \"br\":\n          if (!this.isExtraBR(element) && !this.isBlockElement(element.nextSibling)) {\n            this.appendStringWithAttributes(\"\\n\", this.getTextAttributes(element))\n          }\n          return this.processedElements.push(element)\n        case \"img\":\n          attributes = { url: element.getAttribute(\"src\"), contentType: \"image\" }\n          const object = getImageDimensions(element)\n          for (const key in object) {\n            const value = object[key]\n            attributes[key] = value\n          }\n          this.appendAttachmentWithAttributes(attributes, this.getTextAttributes(element))\n          return this.processedElements.push(element)\n        case \"tr\":\n          if (this.needsTableSeparator(element)) {\n            return this.appendStringWithAttributes(config.parser.tableRowSeparator)\n          }\n          break\n        case \"td\":\n          if (this.needsTableSeparator(element)) {\n            return this.appendStringWithAttributes(config.parser.tableCellSeparator)\n          }\n          break\n      }\n    }\n  }\n\n  // Document construction\n\n  appendBlockForAttributesWithElement(attributes, element, htmlAttributes = {}) {\n    this.blockElements.push(element)\n    const block = blockForAttributes(attributes, htmlAttributes)\n    this.blocks.push(block)\n    return block\n  }\n\n  appendEmptyBlock() {\n    return this.appendBlockForAttributesWithElement([], null)\n  }\n\n  appendStringWithAttributes(string, attributes) {\n    return this.appendPiece(pieceForString(string, attributes))\n  }\n\n  appendAttachmentWithAttributes(attachment, attributes) {\n    return this.appendPiece(pieceForAttachment(attachment, attributes))\n  }\n\n  appendPiece(piece) {\n    if (this.blocks.length === 0) {\n      this.appendEmptyBlock()\n    }\n    return this.blocks[this.blocks.length - 1].text.push(piece)\n  }\n\n  appendStringToTextAtIndex(string, index) {\n    const { text } = this.blocks[index]\n    const piece = text[text.length - 1]\n\n    if (piece?.type === \"string\") {\n      piece.string += string\n    } else {\n      return text.push(pieceForString(string))\n    }\n  }\n\n  prependStringToTextAtIndex(string, index) {\n    const { text } = this.blocks[index]\n    const piece = text[0]\n\n    if (piece?.type === \"string\") {\n      piece.string = string + piece.string\n    } else {\n      return text.unshift(pieceForString(string))\n    }\n  }\n\n  // Attribute parsing\n\n  getTextAttributes(element) {\n    let value\n    const attributes = {}\n    for (const attribute in config.textAttributes) {\n      const configAttr = config.textAttributes[attribute]\n      if (\n        configAttr.tagName &&\n        findClosestElementFromNode(element, {\n          matchingSelector: configAttr.tagName,\n          untilNode: this.containerElement,\n        })\n      ) {\n        attributes[attribute] = true\n      } else if (configAttr.parser) {\n        value = configAttr.parser(element)\n        if (value) {\n          let attributeInheritedFromBlock = false\n          for (const blockElement of this.findBlockElementAncestors(element)) {\n            if (configAttr.parser(blockElement) === value) {\n              attributeInheritedFromBlock = true\n              break\n            }\n          }\n          if (!attributeInheritedFromBlock) {\n            attributes[attribute] = value\n          }\n        }\n      } else if (configAttr.styleProperty) {\n        value = element.style[configAttr.styleProperty]\n        if (value) {\n          attributes[attribute] = value\n        }\n      }\n    }\n\n    if (nodeIsAttachmentElement(element)) {\n      const object = parseTrixDataAttribute(element, \"attributes\")\n      for (const key in object) {\n        value = object[key]\n        attributes[key] = value\n      }\n    }\n\n    return attributes\n  }\n\n  getBlockAttributes(element) {\n    const attributes = []\n    while (element && element !== this.containerElement) {\n      for (const attribute in config.blockAttributes) {\n        const attrConfig = config.blockAttributes[attribute]\n        if (attrConfig.parse !== false) {\n          if (tagName(element) === attrConfig.tagName) {\n            if (attrConfig.test?.(element) || !attrConfig.test) {\n              attributes.push(attribute)\n              if (attrConfig.listAttribute) {\n                attributes.push(attrConfig.listAttribute)\n              }\n            }\n          }\n        }\n      }\n      element = element.parentNode\n    }\n    return attributes.reverse()\n  }\n\n  getBlockHTMLAttributes(element) {\n    const attributes = {}\n    const blockConfig = Object.values(config.blockAttributes).find(settings => settings.tagName === tagName(element))\n    const allowedAttributes = blockConfig?.htmlAttributes || []\n\n    allowedAttributes.forEach((attribute) => {\n      if (element.hasAttribute(attribute)) {\n        attributes[attribute] = element.getAttribute(attribute)\n      }\n    })\n\n    return attributes\n  }\n\n  findBlockElementAncestors(element) {\n    const ancestors = []\n    while (element && element !== this.containerElement) {\n      const tag = tagName(element)\n      if (getBlockTagNames().includes(tag)) {\n        ancestors.push(element)\n      }\n      element = element.parentNode\n    }\n    return ancestors\n  }\n\n  // Element inspection\n\n  isBlockElement(element) {\n    if (element?.nodeType !== Node.ELEMENT_NODE) return\n    if (nodeIsAttachmentElement(element)) return\n    if (findClosestElementFromNode(element, { matchingSelector: \"td\", untilNode: this.containerElement })) return\n\n    return getBlockTagNames().includes(tagName(element)) ||\n      window.getComputedStyle(element).display === \"block\"\n  }\n\n  isInsignificantTextNode(node) {\n    if (node?.nodeType !== Node.TEXT_NODE) return\n    if (!stringIsAllBreakableWhitespace(node.data)) return\n    const { parentNode, previousSibling, nextSibling } = node\n    if (nodeEndsWithNonWhitespace(parentNode.previousSibling) && !this.isBlockElement(parentNode.previousSibling)) return\n    if (elementCanDisplayPreformattedText(parentNode)) return\n    return !previousSibling || this.isBlockElement(previousSibling) || !nextSibling || this.isBlockElement(nextSibling)\n  }\n\n  isExtraBR(element) {\n    return tagName(element) === \"br\" && this.isBlockElement(element.parentNode) && element.parentNode.lastChild === element\n  }\n\n  needsTableSeparator(element) {\n    if (config.parser.removeBlankTableCells) {\n      const content = element.previousSibling?.textContent\n      return content && /\\S/.test(content)\n    } else {\n      return element.previousSibling\n    }\n  }\n\n  // Margin translation\n\n  translateBlockElementMarginsToNewlines() {\n    const defaultMargin = this.getMarginOfDefaultBlockElement()\n\n    for (let index = 0; index < this.blocks.length; index++) {\n      const margin = this.getMarginOfBlockElementAtIndex(index)\n      if (margin) {\n        if (margin.top > defaultMargin.top * 2) {\n          this.prependStringToTextAtIndex(\"\\n\", index)\n        }\n\n        if (margin.bottom > defaultMargin.bottom * 2) {\n          this.appendStringToTextAtIndex(\"\\n\", index)\n        }\n      }\n    }\n  }\n\n  getMarginOfBlockElementAtIndex(index) {\n    const element = this.blockElements[index]\n    if (element) {\n      if (element.textContent) {\n        if (!getBlockTagNames().includes(tagName(element)) && !this.processedElements.includes(element)) {\n          return getBlockElementMargin(element)\n        }\n      }\n    }\n  }\n\n  getMarginOfDefaultBlockElement() {\n    const element = makeElement(config.blockAttributes.default.tagName)\n    this.containerElement.appendChild(element)\n    return getBlockElementMargin(element)\n  }\n}\n\n// Helpers\n\nconst elementCanDisplayPreformattedText = function(element) {\n  const { whiteSpace } = window.getComputedStyle(element)\n  return [ \"pre\", \"pre-wrap\", \"pre-line\" ].includes(whiteSpace)\n}\n\nconst nodeEndsWithNonWhitespace = (node) => node && !stringEndsWithWhitespace(node.textContent)\n\nconst getBlockElementMargin = function(element) {\n  const style = window.getComputedStyle(element)\n  if (style.display === \"block\") {\n    return { top: parseInt(style.marginTop), bottom: parseInt(style.marginBottom) }\n  }\n}\n\nconst nodeFilter = function(node) {\n  if (tagName(node) === \"style\") {\n    return NodeFilter.FILTER_REJECT\n  } else {\n    return NodeFilter.FILTER_ACCEPT\n  }\n}\n\n// Whitespace\n\nconst leftTrimBreakableWhitespace = (string) => string.replace(new RegExp(`^${breakableWhitespacePattern.source}+`), \"\")\n\nconst stringIsAllBreakableWhitespace = (string) => new RegExp(`^${breakableWhitespacePattern.source}*$`).test(string)\n\nconst stringEndsWithWhitespace = (string) => /\\s$/.test(string)\n", "/* eslint-disable\n    no-empty,\n*/\nimport { removeNode } from \"trix/core/helpers\"\n\nimport DocumentView from \"trix/views/document_view\"\nimport Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\n\nconst unserializableElementSelector = \"[data-trix-serialize=false]\"\nconst unserializableAttributeNames = [\n  \"contenteditable\",\n  \"data-trix-id\",\n  \"data-trix-store-key\",\n  \"data-trix-mutable\",\n  \"data-trix-placeholder\",\n  \"tabindex\",\n]\nconst serializedAttributesAttribute = \"data-trix-serialized-attributes\"\nconst serializedAttributesSelector = `[${serializedAttributesAttribute}]`\n\nconst blockCommentPattern = new RegExp(\"<!--block-->\", \"g\")\n\nconst serializers = {\n  \"application/json\": function(serializable) {\n    let document\n    if (serializable instanceof Document) {\n      document = serializable\n    } else if (serializable instanceof HTMLElement) {\n      document = HTMLParser.parse(serializable.innerHTML).getDocument()\n    } else {\n      throw new Error(\"unserializable object\")\n    }\n\n    return document.toSerializableDocument().toJSONString()\n  },\n\n  \"text/html\": function(serializable) {\n    let element\n    if (serializable instanceof Document) {\n      element = DocumentView.render(serializable)\n    } else if (serializable instanceof HTMLElement) {\n      element = serializable.cloneNode(true)\n    } else {\n      throw new Error(\"unserializable object\")\n    }\n\n    // Remove unserializable elements\n    Array.from(element.querySelectorAll(unserializableElementSelector)).forEach((el) => {\n      removeNode(el)\n    })\n\n    // Remove unserializable attributes\n    unserializableAttributeNames.forEach((attribute) => {\n      Array.from(element.querySelectorAll(`[${attribute}]`)).forEach((el) => {\n        el.removeAttribute(attribute)\n      })\n    })\n\n    // Rewrite elements with serialized attribute overrides\n    Array.from(element.querySelectorAll(serializedAttributesSelector)).forEach((el) => {\n      try {\n        const attributes = JSON.parse(el.getAttribute(serializedAttributesAttribute))\n        el.removeAttribute(serializedAttributesAttribute)\n        for (const name in attributes) {\n          const value = attributes[name]\n          el.setAttribute(name, value)\n        }\n      } catch (error) {}\n    })\n\n    return element.innerHTML.replace(blockCommentPattern, \"\")\n  },\n}\n\nconst deserializers = {\n  \"application/json\": function(string) {\n    return Document.fromJSONString(string)\n  },\n\n  \"text/html\": function(string) {\n    return HTMLParser.parse(string).getDocument()\n  },\n}\n\nexport const serializeToContentType = function(serializable, contentType) {\n  const serializer = serializers[contentType]\n  if (serializer) {\n    return serializer(serializable)\n  } else {\n    throw new Error(`unknown content type: ${contentType}`)\n  }\n}\n\nexport const deserializeFromContentType = function(string, contentType) {\n  const deserializer = deserializers[contentType]\n  if (deserializer) {\n    return deserializer(string)\n  } else {\n    throw new Error(`unknown content type: ${contentType}`)\n  }\n}\n", "import \"trix/models/attachment\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class ManagedAttachment extends BasicObject {\n  constructor(attachmentManager, attachment) {\n    super(...arguments)\n    this.attachmentManager = attachmentManager\n    this.attachment = attachment\n    this.id = this.attachment.id\n    this.file = this.attachment.file\n  }\n\n  remove() {\n    return this.attachmentManager.requestRemovalOfAttachment(this.attachment)\n  }\n}\n\nManagedAttachment.proxyMethod(\"attachment.getAttribute\")\nManagedAttachment.proxyMethod(\"attachment.hasAttribute\")\nManagedAttachment.proxyMethod(\"attachment.setAttribute\")\nManagedAttachment.proxyMethod(\"attachment.getAttributes\")\nManagedAttachment.proxyMethod(\"attachment.setAttributes\")\nManagedAttachment.proxyMethod(\"attachment.isPending\")\nManagedAttachment.proxyMethod(\"attachment.isPreviewable\")\nManagedAttachment.proxyMethod(\"attachment.getURL\")\nManagedAttachment.proxyMethod(\"attachment.getHref\")\nManagedAttachment.proxyMethod(\"attachment.getFilename\")\nManagedAttachment.proxyMethod(\"attachment.getFilesize\")\nManagedAttachment.proxyMethod(\"attachment.getFormattedFilesize\")\nManagedAttachment.proxyMethod(\"attachment.getExtension\")\nManagedAttachment.proxyMethod(\"attachment.getContentType\")\nManagedAttachment.proxyMethod(\"attachment.getFile\")\nManagedAttachment.proxyMethod(\"attachment.setFile\")\nManagedAttachment.proxyMethod(\"attachment.releaseFile\")\nManagedAttachment.proxyMethod(\"attachment.getUploadProgress\")\nManagedAttachment.proxyMethod(\"attachment.setUploadProgress\")\n\n", "import ManagedAttachment from \"trix/models/managed_attachment\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class AttachmentManager extends BasicObject {\n  constructor(attachments = []) {\n    super(...arguments)\n    this.managedAttachments = {}\n    Array.from(attachments).forEach((attachment) => {\n      this.manageAttachment(attachment)\n    })\n  }\n\n  getAttachments() {\n    const result = []\n    for (const id in this.managedAttachments) {\n      const attachment = this.managedAttachments[id]\n      result.push(attachment)\n    }\n    return result\n  }\n\n  manageAttachment(attachment) {\n    if (!this.managedAttachments[attachment.id]) {\n      this.managedAttachments[attachment.id] = new ManagedAttachment(this, attachment)\n    }\n    return this.managedAttachments[attachment.id]\n  }\n\n  attachmentIsManaged(attachment) {\n    return attachment.id in this.managedAttachments\n  }\n\n  requestRemovalOfAttachment(attachment) {\n    if (this.attachmentIsManaged(attachment)) {\n      return this.delegate?.attachmentManagerDidRequestRemovalOfAttachment?.(attachment)\n    }\n  }\n\n  unmanageAttachment(attachment) {\n    const managedAttachment = this.managedAttachments[attachment.id]\n    delete this.managedAttachments[attachment.id]\n    return managedAttachment\n  }\n}\n", "export default class LineBreakInsertion {\n  constructor(composition) {\n    this.composition = composition\n    this.document = this.composition.document\n    const selectedRange = this.composition.getSelectedRange()\n    this.startPosition = selectedRange[0]\n    this.endPosition = selectedRange[1]\n\n    this.startLocation = this.document.locationFromPosition(this.startPosition)\n    this.endLocation = this.document.locationFromPosition(this.endPosition)\n\n    this.block = this.document.getBlockAtIndex(this.endLocation.index)\n    this.breaksOnReturn = this.block.breaksOnReturn()\n    this.previousCharacter = this.block.text.getStringAtPosition(this.endLocation.offset - 1)\n    this.nextCharacter = this.block.text.getStringAtPosition(this.endLocation.offset)\n  }\n\n  shouldInsertBlockBreak() {\n    if (this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty()) {\n      return this.startLocation.offset !== 0\n    } else {\n      return this.breaksOnReturn && this.nextCharacter !== \"\\n\"\n    }\n  }\n\n  shouldBreakFormattedBlock() {\n    return (\n      this.block.hasAttributes() &&\n      !this.block.isListItem() &&\n      (this.breaksOnReturn && this.nextCharacter === \"\\n\" || this.previousCharacter === \"\\n\")\n    )\n  }\n\n  shouldDecreaseListLevel() {\n    return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty()\n  }\n\n  shouldPrependListItem() {\n    return this.block.isListItem() && this.startLocation.offset === 0 && !this.block.isEmpty()\n  }\n\n  shouldRemoveLastBlockAttribute() {\n    return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty()\n  }\n}\n", "import * as config from \"trix/config\"\nimport { OBJECT_REPLACEMENT_CHARACTER } from \"trix/constants\"\n\nimport BasicObject from \"trix/core/basic_object\"\nimport Text from \"trix/models/text\"\nimport Block from \"trix/models/block\"\nimport Attachment from \"trix/models/attachment\"\nimport Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\nimport LineBreakInsertion from \"trix/models/line_break_insertion\"\n\nimport {\n  arrayStartsWith,\n  extend,\n  getAllAttributeNames,\n  getBlockConfig,\n  getTextConfig,\n  normalizeRange,\n  objectsAreEqual,\n  rangeIsCollapsed,\n  rangesAreEqual,\n  summarizeArrayChange,\n} from \"trix/core/helpers\"\n\nconst PLACEHOLDER = \" \"\n\nexport default class Composition extends BasicObject {\n  constructor() {\n    super(...arguments)\n    this.document = new Document()\n    this.attachments = []\n    this.currentAttributes = {}\n    this.revision = 0\n  }\n\n  setDocument(document) {\n    if (!document.isEqualTo(this.document)) {\n      this.document = document\n      this.refreshAttachments()\n      this.revision++\n      return this.delegate?.compositionDidChangeDocument?.(document)\n    }\n  }\n\n  // Snapshots\n\n  getSnapshot() {\n    return {\n      document: this.document,\n      selectedRange: this.getSelectedRange(),\n    }\n  }\n\n  loadSnapshot({ document, selectedRange }) {\n    this.delegate?.compositionWillLoadSnapshot?.()\n    this.setDocument(document != null ? document : new Document())\n    this.setSelection(selectedRange != null ? selectedRange : [ 0, 0 ])\n    return this.delegate?.compositionDidLoadSnapshot?.()\n  }\n\n  // Responder protocol\n\n  insertText(text, { updatePosition } = { updatePosition: true }) {\n    const selectedRange = this.getSelectedRange()\n    this.setDocument(this.document.insertTextAtRange(text, selectedRange))\n\n    const startPosition = selectedRange[0]\n    const endPosition = startPosition + text.getLength()\n\n    if (updatePosition) {\n      this.setSelection(endPosition)\n    }\n    return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n  }\n\n  insertBlock(block = new Block()) {\n    const document = new Document([ block ])\n    return this.insertDocument(document)\n  }\n\n  insertDocument(document = new Document()) {\n    const selectedRange = this.getSelectedRange()\n    this.setDocument(this.document.insertDocumentAtRange(document, selectedRange))\n\n    const startPosition = selectedRange[0]\n    const endPosition = startPosition + document.getLength()\n\n    this.setSelection(endPosition)\n    return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n  }\n\n  insertString(string, options) {\n    const attributes = this.getCurrentTextAttributes()\n    const text = Text.textForStringWithAttributes(string, attributes)\n    return this.insertText(text, options)\n  }\n\n  insertBlockBreak() {\n    const selectedRange = this.getSelectedRange()\n    this.setDocument(this.document.insertBlockBreakAtRange(selectedRange))\n\n    const startPosition = selectedRange[0]\n    const endPosition = startPosition + 1\n\n    this.setSelection(endPosition)\n    return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n  }\n\n  insertLineBreak() {\n    const insertion = new LineBreakInsertion(this)\n\n    if (insertion.shouldDecreaseListLevel()) {\n      this.decreaseListLevel()\n      return this.setSelection(insertion.startPosition)\n    } else if (insertion.shouldPrependListItem()) {\n      const document = new Document([ insertion.block.copyWithoutText() ])\n      return this.insertDocument(document)\n    } else if (insertion.shouldInsertBlockBreak()) {\n      return this.insertBlockBreak()\n    } else if (insertion.shouldRemoveLastBlockAttribute()) {\n      return this.removeLastBlockAttribute()\n    } else if (insertion.shouldBreakFormattedBlock()) {\n      return this.breakFormattedBlock(insertion)\n    } else {\n      return this.insertString(\"\\n\")\n    }\n  }\n\n  insertHTML(html) {\n    const document = HTMLParser.parse(html, { purifyOptions: { SAFE_FOR_XML: true } }).getDocument()\n    const selectedRange = this.getSelectedRange()\n\n    this.setDocument(this.document.mergeDocumentAtRange(document, selectedRange))\n\n    const startPosition = selectedRange[0]\n    const endPosition = startPosition + document.getLength() - 1\n\n    this.setSelection(endPosition)\n    return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n  }\n\n  replaceHTML(html) {\n    const document = HTMLParser.parse(html).getDocument().copyUsingObjectsFromDocument(this.document)\n    const locationRange = this.getLocationRange({ strict: false })\n    const selectedRange = this.document.rangeFromLocationRange(locationRange)\n    this.setDocument(document)\n    return this.setSelection(selectedRange)\n  }\n\n  insertFile(file) {\n    return this.insertFiles([ file ])\n  }\n\n  insertFiles(files) {\n    const attachments = []\n\n    Array.from(files).forEach((file) => {\n      if (this.delegate?.compositionShouldAcceptFile(file)) {\n        const attachment = Attachment.attachmentForFile(file)\n        attachments.push(attachment)\n      }\n    })\n\n    return this.insertAttachments(attachments)\n  }\n\n  insertAttachment(attachment) {\n    return this.insertAttachments([ attachment ])\n  }\n\n  insertAttachments(attachments) {\n    let text = new Text()\n\n    Array.from(attachments).forEach((attachment) => {\n      const type = attachment.getType()\n      const presentation = config.attachments[type]?.presentation\n\n      const attributes = this.getCurrentTextAttributes()\n      if (presentation) {\n        attributes.presentation = presentation\n      }\n\n      const attachmentText = Text.textForAttachmentWithAttributes(attachment, attributes)\n      text = text.appendText(attachmentText)\n    })\n\n    return this.insertText(text)\n  }\n\n  shouldManageDeletingInDirection(direction) {\n    const locationRange = this.getLocationRange()\n    if (rangeIsCollapsed(locationRange)) {\n      if (direction === \"backward\" && locationRange[0].offset === 0) {\n        return true\n      }\n      if (this.shouldManageMovingCursorInDirection(direction)) {\n        return true\n      }\n    } else {\n      if (locationRange[0].index !== locationRange[1].index) {\n        return true\n      }\n    }\n    return false\n  }\n\n  deleteInDirection(direction, { length } = {}) {\n    let attachment, deletingIntoPreviousBlock, selectionSpansBlocks\n    const locationRange = this.getLocationRange()\n    let range = this.getSelectedRange()\n    const selectionIsCollapsed = rangeIsCollapsed(range)\n\n    if (selectionIsCollapsed) {\n      deletingIntoPreviousBlock = direction === \"backward\" && locationRange[0].offset === 0\n    } else {\n      selectionSpansBlocks = locationRange[0].index !== locationRange[1].index\n    }\n\n    if (deletingIntoPreviousBlock) {\n      if (this.canDecreaseBlockAttributeLevel()) {\n        const block = this.getBlock()\n\n        if (block.isListItem()) {\n          this.decreaseListLevel()\n        } else {\n          this.decreaseBlockAttributeLevel()\n        }\n\n        this.setSelection(range[0])\n        if (block.isEmpty()) {\n          return false\n        }\n      }\n    }\n\n    if (selectionIsCollapsed) {\n      range = this.getExpandedRangeInDirection(direction, { length })\n      if (direction === \"backward\") {\n        attachment = this.getAttachmentAtRange(range)\n      }\n    }\n\n    if (attachment) {\n      this.editAttachment(attachment)\n      return false\n    } else {\n      this.setDocument(this.document.removeTextAtRange(range))\n      this.setSelection(range[0])\n      if (deletingIntoPreviousBlock || selectionSpansBlocks) {\n        return false\n      }\n    }\n  }\n\n  moveTextFromRange(range) {\n    const [ position ] = Array.from(this.getSelectedRange())\n    this.setDocument(this.document.moveTextFromRangeToPosition(range, position))\n    return this.setSelection(position)\n  }\n\n  removeAttachment(attachment) {\n    const range = this.document.getRangeOfAttachment(attachment)\n    if (range) {\n      this.stopEditingAttachment()\n      this.setDocument(this.document.removeTextAtRange(range))\n      return this.setSelection(range[0])\n    }\n  }\n\n  removeLastBlockAttribute() {\n    const [ startPosition, endPosition ] = Array.from(this.getSelectedRange())\n    const block = this.document.getBlockAtPosition(endPosition)\n    this.removeCurrentAttribute(block.getLastAttribute())\n    return this.setSelection(startPosition)\n  }\n\n  insertPlaceholder() {\n    this.placeholderPosition = this.getPosition()\n    return this.insertString(PLACEHOLDER)\n  }\n\n  selectPlaceholder() {\n    if (this.placeholderPosition != null) {\n      this.setSelectedRange([ this.placeholderPosition, this.placeholderPosition + PLACEHOLDER.length ])\n      return this.getSelectedRange()\n    }\n  }\n\n  forgetPlaceholder() {\n    this.placeholderPosition = null\n  }\n\n  // Current attributes\n\n  hasCurrentAttribute(attributeName) {\n    const value = this.currentAttributes[attributeName]\n    return value != null && value !== false\n  }\n\n  toggleCurrentAttribute(attributeName) {\n    const value = !this.currentAttributes[attributeName]\n    if (value) {\n      return this.setCurrentAttribute(attributeName, value)\n    } else {\n      return this.removeCurrentAttribute(attributeName)\n    }\n  }\n\n  canSetCurrentAttribute(attributeName) {\n    if (getBlockConfig(attributeName)) {\n      return this.canSetCurrentBlockAttribute(attributeName)\n    } else {\n      return this.canSetCurrentTextAttribute(attributeName)\n    }\n  }\n\n  canSetCurrentTextAttribute(attributeName) {\n    const document = this.getSelectedDocument()\n    if (!document) return\n    for (const attachment of Array.from(document.getAttachments())) {\n      if (!attachment.hasContent()) {\n        return false\n      }\n    }\n    return true\n  }\n\n  canSetCurrentBlockAttribute(attributeName) {\n    const block = this.getBlock()\n    if (!block) return\n    return !block.isTerminalBlock()\n  }\n\n  setCurrentAttribute(attributeName, value) {\n    if (getBlockConfig(attributeName)) {\n      return this.setBlockAttribute(attributeName, value)\n    } else {\n      this.setTextAttribute(attributeName, value)\n      this.currentAttributes[attributeName] = value\n      return this.notifyDelegateOfCurrentAttributesChange()\n    }\n  }\n\n  setHTMLAtributeAtPosition(position, attributeName, value) {\n    const block = this.document.getBlockAtPosition(position)\n    const allowedHTMLAttributes = getBlockConfig(block.getLastAttribute())?.htmlAttributes\n\n    if (block && allowedHTMLAttributes?.includes(attributeName)) {\n      const newDocument = this.document.setHTMLAttributeAtPosition(position, attributeName, value)\n      this.setDocument(newDocument)\n    }\n  }\n\n  setTextAttribute(attributeName, value) {\n    const selectedRange = this.getSelectedRange()\n    if (!selectedRange) return\n\n    const [ startPosition, endPosition ] = Array.from(selectedRange)\n    if (startPosition === endPosition) {\n      if (attributeName === \"href\") {\n        const text = Text.textForStringWithAttributes(value, { href: value })\n        return this.insertText(text)\n      }\n    } else {\n      return this.setDocument(this.document.addAttributeAtRange(attributeName, value, selectedRange))\n    }\n  }\n\n  setBlockAttribute(attributeName, value) {\n    const selectedRange = this.getSelectedRange()\n    if (this.canSetCurrentAttribute(attributeName)) {\n      this.setDocument(this.document.applyBlockAttributeAtRange(attributeName, value, selectedRange))\n      return this.setSelection(selectedRange)\n    }\n  }\n\n  removeCurrentAttribute(attributeName) {\n    if (getBlockConfig(attributeName)) {\n      this.removeBlockAttribute(attributeName)\n      return this.updateCurrentAttributes()\n    } else {\n      this.removeTextAttribute(attributeName)\n      delete this.currentAttributes[attributeName]\n      return this.notifyDelegateOfCurrentAttributesChange()\n    }\n  }\n\n  removeTextAttribute(attributeName) {\n    const selectedRange = this.getSelectedRange()\n    if (!selectedRange) return\n    return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange))\n  }\n\n  removeBlockAttribute(attributeName) {\n    const selectedRange = this.getSelectedRange()\n    if (!selectedRange) return\n    return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange))\n  }\n\n  canDecreaseNestingLevel() {\n    return this.getBlock()?.getNestingLevel() > 0\n  }\n\n  canIncreaseNestingLevel() {\n    const block = this.getBlock()\n    if (!block) return\n    if (getBlockConfig(block.getLastNestableAttribute())?.listAttribute) {\n      const previousBlock = this.getPreviousBlock()\n      if (previousBlock) {\n        return arrayStartsWith(previousBlock.getListItemAttributes(), block.getListItemAttributes())\n      }\n    } else {\n      return block.getNestingLevel() > 0\n    }\n  }\n\n  decreaseNestingLevel() {\n    const block = this.getBlock()\n    if (!block) return\n    return this.setDocument(this.document.replaceBlock(block, block.decreaseNestingLevel()))\n  }\n\n  increaseNestingLevel() {\n    const block = this.getBlock()\n    if (!block) return\n    return this.setDocument(this.document.replaceBlock(block, block.increaseNestingLevel()))\n  }\n\n  canDecreaseBlockAttributeLevel() {\n    return this.getBlock()?.getAttributeLevel() > 0\n  }\n\n  decreaseBlockAttributeLevel() {\n    const attribute = this.getBlock()?.getLastAttribute()\n    if (attribute) {\n      return this.removeCurrentAttribute(attribute)\n    }\n  }\n\n  decreaseListLevel() {\n    let [ startPosition ] = Array.from(this.getSelectedRange())\n    const { index } = this.document.locationFromPosition(startPosition)\n    let endIndex = index\n    const attributeLevel = this.getBlock().getAttributeLevel()\n\n    let block = this.document.getBlockAtIndex(endIndex + 1)\n    while (block) {\n      if (!block.isListItem() || block.getAttributeLevel() <= attributeLevel) {\n        break\n      }\n      endIndex++\n      block = this.document.getBlockAtIndex(endIndex + 1)\n    }\n\n    startPosition = this.document.positionFromLocation({ index, offset: 0 })\n    const endPosition = this.document.positionFromLocation({ index: endIndex, offset: 0 })\n    return this.setDocument(this.document.removeLastListAttributeAtRange([ startPosition, endPosition ]))\n  }\n\n  updateCurrentAttributes() {\n    const selectedRange = this.getSelectedRange({ ignoreLock: true })\n    if (selectedRange) {\n      const currentAttributes = this.document.getCommonAttributesAtRange(selectedRange)\n\n      Array.from(getAllAttributeNames()).forEach((attributeName) => {\n        if (!currentAttributes[attributeName]) {\n          if (!this.canSetCurrentAttribute(attributeName)) {\n            currentAttributes[attributeName] = false\n          }\n        }\n      })\n\n      if (!objectsAreEqual(currentAttributes, this.currentAttributes)) {\n        this.currentAttributes = currentAttributes\n        return this.notifyDelegateOfCurrentAttributesChange()\n      }\n    }\n  }\n\n  getCurrentAttributes() {\n    return extend.call({}, this.currentAttributes)\n  }\n\n  getCurrentTextAttributes() {\n    const attributes = {}\n    for (const key in this.currentAttributes) {\n      const value = this.currentAttributes[key]\n      if (value !== false) {\n        if (getTextConfig(key)) {\n          attributes[key] = value\n        }\n      }\n    }\n    return attributes\n  }\n\n  // Selection freezing\n\n  freezeSelection() {\n    return this.setCurrentAttribute(\"frozen\", true)\n  }\n\n  thawSelection() {\n    return this.removeCurrentAttribute(\"frozen\")\n  }\n\n  hasFrozenSelection() {\n    return this.hasCurrentAttribute(\"frozen\")\n  }\n\n  setSelection(selectedRange) {\n    const locationRange = this.document.locationRangeFromRange(selectedRange)\n    return this.delegate?.compositionDidRequestChangingSelectionToLocationRange(locationRange)\n  }\n\n  getSelectedRange() {\n    const locationRange = this.getLocationRange()\n    if (locationRange) {\n      return this.document.rangeFromLocationRange(locationRange)\n    }\n  }\n\n  setSelectedRange(selectedRange) {\n    const locationRange = this.document.locationRangeFromRange(selectedRange)\n    return this.getSelectionManager().setLocationRange(locationRange)\n  }\n\n  getPosition() {\n    const locationRange = this.getLocationRange()\n    if (locationRange) {\n      return this.document.positionFromLocation(locationRange[0])\n    }\n  }\n\n  getLocationRange(options) {\n    if (this.targetLocationRange) {\n      return this.targetLocationRange\n    } else {\n      return this.getSelectionManager().getLocationRange(options) || normalizeRange({ index: 0, offset: 0 })\n    }\n  }\n\n  withTargetLocationRange(locationRange, fn) {\n    let result\n    this.targetLocationRange = locationRange\n    try {\n      result = fn()\n    } finally {\n      this.targetLocationRange = null\n    }\n    return result\n  }\n\n  withTargetRange(range, fn) {\n    const locationRange = this.document.locationRangeFromRange(range)\n    return this.withTargetLocationRange(locationRange, fn)\n  }\n\n  withTargetDOMRange(domRange, fn) {\n    const locationRange = this.createLocationRangeFromDOMRange(domRange, { strict: false })\n    return this.withTargetLocationRange(locationRange, fn)\n  }\n\n  getExpandedRangeInDirection(direction, { length } = {}) {\n    let [ startPosition, endPosition ] = Array.from(this.getSelectedRange())\n    if (direction === \"backward\") {\n      if (length) {\n        startPosition -= length\n      } else {\n        startPosition = this.translateUTF16PositionFromOffset(startPosition, -1)\n      }\n    } else {\n      if (length) {\n        endPosition += length\n      } else {\n        endPosition = this.translateUTF16PositionFromOffset(endPosition, 1)\n      }\n    }\n    return normalizeRange([ startPosition, endPosition ])\n  }\n\n  shouldManageMovingCursorInDirection(direction) {\n    if (this.editingAttachment) {\n      return true\n    }\n    const range = this.getExpandedRangeInDirection(direction)\n    return this.getAttachmentAtRange(range) != null\n  }\n\n  moveCursorInDirection(direction) {\n    let canEditAttachment, range\n    if (this.editingAttachment) {\n      range = this.document.getRangeOfAttachment(this.editingAttachment)\n    } else {\n      const selectedRange = this.getSelectedRange()\n      range = this.getExpandedRangeInDirection(direction)\n      canEditAttachment = !rangesAreEqual(selectedRange, range)\n    }\n\n    if (direction === \"backward\") {\n      this.setSelectedRange(range[0])\n    } else {\n      this.setSelectedRange(range[1])\n    }\n\n    if (canEditAttachment) {\n      const attachment = this.getAttachmentAtRange(range)\n      if (attachment) {\n        return this.editAttachment(attachment)\n      }\n    }\n  }\n\n  expandSelectionInDirection(direction, { length } = {}) {\n    const range = this.getExpandedRangeInDirection(direction, { length })\n    return this.setSelectedRange(range)\n  }\n\n  expandSelectionForEditing() {\n    if (this.hasCurrentAttribute(\"href\")) {\n      return this.expandSelectionAroundCommonAttribute(\"href\")\n    }\n  }\n\n  expandSelectionAroundCommonAttribute(attributeName) {\n    const position = this.getPosition()\n    const range = this.document.getRangeOfCommonAttributeAtPosition(attributeName, position)\n    return this.setSelectedRange(range)\n  }\n\n  selectionContainsAttachments() {\n    return this.getSelectedAttachments()?.length > 0\n  }\n\n  selectionIsInCursorTarget() {\n    return this.editingAttachment || this.positionIsCursorTarget(this.getPosition())\n  }\n\n  positionIsCursorTarget(position) {\n    const location = this.document.locationFromPosition(position)\n    if (location) {\n      return this.locationIsCursorTarget(location)\n    }\n  }\n\n  positionIsBlockBreak(position) {\n    return this.document.getPieceAtPosition(position)?.isBlockBreak()\n  }\n\n  getSelectedDocument() {\n    const selectedRange = this.getSelectedRange()\n    if (selectedRange) {\n      return this.document.getDocumentAtRange(selectedRange)\n    }\n  }\n\n  getSelectedAttachments() {\n    return this.getSelectedDocument()?.getAttachments()\n  }\n\n  // Attachments\n\n  getAttachments() {\n    return this.attachments.slice(0)\n  }\n\n  refreshAttachments() {\n    const attachments = this.document.getAttachments()\n    const { added, removed } = summarizeArrayChange(this.attachments, attachments)\n    this.attachments = attachments\n\n    Array.from(removed).forEach((attachment) => {\n      attachment.delegate = null\n      this.delegate?.compositionDidRemoveAttachment?.(attachment)\n    })\n\n    return (() => {\n      const result = []\n\n      Array.from(added).forEach((attachment) => {\n        attachment.delegate = this\n        result.push(this.delegate?.compositionDidAddAttachment?.(attachment))\n      })\n\n      return result\n    })()\n  }\n\n  // Attachment delegate\n\n  attachmentDidChangeAttributes(attachment) {\n    this.revision++\n    return this.delegate?.compositionDidEditAttachment?.(attachment)\n  }\n\n  attachmentDidChangePreviewURL(attachment) {\n    this.revision++\n    return this.delegate?.compositionDidChangeAttachmentPreviewURL?.(attachment)\n  }\n\n  // Attachment editing\n\n  editAttachment(attachment, options) {\n    if (attachment === this.editingAttachment) return\n    this.stopEditingAttachment()\n    this.editingAttachment = attachment\n    return this.delegate?.compositionDidStartEditingAttachment?.(this.editingAttachment, options)\n  }\n\n  stopEditingAttachment() {\n    if (!this.editingAttachment) return\n    this.delegate?.compositionDidStopEditingAttachment?.(this.editingAttachment)\n    this.editingAttachment = null\n  }\n\n  updateAttributesForAttachment(attributes, attachment) {\n    return this.setDocument(this.document.updateAttributesForAttachment(attributes, attachment))\n  }\n\n  removeAttributeForAttachment(attribute, attachment) {\n    return this.setDocument(this.document.removeAttributeForAttachment(attribute, attachment))\n  }\n\n  // Private\n\n  breakFormattedBlock(insertion) {\n    let { document } = insertion\n    const { block } = insertion\n    let position = insertion.startPosition\n    let range = [ position - 1, position ]\n\n    if (block.getBlockBreakPosition() === insertion.startLocation.offset) {\n      if (block.breaksOnReturn() && insertion.nextCharacter === \"\\n\") {\n        position += 1\n      } else {\n        document = document.removeTextAtRange(range)\n      }\n      range = [ position, position ]\n    } else if (insertion.nextCharacter === \"\\n\") {\n      if (insertion.previousCharacter === \"\\n\") {\n        range = [ position - 1, position + 1 ]\n      } else {\n        range = [ position, position + 1 ]\n        position += 1\n      }\n    } else if (insertion.startLocation.offset - 1 !== 0) {\n      position += 1\n    }\n\n    const newDocument = new Document([ block.removeLastAttribute().copyWithoutText() ])\n    this.setDocument(document.insertDocumentAtRange(newDocument, range))\n    return this.setSelection(position)\n  }\n\n  getPreviousBlock() {\n    const locationRange = this.getLocationRange()\n    if (locationRange) {\n      const { index } = locationRange[0]\n      if (index > 0) {\n        return this.document.getBlockAtIndex(index - 1)\n      }\n    }\n  }\n\n  getBlock() {\n    const locationRange = this.getLocationRange()\n    if (locationRange) {\n      return this.document.getBlockAtIndex(locationRange[0].index)\n    }\n  }\n\n  getAttachmentAtRange(range) {\n    const document = this.document.getDocumentAtRange(range)\n    if (document.toString() === `${OBJECT_REPLACEMENT_CHARACTER}\\n`) {\n      return document.getAttachments()[0]\n    }\n  }\n\n  notifyDelegateOfCurrentAttributesChange() {\n    return this.delegate?.compositionDidChangeCurrentAttributes?.(this.currentAttributes)\n  }\n\n  notifyDelegateOfInsertionAtRange(range) {\n    return this.delegate?.compositionDidPerformInsertionAtRange?.(range)\n  }\n\n  translateUTF16PositionFromOffset(position, offset) {\n    const utf16string = this.document.toUTF16String()\n    const utf16position = utf16string.offsetFromUCS2Offset(position)\n    return utf16string.offsetToUCS2Offset(utf16position + offset)\n  }\n}\n\nComposition.proxyMethod(\"getSelectionManager().getPointRange\")\nComposition.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\")\nComposition.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\")\nComposition.proxyMethod(\"getSelectionManager().locationIsCursorTarget\")\nComposition.proxyMethod(\"getSelectionManager().selectionIsExpanded\")\nComposition.proxyMethod(\"delegate?.getSelectionManager\")\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class UndoManager extends BasicObject {\n  constructor(composition) {\n    super(...arguments)\n    this.composition = composition\n    this.undoEntries = []\n    this.redoEntries = []\n  }\n\n  recordUndoEntry(description, { context, consolidatable } = {}) {\n    const previousEntry = this.undoEntries.slice(-1)[0]\n\n    if (!consolidatable || !entryHasDescriptionAndContext(previousEntry, description, context)) {\n      const undoEntry = this.createEntry({ description, context })\n      this.undoEntries.push(undoEntry)\n      this.redoEntries = []\n    }\n  }\n\n  undo() {\n    const undoEntry = this.undoEntries.pop()\n    if (undoEntry) {\n      const redoEntry = this.createEntry(undoEntry)\n      this.redoEntries.push(redoEntry)\n      return this.composition.loadSnapshot(undoEntry.snapshot)\n    }\n  }\n\n  redo() {\n    const redoEntry = this.redoEntries.pop()\n    if (redoEntry) {\n      const undoEntry = this.createEntry(redoEntry)\n      this.undoEntries.push(undoEntry)\n      return this.composition.loadSnapshot(redoEntry.snapshot)\n    }\n  }\n\n  canUndo() {\n    return this.undoEntries.length > 0\n  }\n\n  canRedo() {\n    return this.redoEntries.length > 0\n  }\n\n  // Private\n\n  createEntry({ description, context } = {}) {\n    return {\n      description: description?.toString(),\n      context: JSON.stringify(context),\n      snapshot: this.composition.getSnapshot(),\n    }\n  }\n}\n\nconst entryHasDescriptionAndContext = (entry, description, context) =>\n  entry?.description === description?.toString() && entry?.context === JSON.stringify(context)\n", "const BLOCK_ATTRIBUTE_NAME = \"attachmentGallery\"\nconst TEXT_ATTRIBUTE_NAME = \"presentation\"\nconst TEXT_ATTRIBUTE_VALUE = \"gallery\"\n\nexport default class Filter {\n  constructor(snapshot) {\n    this.document = snapshot.document\n    this.selectedRange = snapshot.selectedRange\n  }\n\n  perform() {\n    this.removeBlockAttribute()\n    return this.applyBlockAttribute()\n  }\n\n  getSnapshot() {\n    return { document: this.document, selectedRange: this.selectedRange }\n  }\n\n  // Private\n\n  removeBlockAttribute() {\n    return this.findRangesOfBlocks().map((range) => this.document = this.document.removeAttributeAtRange(BLOCK_ATTRIBUTE_NAME, range))\n  }\n\n  applyBlockAttribute() {\n    let offset = 0\n\n    this.findRangesOfPieces().forEach((range) => {\n      if (range[1] - range[0] > 1) {\n        range[0] += offset\n        range[1] += offset\n\n        if (this.document.getCharacterAtPosition(range[1]) !== \"\\n\") {\n          this.document = this.document.insertBlockBreakAtRange(range[1])\n          if (range[1] < this.selectedRange[1]) {\n            this.moveSelectedRangeForward()\n          }\n          range[1]++\n          offset++\n        }\n\n        if (range[0] !== 0) {\n          if (this.document.getCharacterAtPosition(range[0] - 1) !== \"\\n\") {\n            this.document = this.document.insertBlockBreakAtRange(range[0])\n            if (range[0] < this.selectedRange[0]) {\n              this.moveSelectedRangeForward()\n            }\n            range[0]++\n            offset++\n          }\n        }\n\n        this.document = this.document.applyBlockAttributeAtRange(BLOCK_ATTRIBUTE_NAME, true, range)\n      }\n    })\n  }\n\n  findRangesOfBlocks() {\n    return this.document.findRangesForBlockAttribute(BLOCK_ATTRIBUTE_NAME)\n  }\n\n  findRangesOfPieces() {\n    return this.document.findRangesForTextAttribute(TEXT_ATTRIBUTE_NAME, { withValue: TEXT_ATTRIBUTE_VALUE })\n  }\n\n  moveSelectedRangeForward() {\n    this.selectedRange[0] += 1\n    this.selectedRange[1] += 1\n  }\n}\n", "import Filter from \"./filter\"\n\nexport const attachmentGalleryFilter = function(snapshot) {\n  const filter = new Filter(snapshot)\n  filter.perform()\n  return filter.getSnapshot()\n}\n\n", "import Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\n\nimport UndoManager from \"trix/models/undo_manager\"\nimport { attachmentGalleryFilter } from \"trix/filters/attachment_gallery_filter\"\nconst DEFAULT_FILTERS = [ attachmentGalleryFilter ]\n\nexport default class Editor {\n  constructor(composition, selectionManager, element) {\n    this.insertFiles = this.insertFiles.bind(this)\n    this.composition = composition\n    this.selectionManager = selectionManager\n    this.element = element\n    this.undoManager = new UndoManager(this.composition)\n    this.filters = DEFAULT_FILTERS.slice(0)\n  }\n\n  loadDocument(document) {\n    return this.loadSnapshot({ document, selectedRange: [ 0, 0 ] })\n  }\n\n  loadHTML(html = \"\") {\n    const document = HTMLParser.parse(html, { referenceElement: this.element }).getDocument()\n    return this.loadDocument(document)\n  }\n\n  loadJSON({ document, selectedRange }) {\n    document = Document.fromJSON(document)\n    return this.loadSnapshot({ document, selectedRange })\n  }\n\n  loadSnapshot(snapshot) {\n    this.undoManager = new UndoManager(this.composition)\n    return this.composition.loadSnapshot(snapshot)\n  }\n\n  getDocument() {\n    return this.composition.document\n  }\n\n  getSelectedDocument() {\n    return this.composition.getSelectedDocument()\n  }\n\n  getSnapshot() {\n    return this.composition.getSnapshot()\n  }\n\n  toJSON() {\n    return this.getSnapshot()\n  }\n\n  // Document manipulation\n\n  deleteInDirection(direction) {\n    return this.composition.deleteInDirection(direction)\n  }\n\n  insertAttachment(attachment) {\n    return this.composition.insertAttachment(attachment)\n  }\n\n  insertAttachments(attachments) {\n    return this.composition.insertAttachments(attachments)\n  }\n\n  insertDocument(document) {\n    return this.composition.insertDocument(document)\n  }\n\n  insertFile(file) {\n    return this.composition.insertFile(file)\n  }\n\n  insertFiles(files) {\n    return this.composition.insertFiles(files)\n  }\n\n  insertHTML(html) {\n    return this.composition.insertHTML(html)\n  }\n\n  insertString(string) {\n    return this.composition.insertString(string)\n  }\n\n  insertText(text) {\n    return this.composition.insertText(text)\n  }\n\n  insertLineBreak() {\n    return this.composition.insertLineBreak()\n  }\n\n  // Selection\n\n  getSelectedRange() {\n    return this.composition.getSelectedRange()\n  }\n\n  getPosition() {\n    return this.composition.getPosition()\n  }\n\n  getClientRectAtPosition(position) {\n    const locationRange = this.getDocument().locationRangeFromRange([ position, position + 1 ])\n    return this.selectionManager.getClientRectAtLocationRange(locationRange)\n  }\n\n  expandSelectionInDirection(direction) {\n    return this.composition.expandSelectionInDirection(direction)\n  }\n\n  moveCursorInDirection(direction) {\n    return this.composition.moveCursorInDirection(direction)\n  }\n\n  setSelectedRange(selectedRange) {\n    return this.composition.setSelectedRange(selectedRange)\n  }\n\n  // Attributes\n\n  activateAttribute(name, value = true) {\n    return this.composition.setCurrentAttribute(name, value)\n  }\n\n  attributeIsActive(name) {\n    return this.composition.hasCurrentAttribute(name)\n  }\n\n  canActivateAttribute(name) {\n    return this.composition.canSetCurrentAttribute(name)\n  }\n\n  deactivateAttribute(name) {\n    return this.composition.removeCurrentAttribute(name)\n  }\n\n  // HTML attributes\n  setHTMLAtributeAtPosition(position, name, value) {\n    this.composition.setHTMLAtributeAtPosition(position, name, value)\n  }\n\n  // Nesting level\n\n  canDecreaseNestingLevel() {\n    return this.composition.canDecreaseNestingLevel()\n  }\n\n  canIncreaseNestingLevel() {\n    return this.composition.canIncreaseNestingLevel()\n  }\n\n  decreaseNestingLevel() {\n    if (this.canDecreaseNestingLevel()) {\n      return this.composition.decreaseNestingLevel()\n    }\n  }\n\n  increaseNestingLevel() {\n    if (this.canIncreaseNestingLevel()) {\n      return this.composition.increaseNestingLevel()\n    }\n  }\n\n  // Undo/redo\n\n  canRedo() {\n    return this.undoManager.canRedo()\n  }\n\n  canUndo() {\n    return this.undoManager.canUndo()\n  }\n\n  recordUndoEntry(description, { context, consolidatable } = {}) {\n    return this.undoManager.recordUndoEntry(description, { context, consolidatable })\n  }\n\n  redo() {\n    if (this.canRedo()) {\n      return this.undoManager.redo()\n    }\n  }\n\n  undo() {\n    if (this.canUndo()) {\n      return this.undoManager.undo()\n    }\n  }\n}\n", "/* eslint-disable\n    no-var,\n    prefer-const,\n*/\nimport {\n  elementContainsNode,\n  findChildIndexOfNode,\n  nodeIsAttachmentElement,\n  nodeIsBlockContainer,\n  nodeIsBlockStart,\n  nodeIsBlockStartComment,\n  nodeIsCursorTarget,\n  nodeIsEmptyTextNode,\n  nodeIsTextNode,\n  tagName,\n  walkTree,\n} from \"trix/core/helpers\"\n\nexport default class LocationMapper {\n  constructor(element) {\n    this.element = element\n  }\n\n  findLocationFromContainerAndOffset(container, offset, { strict } = { strict: true }) {\n    let childIndex = 0\n    let foundBlock = false\n    const location = { index: 0, offset: 0 }\n    const attachmentElement = this.findAttachmentElementParentForNode(container)\n\n    if (attachmentElement) {\n      container = attachmentElement.parentNode\n      offset = findChildIndexOfNode(attachmentElement)\n    }\n\n    const walker = walkTree(this.element, { usingFilter: rejectAttachmentContents })\n\n    while (walker.nextNode()) {\n      const node = walker.currentNode\n\n      if (node === container && nodeIsTextNode(container)) {\n        if (!nodeIsCursorTarget(node)) {\n          location.offset += offset\n        }\n        break\n      } else {\n        if (node.parentNode === container) {\n          if (childIndex++ === offset) {\n            break\n          }\n        } else if (!elementContainsNode(container, node)) {\n          if (childIndex > 0) {\n            break\n          }\n        }\n\n        if (nodeIsBlockStart(node, { strict })) {\n          if (foundBlock) {\n            location.index++\n          }\n          location.offset = 0\n          foundBlock = true\n        } else {\n          location.offset += nodeLength(node)\n        }\n      }\n    }\n\n    return location\n  }\n\n  findContainerAndOffsetFromLocation(location) {\n    let container, offset\n    if (location.index === 0 && location.offset === 0) {\n      container = this.element\n      offset = 0\n\n      while (container.firstChild) {\n        container = container.firstChild\n        if (nodeIsBlockContainer(container)) {\n          offset = 1\n          break\n        }\n      }\n\n      return [ container, offset ]\n    }\n\n    let [ node, nodeOffset ] = this.findNodeAndOffsetFromLocation(location)\n    if (!node) return\n\n    if (nodeIsTextNode(node)) {\n      if (nodeLength(node) === 0) {\n        container = node.parentNode.parentNode\n        offset = findChildIndexOfNode(node.parentNode)\n        if (nodeIsCursorTarget(node, { name: \"right\" })) {\n          offset++\n        }\n      } else {\n        container = node\n        offset = location.offset - nodeOffset\n      }\n    } else {\n      container = node.parentNode\n\n      if (!nodeIsBlockStart(node.previousSibling)) {\n        if (!nodeIsBlockContainer(container)) {\n          while (node === container.lastChild) {\n            node = container\n            container = container.parentNode\n            if (nodeIsBlockContainer(container)) {\n              break\n            }\n          }\n        }\n      }\n\n      offset = findChildIndexOfNode(node)\n      if (location.offset !== 0) {\n        offset++\n      }\n    }\n\n    return [ container, offset ]\n  }\n\n  findNodeAndOffsetFromLocation(location) {\n    let node, nodeOffset\n    let offset = 0\n\n    for (const currentNode of this.getSignificantNodesForIndex(location.index)) {\n      const length = nodeLength(currentNode)\n\n      if (location.offset <= offset + length) {\n        if (nodeIsTextNode(currentNode)) {\n          node = currentNode\n          nodeOffset = offset\n          if (location.offset === nodeOffset && nodeIsCursorTarget(node)) {\n            break\n          }\n        } else if (!node) {\n          node = currentNode\n          nodeOffset = offset\n        }\n      }\n\n      offset += length\n      if (offset > location.offset) {\n        break\n      }\n    }\n\n    return [ node, nodeOffset ]\n  }\n\n  // Private\n\n  findAttachmentElementParentForNode(node) {\n    while (node && node !== this.element) {\n      if (nodeIsAttachmentElement(node)) {\n        return node\n      }\n      node = node.parentNode\n    }\n  }\n\n  getSignificantNodesForIndex(index) {\n    const nodes = []\n    const walker = walkTree(this.element, { usingFilter: acceptSignificantNodes })\n    let recordingNodes = false\n\n    while (walker.nextNode()) {\n      const node = walker.currentNode\n      if (nodeIsBlockStartComment(node)) {\n        var blockIndex\n        if (blockIndex != null) {\n          blockIndex++\n        } else {\n          blockIndex = 0\n        }\n\n        if (blockIndex === index) {\n          recordingNodes = true\n        } else if (recordingNodes) {\n          break\n        }\n      } else if (recordingNodes) {\n        nodes.push(node)\n      }\n    }\n\n    return nodes\n  }\n}\n\nconst nodeLength = function(node) {\n  if (node.nodeType === Node.TEXT_NODE) {\n    if (nodeIsCursorTarget(node)) {\n      return 0\n    } else {\n      const string = node.textContent\n      return string.length\n    }\n  } else if (tagName(node) === \"br\" || nodeIsAttachmentElement(node)) {\n    return 1\n  } else {\n    return 0\n  }\n}\n\nconst acceptSignificantNodes = function(node) {\n  if (rejectEmptyTextNodes(node) === NodeFilter.FILTER_ACCEPT) {\n    return rejectAttachmentContents(node)\n  } else {\n    return NodeFilter.FILTER_REJECT\n  }\n}\n\nconst rejectEmptyTextNodes = function(node) {\n  if (nodeIsEmptyTextNode(node)) {\n    return NodeFilter.FILTER_REJECT\n  } else {\n    return NodeFilter.FILTER_ACCEPT\n  }\n}\n\nconst rejectAttachmentContents = function(node) {\n  if (nodeIsAttachmentElement(node.parentNode)) {\n    return NodeFilter.FILTER_REJECT\n  } else {\n    return NodeFilter.FILTER_ACCEPT\n  }\n}\n", "/* eslint-disable\n    id-length,\n    no-empty,\n*/\nimport { getDOMRange, setDOMRange } from \"trix/core/helpers\"\n\nexport default class PointMapper {\n  createDOMRangeFromPoint({ x, y }) {\n    let domRange\n    if (document.caretPositionFromPoint) {\n      const { offsetNode, offset } = document.caretPositionFromPoint(x, y)\n      domRange = document.createRange()\n      domRange.setStart(offsetNode, offset)\n      return domRange\n    } else if (document.caretRangeFromPoint) {\n      return document.caretRangeFromPoint(x, y)\n    } else if (document.body.createTextRange) {\n      const originalDOMRange = getDOMRange()\n      try {\n        // IE 11 throws \"Unspecified error\" when using moveToPoint\n        // during a drag-and-drop operation.\n        const textRange = document.body.createTextRange()\n        textRange.moveToPoint(x, y)\n        textRange.select()\n      } catch (error) {}\n      domRange = getDOMRange()\n      setDOMRange(originalDOMRange)\n      return domRange\n    }\n  }\n\n  getClientRectsForDOMRange(domRange) {\n    const array = Array.from(domRange.getClientRects())\n    const start = array[0]\n    const end = array[array.length - 1]\n\n    return [ start, end ]\n  }\n}\n", "/* eslint-disable\n*/\nimport BasicObject from \"trix/core/basic_object\"\n\nimport LocationMapper from \"trix/models/location_mapper\"\nimport PointMapper from \"trix/models/point_mapper\"\n\nimport {\n  elementContainsNode,\n  getDOMRange,\n  getDOMSelection,\n  handleEvent,\n  innerElementIsActive,\n  nodeIsCursorTarget,\n  normalizeRange,\n  rangeIsCollapsed,\n  rangesAreEqual,\n  setDOMRange,\n} from \"trix/core/helpers\"\n\nexport default class SelectionManager extends BasicObject {\n  constructor(element) {\n    super(...arguments)\n    this.didMouseDown = this.didMouseDown.bind(this)\n    this.selectionDidChange = this.selectionDidChange.bind(this)\n    this.element = element\n    this.locationMapper = new LocationMapper(this.element)\n    this.pointMapper = new PointMapper()\n    this.lockCount = 0\n    handleEvent(\"mousedown\", { onElement: this.element, withCallback: this.didMouseDown })\n  }\n\n  getLocationRange(options = {}) {\n    if (options.strict === false) {\n      return this.createLocationRangeFromDOMRange(getDOMRange())\n    } else if (options.ignoreLock) {\n      return this.currentLocationRange\n    } else if (this.lockedLocationRange) {\n      return this.lockedLocationRange\n    } else {\n      return this.currentLocationRange\n    }\n  }\n\n  setLocationRange(locationRange) {\n    if (this.lockedLocationRange) return\n    locationRange = normalizeRange(locationRange)\n\n    const domRange = this.createDOMRangeFromLocationRange(locationRange)\n    if (domRange) {\n      setDOMRange(domRange)\n      this.updateCurrentLocationRange(locationRange)\n    }\n  }\n\n  setLocationRangeFromPointRange(pointRange) {\n    pointRange = normalizeRange(pointRange)\n    const startLocation = this.getLocationAtPoint(pointRange[0])\n    const endLocation = this.getLocationAtPoint(pointRange[1])\n    this.setLocationRange([ startLocation, endLocation ])\n  }\n\n  getClientRectAtLocationRange(locationRange) {\n    const domRange = this.createDOMRangeFromLocationRange(locationRange)\n    if (domRange) {\n      return this.getClientRectsForDOMRange(domRange)[1]\n    }\n  }\n\n  locationIsCursorTarget(location) {\n    const node = Array.from(this.findNodeAndOffsetFromLocation(location))[0]\n    return nodeIsCursorTarget(node)\n  }\n\n  lock() {\n    if (this.lockCount++ === 0) {\n      this.updateCurrentLocationRange()\n      this.lockedLocationRange = this.getLocationRange()\n    }\n  }\n\n  unlock() {\n    if (--this.lockCount === 0) {\n      const { lockedLocationRange } = this\n      this.lockedLocationRange = null\n      if (lockedLocationRange != null) {\n        return this.setLocationRange(lockedLocationRange)\n      }\n    }\n  }\n\n  clearSelection() {\n    return getDOMSelection()?.removeAllRanges()\n  }\n\n  selectionIsCollapsed() {\n    return getDOMRange()?.collapsed === true\n  }\n\n  selectionIsExpanded() {\n    return !this.selectionIsCollapsed()\n  }\n\n  createLocationRangeFromDOMRange(domRange, options) {\n    if (domRange == null || !this.domRangeWithinElement(domRange)) return\n\n    const start = this.findLocationFromContainerAndOffset(domRange.startContainer, domRange.startOffset, options)\n    if (!start) return\n\n    const end = domRange.collapsed\n      ? undefined\n      : this.findLocationFromContainerAndOffset(domRange.endContainer, domRange.endOffset, options)\n\n    return normalizeRange([ start, end ])\n  }\n\n  didMouseDown() {\n    return this.pauseTemporarily()\n  }\n\n  pauseTemporarily() {\n    let resumeHandlers\n    this.paused = true\n\n    const resume = () => {\n      this.paused = false\n      clearTimeout(resumeTimeout)\n\n      Array.from(resumeHandlers).forEach((handler) => {\n        handler.destroy()\n      })\n\n      if (elementContainsNode(document, this.element)) {\n        return this.selectionDidChange()\n      }\n    }\n\n    const resumeTimeout = setTimeout(resume, 200)\n\n    resumeHandlers = [ \"mousemove\", \"keydown\" ].map((eventName) =>\n      handleEvent(eventName, { onElement: document, withCallback: resume })\n    )\n  }\n\n  selectionDidChange() {\n    if (!this.paused && !innerElementIsActive(this.element)) {\n      return this.updateCurrentLocationRange()\n    }\n  }\n\n  updateCurrentLocationRange(locationRange) {\n    if (locationRange != null ? locationRange : locationRange = this.createLocationRangeFromDOMRange(getDOMRange())) {\n      if (!rangesAreEqual(locationRange, this.currentLocationRange)) {\n        this.currentLocationRange = locationRange\n        return this.delegate?.locationRangeDidChange?.(this.currentLocationRange.slice(0))\n      }\n    }\n  }\n\n  createDOMRangeFromLocationRange(locationRange) {\n    const rangeStart = this.findContainerAndOffsetFromLocation(locationRange[0])\n    const rangeEnd = rangeIsCollapsed(locationRange)\n      ? rangeStart\n      : this.findContainerAndOffsetFromLocation(locationRange[1]) || rangeStart\n\n    if (rangeStart != null && rangeEnd != null) {\n      const domRange = document.createRange()\n      domRange.setStart(...Array.from(rangeStart || []))\n      domRange.setEnd(...Array.from(rangeEnd || []))\n      return domRange\n    }\n  }\n\n  getLocationAtPoint(point) {\n    const domRange = this.createDOMRangeFromPoint(point)\n    if (domRange) {\n      return this.createLocationRangeFromDOMRange(domRange)?.[0]\n    }\n  }\n\n  domRangeWithinElement(domRange) {\n    if (domRange.collapsed) {\n      return elementContainsNode(this.element, domRange.startContainer)\n    } else {\n      return (\n        elementContainsNode(this.element, domRange.startContainer) &&\n        elementContainsNode(this.element, domRange.endContainer)\n      )\n    }\n  }\n}\n\nSelectionManager.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\")\nSelectionManager.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\")\nSelectionManager.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\")\nSelectionManager.proxyMethod(\"pointMapper.createDOMRangeFromPoint\")\nSelectionManager.proxyMethod(\"pointMapper.getClientRectsForDOMRange\")\n\n", "import { removeNode } from \"trix/core/helpers\"\n\nimport * as config from \"trix/config\"\nimport BasicObject from \"trix/core/basic_object\"\n\nimport { defer, handleEvent, makeElement, tagName, triggerEvent } from \"trix/core/helpers\"\nconst { lang, css, keyNames } = config\n\nconst undoable = function(fn) {\n  return function() {\n    const commands = fn.apply(this, arguments)\n    commands.do()\n    if (!this.undos) {\n      this.undos = []\n    }\n    this.undos.push(commands.undo)\n  }\n}\n\nexport default class AttachmentEditorController extends BasicObject {\n  constructor(attachmentPiece, element, container, options = {}) {\n    super(...arguments)\n    this.didClickToolbar = this.didClickToolbar.bind(this)\n    this.didClickActionButton = this.didClickActionButton.bind(this)\n    this.didKeyDownCaption = this.didKeyDownCaption.bind(this)\n    this.didInputCaption = this.didInputCaption.bind(this)\n    this.didChangeCaption = this.didChangeCaption.bind(this)\n    this.didBlurCaption = this.didBlurCaption.bind(this)\n    this.attachmentPiece = attachmentPiece\n    this.element = element\n    this.container = container\n    this.options = options\n    this.attachment = this.attachmentPiece.attachment\n    if (tagName(this.element) === \"a\") {\n      this.element = this.element.firstChild\n    }\n    this.install()\n  }\n\n  install() {\n    this.makeElementMutable()\n    this.addToolbar()\n    if (this.attachment.isPreviewable()) {\n      this.installCaptionEditor()\n    }\n  }\n\n  uninstall() {\n    let undo = this.undos.pop()\n    this.savePendingCaption()\n    while (undo) {\n      undo()\n      undo = this.undos.pop()\n    }\n    this.delegate?.didUninstallAttachmentEditor(this)\n  }\n\n  // Private\n\n  savePendingCaption() {\n    if (this.pendingCaption != null) {\n      const caption = this.pendingCaption\n      this.pendingCaption = null\n      if (caption) {\n        this.delegate?.attachmentEditorDidRequestUpdatingAttributesForAttachment?.({ caption }, this.attachment)\n      } else {\n        this.delegate?.attachmentEditorDidRequestRemovingAttributeForAttachment?.(\"caption\", this.attachment)\n      }\n    }\n  }\n\n  // Installing and uninstalling\n\n  makeElementMutable = undoable(() => {\n    return {\n      do: () => {\n        this.element.dataset.trixMutable = true\n      },\n      undo: () => delete this.element.dataset.trixMutable,\n    }\n  })\n\n  addToolbar = undoable(() => {\n    // <div class=\"#{css.attachmentMetadataContainer}\" data-trix-mutable=\"true\">\n    //   <div class=\"trix-button-row\">\n    //     <span class=\"trix-button-group trix-button-group--actions\">\n    //       <button type=\"button\" class=\"trix-button trix-button--remove\" title=\"#{lang.remove}\" data-trix-action=\"remove\">#{lang.remove}</button>\n    //     </span>\n    //   </div>\n    // </div>\n    const element = makeElement({\n      tagName: \"div\",\n      className: css.attachmentToolbar,\n      data: { trixMutable: true },\n      childNodes: makeElement({\n        tagName: \"div\",\n        className: \"trix-button-row\",\n        childNodes: makeElement({\n          tagName: \"span\",\n          className: \"trix-button-group trix-button-group--actions\",\n          childNodes: makeElement({\n            tagName: \"button\",\n            className: \"trix-button trix-button--remove\",\n            textContent: lang.remove,\n            attributes: { title: lang.remove },\n            data: { trixAction: \"remove\" },\n          }),\n        }),\n      }),\n    })\n\n    if (this.attachment.isPreviewable()) {\n      // <div class=\"#{css.attachmentMetadataContainer}\">\n      //   <span class=\"#{css.attachmentMetadata}\">\n      //     <span class=\"#{css.attachmentName}\" title=\"#{name}\">#{name}</span>\n      //     <span class=\"#{css.attachmentSize}\">#{size}</span>\n      //   </span>\n      // </div>\n      element.appendChild(\n        makeElement({\n          tagName: \"div\",\n          className: css.attachmentMetadataContainer,\n          childNodes: makeElement({\n            tagName: \"span\",\n            className: css.attachmentMetadata,\n            childNodes: [\n              makeElement({\n                tagName: \"span\",\n                className: css.attachmentName,\n                textContent: this.attachment.getFilename(),\n                attributes: { title: this.attachment.getFilename() },\n              }),\n              makeElement({\n                tagName: \"span\",\n                className: css.attachmentSize,\n                textContent: this.attachment.getFormattedFilesize(),\n              }),\n            ],\n          }),\n        })\n      )\n    }\n\n    handleEvent(\"click\", { onElement: element, withCallback: this.didClickToolbar })\n    handleEvent(\"click\", {\n      onElement: element,\n      matchingSelector: \"[data-trix-action]\",\n      withCallback: this.didClickActionButton,\n    })\n\n    triggerEvent(\"trix-attachment-before-toolbar\", { onElement: this.element, attributes: { toolbar: element, attachment: this.attachment } })\n\n    return {\n      do: () => this.element.appendChild(element),\n      undo: () => removeNode(element),\n    }\n  })\n\n  installCaptionEditor = undoable(() => {\n    const textarea = makeElement({\n      tagName: \"textarea\",\n      className: css.attachmentCaptionEditor,\n      attributes: { placeholder: lang.captionPlaceholder },\n      data: { trixMutable: true },\n    })\n    textarea.value = this.attachmentPiece.getCaption()\n\n    const textareaClone = textarea.cloneNode()\n    textareaClone.classList.add(\"trix-autoresize-clone\")\n    textareaClone.tabIndex = -1\n\n    const autoresize = function() {\n      textareaClone.value = textarea.value\n      textarea.style.height = textareaClone.scrollHeight + \"px\"\n    }\n\n    handleEvent(\"input\", { onElement: textarea, withCallback: autoresize })\n    handleEvent(\"input\", { onElement: textarea, withCallback: this.didInputCaption })\n    handleEvent(\"keydown\", { onElement: textarea, withCallback: this.didKeyDownCaption })\n    handleEvent(\"change\", { onElement: textarea, withCallback: this.didChangeCaption })\n    handleEvent(\"blur\", { onElement: textarea, withCallback: this.didBlurCaption })\n\n    const figcaption = this.element.querySelector(\"figcaption\")\n    const editingFigcaption = figcaption.cloneNode()\n\n    return {\n      do: () => {\n        figcaption.style.display = \"none\"\n        editingFigcaption.appendChild(textarea)\n        editingFigcaption.appendChild(textareaClone)\n        editingFigcaption.classList.add(`${css.attachmentCaption}--editing`)\n        figcaption.parentElement.insertBefore(editingFigcaption, figcaption)\n        autoresize()\n        if (this.options.editCaption) {\n          return defer(() => textarea.focus())\n        }\n      },\n      undo() {\n        removeNode(editingFigcaption)\n        figcaption.style.display = null\n      },\n    }\n  })\n\n  // Event handlers\n\n  didClickToolbar(event) {\n    event.preventDefault()\n    return event.stopPropagation()\n  }\n\n  didClickActionButton(event) {\n    const action = event.target.getAttribute(\"data-trix-action\")\n    switch (action) {\n      case \"remove\":\n        return this.delegate?.attachmentEditorDidRequestRemovalOfAttachment(this.attachment)\n    }\n  }\n\n  didKeyDownCaption(event) {\n    if (keyNames[event.keyCode] === \"return\") {\n      event.preventDefault()\n      this.savePendingCaption()\n      return this.delegate?.attachmentEditorDidRequestDeselectingAttachment?.(this.attachment)\n    }\n  }\n\n  didInputCaption(event) {\n    this.pendingCaption = event.target.value.replace(/\\s/g, \" \").trim()\n  }\n\n  didChangeCaption(event) {\n    return this.savePendingCaption()\n  }\n\n  didBlurCaption(event) {\n    return this.savePendingCaption()\n  }\n}\n", "import BasicObject from \"trix/core/basic_object\"\nimport DocumentView from \"trix/views/document_view\"\nimport AttachmentEditorController from \"trix/controllers/attachment_editor_controller\"\n\nimport { defer, findClosestElementFromNode, handleEvent, innerElementIsActive } from \"trix/core/helpers\"\nimport { attachmentSelector } from \"trix/config/attachments\"\n\nexport default class CompositionController extends BasicObject {\n  constructor(element, composition) {\n    super(...arguments)\n    this.didFocus = this.didFocus.bind(this)\n    this.didBlur = this.didBlur.bind(this)\n    this.didClickAttachment = this.didClickAttachment.bind(this)\n\n    this.element = element\n    this.composition = composition\n    this.documentView = new DocumentView(this.composition.document, { element: this.element })\n\n    handleEvent(\"focus\", { onElement: this.element, withCallback: this.didFocus })\n    handleEvent(\"blur\", { onElement: this.element, withCallback: this.didBlur })\n    handleEvent(\"click\", {\n      onElement: this.element,\n      matchingSelector: \"a[contenteditable=false]\",\n      preventDefault: true,\n    })\n    handleEvent(\"mousedown\", {\n      onElement: this.element,\n      matchingSelector: attachmentSelector,\n      withCallback: this.didClickAttachment,\n    })\n    handleEvent(\"click\", { onElement: this.element, matchingSelector: `a${attachmentSelector}`, preventDefault: true })\n  }\n\n  didFocus(event) {\n    const perform = () => {\n      if (!this.focused) {\n        this.focused = true\n        return this.delegate?.compositionControllerDidFocus?.()\n      }\n    }\n\n    return this.blurPromise?.then(perform) || perform()\n  }\n\n  didBlur(event) {\n    this.blurPromise = new Promise((resolve) => {\n      return defer(() => {\n        if (!innerElementIsActive(this.element)) {\n          this.focused = null\n          this.delegate?.compositionControllerDidBlur?.()\n        }\n        this.blurPromise = null\n        return resolve()\n      })\n    })\n  }\n\n  didClickAttachment(event, target) {\n    const attachment = this.findAttachmentForElement(target)\n    const editCaption = !!findClosestElementFromNode(event.target, { matchingSelector: \"figcaption\" })\n    return this.delegate?.compositionControllerDidSelectAttachment?.(attachment, { editCaption })\n  }\n\n  getSerializableElement() {\n    if (this.isEditingAttachment()) {\n      return this.documentView.shadowElement\n    } else {\n      return this.element\n    }\n  }\n\n  render() {\n    if (this.revision !== this.composition.revision) {\n      this.documentView.setDocument(this.composition.document)\n      this.documentView.render()\n      this.revision = this.composition.revision\n    }\n\n    if (this.canSyncDocumentView() && !this.documentView.isSynced()) {\n      this.delegate?.compositionControllerWillSyncDocumentView?.()\n      this.documentView.sync()\n      this.delegate?.compositionControllerDidSyncDocumentView?.()\n    }\n\n    return this.delegate?.compositionControllerDidRender?.()\n  }\n\n  rerenderViewForObject(object) {\n    this.invalidateViewForObject(object)\n    return this.render()\n  }\n\n  invalidateViewForObject(object) {\n    return this.documentView.invalidateViewForObject(object)\n  }\n\n  isViewCachingEnabled() {\n    return this.documentView.isViewCachingEnabled()\n  }\n\n  enableViewCaching() {\n    return this.documentView.enableViewCaching()\n  }\n\n  disableViewCaching() {\n    return this.documentView.disableViewCaching()\n  }\n\n  refreshViewCache() {\n    return this.documentView.garbageCollectCachedViews()\n  }\n\n  // Attachment editor management\n\n  isEditingAttachment() {\n    return !!this.attachmentEditor\n  }\n\n  installAttachmentEditorForAttachment(attachment, options) {\n    if (this.attachmentEditor?.attachment === attachment) return\n    const element = this.documentView.findElementForObject(attachment)\n    if (!element) return\n\n    this.uninstallAttachmentEditor()\n    const attachmentPiece = this.composition.document.getAttachmentPieceForAttachment(attachment)\n    this.attachmentEditor = new AttachmentEditorController(attachmentPiece, element, this.element, options)\n    this.attachmentEditor.delegate = this\n  }\n\n  uninstallAttachmentEditor() {\n    return this.attachmentEditor?.uninstall()\n  }\n\n  // Attachment controller delegate\n\n  didUninstallAttachmentEditor() {\n    this.attachmentEditor = null\n    return this.render()\n  }\n\n  attachmentEditorDidRequestUpdatingAttributesForAttachment(attributes, attachment) {\n    this.delegate?.compositionControllerWillUpdateAttachment?.(attachment)\n    return this.composition.updateAttributesForAttachment(attributes, attachment)\n  }\n\n  attachmentEditorDidRequestRemovingAttributeForAttachment(attribute, attachment) {\n    this.delegate?.compositionControllerWillUpdateAttachment?.(attachment)\n    return this.composition.removeAttributeForAttachment(attribute, attachment)\n  }\n\n  attachmentEditorDidRequestRemovalOfAttachment(attachment) {\n    return this.delegate?.compositionControllerDidRequestRemovalOfAttachment?.(attachment)\n  }\n\n  attachmentEditorDidRequestDeselectingAttachment(attachment) {\n    return this.delegate?.compositionControllerDidRequestDeselectingAttachment?.(attachment)\n  }\n\n  // Private\n\n  canSyncDocumentView() {\n    return !this.isEditingAttachment()\n  }\n\n  findAttachmentForElement(element) {\n    return this.composition.document.getAttachmentById(parseInt(element.dataset.trixId, 10))\n  }\n}\n", "import \"trix/views/object_view\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class Controller extends BasicObject {}\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport {\n  findClosestElementFromNode,\n  nodeIsBlockStartComment,\n  nodeIsEmptyTextNode,\n  normalizeSpaces,\n  summarizeStringChange,\n  tagName,\n} from \"trix/core/helpers\"\n\nconst mutableAttributeName = \"data-trix-mutable\"\nconst mutableSelector = `[${mutableAttributeName}]`\n\nconst options = {\n  attributes: true,\n  childList: true,\n  characterData: true,\n  characterDataOldValue: true,\n  subtree: true,\n}\n\nexport default class MutationObserver extends BasicObject {\n  constructor(element) {\n    super(element)\n    this.didMutate = this.didMutate.bind(this)\n    this.element = element\n    this.observer = new window.MutationObserver(this.didMutate)\n    this.start()\n  }\n\n  start() {\n    this.reset()\n    return this.observer.observe(this.element, options)\n  }\n\n  stop() {\n    return this.observer.disconnect()\n  }\n\n  didMutate(mutations) {\n    this.mutations.push(...Array.from(this.findSignificantMutations(mutations) || []))\n\n    if (this.mutations.length) {\n      this.delegate?.elementDidMutate?.(this.getMutationSummary())\n      return this.reset()\n    }\n  }\n\n  // Private\n\n  reset() {\n    this.mutations = []\n  }\n\n  findSignificantMutations(mutations) {\n    return mutations.filter((mutation) => {\n      return this.mutationIsSignificant(mutation)\n    })\n  }\n\n  mutationIsSignificant(mutation) {\n    if (this.nodeIsMutable(mutation.target)) {\n      return false\n    }\n    for (const node of Array.from(this.nodesModifiedByMutation(mutation))) {\n      if (this.nodeIsSignificant(node)) return true\n    }\n    return false\n  }\n\n  nodeIsSignificant(node) {\n    return node !== this.element && !this.nodeIsMutable(node) && !nodeIsEmptyTextNode(node)\n  }\n\n  nodeIsMutable(node) {\n    return findClosestElementFromNode(node, { matchingSelector: mutableSelector })\n  }\n\n  nodesModifiedByMutation(mutation) {\n    const nodes = []\n    switch (mutation.type) {\n      case \"attributes\":\n        if (mutation.attributeName !== mutableAttributeName) {\n          nodes.push(mutation.target)\n        }\n        break\n      case \"characterData\":\n        // Changes to text nodes should consider the parent element\n        nodes.push(mutation.target.parentNode)\n        nodes.push(mutation.target)\n        break\n      case \"childList\":\n        // Consider each added or removed node\n        nodes.push(...Array.from(mutation.addedNodes || []))\n        nodes.push(...Array.from(mutation.removedNodes || []))\n        break\n    }\n    return nodes\n  }\n\n  getMutationSummary() {\n    return this.getTextMutationSummary()\n  }\n\n  getTextMutationSummary() {\n    const { additions, deletions } = this.getTextChangesFromCharacterData()\n    const textChanges = this.getTextChangesFromChildList()\n\n    Array.from(textChanges.additions).forEach((addition) => {\n      if (!Array.from(additions).includes(addition)) {\n        additions.push(addition)\n      }\n    })\n\n    deletions.push(...Array.from(textChanges.deletions || []))\n\n    const summary = {}\n\n    const added = additions.join(\"\")\n    if (added) {\n      summary.textAdded = added\n    }\n\n    const deleted = deletions.join(\"\")\n    if (deleted) {\n      summary.textDeleted = deleted\n    }\n\n    return summary\n  }\n\n  getMutationsByType(type) {\n    return Array.from(this.mutations).filter((mutation) => mutation.type === type)\n  }\n\n  getTextChangesFromChildList() {\n    let textAdded, textRemoved\n    const addedNodes = []\n    const removedNodes = []\n\n    Array.from(this.getMutationsByType(\"childList\")).forEach((mutation) => {\n      addedNodes.push(...Array.from(mutation.addedNodes || []))\n      removedNodes.push(...Array.from(mutation.removedNodes || []))\n    })\n\n    const singleBlockCommentRemoved =\n      addedNodes.length === 0 && removedNodes.length === 1 && nodeIsBlockStartComment(removedNodes[0])\n\n    if (singleBlockCommentRemoved) {\n      textAdded = []\n      textRemoved = [ \"\\n\" ]\n    } else {\n      textAdded = getTextForNodes(addedNodes)\n      textRemoved = getTextForNodes(removedNodes)\n    }\n\n    const additions = textAdded.filter((text, index) => text !== textRemoved[index]).map(normalizeSpaces)\n    const deletions = textRemoved.filter((text, index) => text !== textAdded[index]).map(normalizeSpaces)\n\n    return { additions, deletions }\n  }\n\n  getTextChangesFromCharacterData() {\n    let added, removed\n    const characterMutations = this.getMutationsByType(\"characterData\")\n\n    if (characterMutations.length) {\n      const startMutation = characterMutations[0],\n        endMutation = characterMutations[characterMutations.length - 1]\n\n      const oldString = normalizeSpaces(startMutation.oldValue)\n      const newString = normalizeSpaces(endMutation.target.data)\n      const summarized = summarizeStringChange(oldString, newString)\n      added = summarized.added\n      removed = summarized.removed\n    }\n\n    return {\n      additions: added ? [ added ] : [],\n      deletions: removed ? [ removed ] : [],\n    }\n  }\n}\n\nconst getTextForNodes = function(nodes = []) {\n  const text = []\n  for (const node of Array.from(nodes)) {\n    switch (node.nodeType) {\n      case Node.TEXT_NODE:\n        text.push(node.data)\n        break\n      case Node.ELEMENT_NODE:\n        if (tagName(node) === \"br\") {\n          text.push(\"\\n\")\n        } else {\n          text.push(...Array.from(getTextForNodes(node.childNodes) || []))\n        }\n        break\n    }\n  }\n  return text\n}\n", "/* eslint-disable\n    no-empty,\n*/\nimport Operation from \"trix/core/utilities/operation\"\n\nexport default class FileVerificationOperation extends Operation {\n  constructor(file) {\n    super(...arguments)\n    this.file = file\n  }\n\n  perform(callback) {\n    const reader = new FileReader()\n\n    reader.onerror = () => callback(false)\n\n    reader.onload = () => {\n      reader.onerror = null\n      try {\n        reader.abort()\n      } catch (error) {}\n      return callback(true, this.file)\n    }\n\n    return reader.readAsArrayBuffer(this.file)\n  }\n}\n", "import * as config from \"trix/config\"\nimport { NON_BREAKING_SPACE, OBJECT_REPLACEMENT_CHARACTER, ZERO_WIDTH_SPACE } from \"trix/constants\"\n\n// Each software keyboard on Android emits its own set of events and some of them can be buggy.\n// This class detects when some buggy events are being emitted and lets know the input controller\n// that they should be ignored.\nexport default class FlakyAndroidKeyboardDetector {\n  constructor(element) {\n    this.element = element\n  }\n\n  shouldIgnore(event) {\n    if (!config.browser.samsungAndroid) return false\n\n    this.previousEvent = this.event\n    this.event = event\n\n    this.checkSamsungKeyboardBuggyModeStart()\n    this.checkSamsungKeyboardBuggyModeEnd()\n\n    return this.buggyMode\n  }\n\n  // private\n\n  // The Samsung keyboard on Android can enter a buggy state in which it emits a flurry of confused events that,\n  // if processed, corrupts the editor. The buggy mode always starts with an insertText event, right after a\n  // keydown event with for an \"Unidentified\" key, with the same text as the editor element, except for a few\n  // extra whitespace, or exotic utf8, characters.\n  checkSamsungKeyboardBuggyModeStart() {\n    if (this.insertingLongTextAfterUnidentifiedChar() && differsInWhitespace(this.element.innerText, this.event.data)) {\n      this.buggyMode = true\n      this.event.preventDefault()\n    }\n  }\n\n  // The flurry of buggy events are always insertText. If we see any other type, it means it's over.\n  checkSamsungKeyboardBuggyModeEnd() {\n    if (this.buggyMode && this.event.inputType !== \"insertText\") {\n      this.buggyMode = false\n    }\n  }\n\n  insertingLongTextAfterUnidentifiedChar() {\n    return this.isBeforeInputInsertText() && this.previousEventWasUnidentifiedKeydown() && this.event.data?.length > 50\n  }\n\n  isBeforeInputInsertText() {\n    return this.event.type === \"beforeinput\" && this.event.inputType === \"insertText\"\n  }\n\n  previousEventWasUnidentifiedKeydown() {\n    return this.previousEvent?.type === \"keydown\" && this.previousEvent?.key === \"Unidentified\"\n  }\n}\n\nconst differsInWhitespace = (text1, text2) => {\n  return normalize(text1) === normalize(text2)\n}\n\nconst whiteSpaceNormalizerRegexp = new RegExp(`(${OBJECT_REPLACEMENT_CHARACTER}|${ZERO_WIDTH_SPACE}|${NON_BREAKING_SPACE}|\\\\s)+`, \"g\")\nconst normalize = (text) => text.replace(whiteSpaceNormalizerRegexp, \" \").trim()\n", "import BasicObject from \"trix/core/basic_object\"\nimport MutationObserver from \"trix/observers/mutation_observer\"\nimport FileVerificationOperation from \"trix/operations/file_verification_operation\"\nimport FlakyAndroidKeyboardDetector from \"../models/flaky_android_keyboard_detector\"\n\nimport { handleEvent, innerElementIsActive } from \"trix/core/helpers\"\n\nexport default class InputController extends BasicObject {\n\n  static events = {}\n\n  constructor(element) {\n    super(...arguments)\n    this.element = element\n    this.mutationObserver = new MutationObserver(this.element)\n    this.mutationObserver.delegate = this\n    this.flakyKeyboardDetector = new FlakyAndroidKeyboardDetector(this.element)\n    for (const eventName in this.constructor.events) {\n      handleEvent(eventName, { onElement: this.element, withCallback: this.handlerFor(eventName) })\n    }\n  }\n\n  elementDidMutate(mutationSummary) {}\n\n  editorWillSyncDocumentView() {\n    return this.mutationObserver.stop()\n  }\n\n  editorDidSyncDocumentView() {\n    return this.mutationObserver.start()\n  }\n\n  requestRender() {\n    return this.delegate?.inputControllerDidRequestRender?.()\n  }\n\n  requestReparse() {\n    this.delegate?.inputControllerDidRequestReparse?.()\n    return this.requestRender()\n  }\n\n  attachFiles(files) {\n    const operations = Array.from(files).map((file) => new FileVerificationOperation(file))\n    return Promise.all(operations).then((files) => {\n      this.handleInput(function() {\n        this.delegate?.inputControllerWillAttachFiles()\n        this.responder?.insertFiles(files)\n        return this.requestRender()\n      })\n    })\n  }\n\n  // Private\n\n  handlerFor(eventName) {\n    return (event) => {\n      if (!event.defaultPrevented) {\n        this.handleInput(() => {\n          if (!innerElementIsActive(this.element)) {\n            if (this.flakyKeyboardDetector.shouldIgnore(event)) return\n\n            this.eventName = eventName\n            this.constructor.events[eventName].call(this, event)\n          }\n        })\n      }\n    }\n  }\n\n  handleInput(callback) {\n    try {\n      this.delegate?.inputControllerWillHandleInput()\n      callback.call(this)\n    } finally {\n      this.delegate?.inputControllerDidHandleInput()\n    }\n  }\n\n  createLinkHTML(href, text) {\n    const link = document.createElement(\"a\")\n    link.href = href\n    link.textContent = text ? text : href\n    return link.outerHTML\n  }\n}\n\n", "import * as config from \"trix/config\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\nimport BasicObject from \"trix/core/basic_object\"\nimport InputController from \"trix/controllers/input_controller\"\nimport DocumentView from \"trix/views/document_view\"\nimport Document from \"trix/models/document\"\n\nimport {\n  dataTransferIsPlainText,\n  dataTransferIsWritable,\n  keyEventIsKeyboardCommand,\n  makeElement,\n  objectsAreEqual,\n  removeNode,\n  squishBreakableWhitespace,\n} from \"trix/core/helpers\"\n\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nconst { browser, keyNames } = config\nlet pastedFileCount = 0\n\nexport default class Level0InputController extends InputController {\n\n  static events = {\n    keydown(event) {\n      if (!this.isComposing()) {\n        this.resetInputSummary()\n      }\n      this.inputSummary.didInput = true\n\n      const keyName = keyNames[event.keyCode]\n      if (keyName) {\n        let context = this.keys\n\n        ;[ \"ctrl\", \"alt\", \"shift\", \"meta\" ].forEach((modifier) => {\n          if (event[`${modifier}Key`]) {\n            if (modifier === \"ctrl\") {\n              modifier = \"control\"\n            }\n            context = context?.[modifier]\n          }\n        })\n\n        if (context?.[keyName] != null) {\n          this.setInputSummary({ keyName })\n          selectionChangeObserver.reset()\n          context[keyName].call(this, event)\n        }\n      }\n\n      if (keyEventIsKeyboardCommand(event)) {\n        const character = String.fromCharCode(event.keyCode).toLowerCase()\n        if (character) {\n          const keys = [ \"alt\", \"shift\" ].map((modifier) => {\n            if (event[`${modifier}Key`]) {\n              return modifier\n            }\n          }).filter(key => key)\n          keys.push(character)\n          if (this.delegate?.inputControllerDidReceiveKeyboardCommand(keys)) {\n            event.preventDefault()\n          }\n        }\n      }\n    },\n\n    keypress(event) {\n      if (this.inputSummary.eventName != null) return\n      if (event.metaKey) return\n      if (event.ctrlKey && !event.altKey) return\n\n      const string = stringFromKeyEvent(event)\n      if (string) {\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.insertString(string)\n        return this.setInputSummary({ textAdded: string, didDelete: this.selectionIsExpanded() })\n      }\n    },\n\n    textInput(event) {\n      // Handle autocapitalization\n      const { data } = event\n      const { textAdded } = this.inputSummary\n      if (textAdded && textAdded !== data && textAdded.toUpperCase() === data) {\n        const range = this.getSelectedRange()\n        this.setSelectedRange([ range[0], range[1] + textAdded.length ])\n        this.responder?.insertString(data)\n        this.setInputSummary({ textAdded: data })\n        return this.setSelectedRange(range)\n      }\n    },\n\n    dragenter(event) {\n      event.preventDefault()\n    },\n\n    dragstart(event) {\n      this.serializeSelectionToDataTransfer(event.dataTransfer)\n      this.draggedRange = this.getSelectedRange()\n      return this.delegate?.inputControllerDidStartDrag?.()\n    },\n\n    dragover(event) {\n      if (this.draggedRange || this.canAcceptDataTransfer(event.dataTransfer)) {\n        event.preventDefault()\n        const draggingPoint = { x: event.clientX, y: event.clientY }\n        if (!objectsAreEqual(draggingPoint, this.draggingPoint)) {\n          this.draggingPoint = draggingPoint\n          return this.delegate?.inputControllerDidReceiveDragOverPoint?.(this.draggingPoint)\n        }\n      }\n    },\n\n    dragend(event) {\n      this.delegate?.inputControllerDidCancelDrag?.()\n      this.draggedRange = null\n      this.draggingPoint = null\n    },\n\n    drop(event) {\n      event.preventDefault()\n      const files = event.dataTransfer?.files\n      const documentJSON = event.dataTransfer.getData(\"application/x-trix-document\")\n\n      const point = { x: event.clientX, y: event.clientY }\n      this.responder?.setLocationRangeFromPointRange(point)\n\n      if (files?.length) {\n        this.attachFiles(files)\n      } else if (this.draggedRange) {\n        this.delegate?.inputControllerWillMoveText()\n        this.responder?.moveTextFromRange(this.draggedRange)\n        this.draggedRange = null\n        this.requestRender()\n      } else if (documentJSON) {\n        const document = Document.fromJSONString(documentJSON)\n        this.responder?.insertDocument(document)\n        this.requestRender()\n      }\n\n      this.draggedRange = null\n      this.draggingPoint = null\n    },\n\n    cut(event) {\n      if (this.responder?.selectionIsExpanded()) {\n        if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n          event.preventDefault()\n        }\n\n        this.delegate?.inputControllerWillCutText()\n        this.deleteInDirection(\"backward\")\n        if (event.defaultPrevented) {\n          return this.requestRender()\n        }\n      }\n    },\n\n    copy(event) {\n      if (this.responder?.selectionIsExpanded()) {\n        if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n          event.preventDefault()\n        }\n      }\n    },\n\n    paste(event) {\n      const clipboard = event.clipboardData || event.testClipboardData\n      const paste = { clipboard }\n\n      if (!clipboard || pasteEventIsCrippledSafariHTMLPaste(event)) {\n        this.getPastedHTMLUsingHiddenElement((html) => {\n          paste.type = \"text/html\"\n          paste.html = html\n          this.delegate?.inputControllerWillPaste(paste)\n          this.responder?.insertHTML(paste.html)\n          this.requestRender()\n          return this.delegate?.inputControllerDidPaste(paste)\n        })\n        return\n      }\n\n      const href = clipboard.getData(\"URL\")\n      const html = clipboard.getData(\"text/html\")\n      const name = clipboard.getData(\"public.url-name\")\n\n      if (href) {\n        let string\n        paste.type = \"text/html\"\n        if (name) {\n          string = squishBreakableWhitespace(name).trim()\n        } else {\n          string = href\n        }\n        paste.html = this.createLinkHTML(href, string)\n        this.delegate?.inputControllerWillPaste(paste)\n        this.setInputSummary({ textAdded: string, didDelete: this.selectionIsExpanded() })\n        this.responder?.insertHTML(paste.html)\n        this.requestRender()\n        this.delegate?.inputControllerDidPaste(paste)\n      } else if (dataTransferIsPlainText(clipboard)) {\n        paste.type = \"text/plain\"\n        paste.string = clipboard.getData(\"text/plain\")\n        this.delegate?.inputControllerWillPaste(paste)\n        this.setInputSummary({ textAdded: paste.string, didDelete: this.selectionIsExpanded() })\n        this.responder?.insertString(paste.string)\n        this.requestRender()\n        this.delegate?.inputControllerDidPaste(paste)\n      } else if (html) {\n        paste.type = \"text/html\"\n        paste.html = html\n        this.delegate?.inputControllerWillPaste(paste)\n        this.responder?.insertHTML(paste.html)\n        this.requestRender()\n        this.delegate?.inputControllerDidPaste(paste)\n      } else if (Array.from(clipboard.types).includes(\"Files\")) {\n        const file = clipboard.items?.[0]?.getAsFile?.()\n        if (file) {\n          const extension = extensionForFile(file)\n          if (!file.name && extension) {\n            file.name = `pasted-file-${++pastedFileCount}.${extension}`\n          }\n          paste.type = \"File\"\n          paste.file = file\n          this.delegate?.inputControllerWillAttachFiles()\n          this.responder?.insertFile(paste.file)\n          this.requestRender()\n          this.delegate?.inputControllerDidPaste(paste)\n        }\n      }\n\n      event.preventDefault()\n    },\n\n    compositionstart(event) {\n      return this.getCompositionInput().start(event.data)\n    },\n\n    compositionupdate(event) {\n      return this.getCompositionInput().update(event.data)\n    },\n\n    compositionend(event) {\n      return this.getCompositionInput().end(event.data)\n    },\n\n    beforeinput(event) {\n      this.inputSummary.didInput = true\n    },\n\n    input(event) {\n      this.inputSummary.didInput = true\n      return event.stopPropagation()\n    },\n  }\n\n  static keys = {\n    backspace(event) {\n      this.delegate?.inputControllerWillPerformTyping()\n      return this.deleteInDirection(\"backward\", event)\n    },\n\n    delete(event) {\n      this.delegate?.inputControllerWillPerformTyping()\n      return this.deleteInDirection(\"forward\", event)\n    },\n\n    return(event) {\n      this.setInputSummary({ preferDocument: true })\n      this.delegate?.inputControllerWillPerformTyping()\n      return this.responder?.insertLineBreak()\n    },\n\n    tab(event) {\n      if (this.responder?.canIncreaseNestingLevel()) {\n        this.responder?.increaseNestingLevel()\n        this.requestRender()\n        event.preventDefault()\n      }\n    },\n\n    left(event) {\n      if (this.selectionIsInCursorTarget()) {\n        event.preventDefault()\n        return this.responder?.moveCursorInDirection(\"backward\")\n      }\n    },\n\n    right(event) {\n      if (this.selectionIsInCursorTarget()) {\n        event.preventDefault()\n        return this.responder?.moveCursorInDirection(\"forward\")\n      }\n    },\n\n    control: {\n      d(event) {\n        this.delegate?.inputControllerWillPerformTyping()\n        return this.deleteInDirection(\"forward\", event)\n      },\n\n      h(event) {\n        this.delegate?.inputControllerWillPerformTyping()\n        return this.deleteInDirection(\"backward\", event)\n      },\n\n      o(event) {\n        event.preventDefault()\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.insertString(\"\\n\", { updatePosition: false })\n        return this.requestRender()\n      },\n    },\n\n    shift: {\n      return(event) {\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.insertString(\"\\n\")\n        this.requestRender()\n        event.preventDefault()\n      },\n\n      tab(event) {\n        if (this.responder?.canDecreaseNestingLevel()) {\n          this.responder?.decreaseNestingLevel()\n          this.requestRender()\n          event.preventDefault()\n        }\n      },\n\n      left(event) {\n        if (this.selectionIsInCursorTarget()) {\n          event.preventDefault()\n          return this.expandSelectionInDirection(\"backward\")\n        }\n      },\n\n      right(event) {\n        if (this.selectionIsInCursorTarget()) {\n          event.preventDefault()\n          return this.expandSelectionInDirection(\"forward\")\n        }\n      },\n    },\n\n    alt: {\n      backspace(event) {\n        this.setInputSummary({ preferDocument: false })\n        return this.delegate?.inputControllerWillPerformTyping()\n      },\n    },\n\n    meta: {\n      backspace(event) {\n        this.setInputSummary({ preferDocument: false })\n        return this.delegate?.inputControllerWillPerformTyping()\n      },\n    },\n  }\n\n  constructor() {\n    super(...arguments)\n    this.resetInputSummary()\n  }\n\n  setInputSummary(summary = {}) {\n    this.inputSummary.eventName = this.eventName\n    for (const key in summary) {\n      const value = summary[key]\n      this.inputSummary[key] = value\n    }\n    return this.inputSummary\n  }\n\n  resetInputSummary() {\n    this.inputSummary = {}\n  }\n\n  reset() {\n    this.resetInputSummary()\n    return selectionChangeObserver.reset()\n  }\n\n  // Mutation observer delegate\n\n  elementDidMutate(mutationSummary) {\n    if (this.isComposing()) {\n      return this.delegate?.inputControllerDidAllowUnhandledInput?.()\n    } else {\n      return this.handleInput(function() {\n        if (this.mutationIsSignificant(mutationSummary)) {\n          if (this.mutationIsExpected(mutationSummary)) {\n            this.requestRender()\n          } else {\n            this.requestReparse()\n          }\n        }\n        return this.reset()\n      })\n    }\n  }\n\n  mutationIsExpected({ textAdded, textDeleted }) {\n    if (this.inputSummary.preferDocument) {\n      return true\n    }\n\n    const mutationAdditionMatchesSummary =\n      textAdded != null ? textAdded === this.inputSummary.textAdded : !this.inputSummary.textAdded\n    const mutationDeletionMatchesSummary =\n      textDeleted != null ? this.inputSummary.didDelete : !this.inputSummary.didDelete\n\n    const unexpectedNewlineAddition = [ \"\\n\", \" \\n\" ].includes(textAdded) && !mutationAdditionMatchesSummary\n    const unexpectedNewlineDeletion = textDeleted === \"\\n\" && !mutationDeletionMatchesSummary\n    const singleUnexpectedNewline =\n      unexpectedNewlineAddition && !unexpectedNewlineDeletion ||\n      unexpectedNewlineDeletion && !unexpectedNewlineAddition\n\n    if (singleUnexpectedNewline) {\n      const range = this.getSelectedRange()\n      if (range) {\n        const offset = unexpectedNewlineAddition ? textAdded.replace(/\\n$/, \"\").length || -1 : textAdded?.length || 1\n        if (this.responder?.positionIsBlockBreak(range[1] + offset)) {\n          return true\n        }\n      }\n    }\n\n    return mutationAdditionMatchesSummary && mutationDeletionMatchesSummary\n  }\n\n  mutationIsSignificant(mutationSummary) {\n    const textChanged = Object.keys(mutationSummary).length > 0\n    const composedEmptyString = this.compositionInput?.getEndData() === \"\"\n    return textChanged || !composedEmptyString\n  }\n\n  // Private\n\n  getCompositionInput() {\n    if (this.isComposing()) {\n      return this.compositionInput\n    } else {\n      this.compositionInput = new CompositionInput(this)\n    }\n  }\n\n  isComposing() {\n    return this.compositionInput && !this.compositionInput.isEnded()\n  }\n\n  deleteInDirection(direction, event) {\n    if (this.responder?.deleteInDirection(direction) === false) {\n      if (event) {\n        event.preventDefault()\n        return this.requestRender()\n      }\n    } else {\n      return this.setInputSummary({ didDelete: true })\n    }\n  }\n\n  serializeSelectionToDataTransfer(dataTransfer) {\n    if (!dataTransferIsWritable(dataTransfer)) return\n    const document = this.responder?.getSelectedDocument().toSerializableDocument()\n\n    dataTransfer.setData(\"application/x-trix-document\", JSON.stringify(document))\n    dataTransfer.setData(\"text/html\", DocumentView.render(document).innerHTML)\n    dataTransfer.setData(\"text/plain\", document.toString().replace(/\\n$/, \"\"))\n    return true\n  }\n\n  canAcceptDataTransfer(dataTransfer) {\n    const types = {}\n    Array.from(dataTransfer?.types || []).forEach((type) => {\n      types[type] = true\n    })\n    return types.Files || types[\"application/x-trix-document\"] || types[\"text/html\"] || types[\"text/plain\"]\n  }\n\n  getPastedHTMLUsingHiddenElement(callback) {\n    const selectedRange = this.getSelectedRange()\n\n    const style = {\n      position: \"absolute\",\n      left: `${window.pageXOffset}px`,\n      top: `${window.pageYOffset}px`,\n      opacity: 0,\n    }\n\n    const element = makeElement({ style, tagName: \"div\", editable: true })\n    document.body.appendChild(element)\n    element.focus()\n\n    return requestAnimationFrame(() => {\n      const html = element.innerHTML\n      removeNode(element)\n      this.setSelectedRange(selectedRange)\n      return callback(html)\n    })\n  }\n}\n\nLevel0InputController.proxyMethod(\"responder?.getSelectedRange\")\nLevel0InputController.proxyMethod(\"responder?.setSelectedRange\")\nLevel0InputController.proxyMethod(\"responder?.expandSelectionInDirection\")\nLevel0InputController.proxyMethod(\"responder?.selectionIsInCursorTarget\")\nLevel0InputController.proxyMethod(\"responder?.selectionIsExpanded\")\n\nconst extensionForFile = (file) => file.type?.match(/\\/(\\w+)$/)?.[1]\n\nconst hasStringCodePointAt = !!\" \".codePointAt?.(0)\n\nconst stringFromKeyEvent = function(event) {\n  if (event.key && hasStringCodePointAt && event.key.codePointAt(0) === event.keyCode) {\n    return event.key\n  } else {\n    let code\n    if (event.which === null) {\n      code = event.keyCode\n    } else if (event.which !== 0 && event.charCode !== 0) {\n      code = event.charCode\n    }\n\n    if (code != null && keyNames[code] !== \"escape\") {\n      return UTF16String.fromCodepoints([ code ]).toString()\n    }\n  }\n}\n\nconst pasteEventIsCrippledSafariHTMLPaste = function(event) {\n  const paste = event.clipboardData\n  if (paste) {\n    if (paste.types.includes(\"text/html\")) {\n      // Answer is yes if there's any possibility of Paste and Match Style in Safari,\n      // which is nearly impossible to detect confidently: https://bugs.webkit.org/show_bug.cgi?id=174165\n      for (const type of paste.types) {\n        const hasPasteboardFlavor = /^CorePasteboardFlavorType/.test(type)\n        const hasReadableDynamicData = /^dyn\\./.test(type) && paste.getData(type)\n        const mightBePasteAndMatchStyle = hasPasteboardFlavor || hasReadableDynamicData\n        if (mightBePasteAndMatchStyle) {\n          return true\n        }\n      }\n      return false\n    } else {\n      const isExternalHTMLPaste = paste.types.includes(\"com.apple.webarchive\")\n      const isExternalRichTextPaste = paste.types.includes(\"com.apple.flat-rtfd\")\n      return isExternalHTMLPaste || isExternalRichTextPaste\n    }\n  }\n}\n\nclass CompositionInput extends BasicObject {\n  constructor(inputController) {\n    super(...arguments)\n    this.inputController = inputController\n    this.responder = this.inputController.responder\n    this.delegate = this.inputController.delegate\n    this.inputSummary = this.inputController.inputSummary\n    this.data = {}\n  }\n\n  start(data) {\n    this.data.start = data\n\n    if (this.isSignificant()) {\n      if (this.inputSummary.eventName === \"keypress\" && this.inputSummary.textAdded) {\n        this.responder?.deleteInDirection(\"left\")\n      }\n\n      if (!this.selectionIsExpanded()) {\n        this.insertPlaceholder()\n        this.requestRender()\n      }\n\n      this.range = this.responder?.getSelectedRange()\n    }\n  }\n\n  update(data) {\n    this.data.update = data\n\n    if (this.isSignificant()) {\n      const range = this.selectPlaceholder()\n      if (range) {\n        this.forgetPlaceholder()\n        this.range = range\n      }\n    }\n  }\n\n  end(data) {\n    this.data.end = data\n\n    if (this.isSignificant()) {\n      this.forgetPlaceholder()\n\n      if (this.canApplyToDocument()) {\n        this.setInputSummary({ preferDocument: true, didInput: false })\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.setSelectedRange(this.range)\n        this.responder?.insertString(this.data.end)\n        return this.responder?.setSelectedRange(this.range[0] + this.data.end.length)\n      } else if (this.data.start != null || this.data.update != null) {\n        this.requestReparse()\n        return this.inputController.reset()\n      }\n    } else {\n      return this.inputController.reset()\n    }\n  }\n\n  getEndData() {\n    return this.data.end\n  }\n\n  isEnded() {\n    return this.getEndData() != null\n  }\n\n  isSignificant() {\n    if (browser.composesExistingText) {\n      return this.inputSummary.didInput\n    } else {\n      return true\n    }\n  }\n\n  // Private\n\n  canApplyToDocument() {\n    return this.data.start?.length === 0 && this.data.end?.length > 0 && this.range\n  }\n}\n\nCompositionInput.proxyMethod(\"inputController.setInputSummary\")\nCompositionInput.proxyMethod(\"inputController.requestRender\")\nCompositionInput.proxyMethod(\"inputController.requestReparse\")\nCompositionInput.proxyMethod(\"responder?.selectionIsExpanded\")\nCompositionInput.proxyMethod(\"responder?.insertPlaceholder\")\nCompositionInput.proxyMethod(\"responder?.selectPlaceholder\")\nCompositionInput.proxyMethod(\"responder?.forgetPlaceholder\")\n", "import { getAllAttributeNames, shouldRenderInmmediatelyToDealWithIOSDictation, squishBreakableWhitespace } from \"trix/core/helpers\"\nimport InputController from \"trix/controllers/input_controller\"\nimport * as config from \"trix/config\"\n\nimport { dataTransferIsMsOfficePaste, dataTransferIsPlainText, keyEventIsKeyboardCommand, objectsAreEqual } from \"trix/core/helpers\"\n\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nexport default class Level2InputController extends InputController {\n  constructor(...args) {\n    super(...args)\n    this.render = this.render.bind(this)\n  }\n\n  static events = {\n    keydown(event) {\n      if (keyEventIsKeyboardCommand(event)) {\n        const command = keyboardCommandFromKeyEvent(event)\n        if (this.delegate?.inputControllerDidReceiveKeyboardCommand(command)) {\n          event.preventDefault()\n        }\n      } else {\n        let name = event.key\n        if (event.altKey) {\n          name += \"+Alt\"\n        }\n        if (event.shiftKey) {\n          name += \"+Shift\"\n        }\n        const handler = this.constructor.keys[name]\n        if (handler) {\n          return this.withEvent(event, handler)\n        }\n      }\n    },\n\n    // Handle paste event to work around beforeinput.insertFromPaste browser bugs.\n    // Safe to remove each condition once fixed upstream.\n    paste(event) {\n      // https://bugs.webkit.org/show_bug.cgi?id=194921\n      let paste\n      const href = event.clipboardData?.getData(\"URL\")\n      if (pasteEventHasFilesOnly(event)) {\n        event.preventDefault()\n        return this.attachFiles(event.clipboardData.files)\n\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=934448\n      } else if (pasteEventHasPlainTextOnly(event)) {\n        event.preventDefault()\n        paste = {\n          type: \"text/plain\",\n          string: event.clipboardData.getData(\"text/plain\"),\n        }\n        this.delegate?.inputControllerWillPaste(paste)\n        this.responder?.insertString(paste.string)\n        this.render()\n        return this.delegate?.inputControllerDidPaste(paste)\n\n        // https://bugs.webkit.org/show_bug.cgi?id=196702\n      } else if (href) {\n        event.preventDefault()\n        paste = {\n          type: \"text/html\",\n          html: this.createLinkHTML(href),\n        }\n        this.delegate?.inputControllerWillPaste(paste)\n        this.responder?.insertHTML(paste.html)\n        this.render()\n        return this.delegate?.inputControllerDidPaste(paste)\n      }\n    },\n\n    beforeinput(event) {\n      const handler = this.constructor.inputTypes[event.inputType]\n\n      const immmediateRender = shouldRenderInmmediatelyToDealWithIOSDictation(event)\n\n      if (handler) {\n        this.withEvent(event, handler)\n\n        if (!immmediateRender) {\n          this.scheduleRender()\n        }\n      }\n\n      if (immmediateRender) {\n        this.render()\n      }\n    },\n\n    input(event) {\n      selectionChangeObserver.reset()\n    },\n\n    dragstart(event) {\n      if (this.responder?.selectionContainsAttachments()) {\n        event.dataTransfer.setData(\"application/x-trix-dragging\", true)\n\n        this.dragging = {\n          range: this.responder?.getSelectedRange(),\n          point: pointFromEvent(event),\n        }\n      }\n    },\n\n    dragenter(event) {\n      if (dragEventHasFiles(event)) {\n        event.preventDefault()\n      }\n    },\n\n    dragover(event) {\n      if (this.dragging) {\n        event.preventDefault()\n        const point = pointFromEvent(event)\n        if (!objectsAreEqual(point, this.dragging.point)) {\n          this.dragging.point = point\n          return this.responder?.setLocationRangeFromPointRange(point)\n        }\n      } else if (dragEventHasFiles(event)) {\n        event.preventDefault()\n      }\n    },\n\n    drop(event) {\n      if (this.dragging) {\n        event.preventDefault()\n        this.delegate?.inputControllerWillMoveText()\n        this.responder?.moveTextFromRange(this.dragging.range)\n        this.dragging = null\n        return this.scheduleRender()\n      } else if (dragEventHasFiles(event)) {\n        event.preventDefault()\n        const point = pointFromEvent(event)\n        this.responder?.setLocationRangeFromPointRange(point)\n        return this.attachFiles(event.dataTransfer.files)\n      }\n    },\n\n    dragend() {\n      if (this.dragging) {\n        this.responder?.setSelectedRange(this.dragging.range)\n        this.dragging = null\n      }\n    },\n\n    compositionend(event) {\n      if (this.composing) {\n        this.composing = false\n        if (!config.browser.recentAndroid) this.scheduleRender()\n      }\n    },\n  }\n\n  static keys = {\n    ArrowLeft() {\n      if (this.responder?.shouldManageMovingCursorInDirection(\"backward\")) {\n        this.event.preventDefault()\n        return this.responder?.moveCursorInDirection(\"backward\")\n      }\n    },\n\n    ArrowRight() {\n      if (this.responder?.shouldManageMovingCursorInDirection(\"forward\")) {\n        this.event.preventDefault()\n        return this.responder?.moveCursorInDirection(\"forward\")\n      }\n    },\n\n    Backspace() {\n      if (this.responder?.shouldManageDeletingInDirection(\"backward\")) {\n        this.event.preventDefault()\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.deleteInDirection(\"backward\")\n        return this.render()\n      }\n    },\n\n    Tab() {\n      if (this.responder?.canIncreaseNestingLevel()) {\n        this.event.preventDefault()\n        this.responder?.increaseNestingLevel()\n        return this.render()\n      }\n    },\n\n    \"Tab+Shift\"() {\n      if (this.responder?.canDecreaseNestingLevel()) {\n        this.event.preventDefault()\n        this.responder?.decreaseNestingLevel()\n        return this.render()\n      }\n    },\n  }\n\n  static inputTypes = {\n    deleteByComposition() {\n      return this.deleteInDirection(\"backward\", { recordUndoEntry: false })\n    },\n\n    deleteByCut() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteByDrag() {\n      this.event.preventDefault()\n      return this.withTargetDOMRange(function() {\n        this.deleteByDragRange = this.responder?.getSelectedRange()\n      })\n    },\n\n    deleteCompositionText() {\n      return this.deleteInDirection(\"backward\", { recordUndoEntry: false })\n    },\n\n    deleteContent() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteContentBackward() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteContentForward() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    deleteEntireSoftLine() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    deleteHardLineBackward() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteHardLineForward() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    deleteSoftLineBackward() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteSoftLineForward() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    deleteWordBackward() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteWordForward() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    formatBackColor() {\n      return this.activateAttributeIfSupported(\"backgroundColor\", this.event.data)\n    },\n\n    formatBold() {\n      return this.toggleAttributeIfSupported(\"bold\")\n    },\n\n    formatFontColor() {\n      return this.activateAttributeIfSupported(\"color\", this.event.data)\n    },\n\n    formatFontName() {\n      return this.activateAttributeIfSupported(\"font\", this.event.data)\n    },\n\n    formatIndent() {\n      if (this.responder?.canIncreaseNestingLevel()) {\n        return this.withTargetDOMRange(function() {\n          return this.responder?.increaseNestingLevel()\n        })\n      }\n    },\n\n    formatItalic() {\n      return this.toggleAttributeIfSupported(\"italic\")\n    },\n\n    formatJustifyCenter() {\n      return this.toggleAttributeIfSupported(\"justifyCenter\")\n    },\n\n    formatJustifyFull() {\n      return this.toggleAttributeIfSupported(\"justifyFull\")\n    },\n\n    formatJustifyLeft() {\n      return this.toggleAttributeIfSupported(\"justifyLeft\")\n    },\n\n    formatJustifyRight() {\n      return this.toggleAttributeIfSupported(\"justifyRight\")\n    },\n\n    formatOutdent() {\n      if (this.responder?.canDecreaseNestingLevel()) {\n        return this.withTargetDOMRange(function() {\n          return this.responder?.decreaseNestingLevel()\n        })\n      }\n    },\n\n    formatRemove() {\n      this.withTargetDOMRange(function() {\n        for (const attributeName in this.responder?.getCurrentAttributes()) {\n          this.responder?.removeCurrentAttribute(attributeName)\n        }\n      })\n    },\n\n    formatSetBlockTextDirection() {\n      return this.activateAttributeIfSupported(\"blockDir\", this.event.data)\n    },\n\n    formatSetInlineTextDirection() {\n      return this.activateAttributeIfSupported(\"textDir\", this.event.data)\n    },\n\n    formatStrikeThrough() {\n      return this.toggleAttributeIfSupported(\"strike\")\n    },\n\n    formatSubscript() {\n      return this.toggleAttributeIfSupported(\"sub\")\n    },\n\n    formatSuperscript() {\n      return this.toggleAttributeIfSupported(\"sup\")\n    },\n\n    formatUnderline() {\n      return this.toggleAttributeIfSupported(\"underline\")\n    },\n\n    historyRedo() {\n      return this.delegate?.inputControllerWillPerformRedo()\n    },\n\n    historyUndo() {\n      return this.delegate?.inputControllerWillPerformUndo()\n    },\n\n    insertCompositionText() {\n      this.composing = true\n      return this.insertString(this.event.data)\n    },\n\n    insertFromComposition() {\n      this.composing = false\n      return this.insertString(this.event.data)\n    },\n\n    insertFromDrop() {\n      const range = this.deleteByDragRange\n      if (range) {\n        this.deleteByDragRange = null\n        this.delegate?.inputControllerWillMoveText()\n        return this.withTargetDOMRange(function() {\n          return this.responder?.moveTextFromRange(range)\n        })\n      }\n    },\n\n    insertFromPaste() {\n      const { dataTransfer } = this.event\n      const paste = { dataTransfer }\n\n      const href = dataTransfer.getData(\"URL\")\n      const html = dataTransfer.getData(\"text/html\")\n\n      if (href) {\n        let string\n        this.event.preventDefault()\n        paste.type = \"text/html\"\n        const name = dataTransfer.getData(\"public.url-name\")\n        if (name) {\n          string = squishBreakableWhitespace(name).trim()\n        } else {\n          string = href\n        }\n        paste.html = this.createLinkHTML(href, string)\n        this.delegate?.inputControllerWillPaste(paste)\n        this.withTargetDOMRange(function() {\n          return this.responder?.insertHTML(paste.html)\n        })\n        this.afterRender = () => {\n          return this.delegate?.inputControllerDidPaste(paste)\n        }\n      } else if (dataTransferIsPlainText(dataTransfer)) {\n        paste.type = \"text/plain\"\n        paste.string = dataTransfer.getData(\"text/plain\")\n        this.delegate?.inputControllerWillPaste(paste)\n        this.withTargetDOMRange(function() {\n          return this.responder?.insertString(paste.string)\n        })\n\n        this.afterRender = () => {\n          return this.delegate?.inputControllerDidPaste(paste)\n        }\n      } else if (processableFilePaste(this.event)) {\n        paste.type = \"File\"\n        paste.file = dataTransfer.files[0]\n        this.delegate?.inputControllerWillPaste(paste)\n        this.withTargetDOMRange(function() {\n          return this.responder?.insertFile(paste.file)\n        })\n\n        this.afterRender = () => {\n          return this.delegate?.inputControllerDidPaste(paste)\n        }\n      } else if (html) {\n        this.event.preventDefault()\n        paste.type = \"text/html\"\n        paste.html = html\n        this.delegate?.inputControllerWillPaste(paste)\n        this.withTargetDOMRange(function() {\n          return this.responder?.insertHTML(paste.html)\n        })\n        this.afterRender = () => {\n          return this.delegate?.inputControllerDidPaste(paste)\n        }\n      }\n    },\n\n    insertFromYank() {\n      return this.insertString(this.event.data)\n    },\n\n    insertLineBreak() {\n      return this.insertString(\"\\n\")\n    },\n\n    insertLink() {\n      return this.activateAttributeIfSupported(\"href\", this.event.data)\n    },\n\n    insertOrderedList() {\n      return this.toggleAttributeIfSupported(\"number\")\n    },\n\n    insertParagraph() {\n      this.delegate?.inputControllerWillPerformTyping()\n      return this.withTargetDOMRange(function() {\n        return this.responder?.insertLineBreak()\n      })\n    },\n\n    insertReplacementText() {\n      const replacement = this.event.dataTransfer.getData(\"text/plain\")\n      const domRange = this.event.getTargetRanges()[0]\n\n      this.withTargetDOMRange(domRange, () => {\n        this.insertString(replacement, { updatePosition: false })\n      })\n    },\n\n    insertText() {\n      return this.insertString(this.event.data || this.event.dataTransfer?.getData(\"text/plain\"))\n    },\n\n    insertTranspose() {\n      return this.insertString(this.event.data)\n    },\n\n    insertUnorderedList() {\n      return this.toggleAttributeIfSupported(\"bullet\")\n    },\n  }\n\n  elementDidMutate() {\n    if (this.scheduledRender) {\n      if (this.composing) {\n        return this.delegate?.inputControllerDidAllowUnhandledInput?.()\n      }\n    } else {\n      return this.reparse()\n    }\n  }\n\n  scheduleRender() {\n    return this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render)\n  }\n\n  render() {\n    cancelAnimationFrame(this.scheduledRender)\n    this.scheduledRender = null\n    if (!this.composing) {\n      this.delegate?.render()\n    }\n    this.afterRender?.()\n    this.afterRender = null\n  }\n\n  reparse() {\n    return this.delegate?.reparse()\n  }\n\n  // Responder helpers\n\n  insertString(string = \"\", options) {\n    this.delegate?.inputControllerWillPerformTyping()\n    return this.withTargetDOMRange(function() {\n      return this.responder?.insertString(string, options)\n    })\n  }\n\n  toggleAttributeIfSupported(attributeName) {\n    if (getAllAttributeNames().includes(attributeName)) {\n      this.delegate?.inputControllerWillPerformFormatting(attributeName)\n      return this.withTargetDOMRange(function() {\n        return this.responder?.toggleCurrentAttribute(attributeName)\n      })\n    }\n  }\n\n  activateAttributeIfSupported(attributeName, value) {\n    if (getAllAttributeNames().includes(attributeName)) {\n      this.delegate?.inputControllerWillPerformFormatting(attributeName)\n      return this.withTargetDOMRange(function() {\n        return this.responder?.setCurrentAttribute(attributeName, value)\n      })\n    }\n  }\n\n  deleteInDirection(direction, { recordUndoEntry } = { recordUndoEntry: true }) {\n    if (recordUndoEntry) {\n      this.delegate?.inputControllerWillPerformTyping()\n    }\n    const perform = () => this.responder?.deleteInDirection(direction)\n    const domRange = this.getTargetDOMRange({ minLength: this.composing ? 1 : 2 })\n    if (domRange) {\n      return this.withTargetDOMRange(domRange, perform)\n    } else {\n      return perform()\n    }\n  }\n\n  // Selection helpers\n\n  withTargetDOMRange(domRange, fn) {\n    if (typeof domRange === \"function\") {\n      fn = domRange\n      domRange = this.getTargetDOMRange()\n    }\n    if (domRange) {\n      return this.responder?.withTargetDOMRange(domRange, fn.bind(this))\n    } else {\n      selectionChangeObserver.reset()\n      return fn.call(this)\n    }\n  }\n\n  getTargetDOMRange({ minLength } = { minLength: 0 }) {\n    const targetRanges = this.event.getTargetRanges?.()\n    if (targetRanges) {\n      if (targetRanges.length) {\n        const domRange = staticRangeToRange(targetRanges[0])\n        if (minLength === 0 || domRange.toString().length >= minLength) {\n          return domRange\n        }\n      }\n    }\n  }\n\n  withEvent(event, fn) {\n    let result\n    this.event = event\n    try {\n      result = fn.call(this)\n    } finally {\n      this.event = null\n    }\n    return result\n  }\n}\n\nconst staticRangeToRange = function(staticRange) {\n  const range = document.createRange()\n  range.setStart(staticRange.startContainer, staticRange.startOffset)\n  range.setEnd(staticRange.endContainer, staticRange.endOffset)\n  return range\n}\n\n// Event helpers\n\nconst dragEventHasFiles = (event) => Array.from(event.dataTransfer?.types || []).includes(\"Files\")\n\nconst processableFilePaste = (event) => {\n  // Paste events that only have files are handled by the paste event handler,\n  // to work around Safari not supporting beforeinput.insertFromPaste for files.\n\n  // MS Office text pastes include a file with a screenshot of the text, but we should\n  // handle them as text pastes.\n  return event.dataTransfer.files?.[0] && !pasteEventHasFilesOnly(event) && !dataTransferIsMsOfficePaste(event)\n}\n\nconst pasteEventHasFilesOnly = function(event) {\n  const clipboard = event.clipboardData\n  if (clipboard) {\n    const fileTypes = Array.from(clipboard.types).filter((type) => type.match(/file/i)) // \"Files\", \"application/x-moz-file\"\n    return fileTypes.length === clipboard.types.length && clipboard.files.length >= 1\n  }\n}\n\nconst pasteEventHasPlainTextOnly = function(event) {\n  const clipboard = event.clipboardData\n  if (clipboard) {\n    return clipboard.types.includes(\"text/plain\") && clipboard.types.length === 1\n  }\n}\n\nconst keyboardCommandFromKeyEvent = function(event) {\n  const command = []\n  if (event.altKey) {\n    command.push(\"alt\")\n  }\n  if (event.shiftKey) {\n    command.push(\"shift\")\n  }\n  command.push(event.key)\n  return command\n}\n\nconst pointFromEvent = (event) => ({\n  x: event.clientX,\n  y: event.clientY,\n})\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport { findClosestElementFromNode, handleEvent, triggerEvent } from \"trix/core/helpers\"\n\nimport DOMPurify from \"dompurify\"\n\nconst attributeButtonSelector = \"[data-trix-attribute]\"\nconst actionButtonSelector = \"[data-trix-action]\"\nconst toolbarButtonSelector = `${attributeButtonSelector}, ${actionButtonSelector}`\nconst dialogSelector = \"[data-trix-dialog]\"\nconst activeDialogSelector = `${dialogSelector}[data-trix-active]`\nconst dialogButtonSelector = `${dialogSelector} [data-trix-method]`\nconst dialogInputSelector = `${dialogSelector} [data-trix-input]`\nconst getInputForDialog = (element, attributeName) => {\n  if (!attributeName) { attributeName = getAttributeName(element) }\n  return element.querySelector(`[data-trix-input][name='${attributeName}']`)\n}\nconst getActionName = (element) => element.getAttribute(\"data-trix-action\")\nconst getAttributeName = (element) => {\n  return element.getAttribute(\"data-trix-attribute\") || element.getAttribute(\"data-trix-dialog-attribute\")\n}\nconst getDialogName = (element) => element.getAttribute(\"data-trix-dialog\")\n\nexport default class ToolbarController extends BasicObject {\n  constructor(element) {\n    super(element)\n    this.didClickActionButton = this.didClickActionButton.bind(this)\n    this.didClickAttributeButton = this.didClickAttributeButton.bind(this)\n    this.didClickDialogButton = this.didClickDialogButton.bind(this)\n    this.didKeyDownDialogInput = this.didKeyDownDialogInput.bind(this)\n    this.element = element\n    this.attributes = {}\n    this.actions = {}\n    this.resetDialogInputs()\n\n    handleEvent(\"mousedown\", {\n      onElement: this.element,\n      matchingSelector: actionButtonSelector,\n      withCallback: this.didClickActionButton,\n    })\n    handleEvent(\"mousedown\", {\n      onElement: this.element,\n      matchingSelector: attributeButtonSelector,\n      withCallback: this.didClickAttributeButton,\n    })\n    handleEvent(\"click\", { onElement: this.element, matchingSelector: toolbarButtonSelector, preventDefault: true })\n    handleEvent(\"click\", {\n      onElement: this.element,\n      matchingSelector: dialogButtonSelector,\n      withCallback: this.didClickDialogButton,\n    })\n    handleEvent(\"keydown\", {\n      onElement: this.element,\n      matchingSelector: dialogInputSelector,\n      withCallback: this.didKeyDownDialogInput,\n    })\n  }\n\n  // Event handlers\n\n  didClickActionButton(event, element) {\n    this.delegate?.toolbarDidClickButton()\n    event.preventDefault()\n    const actionName = getActionName(element)\n\n    if (this.getDialog(actionName)) {\n      return this.toggleDialog(actionName)\n    } else {\n      return this.delegate?.toolbarDidInvokeAction(actionName, element)\n    }\n  }\n\n  didClickAttributeButton(event, element) {\n    this.delegate?.toolbarDidClickButton()\n    event.preventDefault()\n    const attributeName = getAttributeName(element)\n\n    if (this.getDialog(attributeName)) {\n      this.toggleDialog(attributeName)\n    } else {\n      this.delegate?.toolbarDidToggleAttribute(attributeName)\n    }\n\n    return this.refreshAttributeButtons()\n  }\n\n  didClickDialogButton(event, element) {\n    const dialogElement = findClosestElementFromNode(element, { matchingSelector: dialogSelector })\n    const method = element.getAttribute(\"data-trix-method\")\n    return this[method].call(this, dialogElement)\n  }\n\n  didKeyDownDialogInput(event, element) {\n    if (event.keyCode === 13) {\n      // Enter key\n      event.preventDefault()\n      const attribute = element.getAttribute(\"name\")\n      const dialog = this.getDialog(attribute)\n      this.setAttribute(dialog)\n    }\n    if (event.keyCode === 27) {\n      // Escape key\n      event.preventDefault()\n      return this.hideDialog()\n    }\n  }\n\n  // Action buttons\n\n  updateActions(actions) {\n    this.actions = actions\n    return this.refreshActionButtons()\n  }\n\n  refreshActionButtons() {\n    return this.eachActionButton((element, actionName) => {\n      element.disabled = this.actions[actionName] === false\n    })\n  }\n\n  eachActionButton(callback) {\n    return Array.from(this.element.querySelectorAll(actionButtonSelector)).map((element) =>\n      callback(element, getActionName(element))\n    )\n  }\n\n  // Attribute buttons\n\n  updateAttributes(attributes) {\n    this.attributes = attributes\n    return this.refreshAttributeButtons()\n  }\n\n  refreshAttributeButtons() {\n    return this.eachAttributeButton((element, attributeName) => {\n      element.disabled = this.attributes[attributeName] === false\n      if (this.attributes[attributeName] || this.dialogIsVisible(attributeName)) {\n        element.setAttribute(\"data-trix-active\", \"\")\n        return element.classList.add(\"trix-active\")\n      } else {\n        element.removeAttribute(\"data-trix-active\")\n        return element.classList.remove(\"trix-active\")\n      }\n    })\n  }\n\n  eachAttributeButton(callback) {\n    return Array.from(this.element.querySelectorAll(attributeButtonSelector)).map((element) =>\n      callback(element, getAttributeName(element))\n    )\n  }\n\n  applyKeyboardCommand(keys) {\n    const keyString = JSON.stringify(keys.sort())\n    for (const button of Array.from(this.element.querySelectorAll(\"[data-trix-key]\"))) {\n      const buttonKeys = button.getAttribute(\"data-trix-key\").split(\"+\")\n      const buttonKeyString = JSON.stringify(buttonKeys.sort())\n      if (buttonKeyString === keyString) {\n        triggerEvent(\"mousedown\", { onElement: button })\n        return true\n      }\n    }\n    return false\n  }\n\n  // Dialogs\n\n  dialogIsVisible(dialogName) {\n    const element = this.getDialog(dialogName)\n    if (element) {\n      return element.hasAttribute(\"data-trix-active\")\n    }\n  }\n\n  toggleDialog(dialogName) {\n    if (this.dialogIsVisible(dialogName)) {\n      return this.hideDialog()\n    } else {\n      return this.showDialog(dialogName)\n    }\n  }\n\n  showDialog(dialogName) {\n    this.hideDialog()\n    this.delegate?.toolbarWillShowDialog()\n\n    const element = this.getDialog(dialogName)\n    element.setAttribute(\"data-trix-active\", \"\")\n    element.classList.add(\"trix-active\")\n\n    Array.from(element.querySelectorAll(\"input[disabled]\")).forEach((disabledInput) => {\n      disabledInput.removeAttribute(\"disabled\")\n    })\n\n    const attributeName = getAttributeName(element)\n    if (attributeName) {\n      const input = getInputForDialog(element, dialogName)\n      if (input) {\n        input.value = this.attributes[attributeName] || \"\"\n        input.select()\n      }\n    }\n\n    return this.delegate?.toolbarDidShowDialog(dialogName)\n  }\n\n  setAttribute(dialogElement) {\n    const attributeName = getAttributeName(dialogElement)\n    const input = getInputForDialog(dialogElement, attributeName)\n\n    if (input.willValidate) {\n      input.setCustomValidity(\"\")\n      if (!input.checkValidity() || !this.isSafeAttribute(input)) {\n        input.setCustomValidity(\"Invalid value\")\n        input.setAttribute(\"data-trix-validate\", \"\")\n        input.classList.add(\"trix-validate\")\n        return input.focus()\n      }\n    }\n    this.delegate?.toolbarDidUpdateAttribute(attributeName, input.value)\n    return this.hideDialog()\n  }\n\n  isSafeAttribute(input) {\n    if (input.hasAttribute(\"data-trix-validate-href\")) {\n      return DOMPurify.isValidAttribute(\"a\", \"href\", input.value)\n    } else {\n      return true\n    }\n  }\n\n  removeAttribute(dialogElement) {\n    const attributeName = getAttributeName(dialogElement)\n    this.delegate?.toolbarDidRemoveAttribute(attributeName)\n    return this.hideDialog()\n  }\n\n  hideDialog() {\n    const element = this.element.querySelector(activeDialogSelector)\n    if (element) {\n      element.removeAttribute(\"data-trix-active\")\n      element.classList.remove(\"trix-active\")\n      this.resetDialogInputs()\n      return this.delegate?.toolbarDidHideDialog(getDialogName(element))\n    }\n  }\n\n  resetDialogInputs() {\n    Array.from(this.element.querySelectorAll(dialogInputSelector)).forEach((input) => {\n      input.setAttribute(\"disabled\", \"disabled\")\n      input.removeAttribute(\"data-trix-validate\")\n      input.classList.remove(\"trix-validate\")\n    })\n  }\n\n  getDialog(dialogName) {\n    return this.element.querySelector(`[data-trix-dialog=${dialogName}]`)\n  }\n}\n", "/* eslint-disable\n    id-length,\n*/\nimport * as config from \"trix/config\"\n\nimport { serializeToContentType } from \"trix/core/serialization\"\n\nimport Controller from \"trix/controllers/controller\"\nimport Level0InputController from \"trix/controllers/level_0_input_controller\"\nimport Level2InputController from \"trix/controllers/level_2_input_controller\"\nimport CompositionController from \"trix/controllers/composition_controller\"\nimport ToolbarController from \"trix/controllers/toolbar_controller\"\nimport Composition from \"trix/models/composition\"\nimport Editor from \"trix/models/editor\"\nimport AttachmentManager from \"trix/models/attachment_manager\"\nimport SelectionManager from \"trix/models/selection_manager\"\n\nimport { getBlockConfig, objectsAreEqual, rangeIsCollapsed, rangesAreEqual } from \"trix/core/helpers\"\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nconst snapshotsAreEqual = (a, b) => rangesAreEqual(a.selectedRange, b.selectedRange) && a.document.isEqualTo(b.document)\n\nexport default class EditorController extends Controller {\n  static actions = {\n    undo: {\n      test() {\n        return this.editor.canUndo()\n      },\n      perform() {\n        return this.editor.undo()\n      },\n    },\n    redo: {\n      test() {\n        return this.editor.canRedo()\n      },\n      perform() {\n        return this.editor.redo()\n      },\n    },\n    link: {\n      test() {\n        return this.editor.canActivateAttribute(\"href\")\n      },\n    },\n    increaseNestingLevel: {\n      test() {\n        return this.editor.canIncreaseNestingLevel()\n      },\n      perform() {\n        return this.editor.increaseNestingLevel() && this.render()\n      },\n    },\n    decreaseNestingLevel: {\n      test() {\n        return this.editor.canDecreaseNestingLevel()\n      },\n      perform() {\n        return this.editor.decreaseNestingLevel() && this.render()\n      },\n    },\n    attachFiles: {\n      test() {\n        return true\n      },\n      perform() {\n        return config.input.pickFiles(this.editor.insertFiles)\n      },\n    },\n  }\n\n  constructor({ editorElement, document, html }) {\n    super(...arguments)\n    this.editorElement = editorElement\n    this.selectionManager = new SelectionManager(this.editorElement)\n    this.selectionManager.delegate = this\n\n    this.composition = new Composition()\n    this.composition.delegate = this\n\n    this.attachmentManager = new AttachmentManager(this.composition.getAttachments())\n    this.attachmentManager.delegate = this\n\n    this.inputController =\n      config.input.getLevel() === 2\n        ? new Level2InputController(this.editorElement)\n        : new Level0InputController(this.editorElement)\n\n    this.inputController.delegate = this\n    this.inputController.responder = this.composition\n\n    this.compositionController = new CompositionController(this.editorElement, this.composition)\n    this.compositionController.delegate = this\n\n    this.toolbarController = new ToolbarController(this.editorElement.toolbarElement)\n    this.toolbarController.delegate = this\n\n    this.editor = new Editor(this.composition, this.selectionManager, this.editorElement)\n    if (document) {\n      this.editor.loadDocument(document)\n    } else {\n      this.editor.loadHTML(html)\n    }\n  }\n\n  registerSelectionManager() {\n    return selectionChangeObserver.registerSelectionManager(this.selectionManager)\n  }\n\n  unregisterSelectionManager() {\n    return selectionChangeObserver.unregisterSelectionManager(this.selectionManager)\n  }\n\n  render() {\n    return this.compositionController.render()\n  }\n\n  reparse() {\n    return this.composition.replaceHTML(this.editorElement.innerHTML)\n  }\n\n  // Composition delegate\n\n  compositionDidChangeDocument(document) {\n    this.notifyEditorElement(\"document-change\")\n    if (!this.handlingInput) {\n      return this.render()\n    }\n  }\n\n  compositionDidChangeCurrentAttributes(currentAttributes) {\n    this.currentAttributes = currentAttributes\n    this.toolbarController.updateAttributes(this.currentAttributes)\n    this.updateCurrentActions()\n    return this.notifyEditorElement(\"attributes-change\", { attributes: this.currentAttributes })\n  }\n\n  compositionDidPerformInsertionAtRange(range) {\n    if (this.pasting) {\n      this.pastedRange = range\n    }\n  }\n\n  compositionShouldAcceptFile(file) {\n    return this.notifyEditorElement(\"file-accept\", { file })\n  }\n\n  compositionDidAddAttachment(attachment) {\n    const managedAttachment = this.attachmentManager.manageAttachment(attachment)\n    return this.notifyEditorElement(\"attachment-add\", { attachment: managedAttachment })\n  }\n\n  compositionDidEditAttachment(attachment) {\n    this.compositionController.rerenderViewForObject(attachment)\n    const managedAttachment = this.attachmentManager.manageAttachment(attachment)\n    this.notifyEditorElement(\"attachment-edit\", { attachment: managedAttachment })\n    return this.notifyEditorElement(\"change\")\n  }\n\n  compositionDidChangeAttachmentPreviewURL(attachment) {\n    this.compositionController.invalidateViewForObject(attachment)\n    return this.notifyEditorElement(\"change\")\n  }\n\n  compositionDidRemoveAttachment(attachment) {\n    const managedAttachment = this.attachmentManager.unmanageAttachment(attachment)\n    return this.notifyEditorElement(\"attachment-remove\", { attachment: managedAttachment })\n  }\n\n  compositionDidStartEditingAttachment(attachment, options) {\n    this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(attachment)\n    this.compositionController.installAttachmentEditorForAttachment(attachment, options)\n    return this.selectionManager.setLocationRange(this.attachmentLocationRange)\n  }\n\n  compositionDidStopEditingAttachment(attachment) {\n    this.compositionController.uninstallAttachmentEditor()\n    this.attachmentLocationRange = null\n  }\n\n  compositionDidRequestChangingSelectionToLocationRange(locationRange) {\n    if (this.loadingSnapshot && !this.isFocused()) return\n    this.requestedLocationRange = locationRange\n    this.compositionRevisionWhenLocationRangeRequested = this.composition.revision\n    if (!this.handlingInput) {\n      return this.render()\n    }\n  }\n\n  compositionWillLoadSnapshot() {\n    this.loadingSnapshot = true\n  }\n\n  compositionDidLoadSnapshot() {\n    this.compositionController.refreshViewCache()\n    this.render()\n    this.loadingSnapshot = false\n  }\n\n  getSelectionManager() {\n    return this.selectionManager\n  }\n\n  // Attachment manager delegate\n\n  attachmentManagerDidRequestRemovalOfAttachment(attachment) {\n    return this.removeAttachment(attachment)\n  }\n\n  // Document controller delegate\n\n  compositionControllerWillSyncDocumentView() {\n    this.inputController.editorWillSyncDocumentView()\n    this.selectionManager.lock()\n    return this.selectionManager.clearSelection()\n  }\n\n  compositionControllerDidSyncDocumentView() {\n    this.inputController.editorDidSyncDocumentView()\n    this.selectionManager.unlock()\n    this.updateCurrentActions()\n    return this.notifyEditorElement(\"sync\")\n  }\n\n  compositionControllerDidRender() {\n    if (this.requestedLocationRange) {\n      if (this.compositionRevisionWhenLocationRangeRequested === this.composition.revision) {\n        this.selectionManager.setLocationRange(this.requestedLocationRange)\n      }\n      this.requestedLocationRange = null\n      this.compositionRevisionWhenLocationRangeRequested = null\n    }\n\n    if (this.renderedCompositionRevision !== this.composition.revision) {\n      this.runEditorFilters()\n      this.composition.updateCurrentAttributes()\n      this.notifyEditorElement(\"render\")\n    }\n\n    this.renderedCompositionRevision = this.composition.revision\n  }\n\n  compositionControllerDidFocus() {\n    if (this.isFocusedInvisibly()) {\n      this.setLocationRange({ index: 0, offset: 0 })\n    }\n    this.toolbarController.hideDialog()\n    return this.notifyEditorElement(\"focus\")\n  }\n\n  compositionControllerDidBlur() {\n    return this.notifyEditorElement(\"blur\")\n  }\n\n  compositionControllerDidSelectAttachment(attachment, options) {\n    this.toolbarController.hideDialog()\n    return this.composition.editAttachment(attachment, options)\n  }\n\n  compositionControllerDidRequestDeselectingAttachment(attachment) {\n    const locationRange = this.attachmentLocationRange || this.composition.document.getLocationRangeOfAttachment(attachment)\n    return this.selectionManager.setLocationRange(locationRange[1])\n  }\n\n  compositionControllerWillUpdateAttachment(attachment) {\n    return this.editor.recordUndoEntry(\"Edit Attachment\", { context: attachment.id, consolidatable: true })\n  }\n\n  compositionControllerDidRequestRemovalOfAttachment(attachment) {\n    return this.removeAttachment(attachment)\n  }\n\n  // Input controller delegate\n\n  inputControllerWillHandleInput() {\n    this.handlingInput = true\n    this.requestedRender = false\n  }\n\n  inputControllerDidRequestRender() {\n    this.requestedRender = true\n  }\n\n  inputControllerDidHandleInput() {\n    this.handlingInput = false\n    if (this.requestedRender) {\n      this.requestedRender = false\n      return this.render()\n    }\n  }\n\n  inputControllerDidAllowUnhandledInput() {\n    return this.notifyEditorElement(\"change\")\n  }\n\n  inputControllerDidRequestReparse() {\n    return this.reparse()\n  }\n\n  inputControllerWillPerformTyping() {\n    return this.recordTypingUndoEntry()\n  }\n\n  inputControllerWillPerformFormatting(attributeName) {\n    return this.recordFormattingUndoEntry(attributeName)\n  }\n\n  inputControllerWillCutText() {\n    return this.editor.recordUndoEntry(\"Cut\")\n  }\n\n  inputControllerWillPaste(paste) {\n    this.editor.recordUndoEntry(\"Paste\")\n    this.pasting = true\n    return this.notifyEditorElement(\"before-paste\", { paste })\n  }\n\n  inputControllerDidPaste(paste) {\n    paste.range = this.pastedRange\n    this.pastedRange = null\n    this.pasting = null\n    return this.notifyEditorElement(\"paste\", { paste })\n  }\n\n  inputControllerWillMoveText() {\n    return this.editor.recordUndoEntry(\"Move\")\n  }\n\n  inputControllerWillAttachFiles() {\n    return this.editor.recordUndoEntry(\"Drop Files\")\n  }\n\n  inputControllerWillPerformUndo() {\n    return this.editor.undo()\n  }\n\n  inputControllerWillPerformRedo() {\n    return this.editor.redo()\n  }\n\n  inputControllerDidReceiveKeyboardCommand(keys) {\n    return this.toolbarController.applyKeyboardCommand(keys)\n  }\n\n  inputControllerDidStartDrag() {\n    this.locationRangeBeforeDrag = this.selectionManager.getLocationRange()\n  }\n\n  inputControllerDidReceiveDragOverPoint(point) {\n    return this.selectionManager.setLocationRangeFromPointRange(point)\n  }\n\n  inputControllerDidCancelDrag() {\n    this.selectionManager.setLocationRange(this.locationRangeBeforeDrag)\n    this.locationRangeBeforeDrag = null\n  }\n\n  // Selection manager delegate\n\n  locationRangeDidChange(locationRange) {\n    this.composition.updateCurrentAttributes()\n    this.updateCurrentActions()\n    if (this.attachmentLocationRange && !rangesAreEqual(this.attachmentLocationRange, locationRange)) {\n      this.composition.stopEditingAttachment()\n    }\n    return this.notifyEditorElement(\"selection-change\")\n  }\n\n  // Toolbar controller delegate\n\n  toolbarDidClickButton() {\n    if (!this.getLocationRange()) {\n      return this.setLocationRange({ index: 0, offset: 0 })\n    }\n  }\n\n  toolbarDidInvokeAction(actionName, invokingElement) {\n    return this.invokeAction(actionName, invokingElement)\n  }\n\n  toolbarDidToggleAttribute(attributeName) {\n    this.recordFormattingUndoEntry(attributeName)\n    this.composition.toggleCurrentAttribute(attributeName)\n    this.render()\n    if (!this.selectionFrozen) {\n      return this.editorElement.focus()\n    }\n  }\n\n  toolbarDidUpdateAttribute(attributeName, value) {\n    this.recordFormattingUndoEntry(attributeName)\n    this.composition.setCurrentAttribute(attributeName, value)\n    this.render()\n    if (!this.selectionFrozen) {\n      return this.editorElement.focus()\n    }\n  }\n\n  toolbarDidRemoveAttribute(attributeName) {\n    this.recordFormattingUndoEntry(attributeName)\n    this.composition.removeCurrentAttribute(attributeName)\n    this.render()\n    if (!this.selectionFrozen) {\n      return this.editorElement.focus()\n    }\n  }\n\n  toolbarWillShowDialog(dialogElement) {\n    this.composition.expandSelectionForEditing()\n    return this.freezeSelection()\n  }\n\n  toolbarDidShowDialog(dialogName) {\n    return this.notifyEditorElement(\"toolbar-dialog-show\", { dialogName })\n  }\n\n  toolbarDidHideDialog(dialogName) {\n    this.thawSelection()\n    this.editorElement.focus()\n    return this.notifyEditorElement(\"toolbar-dialog-hide\", { dialogName })\n  }\n\n  // Selection\n\n  freezeSelection() {\n    if (!this.selectionFrozen) {\n      this.selectionManager.lock()\n      this.composition.freezeSelection()\n      this.selectionFrozen = true\n      return this.render()\n    }\n  }\n\n  thawSelection() {\n    if (this.selectionFrozen) {\n      this.composition.thawSelection()\n      this.selectionManager.unlock()\n      this.selectionFrozen = false\n      return this.render()\n    }\n  }\n\n  canInvokeAction(actionName) {\n    if (this.actionIsExternal(actionName)) {\n      return true\n    } else {\n      return !!this.actions[actionName]?.test?.call(this)\n    }\n  }\n\n  invokeAction(actionName, invokingElement) {\n    if (this.actionIsExternal(actionName)) {\n      return this.notifyEditorElement(\"action-invoke\", { actionName, invokingElement })\n    } else {\n      return this.actions[actionName]?.perform?.call(this)\n    }\n  }\n\n  actionIsExternal(actionName) {\n    return /^x-./.test(actionName)\n  }\n\n  getCurrentActions() {\n    const result = {}\n    for (const actionName in this.actions) {\n      result[actionName] = this.canInvokeAction(actionName)\n    }\n    return result\n  }\n\n  updateCurrentActions() {\n    const currentActions = this.getCurrentActions()\n    if (!objectsAreEqual(currentActions, this.currentActions)) {\n      this.currentActions = currentActions\n      this.toolbarController.updateActions(this.currentActions)\n      return this.notifyEditorElement(\"actions-change\", { actions: this.currentActions })\n    }\n  }\n\n  // Editor filters\n\n  runEditorFilters() {\n    let snapshot = this.composition.getSnapshot()\n\n    Array.from(this.editor.filters).forEach((filter) => {\n      const { document, selectedRange } = snapshot\n      snapshot = filter.call(this.editor, snapshot) || {}\n      if (!snapshot.document) {\n        snapshot.document = document\n      }\n      if (!snapshot.selectedRange) {\n        snapshot.selectedRange = selectedRange\n      }\n    })\n\n    if (!snapshotsAreEqual(snapshot, this.composition.getSnapshot())) {\n      return this.composition.loadSnapshot(snapshot)\n    }\n  }\n\n  // Private\n\n  updateInputElement() {\n    const element = this.compositionController.getSerializableElement()\n    const value = serializeToContentType(element, \"text/html\")\n    return this.editorElement.setFormValue(value)\n  }\n\n  notifyEditorElement(message, data) {\n    switch (message) {\n      case \"document-change\":\n        this.documentChangedSinceLastRender = true\n        break\n      case \"render\":\n        if (this.documentChangedSinceLastRender) {\n          this.documentChangedSinceLastRender = false\n          this.notifyEditorElement(\"change\")\n        }\n        break\n      case \"change\":\n      case \"attachment-add\":\n      case \"attachment-edit\":\n      case \"attachment-remove\":\n        this.updateInputElement()\n        break\n    }\n\n    return this.editorElement.notify(message, data)\n  }\n\n  removeAttachment(attachment) {\n    this.editor.recordUndoEntry(\"Delete Attachment\")\n    this.composition.removeAttachment(attachment)\n    return this.render()\n  }\n\n  recordFormattingUndoEntry(attributeName) {\n    const blockConfig = getBlockConfig(attributeName)\n    const locationRange = this.selectionManager.getLocationRange()\n    if (blockConfig || !rangeIsCollapsed(locationRange)) {\n      return this.editor.recordUndoEntry(\"Formatting\", { context: this.getUndoContext(), consolidatable: true })\n    }\n  }\n\n  recordTypingUndoEntry() {\n    return this.editor.recordUndoEntry(\"Typing\", {\n      context: this.getUndoContext(this.currentAttributes),\n      consolidatable: true,\n    })\n  }\n\n  getUndoContext(...context) {\n    return [ this.getLocationContext(), this.getTimeContext(), ...Array.from(context) ]\n  }\n\n  getLocationContext() {\n    const locationRange = this.selectionManager.getLocationRange()\n    if (rangeIsCollapsed(locationRange)) {\n      return locationRange[0].index\n    } else {\n      return locationRange\n    }\n  }\n\n  getTimeContext() {\n    if (config.undo.interval > 0) {\n      return Math.floor(new Date().getTime() / config.undo.interval)\n    } else {\n      return 0\n    }\n  }\n\n  isFocused() {\n    return this.editorElement === this.editorElement.ownerDocument?.activeElement\n  }\n\n  // Detect \"Cursor disappears sporadically\" Firefox bug.\n  // - https://bugzilla.mozilla.org/show_bug.cgi?id=226301\n  isFocusedInvisibly() {\n    return this.isFocused() && !this.getLocationRange()\n  }\n\n  get actions() {\n    return this.constructor.actions\n  }\n}\n\nEditorController.proxyMethod(\"getSelectionManager().setLocationRange\")\nEditorController.proxyMethod(\"getSelectionManager().getLocationRange\")\n", "import * as config from \"trix/config\"\n\nimport { installDefaultCSSForTagName } from \"trix/core/helpers\"\n\ninstallDefaultCSSForTagName(\"trix-toolbar\", `\\\n%t {\n  display: block;\n}\n\n%t {\n  white-space: nowrap;\n}\n\n%t [data-trix-dialog] {\n  display: none;\n}\n\n%t [data-trix-dialog][data-trix-active] {\n  display: block;\n}\n\n%t [data-trix-dialog] [data-trix-validate]:invalid {\n  background-color: #ffdddd;\n}`)\n\nexport default class TrixToolbarElement extends HTMLElement {\n\n  // Element lifecycle\n\n  connectedCallback() {\n    if (this.innerHTML === \"\") {\n      this.innerHTML = config.toolbar.getDefaultHTML()\n    }\n  }\n}\n", "import * as config from \"trix/config\"\n\nimport {\n  findClosestElementFromNode,\n  handleEvent,\n  handleEventOnce,\n  installDefaultCSSForTagName,\n  makeElement,\n  triggerEvent,\n} from \"trix/core/helpers\"\n\nimport { attachmentSelector } from \"trix/config/attachments\"\nimport EditorController from \"trix/controllers/editor_controller\"\nimport \"trix/elements/trix_toolbar_element\"\n\nlet id = 0\n\n// Contenteditable support helpers\n\nconst autofocus = function(element) {\n  if (!document.querySelector(\":focus\")) {\n    if (element.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === element) {\n      return element.focus()\n    }\n  }\n}\n\nconst makeEditable = function(element) {\n  if (element.hasAttribute(\"contenteditable\")) {\n    return\n  }\n  element.setAttribute(\"contenteditable\", \"\")\n  return handleEventOnce(\"focus\", {\n    onElement: element,\n    withCallback() {\n      return configureContentEditable(element)\n    },\n  })\n}\n\nconst configureContentEditable = function(element) {\n  disableObjectResizing(element)\n  return setDefaultParagraphSeparator(element)\n}\n\nconst disableObjectResizing = function(element) {\n  if (document.queryCommandSupported?.(\"enableObjectResizing\")) {\n    document.execCommand(\"enableObjectResizing\", false, false)\n    return handleEvent(\"mscontrolselect\", { onElement: element, preventDefault: true })\n  }\n}\n\nconst setDefaultParagraphSeparator = function(element) {\n  if (document.queryCommandSupported?.(\"DefaultParagraphSeparator\")) {\n    const { tagName } = config.blockAttributes.default\n    if ([ \"div\", \"p\" ].includes(tagName)) {\n      return document.execCommand(\"DefaultParagraphSeparator\", false, tagName)\n    }\n  }\n}\n\n// Accessibility helpers\n\nconst addAccessibilityRole = function(element) {\n  if (element.hasAttribute(\"role\")) {\n    return\n  }\n  return element.setAttribute(\"role\", \"textbox\")\n}\n\nconst ensureAriaLabel = function(element) {\n  if (element.hasAttribute(\"aria-label\") || element.hasAttribute(\"aria-labelledby\")) {\n    return\n  }\n\n  const update = function() {\n    const texts = Array.from(element.labels).map((label) => {\n      if (!label.contains(element)) return label.textContent\n    }).filter(text => text)\n\n    const text = texts.join(\" \")\n    if (text) {\n      return element.setAttribute(\"aria-label\", text)\n    } else {\n      return element.removeAttribute(\"aria-label\")\n    }\n  }\n  update()\n  return handleEvent(\"focus\", { onElement: element, withCallback: update })\n}\n\n// Style\n\nconst cursorTargetStyles = (function() {\n  if (config.browser.forcesObjectResizing) {\n    return {\n      display: \"inline\",\n      width: \"auto\",\n    }\n  } else {\n    return {\n      display: \"inline-block\",\n      width: \"1px\",\n    }\n  }\n})()\n\ninstallDefaultCSSForTagName(\"trix-editor\", `\\\n%t {\n    display: block;\n}\n\n%t:empty::before {\n    content: attr(placeholder);\n    color: graytext;\n    cursor: text;\n    pointer-events: none;\n    white-space: pre-line;\n}\n\n%t a[contenteditable=false] {\n    cursor: text;\n}\n\n%t img {\n    max-width: 100%;\n    height: auto;\n}\n\n%t ${attachmentSelector} figcaption textarea {\n    resize: none;\n}\n\n%t ${attachmentSelector} figcaption textarea.trix-autoresize-clone {\n    position: absolute;\n    left: -9999px;\n    max-height: 0px;\n}\n\n%t ${attachmentSelector} figcaption[data-trix-placeholder]:empty::before {\n    content: attr(data-trix-placeholder);\n    color: graytext;\n}\n\n%t [data-trix-cursor-target] {\n    display: ${cursorTargetStyles.display} !important;\n    width: ${cursorTargetStyles.width} !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    border: none !important;\n}\n\n%t [data-trix-cursor-target=left] {\n    vertical-align: top !important;\n    margin-left: -1px !important;\n}\n\n%t [data-trix-cursor-target=right] {\n    vertical-align: bottom !important;\n    margin-right: -1px !important;\n}`)\n\nclass ElementInternalsDelegate {\n  #internals\n\n  constructor(element) {\n    this.element = element\n    this.#internals = element.attachInternals()\n  }\n\n  connectedCallback() {\n    this.#validate()\n  }\n\n  disconnectedCallback() {\n  }\n\n  get labels() {\n    return this.#internals.labels\n  }\n\n  get disabled() {\n    return this.element.inputElement?.disabled\n  }\n\n  set disabled(value) {\n    this.element.toggleAttribute(\"disabled\", value)\n  }\n\n  get required() {\n    return this.element.hasAttribute(\"required\")\n  }\n\n  set required(value) {\n    this.element.toggleAttribute(\"required\", value)\n    this.#validate()\n  }\n\n  get validity() {\n    return this.#internals.validity\n  }\n\n  get validationMessage() {\n    return this.#internals.validationMessage\n  }\n\n  get willValidate() {\n    return this.#internals.willValidate\n  }\n\n  setFormValue(value) {\n    this.#validate()\n  }\n\n  checkValidity() {\n    return this.#internals.checkValidity()\n  }\n\n  reportValidity() {\n    return this.#internals.reportValidity()\n  }\n\n  setCustomValidity(validationMessage) {\n    this.#validate(validationMessage)\n  }\n\n  #validate(customValidationMessage = \"\") {\n    const { required, value } = this.element\n    const valueMissing = required && !value\n    const customError = !!customValidationMessage\n    const input = makeElement(\"input\", { required })\n    const validationMessage = customValidationMessage || input.validationMessage\n\n    this.#internals.setValidity({ valueMissing, customError }, validationMessage)\n  }\n}\n\nclass LegacyDelegate {\n  #focusHandler\n\n  constructor(element) {\n    this.element = element\n  }\n\n  connectedCallback() {\n    this.#focusHandler = ensureAriaLabel(this.element)\n    window.addEventListener(\"reset\", this.#resetBubbled, false)\n    window.addEventListener(\"click\", this.#clickBubbled, false)\n  }\n\n  disconnectedCallback() {\n    this.#focusHandler?.destroy()\n    window.removeEventListener(\"reset\", this.#resetBubbled, false)\n    window.removeEventListener(\"click\", this.#clickBubbled, false)\n  }\n\n  get labels() {\n    const labels = []\n    if (this.element.id && this.element.ownerDocument) {\n      labels.push(...Array.from(this.element.ownerDocument.querySelectorAll(`label[for='${this.element.id}']`) || []))\n    }\n\n    const label = findClosestElementFromNode(this.element, { matchingSelector: \"label\" })\n    if (label) {\n      if ([ this.element, null ].includes(label.control)) {\n        labels.push(label)\n      }\n    }\n\n    return labels\n  }\n\n  get disabled() {\n    console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\")\n\n    return false\n  }\n\n  set disabled(value) {\n    console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\")\n  }\n\n  get required() {\n    console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\")\n\n    return false\n  }\n\n  set required(value) {\n    console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\")\n  }\n\n  get validity() {\n    console.warn(\"This browser does not support the validity property for trix-editor elements.\")\n    return null\n  }\n\n  get validationMessage() {\n    console.warn(\"This browser does not support the validationMessage property for trix-editor elements.\")\n\n    return \"\"\n  }\n\n  get willValidate() {\n    console.warn(\"This browser does not support the willValidate property for trix-editor elements.\")\n\n    return false\n  }\n\n  setFormValue(value) {\n  }\n\n  checkValidity() {\n    console.warn(\"This browser does not support checkValidity() for trix-editor elements.\")\n\n    return true\n  }\n\n  reportValidity() {\n    console.warn(\"This browser does not support reportValidity() for trix-editor elements.\")\n\n    return true\n  }\n\n  setCustomValidity(validationMessage) {\n    console.warn(\"This browser does not support setCustomValidity(validationMessage) for trix-editor elements.\")\n  }\n\n  #resetBubbled = (event) => {\n    if (event.defaultPrevented) return\n    if (event.target !== this.element.form) return\n    this.element.reset()\n  }\n\n  #clickBubbled = (event) => {\n    if (event.defaultPrevented) return\n    if (this.element.contains(event.target)) return\n\n    const label = findClosestElementFromNode(event.target, { matchingSelector: \"label\" })\n    if (!label) return\n\n    if (!Array.from(this.labels).includes(label)) return\n\n    this.element.focus()\n  }\n}\n\nexport default class TrixEditorElement extends HTMLElement {\n  static formAssociated = \"ElementInternals\" in window\n\n  static observedAttributes = [ \"connected\" ]\n\n  #delegate\n\n  constructor() {\n    super()\n    this.#delegate = this.constructor.formAssociated ?\n      new ElementInternalsDelegate(this) :\n      new LegacyDelegate(this)\n  }\n\n  // Properties\n\n  get trixId() {\n    if (this.hasAttribute(\"trix-id\")) {\n      return this.getAttribute(\"trix-id\")\n    } else {\n      this.setAttribute(\"trix-id\", ++id)\n      return this.trixId\n    }\n  }\n\n  get labels() {\n    return this.#delegate.labels\n  }\n\n  get disabled() {\n    return this.#delegate.disabled\n  }\n\n  set disabled(value) {\n    this.#delegate.disabled = value\n  }\n\n  get required() {\n    return this.#delegate.required\n  }\n\n  set required(value) {\n    this.#delegate.required = value\n  }\n\n  get validity() {\n    return this.#delegate.validity\n  }\n\n  get validationMessage() {\n    return this.#delegate.validationMessage\n  }\n\n  get willValidate() {\n    return this.#delegate.willValidate\n  }\n\n  get type() {\n    return this.localName\n  }\n\n  get toolbarElement() {\n    if (this.hasAttribute(\"toolbar\")) {\n      return this.ownerDocument?.getElementById(this.getAttribute(\"toolbar\"))\n    } else if (this.parentNode) {\n      const toolbarId = `trix-toolbar-${this.trixId}`\n      this.setAttribute(\"toolbar\", toolbarId)\n      this.internalToolbar = makeElement(\"trix-toolbar\", { id: toolbarId })\n      this.parentNode.insertBefore(this.internalToolbar, this)\n      return this.internalToolbar\n    } else {\n      return undefined\n    }\n  }\n\n  get form() {\n    return this.inputElement?.form\n  }\n\n  get inputElement() {\n    if (this.hasAttribute(\"input\")) {\n      return this.ownerDocument?.getElementById(this.getAttribute(\"input\"))\n    } else if (this.parentNode) {\n      const inputId = `trix-input-${this.trixId}`\n      this.setAttribute(\"input\", inputId)\n      const element = makeElement(\"input\", { type: \"hidden\", id: inputId })\n      this.parentNode.insertBefore(element, this.nextElementSibling)\n      return element\n    } else {\n      return undefined\n    }\n  }\n\n  get editor() {\n    return this.editorController?.editor\n  }\n\n  get name() {\n    return this.inputElement?.name\n  }\n\n  get value() {\n    return this.inputElement?.value\n  }\n\n  set value(defaultValue) {\n    this.defaultValue = defaultValue\n    this.editor?.loadHTML(this.defaultValue)\n  }\n\n  // Element callbacks\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (name === \"connected\" && this.isConnected && oldValue != null && oldValue !== newValue) {\n      requestAnimationFrame(() => this.reconnect())\n    }\n  }\n\n  // Controller delegate methods\n\n  notify(message, data) {\n    if (this.editorController) {\n      return triggerEvent(`trix-${message}`, { onElement: this, attributes: data })\n    }\n  }\n\n  setFormValue(value) {\n    if (this.inputElement) {\n      this.inputElement.value = value\n      this.#delegate.setFormValue(value)\n    }\n  }\n\n  // Element lifecycle\n\n  connectedCallback() {\n    if (!this.hasAttribute(\"data-trix-internal\")) {\n      makeEditable(this)\n      addAccessibilityRole(this)\n\n      if (!this.editorController) {\n        triggerEvent(\"trix-before-initialize\", { onElement: this })\n        this.editorController = new EditorController({\n          editorElement: this,\n          html: this.defaultValue = this.value,\n        })\n        requestAnimationFrame(() => triggerEvent(\"trix-initialize\", { onElement: this }))\n      }\n      this.editorController.registerSelectionManager()\n      this.#delegate.connectedCallback()\n\n      this.toggleAttribute(\"connected\", true)\n      autofocus(this)\n    }\n  }\n\n  disconnectedCallback() {\n    this.editorController?.unregisterSelectionManager()\n    this.#delegate.disconnectedCallback()\n    this.toggleAttribute(\"connected\", false)\n  }\n\n  reconnect() {\n    this.removeInternalToolbar()\n    this.disconnectedCallback()\n    this.connectedCallback()\n  }\n\n  removeInternalToolbar() {\n    this.internalToolbar?.remove()\n    this.internalToolbar = null\n  }\n\n  // Form support\n\n  checkValidity() {\n    return this.#delegate.checkValidity()\n  }\n\n  reportValidity() {\n    return this.#delegate.reportValidity()\n  }\n\n  setCustomValidity(validationMessage) {\n    this.#delegate.setCustomValidity(validationMessage)\n  }\n\n  formDisabledCallback(disabled) {\n    if (this.inputElement) {\n      this.inputElement.disabled = disabled\n    }\n    this.toggleAttribute(\"contenteditable\", !disabled)\n  }\n\n  formResetCallback() {\n    this.reset()\n  }\n\n  reset() {\n    this.value = this.defaultValue\n  }\n}\n", "import { version } from \"../../package.json\"\n\nimport * as config from \"trix/config\"\nimport * as core from \"trix/core\"\nimport * as models from \"trix/models\"\nimport * as views from \"trix/views\"\nimport * as controllers from \"trix/controllers\"\nimport * as observers from \"trix/observers\"\nimport * as operations from \"trix/operations\"\nimport * as elements from \"trix/elements\"\nimport * as filters from \"trix/filters\"\n\nconst Trix = {\n  VERSION: version,\n  config,\n  core,\n  models,\n  views,\n  controllers,\n  observers,\n  operations,\n  elements,\n  filters\n}\n\n// Expose models under the Trix constant for compatibility with v1\nObject.assign(Trix, models)\n\nfunction start() {\n  if (!customElements.get(\"trix-toolbar\")) {\n    customElements.define(\"trix-toolbar\", elements.TrixToolbarElement)\n  }\n\n  if (!customElements.get(\"trix-editor\")) {\n    customElements.define(\"trix-editor\", elements.TrixEditorElement)\n  }\n}\n\nwindow.Trix = Trix\nsetTimeout(start, 0)\n\nexport default Trix\n", "var sparkMd5 = {\n  exports: {}\n};\n\n(function(module, exports) {\n  (function(factory) {\n    {\n      module.exports = factory();\n    }\n  })((function(undefined$1) {\n    var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n    function md5cycle(x, k) {\n      var a = x[0], b = x[1], c = x[2], d = x[3];\n      a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[10] - 42063 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b ^ c ^ d) + k[5] - 378558 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      x[0] = a + x[0] | 0;\n      x[1] = b + x[1] | 0;\n      x[2] = c + x[2] | 0;\n      x[3] = d + x[3] | 0;\n    }\n    function md5blk(s) {\n      var md5blks = [], i;\n      for (i = 0; i < 64; i += 4) {\n        md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n      }\n      return md5blks;\n    }\n    function md5blk_array(a) {\n      var md5blks = [], i;\n      for (i = 0; i < 64; i += 4) {\n        md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n      }\n      return md5blks;\n    }\n    function md51(s) {\n      var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n      for (i = 64; i <= n; i += 64) {\n        md5cycle(state, md5blk(s.substring(i - 64, i)));\n      }\n      s = s.substring(i - 64);\n      length = s.length;\n      tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n      }\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(state, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = n * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(state, tail);\n      return state;\n    }\n    function md51_array(a) {\n      var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n      for (i = 64; i <= n; i += 64) {\n        md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n      }\n      a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n      length = a.length;\n      tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= a[i] << (i % 4 << 3);\n      }\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(state, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = n * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(state, tail);\n      return state;\n    }\n    function rhex(n) {\n      var s = \"\", j;\n      for (j = 0; j < 4; j += 1) {\n        s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n      }\n      return s;\n    }\n    function hex(x) {\n      var i;\n      for (i = 0; i < x.length; i += 1) {\n        x[i] = rhex(x[i]);\n      }\n      return x.join(\"\");\n    }\n    if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n    if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n      (function() {\n        function clamp(val, length) {\n          val = val | 0 || 0;\n          if (val < 0) {\n            return Math.max(val + length, 0);\n          }\n          return Math.min(val, length);\n        }\n        ArrayBuffer.prototype.slice = function(from, to) {\n          var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n          if (to !== undefined$1) {\n            end = clamp(to, length);\n          }\n          if (begin > end) {\n            return new ArrayBuffer(0);\n          }\n          num = end - begin;\n          target = new ArrayBuffer(num);\n          targetArray = new Uint8Array(target);\n          sourceArray = new Uint8Array(this, begin, num);\n          targetArray.set(sourceArray);\n          return target;\n        };\n      })();\n    }\n    function toUtf8(str) {\n      if (/[\\u0080-\\uFFFF]/.test(str)) {\n        str = unescape(encodeURIComponent(str));\n      }\n      return str;\n    }\n    function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n      var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n      for (i = 0; i < length; i += 1) {\n        arr[i] = str.charCodeAt(i);\n      }\n      return returnUInt8Array ? arr : buff;\n    }\n    function arrayBuffer2Utf8Str(buff) {\n      return String.fromCharCode.apply(null, new Uint8Array(buff));\n    }\n    function concatenateArrayBuffers(first, second, returnUInt8Array) {\n      var result = new Uint8Array(first.byteLength + second.byteLength);\n      result.set(new Uint8Array(first));\n      result.set(new Uint8Array(second), first.byteLength);\n      return returnUInt8Array ? result : result.buffer;\n    }\n    function hexToBinaryString(hex) {\n      var bytes = [], length = hex.length, x;\n      for (x = 0; x < length - 1; x += 2) {\n        bytes.push(parseInt(hex.substr(x, 2), 16));\n      }\n      return String.fromCharCode.apply(String, bytes);\n    }\n    function SparkMD5() {\n      this.reset();\n    }\n    SparkMD5.prototype.append = function(str) {\n      this.appendBinary(toUtf8(str));\n      return this;\n    };\n    SparkMD5.prototype.appendBinary = function(contents) {\n      this._buff += contents;\n      this._length += contents.length;\n      var length = this._buff.length, i;\n      for (i = 64; i <= length; i += 64) {\n        md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n      }\n      this._buff = this._buff.substring(i - 64);\n      return this;\n    };\n    SparkMD5.prototype.end = function(raw) {\n      var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n      }\n      this._finish(tail, length);\n      ret = hex(this._hash);\n      if (raw) {\n        ret = hexToBinaryString(ret);\n      }\n      this.reset();\n      return ret;\n    };\n    SparkMD5.prototype.reset = function() {\n      this._buff = \"\";\n      this._length = 0;\n      this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n      return this;\n    };\n    SparkMD5.prototype.getState = function() {\n      return {\n        buff: this._buff,\n        length: this._length,\n        hash: this._hash.slice()\n      };\n    };\n    SparkMD5.prototype.setState = function(state) {\n      this._buff = state.buff;\n      this._length = state.length;\n      this._hash = state.hash;\n      return this;\n    };\n    SparkMD5.prototype.destroy = function() {\n      delete this._hash;\n      delete this._buff;\n      delete this._length;\n    };\n    SparkMD5.prototype._finish = function(tail, length) {\n      var i = length, tmp, lo, hi;\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(this._hash, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = this._length * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(this._hash, tail);\n    };\n    SparkMD5.hash = function(str, raw) {\n      return SparkMD5.hashBinary(toUtf8(str), raw);\n    };\n    SparkMD5.hashBinary = function(content, raw) {\n      var hash = md51(content), ret = hex(hash);\n      return raw ? hexToBinaryString(ret) : ret;\n    };\n    SparkMD5.ArrayBuffer = function() {\n      this.reset();\n    };\n    SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n      var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n      this._length += arr.byteLength;\n      for (i = 64; i <= length; i += 64) {\n        md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n      }\n      this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n      return this;\n    };\n    SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n      var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= buff[i] << (i % 4 << 3);\n      }\n      this._finish(tail, length);\n      ret = hex(this._hash);\n      if (raw) {\n        ret = hexToBinaryString(ret);\n      }\n      this.reset();\n      return ret;\n    };\n    SparkMD5.ArrayBuffer.prototype.reset = function() {\n      this._buff = new Uint8Array(0);\n      this._length = 0;\n      this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n      return this;\n    };\n    SparkMD5.ArrayBuffer.prototype.getState = function() {\n      var state = SparkMD5.prototype.getState.call(this);\n      state.buff = arrayBuffer2Utf8Str(state.buff);\n      return state;\n    };\n    SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n      state.buff = utf8Str2ArrayBuffer(state.buff, true);\n      return SparkMD5.prototype.setState.call(this, state);\n    };\n    SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n    SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n    SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n      var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n      return raw ? hexToBinaryString(ret) : ret;\n    };\n    return SparkMD5;\n  }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n  static create(file, callback) {\n    const instance = new FileChecksum(file);\n    instance.create(callback);\n  }\n  constructor(file) {\n    this.file = file;\n    this.chunkSize = 2097152;\n    this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n    this.chunkIndex = 0;\n  }\n  create(callback) {\n    this.callback = callback;\n    this.md5Buffer = new SparkMD5.ArrayBuffer;\n    this.fileReader = new FileReader;\n    this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n    this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n    this.readNextChunk();\n  }\n  fileReaderDidLoad(event) {\n    this.md5Buffer.append(event.target.result);\n    if (!this.readNextChunk()) {\n      const binaryDigest = this.md5Buffer.end(true);\n      const base64digest = btoa(binaryDigest);\n      this.callback(null, base64digest);\n    }\n  }\n  fileReaderDidError(event) {\n    this.callback(`Error reading ${this.file.name}`);\n  }\n  readNextChunk() {\n    if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n      const start = this.chunkIndex * this.chunkSize;\n      const end = Math.min(start + this.chunkSize, this.file.size);\n      const bytes = fileSlice.call(this.file, start, end);\n      this.fileReader.readAsArrayBuffer(bytes);\n      this.chunkIndex++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n\nfunction getMetaValue(name) {\n  const element = findElement(document.head, `meta[name=\"${name}\"]`);\n  if (element) {\n    return element.getAttribute(\"content\");\n  }\n}\n\nfunction findElements(root, selector) {\n  if (typeof root == \"string\") {\n    selector = root;\n    root = document;\n  }\n  const elements = root.querySelectorAll(selector);\n  return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n  if (typeof root == \"string\") {\n    selector = root;\n    root = document;\n  }\n  return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n  const {disabled: disabled} = element;\n  const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n  const event = document.createEvent(\"Event\");\n  event.initEvent(type, bubbles || true, cancelable || true);\n  event.detail = detail || {};\n  try {\n    element.disabled = false;\n    element.dispatchEvent(event);\n  } finally {\n    element.disabled = disabled;\n  }\n  return event;\n}\n\nfunction toArray(value) {\n  if (Array.isArray(value)) {\n    return value;\n  } else if (Array.from) {\n    return Array.from(value);\n  } else {\n    return [].slice.call(value);\n  }\n}\n\nclass BlobRecord {\n  constructor(file, checksum, url, customHeaders = {}) {\n    this.file = file;\n    this.attributes = {\n      filename: file.name,\n      content_type: file.type || \"application/octet-stream\",\n      byte_size: file.size,\n      checksum: checksum\n    };\n    this.xhr = new XMLHttpRequest;\n    this.xhr.open(\"POST\", url, true);\n    this.xhr.responseType = \"json\";\n    this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n    this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n    this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n    Object.keys(customHeaders).forEach((headerKey => {\n      this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n    }));\n    const csrfToken = getMetaValue(\"csrf-token\");\n    if (csrfToken != undefined) {\n      this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n    }\n    this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n    this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n  }\n  get status() {\n    return this.xhr.status;\n  }\n  get response() {\n    const {responseType: responseType, response: response} = this.xhr;\n    if (responseType == \"json\") {\n      return response;\n    } else {\n      return JSON.parse(response);\n    }\n  }\n  create(callback) {\n    this.callback = callback;\n    this.xhr.send(JSON.stringify({\n      blob: this.attributes\n    }));\n  }\n  requestDidLoad(event) {\n    if (this.status >= 200 && this.status < 300) {\n      const {response: response} = this;\n      const {direct_upload: direct_upload} = response;\n      delete response.direct_upload;\n      this.attributes = response;\n      this.directUploadData = direct_upload;\n      this.callback(null, this.toJSON());\n    } else {\n      this.requestDidError(event);\n    }\n  }\n  requestDidError(event) {\n    this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n  }\n  toJSON() {\n    const result = {};\n    for (const key in this.attributes) {\n      result[key] = this.attributes[key];\n    }\n    return result;\n  }\n}\n\nclass BlobUpload {\n  constructor(blob) {\n    this.blob = blob;\n    this.file = blob.file;\n    const {url: url, headers: headers} = blob.directUploadData;\n    this.xhr = new XMLHttpRequest;\n    this.xhr.open(\"PUT\", url, true);\n    this.xhr.responseType = \"text\";\n    for (const key in headers) {\n      this.xhr.setRequestHeader(key, headers[key]);\n    }\n    this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n    this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n  }\n  create(callback) {\n    this.callback = callback;\n    this.xhr.send(this.file.slice());\n  }\n  requestDidLoad(event) {\n    const {status: status, response: response} = this.xhr;\n    if (status >= 200 && status < 300) {\n      this.callback(null, response);\n    } else {\n      this.requestDidError(event);\n    }\n  }\n  requestDidError(event) {\n    this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n  }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n  constructor(file, url, delegate, customHeaders = {}) {\n    this.id = ++id;\n    this.file = file;\n    this.url = url;\n    this.delegate = delegate;\n    this.customHeaders = customHeaders;\n  }\n  create(callback) {\n    FileChecksum.create(this.file, ((error, checksum) => {\n      if (error) {\n        callback(error);\n        return;\n      }\n      const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n      notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n      blob.create((error => {\n        if (error) {\n          callback(error);\n        } else {\n          const upload = new BlobUpload(blob);\n          notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n          upload.create((error => {\n            if (error) {\n              callback(error);\n            } else {\n              callback(null, blob.toJSON());\n            }\n          }));\n        }\n      }));\n    }));\n  }\n}\n\nfunction notify(object, methodName, ...messages) {\n  if (object && typeof object[methodName] == \"function\") {\n    return object[methodName](...messages);\n  }\n}\n\nclass DirectUploadController {\n  constructor(input, file) {\n    this.input = input;\n    this.file = file;\n    this.directUpload = new DirectUpload(this.file, this.url, this);\n    this.dispatch(\"initialize\");\n  }\n  start(callback) {\n    const hiddenInput = document.createElement(\"input\");\n    hiddenInput.type = \"hidden\";\n    hiddenInput.name = this.input.name;\n    this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n    this.dispatch(\"start\");\n    this.directUpload.create(((error, attributes) => {\n      if (error) {\n        hiddenInput.parentNode.removeChild(hiddenInput);\n        this.dispatchError(error);\n      } else {\n        hiddenInput.value = attributes.signed_id;\n      }\n      this.dispatch(\"end\");\n      callback(error);\n    }));\n  }\n  uploadRequestDidProgress(event) {\n    const progress = event.loaded / event.total * 100;\n    if (progress) {\n      this.dispatch(\"progress\", {\n        progress: progress\n      });\n    }\n  }\n  get url() {\n    return this.input.getAttribute(\"data-direct-upload-url\");\n  }\n  dispatch(name, detail = {}) {\n    detail.file = this.file;\n    detail.id = this.directUpload.id;\n    return dispatchEvent(this.input, `direct-upload:${name}`, {\n      detail: detail\n    });\n  }\n  dispatchError(error) {\n    const event = this.dispatch(\"error\", {\n      error: error\n    });\n    if (!event.defaultPrevented) {\n      alert(error);\n    }\n  }\n  directUploadWillCreateBlobWithXHR(xhr) {\n    this.dispatch(\"before-blob-request\", {\n      xhr: xhr\n    });\n  }\n  directUploadWillStoreFileWithXHR(xhr) {\n    this.dispatch(\"before-storage-request\", {\n      xhr: xhr\n    });\n    xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n  }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n  constructor(form) {\n    this.form = form;\n    this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n  }\n  start(callback) {\n    const controllers = this.createDirectUploadControllers();\n    const startNextController = () => {\n      const controller = controllers.shift();\n      if (controller) {\n        controller.start((error => {\n          if (error) {\n            callback(error);\n            this.dispatch(\"end\");\n          } else {\n            startNextController();\n          }\n        }));\n      } else {\n        callback();\n        this.dispatch(\"end\");\n      }\n    };\n    this.dispatch(\"start\");\n    startNextController();\n  }\n  createDirectUploadControllers() {\n    const controllers = [];\n    this.inputs.forEach((input => {\n      toArray(input.files).forEach((file => {\n        const controller = new DirectUploadController(input, file);\n        controllers.push(controller);\n      }));\n    }));\n    return controllers;\n  }\n  dispatch(name, detail = {}) {\n    return dispatchEvent(this.form, `direct-uploads:${name}`, {\n      detail: detail\n    });\n  }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n  if (!started) {\n    started = true;\n    document.addEventListener(\"click\", didClick, true);\n    document.addEventListener(\"submit\", didSubmitForm, true);\n    document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n  }\n}\n\nfunction didClick(event) {\n  const button = event.target.closest(\"button, input\");\n  if (button && button.type === \"submit\" && button.form) {\n    submitButtonsByForm.set(button.form, button);\n  }\n}\n\nfunction didSubmitForm(event) {\n  handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n  if (event.target.tagName == \"FORM\") {\n    handleFormSubmissionEvent(event);\n  }\n}\n\nfunction handleFormSubmissionEvent(event) {\n  const form = event.target;\n  if (form.hasAttribute(processingAttribute)) {\n    event.preventDefault();\n    return;\n  }\n  const controller = new DirectUploadsController(form);\n  const {inputs: inputs} = controller;\n  if (inputs.length) {\n    event.preventDefault();\n    form.setAttribute(processingAttribute, \"\");\n    inputs.forEach(disable);\n    controller.start((error => {\n      form.removeAttribute(processingAttribute);\n      if (error) {\n        inputs.forEach(enable);\n      } else {\n        submitForm(form);\n      }\n    }));\n  }\n}\n\nfunction submitForm(form) {\n  let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n  if (button) {\n    const {disabled: disabled} = button;\n    button.disabled = false;\n    button.focus();\n    button.click();\n    button.disabled = disabled;\n  } else {\n    button = document.createElement(\"input\");\n    button.type = \"submit\";\n    button.style.display = \"none\";\n    form.appendChild(button);\n    button.click();\n    form.removeChild(button);\n  }\n  submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n  input.disabled = true;\n}\n\nfunction enable(input) {\n  input.disabled = false;\n}\n\nfunction autostart() {\n  if (window.ActiveStorage) {\n    start();\n  }\n}\n\nsetTimeout(autostart, 1);\n\nclass AttachmentUpload {\n  constructor(attachment, element) {\n    this.attachment = attachment;\n    this.element = element;\n    this.directUpload = new DirectUpload(attachment.file, this.directUploadUrl, this);\n  }\n  start() {\n    this.directUpload.create(this.directUploadDidComplete.bind(this));\n    this.dispatch(\"start\");\n  }\n  directUploadWillStoreFileWithXHR(xhr) {\n    xhr.upload.addEventListener(\"progress\", (event => {\n      const progress = event.loaded / event.total * 100;\n      this.attachment.setUploadProgress(progress);\n      if (progress) {\n        this.dispatch(\"progress\", {\n          progress: progress\n        });\n      }\n    }));\n  }\n  directUploadDidComplete(error, attributes) {\n    if (error) {\n      this.dispatchError(error);\n    } else {\n      this.attachment.setAttributes({\n        sgid: attributes.attachable_sgid,\n        url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n      });\n      this.dispatch(\"end\");\n    }\n  }\n  createBlobUrl(signedId, filename) {\n    return this.blobUrlTemplate.replace(\":signed_id\", signedId).replace(\":filename\", encodeURIComponent(filename));\n  }\n  dispatch(name, detail = {}) {\n    detail.attachment = this.attachment;\n    return dispatchEvent(this.element, `direct-upload:${name}`, {\n      detail: detail\n    });\n  }\n  dispatchError(error) {\n    const event = this.dispatch(\"error\", {\n      error: error\n    });\n    if (!event.defaultPrevented) {\n      alert(error);\n    }\n  }\n  get directUploadUrl() {\n    return this.element.dataset.directUploadUrl;\n  }\n  get blobUrlTemplate() {\n    return this.element.dataset.blobUrlTemplate;\n  }\n}\n\naddEventListener(\"trix-attachment-add\", (event => {\n  const {attachment: attachment, target: target} = event;\n  if (attachment.file) {\n    const upload = new AttachmentUpload(attachment, target);\n    upload.start();\n  }\n}));\n"],
  "mappings": "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CA;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;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;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,aAAO,UAAU;AAAA;AAAA;;;ACnSjB;AAAA;AAOA,UAAI,UAAW,SAAUC,UAAS;AAChC;AAEA,YAAI,KAAK,OAAO;AAChB,YAAI,SAAS,GAAG;AAChB,YAAI,iBAAiB,OAAO,kBAAkB,SAAU,KAAK,KAAK,MAAM;AAAE,cAAI,GAAG,IAAI,KAAK;AAAA,QAAO;AACjG,YAAIC;AACJ,YAAI,UAAU,OAAO,WAAW,aAAa,SAAS,CAAC;AACvD,YAAI,iBAAiB,QAAQ,YAAY;AACzC,YAAI,sBAAsB,QAAQ,iBAAiB;AACnD,YAAI,oBAAoB,QAAQ,eAAe;AAE/C,iBAASC,QAAO,KAAK,KAAK,OAAO;AAC/B,iBAAO,eAAe,KAAK,KAAK;AAAA,YAC9B;AAAA,YACA,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,UAAU;AAAA,UACZ,CAAC;AACD,iBAAO,IAAI,GAAG;AAAA,QAChB;AACA,YAAI;AAEF,UAAAA,QAAO,CAAC,GAAG,EAAE;AAAA,QACf,SAAS,KAAK;AACZ,UAAAA,UAAS,SAAS,KAAK,KAAK,OAAO;AACjC,mBAAO,IAAI,GAAG,IAAI;AAAA,UACpB;AAAA,QACF;AAEA,iBAAS,KAAK,SAAS,SAASC,OAAM,aAAa;AAEjD,cAAI,iBAAiB,WAAW,QAAQ,qBAAqB,YAAY,UAAU;AACnF,cAAI,YAAY,OAAO,OAAO,eAAe,SAAS;AACtD,cAAI,UAAU,IAAIC,SAAQ,eAAe,CAAC,CAAC;AAI3C,yBAAe,WAAW,WAAW,EAAE,OAAO,iBAAiB,SAASD,OAAM,OAAO,EAAE,CAAC;AAExF,iBAAO;AAAA,QACT;AACA,QAAAH,SAAQ,OAAO;AAYf,iBAAS,SAASK,KAAI,KAAK,KAAK;AAC9B,cAAI;AACF,mBAAO,EAAE,MAAM,UAAU,KAAKA,IAAG,KAAK,KAAK,GAAG,EAAE;AAAA,UAClD,SAAS,KAAK;AACZ,mBAAO,EAAE,MAAM,SAAS,KAAK,IAAI;AAAA,UACnC;AAAA,QACF;AAEA,YAAI,yBAAyB;AAC7B,YAAI,yBAAyB;AAC7B,YAAI,oBAAoB;AACxB,YAAI,oBAAoB;AAIxB,YAAI,mBAAmB,CAAC;AAMxB,iBAAS,YAAY;AAAA,QAAC;AACtB,iBAAS,oBAAoB;AAAA,QAAC;AAC9B,iBAAS,6BAA6B;AAAA,QAAC;AAIvC,YAAI,oBAAoB,CAAC;AACzB,QAAAH,QAAO,mBAAmB,gBAAgB,WAAY;AACpD,iBAAO;AAAA,QACT,CAAC;AAED,YAAI,WAAW,OAAO;AACtB,YAAI,0BAA0B,YAAY,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,CAAC;AACvE,YAAI,2BACA,4BAA4B,MAC5B,OAAO,KAAK,yBAAyB,cAAc,GAAG;AAGxD,8BAAoB;AAAA,QACtB;AAEA,YAAI,KAAK,2BAA2B,YAClC,UAAU,YAAY,OAAO,OAAO,iBAAiB;AACvD,0BAAkB,YAAY;AAC9B,uBAAe,IAAI,eAAe,EAAE,OAAO,4BAA4B,cAAc,KAAK,CAAC;AAC3F;AAAA,UACE;AAAA,UACA;AAAA,UACA,EAAE,OAAO,mBAAmB,cAAc,KAAK;AAAA,QACjD;AACA,0BAAkB,cAAcA;AAAA,UAC9B;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAIA,iBAAS,sBAAsB,WAAW;AACxC,WAAC,QAAQ,SAAS,QAAQ,EAAE,QAAQ,SAAS,QAAQ;AACnD,YAAAA,QAAO,WAAW,QAAQ,SAAS,KAAK;AACtC,qBAAO,KAAK,QAAQ,QAAQ,GAAG;AAAA,YACjC,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAEA,QAAAF,SAAQ,sBAAsB,SAAS,QAAQ;AAC7C,cAAI,OAAO,OAAO,WAAW,cAAc,OAAO;AAClD,iBAAO,OACH,SAAS;AAAA;AAAA,WAGR,KAAK,eAAe,KAAK,UAAU,sBACpC;AAAA,QACN;AAEA,QAAAA,SAAQ,OAAO,SAAS,QAAQ;AAC9B,cAAI,OAAO,gBAAgB;AACzB,mBAAO,eAAe,QAAQ,0BAA0B;AAAA,UAC1D,OAAO;AACL,mBAAO,YAAY;AACnB,YAAAE,QAAO,QAAQ,mBAAmB,mBAAmB;AAAA,UACvD;AACA,iBAAO,YAAY,OAAO,OAAO,EAAE;AACnC,iBAAO;AAAA,QACT;AAMA,QAAAF,SAAQ,QAAQ,SAAS,KAAK;AAC5B,iBAAO,EAAE,SAAS,IAAI;AAAA,QACxB;AAEA,iBAAS,cAAc,WAAW,aAAa;AAC7C,mBAAS,OAAO,QAAQ,KAAKM,UAAS,QAAQ;AAC5C,gBAAI,SAAS,SAAS,UAAU,MAAM,GAAG,WAAW,GAAG;AACvD,gBAAI,OAAO,SAAS,SAAS;AAC3B,qBAAO,OAAO,GAAG;AAAA,YACnB,OAAO;AACL,kBAAI,SAAS,OAAO;AACpB,kBAAI,QAAQ,OAAO;AACnB,kBAAI,SACA,OAAO,UAAU,YACjB,OAAO,KAAK,OAAO,SAAS,GAAG;AACjC,uBAAO,YAAY,QAAQ,MAAM,OAAO,EAAE,KAAK,SAASC,QAAO;AAC7D,yBAAO,QAAQA,QAAOD,UAAS,MAAM;AAAA,gBACvC,GAAG,SAAS,KAAK;AACf,yBAAO,SAAS,KAAKA,UAAS,MAAM;AAAA,gBACtC,CAAC;AAAA,cACH;AAEA,qBAAO,YAAY,QAAQ,KAAK,EAAE,KAAK,SAAS,WAAW;AAIzD,uBAAO,QAAQ;AACf,gBAAAA,SAAQ,MAAM;AAAA,cAChB,GAAG,SAASE,QAAO;AAGjB,uBAAO,OAAO,SAASA,QAAOF,UAAS,MAAM;AAAA,cAC/C,CAAC;AAAA,YACH;AAAA,UACF;AAEA,cAAI;AAEJ,mBAAS,QAAQ,QAAQ,KAAK;AAC5B,qBAAS,6BAA6B;AACpC,qBAAO,IAAI,YAAY,SAASA,UAAS,QAAQ;AAC/C,uBAAO,QAAQ,KAAKA,UAAS,MAAM;AAAA,cACrC,CAAC;AAAA,YACH;AAEA,mBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAaL,kBAAkB,gBAAgB;AAAA,cAChC;AAAA;AAAA;AAAA,cAGA;AAAA,YACF,IAAI,2BAA2B;AAAA,UACnC;AAIA,yBAAe,MAAM,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,QACpD;AAEA,8BAAsB,cAAc,SAAS;AAC7C,QAAAJ,QAAO,cAAc,WAAW,qBAAqB,WAAY;AAC/D,iBAAO;AAAA,QACT,CAAC;AACD,QAAAF,SAAQ,gBAAgB;AAKxB,QAAAA,SAAQ,QAAQ,SAAS,SAAS,SAASG,OAAM,aAAa,aAAa;AACzE,cAAI,gBAAgB,OAAQ,eAAc;AAE1C,cAAI,OAAO,IAAI;AAAA,YACb,KAAK,SAAS,SAASA,OAAM,WAAW;AAAA,YACxC;AAAA,UACF;AAEA,iBAAOH,SAAQ,oBAAoB,OAAO,IACtC,OACA,KAAK,KAAK,EAAE,KAAK,SAAS,QAAQ;AAChC,mBAAO,OAAO,OAAO,OAAO,QAAQ,KAAK,KAAK;AAAA,UAChD,CAAC;AAAA,QACP;AAEA,iBAAS,iBAAiB,SAASG,OAAM,SAAS;AAChD,cAAI,QAAQ;AAEZ,iBAAO,SAAS,OAAO,QAAQ,KAAK;AAClC,gBAAI,UAAU,mBAAmB;AAC/B,oBAAM,IAAI,MAAM,8BAA8B;AAAA,YAChD;AAEA,gBAAI,UAAU,mBAAmB;AAC/B,kBAAI,WAAW,SAAS;AACtB,sBAAM;AAAA,cACR;AAIA,qBAAO,WAAW;AAAA,YACpB;AAEA,oBAAQ,SAAS;AACjB,oBAAQ,MAAM;AAEd,mBAAO,MAAM;AACX,kBAAI,WAAW,QAAQ;AACvB,kBAAI,UAAU;AACZ,oBAAI,iBAAiB,oBAAoB,UAAU,OAAO;AAC1D,oBAAI,gBAAgB;AAClB,sBAAI,mBAAmB,iBAAkB;AACzC,yBAAO;AAAA,gBACT;AAAA,cACF;AAEA,kBAAI,QAAQ,WAAW,QAAQ;AAG7B,wBAAQ,OAAO,QAAQ,QAAQ,QAAQ;AAAA,cAEzC,WAAW,QAAQ,WAAW,SAAS;AACrC,oBAAI,UAAU,wBAAwB;AACpC,0BAAQ;AACR,wBAAM,QAAQ;AAAA,gBAChB;AAEA,wBAAQ,kBAAkB,QAAQ,GAAG;AAAA,cAEvC,WAAW,QAAQ,WAAW,UAAU;AACtC,wBAAQ,OAAO,UAAU,QAAQ,GAAG;AAAA,cACtC;AAEA,sBAAQ;AAER,kBAAI,SAAS,SAAS,SAASA,OAAM,OAAO;AAC5C,kBAAI,OAAO,SAAS,UAAU;AAG5B,wBAAQ,QAAQ,OACZ,oBACA;AAEJ,oBAAI,OAAO,QAAQ,kBAAkB;AACnC;AAAA,gBACF;AAEA,uBAAO;AAAA,kBACL,OAAO,OAAO;AAAA,kBACd,MAAM,QAAQ;AAAA,gBAChB;AAAA,cAEF,WAAW,OAAO,SAAS,SAAS;AAClC,wBAAQ;AAGR,wBAAQ,SAAS;AACjB,wBAAQ,MAAM,OAAO;AAAA,cACvB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAMA,iBAAS,oBAAoB,UAAU,SAAS;AAC9C,cAAI,aAAa,QAAQ;AACzB,cAAI,SAAS,SAAS,SAAS,UAAU;AACzC,cAAI,WAAWF,YAAW;AAIxB,oBAAQ,WAAW;AAGnB,gBAAI,eAAe,WAAW,SAAS,SAAS,QAAQ,GAAG;AAGzD,sBAAQ,SAAS;AACjB,sBAAQ,MAAMA;AACd,kCAAoB,UAAU,OAAO;AAErC,kBAAI,QAAQ,WAAW,SAAS;AAG9B,uBAAO;AAAA,cACT;AAAA,YACF;AACA,gBAAI,eAAe,UAAU;AAC3B,sBAAQ,SAAS;AACjB,sBAAQ,MAAM,IAAI;AAAA,gBAChB,sCAAsC,aAAa;AAAA,cAAU;AAAA,YACjE;AAEA,mBAAO;AAAA,UACT;AAEA,cAAI,SAAS,SAAS,QAAQ,SAAS,UAAU,QAAQ,GAAG;AAE5D,cAAI,OAAO,SAAS,SAAS;AAC3B,oBAAQ,SAAS;AACjB,oBAAQ,MAAM,OAAO;AACrB,oBAAQ,WAAW;AACnB,mBAAO;AAAA,UACT;AAEA,cAAI,OAAO,OAAO;AAElB,cAAI,CAAE,MAAM;AACV,oBAAQ,SAAS;AACjB,oBAAQ,MAAM,IAAI,UAAU,kCAAkC;AAC9D,oBAAQ,WAAW;AACnB,mBAAO;AAAA,UACT;AAEA,cAAI,KAAK,MAAM;AAGb,oBAAQ,SAAS,UAAU,IAAI,KAAK;AAGpC,oBAAQ,OAAO,SAAS;AAQxB,gBAAI,QAAQ,WAAW,UAAU;AAC/B,sBAAQ,SAAS;AACjB,sBAAQ,MAAMA;AAAA,YAChB;AAAA,UAEF,OAAO;AAEL,mBAAO;AAAA,UACT;AAIA,kBAAQ,WAAW;AACnB,iBAAO;AAAA,QACT;AAIA,8BAAsB,EAAE;AAExB,QAAAC,QAAO,IAAI,mBAAmB,WAAW;AAOzC,QAAAA,QAAO,IAAI,gBAAgB,WAAW;AACpC,iBAAO;AAAA,QACT,CAAC;AAED,QAAAA,QAAO,IAAI,YAAY,WAAW;AAChC,iBAAO;AAAA,QACT,CAAC;AAED,iBAAS,aAAa,MAAM;AAC1B,cAAI,QAAQ,EAAE,QAAQ,KAAK,CAAC,EAAE;AAE9B,cAAI,KAAK,MAAM;AACb,kBAAM,WAAW,KAAK,CAAC;AAAA,UACzB;AAEA,cAAI,KAAK,MAAM;AACb,kBAAM,aAAa,KAAK,CAAC;AACzB,kBAAM,WAAW,KAAK,CAAC;AAAA,UACzB;AAEA,eAAK,WAAW,KAAK,KAAK;AAAA,QAC5B;AAEA,iBAAS,cAAc,OAAO;AAC5B,cAAI,SAAS,MAAM,cAAc,CAAC;AAClC,iBAAO,OAAO;AACd,iBAAO,OAAO;AACd,gBAAM,aAAa;AAAA,QACrB;AAEA,iBAASE,SAAQ,aAAa;AAI5B,eAAK,aAAa,CAAC,EAAE,QAAQ,OAAO,CAAC;AACrC,sBAAY,QAAQ,cAAc,IAAI;AACtC,eAAK,MAAM,IAAI;AAAA,QACjB;AAEA,QAAAJ,SAAQ,OAAO,SAAS,KAAK;AAC3B,cAAI,SAAS,OAAO,GAAG;AACvB,cAAI,OAAO,CAAC;AACZ,mBAAS,OAAO,QAAQ;AACtB,iBAAK,KAAK,GAAG;AAAA,UACf;AACA,eAAK,QAAQ;AAIb,iBAAO,SAAS,OAAO;AACrB,mBAAO,KAAK,QAAQ;AAClB,kBAAIS,OAAM,KAAK,IAAI;AACnB,kBAAIA,QAAO,QAAQ;AACjB,qBAAK,QAAQA;AACb,qBAAK,OAAO;AACZ,uBAAO;AAAA,cACT;AAAA,YACF;AAKA,iBAAK,OAAO;AACZ,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,OAAO,UAAU;AACxB,cAAI,UAAU;AACZ,gBAAI,iBAAiB,SAAS,cAAc;AAC5C,gBAAI,gBAAgB;AAClB,qBAAO,eAAe,KAAK,QAAQ;AAAA,YACrC;AAEA,gBAAI,OAAO,SAAS,SAAS,YAAY;AACvC,qBAAO;AAAA,YACT;AAEA,gBAAI,CAAC,MAAM,SAAS,MAAM,GAAG;AAC3B,kBAAIC,KAAI,IAAI,OAAO,SAASC,QAAO;AACjC,uBAAO,EAAED,KAAI,SAAS,QAAQ;AAC5B,sBAAI,OAAO,KAAK,UAAUA,EAAC,GAAG;AAC5B,oBAAAC,MAAK,QAAQ,SAASD,EAAC;AACvB,oBAAAC,MAAK,OAAO;AACZ,2BAAOA;AAAA,kBACT;AAAA,gBACF;AAEA,gBAAAA,MAAK,QAAQV;AACb,gBAAAU,MAAK,OAAO;AAEZ,uBAAOA;AAAA,cACT;AAEA,qBAAO,KAAK,OAAO;AAAA,YACrB;AAAA,UACF;AAGA,iBAAO,EAAE,MAAM,WAAW;AAAA,QAC5B;AACA,QAAAX,SAAQ,SAAS;AAEjB,iBAAS,aAAa;AACpB,iBAAO,EAAE,OAAOC,YAAW,MAAM,KAAK;AAAA,QACxC;AAEA,QAAAG,SAAQ,YAAY;AAAA,UAClB,aAAaA;AAAA,UAEb,OAAO,SAAS,eAAe;AAC7B,iBAAK,OAAO;AACZ,iBAAK,OAAO;AAGZ,iBAAK,OAAO,KAAK,QAAQH;AACzB,iBAAK,OAAO;AACZ,iBAAK,WAAW;AAEhB,iBAAK,SAAS;AACd,iBAAK,MAAMA;AAEX,iBAAK,WAAW,QAAQ,aAAa;AAErC,gBAAI,CAAC,eAAe;AAClB,uBAAS,QAAQ,MAAM;AAErB,oBAAI,KAAK,OAAO,CAAC,MAAM,OACnB,OAAO,KAAK,MAAM,IAAI,KACtB,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG;AAC1B,uBAAK,IAAI,IAAIA;AAAA,gBACf;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UAEA,MAAM,WAAW;AACf,iBAAK,OAAO;AAEZ,gBAAI,YAAY,KAAK,WAAW,CAAC;AACjC,gBAAI,aAAa,UAAU;AAC3B,gBAAI,WAAW,SAAS,SAAS;AAC/B,oBAAM,WAAW;AAAA,YACnB;AAEA,mBAAO,KAAK;AAAA,UACd;AAAA,UAEA,mBAAmB,SAAS,WAAW;AACrC,gBAAI,KAAK,MAAM;AACb,oBAAM;AAAA,YACR;AAEA,gBAAI,UAAU;AACd,qBAAS,OAAO,KAAK,QAAQ;AAC3B,qBAAO,OAAO;AACd,qBAAO,MAAM;AACb,sBAAQ,OAAO;AAEf,kBAAI,QAAQ;AAGV,wBAAQ,SAAS;AACjB,wBAAQ,MAAMA;AAAA,cAChB;AAEA,qBAAO,CAAC,CAAE;AAAA,YACZ;AAEA,qBAASS,KAAI,KAAK,WAAW,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AACpD,kBAAI,QAAQ,KAAK,WAAWA,EAAC;AAC7B,kBAAI,SAAS,MAAM;AAEnB,kBAAI,MAAM,WAAW,QAAQ;AAI3B,uBAAO,OAAO,KAAK;AAAA,cACrB;AAEA,kBAAI,MAAM,UAAU,KAAK,MAAM;AAC7B,oBAAI,WAAW,OAAO,KAAK,OAAO,UAAU;AAC5C,oBAAI,aAAa,OAAO,KAAK,OAAO,YAAY;AAEhD,oBAAI,YAAY,YAAY;AAC1B,sBAAI,KAAK,OAAO,MAAM,UAAU;AAC9B,2BAAO,OAAO,MAAM,UAAU,IAAI;AAAA,kBACpC,WAAW,KAAK,OAAO,MAAM,YAAY;AACvC,2BAAO,OAAO,MAAM,UAAU;AAAA,kBAChC;AAAA,gBAEF,WAAW,UAAU;AACnB,sBAAI,KAAK,OAAO,MAAM,UAAU;AAC9B,2BAAO,OAAO,MAAM,UAAU,IAAI;AAAA,kBACpC;AAAA,gBAEF,WAAW,YAAY;AACrB,sBAAI,KAAK,OAAO,MAAM,YAAY;AAChC,2BAAO,OAAO,MAAM,UAAU;AAAA,kBAChC;AAAA,gBAEF,OAAO;AACL,wBAAM,IAAI,MAAM,wCAAwC;AAAA,gBAC1D;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UAEA,QAAQ,SAAS,MAAM,KAAK;AAC1B,qBAASA,KAAI,KAAK,WAAW,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AACpD,kBAAI,QAAQ,KAAK,WAAWA,EAAC;AAC7B,kBAAI,MAAM,UAAU,KAAK,QACrB,OAAO,KAAK,OAAO,YAAY,KAC/B,KAAK,OAAO,MAAM,YAAY;AAChC,oBAAI,eAAe;AACnB;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,iBACC,SAAS,WACT,SAAS,eACV,aAAa,UAAU,OACvB,OAAO,aAAa,YAAY;AAGlC,6BAAe;AAAA,YACjB;AAEA,gBAAI,SAAS,eAAe,aAAa,aAAa,CAAC;AACvD,mBAAO,OAAO;AACd,mBAAO,MAAM;AAEb,gBAAI,cAAc;AAChB,mBAAK,SAAS;AACd,mBAAK,OAAO,aAAa;AACzB,qBAAO;AAAA,YACT;AAEA,mBAAO,KAAK,SAAS,MAAM;AAAA,UAC7B;AAAA,UAEA,UAAU,SAAS,QAAQ,UAAU;AACnC,gBAAI,OAAO,SAAS,SAAS;AAC3B,oBAAM,OAAO;AAAA,YACf;AAEA,gBAAI,OAAO,SAAS,WAChB,OAAO,SAAS,YAAY;AAC9B,mBAAK,OAAO,OAAO;AAAA,YACrB,WAAW,OAAO,SAAS,UAAU;AACnC,mBAAK,OAAO,KAAK,MAAM,OAAO;AAC9B,mBAAK,SAAS;AACd,mBAAK,OAAO;AAAA,YACd,WAAW,OAAO,SAAS,YAAY,UAAU;AAC/C,mBAAK,OAAO;AAAA,YACd;AAEA,mBAAO;AAAA,UACT;AAAA,UAEA,QAAQ,SAAS,YAAY;AAC3B,qBAASA,KAAI,KAAK,WAAW,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AACpD,kBAAI,QAAQ,KAAK,WAAWA,EAAC;AAC7B,kBAAI,MAAM,eAAe,YAAY;AACnC,qBAAK,SAAS,MAAM,YAAY,MAAM,QAAQ;AAC9C,8BAAc,KAAK;AACnB,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,UAEA,SAAS,SAAS,QAAQ;AACxB,qBAASA,KAAI,KAAK,WAAW,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AACpD,kBAAI,QAAQ,KAAK,WAAWA,EAAC;AAC7B,kBAAI,MAAM,WAAW,QAAQ;AAC3B,oBAAI,SAAS,MAAM;AACnB,oBAAI,OAAO,SAAS,SAAS;AAC3B,sBAAI,SAAS,OAAO;AACpB,gCAAc,KAAK;AAAA,gBACrB;AACA,uBAAO;AAAA,cACT;AAAA,YACF;AAIA,kBAAM,IAAI,MAAM,uBAAuB;AAAA,UACzC;AAAA,UAEA,eAAe,SAAS,UAAU,YAAY,SAAS;AACrD,iBAAK,WAAW;AAAA,cACd,UAAU,OAAO,QAAQ;AAAA,cACzB;AAAA,cACA;AAAA,YACF;AAEA,gBAAI,KAAK,WAAW,QAAQ;AAG1B,mBAAK,MAAMT;AAAA,YACb;AAEA,mBAAO;AAAA,UACT;AAAA,QACF;AAMA,eAAOD;AAAA,MAET;AAAA;AAAA;AAAA;AAAA;AAAA,QAKE,OAAO,WAAW,WAAW,OAAO,UAAU,CAAC;AAAA,MACjD;AAEA,UAAI;AACF,6BAAqB;AAAA,MACvB,SAAS,sBAAsB;AAW7B,YAAI,OAAO,eAAe,UAAU;AAClC,qBAAW,qBAAqB;AAAA,QAClC,OAAO;AACL,mBAAS,KAAK,wBAAwB,EAAE,OAAO;AAAA,QACjD;AAAA,MACF;AAAA;AAAA;;;ACxvBA;AAAA;AAQA,OAAC,SAAUY,SAAQ,SAAS;AAC1B,eAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,QAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,OAAO,KAC1DA,UAAS,OAAO,eAAe,cAAc,aAAaA,WAAU,MAAMA,QAAO,YAAY,QAAQ;AAAA,MACxG,GAAG,SAAO,WAAY;AAAE;AAEtB,iBAASC,SAAQ,UAAU;AACzB,iBAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,MAAM;AAAA,QACtD;AAEA,iBAASC,YAAW,UAAU;AAC5B,iBAAO,oBAAoB;AAAA,QAC7B;AAEA,iBAAS,cAAc,UAAU;AAE/B,iBAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,MAAM,qBAAqB,CAACA,YAAW,QAAQ,KAAK,oBAAoB;AAAA,QACxH;AAGA,iBAASC,QAAO,QAAQ,QAAQ;AAC9B,cAAI;AACJ,eAAK,OAAO,QAAQ;AAElB,gBAAI,QAAQ,aAAa;AAAE;AAAA,YAAU;AAErC,gBAAI,cAAc,OAAO,GAAG,CAAC,KAAKF,SAAQ,OAAO,GAAG,CAAC,GAAG;AACtD,kBAAI,cAAc,OAAO,GAAG,CAAC,KAAK,CAAC,cAAc,OAAO,GAAG,CAAC,GAAG;AAC7D,uBAAO,GAAG,IAAI,CAAC;AAAA,cACjB;AACA,kBAAIA,SAAQ,OAAO,GAAG,CAAC,KAAK,CAACA,SAAQ,OAAO,GAAG,CAAC,GAAG;AACjD,uBAAO,GAAG,IAAI,CAAC;AAAA,cACjB;AACA,cAAAE,QAAO,OAAO,GAAG,GAAG,OAAO,GAAG,CAAC;AAAA,YACjC,WAAW,OAAO,GAAG,MAAM,QAAW;AACpC,qBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAEA,iBAASC,OAAM,MAAM,MAAM;AACzB,cAAI,SAAS,CAAC;AACd,UAAAD,QAAO,QAAQ,IAAI;AACnB,UAAAA,QAAO,QAAQ,IAAI;AACnB,iBAAO;AAAA,QACT;AAEA,YAAI,eAAe;AAEnB,iBAAS,eAAe,QAAQ;AAC9B,cAAIE,IAAGC,IAAG;AACV,eAAKD,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,mBAAO,OAAOA,EAAC,EAAE;AACjB,iBAAKC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,kBAAI,KAAKA,EAAC,EAAE,CAAC,IAAI,GAAG;AAClB,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAEA,iBAAS,MAAMC,IAAG;AAChB,iBAAO,KAAKA;AAAA,QACd;AAEA,iBAAS,QAAQA,IAAG;AAClB,iBAAO,WAAWA,EAAC;AAAA,QACrB;AAEA,iBAASC,QAAOD,IAAG;AACjB,cAAIE,UAAS,MAAM,OAAO;AAC1B,cAAI,OAAOF,OAAM,UAAU;AACzB,gBAAI,OAAOA,OAAM,UAAU;AACzB,cAAAA,KAAI,IAAI,KAAKA,KAAI,GAAI;AAAA,YACvB,OAAO;AACL,cAAAA,KAAI,MAAMA,EAAC;AACX,kBAAKE,WAAUF,GAAE,MAAM,YAAY,GAAI;AACrC,uBAAO,SAASE,SAAQ,CAAC,GAAG,EAAE;AAC9B,wBAAQ,SAASA,SAAQ,CAAC,GAAG,EAAE,IAAI;AACnC,sBAAM,SAASA,SAAQ,CAAC,GAAG,EAAE;AAC7B,uBAAO,IAAI,KAAK,MAAM,OAAO,GAAG;AAAA,cAClC,OAAO;AAGL,oBAAI,MAAMF,GAAE,QAAQ,KAAK,GAAG,EAAE,QAAQ,KAAK,EAAE,EAAE,QAAQ,OAAO,GAAG;AAEjE,gBAAAA,KAAI,IAAI,KAAK,KAAK,MAAM,GAAG,KAAKA,EAAC;AAAA,cACnC;AAAA,YACF;AAAA,UACF;AACA,iBAAOA;AAAA,QACT;AAEA,iBAAS,MAAMA,IAAG;AAChB,cAAI,CAACN,SAAQM,EAAC,GAAG;AACf,gBAAI,MAAM,CAAC,GAAGF;AACd,iBAAKA,MAAKE,IAAG;AACX,kBAAIA,GAAE,eAAeF,EAAC,GAAG;AACvB,oBAAI,KAAK,CAACA,IAAGE,GAAEF,EAAC,CAAC,CAAC;AAAA,cACpB;AAAA,YACF;AACA,YAAAE,KAAI;AAAA,UACN;AACA,iBAAOA;AAAA,QACT;AAEA,iBAAS,cAAcG,iBAAgBC,aAAYC,WAAUC,SAAQC,SAAQC,aAAYC,YAAWC,YAAW;AAC7G,iBAAO,SAAU,OAAO,MAAM,cAAc;AAC1C,gBAAI,SAAS,MAAM;AACnB,gBAAI,UAAUb,OAAM,CAAC,GAAGM,eAAc;AACtC,sBAAUN,OAAM,SAAS,gBAAgB,CAAC,CAAC;AAE3C,gBAAI,MAAM,sBAAsB,YAAY,MAAM;AAChD,cAAAO,YAAW,SAAS,KAAK,QAAQ,MAAM,kBAAkB;AAAA,YAC3D;AAEA,gBAAI,KAAK,OAAO;AACd,cAAAC,UAAS,SAAS,KAAK,KAAK;AAAA,YAC9B;AAGA,gBAAI,SAAS,MAAM;AACjB,cAAAC,QAAO,SAAS,KAAK,GAAG;AAAA,YAC1B,WAAW,CAAC,eAAe,MAAM,GAAG;AAClC,cAAAA,QAAO,SAAS,CAAC;AAAA,YACnB;AAGA,gBAAI,KAAK,KAAK;AACZ,cAAAC,QAAO,SAAS,KAAK,GAAG;AAAA,YAC1B;AAEA,gBAAI,aAAa,MAAM;AACrB,cAAAC,YAAW,SAAS,KAAK,OAAO;AAAA,YAClC;AAEA,gBAAI,KAAK,QAAQ;AACf,sBAAQ,SAAS,KAAK;AAAA,YACxB;AAEA,gBAAI,KAAK,QAAQ;AACf,cAAAC,WAAU,SAAS,KAAK,MAAM;AAAA,YAChC;AAEA,gBAAI,KAAK,QAAQ;AACf,cAAAC,WAAU,SAAS,KAAK,MAAM;AAAA,YAChC;AAGA,sBAAUb,OAAM,SAAS,KAAK,WAAW,CAAC,CAAC;AAE3C,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,WAAWc,IAAGC,IAAG;AACxB,iBAAOD,GAAE,CAAC,EAAE,QAAQ,IAAIC,GAAE,CAAC,EAAE,QAAQ;AAAA,QACvC;AAEA,iBAAS,mBAAmBD,IAAGC,IAAG;AAChC,iBAAOD,GAAE,CAAC,IAAIC,GAAE,CAAC;AAAA,QACnB;AAEA,iBAAS,aAAaD,IAAGC,IAAG;AAC1B,iBAAOD,KAAIC;AAAA,QACb;AAEA,iBAAS,SAASC,IAAG;AACnB,iBAAOA,GAAE,gBAAgB,MAAM,KAAKA,GAAE,WAAW,MAAM;AAAA,QACzD;AAEA,iBAAS,OAAOA,IAAG;AACjB,iBAAO,SAASA,EAAC,KAAKA,GAAE,WAAW,MAAM;AAAA,QAC3C;AAEA,iBAAS,MAAMA,IAAG;AAChB,iBAAO,OAAOA,EAAC,KAAKA,GAAE,SAAS,MAAM;AAAA,QACvC;AAEA,iBAAS,OAAOA,IAAG,WAAW;AAC5B,iBAAO,MAAMA,EAAC,KAAKA,GAAE,OAAO,MAAM;AAAA,QACpC;AAEA,iBAAS,QAAQA,IAAG;AAClB,iBAAO,MAAMA,EAAC,KAAKA,GAAE,QAAQ,MAAM;AAAA,QACrC;AAEA,iBAAS,OAAOA,IAAG;AACjB,iBAAO,QAAQA,EAAC,KAAKA,GAAE,SAAS,MAAM;AAAA,QACxC;AAEA,iBAASC,QAAO,KAAK;AACnB,iBAAO,CAAC,MAAMb,QAAO,GAAG,CAAC,KAAK,MAAM,GAAG,EAAE,UAAU;AAAA,QACrD;AAEA,iBAASc,UAAS,KAAK;AACrB,iBAAO,OAAO,QAAQ;AAAA,QACxB;AAEA,YAAI,eAAe,CAAC,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAE/D,iBAAS,YAAY,KAAK,OAAO,SAAS,MAAM;AAC9C,gBAAM,OAAO;AACb,cAAI,QAAQ,QAAQ;AAClB,gBAAI,QAAQ,GAAG;AACb,sBAAQ,QAAQ;AAChB,qBAAO;AAAA,YACT;AACA,mBAAO,QAAQ;AAAA,UACjB;AAEA,cAAI,SAAS,QAAQ,UAAU;AAC/B,cAAI,YAAY,QAAQ;AACxB,cAAIC,SAAQ,QAAQ;AAEpB,cAAI,QAAQ,WAAW;AACrB,gBAAI;AACJ,gBAAI,YAAY,OAAO,QAAQ,YAAY;AAE3C,gBAAI,aAAa,oBAAqB;AACpC,uBAAS;AACT,0BAAY;AAAA,YACd,WAAW,aAAa,kBAAkB;AACxC,uBAAS;AACT,0BAAY;AAAA,YACd,WAAW,aAAa,eAAe;AACrC,uBAAS;AACT,0BAAY;AAAA,YACd,WAAW,aAAa,YAAY;AAClC,uBAAS;AACT,0BAAY;AAAA,YACd,WAAW,aAAa,SAAS;AAC/B,uBAAS;AACT,0BAAY;AAAA,YACd,WAAW,aAAa,MAAM;AAC5B,uBAAS;AACT,0BAAY;AAAA,YACd,OAAO;AACL,0BAAY;AAAA,YACd;AAGA,gBAAI,cAAc,UAAaA,WAAU,QAAW;AAClD,kBAAI,SAAS,QAAQ;AACnB,oBAAI,YAAY,aAAa,SAAS,GAAG;AACvC,0BAAQ;AACR,+BAAa;AAAA,gBACf;AAAA,cACF;AACA,0BAAY,SAAS,MAAO,IAAI;AAAA,YAClC;AACA,qBAAS,MAAM,aAAa,SAAS;AAAA,UACvC;AAEA,cAAI,cAAc,UAAaA,WAAU,QAAW;AAClD,kBAAM,MAAM,yCAAyC;AAAA,UACvD;AAEA,cAAI,CAAC,MAAM;AACT,gBAAI,cAAc,QAAW;AAC3B,sBAAQ,MAAM,YAAY,SAAS;AACnC,kBAAI,CAAC,QAAQ,OAAO;AAClB,wBAAQ,WAAW,KAAK;AAAA,cAC1B;AAAA,YACF;AAEA,gBAAIA,WAAU,QAAW;AACvB,kBAAIA,SAAQ,GAAG;AACb,oBAAI,MAAM,KAAK,IAAI,IAAI,KAAKA,MAAK;AACjC,wBAAQ,UAAU,IAAM,QAAQ,KAAK,QAAQ,CAAC,CAAC,IAAI;AAAA,cACrD,OAAO;AACL,wBAAQ,MAAM,QAAQA,MAAK;AAC3B,oBAAI,CAAC,QAAQ,OAAO;AAClB,0BAAQ,WAAW,KAAK;AAAA,gBAC1B;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,QAAQ,aAAa,QAAQ,SAAS;AACxC,oBAAQ,MAAM,KAAK;AACnB,gBAAI,QAAQ,MAAM,MAAM,GAAG;AAC3B,oBAAQ,MAAM,CAAC;AACf,gBAAI,QAAQ,WAAW;AACrB,sBAAQ,MAAM,QAAQ,yBAAyB,QAAQ,SAAS;AAAA,YAClE;AACA,gBAAI,MAAM,SAAS,GAAG;AACpB,wBAAU,QAAQ,WAAW,OAAO,MAAM,CAAC;AAAA,YAC7C;AAAA,UACF;AAEA,iBAAO,MAAM,QAAQ;AAAA,QACvB;AAEA,iBAAS,aAAa,OAAO,QAAQC,SAAQ;AAC3C,cAAIA,WAAU,QAAQ;AACpB,mBAAO,OAAOA,OAAM;AAAA,UACtB,WAAWA,WAAU,MAAM,SAAS;AAClC,mBAAO,MAAM,QAAQA,OAAM;AAAA,UAC7B;AACA,iBAAO;AAAA,QACT;AAEA,iBAAS,SAAS,MAAM;AACtB,cAAInB,IAAGC,IAAGc;AACV,eAAKf,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,YAAAe,KAAI,KAAKf,EAAC,EAAE;AACZ,iBAAKC,KAAI,GAAGA,KAAIc,GAAE,QAAQd,MAAK;AAC7B,kBAAIc,GAAEd,EAAC,EAAE,CAAC,KAAK,GAAG;AAChB,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAEA,YAAI,cAAc;AAAA,UAChB,qBAAqB;AAAA,UACrB,WAAW;AAAA,UACX,SAAS;AAAA,YACP,QAAQ,CAAC;AAAA,YACT,SAAS;AAAA,cACP,eAAe;AAAA,cACf,WAAW,CAAC;AAAA,YACd;AAAA,YACA,OAAO;AAAA,cACL,MAAM;AAAA,gBACJ,MAAM;AAAA,cACR;AAAA,cACA,OAAO;AAAA,YACT;AAAA,UACF;AAAA,UACA,aAAa,CAAC;AAAA,QAChB;AAEA,YAAI,mBAAmB;AAAA,UACrB,QAAQ;AAAA,YACN,GAAG;AAAA,cACD,OAAO;AAAA,gBACL,eAAe;AAAA,cACjB;AAAA,cACA,OAAO;AAAA,gBACL,MAAM;AAAA,kBACJ,MAAM;AAAA,gBACR;AAAA,gBACA,OAAO;AAAA,cACT;AAAA,cACA,MAAM,CAAC;AAAA,YACT;AAAA,YACA,GAAG;AAAA,cACD,MAAM;AAAA,gBACJ,iBAAiB;AAAA,cACnB;AAAA,cACA,OAAO;AAAA,gBACL,MAAM;AAAA,kBACJ,MAAM;AAAA,gBACR;AAAA,gBACA,OAAO;AAAA,cACT;AAAA,cACA,MAAM,CAAC;AAAA,cACP,OAAO,CAAC;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAGA,YAAI,gBAAgB;AAAA,UAClB;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAClE;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAClE;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,UAAW;AAAA,QACzD;AAEA,YAAI,eAAe,SAAU,SAAS,QAAQK,aAAY;AACxD,cAAI,WAAW,QAAW;AACxB,oBAAQ,QAAQ,OAAO,UAAU,CAAC,CAAC;AACnC,gBAAI,UAAU,WAAW,MAAM;AAC7B,sBAAQ,QAAQ,OAAO,WAAW;AAAA,YACpC;AAAA,UACF,WAAWA,aAAY;AACrB,oBAAQ,QAAQ,OAAO,UAAU;AAAA,UACnC;AAAA,QACF;AAEA,YAAI,aAAa,SAAU,SAAS,OAAO;AACzC,kBAAQ,QAAQ,MAAM,UAAU;AAChC,kBAAQ,QAAQ,MAAM,OAAO;AAAA,QAC/B;AAEA,YAAI,WAAW,SAAU,SAAS,KAAK;AACrC,cAAI,QAAQ,MAAM;AAChB,oBAAQ,OAAO,EAAE,MAAM,QAAQ,GAAG;AAAA,UACpC;AAAA,QACF;AAEA,YAAI,WAAW,SAAU,SAAS,KAAK;AACrC,kBAAQ,OAAO,EAAE,MAAM,QAAQ,GAAG;AAAA,QACpC;AAEA,YAAI,cAAc,SAAU,SAAS,KAAK;AACxC,cAAI,QAAQ,MAAM;AAChB,oBAAQ,OAAO,EAAE,MAAM,QAAQ,GAAG;AAAA,UACpC;AAAA,QACF;AAEA,YAAI,cAAc,SAAU,SAAS,KAAK;AACxC,kBAAQ,OAAO,EAAE,MAAM,QAAQ,GAAG;AAAA,QACpC;AAEA,YAAI,eAAe,SAAU,SAAS,SAAS;AAC7C,kBAAQ,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7B,kBAAQ,OAAO,EAAE,UAAU,CAAC,CAAC;AAAA,QAC/B;AAEA,YAAI,cAAc,SAAU,SAAS,OAAO;AAC1C,kBAAQ,OAAO,EAAE,MAAM,UAAU;AACjC,kBAAQ,OAAO,EAAE,MAAM,OAAO;AAAA,QAChC;AAEA,YAAI,cAAc,SAAU,SAAS,OAAO;AAC1C,kBAAQ,OAAO,EAAE,MAAM,UAAU;AACjC,kBAAQ,OAAO,EAAE,MAAM,OAAO;AAAA,QAChC;AAGA,YAAI,aAAa,SAAUc,MAAK,SAAS;AACvC,cAAI,SAAS,4CAA4C,KAAKA,IAAG;AACjE,iBAAO,SAAS,UAAU,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,OAAO,UAAU,MAAMA;AAAA,QAC/I;AAIA,YAAI,UAAU,SAAUC,IAAG;AACzB,iBAAOA,MAAK;AAAA,QACd;AAEA,YAAI,eAAe,SAAU,OAAO,MAAM,SAAS;AACjD,cAAI,eAAe,KAAK,KAAK,MAAM,QAAQ,cAAc,IAAM,KAAK,OAAO,MAAM;AACjF,cAAI,eAAe,IAAI;AACrB,2BAAe;AAAA,UACjB,WAAW,eAAe,IAAI;AAC5B,2BAAe;AAAA,UACjB;AACA,cAAI,CAAC,QAAQ,OAAO,EAAE,MAAM,UAAU;AACpC,oBAAQ,OAAO,EAAE,MAAM,WAAW,SAAU,OAAO;AACjD,sBAAQ,MAAM,KAAK,iBAAiB,KAAK,CAAC;AAC1C,kBAAI,MAAM,SAAS,cAAc;AAC/B,uBAAO,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI;AAAA,cAChD,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,qBAAqB,SAAU,OAAO,SAAS,WAAW;AAC5D,cAAI,gBAAgB;AAAA,YAClB,QAAQ,MAAM,QAAQ;AAAA,YACtB,QAAQ,MAAM,QAAQ;AAAA,YACtB,WAAW,MAAM,QAAQ;AAAA,YACzB,SAAS,MAAM,QAAQ;AAAA,YACvB,WAAW,MAAM,QAAQ;AAAA,YACzB,OAAO,MAAM,QAAQ;AAAA,YACrB,OAAO,MAAM,QAAQ;AAAA,UACvB;AAEA,cAAI,MAAM,QAAQ,OAAO;AACvB,gBAAI,SAAS,MAAM;AACnB,gBAAI,cAAc,OAAO;AACvB,uBAAS,CAAC,EAAC,MAAM,OAAM,CAAC;AAAA,YAC1B;AAGA,gBAAI,MAAM;AACV,qBAASrB,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,kBAAIsB,KAAI,OAAOtB,EAAC;AAChB,uBAASC,KAAI,GAAGA,KAAIqB,GAAE,KAAK,QAAQrB,MAAK;AACtC,oBAAIqB,GAAE,KAAKrB,EAAC,EAAE,CAAC,IAAI,KAAK;AACtB,wBAAMqB,GAAE,KAAKrB,EAAC,EAAE,CAAC;AAAA,gBACnB;AAAA,cACF;AAAA,YACF;AAGA,gBAAI,QAAQ;AACZ,mBAAO,OAAO,MAAM;AAClB,uBAAS;AACT,qBAAO;AAAA,YACT;AAGA,0BAAc,YAAY;AAAA,UAC5B;AAEA,cAAI,cAAc,OAAO;AACvB,gBAAI,OAAO,QAAQ,OAAO;AAC1B,gBAAI,cAAc,OAAO;AACvB,qBAAO,QAAQ,OAAO;AAAA,YACxB;AAEA,gBAAI,cAAc,WAAW;AAC3B,kBAAI,CAAC,KAAK,MAAM,UAAU;AACxB,qBAAK,MAAM,WAAW,cAAc,YAAY;AAAA,cAClD;AACA,kBAAI,CAAC,KAAK,MAAM,eAAe;AAC7B,qBAAK,MAAM,gBAAgB;AAAA,cAC7B;AAAA,YACF;AAEA,gBAAI,CAAC,KAAK,MAAM,UAAU;AACxB,mBAAK,MAAM,WAAW,SAAU,OAAO;AACrC,uBAAO,YAAY,IAAI,OAAO,eAAe,IAAI;AAAA,cACnD;AAAA,YACF;AAAA,UACF;AAEA,cAAI,CAAC,QAAQ,QAAQ,QAAQ,UAAU,OAAO;AAC5C,gBAAI,cAAc,WAAW;AAC3B,sBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAC3D,oBAAI,QAAQ,QAAQ,QAAQ,SAAS;AACrC,oBAAI,OAAO;AACT,2BAAS;AAAA,gBACX;AACA,uBAAO,QAAQ,MAAM,QAAQ,QAAQ,OAAO,QAAQ,iBAAiB;AAAA,cACvE;AAAA,YACF,WAAW,cAAc,UAAU;AACjC,sBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAC3D,oBAAI,QAAQ,QAAQ,QAAQ,SAAS;AACrC,oBAAI,OAAO;AACT,2BAAS;AAAA,gBACX;AACA,oBAAI,YAAY,QAAQ;AACxB,uBAAO,QAAQ,MAAM,UAAU,IAAI,OAAO,UAAU,IAAI,OAAO,UAAU,IAAI;AAAA,cAC/E;AAAA,YACF,WAAW,cAAc,OAAO;AAE9B,sBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAC3D,oBAAI,YAAY,QAAQ;AACxB,oBAAI,QAAQ;AAEZ,oBAAIL,SAAQ,SAAS,GAAG;AAGtB,8BAAY,UAAU,MAAM;AAC5B,4BAAU,CAAC,KAAK;AAAA,gBAClB,OAAO;AACL,+BAAa;AAAA,gBACf;AAEA,uBAAO,YAAY,WAAW,QAAQ,QAAQ,aAAa;AAAA,cAC7D;AAAA,YACF,OAAO;AACL,kBAAI,aAAa,cAAc,QAAQ,MAAM;AAC7C,sBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAE3D,oBAAI,QAAQ,OAAO,UAAU,MAAM,MAAM;AACvC;AAAA,gBACF;AAEA,oBAAI,QAAQ,QAAQ,QAAQ,SAAS;AACrC,oBAAI,OAAO;AACT,2BAAS;AAAA,gBACX;AACA,uBAAO,YAAY,OAAO,QAAQ,OAAO,UAAU,GAAG,aAAa;AAAA,cACrE;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,cAAc,cAAcG,OAAM,aAAa,gBAAgB,GAAG,cAAc,YAAY,UAAU,UAAU,cAAc,aAAa,WAAW;AAE1J,YAAI,kBAAkB,SAAU,OAAO,SAAS,WAAW;AACzD,cAAI,WAAW,CAAC;AAChB,cAAI,SAAS,CAAC;AAEd,cAAIwB,UAAS,MAAM,QAAQ,UAAU;AAErC,cAAI,MAAM;AACV,cAAI,OAAO;AACX,cAAI;AACJ,cAAI,QAAQ;AACZ,cAAI,OAAO;AACX,cAAI,OAAO;AACX,cAAI,SAAS;AAEb,cAAI,SAAS,MAAM;AAEnB,cAAI,MAAM;AACV,cAAI,cAAc,UAAU;AAC1B,qBAAS,MAAM,GAAG,MAAM,OAAO,QAAQ,OAAO;AAC5C,kBAAI,MAAM,OAAO,GAAG;AACpB,uBAAS,MAAM,GAAG,MAAM,IAAI,KAAK,QAAQ,OAAO;AAC9C,oBAAI,IAAI,KAAK,GAAG,EAAE,CAAC,IAAI,KAAK;AAC1B,wBAAM,IAAI,KAAK,GAAG,EAAE,CAAC;AAAA,gBACvB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAIvB,IAAGC,IAAGqB,IAAGP,IAAG,KAAK,OAAO,CAAC,GAAG,QAAQ,CAAC;AAEzC,cAAI,cAAc,SAAS,cAAc,YAAa,MAAM,UAAU,YAAY,MAAM,UAAU,UAAW;AAC3G,gBAAI,eAAe,CAAC;AAEpB,iBAAKf,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,cAAAsB,KAAI,OAAOtB,EAAC;AAEZ,mBAAKC,KAAI,GAAGA,KAAIqB,GAAE,KAAK,QAAQrB,MAAK;AAClC,gBAAAc,KAAIO,GAAE,KAAKrB,EAAC;AACZ,sBAAM,MAAM,SAAS,aAAac,GAAE,CAAC,EAAE,QAAQ,IAAIA,GAAE,CAAC;AACtD,oBAAI,CAAC,KAAK,GAAG,GAAG;AACd,uBAAK,GAAG,IAAI,IAAI,MAAM,OAAO,MAAM;AAAA,gBACrC;AACA,qBAAK,GAAG,EAAEf,EAAC,IAAI,QAAQe,GAAE,CAAC,CAAC;AAC3B,oBAAI,aAAa,QAAQ,GAAG,MAAM,IAAI;AACpC,+BAAa,KAAK,GAAG;AAAA,gBACvB;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,MAAM,UAAU,cAAc,MAAM,UAAU,UAAU;AAC1D,2BAAa,KAAK,YAAY;AAAA,YAChC;AAEA,iBAAKd,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,oBAAM,KAAK,CAAC,CAAC;AAAA,YACf;AAEA,gBAAI;AACJ,gBAAIuB;AACJ,iBAAKA,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK;AACxC,cAAAxB,KAAI,aAAawB,EAAC;AAClB,kBAAI,MAAM,UAAU,YAAY;AAC9B,wBAAQ,IAAI,KAAK,QAAQxB,EAAC,CAAC;AAE3B,sBAAM,OAAO,MAAM,KAAK;AACxB,oBAAI,CAAC,WAAW;AACd,8BAAY,MAAM,OAAO;AAAA,gBAC3B;AACA,uBAAO,QAAQ,OAAO,OAAO,SAAS;AACtC,wBAAQ,SAAS,QAAQ,KAAK;AAC9B,uBAAO,QAAQ,OAAO,KAAK;AAC3B,uBAAO,QAAQ,OAAO,KAAK;AAC3B,yBAAS,UAAU,SAAS,KAAK;AAAA,cACnC,OAAO;AACL,wBAAQA;AAAA,cACV;AACA,qBAAO,KAAK,KAAK;AACjB,mBAAKC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAElC,sBAAMA,EAAC,EAAE,KAAK,KAAKD,EAAC,EAAEC,EAAC,MAAM,SAAY,OAAO,KAAKD,EAAC,EAAEC,EAAC,CAAC;AAAA,cAC5D;AAAA,YACF;AAAA,UACF,OAAO;AACL,qBAAS,MAAM,GAAG,MAAM,OAAO,QAAQ,OAAO;AAC5C,kBAAI,MAAM,OAAO,GAAG;AACpB,kBAAI,MAAM,CAAC;AACX,uBAAS,MAAM,GAAG,MAAM,IAAI,KAAK,QAAQ,OAAO;AAC9C,oBAAI,QAAQ;AAAA,kBACV,GAAG,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,kBAC3B,GAAG,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,gBAC7B;AACA,oBAAI,cAAc,UAAU;AAC1B,wBAAM,IAAI,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK;AAE3C,wBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AAAA,gBAC3B;AACA,oBAAI,KAAK,KAAK;AAAA,cAChB;AACA,oBAAM,KAAK,GAAG;AAAA,YAChB;AAAA,UACF;AAEA,cAAIwB;AACJ,cAAI;AAEJ,eAAKzB,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,YAAAsB,KAAI,OAAOtB,EAAC;AAGZ,gBAAI,MAAM,QAAQ,UAAU,MAAM,uBAAuB,cAAc,SAAS,cAAc,aAAa,CAACsB,GAAE,SAAS1B,SAAQ,MAAM,QAAQ,MAAM,KAAK,CAACA,SAAQ,MAAM,QAAQ,OAAO,CAAC,CAAC,GAAG;AACzL,cAAA6B,SAAQF;AACR,gCAAkB,CAAC;AACnB,uBAAS,MAAM,GAAG,MAAMA,QAAO,QAAQ,OAAO;AAC5C,gCAAgB,GAAG,IAAI,WAAWE,OAAM,GAAG,GAAG,GAAG;AAAA,cACnD;AAAA,YACF,OAAO;AACL,cAAAA,SAAQH,GAAE,SAASC,QAAOvB,EAAC;AAC3B,gCAAkB,cAAc,SAAS,WAAWyB,QAAO,GAAG,IAAIA;AAAA,YACpE;AAEA,gBAAI,UAAU;AAAA,cACZ,OAAOH,GAAE,QAAQ;AAAA,cACjB,MAAM,MAAMtB,EAAC;AAAA,cACb,MAAM,cAAc;AAAA,cACpB,aAAayB;AAAA,cACb;AAAA,cACA,aAAa;AAAA,YACf;AAEA,gBAAI,aAAa,cAAc,UAAU,cAAc,UAAU,cAAc,aAAa,cAAc;AAC1G,gBAAI,YAAY;AACd,sBAAQ,uBAAuBA;AAC/B,sBAAQ,4BAA4BA;AACpC,sBAAQ,iBAAiB;AAAA,YAC3B;AAEA,gBAAI,cAAc,UAAU;AAC1B,sBAAQ,uBAAuB;AAC/B,sBAAQ,4BAA4B;AACpC,sBAAQ,wBAAwB;AAAA,YAClC;AAEA,gBAAIH,GAAE,OAAO;AACX,sBAAQ,QAAQA,GAAE;AAAA,YACpB;AAEA,gBAAI,QAAQ,aAAa,OAAOA,IAAG,OAAO;AAC1C,gBAAI,UAAU,OAAO;AACnB,sBAAQ,UAAU;AAAA,YACpB,WAAW,YAAY;AACrB,sBAAQ,UAAU;AAAA,YACpB;AAEA,gBAAI,SAAS,aAAa,OAAOA,IAAG,QAAQ;AAC5C,gBAAI,WAAW,OAAO;AACpB,sBAAQ,cAAc;AACtB,sBAAQ,mBAAmB;AAAA,YAC7B;AAEA,sBAAUvB,OAAM,SAAS,MAAM,QAAQ,WAAW,CAAC,CAAC;AACpD,sBAAUA,OAAM,SAASuB,GAAE,WAAW,CAAC,CAAC;AACxC,sBAAUvB,OAAM,SAASuB,GAAE,WAAW,CAAC,CAAC;AAExC,qBAAS,KAAK,OAAO;AAAA,UACvB;AAEA,cAAI,OAAO,MAAM,QAAQ;AACzB,cAAI,OAAO,MAAM,QAAQ;AAEzB,cAAI,MAAM,UAAU,YAAY;AAC9B,gBAAI,QAAQ,IAAI,GAAG;AACjB,sBAAQ,OAAO,EAAE,MAAMnB,QAAO,IAAI,EAAE,QAAQ;AAAA,YAC9C;AACA,gBAAI,QAAQ,IAAI,GAAG;AACjB,sBAAQ,OAAO,EAAE,MAAMA,QAAO,IAAI,EAAE,QAAQ;AAAA,YAC9C;AAAA,UACF,WAAW,MAAM,UAAU,UAAU;AACnC,gBAAI,QAAQ,IAAI,GAAG;AACjB,sBAAQ,OAAO,EAAE,MAAM;AAAA,YACzB;AACA,gBAAI,QAAQ,IAAI,GAAG;AACjB,sBAAQ,OAAO,EAAE,MAAM;AAAA,YACzB;AAAA,UACF;AAGA,cAAI,MAAM,UAAU,cAAc,OAAO,WAAW,GAAG;AACrD,gBAAI,QAAQ,IAAI,GAAG;AACjB,qBAAO,KAAKA,QAAO,IAAI,CAAC;AAAA,YAC1B;AACA,gBAAI,QAAQ,IAAI,GAAG;AACjB,qBAAO,KAAKA,QAAO,IAAI,CAAC;AAAA,YAC1B;AACA,kBAAM;AACN,mBAAO;AACP,oBAAQ;AACR,mBAAO;AACP,mBAAO;AACP,qBAAS;AAAA,UACX;AAEA,cAAI,MAAM,UAAU,cAAc,OAAO,SAAS,GAAG;AACnD,gBAAIuB,YAAW,QAAQ,IAAI,IAAIvB,QAAO,IAAI,IAAI,OAAO,CAAC,GAAG,QAAQ;AACjE,gBAAIwB,YAAW,QAAQ,IAAI,IAAIxB,QAAO,IAAI,IAAI,OAAO,CAAC,GAAG,QAAQ;AAEjE,iBAAKH,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,kBAAI,UAAU,OAAOA,EAAC,EAAE,QAAQ;AAChC,kBAAI,UAAU0B,UAAS;AACrB,gBAAAA,WAAU;AAAA,cACZ;AACA,kBAAI,UAAUC,UAAS;AACrB,gBAAAA,WAAU;AAAA,cACZ;AAAA,YACF;AAEA,gBAAI,YAAYA,WAAUD,aAAY,QAAQ;AAE9C,gBAAI,CAAC,QAAQ,OAAO,EAAE,KAAK,MAAM;AAC/B,kBAAI;AACJ,kBAAI,QAAQ,WAAW,MAAM,IAAI;AAC/B,wBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,uBAAO;AAAA,cACT,WAAW,SAAS,WAAW,KAAK,IAAI;AACtC,wBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,uBAAO;AAAA,cACT,WAAW,OAAO,WAAW,IAAI;AAC/B,wBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,uBAAO;AAAA,cACT,WAAW,QAAQ,WAAW,KAAK;AACjC,wBAAQ,OAAO,EAAE,KAAK,iBAAiB,EAAC,MAAM,aAAY;AAC1D,wBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,uBAAO,IAAI;AAAA,cACb,WAAW,QAAQ;AACjB,wBAAQ,OAAO,EAAE,KAAK,iBAAiB,EAAC,QAAQ,SAAQ;AACxD,wBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,uBAAO,IAAI,KAAO;AAAA,cACpB;AAEA,kBAAI,QAAQ,WAAW,GAAG;AAExB,oBAAI,QAAQ,MAAM,QAAQ;AAC1B,oBAAI,QAAQ,GAAG;AACb,sBAAI,eAAe,KAAK,KAAK,WAAW,QAAQ,QAAQ,IAAM;AAC9D,sBAAI,QAAQ,SAAS,GAAG;AACtB,mCAAe,KAAK,KAAK,eAAe,CAAG,IAAI;AAAA,kBACjD;AACA,0BAAQ,OAAO,EAAE,KAAK,WAAW;AAAA,gBACnC;AAAA,cACF;AAAA,YACF;AAEA,gBAAI,CAAC,QAAQ,OAAO,EAAE,KAAK,eAAe;AACxC,kBAAI,KAAK;AACP,wBAAQ,OAAO,EAAE,KAAK,gBAAgB;AAAA,cACxC,WAAW,MAAM;AACf,wBAAQ,OAAO,EAAE,KAAK,gBAAgB;AAAA,cACxC,WAAW,QAAQ;AACjB,wBAAQ,OAAO,EAAE,KAAK,gBAAgB;AAAA,cACxC;AAAA,YACF;AAAA,UACF;AAEA,cAAI,OAAO;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAEA,YAAI,kBAAkB,SAASE,eAAc,SAAS;AACpD,eAAK,OAAO;AACZ,eAAK,UAAU;AAAA,QACjB;AAEA,wBAAgB,UAAU,kBAAkB,SAAS,gBAAiB,OAAO,WAAW;AACtF,cAAI,eAAe,CAAC;AAEpB,cAAI,CAAC,MAAM,QAAQ,OAAO,SAAS,MAAM,IAAI,GAAG;AAC9C,yBAAa,MAAM;AAAA,UACrB;AAEA,cAAI,UAAU,YAAY,OAAO7B,OAAM,cAAc,MAAM,OAAO,CAAC;AACnE,6BAAmB,OAAO,SAAS,SAAS;AAE5C,cAAI,OAAO,gBAAgB,OAAO,SAAS,aAAa,MAAM;AAE9D,cAAI,MAAM,UAAU,UAAU;AAC5B,oBAAQ,OAAO,EAAE,OAAO,QAAQ,OAAO,EAAE,QAAQ;AACjD,oBAAQ,OAAO,EAAE,WAAW,QAAQ,OAAO,EAAE,YAAW;AAAA,UAC1D,OAAO;AACL,oBAAQ,OAAO,EAAE,OAAO,MAAM,UAAU,WAAW,aAAa;AAAA,UAClE;AAEA,eAAK,UAAU,OAAO,QAAQ,MAAM,OAAO;AAAA,QAC7C;AAEA,wBAAgB,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACzE,cAAI,UAAUA,OAAM,CAAC,GAAG,WAAW;AACnC,cAAI,MAAM,QAAQ,OAAO;AACvB,oBAAQ,SAAS;AAAA,UACnB;AAEA,cAAI,YAAY,MAAM,SAAS;AAC7B,yBAAa,SAAS,MAAM,QAAQ,MAAM;AAAA,UAC5C;AAEA,cAAI,MAAM,QAAQ,OAAO;AACvB,uBAAW,SAAS,MAAM,QAAQ,KAAK;AAAA,UACzC;AAEA,oBAAUA,OAAM,SAAS,MAAM,QAAQ,WAAW,CAAC,CAAC;AACpD,6BAAmB,OAAO,SAAS,KAAK;AAExC,cAAI,SAAS,CAAC;AACd,cAAI,SAAS,CAAC;AACd,mBAASC,KAAI,GAAGA,KAAI,MAAM,KAAK,QAAQA,MAAK;AAC1C,gBAAI,QAAQ,MAAM,KAAKA,EAAC;AACxB,mBAAO,KAAK,MAAM,CAAC,CAAC;AACpB,mBAAO,KAAK,MAAM,CAAC,CAAC;AAAA,UACtB;AAEA,cAAI,UAAU;AAAA,YACZ,MAAM;AAAA,YACN,iBAAiB,MAAM,QAAQ,UAAU;AAAA,UAC3C;AACA,oBAAUD,OAAM,SAAS,MAAM,QAAQ,WAAW,CAAC,CAAC;AAEpD,cAAI,OAAO;AAAA,YACT;AAAA,YACA,UAAU,CAAC,OAAO;AAAA,UACpB;AAEA,eAAK,UAAU,OAAO,OAAO,MAAM,OAAO;AAAA,QAC5C;AAEA,wBAAgB,UAAU,oBAAoB,SAAS,kBAAmB,OAAO,WAAW;AAC1F,cAAI;AACJ,cAAI,cAAc,OAAO;AACvB,gBAAI,aAAaA,OAAM,aAAa,gBAAgB;AACpD,uBAAW,YAAY;AAGvB,uBAAW,OAAO,EAAE,KAAK,kBAAkB;AAC3C,uBAAW,OAAO,EAAE,KAAK,kBAAkB;AAC3C,mBAAO,WAAW,OAAO,EAAE,MAAM;AAEjC,sBAAU,cAAc,YAAY,cAAc,YAAY,aAAa,aAAa,cAAc,aAAa,WAAW,EAAE,OAAO,MAAM,OAAO;AAAA,UACtJ,OAAO;AACL,sBAAU,YAAY,OAAO,MAAM,OAAO;AAAA,UAC5C;AACA,6BAAmB,OAAO,SAAS,SAAS;AAC5C,cAAI,OAAO,gBAAgB,OAAO,SAAS,QAAQ;AACnD,cAAI,cAAc,OAAO;AACvB,yBAAa,OAAO,MAAM,OAAO;AAAA,UACnC;AACA,eAAK,UAAU,OAAO,OAAO,MAAM,OAAO;AAAA,QAC5C;AAEA,wBAAgB,UAAU,kBAAkB,SAAS,gBAAiB,OAAO;AAC3E,eAAK,gBAAgB,OAAO,MAAM;AAAA,QACpC;AAEA,wBAAgB,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACzE,eAAK,kBAAkB,OAAO,KAAK;AAAA,QACrC;AAEA,wBAAgB,UAAU,qBAAqB,SAAS,mBAAoB,OAAO,WAAW;AAC5F,sBAAY,aAAa;AAEzB,cAAI,UAAU,YAAY,OAAO,MAAM,OAAO;AAC9C,6BAAmB,OAAO,SAAS,SAAS;AAE5C,cAAI,EAAE,cAAc,UAAU;AAC5B,oBAAQ,WAAW;AAAA,UACrB;AAEA,cAAI,OAAO,gBAAgB,OAAO,SAAS,SAAS;AAEpD,kBAAQ,OAAO,EAAE,OAAO,QAAQ,OAAO,EAAE,QAAQ;AACjD,kBAAQ,OAAO,EAAE,WAAW,QAAQ,OAAO,EAAE,YAAY;AAGzD,cAAI,EAAE,UAAU,QAAQ,cAAc;AACpC,oBAAQ,YAAY,OAAO;AAAA,UAC7B;AAEA,eAAK,UAAU,OAAO,WAAW,MAAM,OAAO;AAAA,QAChD;AAEA,wBAAgB,UAAU,oBAAoB,SAAS,kBAAmB,OAAO;AAC/E,eAAK,mBAAmB,OAAO,QAAQ;AAAA,QACzC;AAEA,wBAAgB,UAAU,UAAU,SAAS8B,SAAS,OAAO;AAC3D,cAAI,MAAM,OAAO;AACf,kBAAM,MAAM,QAAQ;AAAA,UACtB;AAAA,QACF;AAEA,wBAAgB,UAAU,YAAY,SAAS,UAAW,OAAO,MAAM,MAAM,SAAS;AACpF,eAAK,QAAQ,KAAK;AAClB,cAAI,MAAM,WAAW;AAAE;AAAA,UAAQ;AAE/B,cAAI,eAAe;AAAA,YACjB;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAEA,cAAI,MAAM,QAAQ,MAAM;AACtB,mBAAO,QAAQ,IAAI,oBAAoB,KAAK,UAAU,YAAY,IAAI,IAAI;AAAA,UAC5E;AAEA,gBAAM,QAAQ,YAAY;AAC1B,cAAI,MAAM,MAAM,QAAQ,qBAAqB,QAAQ,EAAE,CAAC;AACxD,gBAAM,QAAQ,IAAI,KAAK,QAAQ,KAAK,YAAY;AAAA,QAClD;AAEA,YAAI,mBAAmB;AAAA,UACrB,OAAO,CAAC;AAAA,UACR,OAAO;AAAA,YACL,OAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,YACA,QAAQ;AAAA,cACN,OAAO;AAAA,gBACL,UAAU;AAAA,cACZ;AAAA,YACF;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,OAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,YACA,QAAQ;AAAA,cACN,OAAO;AAAA,gBACL,UAAU;AAAA,cACZ;AAAA,YACF;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,UACA,SAAS;AAAA,YACP,SAAS;AAAA,UACX;AAAA,UACA,QAAQ;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,SAAS;AAAA,YACP,OAAO;AAAA,cACL,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,UACA,aAAa;AAAA,YACX,YAAY,CAAC;AAAA,YACb,MAAM,CAAC;AAAA,YACP,QAAQ;AAAA,cACN,QAAQ,CAAC;AAAA,YACX;AAAA,UACF;AAAA,UACA,MAAM;AAAA,YACJ,QAAQ;AAAA,UACV;AAAA,QACF;AAEA,YAAI,eAAe,SAAU,SAAS,QAAQvB,aAAY;AACxD,cAAI,WAAW,QAAW;AACxB,oBAAQ,OAAO,UAAU,CAAC,CAAC;AAC3B,gBAAI,UAAU,WAAW,MAAM;AAC7B,kBAAI,WAAW,SAAS,WAAW,UAAU;AAC3C,wBAAQ,OAAO,gBAAgB;AAAA,cACjC,OAAO;AACL,wBAAQ,OAAO,SAAS;AACxB,wBAAQ,OAAO,gBAAgB;AAC/B,wBAAQ,OAAO,QAAQ;AAAA,cACzB;AAAA,YACF;AAAA,UACF,WAAWA,aAAY;AACrB,oBAAQ,OAAO,UAAU;AAAA,UAC3B;AAAA,QACF;AAEA,YAAI,aAAa,SAAU,SAAS,OAAO;AACzC,kBAAQ,MAAM,OAAO;AAAA,QACvB;AAEA,YAAI,WAAW,SAAU,SAAS,KAAK;AACrC,kBAAQ,MAAM,MAAM;AAAA,QACtB;AAEA,YAAI,WAAW,SAAU,SAAS,KAAK;AACrC,kBAAQ,MAAM,MAAM;AAAA,QACtB;AAEA,YAAI,eAAe,SAAU,SAAS,SAAS;AAC7C,cAAI,eAAe,UAAW,YAAY,OAAO,WAAW,UAAW;AACvE,kBAAQ,YAAY,OAAO,WAAW;AACtC,kBAAQ,YAAY,KAAK,WAAW;AACpC,kBAAQ,YAAY,WAAW,WAAW;AAAA,QAC5C;AAEA,YAAI,cAAc,SAAU,SAAS,OAAO;AAC1C,kBAAQ,MAAM,MAAM,OAAO;AAAA,QAC7B;AAEA,YAAI,cAAc,SAAU,SAAS,OAAO;AAC1C,kBAAQ,MAAM,MAAM,OAAO;AAAA,QAC7B;AAEA,YAAI,cAAc,cAAc,kBAAkB,cAAc,YAAY,UAAU,UAAU,cAAc,aAAa,WAAW;AAEtI,YAAI,mBAAmB,SAAS,OAAO,SAAS,WAAW;AACzD,cAAI,gBAAgB;AAAA,YAClB,QAAQ,MAAM,QAAQ;AAAA,YACtB,QAAQ,MAAM,QAAQ;AAAA,YACtB,WAAW,MAAM,QAAQ;AAAA,YACzB,SAAS,MAAM,QAAQ;AAAA,YACvB,WAAW,MAAM,QAAQ;AAAA,YACzB,OAAO,MAAM,QAAQ;AAAA,YACrB,OAAO,MAAM,QAAQ;AAAA,UACvB;AAGA,cAAI,cAAc,SAAS,CAACV,SAAQ,QAAQ,KAAK,KAAK,CAAC,QAAQ,MAAM,OAAO,WAAW;AACrF,oBAAQ,MAAM,OAAO,YAAY,WAAY;AAC3C,qBAAO,YAAY,IAAI,KAAK,OAAO,aAAa;AAAA,YAClD;AAAA,UACF;AAEA,cAAI,CAAC,QAAQ,QAAQ,kBAAkB,CAAC,QAAQ,QAAQ,aAAa;AACnE,oBAAQ,QAAQ,iBAAiB,WAAY;AAC3C,qBAAO,wBAAwB,KAAK,QAAQ,qBAAqB,YAAY,KAAK,OAAO,OAAO,SAAS,KAAK,GAAG,aAAa,IAAI;AAAA,YACpI;AAAA,UACF;AAAA,QACF;AAEA,YAAI,kBAAkB,SAASgC,eAAc,SAAS;AACpD,eAAK,OAAO;AACZ,eAAK,UAAU;AAAA,QACjB;AAEA,wBAAgB,UAAU,kBAAkB,SAAS,gBAAiB,OAAO,WAAW;AACtF,sBAAY,aAAa;AACzB,cAAI,eAAe,CAAC;AACpB,cAAI,cAAc,cAAc;AAC9B,2BAAe;AAAA,cACb,aAAa;AAAA,gBACX,YAAY;AAAA,kBACV,UAAU;AAAA,gBACZ;AAAA,gBACA,MAAM;AAAA,kBACJ,UAAU;AAAA,gBACZ;AAAA,gBACA,QAAQ;AAAA,kBACN,QAAQ;AAAA,oBACN,SAAS;AAAA,kBACX;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,cAAI,MAAM,QAAQ,UAAU,OAAO;AACjC,gBAAI,cAAc,cAAc;AAC9B,0BAAY;AAAA,YACd,WAAW,cAAc,UAAU;AACjC,0BAAY;AAAA,YACd;AAAA,UACF;AAEA,cAAI,UAAU,YAAY,OAAO,MAAM,SAAS,YAAY,GAAG,MAAM5B,IAAGC;AACxE,cAAI,MAAM,UAAU,UAAU;AAC5B,oBAAQ,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAAA,UAC7C,OAAO;AACL,oBAAQ,MAAM,OAAO,MAAM,UAAU,WAAW,aAAa;AAAA,UAC/D;AACA,cAAI,CAAC,QAAQ,MAAM,MAAM;AACvB,oBAAQ,MAAM,OAAO;AAAA,UACvB;AACA,2BAAiB,OAAO,SAAS,SAAS;AAE1C,cAAI,SAAS,MAAM;AACnB,eAAKD,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,mBAAOA,EAAC,EAAE,OAAO,OAAOA,EAAC,EAAE,QAAQ;AACnC,mBAAO,OAAOA,EAAC,EAAE;AACjB,gBAAI,MAAM,UAAU,YAAY;AAC9B,mBAAKC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,qBAAKA,EAAC,EAAE,CAAC,IAAI,KAAKA,EAAC,EAAE,CAAC,EAAE,QAAQ;AAAA,cAClC;AAAA,YACF;AACA,mBAAOD,EAAC,EAAE,SAAS,EAAC,QAAQ,SAAQ;AACpC,gBAAI,MAAM,QAAQ,WAAW,OAAO;AAClC,qBAAOA,EAAC,EAAE,OAAO,UAAU;AAAA,YAC7B;AAAA,UACF;AAEA,eAAK,UAAU,OAAO,QAAQ,OAAO;AAAA,QACvC;AAEA,wBAAgB,UAAU,qBAAqB,SAAS,mBAAoB,OAAO;AACjF,cAAI,UAAU,YAAY,OAAO,MAAM,SAAS,CAAC,CAAC;AAClD,kBAAQ,MAAM,OAAO;AACrB,eAAK,UAAU,OAAO,MAAM,MAAM,OAAO;AAAA,QAC3C;AAEA,wBAAgB,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACzE,cAAI,eAAeD,OAAM,kBAAkB,CAAC,CAAC;AAE7C,cAAI,MAAM,QAAQ,QAAQ;AACxB,yBAAa,SAAS,MAAM,QAAQ;AAAA,UACtC;AACA,cAAI,MAAM,QAAQ,OAAO;AACvB,yBAAa,cAAc,EAAC,KAAK,EAAC,WAAW,MAAK,EAAC;AAAA,UACrD;AAEA,cAAI,YAAY,MAAM,SAAS;AAC7B,yBAAa,cAAc,MAAM,QAAQ,MAAM;AAAA,UACjD;AAEA,cAAI,MAAM,QAAQ,OAAO;AACvB,uBAAW,cAAc,MAAM,QAAQ,KAAK;AAAA,UAC9C;AAEA,cAAI,UAAUA,OAAM,cAAc,MAAM,QAAQ,WAAW,CAAC,CAAC;AAC7D,2BAAiB,OAAO,SAAS,KAAK;AACtC,cAAI,SAAS,CAAC;AAAA,YACZ,MAAM;AAAA,YACN,MAAM,MAAM,QAAQ,SAAS;AAAA,YAC7B,MAAM,MAAM;AAAA,UACd,CAAC;AAED,eAAK,UAAU,OAAO,QAAQ,OAAO;AAAA,QACvC;AAEA,wBAAgB,UAAU,oBAAoB,SAAS,kBAAmB,OAAO,WAAW;AAC1F,sBAAY,aAAa;AACzB,cAAI,SAAS,MAAM;AACnB,cAAI,UAAU,YAAY,OAAO,MAAM,OAAO,GAAGC,IAAGC,IAAGqB,IAAGP,IAAG,OAAO,CAAC,GAAG,aAAa,CAAC;AACtF,kBAAQ,MAAM,OAAO;AACrB,2BAAiB,OAAO,SAAS,SAAS;AAE1C,eAAKf,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,YAAAsB,KAAI,OAAOtB,EAAC;AAEZ,iBAAKC,KAAI,GAAGA,KAAIqB,GAAE,KAAK,QAAQrB,MAAK;AAClC,cAAAc,KAAIO,GAAE,KAAKrB,EAAC;AACZ,kBAAI,CAAC,KAAKc,GAAE,CAAC,CAAC,GAAG;AACf,qBAAKA,GAAE,CAAC,CAAC,IAAI,IAAI,MAAM,OAAO,MAAM;AACpC,2BAAW,KAAKA,GAAE,CAAC,CAAC;AAAA,cACtB;AACA,mBAAKA,GAAE,CAAC,CAAC,EAAEf,EAAC,IAAIe,GAAE,CAAC;AAAA,YACrB;AAAA,UACF;AAEA,cAAI,MAAM,UAAU,UAAU;AAC5B,uBAAW,KAAK,YAAY;AAAA,UAC9B;AAEA,kBAAQ,MAAM,aAAa;AAE3B,cAAI,YAAY,CAAC,GAAGe;AACpB,eAAK9B,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,YAAAe,KAAI,CAAC;AACL,iBAAKd,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACtC,cAAAc,GAAE,KAAK,KAAK,WAAWd,EAAC,CAAC,EAAED,EAAC,KAAK,CAAC;AAAA,YACpC;AAEA,YAAA8B,MAAK;AAAA,cACH,MAAM,OAAO9B,EAAC,EAAE,QAAQ;AAAA,cACxB,MAAMe;AAAA,YACR;AACA,gBAAI,OAAOf,EAAC,EAAE,OAAO;AACnB,cAAA8B,IAAG,QAAQ,OAAO9B,EAAC,EAAE;AAAA,YACvB;AAEA,sBAAU,KAAK8B,GAAE;AAAA,UACnB;AAEA,eAAK,UAAU,OAAO,WAAW,OAAO;AAAA,QAC1C;AAEA,wBAAgB,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACzE,eAAK,kBAAkB,OAAO,KAAK;AAAA,QACrC;AAEA,wBAAgB,UAAU,kBAAkB,SAAS,gBAAiB,OAAO;AAC3E,eAAK,gBAAgB,OAAO,YAAY;AAAA,QAC1C;AAEA,wBAAgB,UAAU,UAAU,SAASD,SAAS,OAAO;AAC3D,cAAI,MAAM,OAAO;AACf,kBAAM,MAAM,QAAQ;AAAA,UACtB;AAAA,QACF;AAEA,wBAAgB,UAAU,YAAY,SAAS,UAAW,OAAO,MAAM,SAAS;AAC9E,eAAK,QAAQ,KAAK;AAClB,cAAI,MAAM,WAAW;AAAE;AAAA,UAAQ;AAE/B,kBAAQ,MAAM,WAAW,MAAM,QAAQ;AACvC,kBAAQ,SAAS;AAEjB,cAAI,MAAM,QAAQ,MAAM;AACtB,mBAAO,QAAQ,IAAI,0BAA0B,KAAK,UAAU,OAAO,IAAI,IAAI;AAAA,UAC7E;AAEA,gBAAM,QAAQ,IAAI,KAAK,QAAQ,MAAM,OAAO;AAAA,QAC9C;AAEA,YAAI,SAAS,CAAC;AACd,YAAI,YAAY,CAAC;AAGjB,YAAIxB,kBAAiB;AAAA,UACnB,WAAW,CAAC;AAAA,UACZ,UAAU;AAAA,UACV,WAAW;AAAA,UACX,QAAQ;AAAA,YACN,WAAW;AAAA,cACT,UAAU;AAAA,cACV,OAAO;AAAA,YACT;AAAA,YACA,WAAW;AAAA,YACX,UAAU;AAAA,UACZ;AAAA,UACA,WAAW;AAAA,UACX,OAAO;AAAA,YACL,WAAW;AAAA,cACT,OAAO;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,YACA,gBAAgB,CAAC;AAAA,YACjB,WAAW;AAAA,cACT,OAAO;AAAA,YACT;AAAA,YACA,eAAe;AAAA,YACf,YAAY,CAAC;AAAA,UACf;AAAA,UACA,OAAO;AAAA,YACL,WAAW;AAAA,cACT,OAAO;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,YACA,gBAAgB,CAAC;AAAA,YACjB,eAAe;AAAA,YACf,YAAY,CAAC;AAAA,UACf;AAAA,UACA,SAAS;AAAA,YACP,WAAW;AAAA,cACT,OAAO;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAEA,YAAI,aAAa,SAAU,SAAS,QAAQC,aAAY;AACtD,cAAI,WAAW,QAAW;AACxB,gBAAI;AACJ,gBAAI,CAAC,QAAQ;AACX,yBAAW;AAAA,YACb,WAAW,WAAW,MAAM;AAC1B,yBAAW;AAAA,YACb,OAAO;AACL,yBAAW;AAAA,YACb;AACA,oBAAQ,OAAO,WAAW;AAAA,UAC5B,WAAWA,aAAY;AACrB,oBAAQ,OAAO,WAAW;AAAA,UAC5B;AAAA,QACF;AAEA,YAAI,WAAW,SAAU,SAAS,OAAO;AACvC,kBAAQ,QAAQ;AAChB,kBAAQ,iBAAiB,EAAC,OAAO,QAAQ,UAAU,OAAM;AAAA,QAC3D;AAEA,YAAI,SAAS,SAAU,SAAS,KAAK;AACnC,kBAAQ,MAAM,WAAW,MAAM;AAAA,QACjC;AAEA,YAAI,SAAS,SAAU,SAAS,KAAK;AACnC,kBAAQ,MAAM,WAAW,MAAM;AAAA,QACjC;AAEA,YAAI,YAAY,SAAU,SAAS,KAAK;AACtC,kBAAQ,MAAM,WAAW,MAAM;AAAA,QACjC;AAEA,YAAI,YAAY,SAAU,SAAS,KAAK;AACtC,kBAAQ,MAAM,WAAW,MAAM;AAAA,QACjC;AAEA,YAAI,aAAa,SAAU,SAAS,SAAS;AAC3C,kBAAQ,YAAY,UAAU,UAAU;AAAA,QAC1C;AAEA,YAAI,YAAY,SAAU,SAAS,OAAO;AACxC,kBAAQ,MAAM,QAAQ;AACtB,kBAAQ,MAAM,eAAe,SAAS;AAAA,QACxC;AAEA,YAAI,YAAY,SAAU,SAAS,OAAO;AACxC,kBAAQ,MAAM,QAAQ;AACtB,kBAAQ,MAAM,eAAe,SAAS;AAAA,QACxC;AAEA,YAAI,YAAY,cAAcD,iBAAgB,YAAY,UAAU,QAAQ,QAAQ,YAAY,WAAW,SAAS;AAEpH,YAAI,SAAS,SAAU0B,WAAU;AAC/B,cAAI,OAAO,aAAa;AACtB,mBAAO,YAAY,YAAYA,SAAQ;AAAA,UACzC,WAAW,OAAO,kBAAkB;AAClC,mBAAO,iBAAiB,UAAUA,WAAU,IAAI;AAAA,UAClD;AACA,UAAAA,UAAS;AAAA,QACX;AAEA,YAAI,gBAAgB,SAASH,eAAc,SAAS;AAClD,eAAK,OAAO;AACZ,eAAK,UAAU;AAAA,QACjB;AAEA,sBAAc,UAAU,kBAAkB,SAAS,gBAAiB,OAAO;AACvE,cAAI,WAAW;AAEjB,eAAK,cAAc,OAAO,WAAY;AACpC,gBAAI,eAAe,CAAC;AAEpB,gBAAI,MAAM,QAAQ,UAAU,OAAO;AACjC,2BAAa,YAAY;AAAA,YAC3B;AAEA,gBAAI,MAAM,QAAQ,WAAW,OAAO;AAClC,2BAAa,YAAY;AAAA,YAC3B;AAEA,gBAAI,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY;AAC1D,gBAAI,OAAO,SAAS,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAE3D,qBAAS,UAAU,OAAO,aAAa,MAAM,OAAO;AAAA,UACtD,CAAC;AAAA,QACH;AAEA,sBAAc,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACrE,cAAI,WAAW;AAEjB,eAAK,cAAc,OAAO,WAAY;AACpC,gBAAI,eAAe;AAAA,cACjB,WAAW;AAAA,gBACT,KAAK;AAAA,gBACL,QAAQ;AAAA,cACV;AAAA,cACA,QAAQ,CAAC;AAAA,YACX;AACA,gBAAI,MAAM,QAAQ,QAAQ;AACxB,2BAAa,SAAS,MAAM,QAAQ;AAAA,YACtC;AACA,gBAAI,MAAM,QAAQ,OAAO;AACvB,2BAAa,UAAU;AAAA,YACzB;AACA,gBAAI,YAAY,MAAM,SAAS;AAC7B,yBAAW,cAAc,MAAM,QAAQ,MAAM;AAAA,YAC/C;AACA,gBAAI,MAAM,QAAQ,OAAO;AACvB,uBAAS,cAAc,MAAM,QAAQ,KAAK;AAAA,YAC5C;AACA,gBAAI,UAAU7B,OAAMA,OAAMM,iBAAgB,YAAY,GAAG,MAAM,QAAQ,WAAW,CAAC,CAAC;AAEpF,gBAAI,OAAO,IAAI,SAAS,QAAQ,cAAc,UAAU;AACxD,iBAAK,UAAU,UAAU,EAAE;AAC3B,iBAAK,UAAU,UAAU,OAAO;AAChC,iBAAK,QAAQ,MAAM,IAAI;AAEvB,qBAAS,UAAU,OAAO,YAAY,MAAM,OAAO;AAAA,UACrD,CAAC;AAAA,QACH;AAEA,sBAAc,UAAU,oBAAoB,SAAS,kBAAmB,OAAO;AAC3E,cAAI,WAAW;AAEjB,eAAK,cAAc,OAAO,WAAY;AACpC,gBAAI,UAAU,UAAU,OAAO,MAAM,OAAO;AAC5C,gBAAI,OAAO,SAAS,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAE3D,qBAAS,UAAU,OAAO,eAAe,MAAM,OAAO;AAAA,UACxD,CAAC;AAAA,QACH;AAEA,sBAAc,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACrE,cAAI,WAAW;AAEjB,eAAK,cAAc,OAAO,WAAY;AACpC,gBAAI,eAAe;AAAA,cACjB,OAAO;AAAA,gBACL,WAAW;AAAA,kBACT,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AACA,gBAAI,UAAU,cAAcA,iBAAgB,YAAY,UAAU,WAAW,WAAW,YAAY,WAAW,SAAS,EAAE,OAAO,MAAM,SAAS,YAAY;AAC5J,gBAAI,OAAO,SAAS,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAE3D,qBAAS,UAAU,OAAO,YAAY,MAAM,OAAO;AAAA,UACrD,CAAC;AAAA,QACH;AAEA,sBAAc,UAAU,kBAAkB,SAAS,gBAAiB,OAAO;AACvE,cAAI,WAAW;AAEjB,eAAK,cAAc,OAAO,WAAY;AACpC,gBAAI,eAAe;AAAA,cACjB,WAAW;AAAA,cACX,WAAW;AAAA,cACX,aAAa;AAAA,YACf;AAEA,gBAAI,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY;AAC1D,gBAAI,OAAO,SAAS,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAE3D,qBAAS,UAAU,OAAO,aAAa,MAAM,OAAO;AAAA,UACtD,CAAC;AAAA,QACH;AAEA,sBAAc,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACrE,cAAI,WAAW;AAEjB,eAAK,cAAc,OAAO,YAAY,WAAY;AAChD,gBAAI,eAAe;AAAA,cACjB,QAAQ;AAAA,cACR,WAAW;AAAA,gBACT,QAAQ,MAAM,QAAQ,UAAU,CAAC,WAAW,SAAS;AAAA,cACvD;AAAA,YACF;AACA,gBAAI,UAAUN,OAAMA,OAAMM,iBAAgB,YAAY,GAAG,MAAM,QAAQ,WAAW,CAAC,CAAC;AAEpF,gBAAI,OAAO,IAAI,SAAS,QAAQ,cAAc,UAAU;AACxD,iBAAK,UAAU,UAAU,EAAE;AAC3B,iBAAK,UAAU,UAAU,MAAM,QAAQ,SAAS,OAAO;AACvD,iBAAK,QAAQ,MAAM,IAAI;AAEvB,qBAAS,UAAU,OAAO,YAAY,MAAM,OAAO;AAAA,UACrD,CAAC;AAAA,QACH;AAEA,sBAAc,UAAU,qBAAqB,SAAS,mBAAoB,OAAO;AAC7E,cAAI,WAAW;AAEjB,eAAK,cAAc,OAAO,WAAY;AACpC,gBAAI,eAAe,CAAC;AACpB,gBAAI,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY;AAE1D,gBAAI,SAAS,MAAM,MAAM,QAAQ,CAAC,GAAGL,IAAGC,IAAG,MAAMc;AACjD,iBAAKf,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,qBAAOA,EAAC,EAAE,OAAO,OAAOA,EAAC,EAAE,QAAQ;AACnC,cAAAe,KAAI,OAAOf,EAAC,EAAE;AACd,mBAAKC,KAAI,GAAGA,KAAIc,GAAE,QAAQd,MAAK;AAC7B,oBAAI,MAAM,IAAI,MAAM,OAAO,SAAS,CAAC;AACrC,oBAAI,CAAC,IAAIc,GAAEd,EAAC,EAAE,CAAC;AACf,oBAAID,KAAI,CAAC,IAAIe,GAAEd,EAAC,EAAE,CAAC;AACnB,sBAAM,KAAK,GAAG;AAAA,cAChB;AAAA,YACF;AAEA,mBAAO,IAAI,SAAS,QAAQ,cAAc,UAAU;AACpD,iBAAK,UAAU,UAAU,EAAE;AAC3B,iBAAKD,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,mBAAK,UAAU,UAAU,OAAOA,EAAC,EAAE,IAAI;AAAA,YACzC;AACA,iBAAK,QAAQ,KAAK;AAElB,qBAAS,UAAU,OAAO,gBAAgB,MAAM,OAAO;AAAA,UACzD,CAAC;AAAA,QACH;AAEA,sBAAc,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACrE,cAAI,WAAW;AAEjB,eAAK,cAAc,OAAO,YAAY,WAAY;AAChD,gBAAI,eAAe;AAAA,cACjB,QAAQ;AAAA,YACV;AAEA,gBAAI,MAAM,QAAQ,QAAQ;AACxB,2BAAa,SAAS,MAAM,QAAQ;AAAA,YACtC;AACA,gBAAI,UAAUD,OAAMA,OAAMM,iBAAgB,YAAY,GAAG,MAAM,QAAQ,WAAW,CAAC,CAAC;AAEpF,gBAAI,OAAO,IAAI,SAAS,QAAQ,cAAc,UAAU;AACxD,iBAAK,UAAU,EAAC,MAAM,UAAU,IAAI,OAAM,CAAC;AAC3C,iBAAK,UAAU,EAAC,MAAM,QAAQ,IAAI,QAAO,CAAC;AAC1C,iBAAK,UAAU,EAAC,MAAM,QAAQ,IAAI,MAAK,CAAC;AACxC,iBAAK,QAAQ,MAAM,IAAI;AAEvB,kBAAM,QAAQ,MAAM,aAAa;AAEjC,qBAAS,UAAU,OAAO,YAAY,MAAM,OAAO;AAAA,UACrD,CAAC;AAAA,QACH;AAGA,sBAAc,UAAU,UAAU,SAASwB,SAAS,OAAO;AACzD,cAAI,MAAM,OAAO;AACf,kBAAM,MAAM,WAAW;AAAA,UACzB;AAAA,QACF;AAEA,sBAAc,UAAU,YAAY,SAAS,UAAW,OAAO,MAAM,MAAM,SAAS;AAClF,eAAK,QAAQ,KAAK;AAClB,cAAI,MAAM,WAAW;AAAE;AAAA,UAAQ;AAE/B,cAAI,MAAM,QAAQ,MAAM;AACtB,mBAAO,QAAQ,IAAI,mDAAmD,KAAK,OAAO,IAAI,8CAA8C,OAAO,kCAAkC,KAAK,UAAU,OAAO,IAAI,IAAI;AAAA,UAC7M;AAEA,gBAAM,QAAQ,IAAI,KAAK,QAAQ,cAAc,IAAI,EAAE,MAAM,OAAO;AAChE,iBAAO,WAAY;AACjB,kBAAM,MAAM,KAAK,MAAM,OAAO;AAAA,UAChC,CAAC;AAAA,QACH;AAEA,sBAAc,UAAU,gBAAgB,SAAS,cAAe,OAAO,MAAME,WAAU;AACnF,cAAI,WAAW;AAEjB,cAAI,CAACA,WAAU;AACb,YAAAA,YAAW;AACX,mBAAO;AAAA,UACT;AAEA,oBAAU,KAAK,EAAC,MAAY,UAAUA,UAAQ,CAAC;AAE/C,cAAI,OAAO,IAAI,GAAG;AAChB,iBAAK,aAAa;AAAA,UACpB,OAAO;AACL,mBAAO,IAAI,IAAI;AAGf,gBAAI,cAAc;AAAA,cAChB,UAAU,CAAC,IAAI;AAAA,cACf,UAAU,WAAY;AAAE,yBAAS,aAAa;AAAA,cAAG;AAAA,YACnD;AACA,gBAAIC,UAAS,MAAM,SAAS;AAC5B,gBAAIA,QAAO,UAAU;AACnB,0BAAY,WAAWA,QAAO;AAAA,YAChC;AACA,gBAAI,SAAS,cAAcA,QAAO,YAAY;AAC5C,0BAAY,aAAaA,QAAO;AAAA,YAClC;AAEA,iBAAK,QAAQ,OAAO,KAAK,WAAW,WAAW;AAAA,UACjD;AAAA,QACF;AAEA,sBAAc,UAAU,eAAe,SAAS,eAAgB;AAC9D,cAAI,IAAI;AACR,mBAAShC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,iBAAK,UAAUA,EAAC;AAChB,mBAAO,KAAK,QAAQ,kBAAmB,GAAG,SAAS,eAAe,KAAK,QAAQ,cAAc,aAAe,GAAG,SAAS,cAAc,KAAK,QAAQ,cAAc,YAAc,GAAG,SAAS,cAAc,KAAK,QAAQ,cAAc;AACpO,gBAAI,MAAM;AACR,iBAAG,SAAS;AACZ,wBAAU,OAAOA,IAAG,CAAC;AACrB,cAAAA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAGA,sBAAc,UAAU,kBAAkB,SAASiC,iBAAiB,QAAQ,YAAY;AACtF,cAAIjC,IAAGC,IAAGqB,IAAGP,IAAG,KAAK,OAAO,CAAC,GAAG,eAAe,CAAC;AAChD,eAAKf,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,YAAAsB,KAAI,OAAOtB,EAAC;AACZ,mBAAOA,EAAC,EAAE,OAAO,OAAOA,EAAC,EAAE,QAAQ;AAEnC,iBAAKC,KAAI,GAAGA,KAAIqB,GAAE,KAAK,QAAQrB,MAAK;AAClC,cAAAc,KAAIO,GAAE,KAAKrB,EAAC;AACZ,oBAAO,eAAe,aAAcc,GAAE,CAAC,EAAE,QAAQ,IAAIA,GAAE,CAAC;AACxD,kBAAI,CAAC,KAAK,GAAG,GAAG;AACd,qBAAK,GAAG,IAAI,IAAI,MAAM,OAAO,MAAM;AACnC,6BAAa,KAAK,GAAG;AAAA,cACvB;AACA,mBAAK,GAAG,EAAEf,EAAC,IAAI,QAAQe,GAAE,CAAC,CAAC;AAAA,YAC7B;AAAA,UACF;AAEA,cAAI,QAAQ,CAAC;AACb,cAAI,MAAM;AACV,cAAI;AACJ,eAAKd,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK;AACxC,YAAAD,KAAI,aAAaC,EAAC;AAClB,gBAAI,eAAe,YAAY;AAC7B,sBAAQ,IAAI,KAAK,QAAQD,EAAC,CAAC;AAC3B,oBAAM,OAAO,MAAM,KAAK;AAAA,YAC1B,WAAW,eAAe,UAAU;AAClC,sBAAQ,QAAQA,EAAC;AAAA,YACnB,OAAO;AACL,sBAAQA;AAAA,YACV;AACA,kBAAM,KAAK,CAAC,KAAK,EAAE,OAAO,KAAKA,EAAC,CAAC,CAAC;AAAA,UACpC;AACA,cAAI,eAAe,YAAY;AAC7B,kBAAM,KAAK,UAAU;AAAA,UACvB,WAAW,eAAe,UAAU;AAClC,kBAAM,KAAK,kBAAkB;AAE7B,iBAAKA,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACjC,oBAAMA,EAAC,EAAE,CAAC,IAAI,MAAM,MAAMA,EAAC,EAAE,CAAC,CAAC;AAAA,YACjC;AAEA,yBAAa;AAAA,UACf;AAGA,cAAI,OAAO,IAAI,KAAK,QAAQ,cAAc,UAAU;AACpD,uBAAa,eAAe,cAAc,MAAM,SAAS;AACzD,eAAK,UAAU,YAAY,EAAE;AAC7B,eAAKA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,iBAAK,UAAU,UAAU,OAAOA,EAAC,EAAE,IAAI;AAAA,UACzC;AACA,eAAK,QAAQ,KAAK;AAElB,iBAAO;AAAA,QACT;AAEA,iBAAS,iBAAiB,MAAM,SAAS;AACvC,cAAIkC,KAAI,CAAC,GAAGjC,IAAG;AAEf,cAAI,YAAY,UAAU;AACxB,sBAAU;AAAA,UACZ,WAAW,YAAY,YAAY;AACjC,sBAAUE;AAAA,UACZ,OAAO;AACL,sBAAU;AAAA,UACZ;AAEA,cAAI,YAAY,UAAU;AACxB,iBAAKF,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,cAAAiC,GAAE,KAAK,CAAC,QAAQ,KAAKjC,EAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,KAAKA,EAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,KAAKA,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAAA,YACxE;AAAA,UACF,OAAO;AACL,iBAAKA,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,cAAAiC,GAAE,KAAK,CAAC,QAAQ,KAAKjC,EAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,KAAKA,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAAA,YACnD;AAAA,UACF;AAEA,cAAI,YAAY,YAAY;AAC1B,YAAAiC,GAAE,KAAK,UAAU;AAAA,UACnB,WAAW,YAAY,UAAU;AAC/B,YAAAA,GAAE,KAAK,kBAAkB;AAAA,UAC3B;AAEA,iBAAOA;AAAA,QACT;AAEA,iBAAS,YAAY,QAAQ,YAAY,SAAS;AAChD,cAAI,UAAU,MAAM,GAAG;AACrB,iBAAK,QAAQ,QAAQ,QAAQ,UAAU,CAAC,QAAQ,QAAQlB,QAAO,QAAQ,IAAI,OAAO,CAAC,QAAQ,QAAQA,QAAO,QAAQ,IAAI,IAAI;AACxH,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,wBAAwB,QAAQC,SAAQ,GAAG;AACpD,mBAAO;AAAA,UACT,WAAW,CAAC,cAAc,wBAAwB,QAAQD,OAAM,GAAG;AACjE,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,wBAAwB,QAAQ,MAAM;AAC7C,cAAIhB,IAAGC,IAAG;AACV,eAAKD,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,mBAAO,MAAM,OAAOA,EAAC,EAAE,IAAI;AAC3B,iBAAKC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,kBAAI,CAAC,KAAK,KAAKA,EAAC,EAAE,CAAC,CAAC,GAAG;AACrB,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAIA,iBAAS,WAAW,QAAQ;AAC1B,cAAI,YAAY,CAAC,GAAGD,IAAGC;AACvB,eAAKD,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,gBAAI,OAAO,CAAC;AACZ,iBAAKC,MAAK,OAAOD,EAAC,GAAG;AACnB,kBAAI,OAAOA,EAAC,EAAE,eAAeC,EAAC,GAAG;AAC/B,qBAAKA,EAAC,IAAI,OAAOD,EAAC,EAAEC,EAAC;AAAA,cACvB;AAAA,YACF;AACA,sBAAU,KAAK,IAAI;AAAA,UACrB;AACA,iBAAO;AAAA,QACT;AAEA,iBAAS,cAAc,OAAO,SAAS,YAAY;AACjD,cAAID;AAEJ,cAAI,OAAO,MAAM;AACjB,cAAI,SAAS,MAAM;AAGnB,gBAAM,qBAAsB,CAACJ,SAAQ,MAAM,KAAK,OAAO,OAAO,CAAC,MAAM,YAAYA,SAAQ,OAAO,CAAC,CAAC;AAClG,cAAI,MAAM,oBAAoB;AAC5B,qBAAS,CAAC,EAAC,MAAM,KAAK,OAAO,MAAM,OAAM,CAAC;AAAA,UAC5C;AAIA,mBAAS,WAAW,MAAM;AAC1B,eAAKI,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,mBAAOA,EAAC,EAAE,OAAO,MAAM,OAAOA,EAAC,EAAE,IAAI;AAAA,UACvC;AAEA,gBAAM,QAAQ,UAAU,UAAW,KAAK,WAAW,WAAW,YAAY,QAAQ,YAAY,IAAI;AAGlG,eAAKA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AAClC,mBAAOA,EAAC,EAAE,OAAO,iBAAiB,OAAOA,EAAC,EAAE,MAAM,MAAM,KAAK;AAAA,UAC/D;AAEA,iBAAO;AAAA,QACT;AAEA,iBAAS,cAAc,OAAO;AAC5B,cAAI,cAAc,MAAM,MAAM,OAAO,GAAGA;AACxC,eAAKA,KAAI,GAAGA,KAAI,YAAY,QAAQA,MAAK;AACvC,wBAAYA,EAAC,IAAI,CAAC,MAAM,YAAYA,EAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,YAAYA,EAAC,EAAE,CAAC,CAAC,CAAC;AAAA,UACxE;AACA,iBAAO;AAAA,QACT;AAEA,iBAAS,UAAU,MAAM,WAAW;AAClC,cAAI,cAAc,cAAc,cAAc,cAAc,cAAc,YAAY;AACpF,mBAAO,KAAK,WAAW;AAAA,UACzB,OAAO;AACL,qBAASA,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,kBAAI,KAAKA,EAAC,EAAE,KAAK,SAAS,GAAG;AAC3B,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,kBAAkB,OAAO;AAChC,cAAI,UAAU,MAAM;AACpB,cAAI,OAAO,SAAS,cAAc,GAAG;AAErC,cAAI,WAAW,MAAM,QAAQ;AAC7B,cAAI,aAAa,MAAM;AACrB,uBAAW,CAAC;AAAA,UACd,WAAW,OAAO,aAAa,UAAU;AACvC,uBAAW,EAAC,UAAU,SAAQ;AAAA,UAChC;AACA,eAAK,WAAW,SAAS,YAAY;AAErC,eAAK,MAAM,WAAW;AACtB,eAAK,MAAM,MAAM;AACjB,eAAK,MAAM,QAAQ;AACnB,eAAK,MAAM,SAAS;AACpB,eAAK,MAAM,aAAa;AACxB,eAAK,SAAS;AACd,cAAI,QAAQ,SAAS,cAAc,KAAK;AACxC,gBAAM,MAAM;AACZ,gBAAM,MAAM,SAAS;AAGrB,gBAAM,MAAM;AACZ,eAAK,YAAY,KAAK;AACtB,kBAAQ,MAAM,WAAW;AAEzB,gBAAM,qBAAqB;AAG3B,gBAAM,eAAe,SAAS,SAAS,aAAa,SAASmC,IAAG;AAC9D,gBAAI,UAAUA,GAAE;AAEhB,iBAAK,CAAC,WAAY,YAAY,QAAQ,CAAC,QAAQ,MAAM,OAAO,MAAO,MAAM,QAAQ,UAAU;AACzF,mBAAK,OAAO,MAAM,QAAQ,QAAQ;AAClC,sBAAQ,YAAY,IAAI;AAAA,YAC1B;AAAA,UACF,CAAC;AAGD,gBAAM,eAAe,SAAS,SAAS,YAAY,SAASA,IAAG;AAC7D,gBAAI,UAAUA,GAAE;AAChB,gBAAI,CAAC,WAAY,YAAY,QAAQ,CAAC,QAAQ,MAAM,OAAO,GAAI;AAC7D,kBAAI,KAAK,YAAY;AACnB,qBAAK,WAAW,YAAY,IAAI;AAAA,cAClC;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAGA,iBAAS,SAAS,MAAMC,QAAOC,KAAI;AACjC,cAAI,KAAK,kBAAkB;AACzB,iBAAK,iBAAiBD,QAAOC,KAAI,KAAK;AACtC,mBAAOA;AAAA,UACT,OAAO;AACL,gBAAIC,OAAM,WAAW;AAEnB,qBAAOD,IAAG,KAAK,MAAM,OAAO,KAAK;AAAA,YACnC;AACA,iBAAK,YAAY,OAAOD,QAAOE,IAAG;AAClC,mBAAOA;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,YAAY,MAAMF,QAAOC,KAAI;AACpC,cAAI,KAAK,qBAAqB;AAC5B,iBAAK,oBAAoBD,QAAOC,KAAI,KAAK;AAAA,UAC3C,OAAO;AACL,iBAAK,YAAY,OAAOD,QAAOC,GAAE;AAAA,UACnC;AAAA,QACF;AAGA,iBAAS,QAAQE,IAAGC,IAAG;AACrB,cAAID,OAAMC,IAAG;AAAE,mBAAO;AAAA,UAAO;AAC7B,iBAAOA,MAAKA,OAAMD,IAAG;AAAE,YAAAC,KAAIA,GAAE;AAAA,UAAY;AACzC,iBAAOA,OAAMD;AAAA,QACf;AAEA,YAAI,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,cAAc;AAE7D,iBAAS,YAAY,KAAK,SAASE,QAAO;AACxC,0BAAgB,KAAK,CAAC,KAAK,SAASA,MAAK,CAAC;AAC1C,kBAAQ;AAAA,QACV;AAEA,iBAAS,UAAU;AACjB,cAAI,kBAAkB,aAAa;AACjC,gBAAI,UAAU,gBAAgB,MAAM;AACpC,gBAAI,SAAS;AACX;AACA,sBAAQ,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC1C,sBAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,kBAAkB;AACzB;AACA,kBAAQ;AAAA,QACV;AAEA,iBAAS,QAAQ,KAAK,SAASA,QAAO;AACpC,mBAAS,KAAK,SAAS,SAAU,OAAO,YAAY,aAAa;AAC/D,gBAAIC,WAAW,OAAO,gBAAgB,WAAY,cAAc,YAAY;AAC5E,YAAAD,OAAMC,QAAO;AAAA,UACf,CAAC;AAAA,QACH;AAEA,iBAAS,SAAS,KAAK,SAASD,QAAO;AACrC,cAAIE,KAAI,OAAO,UAAU,OAAO,SAAS,OAAO;AAEhD,cAAIA,MAAKA,GAAE,MAAM;AACf,YAAAA,GAAE,KAAK;AAAA,cACL,UAAU;AAAA,cACV;AAAA,cACA;AAAA,cACA,OAAOF;AAAA,cACP,UAAU;AAAA,YACZ,CAAC;AAAA,UACH,OAAO;AACL,gBAAI,MAAM,IAAI,eAAe;AAC7B,gBAAI,KAAK,OAAO,KAAK,IAAI;AACzB,gBAAI,iBAAiB,gBAAgB,kBAAkB;AACvD,gBAAI,SAAS,WAAY;AACvB,8BAAgB;AAChB,kBAAI,IAAI,WAAW,KAAK;AACtB,wBAAQ,KAAK,MAAM,IAAI,YAAY,GAAG,IAAI,YAAY,GAAG;AAAA,cAC3D,OAAO;AACL,gBAAAA,OAAM,KAAK,SAAS,IAAI,UAAU;AAAA,cACpC;AAAA,YACF;AACA,gBAAI,KAAK;AAAA,UACX;AAAA,QACF;AAEA,YAAI,SAAS,CAAC;AACd,YAAIG,YAAW,CAAC;AAIhB,iBAAS,QAAQ,SAAS,MAAM;AAC9B,cAAI,SAAS,KAAK,WAAW;AAC3B,oBAAQ,YAAY;AAAA,UACtB,OAAO;AACL,oBAAQ,cAAc;AAAA,UACxB;AAAA,QACF;AAGA,iBAAS,WAAW,SAASF,UAAS,UAAU;AAC9C,cAAI,CAAC,UAAU;AACb,YAAAA,WAAU,0BAA0BA;AAAA,UACtC;AACA,kBAAQ,SAASA,QAAO;AACxB,kBAAQ,MAAM,QAAQ;AAAA,QACxB;AAEA,iBAAS,aAAa,OAAO;AAC3B,cAAI;AACF,kBAAM,SAAS;AAAA,UACjB,SAAS,KAAK;AACZ,uBAAW,MAAM,SAAS,IAAI,OAAO;AACrC,kBAAM;AAAA,UACR;AAAA,QACF;AAEA,iBAAS,gBAAgB,OAAO,YAAY,aAAa;AAEvD,cAAI,eAAe,MAAM,QAAQ,YAAY,OAAO,eAAe,YAAY,OAAO,eAAe,aAAa;AAChH,oBAAQ,MAAM,SAAS,MAAM,QAAQ,OAAO;AAAA,UAC9C;AAEA,cAAI,OAAO,eAAe,UAAU;AAClC,wBAAY,YAAY,SAAU,MAAM;AACtC,oBAAM,UAAU;AAChB,2BAAa,KAAK;AAAA,YACpB,GAAG,SAAUA,UAAS;AACpB,yBAAW,MAAM,SAASA,QAAO;AAAA,YACnC,CAAC;AAAA,UACH,WAAW,OAAO,eAAe,YAAY;AAC3C,gBAAI;AACF,yBAAW,SAAU,MAAM;AACzB,sBAAM,UAAU;AAChB,6BAAa,KAAK;AAAA,cACpB,GAAG,SAAUA,UAAS;AACpB,2BAAW,MAAM,SAASA,UAAS,IAAI;AAAA,cACzC,CAAC;AAAA,YACH,SAAS,KAAK;AACZ,yBAAW,MAAM,SAAS,KAAK,IAAI;AAAA,YACrC;AAAA,UACF,OAAO;AACL,kBAAM,UAAU;AAChB,yBAAa,KAAK;AAAA,UACpB;AAAA,QACF;AAEA,iBAAS,eAAe,SAAS;AAC/B,cAAI,SAAS;AACX,gBAAI,QAAQ,YAAY,cAAc;AACpC,qBAAO;AAAA,YACT,WAAW,QAAQ,QAAQ;AACzB,qBAAO;AAAA,YACT,WAAW7C,YAAW,OAAO,GAAG;AAC9B,qBAAO;AAAA,YACT;AAAA,UACF;AACA,gBAAM,IAAI,MAAM,iBAAiB;AAAA,QACnC;AAEA,iBAAS,WAAW,SAAS;AAC3B,cAAI,cAAc,eAAe,OAAO;AACxC,cAAI,UAAU,IAAI,YAAY,OAAO;AAErC,cAAI+C,UAAS,QAAQ,OAAO,MAAM,IAAI;AACpC,YAAAA,UAAS,KAAK,OAAO;AAAA,UACvB;AAAA,QACF;AAEA,iBAAS,eAAe;AACtB,cAAI,WAAW,QAAQ;AACrB,uBAAW,OAAO,KAAK;AAAA,UACzB;AAEA,cAAI,gBAAgB,QAAQ;AAC1B,uBAAW,OAAO,UAAU;AAAA,UAC9B;AAEA,cAAI,OAAO,UAAU,OAAO,OAAO,QAAQ;AACzC,uBAAW,OAAO,MAAM;AAAA,UAC1B;AAAA,QACF;AAEA,iBAAS,YAAY,WAAW,OAAO;AACrC,cAAI,UAAU,MAAM,MAAM,SAAS,GAAG;AACpC,gBAAIF,WAAU,MAAM,QAAQ,SAAU,MAAM,QAAQ,YAAY,MAAM,QAAQ,SAAS,SAAU;AACjG,oBAAQ,MAAM,SAASA,QAAO;AAAA,UAChC,OAAO;AACL,wBAAY,WAAW,KAAK;AAC5B,gBAAI,MAAM,QAAQ,YAAY,CAAC,MAAM,sBAAsB,MAAM,YAAY,WAAW;AACtF,gCAAkB,KAAK;AAAA,YACzB;AAAA,UACF;AAAA,QACF;AAIA,iBAAS,YAAY,WAAW,OAAO;AACrC,cAAI1C,IAAG,SAAS,QAAQ;AACxB,mBAAS,WAAW;AACpB,wBAAc,MAAM,QAAQ;AAE5B,uBAAa;AAEb,eAAKA,KAAI,GAAGA,KAAI4C,UAAS,QAAQ5C,MAAK;AACpC,sBAAU4C,UAAS5C,EAAC;AACpB,iBAAK,CAAC,eAAe,gBAAgB,QAAQ,SAASH,YAAW,QAAQ,MAAM,CAAC,GAAG;AACjF,oBAAM,UAAU,QAAQ;AACxB,oBAAM,kBAAkB;AACxB,qBAAO,QAAQ,MAAM,EAAE,KAAK;AAAA,YAC9B;AAAA,UACF;AAEA,cAAI+C,UAAS,SAAS,GAAG;AACvB,kBAAM,IAAI,MAAM,mCAAmC,SAAS;AAAA,UAC9D,OAAO;AACL,kBAAM,IAAI,MAAM,yEAAyE;AAAA,UAC3F;AAAA,QACF;AAIA,YAAIC,SAAQ,SAASA,OAAM,SAAS,YAAY,SAAS;AACvD,cAAI;AACJ,cAAI,OAAO,YAAY,UAAU;AAC/B,wBAAY;AACZ,sBAAU,SAAS,eAAe,OAAO;AACzC,gBAAI,CAAC,SAAS;AACZ,oBAAM,IAAI,MAAM,wBAAwB,SAAS;AAAA,YACnD;AAAA,UACF;AACA,eAAK,UAAU;AACf,eAAK,UAAU9C,OAAM+C,WAAU,SAAS,WAAW,CAAC,CAAC;AACrD,eAAK,aAAa;AAElB,UAAAA,WAAU,OAAO,QAAQ,EAAE,IAAI;AAE/B,0BAAgB,MAAM,YAAY,IAAI;AAEtC,cAAI,KAAK,QAAQ,SAAS;AACxB,iBAAK,aAAa;AAAA,UACpB;AAAA,QACF;AAEA,QAAAD,OAAM,UAAU,aAAa,SAAS,aAAc;AAClD,iBAAO,KAAK;AAAA,QACd;AAEA,QAAAA,OAAM,UAAU,gBAAgB,SAAS,gBAAiB;AACxD,iBAAO,KAAK;AAAA,QACd;AAEA,QAAAA,OAAM,UAAU,UAAU,SAAS,UAAW;AAC5C,iBAAO,KAAK;AAAA,QACd;AAEA,QAAAA,OAAM,UAAU,aAAa,SAAS,aAAc;AAClD,iBAAO,KAAK;AAAA,QACd;AAEA,QAAAA,OAAM,UAAU,iBAAiB,SAAS,iBAAkB;AAC1D,iBAAO,KAAK;AAAA,QACd;AAEA,QAAAA,OAAM,UAAU,aAAa,SAAS,aAAc;AAClD,iBAAO,KAAK;AAAA,QACd;AAEA,QAAAA,OAAM,UAAU,aAAa,SAAS,WAAY,YAAY,SAAS;AACrE,eAAK,aAAa;AAClB,cAAI,SAAS;AACX,iBAAK,gBAAgB,OAAO;AAAA,UAC9B;AACA,0BAAgB,MAAM,YAAY,IAAI;AAAA,QACxC;AAEA,QAAAA,OAAM,UAAU,aAAa,SAAS,WAAY,SAAS;AACzD,eAAK,gBAAgB,OAAO;AAC5B,eAAK,OAAO;AAAA,QACd;AAEA,QAAAA,OAAM,UAAU,SAAS,SAAS,SAAU;AAC1C,0BAAgB,MAAM,KAAK,OAAO;AAAA,QACpC;AAEA,QAAAA,OAAM,UAAU,cAAc,SAAS,cAAe;AACpD,cAAI,OAAO,KAAK,eAAe,UAAU;AAEvC,gBAAI,MAAM,KAAK,WAAW,QAAQ,GAAG,MAAM,KAAK,MAAM;AACtD,gBAAI,MAAM,KAAK,aAAa,MAAM,QAAQ,oBAAI,KAAK,GAAG,QAAQ;AAC9D,4BAAgB,MAAM,GAAG;AAAA,UAC3B,WAAW,OAAO,KAAK,eAAe,YAAY;AAChD,4BAAgB,MAAM,KAAK,UAAU;AAAA,UACvC;AAAA,QACF;AAEA,QAAAA,OAAM,UAAU,eAAe,SAAS,eAAgB;AACpD,cAAI,WAAW;AAEjB,cAAI,UAAU,KAAK,QAAQ;AAE3B,cAAI,WAAW,OAAO,KAAK,eAAe,YAAY,OAAO,KAAK,eAAe,YAAY;AAC3F,kBAAM,IAAI,MAAM,mDAAmD;AAAA,UACrE;AAEA,cAAI,CAAC,KAAK,YAAY;AACpB,gBAAI,SAAS;AACX,mBAAK,aAAa,YAAa,WAAY;AACzC,yBAAS,YAAY;AAAA,cACvB,GAAG,UAAU,GAAI;AAAA,YACnB,OAAO;AACL,oBAAM,IAAI,MAAM,qBAAqB;AAAA,YACvC;AAAA,UACF;AAAA,QACF;AAEA,QAAAA,OAAM,UAAU,cAAc,SAAS,cAAe;AACpD,cAAI,KAAK,YAAY;AACnB,0BAAc,KAAK,UAAU;AAC7B,iBAAK,aAAa;AAAA,UACpB;AAAA,QACF;AAEA,QAAAA,OAAM,UAAU,UAAU,SAAS,QAAS,UAAU;AACpD,cAAI,KAAK,YAAY,WAAW;AAC9B,gBAAI,YAAY,SAAS,cAAc,SAAS,eAAe,eAAe;AAE5E,kBAAI,SAAS,KAAK,MAAM;AACxB,kBAAI,MAAM,KAAK,MAAM;AACrB,kBAAI,YAAY,SAAS,cAAc,QAAQ;AAC/C,kBAAI,SAAS,UAAU,WAAW,IAAI;AACtC,wBAAU,QAAQ,IAAI,OAAO;AAC7B,wBAAU,SAAS,IAAI,OAAO;AAC9B,qBAAO,YAAY,SAAS;AAC5B,qBAAO,SAAS,GAAG,GAAG,UAAU,OAAO,UAAU,MAAM;AACvD,qBAAO,UAAU,QAAQ,GAAG,CAAC;AAC7B,qBAAO,UAAU,UAAU,WAAW;AAAA,YACxC,OAAO;AACL,qBAAO,KAAK,MAAM,cAAc;AAAA,YAClC;AAAA,UACF,OAAO;AACL,kBAAM,IAAI,MAAM,qCAAqC;AAAA,UACvD;AAAA,QACF;AAEA,QAAAA,OAAM,UAAU,UAAU,SAAShB,WAAW;AAC5C,eAAK,YAAY;AACjB,eAAK,YAAY;AAEjB,cAAI,KAAK,iBAAiB;AACxB,iBAAK,gBAAgB,QAAQ,IAAI;AAAA,UACnC;AAEA,cAAI,KAAK,cAAc;AACrB,wBAAY,KAAK,SAAS,aAAa,KAAK,YAAY;AAAA,UAC1D;AAEA,cAAI,KAAK,cAAc;AACrB,wBAAY,KAAK,SAAS,YAAY,KAAK,YAAY;AAAA,UACzD;AAAA,QACF;AAEA,QAAAgB,OAAM,UAAU,kBAAkB,SAAS,gBAAiB,SAAS;AACnE,cAAI,gBAAgB,QAAQ,WAAW,QAAQ,YAAY,KAAK,QAAQ;AACxE,eAAK,UAAU9C,OAAM+C,WAAU,SAAS,OAAO;AAC/C,cAAI,eAAe;AACjB,iBAAK,YAAY;AACjB,iBAAK,aAAa;AAAA,UACpB;AAAA,QACF;AAEA,QAAAD,OAAM,UAAU,WAAW,SAAS,WAAY;AAC9C,eAAK,OAAO,KAAK,cAAc;AAC/B,sBAAY,KAAK,YAAY,GAAG,IAAI;AAAA,QACtC;AAEA,QAAAA,OAAM,UAAU,WAAW,SAAS,WAAY;AAC9C,iBAAO;AAAA,QACT;AAEA,YAAI,YAA0B,yBAAUA,QAAO;AAC7C,mBAASE,aAAa;AACpB,YAAAF,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAE,WAAU,YAAYF;AACnC,UAAAE,WAAU,YAAY,OAAO,OAAQF,UAASA,OAAM,SAAU;AAC9D,UAAAE,WAAU,UAAU,cAAcA;AAElC,UAAAA,WAAU,UAAU,gBAAgB,SAAS,gBAAiB;AAC5D,mBAAO,cAAc,IAAI;AAAA,UAC3B;AAEA,UAAAA,WAAU,UAAU,cAAc,SAAS,cAAe;AACxD,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAEF,MAAK;AAEP,YAAI,WAAyB,yBAAUA,QAAO;AAC5C,mBAASG,YAAY;AACnB,YAAAH,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAG,UAAS,YAAYH;AAClC,UAAAG,UAAS,YAAY,OAAO,OAAQH,UAASA,OAAM,SAAU;AAC7D,UAAAG,UAAS,UAAU,cAAcA;AAEjC,UAAAA,UAAS,UAAU,gBAAgB,SAAS,gBAAiB;AAC3D,mBAAO,cAAc,IAAI;AAAA,UAC3B;AAEA,UAAAA,UAAS,UAAU,cAAc,SAAS,cAAe;AACvD,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAEH,MAAK;AAEP,YAAI,cAA4B,yBAAUA,QAAO;AAC/C,mBAASI,eAAe;AACtB,YAAAJ,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAI,aAAY,YAAYJ;AACrC,UAAAI,aAAY,YAAY,OAAO,OAAQJ,UAASA,OAAM,SAAU;AAChE,UAAAI,aAAY,UAAU,cAAcA;AAEpC,UAAAA,aAAY,UAAU,gBAAgB,SAAS,gBAAiB;AAC9D,mBAAO,cAAc,MAAM,MAAM,IAAI;AAAA,UACvC;AAEA,UAAAA,aAAY,UAAU,cAAc,SAAS,cAAe;AAC1D,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAEJ,MAAK;AAEP,YAAI,WAAyB,yBAAUA,QAAO;AAC5C,mBAASK,YAAY;AACnB,YAAAL,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAK,UAAS,YAAYL;AAClC,UAAAK,UAAS,YAAY,OAAO,OAAQL,UAASA,OAAM,SAAU;AAC7D,UAAAK,UAAS,UAAU,cAAcA;AAEjC,UAAAA,UAAS,UAAU,gBAAgB,SAAS,gBAAiB;AAC3D,mBAAO,cAAc,MAAM,MAAM,IAAI;AAAA,UACvC;AAEA,UAAAA,UAAS,UAAU,cAAc,SAAS,cAAe;AACvD,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAEL,MAAK;AAEP,YAAI,YAA0B,yBAAUA,QAAO;AAC7C,mBAASM,aAAa;AACpB,YAAAN,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAM,WAAU,YAAYN;AACnC,UAAAM,WAAU,YAAY,OAAO,OAAQN,UAASA,OAAM,SAAU;AAC9D,UAAAM,WAAU,UAAU,cAAcA;AAElC,UAAAA,WAAU,UAAU,gBAAgB,SAAS,gBAAiB;AAC5D,mBAAO,cAAc,IAAI;AAAA,UAC3B;AAEA,UAAAA,WAAU,UAAU,cAAc,SAAS,cAAe;AACxD,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAEN,MAAK;AAEP,YAAI,WAAyB,yBAAUA,QAAO;AAC5C,mBAASO,YAAY;AACnB,YAAAP,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAO,UAAS,YAAYP;AAClC,UAAAO,UAAS,YAAY,OAAO,OAAQP,UAASA,OAAM,SAAU;AAC7D,UAAAO,UAAS,UAAU,cAAcA;AAEjC,UAAAA,UAAS,UAAU,gBAAgB,SAAS,gBAAiB;AAC3D,mBAAO,cAAc,IAAI;AAAA,UAC3B;AAEA,UAAAA,UAAS,UAAU,cAAc,SAAS,cAAe;AACvD,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAEP,MAAK;AAEP,YAAI,eAA6B,yBAAUA,QAAO;AAChD,mBAASQ,gBAAgB;AACvB,YAAAR,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAQ,cAAa,YAAYR;AACtC,UAAAQ,cAAa,YAAY,OAAO,OAAQR,UAASA,OAAM,SAAU;AACjE,UAAAQ,cAAa,UAAU,cAAcA;AAErC,UAAAA,cAAa,UAAU,gBAAgB,SAAS,gBAAiB;AAC/D,mBAAO,cAAc,MAAM,QAAQ;AAAA,UACrC;AAEA,UAAAA,cAAa,UAAU,cAAc,SAAS,cAAe;AAC3D,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAER,MAAK;AAEP,YAAI,cAA4B,yBAAUA,QAAO;AAC/C,mBAASS,eAAe;AACtB,YAAAT,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAS,aAAY,YAAYT;AACrC,UAAAS,aAAY,YAAY,OAAO,OAAQT,UAASA,OAAM,SAAU;AAChE,UAAAS,aAAY,UAAU,cAAcA;AAEpC,UAAAA,aAAY,UAAU,gBAAgB,SAAS,gBAAiB;AAC9D,mBAAO,cAAc,MAAM,QAAQ;AAAA,UACrC;AAEA,UAAAA,aAAY,UAAU,cAAc,SAAS,cAAe;AAC1D,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAET,MAAK;AAEP,YAAI,WAAyB,yBAAUA,QAAO;AAC5C,mBAASU,YAAY;AACnB,YAAAV,OAAM,MAAM,MAAM,SAAS;AAAA,UAC7B;AAEA,cAAKA,OAAQ,CAAAU,UAAS,YAAYV;AAClC,UAAAU,UAAS,YAAY,OAAO,OAAQV,UAASA,OAAM,SAAU;AAC7D,UAAAU,UAAS,UAAU,cAAcA;AAEjC,UAAAA,UAAS,UAAU,gBAAgB,SAAS,gBAAiB;AAC3D,gBAAIvD,IAAG,OAAO,KAAK;AACnB,iBAAKA,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,mBAAKA,EAAC,EAAE,CAAC,IAAIG,QAAO,KAAKH,EAAC,EAAE,CAAC,CAAC;AAC9B,mBAAKA,EAAC,EAAE,CAAC,IAAIG,QAAO,KAAKH,EAAC,EAAE,CAAC,CAAC;AAAA,YAChC;AACA,mBAAO;AAAA,UACT;AAEA,UAAAuD,UAAS,UAAU,cAAc,SAAS,cAAe;AACvD,mBAAO;AAAA,UACT;AAEA,iBAAOA;AAAA,QACT,EAAEV,MAAK;AAEP,YAAIC,aAAY;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ,CAAC;AAAA,UACT,WAAW,SAAU,SAAS;AAC5B,qBAAS,OAAO,SAAS;AACvB,kBAAI,QAAQ,eAAe,GAAG,GAAG;AAC/B,uBAAO,GAAG,IAAI,QAAQ,GAAG;AAAA,cAC3B;AAAA,YACF;AAAA,UACF;AAAA,UACA,mBAAmB,SAAU,MAAM;AACjC,YAAAA,WAAU,UAAU;AAAA,UACtB;AAAA,UACA,WAAW,SAAUf,WAAU;AAC7B,qBAAS,WAAWe,WAAU,QAAQ;AACpC,kBAAIA,WAAU,OAAO,eAAe,OAAO,GAAG;AAC5C,gBAAAf,UAASe,WAAU,OAAO,OAAO,CAAC;AAAA,cACpC;AAAA,YACF;AAAA,UACF;AAAA,UACA,YAAY,WAAW;AACrB,qBAAS,WAAWA,WAAU,QAAQ;AACpC,kBAAIA,WAAU,OAAO,eAAe,OAAO,GAAG;AAC5C,gBAAAA,WAAU,OAAO,OAAO,EAAE,QAAQ;AAClC,uBAAOA,WAAU,OAAO,OAAO;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,UACA,SAAS,CAAC;AAAA,UACV,UAAUF;AAAA,UACV;AAAA,UACA,KAAK,SAAS,SAAS;AACrB,uBAAW,OAAO;AAClB,mBAAOE;AAAA,UACT;AAAA,QACF;AAGA,YAAI,OAAO,WAAW,eAAe,CAAC,OAAO,WAAW;AACtD,iBAAO,YAAYA;AAGnB,mBAAS,iBAAiB,4BAA4B,WAAW;AAC/D,gBAAI,OAAO,gBAAgB,OAAO;AAChC,cAAAA,WAAU,WAAW;AAAA,YACvB;AAAA,UACF,CAAC;AACD,mBAAS,iBAAiB,uBAAuB,WAAW;AAC1D,gBAAI,OAAO,gBAAgB,OAAO;AAChC,cAAAA,WAAU,WAAW;AAAA,YACvB;AAAA,UACF,CAAC;AAGD,qBAAW,WAAW;AACpB,mBAAO,cAAc,IAAI,MAAM,gBAAgB,CAAC;AAAA,UAClD,GAAG,CAAC;AAAA,QACN;AAGA,QAAAA,WAAU,UAAUA;AAEpB,eAAOA;AAAA,MAET,CAAE;AAAA;AAAA;;;ACr9EF;AAAA;AAAA,OAAC,SAASU,IAAEC,IAAE;AAAC,oBAAU,OAAO,WAAS,YAAU,OAAO,SAAO,OAAO,UAAQA,GAAE,IAAE,cAAY,OAAO,UAAQ,OAAO,MAAI,OAAO,CAAC,GAAEA,EAAC,IAAE,YAAU,OAAO,UAAQ,QAAQ,MAAIA,GAAE,IAAED,GAAE,MAAIC,GAAE;AAAA,MAAC,EAAE,SAAK,WAAU;AAAC,eAAO,SAASD,IAAE;AAAC,mBAASC,GAAEC,IAAE;AAAC,gBAAGC,GAAED,EAAC,EAAE,QAAOC,GAAED,EAAC,EAAE;AAAQ,gBAAIE,KAAED,GAAED,EAAC,IAAE,EAAC,SAAQ,CAAC,GAAE,IAAGA,IAAE,QAAO,MAAE;AAAE,mBAAOF,GAAEE,EAAC,EAAE,KAAKE,GAAE,SAAQA,IAAEA,GAAE,SAAQH,EAAC,GAAEG,GAAE,SAAO,MAAGA,GAAE;AAAA,UAAO;AAAC,cAAID,KAAE,CAAC;AAAE,iBAAOF,GAAE,IAAED,IAAEC,GAAE,IAAEE,IAAEF,GAAE,IAAE,SAAQA,GAAE,CAAC;AAAA,QAAC,EAAE,CAAC,SAASD,IAAEC,IAAEE,IAAE;AAAC;AAAa,mBAASD,GAAEF,IAAE;AAAC,mBAAOA,MAAGA,GAAE,aAAWA,KAAE,EAAC,SAAQA,GAAC;AAAA,UAAC;AAAC,cAAII,KAAE,OAAO,UAAQ,SAASJ,IAAE;AAAC,qBAAQC,KAAE,GAAEA,KAAE,UAAU,QAAOA,MAAI;AAAC,kBAAIE,KAAE,UAAUF,EAAC;AAAE,uBAAQC,MAAKC,GAAE,QAAO,UAAU,eAAe,KAAKA,IAAED,EAAC,MAAIF,GAAEE,EAAC,IAAEC,GAAED,EAAC;AAAA,YAAE;AAAC,mBAAOF;AAAA,UAAC,GAAEK,KAAEF,GAAE,CAAC,GAAEG,MAAGJ,GAAEG,EAAC,GAAEF,GAAE,CAAC,IAAGI,KAAEL,GAAEI,EAAC,GAAEE,KAAEL,GAAE,CAAC,GAAEM,KAAEP,GAAEM,EAAC,GAAEE,KAAEP,GAAE,CAAC,GAAEQ,KAAET,GAAEQ,EAAC,GAAEE,KAAET,GAAE,CAAC,GAAEU,KAAEX,GAAEU,EAAC,GAAEE,KAAEX,GAAE,EAAE,GAAEY,KAAEb,GAAEY,EAAC,GAAEE,KAAEb,GAAE,EAAE,GAAEc,KAAEf,GAAEc,EAAC,GAAEE,KAAEf,GAAE,EAAE,GAAEgB,KAAEjB,GAAEgB,EAAC,GAAEE,KAAE,CAAC,GAAEC,KAAE,OAAGC,KAAE,EAAC,QAAO,KAAI,OAAM,GAAE,QAAO,QAAO,UAAS,KAAI,SAAQ,OAAG,MAAK,OAAG,YAAW,oBAAmB,eAAc,IAAG,eAAc,IAAG,yBAAwB,MAAE,GAAEC,KAAE,WAAU;AAAC,gBAAIvB,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC;AAAE,gBAAGA,OAAIqB,KAAE,OAAIA,GAAE,QAAOD,MAAG,GAAEH,GAAE,SAASG,IAAEE,EAAC,IAAG,GAAEP,GAAE,SAASK,IAAEE,GAAE,IAAI,GAAEF;AAAA,UAAC,GAAEI,KAAE,WAAU;AAAC,YAAAJ,MAAG,GAAED,GAAE,SAAS,GAAEI,GAAE;AAAA,UAAC,GAAEE,KAAE,WAAU;AAAC,YAAAL,GAAE,QAAQ,SAASpB,IAAEC,IAAE;AAAC,cAAAD,GAAE,KAAK,gBAAgB,UAAU,GAAEA,GAAE,KAAK,gBAAgB,iBAAiB,GAAEA,GAAE,KAAK,gBAAgB,mBAAmB,GAAEA,GAAE,KAAK,gBAAgB,gBAAgB;AAAA,YAAC,CAAC;AAAA,UAAC,GAAE0B,KAAE,SAAS1B,IAAE;AAAC,mBAAOA,OAAI,QAAI,aAAWA,MAAGa,GAAE,QAAQ,OAAO,KAAG,YAAUb,MAAGa,GAAE,QAAQ,MAAM,KAAG,aAAWb,MAAGa,GAAE,QAAQ,OAAO,KAAG,cAAY,OAAOb,MAAGA,GAAE,MAAI;AAAA,UAAE,GAAE2B,KAAE,SAAS3B,IAAE;AAAC,YAAAsB,KAAElB,GAAEkB,IAAEtB,EAAC,GAAEoB,MAAG,GAAED,GAAE,SAAS;AAAE,gBAAIlB,KAAE,SAAS,OAAK,CAAC,OAAO;AAAK,mBAAOyB,GAAEJ,GAAE,OAAO,KAAGrB,KAAEwB,GAAE,KAAGH,GAAE,2BAAyBX,GAAE,QAAQ,YAAY,MAAI,QAAQ,KAAK,mLAAmL,GAAEW,GAAE,0BAAwB,OAAI,SAAS,cAAc,MAAM,EAAE,aAAa,mBAAkBA,GAAE,MAAM,GAAE,SAAS,cAAc,MAAM,EAAE,aAAa,qBAAoBA,GAAE,QAAQ,GAAE,SAAS,cAAc,MAAM,EAAE,aAAa,kBAAiBA,GAAE,KAAK,GAAE,uBAAqBA,GAAE,cAAY,CAAC,YAAW,aAAa,EAAE,QAAQ,SAAS,UAAU,IAAE,KAAGC,GAAE,IAAE,IAAE,WAASD,GAAE,aAAW,OAAO,iBAAiBA,GAAE,YAAW,WAAU;AAAC,cAAAC,GAAE,IAAE;AAAA,YAAC,CAAC,IAAE,SAAS,iBAAiBD,GAAE,YAAW,WAAU;AAAC,cAAAC,GAAE,IAAE;AAAA,YAAC,CAAC,GAAE,OAAO,iBAAiB,WAAU,GAAEd,GAAE,SAASc,IAAED,GAAE,eAAc,IAAE,CAAC,GAAE,OAAO,iBAAiB,sBAAqB,GAAEb,GAAE,SAASc,IAAED,GAAE,eAAc,IAAE,CAAC,GAAE,OAAO,iBAAiB,WAAU,GAAEf,GAAE,SAAS,WAAU;AAAC,eAAC,GAAEQ,GAAE,SAASK,IAAEE,GAAE,IAAI;AAAA,YAAC,GAAEA,GAAE,aAAa,CAAC,GAAEA,GAAE,2BAAyBX,GAAE,QAAQ,MAAM,cAAaa,EAAC,GAAEJ;AAAA,UAAE;AAAE,UAAApB,GAAE,UAAQ,EAAC,MAAK2B,IAAE,SAAQJ,IAAE,aAAYC,GAAC;AAAA,QAAC,GAAE,SAASxB,IAAEC,IAAE;AAAA,QAAC,GAAE,EAAC,EAAC,EAAC,EAAC,SAASD,IAAEC,IAAE;AAAC,WAAC,SAASA,IAAE;AAAC;AAAa,qBAASE,GAAEH,IAAEC,IAAEE,IAAE;AAAC,uBAASD,GAAED,IAAE;AAAC,oBAAIE,KAAEY,IAAEb,KAAEc;AAAE,uBAAOD,KAAEC,KAAE,QAAOK,KAAEpB,IAAEiB,KAAElB,GAAE,MAAME,IAAEC,EAAC;AAAA,cAAC;AAAC,uBAASE,GAAEL,IAAE;AAAC,uBAAOqB,KAAErB,IAAEmB,KAAE,WAAWT,IAAET,EAAC,GAAEwB,KAAEvB,GAAEF,EAAC,IAAEkB;AAAA,cAAC;AAAC,uBAASZ,GAAEN,IAAE;AAAC,oBAAIG,KAAEH,KAAEoB,IAAElB,KAAEF,KAAEqB,IAAEjB,KAAEH,KAAEE;AAAE,uBAAOuB,KAAEH,GAAEnB,IAAEa,KAAEf,EAAC,IAAEE;AAAA,cAAC;AAAC,uBAASI,GAAER,IAAE;AAAC,oBAAIG,KAAEH,KAAEoB,IAAElB,KAAEF,KAAEqB;AAAE,uBAAO,WAASD,MAAGjB,MAAGF,MAAGE,KAAE,KAAGuB,MAAGxB,MAAGe;AAAA,cAAC;AAAC,uBAASP,KAAG;AAAC,oBAAIV,KAAEwB,GAAE;AAAE,uBAAOhB,GAAER,EAAC,IAAEW,GAAEX,EAAC,IAAE,MAAKmB,KAAE,WAAWT,IAAEJ,GAAEN,EAAC,CAAC;AAAA,cAAE;AAAC,uBAASW,GAAEX,IAAE;AAAC,uBAAOmB,KAAE,QAAOQ,MAAGZ,KAAEb,GAAEF,EAAC,KAAGe,KAAEC,KAAE,QAAOE;AAAA,cAAE;AAAC,uBAASN,KAAG;AAAC,2BAASO,MAAG,aAAaA,EAAC,GAAEE,KAAE,GAAEN,KAAEK,KAAEJ,KAAEG,KAAE;AAAA,cAAM;AAAC,uBAASN,KAAG;AAAC,uBAAO,WAASM,KAAED,KAAEP,GAAEa,GAAE,CAAC;AAAA,cAAC;AAAC,uBAASV,KAAG;AAAC,oBAAId,KAAEwB,GAAE,GAAErB,KAAEK,GAAER,EAAC;AAAE,oBAAGe,KAAE,WAAUC,KAAE,MAAKI,KAAEpB,IAAEG,IAAE;AAAC,sBAAG,WAASgB,GAAE,QAAOd,GAAEe,EAAC;AAAE,sBAAGM,GAAE,QAAOP,KAAE,WAAWT,IAAET,EAAC,GAAEC,GAAEkB,EAAC;AAAA,gBAAC;AAAC,uBAAO,WAASD,OAAIA,KAAE,WAAWT,IAAET,EAAC,IAAGiB;AAAA,cAAC;AAAC,kBAAIH,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,GAAEI,KAAE,OAAGC,KAAE,OAAGC,KAAE;AAAG,kBAAG,cAAY,OAAO3B,GAAE,OAAM,IAAI,UAAUS,EAAC;AAAE,qBAAOR,KAAEM,GAAEN,EAAC,KAAG,GAAEG,GAAED,EAAC,MAAIsB,KAAE,CAAC,CAACtB,GAAE,SAAQuB,KAAE,aAAYvB,IAAEc,KAAES,KAAEJ,GAAEf,GAAEJ,GAAE,OAAO,KAAG,GAAEF,EAAC,IAAEgB,IAAEU,KAAE,cAAaxB,KAAE,CAAC,CAACA,GAAE,WAASwB,KAAGb,GAAE,SAAOF,IAAEE,GAAE,QAAMD,IAAEC;AAAA,YAAC;AAAC,qBAASZ,GAAEF,IAAEC,IAAEC,IAAE;AAAC,kBAAIG,KAAE,MAAGC,KAAE;AAAG,kBAAG,cAAY,OAAON,GAAE,OAAM,IAAI,UAAUS,EAAC;AAAE,qBAAOL,GAAEF,EAAC,MAAIG,KAAE,aAAYH,KAAE,CAAC,CAACA,GAAE,UAAQG,IAAEC,KAAE,cAAaJ,KAAE,CAAC,CAACA,GAAE,WAASI,KAAGH,GAAEH,IAAEC,IAAE,EAAC,SAAQI,IAAE,SAAQJ,IAAE,UAASK,GAAC,CAAC;AAAA,YAAC;AAAC,qBAASF,GAAEJ,IAAE;AAAC,kBAAIC,KAAE,eAAa,OAAOD,KAAE,cAAYQ,GAAER,EAAC;AAAE,qBAAM,CAAC,CAACA,OAAI,YAAUC,MAAG,cAAYA;AAAA,YAAE;AAAC,qBAASI,GAAEL,IAAE;AAAC,qBAAM,CAAC,CAACA,MAAG,aAAW,eAAa,OAAOA,KAAE,cAAYQ,GAAER,EAAC;AAAA,YAAE;AAAC,qBAASM,GAAEN,IAAE;AAAC,qBAAM,aAAW,eAAa,OAAOA,KAAE,cAAYQ,GAAER,EAAC,MAAIK,GAAEL,EAAC,KAAGqB,GAAE,KAAKrB,EAAC,KAAGW;AAAA,YAAC;AAAC,qBAASJ,GAAEP,IAAE;AAAC,kBAAG,YAAU,OAAOA,GAAE,QAAOA;AAAE,kBAAGM,GAAEN,EAAC,EAAE,QAAOU;AAAE,kBAAGN,GAAEJ,EAAC,GAAE;AAAC,oBAAIC,KAAE,cAAY,OAAOD,GAAE,UAAQA,GAAE,QAAQ,IAAEA;AAAE,gBAAAA,KAAEI,GAAEH,EAAC,IAAEA,KAAE,KAAGA;AAAA,cAAC;AAAC,kBAAG,YAAU,OAAOD,GAAE,QAAO,MAAIA,KAAEA,KAAE,CAACA;AAAE,cAAAA,KAAEA,GAAE,QAAQY,IAAE,EAAE;AAAE,kBAAIT,KAAEW,GAAE,KAAKd,EAAC;AAAE,qBAAOG,MAAGY,GAAE,KAAKf,EAAC,IAAEgB,GAAEhB,GAAE,MAAM,CAAC,GAAEG,KAAE,IAAE,CAAC,IAAEU,GAAE,KAAKb,EAAC,IAAEU,KAAE,CAACV;AAAA,YAAC;AAAC,gBAAIQ,KAAE,cAAY,OAAO,UAAQ,YAAU,OAAO,OAAO,WAAS,SAASR,IAAE;AAAC,qBAAO,OAAOA;AAAA,YAAC,IAAE,SAASA,IAAE;AAAC,qBAAOA,MAAG,cAAY,OAAO,UAAQA,GAAE,gBAAc,UAAQA,OAAI,OAAO,YAAU,WAAS,OAAOA;AAAA,YAAC,GAAES,KAAE,uBAAsBC,KAAE,KAAIC,KAAE,mBAAkBC,KAAE,cAAaC,KAAE,sBAAqBC,KAAE,cAAaC,KAAE,eAAcC,KAAE,UAASC,KAAE,aAAW,eAAa,OAAOhB,KAAE,cAAYO,GAAEP,EAAC,MAAIA,MAAGA,GAAE,WAAS,UAAQA,IAAEiB,KAAE,aAAW,eAAa,OAAO,OAAK,cAAYV,GAAE,IAAI,MAAI,QAAM,KAAK,WAAS,UAAQ,MAAKW,KAAEF,MAAGC,MAAG,SAAS,aAAa,EAAE,GAAEE,KAAE,OAAO,WAAUC,KAAED,GAAE,UAASE,KAAE,KAAK,KAAIC,KAAE,KAAK,KAAIC,KAAE,WAAU;AAAC,qBAAOL,GAAE,KAAK,IAAI;AAAA,YAAC;AAAE,YAAAnB,GAAE,UAAQE;AAAA,UAAC,GAAG,KAAKD,IAAE,2BAAU;AAAC,mBAAO;AAAA,UAAI,EAAE,CAAC;AAAA,QAAC,GAAE,SAASD,IAAEC,IAAE;AAAC,WAAC,SAASA,IAAE;AAAC;AAAa,qBAASE,GAAEH,IAAEC,IAAEE,IAAE;AAAC,uBAASC,GAAEH,IAAE;AAAC,oBAAIE,KAAEY,IAAEb,KAAEc;AAAE,uBAAOD,KAAEC,KAAE,QAAOQ,KAAEvB,IAAEiB,KAAElB,GAAE,MAAME,IAAEC,EAAC;AAAA,cAAC;AAAC,uBAASE,GAAEL,IAAE;AAAC,uBAAOwB,KAAExB,IAAEmB,KAAE,WAAWT,IAAET,EAAC,GAAEwB,KAAErB,GAAEJ,EAAC,IAAEkB;AAAA,cAAC;AAAC,uBAASX,GAAEP,IAAE;AAAC,oBAAIG,KAAEH,KAAEoB,IAAElB,KAAEF,KAAEwB,IAAEpB,KAAEH,KAAEE;AAAE,uBAAOuB,KAAEJ,GAAElB,IAAEa,KAAEf,EAAC,IAAEE;AAAA,cAAC;AAAC,uBAASK,GAAET,IAAE;AAAC,oBAAIG,KAAEH,KAAEoB,IAAElB,KAAEF,KAAEwB;AAAE,uBAAO,WAASJ,MAAGjB,MAAGF,MAAGE,KAAE,KAAGuB,MAAGxB,MAAGe;AAAA,cAAC;AAAC,uBAASP,KAAG;AAAC,oBAAIV,KAAEuB,GAAE;AAAE,uBAAOd,GAAET,EAAC,IAAEW,GAAEX,EAAC,IAAE,MAAKmB,KAAE,WAAWT,IAAEH,GAAEP,EAAC,CAAC;AAAA,cAAE;AAAC,uBAASW,GAAEX,IAAE;AAAC,uBAAOmB,KAAE,QAAOQ,MAAGZ,KAAEX,GAAEJ,EAAC,KAAGe,KAAEC,KAAE,QAAOE;AAAA,cAAE;AAAC,uBAASN,KAAG;AAAC,2BAASO,MAAG,aAAaA,EAAC,GAAEK,KAAE,GAAET,KAAEK,KAAEJ,KAAEG,KAAE;AAAA,cAAM;AAAC,uBAASN,KAAG;AAAC,uBAAO,WAASM,KAAED,KAAEP,GAAEY,GAAE,CAAC;AAAA,cAAC;AAAC,uBAAST,KAAG;AAAC,oBAAId,KAAEuB,GAAE,GAAEpB,KAAEM,GAAET,EAAC;AAAE,oBAAGe,KAAE,WAAUC,KAAE,MAAKI,KAAEpB,IAAEG,IAAE;AAAC,sBAAG,WAASgB,GAAE,QAAOd,GAAEe,EAAC;AAAE,sBAAGM,GAAE,QAAOP,KAAE,WAAWT,IAAET,EAAC,GAAEG,GAAEgB,EAAC;AAAA,gBAAC;AAAC,uBAAO,WAASD,OAAIA,KAAE,WAAWT,IAAET,EAAC,IAAGiB;AAAA,cAAC;AAAC,kBAAIH,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEI,KAAE,GAAEC,KAAE,OAAGC,KAAE,OAAGC,KAAE;AAAG,kBAAG,cAAY,OAAO3B,GAAE,OAAM,IAAI,UAAUQ,EAAC;AAAE,qBAAOP,KAAEK,GAAEL,EAAC,KAAG,GAAEC,GAAEC,EAAC,MAAIsB,KAAE,CAAC,CAACtB,GAAE,SAAQuB,KAAE,aAAYvB,IAAEc,KAAES,KAAEL,GAAEf,GAAEH,GAAE,OAAO,KAAG,GAAEF,EAAC,IAAEgB,IAAEU,KAAE,cAAaxB,KAAE,CAAC,CAACA,GAAE,WAASwB,KAAGb,GAAE,SAAOF,IAAEE,GAAE,QAAMD,IAAEC;AAAA,YAAC;AAAC,qBAASZ,GAAEF,IAAE;AAAC,kBAAIC,KAAE,eAAa,OAAOD,KAAE,cAAYO,GAAEP,EAAC;AAAE,qBAAM,CAAC,CAACA,OAAI,YAAUC,MAAG,cAAYA;AAAA,YAAE;AAAC,qBAASG,GAAEJ,IAAE;AAAC,qBAAM,CAAC,CAACA,MAAG,aAAW,eAAa,OAAOA,KAAE,cAAYO,GAAEP,EAAC;AAAA,YAAE;AAAC,qBAASK,GAAEL,IAAE;AAAC,qBAAM,aAAW,eAAa,OAAOA,KAAE,cAAYO,GAAEP,EAAC,MAAII,GAAEJ,EAAC,KAAGoB,GAAE,KAAKpB,EAAC,KAAGU;AAAA,YAAC;AAAC,qBAASJ,GAAEN,IAAE;AAAC,kBAAG,YAAU,OAAOA,GAAE,QAAOA;AAAE,kBAAGK,GAAEL,EAAC,EAAE,QAAOS;AAAE,kBAAGP,GAAEF,EAAC,GAAE;AAAC,oBAAIC,KAAE,cAAY,OAAOD,GAAE,UAAQA,GAAE,QAAQ,IAAEA;AAAE,gBAAAA,KAAEE,GAAED,EAAC,IAAEA,KAAE,KAAGA;AAAA,cAAC;AAAC,kBAAG,YAAU,OAAOD,GAAE,QAAO,MAAIA,KAAEA,KAAE,CAACA;AAAE,cAAAA,KAAEA,GAAE,QAAQW,IAAE,EAAE;AAAE,kBAAIR,KAAEU,GAAE,KAAKb,EAAC;AAAE,qBAAOG,MAAGW,GAAE,KAAKd,EAAC,IAAEe,GAAEf,GAAE,MAAM,CAAC,GAAEG,KAAE,IAAE,CAAC,IAAES,GAAE,KAAKZ,EAAC,IAAES,KAAE,CAACT;AAAA,YAAC;AAAC,gBAAIO,KAAE,cAAY,OAAO,UAAQ,YAAU,OAAO,OAAO,WAAS,SAASP,IAAE;AAAC,qBAAO,OAAOA;AAAA,YAAC,IAAE,SAASA,IAAE;AAAC,qBAAOA,MAAG,cAAY,OAAO,UAAQA,GAAE,gBAAc,UAAQA,OAAI,OAAO,YAAU,WAAS,OAAOA;AAAA,YAAC,GAAEQ,KAAE,uBAAsBC,KAAE,KAAIC,KAAE,mBAAkBC,KAAE,cAAaC,KAAE,sBAAqBC,KAAE,cAAaC,KAAE,eAAcC,KAAE,UAASC,KAAE,aAAW,eAAa,OAAOf,KAAE,cAAYM,GAAEN,EAAC,MAAIA,MAAGA,GAAE,WAAS,UAAQA,IAAEgB,KAAE,aAAW,eAAa,OAAO,OAAK,cAAYV,GAAE,IAAI,MAAI,QAAM,KAAK,WAAS,UAAQ,MAAKW,KAAEF,MAAGC,MAAG,SAAS,aAAa,EAAE,GAAEE,KAAE,OAAO,WAAUC,KAAED,GAAE,UAASE,KAAE,KAAK,KAAIC,KAAE,KAAK,KAAIC,KAAE,WAAU;AAAC,qBAAOL,GAAE,KAAK,IAAI;AAAA,YAAC;AAAE,YAAAlB,GAAE,UAAQG;AAAA,UAAC,GAAG,KAAKF,IAAE,2BAAU;AAAC,mBAAO;AAAA,UAAI,EAAE,CAAC;AAAA,QAAC,GAAE,SAASD,IAAEC,IAAE;AAAC;AAAa,mBAASE,GAAEH,IAAE;AAAC,gBAAIC,KAAE,QAAOC,KAAE,QAAOE,KAAE;AAAO,iBAAIH,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAG,GAAE;AAAC,kBAAGC,KAAEF,GAAEC,EAAC,GAAEC,GAAE,WAASA,GAAE,QAAQ,IAAI,QAAM;AAAG,kBAAGE,KAAEF,GAAE,YAAUC,GAAED,GAAE,QAAQ,EAAE,QAAM;AAAA,YAAE;AAAC,mBAAM;AAAA,UAAE;AAAC,mBAASA,KAAG;AAAC,mBAAO,OAAO,oBAAkB,OAAO,0BAAwB,OAAO;AAAA,UAAmB;AAAC,mBAASE,KAAG;AAAC,mBAAM,CAAC,CAACF,GAAE;AAAA,UAAC;AAAC,mBAASG,GAAEL,IAAEC,IAAE;AAAC,gBAAIE,KAAE,OAAO,UAASC,KAAEF,GAAE,GAAEG,KAAE,IAAID,GAAEE,EAAC;AAAE,YAAAC,KAAEN,IAAEI,GAAE,QAAQF,GAAE,iBAAgB,EAAC,WAAU,MAAG,SAAQ,MAAG,cAAa,KAAE,CAAC;AAAA,UAAC;AAAC,mBAASG,GAAEN,IAAE;AAAC,YAAAA,MAAGA,GAAE,QAAQ,SAASA,IAAE;AAAC,kBAAIC,KAAE,MAAM,UAAU,MAAM,KAAKD,GAAE,UAAU,GAAEE,KAAE,MAAM,UAAU,MAAM,KAAKF,GAAE,YAAY,GAAEI,KAAEH,GAAE,OAAOC,EAAC;AAAE,kBAAGC,GAAEC,EAAC,EAAE,QAAOG,GAAE;AAAA,YAAC,CAAC;AAAA,UAAC;AAAC,iBAAO,eAAeN,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAE,cAAIM,KAAE,WAAU;AAAA,UAAC;AAAE,UAAAN,GAAE,UAAQ,EAAC,aAAYG,IAAE,OAAMC,GAAC;AAAA,QAAC,GAAE,SAASL,IAAEC,IAAE;AAAC;AAAa,mBAASE,GAAEH,IAAEC,IAAE;AAAC,gBAAG,EAAED,cAAaC,IAAG,OAAM,IAAI,UAAU,mCAAmC;AAAA,UAAC;AAAC,mBAASC,KAAG;AAAC,mBAAO,UAAU,aAAW,UAAU,UAAQ,OAAO,SAAO;AAAA,UAAE;AAAC,iBAAO,eAAeD,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAE,cAAIG,KAAE,2BAAU;AAAC,qBAASJ,GAAEA,IAAEC,IAAE;AAAC,uBAAQE,KAAE,GAAEA,KAAEF,GAAE,QAAOE,MAAI;AAAC,oBAAID,KAAED,GAAEE,EAAC;AAAE,gBAAAD,GAAE,aAAWA,GAAE,cAAY,OAAGA,GAAE,eAAa,MAAG,WAAUA,OAAIA,GAAE,WAAS,OAAI,OAAO,eAAeF,IAAEE,GAAE,KAAIA,EAAC;AAAA,cAAC;AAAA,YAAC;AAAC,mBAAO,SAASD,IAAEE,IAAED,IAAE;AAAC,qBAAOC,MAAGH,GAAEC,GAAE,WAAUE,EAAC,GAAED,MAAGF,GAAEC,IAAEC,EAAC,GAAED;AAAA,YAAC;AAAA,UAAC,EAAE,GAAEI,KAAE,4TAA2TC,KAAE,2kDAA0kDC,KAAE,uVAAsVC,KAAE,2kDAA0kDC,KAAE,WAAU;AAAC,qBAAST,KAAG;AAAC,cAAAG,GAAE,MAAKH,EAAC;AAAA,YAAC;AAAC,mBAAOI,GAAEJ,IAAE,CAAC,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,kBAAIA,KAAEE,GAAE;AAAE,qBAAM,EAAE,CAACG,GAAE,KAAKL,EAAC,KAAG,CAACM,GAAE,KAAKN,GAAE,OAAO,GAAE,CAAC,CAAC;AAAA,YAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,kBAAIA,KAAEE,GAAE;AAAE,qBAAM,EAAE,CAACK,GAAE,KAAKP,EAAC,KAAG,CAACQ,GAAE,KAAKR,GAAE,OAAO,GAAE,CAAC,CAAC;AAAA,YAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,qBAAO,KAAK,OAAO,KAAG,CAAC,KAAK,MAAM;AAAA,YAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,UAAC,EAAE;AAAE,UAAAC,GAAE,UAAQ,IAAIQ;AAAA,QAAC,GAAE,SAAST,IAAEC,IAAE;AAAC;AAAa,iBAAO,eAAeA,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAE,cAAIE,KAAE,SAASH,IAAEC,IAAEE,IAAE;AAAC,gBAAID,KAAEF,GAAE,KAAK,aAAa,eAAe;AAAE,YAAAC,KAAED,GAAE,WAASA,GAAE,KAAK,UAAU,IAAI,aAAa,IAAE,eAAa,OAAOE,OAAI,YAAUA,MAAG,CAACC,MAAG,WAASD,OAAIF,GAAE,KAAK,UAAU,OAAO,aAAa;AAAA,UAAC,GAAEE,KAAE,SAASF,IAAEC,IAAE;AAAC,gBAAIC,KAAE,OAAO,aAAYE,KAAE,OAAO;AAAY,YAAAJ,GAAE,QAAQ,SAASA,IAAEK,IAAE;AAAC,cAAAF,GAAEH,IAAEI,KAAEF,IAAED,EAAC;AAAA,YAAC,CAAC;AAAA,UAAC;AAAE,UAAAA,GAAE,UAAQC;AAAA,QAAC,GAAE,SAASF,IAAEC,IAAEE,IAAE;AAAC;AAAa,mBAASD,GAAEF,IAAE;AAAC,mBAAOA,MAAGA,GAAE,aAAWA,KAAE,EAAC,SAAQA,GAAC;AAAA,UAAC;AAAC,iBAAO,eAAeC,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAE,cAAIG,KAAED,GAAE,EAAE,GAAEE,KAAEH,GAAEE,EAAC,GAAEE,KAAE,SAASN,IAAEC,IAAE;AAAC,mBAAOD,GAAE,QAAQ,SAASA,IAAEG,IAAE;AAAC,cAAAH,GAAE,KAAK,UAAU,IAAI,UAAU,GAAEA,GAAE,YAAU,GAAEK,GAAE,SAASL,GAAE,MAAKC,GAAE,MAAM;AAAA,YAAC,CAAC,GAAED;AAAA,UAAC;AAAE,UAAAC,GAAE,UAAQK;AAAA,QAAC,GAAE,SAASN,IAAEC,IAAEE,IAAE;AAAC;AAAa,mBAASD,GAAEF,IAAE;AAAC,mBAAOA,MAAGA,GAAE,aAAWA,KAAE,EAAC,SAAQA,GAAC;AAAA,UAAC;AAAC,iBAAO,eAAeC,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAE,cAAIG,KAAED,GAAE,EAAE,GAAEE,KAAEH,GAAEE,EAAC,GAAEE,KAAE,SAASN,IAAEC,IAAE;AAAC,gBAAIE,KAAE,GAAED,KAAE,GAAEE,KAAE,OAAO,aAAYE,KAAE,EAAC,QAAON,GAAE,aAAa,iBAAiB,GAAE,QAAOA,GAAE,aAAa,iBAAiB,GAAE,iBAAgBA,GAAE,aAAa,2BAA2B,EAAC;AAAE,oBAAOM,GAAE,UAAQ,CAAC,MAAMA,GAAE,MAAM,MAAIJ,KAAE,SAASI,GAAE,MAAM,IAAGA,GAAE,UAAQ,SAAS,iBAAiBA,GAAE,MAAM,MAAIN,KAAE,SAAS,iBAAiBM,GAAE,MAAM,EAAE,CAAC,IAAGH,MAAG,GAAEE,GAAE,SAASL,EAAC,EAAE,KAAIM,GAAE,iBAAgB;AAAA,cAAC,KAAI;AAAa;AAAA,cAAM,KAAI;AAAgB,gBAAAH,MAAGH,GAAE,eAAa;AAAE;AAAA,cAAM,KAAI;AAAgB,gBAAAG,MAAGH,GAAE;AAAa;AAAA,cAAM,KAAI;AAAa,gBAAAG,MAAGC,KAAE;AAAE;AAAA,cAAM,KAAI;AAAgB,gBAAAD,MAAGC,KAAE,IAAEJ,GAAE;AAAa;AAAA,cAAM,KAAI;AAAgB,gBAAAG,MAAGC,KAAE,IAAEJ,GAAE,eAAa;AAAE;AAAA,cAAM,KAAI;AAAU,gBAAAG,MAAGC;AAAE;AAAA,cAAM,KAAI;AAAa,gBAAAD,MAAGH,GAAE,eAAaI;AAAE;AAAA,cAAM,KAAI;AAAa,gBAAAD,MAAGH,GAAE,eAAa,IAAEI;AAAA,YAAC;AAAC,mBAAOE,GAAE,mBAAiBA,GAAE,UAAQ,MAAML,EAAC,MAAIC,KAAED,KAAGE,KAAED;AAAA,UAAC;AAAE,UAAAD,GAAE,UAAQK;AAAA,QAAC,GAAE,SAASN,IAAEC,IAAE;AAAC;AAAa,iBAAO,eAAeA,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAE,cAAIE,KAAE,SAASH,IAAE;AAAC,qBAAQC,KAAE,GAAEE,KAAE,GAAEH,MAAG,CAAC,MAAMA,GAAE,UAAU,KAAG,CAAC,MAAMA,GAAE,SAAS,IAAG,CAAAC,MAAGD,GAAE,cAAY,UAAQA,GAAE,UAAQA,GAAE,aAAW,IAAGG,MAAGH,GAAE,aAAW,UAAQA,GAAE,UAAQA,GAAE,YAAU,IAAGA,KAAEA,GAAE;AAAa,mBAAM,EAAC,KAAIG,IAAE,MAAKF,GAAC;AAAA,UAAC;AAAE,UAAAA,GAAE,UAAQE;AAAA,QAAC,GAAE,SAASH,IAAEC,IAAE;AAAC;AAAa,iBAAO,eAAeA,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAE,cAAIE,KAAE,SAASH,IAAE;AAAC,mBAAOA,KAAEA,MAAG,SAAS,iBAAiB,YAAY,GAAE,MAAM,UAAU,IAAI,KAAKA,IAAE,SAASA,IAAE;AAAC,qBAAM,EAAC,MAAKA,GAAC;AAAA,YAAC,CAAC;AAAA,UAAC;AAAE,UAAAC,GAAE,UAAQE;AAAA,QAAC,CAAC,CAAC;AAAA,MAAC,CAAC;AAAA;AAAA;;;ACAh2c,MAAO;AAAP;AAAA;AAAA,MAAO,mBAAQ;AAAA,QACb,QAAQ,OAAO,YAAY,cAAc,UAAU;AAAA,QACnD,WAAW,OAAO,cAAc,cAAc,YAAY;AAAA,MAC5D;AAAA;AAAA;;;ACHA,MAcO;AAdP;AAAA;AAAA;AAcA,MAAO,iBAAQ;AAAA,QACb,OAAO,UAAU;AACf,cAAI,KAAK,SAAS;AAChB,qBAAS,KAAK,KAAK,IAAI,CAAC;AACxB,6BAAS,OAAO,IAAI,iBAAiB,GAAG,QAAQ;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA;AAAA;;;ACrBA,MAKM,KAEA,cAEA,mBAkHC;AA3HP;AAAA;AAAA;AAKA,MAAM,MAAM,OAAM,oBAAI,KAAK,GAAE,QAAQ;AAErC,MAAM,eAAe,WAAS,IAAI,IAAI,QAAQ;AAE9C,MAAM,oBAAN,MAAwB;AAAA,QACtB,YAAY,YAAY;AACtB,eAAK,sBAAsB,KAAK,oBAAoB,KAAK,IAAI;AAC7D,eAAK,aAAa;AAClB,eAAK,oBAAoB;AAAA,QAC3B;AAAA,QAEA,QAAQ;AACN,cAAI,CAAC,KAAK,UAAU,GAAG;AACrB,iBAAK,YAAY,IAAI;AACrB,mBAAO,KAAK;AACZ,iBAAK,aAAa;AAClB,6BAAiB,oBAAoB,KAAK,mBAAmB;AAC7D,2BAAO,IAAI,gDAAgD,KAAK,YAAY,cAAc,IAAI;AAAA,UAChG;AAAA,QACF;AAAA,QAEA,OAAO;AACL,cAAI,KAAK,UAAU,GAAG;AACpB,iBAAK,YAAY,IAAI;AACrB,iBAAK,YAAY;AACjB,gCAAoB,oBAAoB,KAAK,mBAAmB;AAChE,2BAAO,IAAI,2BAA2B;AAAA,UACxC;AAAA,QACF;AAAA,QAEA,YAAY;AACV,iBAAO,KAAK,aAAa,CAAC,KAAK;AAAA,QACjC;AAAA,QAEA,gBAAgB;AACd,eAAK,WAAW,IAAI;AAAA,QACtB;AAAA,QAEA,gBAAgB;AACd,eAAK,oBAAoB;AACzB,iBAAO,KAAK;AACZ,yBAAO,IAAI,oCAAoC;AAAA,QACjD;AAAA,QAEA,mBAAmB;AACjB,eAAK,iBAAiB,IAAI;AAC1B,yBAAO,IAAI,uCAAuC;AAAA,QACpD;AAAA;AAAA,QAIA,eAAe;AACb,eAAK,YAAY;AACjB,eAAK,KAAK;AAAA,QACZ;AAAA,QAEA,cAAc;AACZ,uBAAa,KAAK,WAAW;AAAA,QAC/B;AAAA,QAEA,OAAO;AACL,eAAK,cAAc;AAAA,YAAW,MAAM;AAClC,mBAAK,iBAAiB;AACtB,mBAAK,KAAK;AAAA,YACZ;AAAA,YACE,KAAK,gBAAgB;AAAA,UAAC;AAAA,QAC1B;AAAA,QAEA,kBAAkB;AAChB,gBAAM,EAAE,gBAAgB,wBAAwB,IAAI,KAAK;AACzD,gBAAM,UAAU,KAAK,IAAI,IAAI,yBAAyB,KAAK,IAAI,KAAK,mBAAmB,EAAE,CAAC;AAC1F,gBAAM,YAAY,KAAK,sBAAsB,IAAI,IAAM;AACvD,gBAAM,SAAS,YAAY,KAAK,OAAO;AACvC,iBAAO,iBAAiB,MAAO,WAAW,IAAI;AAAA,QAChD;AAAA,QAEA,mBAAmB;AACjB,cAAI,KAAK,kBAAkB,GAAG;AAC5B,2BAAO,IAAI,oEAAoE,KAAK,iBAAiB,kBAAkB,aAAa,KAAK,WAAW,CAAC,yBAAyB,KAAK,YAAY,cAAc,IAAI;AACjN,iBAAK;AACL,gBAAI,KAAK,qBAAqB,GAAG;AAC/B,6BAAO,IAAI,+EAA+E,aAAa,KAAK,cAAc,CAAC,IAAI;AAAA,YACjI,OAAO;AACL,6BAAO,IAAI,6BAA6B;AACxC,mBAAK,WAAW,OAAO;AAAA,YACzB;AAAA,UACF;AAAA,QACF;AAAA,QAEA,IAAI,cAAc;AAChB,iBAAO,KAAK,WAAW,KAAK,WAAW,KAAK;AAAA,QAC9C;AAAA,QAEA,oBAAoB;AAClB,iBAAO,aAAa,KAAK,WAAW,IAAI,KAAK,YAAY;AAAA,QAC3D;AAAA,QAEA,uBAAuB;AACrB,iBAAO,KAAK,kBAAmB,aAAa,KAAK,cAAc,IAAI,KAAK,YAAY;AAAA,QACtF;AAAA,QAEA,sBAAsB;AACpB,cAAI,SAAS,oBAAoB,WAAW;AAC1C;AAAA,cAAW,MAAM;AACf,oBAAI,KAAK,kBAAkB,KAAK,CAAC,KAAK,WAAW,OAAO,GAAG;AACzD,iCAAO,IAAI,uFAAuF,SAAS,eAAe,EAAE;AAC5H,uBAAK,WAAW,OAAO;AAAA,gBACzB;AAAA,cACF;AAAA,cACE;AAAA,YAAG;AAAA,UACP;AAAA,QACF;AAAA,MAEF;AAEA,wBAAkB,iBAAiB;AACnC,wBAAkB,0BAA0B;AAE5C,MAAO,6BAAQ;AAAA;AAAA;;;AC3Hf,MAAO;AAAP;AAAA;AAAA,MAAO,mBAAQ;AAAA,QACb,iBAAiB;AAAA,UACf,WAAW;AAAA,UACX,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,aAAa;AAAA,QACf;AAAA,QACA,sBAAsB;AAAA,UACpB,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,UAAU;AAAA,QACZ;AAAA,QACA,sBAAsB;AAAA,QACtB,aAAa;AAAA,UACX;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA;AAAA;;;ACnBA,MAOO,eAAe,WAChB,oBAEA,SAEA,YAwKC;AApLP;AAAA;AAAA;AACA;AACA;AACA;AAIA,OAAM,EAAC,eAAe,cAAa;AACnC,MAAM,qBAAqB,UAAU,MAAM,GAAG,UAAU,SAAS,CAAC;AAElE,MAAM,UAAU,CAAC,EAAE;AAEnB,MAAM,aAAN,MAAiB;AAAA,QACf,YAAYyB,WAAU;AACpB,eAAK,OAAO,KAAK,KAAK,KAAK,IAAI;AAC/B,eAAK,WAAWA;AAChB,eAAK,gBAAgB,KAAK,SAAS;AACnC,eAAK,UAAU,IAAI,2BAAkB,IAAI;AACzC,eAAK,eAAe;AAAA,QACtB;AAAA,QAEA,KAAK,MAAM;AACT,cAAI,KAAK,OAAO,GAAG;AACjB,iBAAK,UAAU,KAAK,KAAK,UAAU,IAAI,CAAC;AACxC,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QAEA,OAAO;AACL,cAAI,KAAK,SAAS,GAAG;AACnB,2BAAO,IAAI,uDAAuD,KAAK,SAAS,CAAC,EAAE;AACnF,mBAAO;AAAA,UACT,OAAO;AACL,kBAAM,kBAAkB,CAAC,GAAG,WAAW,GAAG,KAAK,SAAS,gBAAgB,CAAC,CAAC;AAC1E,2BAAO,IAAI,uCAAuC,KAAK,SAAS,CAAC,mBAAmB,eAAe,EAAE;AACrG,gBAAI,KAAK,WAAW;AAAE,mBAAK,uBAAuB;AAAA,YAAE;AACpD,iBAAK,YAAY,IAAI,iBAAS,UAAU,KAAK,SAAS,KAAK,eAAe;AAC1E,iBAAK,qBAAqB;AAC1B,iBAAK,QAAQ,MAAM;AACnB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QAEA,MAAM,EAAC,eAAc,IAAI,EAAC,gBAAgB,KAAI,GAAG;AAC/C,cAAI,CAAC,gBAAgB;AAAE,iBAAK,QAAQ,KAAK;AAAA,UAAE;AAE3C,cAAI,KAAK,OAAO,GAAG;AACjB,mBAAO,KAAK,UAAU,MAAM;AAAA,UAC9B;AAAA,QACF;AAAA,QAEA,SAAS;AACP,yBAAO,IAAI,yCAAyC,KAAK,SAAS,CAAC,EAAE;AACrE,cAAI,KAAK,SAAS,GAAG;AACnB,gBAAI;AACF,qBAAO,KAAK,MAAM;AAAA,YACpB,SAASC,QAAO;AACd,6BAAO,IAAI,8BAA8BA,MAAK;AAAA,YAChD,UACA;AACE,6BAAO,IAAI,0BAA0B,KAAK,YAAY,WAAW,IAAI;AACrE,yBAAW,KAAK,MAAM,KAAK,YAAY,WAAW;AAAA,YACpD;AAAA,UACF,OAAO;AACL,mBAAO,KAAK,KAAK;AAAA,UACnB;AAAA,QACF;AAAA,QAEA,cAAc;AACZ,cAAI,KAAK,WAAW;AAClB,mBAAO,KAAK,UAAU;AAAA,UACxB;AAAA,QACF;AAAA,QAEA,SAAS;AACP,iBAAO,KAAK,QAAQ,MAAM;AAAA,QAC5B;AAAA,QAEA,WAAW;AACT,iBAAO,KAAK,QAAQ,QAAQ,YAAY;AAAA,QAC1C;AAAA,QAEA,mBAAmB;AACjB,iBAAO,KAAK,QAAQ,oBAAoB;AAAA,QAC1C;AAAA;AAAA,QAIA,sBAAsB;AACpB,iBAAO,QAAQ,KAAK,oBAAoB,KAAK,YAAY,CAAC,KAAK;AAAA,QACjE;AAAA,QAEA,WAAW,QAAQ;AACjB,iBAAO,QAAQ,KAAK,QAAQ,KAAK,SAAS,CAAC,KAAK;AAAA,QAClD;AAAA,QAEA,WAAW;AACT,cAAI,KAAK,WAAW;AAClB,qBAAS,SAAS,iBAAS,WAAW;AACpC,kBAAI,iBAAS,UAAU,KAAK,MAAM,KAAK,UAAU,YAAY;AAC3D,uBAAO,MAAM,YAAY;AAAA,cAC3B;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,QAEA,uBAAuB;AACrB,mBAAS,aAAa,KAAK,QAAQ;AACjC,kBAAM,UAAU,KAAK,OAAO,SAAS,EAAE,KAAK,IAAI;AAChD,iBAAK,UAAU,KAAK,SAAS,EAAE,IAAI;AAAA,UACrC;AAAA,QACF;AAAA,QAEA,yBAAyB;AACvB,mBAAS,aAAa,KAAK,QAAQ;AACjC,iBAAK,UAAU,KAAK,SAAS,EAAE,IAAI,WAAW;AAAA,YAAC;AAAA,UACjD;AAAA,QACF;AAAA,MAEF;AAEA,iBAAW,cAAc;AAEzB,iBAAW,UAAU,SAAS;AAAA,QAC5B,QAAQC,QAAO;AACb,cAAI,CAAC,KAAK,oBAAoB,GAAG;AAAE;AAAA,UAAO;AAC1C,gBAAM,EAAC,YAAY,SAAAC,UAAS,QAAQ,WAAW,KAAI,IAAI,KAAK,MAAMD,OAAM,IAAI;AAC5E,eAAK,QAAQ,cAAc;AAC3B,kBAAQ,MAAM;AAAA,YACZ,KAAK,cAAc;AACjB,kBAAI,KAAK,iBAAiB,GAAG;AAC3B,qBAAK,qBAAqB;AAAA,cAC5B;AACA,mBAAK,QAAQ,cAAc;AAC3B,qBAAO,KAAK,cAAc,OAAO;AAAA,YACnC,KAAK,cAAc;AACjB,6BAAO,IAAI,0BAA0B,MAAM,EAAE;AAC7C,qBAAO,KAAK,MAAM,EAAC,gBAAgB,UAAS,CAAC;AAAA,YAC/C,KAAK,cAAc;AACjB,qBAAO;AAAA,YACT,KAAK,cAAc;AACjB,mBAAK,cAAc,oBAAoB,UAAU;AACjD,kBAAI,KAAK,oBAAoB;AAC3B,qBAAK,qBAAqB;AAC1B,uBAAO,KAAK,cAAc,OAAO,YAAY,aAAa,EAAC,aAAa,KAAI,CAAC;AAAA,cAC/E,OAAO;AACL,uBAAO,KAAK,cAAc,OAAO,YAAY,aAAa,EAAC,aAAa,MAAK,CAAC;AAAA,cAChF;AAAA,YACF,KAAK,cAAc;AACjB,qBAAO,KAAK,cAAc,OAAO,UAAU;AAAA,YAC7C;AACE,qBAAO,KAAK,cAAc,OAAO,YAAY,YAAYC,QAAO;AAAA,UACpE;AAAA,QACF;AAAA,QAEA,OAAO;AACL,yBAAO,IAAI,kCAAkC,KAAK,YAAY,CAAC,eAAe;AAC9E,eAAK,eAAe;AACpB,cAAI,CAAC,KAAK,oBAAoB,GAAG;AAC/B,2BAAO,IAAI,8DAA8D;AACzE,mBAAO,KAAK,MAAM,EAAC,gBAAgB,MAAK,CAAC;AAAA,UAC3C;AAAA,QACF;AAAA,QAEA,MAAMD,QAAO;AACX,yBAAO,IAAI,yBAAyB;AACpC,cAAI,KAAK,cAAc;AAAE;AAAA,UAAO;AAChC,eAAK,eAAe;AACpB,eAAK,QAAQ,iBAAiB;AAC9B,iBAAO,KAAK,cAAc,UAAU,gBAAgB,EAAC,sBAAsB,KAAK,QAAQ,UAAU,EAAC,CAAC;AAAA,QACtG;AAAA,QAEA,QAAQ;AACN,yBAAO,IAAI,yBAAyB;AAAA,QACtC;AAAA,MACF;AAEA,MAAO,qBAAQ;AAAA;AAAA;;;ACpLf,MA0DME,SAUe;AApErB;AAAA;AA0DA,MAAMA,UAAS,SAAS,QAAQ,YAAY;AAC1C,YAAI,cAAc,MAAM;AACtB,mBAAS,OAAO,YAAY;AAC1B,kBAAM,QAAQ,WAAW,GAAG;AAC5B,mBAAO,GAAG,IAAI;AAAA,UAChB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,MAAqB,eAArB,MAAkC;AAAA,QAChC,YAAYC,WAAU,SAAS,CAAC,GAAG,OAAO;AACxC,eAAK,WAAWA;AAChB,eAAK,aAAa,KAAK,UAAU,MAAM;AACvC,UAAAD,QAAO,MAAM,KAAK;AAAA,QACpB;AAAA;AAAA,QAGA,QAAQ,QAAQ,OAAO,CAAC,GAAG;AACzB,eAAK,SAAS;AACd,iBAAO,KAAK,KAAK,IAAI;AAAA,QACvB;AAAA,QAEA,KAAK,MAAM;AACT,iBAAO,KAAK,SAAS,KAAK,EAAC,SAAS,WAAW,YAAY,KAAK,YAAY,MAAM,KAAK,UAAU,IAAI,EAAC,CAAC;AAAA,QACzG;AAAA,QAEA,cAAc;AACZ,iBAAO,KAAK,SAAS,cAAc,OAAO,IAAI;AAAA,QAChD;AAAA,MACF;AAAA;AAAA;;;ACxFA,MAKM,uBA4CC;AAjDP;AAAA;AAAA;AAKA,MAAM,wBAAN,MAA4B;AAAA,QAC1B,YAAY,eAAe;AACzB,eAAK,gBAAgB;AACrB,eAAK,uBAAuB,CAAC;AAAA,QAC/B;AAAA,QAEA,UAAU,cAAc;AACtB,cAAG,KAAK,qBAAqB,QAAQ,YAAY,KAAK,IAAG;AACvD,2BAAO,IAAI,sCAAsC,aAAa,UAAU,EAAE;AAC1E,iBAAK,qBAAqB,KAAK,YAAY;AAAA,UAC7C,OACK;AACH,2BAAO,IAAI,8CAA8C,aAAa,UAAU,EAAE;AAAA,UACpF;AACA,eAAK,kBAAkB;AAAA,QACzB;AAAA,QAEA,OAAO,cAAc;AACnB,yBAAO,IAAI,oCAAoC,aAAa,UAAU,EAAE;AACxE,eAAK,uBAAwB,KAAK,qBAAqB,OAAO,CAACE,OAAMA,OAAM,YAAY;AAAA,QACzF;AAAA,QAEA,oBAAoB;AAClB,eAAK,iBAAiB;AACtB,eAAK,iBAAiB;AAAA,QACxB;AAAA,QAEA,mBAAmB;AACjB,uBAAa,KAAK,YAAY;AAAA,QAChC;AAAA,QAEA,mBAAmB;AACjB,eAAK,eAAe;AAAA,YAAW,MAAM;AACnC,kBAAI,KAAK,iBAAiB,OAAO,KAAK,cAAc,cAAe,YAAY;AAC7E,qBAAK,qBAAqB,IAAI,CAAC,iBAAiB;AAC9C,iCAAO,IAAI,uCAAuC,aAAa,UAAU,EAAE;AAC3E,uBAAK,cAAc,UAAU,YAAY;AAAA,gBAC3C,CAAC;AAAA,cACH;AAAA,YACF;AAAA,YACE;AAAA,UAAG;AAAA,QACP;AAAA,MACF;AAEA,MAAO,iCAAQ;AAAA;AAAA;;;ACjDf,MAcqB;AAdrB;AAAA;AAAA;AACA;AACA;AAYA,MAAqB,gBAArB,MAAmC;AAAA,QACjC,YAAYC,WAAU;AACpB,eAAK,WAAWA;AAChB,eAAK,YAAY,IAAI,+BAAsB,IAAI;AAC/C,eAAK,gBAAgB,CAAC;AAAA,QACxB;AAAA,QAEA,OAAO,aAAa,OAAO;AACzB,gBAAM,UAAU;AAChB,gBAAM,SAAS,OAAO,YAAY,WAAW,UAAU,EAAC,QAAO;AAC/D,gBAAM,eAAe,IAAI,aAAa,KAAK,UAAU,QAAQ,KAAK;AAClE,iBAAO,KAAK,IAAI,YAAY;AAAA,QAC9B;AAAA;AAAA,QAIA,IAAI,cAAc;AAChB,eAAK,cAAc,KAAK,YAAY;AACpC,eAAK,SAAS,uBAAuB;AACrC,eAAK,OAAO,cAAc,aAAa;AACvC,eAAK,UAAU,YAAY;AAC3B,iBAAO;AAAA,QACT;AAAA,QAEA,OAAO,cAAc;AACnB,eAAK,OAAO,YAAY;AACxB,cAAI,CAAC,KAAK,QAAQ,aAAa,UAAU,EAAE,QAAQ;AACjD,iBAAK,YAAY,cAAc,aAAa;AAAA,UAC9C;AACA,iBAAO;AAAA,QACT;AAAA,QAEA,OAAO,YAAY;AACjB,iBAAO,KAAK,QAAQ,UAAU,EAAE,IAAI,CAAC,iBAAiB;AACpD,iBAAK,OAAO,YAAY;AACxB,iBAAK,OAAO,cAAc,UAAU;AACpC,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,QAEA,OAAO,cAAc;AACnB,eAAK,UAAU,OAAO,YAAY;AAClC,eAAK,gBAAiB,KAAK,cAAc,OAAO,CAACC,OAAMA,OAAM,YAAY;AACzE,iBAAO;AAAA,QACT;AAAA,QAEA,QAAQ,YAAY;AAClB,iBAAO,KAAK,cAAc,OAAO,CAACA,OAAMA,GAAE,eAAe,UAAU;AAAA,QACrE;AAAA,QAEA,SAAS;AACP,iBAAO,KAAK,cAAc,IAAI,CAAC,iBAC7B,KAAK,UAAU,YAAY,CAAC;AAAA,QAChC;AAAA,QAEA,UAAU,iBAAiB,MAAM;AAC/B,iBAAO,KAAK,cAAc,IAAI,CAAC,iBAC7B,KAAK,OAAO,cAAc,cAAc,GAAG,IAAI,CAAC;AAAA,QACpD;AAAA,QAEA,OAAO,cAAc,iBAAiB,MAAM;AAC1C,cAAI;AACJ,cAAI,OAAO,iBAAiB,UAAU;AACpC,4BAAgB,KAAK,QAAQ,YAAY;AAAA,UAC3C,OAAO;AACL,4BAAgB,CAAC,YAAY;AAAA,UAC/B;AAEA,iBAAO,cAAc,IAAI,CAACC,kBACvB,OAAOA,cAAa,YAAY,MAAM,aAAaA,cAAa,YAAY,EAAE,GAAG,IAAI,IAAI,MAAU;AAAA,QACxG;AAAA,QAEA,UAAU,cAAc;AACtB,cAAI,KAAK,YAAY,cAAc,WAAW,GAAG;AAC/C,iBAAK,UAAU,UAAU,YAAY;AAAA,UACvC;AAAA,QACF;AAAA,QAEA,oBAAoB,YAAY;AAC9B,yBAAO,IAAI,0BAA0B,UAAU,EAAE;AACjD,eAAK,QAAQ,UAAU,EAAE,IAAI,CAAC,iBAC5B,KAAK,UAAU,OAAO,YAAY,CAAC;AAAA,QACvC;AAAA,QAEA,YAAY,cAAc,SAAS;AACjC,gBAAM,EAAC,WAAU,IAAI;AACrB,iBAAO,KAAK,SAAS,KAAK,EAAC,SAAS,WAAU,CAAC;AAAA,QACjD;AAAA,MACF;AAAA;AAAA;;;ACtCO,WAAS,mBAAmB,KAAK;AACtC,QAAI,OAAO,QAAQ,YAAY;AAC7B,YAAM,IAAI;AAAA,IACZ;AAEA,QAAI,OAAO,CAAC,UAAU,KAAK,GAAG,GAAG;AAC/B,YAAMC,KAAI,SAAS,cAAc,GAAG;AACpC,MAAAA,GAAE,OAAO;AAET,MAAAA,GAAE,OAAOA,GAAE;AACX,MAAAA,GAAE,WAAWA,GAAE,SAAS,QAAQ,QAAQ,IAAI;AAC5C,aAAOA,GAAE;AAAA,IACX,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AA/EA,MA6BqB;AA7BrB;AAAA;AAAA;AACA;AA4BA,MAAqB,WAArB,MAA8B;AAAA,QAC5B,YAAY,KAAK;AACf,eAAK,OAAO;AACZ,eAAK,gBAAgB,IAAI,cAAc,IAAI;AAC3C,eAAK,aAAa,IAAI,mBAAW,IAAI;AACrC,eAAK,eAAe,CAAC;AAAA,QACvB;AAAA,QAEA,IAAI,MAAM;AACR,iBAAO,mBAAmB,KAAK,IAAI;AAAA,QACrC;AAAA,QAEA,KAAK,MAAM;AACT,iBAAO,KAAK,WAAW,KAAK,IAAI;AAAA,QAClC;AAAA,QAEA,UAAU;AACR,iBAAO,KAAK,WAAW,KAAK;AAAA,QAC9B;AAAA,QAEA,aAAa;AACX,iBAAO,KAAK,WAAW,MAAM,EAAC,gBAAgB,MAAK,CAAC;AAAA,QACtD;AAAA,QAEA,yBAAyB;AACvB,cAAI,CAAC,KAAK,WAAW,SAAS,GAAG;AAC/B,mBAAO,KAAK,WAAW,KAAK;AAAA,UAC9B;AAAA,QACF;AAAA,QAEA,eAAe,aAAa;AAC1B,eAAK,eAAe,CAAC,GAAG,KAAK,cAAc,WAAW;AAAA,QACxD;AAAA,MACF;AAAA;AAAA;;;AC9DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBO,WAAS,eAAe,MAAM,UAAU,KAAK,KAAK,iBAAS,oBAAoB;AACpF,WAAO,IAAI,SAAS,GAAG;AAAA,EACzB;AAEO,WAAS,UAAU,MAAM;AAC9B,UAAM,UAAU,SAAS,KAAK,cAAc,2BAA2B,IAAI,IAAI;AAC/E,QAAI,SAAS;AACX,aAAO,QAAQ,aAAa,SAAS;AAAA,IACvC;AAAA,EACF;AAhCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACRA;AAAA;AAAA,OAAC,SAAUC,SAAQ,SAAS;AACxB,eAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,QAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,OAAO,KAC1DA,UAAS,OAAO,eAAe,cAAc,aAAaA,WAAU,MAAMA,QAAO,oBAAoB,QAAQ;AAAA,MAClH,GAAE,SAAO,WAAY;AAAE;AAiBnB,YAAIC,YAAW,WAAW;AACtB,UAAAA,YAAW,OAAO,UAAU,SAASA,UAASC,IAAG;AAC7C,qBAASC,IAAGC,KAAI,GAAGC,KAAI,UAAU,QAAQD,KAAIC,IAAGD,MAAK;AACjD,cAAAD,KAAI,UAAUC,EAAC;AACf,uBAASE,MAAKH,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAGG,EAAC,EAAG,CAAAJ,GAAEI,EAAC,IAAIH,GAAEG,EAAC;AAAA,YAC/E;AACA,mBAAOJ;AAAA,UACX;AACA,iBAAOD,UAAS,MAAM,MAAM,SAAS;AAAA,QACzC;AAEA,YAAIM,cAAa,SAAU,aAAa,WAAW,QAAQ;AAAE,iBAAO,OAAO,OAAO,YAAY,cAAc,UAAU,EAAE,WAAW;AAAA,QAAG;AAEtI,iBAASC,WAAU,MAAM;AACrB,iBAAO,KAAK;AACR,iBAAK,YAAY,KAAK,UAAU;AAAA,QACxC;AACA,iBAASC,gBAAeC,QAAO;AAC3B,cAAI;AACA,gBAAI,OAAOA,OAAM,iBAAiB,YAAY;AAC1C,kBAAI,OAAOA,OAAM,aAAa;AAC9B,qBAAO,KAAK,CAAC;AAAA,YACjB;AACA,mBAAOA,OAAM;AAAA,UACjB,SACOC,QAAO;AACV,mBAAOD,OAAM;AAAA,UACjB;AAAA,QACJ;AAEA,YAAI,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,OAAO;AAAA,QACX;AACA,iBAASE,mBAAkB,cAAc;AACrC,cAAI,SAASX,UAASA,UAAS,CAAC,GAAG,aAAa,GAAG,YAAY;AAC/D,iBAAO,SAAU,IAAI;AACjB,eAAG,OAAO,aAAa,OAAO;AAC9B,eAAG,OAAO,YAAY,OAAO;AAC7B,gBAAIY,QAAO,EAAE,iBAAiB,KAAK;AACnC,qBAAS,8BAA8B;AACnC,kBAAI,CAAC,GAAG;AACJ;AACJ,cAAAL,WAAU,GAAG,UAAU;AACvB,uBAASM,SAAQ,GAAGA,SAAQ,GAAG,cAAc,QAAQA,UAAS;AAC1D,oBAAI,UAAU,GAAG,cAAcA,MAAK;AACpC,oBAAI,CAAC,QAAQ;AACT;AACJ,wBAAQ,WAAW,YAAY,OAAO;AAAA,cAC1C;AAAA,YACJ;AACA,qBAAS,QAAQ;AACb,kBAAI,CAAC,GAAG;AACJ;AACJ,cAAAD,MAAK,kBAAkB,GAAG,eAAe,OAAO,8BAA8B;AAC9E,cAAAA,MAAK,gBAAgB,WAAW;AAChC,0BAAY;AACZ,iBAAG,WAAW,YAAYA,MAAK,eAAe;AAC9C,iBAAG,kBAAkB,UAAU,IAAI,iCAAiC,OAAO,KAAK;AAAA,YACpF;AACA,qBAAS,cAAc;AACnB,kBAAI,CAACA,MAAK;AACN;AACJ,cAAAL,WAAUK,MAAK,eAAe;AAC9B,kBAAI,OAAO,SAAS,uBAAuB;AAC3C,uBAAST,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,oBAAI,QAAQ,GAAG,UAAU,+BAA+B,IAAI,KAAK,GAAG,aAAaA,EAAC,GAAG,GAAGA,EAAC;AACzF,oBAAI,MAAM,QAAQ,SAAS,OAAM,oBAAI,KAAK,GAAE,SAAS,KACjD,MAAM,QAAQ,YAAY,OAAM,oBAAI,KAAK,GAAE,YAAY;AACvD,wBAAM,UAAU,IAAI,OAAO;AAC/B,sBAAM,cAAcG,YAAWH,IAAG,OAAO,WAAW,GAAG,IAAI;AAC3D,sBAAM,iBAAiB,SAAS,WAAW;AAC3C,qBAAK,YAAY,KAAK;AAAA,cAC1B;AACA,cAAAS,MAAK,gBAAgB,YAAY,IAAI;AACrC,kBAAI,GAAG,OAAO,WACV,GAAG,gBAAgB,GAAG,OAAO,QAAQ,YAAY;AACjD,mBAAG,aAAa,UAAU,IAAI,oBAAoB;AAAA;AAElD,mBAAG,aAAa,UAAU,OAAO,oBAAoB;AACzD,kBAAI,GAAG,OAAO,WACV,GAAG,gBAAgB,GAAG,OAAO,QAAQ,YAAY;AACjD,mBAAG,aAAa,UAAU,IAAI,oBAAoB;AAAA;AAElD,mBAAG,aAAa,UAAU,OAAO,oBAAoB;AAAA,YAC7D;AACA,qBAAS,aAAa;AAClB,iBAAG,MAAM,GAAG,cAAc,SAAS,SAAUE,IAAG;AAC5C,gBAAAA,GAAE,eAAe;AACjB,gBAAAA,GAAE,gBAAgB;AAClB,mBAAG,WAAW,GAAG,cAAc,CAAC;AAChC,2BAAW;AACX,4BAAY;AAAA,cAChB,CAAC;AACD,iBAAG,MAAM,GAAG,cAAc,SAAS,SAAUA,IAAG;AAC5C,gBAAAA,GAAE,eAAe;AACjB,gBAAAA,GAAE,gBAAgB;AAClB,mBAAG,WAAW,GAAG,cAAc,CAAC;AAChC,2BAAW;AACX,4BAAY;AAAA,cAChB,CAAC;AACD,iBAAG,MAAMF,MAAK,iBAAiB,aAAa,SAAUE,IAAG;AACrD,oBAAI,GAAG,OAAO,SAAS;AACnB,qBAAG,YAAYN,gBAAeM,EAAC,GAAG,6BAA6B;AAAA,cACvE,CAAC;AAAA,YACL;AACA,qBAAS,uBAAuB;AAC5B,kBAAI,CAAC,GAAG;AACJ;AACJ,kBAAI,CAAC,GAAG,cAAc;AAClB;AACJ,kBAAI,oBAAoB,GAAG,WAAW,iBAAiB,uCAAuC;AAC9F,uBAASD,SAAQ,GAAGA,SAAQ,kBAAkB,QAAQA,UAAS;AAC3D,kCAAkBA,MAAK,EAAE,UAAU,OAAO,UAAU;AAAA,cACxD;AACA,kBAAI,cAAc,GAAG,cAAc,CAAC,EAAE,SAAS;AAC/C,kBAAI,QAAQ,GAAG,WAAW,cAAc,6CAA6C,cAAc,KAAK,GAAG;AAC3G,kBAAI,OAAO;AACP,sBAAM,UAAU,IAAI,UAAU;AAAA,cAClC;AAAA,YACJ;AACA,qBAAS,aAAa;AAClB,kBAAI,eAAe,GAAG,cAAc,CAAC;AACrC,kBAAI,cAAc;AACd,+BAAe,IAAI,KAAK,YAAY;AACpC,6BAAa,YAAY,GAAG,WAAW;AACvC,oBAAI,GAAG,OAAO,WAAW,eAAe,GAAG,OAAO,SAAS;AACvD,iCAAe,GAAG,OAAO;AAAA,gBAC7B;AACA,oBAAI,GAAG,OAAO,WAAW,eAAe,GAAG,OAAO,SAAS;AACvD,iCAAe,GAAG,OAAO;AAAA,gBAC7B;AACA,mBAAG,cAAc,aAAa,YAAY;AAAA,cAC9C;AACA,iBAAG,mBAAmB,QAAQ,OAAO,GAAG,WAAW;AACnD,kBAAI,GAAG,YAAY;AACf,oBAAI,SAAS,GAAG,WAAW,iBAAiB,8BAA8B;AAC1E,uBAAO,QAAQ,SAAU,OAAO;AAC5B,wBAAM,QAAQ,YAAY,GAAG,WAAW;AACxC,sBAAK,GAAG,OAAO,WAAW,MAAM,UAAU,GAAG,OAAO,WAC/C,GAAG,OAAO,WAAW,MAAM,UAAU,GAAG,OAAO,SAAU;AAC1D,0BAAM,UAAU,IAAI,oBAAoB;AAAA,kBAC5C,OACK;AACD,0BAAM,UAAU,OAAO,oBAAoB;AAAA,kBAC/C;AAAA,gBACJ,CAAC;AAAA,cACL;AACA,mCAAqB;AAAA,YACzB;AACA,qBAAS,YAAYC,IAAG;AACpB,cAAAA,GAAE,eAAe;AACjB,cAAAA,GAAE,gBAAgB;AAClB,kBAAI,cAAcN,gBAAeM,EAAC;AAClC,kBAAI,EAAE,uBAAuB;AACzB;AACJ,kBAAI,YAAY,UAAU,SAAS,oBAAoB;AACnD;AACJ,kBAAI,YAAY,UAAU,SAAS,YAAY;AAC3C;AACJ,uBAAS,YAAY,OAAO;AAC5B,kBAAI,GAAG,OAAO,eAAe;AACzB,oBAAI,SAAS,GAAG,OAAO,SAAS;AAChC,oBAAI,QAAQ,GAAG,OAAO,SAAS,WAAW,GAAG,cAAc,WAAW;AACtE,oBAAI,UAAU;AACV,qBAAG,MAAM;AAAA,cACjB;AAAA,YACJ;AACA,qBAAS,SAAS,MAAM;AACpB,kBAAI,eAAe,IAAI,KAAK,GAAG,aAAa,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AAC3E,kBAAI,gBAAgB,CAAC;AACrB,sBAAQ,GAAG,OAAO,MAAM;AAAA,gBACpB,KAAK;AACD,kCAAgB,CAAC,YAAY;AAC7B;AAAA,gBACJ,KAAK;AACD,gCAAc,KAAK,YAAY;AAC/B;AAAA,gBACJ,KAAK;AACD,sBAAI,GAAG,cAAc,WAAW,GAAG;AAC/B,oCAAgB,CAAC,YAAY;AAAA,kBACjC,OACK;AACD,oCAAgB,GAAG,cAAc,OAAO,CAAC,YAAY,CAAC;AACtD,kCAAc,KAAK,SAAUC,IAAGC,IAAG;AAAE,6BAAOD,GAAE,QAAQ,IAAIC,GAAE,QAAQ;AAAA,oBAAG,CAAC;AAAA,kBAC5E;AACA;AAAA,cACR;AACA,iBAAG,QAAQ,eAAe,IAAI;AAC9B,mCAAqB;AAAA,YACzB;AACA,gBAAI,SAAS;AAAA,cACT,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,IAAI;AAAA,YACR;AACA,qBAAS,UAAUC,IAAG,IAAI,KAAKH,IAAG;AAC9B,kBAAI,aAAa,OAAOA,GAAE,OAAO,MAAM;AACvC,kBAAI,CAAC,cAAcA,GAAE,YAAY,IAAI;AACjC;AAAA,cACJ;AACA,kBAAI,CAAC,GAAG,cAAc,CAACF,MAAK;AACxB;AACJ,kBAAI,oBAAoB,GAAG,WAAW,cAAc,uCAAuC;AAC3F,kBAAIC,SAAQ,MAAM,UAAU,QAAQ,KAAKD,MAAK,gBAAgB,UAAU,SAAS,aAAa;AAC9F,kBAAIC,WAAU,IAAI;AACd,oBAAI,SAAS,qBAAqBD,MAAK,gBAAgB;AACvD,uBAAO,MAAM;AACb,gBAAAC,SAAQ,OAAO;AAAA,cACnB;AACA,kBAAI,YAAY;AACZ,gBAAAD,MAAK,gBAAgB,UAAU,KAAKC,SAAQ,OAAOC,GAAE,OAAO,KAAK,EAAE,EAAE,MAAM;AAAA,cAC/E,WACSA,GAAE,YAAY,MACnBF,MAAK,gBAAgB,SAAS,SAAS,aAAa,GAAG;AACvD,yBAAS,SAAS,cAAc,OAAO;AAAA,cAC3C;AAAA,YACJ;AACA,qBAAS,YAAY;AACjB,kBAAI;AACJ,oBAAM,KAAK,GAAG,YAAY,QAAQ,OAAO,SAAS,SAAS,GAAG,UAAU,WAAW,GAAG,cAAc,WAAW;AAC3G,mBAAG,MAAM,KAAK;AAClB,kBAAI,CAAC,GAAG,cAAc;AAClB,4BAAY;AAAA,YACpB;AAEA,qBAAS,mBAAmB;AACxB,qBAAO,uBAAuB,GAAG,aAAa,SAAS;AACvD,iBAAG,aAAa,SAAS,OAAO,oBAAoB;AACpD,iBAAG,eAAe,OAAO;AAAA,YAC7B;AACA,qBAAS,qBAAqB;AAC1B,kBAAI,CAAC,OAAO;AACR;AACJ,iBAAG,aAAa,SAAS,OAAO,oBAAoB;AACpD,iBAAG,eAAe,OAAO;AACzB,qBAAO,OAAO;AAAA,YAClB;AACA,qBAAS,wBAAwB;AAC7B,kBAAIA,MAAK,oBAAoB,MAAM;AAC/B,oBAAI,SAASA,MAAK,gBAAgB,iBAAiB,8BAA8B;AACjF,yBAASC,SAAQ,GAAGA,SAAQ,OAAO,QAAQA,UAAS;AAChD,yBAAOA,MAAK,EAAE,oBAAoB,SAAS,WAAW;AAAA,gBAC1D;AAAA,cACJ;AAAA,YACJ;AACA,mBAAO;AAAA,cACH,eAAe,WAAY;AACvB,mBAAG,OAAO,aAAa;AAAA,cAC3B;AAAA,cACA,eAAe;AAAA,cACf;AAAA,cACA,SAAS;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,WAAY;AACR,qBAAG,OAAO,QAAQ,KAAK,SAAS;AAChC,qBAAG,cAAc,KAAK,aAAa;AAAA,gBACvC;AAAA,cACJ;AAAA,cACA,WAAW;AAAA,gBACP;AAAA,gBACA;AAAA,gBACA,WAAY;AACR,qBAAG,OAAO,UAAU,GAAG,OAAO,QAAQ,OAAO,SAAU,MAAM;AAAE,2BAAO,SAAS;AAAA,kBAAW,CAAC;AAAA,gBAC/F;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,eAAOF;AAAA,MAEX,CAAE;AAAA;AAAA;;;AC5SF;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA,OAAC,SAAUO,SAAQ,SAAS;AACxB,eAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,QAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,OAAO,KAC1DA,UAAS,OAAO,eAAe,cAAc,aAAaA,WAAU,MAAMA,QAAO,cAAc,QAAQ;AAAA,MAC5G,GAAE,SAAO,WAAY;AAAE;AAiBnB,iBAASC,kBAAiB;AACtB,mBAASC,KAAI,GAAGC,KAAI,GAAG,KAAK,UAAU,QAAQA,KAAI,IAAIA,KAAK,CAAAD,MAAK,UAAUC,EAAC,EAAE;AAC7E,mBAASC,KAAI,MAAMF,EAAC,GAAGG,KAAI,GAAGF,KAAI,GAAGA,KAAI,IAAIA;AACzC,qBAASG,KAAI,UAAUH,EAAC,GAAGI,KAAI,GAAG,KAAKD,GAAE,QAAQC,KAAI,IAAIA,MAAKF;AAC1D,cAAAD,GAAEC,EAAC,IAAIC,GAAEC,EAAC;AAClB,iBAAOH;AAAA,QACX;AAEA,iBAASI,aAAY,QAAQ;AACzB,cAAI,WAAW,QAAQ;AAAE,qBAAS,CAAC;AAAA,UAAG;AACtC,iBAAO,SAAU,IAAI;AACjB,gBAAI,aAAa,IAAI,aAAa,qBAAqB;AACvD,gBAAI,oBAAoB,WAAY;AAChC,kBAAI,OAAO,OAAO;AACd,8BACI,OAAO,iBAAiB,UAClB,OAAO,QACP,OAAO,SAAS,cAAc,OAAO,KAAK;AACpD,oBAAI,CAAC,aAAa;AACd,qBAAG,OAAO,aAAa,IAAI,MAAM,iCAAiC,CAAC;AACnE;AAAA,gBACJ;AACA,oBAAI,GAAG,OAAO,MAAM;AAChB,gCAAc,YAAY,cAAc,cAAc;AAAA,gBAC1D;AAAA,cACJ,OACK;AACD,8BAAc,GAAG,OAAO,UAAU;AAClC,4BAAY,gBAAgB,IAAI;AAChC,4BAAY,aAAa;AAAA,cAC7B;AACA,kBAAI,YAAY,OAAO;AACnB,oBAAI,aAAa,GAAG,UAAU,YAAY,KAAK;AAC/C,oBAAI;AACA,qBAAG,cAAc,KAAK,UAAU;AAAA,cACxC;AACA,0BAAY,aAAa,gBAAgB,EAAE;AAC3C,kBAAI,GAAG,OAAO,YAAY;AACtB,mBAAG,MAAM,aAAa,CAAC,SAAS,OAAO,GAAG,WAAY;AAClD,sBAAI,GAAG,cAAc,CAAC,GAAG;AACrB,uBAAG,wBAAwB,GAAG,cAAc,CAAC;AAC7C,uBAAG,kBAAkB,GAAG,cAAc,CAAC,CAAC;AACxC,uBAAG,WAAW,GAAG,cAAc,CAAC,CAAC;AAAA,kBACrC;AACA,wCAAsB;AACtB,qBAAG,SAAS;AACZ,qBAAG,KAAK,QAAW,OAAO,aAAa,SAAS,GAAG,SAAS,WAAW;AAAA,gBAC3E,CAAC;AACD,mBAAG,MAAM,GAAG,QAAQ,CAAC,SAAS,OAAO,GAAG,SAAUC,IAAG;AACjD,kBAAAA,GAAE,eAAe;AACjB,qBAAG,SAAS;AACZ,qBAAG,KAAK;AAAA,gBACZ,CAAC;AAAA,cACL;AACA,kBAAI,GAAG,OAAO;AACV,mBAAG,MAAM,aAAa,WAAW,SAAUA,IAAG;AAC1C,sBAAIA,GAAE,QAAQ,SAAS;AACnB,uBAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,GAAG,YAAY,KAAK,GAAG,MAAM,UAAU;AACrE,gCAAY,MAAM;AAAA,kBACtB;AAAA,gBACJ,CAAC;AACL,kBAAI,CAAC,OAAO;AACR,mBAAG,OAAO,cACN,GAAG,OAAO,WAAW,aAAa,aAAa,GAAG,OAAO,WAAW;AAAA,YAChF;AACA,gBAAI,SAAS;AAAA,cACT,eAAe,WAAY;AACvB,mBAAG,OAAO,OAAO;AACjB,6BAAa,GAAG,OAAO,WACjB,GAAG,OAAO,YACV,GAAG,OAAO;AAAA,cACpB;AAAA,cACA,SAAS,WAAY;AACjB,kCAAkB;AAClB,mBAAG,OAAO,qBAAqB,KAAK,WAAW;AAC/C,oBAAI,GAAG,OAAO,YAAY;AACtB,qBAAG,OAAO,gBAAgB,UAAU;AACpC,8BAAY,gBAAgB,UAAU;AAAA,gBAC1C,OACK;AACD,8BAAY,aAAa,YAAY,UAAU;AAAA,gBACnD;AACA,mBAAG,MAAM,GAAG,QAAQ,SAAS,WAAY;AACrC,qBAAG,wBAAwB,GAAG,cAAc,CAAC;AAC7C,qBAAG,kBAAkB,GAAG,cAAc,CAAC,CAAC;AACxC,wCAAsB;AACtB,qBAAG,WAAW,GAAG,cAAc,CAAC,CAAC;AAAA,gBACrC,CAAC;AACD,oBAAI,GAAG,OAAO;AACV,qBAAG,MAAM,GAAG,QAAQ,WAAW,SAAUA,IAAG;AACxC,wBAAIA,GAAE,QAAQ;AACV,yBAAG,QAAQ,CAAC,GAAG,OAAO,OAAO,GAAG,cAAc,CAAC,CAAC,GAAG,MAAM,UAAU;AAAA,kBAC3E,CAAC;AACL,mBAAG,QAAQ,GAAG,eAAe,KAAK;AAClC,uBAAO,cAAc,GAAG,aAAa;AACrC,mBAAG,cAAc,KAAK,OAAO;AAAA,cACjC;AAAA,cACA,uBAAuB,WAAY;AAC/B,oBAAI,qBAAqB;AACrB,qBAAG,mBAAmB;AACtB,6BAAW,WAAY;AACnB,uBAAG,mBAAmB,GAAG;AAAA,kBAC7B,GAAG,CAAC;AAAA,gBACR;AAAA,cACJ;AAAA,cACA,UAAU,WAAY;AAClB,oBAAI,CAAC,GAAG,cAAc,QAAQ;AAC1B,6BAAW,WAAY;AACnB,wBAAI,GAAG,cAAc;AACjB;AACJ,gCAAY,QAAQ;AACpB,iCAAa,CAAC;AAAA,kBAClB,GAAG,EAAE;AAAA,gBACT;AACA,oBAAI,qBAAqB;AACrB,6BAAW,WAAY;AACnB,gCAAY,MAAM;AAAA,kBACtB,GAAG,CAAC;AAAA,gBACR;AAAA,cACJ;AAAA,cACA,WAAW,WAAY;AACnB,oBAAI,CAAC,OAAO;AACR,8BAAY,cACR,YAAY,WAAW,YAAY,WAAW;AAAA,cAC1D;AAAA,cACA,eAAe,SAAU,UAAU;AAC/B,oBAAI,IAAI,IAAI;AACZ,oBAAI,CAAC;AACD;AACJ,6BACI,CAAC,cAAc,SAAS,UAAU,WAAW,SACvCR,gBAAe,QAAQ,IAAI;AACrC,oBAAI,WAAW,SAAS,SAAS,QAAQ;AACrC,sBAAI,kBAAkB,SAAS,CAAC;AAChC,sBAAI,WAAW,sBACT,CAAC,WAAW,CAAC,GAAG,eAAe,IAC/B,CAAC,iBAAiB,WAAW,CAAC,CAAC;AACrC,sBAAI,SAAS,CAAC,EAAE,QAAQ,IAAI,SAAS,CAAC,EAAE,QAAQ,GAAG;AAC/C,wBAAI,qBAAqB;AACrB,+BAAS,CAAC,IAAI,SAAS,CAAC;AAAA,oBAC5B,OACK;AACD,+BAAS,CAAC,IAAI,SAAS,CAAC;AAAA,oBAC5B;AAAA,kBACJ;AACA,qBAAG,QAAQ,UAAU,KAAK;AAC1B,+BAAaA,gBAAe,QAAQ;AAAA,gBACxC;AACA,qBAAK,GAAG,cAAc,IAAI,SAAUS,IAAG;AAAE,yBAAO,GAAG,WAAWA,IAAG,UAAU;AAAA,gBAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,OAAO,QAAQ,OAAO,SAAS,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,YAAY,QAAQ,OAAO,SAAS,KAAK;AAAA,cAClM;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,eAAOF;AAAA,MAEX,CAAE;AAAA;AAAA;;;AClLF;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAKa,eAASG,GAAEA,IAAEC,IAAE;AAAC,SAAC,QAAMA,MAAGA,KAAED,GAAE,YAAUC,KAAED,GAAE;AAAQ,iBAAQE,KAAE,GAAEC,KAAE,MAAMF,EAAC,GAAEC,KAAED,IAAEC,KAAI,CAAAC,GAAED,EAAC,IAAEF,GAAEE,EAAC;AAAE,eAAOC;AAAA,MAAC;AAAC,eAASF,GAAED,IAAE;AAAC,YAAG,WAASA,GAAE,OAAM,IAAI,eAAe,2DAA2D;AAAE,eAAOA;AAAA,MAAC;AAAC,eAASE,GAAEF,IAAEC,IAAE;AAAC,YAAG,EAAED,cAAaC,IAAG,OAAM,IAAI,UAAU,mCAAmC;AAAA,MAAC;AAAC,eAASE,GAAEH,IAAEC,IAAE;AAAC,iBAAQC,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,cAAIC,KAAEF,GAAEC,EAAC;AAAE,UAAAC,GAAE,aAAWA,GAAE,cAAY,OAAGA,GAAE,eAAa,MAAG,WAAUA,OAAIA,GAAE,WAAS,OAAI,OAAO,eAAeH,IAAEI,GAAED,GAAE,GAAG,GAAEA,EAAC;AAAA,QAAC;AAAA,MAAC;AAAC,eAASE,GAAEL,IAAEC,IAAEC,IAAE;AAAC,eAAOD,MAAGE,GAAEH,GAAE,WAAUC,EAAC,GAAEC,MAAGC,GAAEH,IAAEE,EAAC,GAAE,OAAO,eAAeF,IAAE,aAAY,EAAC,UAAS,MAAE,CAAC,GAAEA;AAAA,MAAC;AAAC,eAASM,GAAEN,IAAEC,IAAE;AAAC,YAAIC,KAAE,eAAa,OAAO,UAAQF,GAAE,OAAO,QAAQ,KAAGA,GAAE,YAAY;AAAE,YAAG,CAACE,IAAE;AAAC,cAAG,MAAM,QAAQF,EAAC,MAAIE,KAAEK,GAAEP,EAAC,MAAIC,MAAGD,MAAG,YAAU,OAAOA,GAAE,QAAO;AAAC,YAAAE,OAAIF,KAAEE;AAAG,gBAAIC,KAAE,GAAEE,KAAE,WAAU;AAAA,YAAC;AAAE,mBAAM,EAAC,GAAEA,IAAE,GAAE,WAAU;AAAC,qBAAOF,MAAGH,GAAE,SAAO,EAAC,MAAK,KAAE,IAAE,EAAC,MAAK,OAAG,OAAMA,GAAEG,IAAG,EAAC;AAAA,YAAC,GAAE,GAAE,SAASH,IAAE;AAAC,oBAAMA;AAAA,YAAC,GAAE,GAAEK,GAAC;AAAA,UAAC;AAAC,gBAAM,IAAI,UAAU,uIAAuI;AAAA,QAAC;AAAC,YAAIC,IAAEE,KAAE,MAAGC,KAAE;AAAG,eAAM,EAAC,GAAE,WAAU;AAAC,UAAAP,KAAEA,GAAE,KAAKF,EAAC;AAAA,QAAC,GAAE,GAAE,WAAU;AAAC,cAAIA,KAAEE,GAAE,KAAK;AAAE,iBAAOM,KAAER,GAAE,MAAKA;AAAA,QAAC,GAAE,GAAE,SAASA,IAAE;AAAC,UAAAS,KAAE,MAAGH,KAAEN;AAAA,QAAC,GAAE,GAAE,WAAU;AAAC,cAAG;AAAC,YAAAQ,MAAG,QAAMN,GAAE,UAAQA,GAAE,OAAO;AAAA,UAAC,UAAC;AAAQ,gBAAGO,GAAE,OAAMH;AAAA,UAAC;AAAA,QAAC,EAAC;AAAA,MAAC;AAAC,eAASE,GAAER,IAAE;AAAC,YAAIE,KAAEQ,GAAE;AAAE,eAAO,WAAU;AAAC,cAAIP,IAAEE,KAAEM,GAAEX,EAAC;AAAE,cAAGE,IAAE;AAAC,gBAAII,KAAEK,GAAE,IAAI,EAAE;AAAY,YAAAR,KAAE,QAAQ,UAAUE,IAAE,WAAUC,EAAC;AAAA,UAAC,MAAM,CAAAH,KAAEE,GAAE,MAAM,MAAK,SAAS;AAAE,iBAAO,SAASL,IAAEE,IAAE;AAAC,gBAAGA,OAAI,YAAU,OAAOA,MAAG,cAAY,OAAOA,IAAG,QAAOA;AAAE,gBAAG,WAASA,GAAE,OAAM,IAAI,UAAU,0DAA0D;AAAE,mBAAOD,GAAED,EAAC;AAAA,UAAC,EAAE,MAAKG,EAAC;AAAA,QAAC;AAAA,MAAC;AAAC,eAASM,GAAET,IAAEC,IAAEC,IAAE;AAAC,gBAAOD,KAAEG,GAAEH,EAAC,MAAKD,KAAE,OAAO,eAAeA,IAAEC,IAAE,EAAC,OAAMC,IAAE,YAAW,MAAG,cAAa,MAAG,UAAS,KAAE,CAAC,IAAEF,GAAEC,EAAC,IAAEC,IAAEF;AAAA,MAAC;AAAC,eAASW,GAAEX,IAAE;AAAC,eAAOW,KAAE,OAAO,iBAAe,OAAO,eAAe,KAAK,IAAE,SAASX,IAAE;AAAC,iBAAOA,GAAE,aAAW,OAAO,eAAeA,EAAC;AAAA,QAAC,GAAEW,GAAEX,EAAC;AAAA,MAAC;AAAC,eAASY,GAAEZ,IAAEC,IAAE;AAAC,YAAG,cAAY,OAAOA,MAAG,SAAOA,GAAE,OAAM,IAAI,UAAU,oDAAoD;AAAE,QAAAD,GAAE,YAAU,OAAO,OAAOC,MAAGA,GAAE,WAAU,EAAC,aAAY,EAAC,OAAMD,IAAE,UAAS,MAAG,cAAa,KAAE,EAAC,CAAC,GAAE,OAAO,eAAeA,IAAE,aAAY,EAAC,UAAS,MAAE,CAAC,GAAEC,MAAGY,GAAEb,IAAEC,EAAC;AAAA,MAAC;AAAC,eAASS,KAAG;AAAC,YAAG;AAAC,cAAIV,KAAE,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAQ,CAAC,GAAG,WAAU;AAAA,UAAC,CAAE,CAAC;AAAA,QAAC,SAAOA,IAAE;AAAA,QAAC;AAAC,gBAAOU,KAAE,WAAU;AAAC,iBAAM,CAAC,CAACV;AAAA,QAAC,GAAG;AAAA,MAAC;AAAC,eAASc,GAAEd,IAAEC,IAAE;AAAC,YAAIC,KAAE,OAAO,KAAKF,EAAC;AAAE,YAAG,OAAO,uBAAsB;AAAC,cAAIG,KAAE,OAAO,sBAAsBH,EAAC;AAAE,UAAAC,OAAIE,KAAEA,GAAE,OAAQ,SAASF,IAAE;AAAC,mBAAO,OAAO,yBAAyBD,IAAEC,EAAC,EAAE;AAAA,UAAU,CAAE,IAAGC,GAAE,KAAK,MAAMA,IAAEC,EAAC;AAAA,QAAC;AAAC,eAAOD;AAAA,MAAC;AAAC,eAASa,GAAEf,IAAE;AAAC,iBAAQC,KAAE,GAAEA,KAAE,UAAU,QAAOA,MAAI;AAAC,cAAIC,KAAE,QAAM,UAAUD,EAAC,IAAE,UAAUA,EAAC,IAAE,CAAC;AAAE,UAAAA,KAAE,IAAEa,GAAE,OAAOZ,EAAC,GAAE,IAAE,EAAE,QAAS,SAASD,IAAE;AAAC,YAAAQ,GAAET,IAAEC,IAAEC,GAAED,EAAC,CAAC;AAAA,UAAC,CAAE,IAAE,OAAO,4BAA0B,OAAO,iBAAiBD,IAAE,OAAO,0BAA0BE,EAAC,CAAC,IAAEY,GAAE,OAAOZ,EAAC,CAAC,EAAE,QAAS,SAASD,IAAE;AAAC,mBAAO,eAAeD,IAAEC,IAAE,OAAO,yBAAyBC,IAAED,EAAC,CAAC;AAAA,UAAC,CAAE;AAAA,QAAC;AAAC,eAAOD;AAAA,MAAC;AAAC,eAASa,GAAEb,IAAEC,IAAE;AAAC,eAAOY,KAAE,OAAO,iBAAe,OAAO,eAAe,KAAK,IAAE,SAASb,IAAEC,IAAE;AAAC,iBAAOD,GAAE,YAAUC,IAAED;AAAA,QAAC,GAAEa,GAAEb,IAAEC,EAAC;AAAA,MAAC;AAAC,eAASe,GAAEhB,IAAEC,IAAE;AAAC,eAAO,SAASD,IAAE;AAAC,cAAG,MAAM,QAAQA,EAAC,EAAE,QAAOA;AAAA,QAAC,EAAEA,EAAC,KAAG,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,QAAMF,KAAE,OAAK,eAAa,OAAO,UAAQA,GAAE,OAAO,QAAQ,KAAGA,GAAE,YAAY;AAAE,cAAG,QAAME,IAAE;AAAC,gBAAIC,IAAEE,IAAEC,IAAEE,IAAEC,KAAE,CAAC,GAAEE,KAAE,MAAGC,KAAE;AAAG,gBAAG;AAAC,kBAAGN,MAAGJ,KAAEA,GAAE,KAAKF,EAAC,GAAG,MAAK,MAAIC,IAAE;AAAC,oBAAG,OAAOC,EAAC,MAAIA,GAAE;AAAO,gBAAAS,KAAE;AAAA,cAAE,MAAM,QAAK,EAAEA,MAAGR,KAAEG,GAAE,KAAKJ,EAAC,GAAG,UAAQO,GAAE,KAAKN,GAAE,KAAK,GAAEM,GAAE,WAASR,KAAGU,KAAE,KAAG;AAAA,YAAC,SAAOX,IAAE;AAAC,cAAAY,KAAE,MAAGP,KAAEL;AAAA,YAAC,UAAC;AAAQ,kBAAG;AAAC,oBAAG,CAACW,MAAG,QAAMT,GAAE,WAASM,KAAEN,GAAE,OAAO,GAAE,OAAOM,EAAC,MAAIA,IAAG;AAAA,cAAM,UAAC;AAAQ,oBAAGI,GAAE,OAAMP;AAAA,cAAC;AAAA,YAAC;AAAC,mBAAOI;AAAA,UAAC;AAAA,QAAC,EAAET,IAAEC,EAAC,KAAGM,GAAEP,IAAEC,EAAC,KAAG,WAAU;AAAC,gBAAM,IAAI,UAAU,2IAA2I;AAAA,QAAC,EAAE;AAAA,MAAC;AAAC,eAASgB,GAAEhB,IAAE;AAAC,eAAO,SAASA,IAAE;AAAC,cAAG,MAAM,QAAQA,EAAC,EAAE,QAAOD,GAAEC,EAAC;AAAA,QAAC,EAAEA,EAAC,KAAG,SAASD,IAAE;AAAC,cAAG,eAAa,OAAO,UAAQ,QAAMA,GAAE,OAAO,QAAQ,KAAG,QAAMA,GAAE,YAAY,EAAE,QAAO,MAAM,KAAKA,EAAC;AAAA,QAAC,EAAEC,EAAC,KAAGM,GAAEN,EAAC,KAAG,WAAU;AAAC,gBAAM,IAAI,UAAU,sIAAsI;AAAA,QAAC,EAAE;AAAA,MAAC;AAAC,eAASG,GAAEJ,IAAE;AAAC,YAAIC,KAAE,SAASD,IAAEC,IAAE;AAAC,cAAG,YAAU,OAAOD,MAAG,CAACA,GAAE,QAAOA;AAAE,cAAIE,KAAEF,GAAE,OAAO,WAAW;AAAE,cAAG,WAASE,IAAE;AAAC,gBAAIC,KAAED,GAAE,KAAKF,IAAEC,MAAG,SAAS;AAAE,gBAAG,YAAU,OAAOE,GAAE,QAAOA;AAAE,kBAAM,IAAI,UAAU,8CAA8C;AAAA,UAAC;AAAC,kBAAO,aAAWF,KAAE,SAAO,QAAQD,EAAC;AAAA,QAAC,EAAEA,IAAE,QAAQ;AAAE,eAAM,YAAU,OAAOC,KAAEA,KAAEA,KAAE;AAAA,MAAE;AAAC,eAASiB,GAAElB,IAAE;AAAC,eAAOkB,KAAE,cAAY,OAAO,UAAQ,YAAU,OAAO,OAAO,WAAS,SAASlB,IAAE;AAAC,iBAAO,OAAOA;AAAA,QAAC,IAAE,SAASA,IAAE;AAAC,iBAAOA,MAAG,cAAY,OAAO,UAAQA,GAAE,gBAAc,UAAQA,OAAI,OAAO,YAAU,WAAS,OAAOA;AAAA,QAAC,GAAEkB,GAAElB,EAAC;AAAA,MAAC;AAAC,eAASO,GAAEN,IAAEC,IAAE;AAAC,YAAGD,IAAE;AAAC,cAAG,YAAU,OAAOA,GAAE,QAAOD,GAAEC,IAAEC,EAAC;AAAE,cAAIC,KAAE,CAAC,EAAE,SAAS,KAAKF,EAAC,EAAE,MAAM,GAAE,EAAE;AAAE,iBAAM,aAAWE,MAAGF,GAAE,gBAAcE,KAAEF,GAAE,YAAY,OAAM,UAAQE,MAAG,UAAQA,KAAE,MAAM,KAAKF,EAAC,IAAE,gBAAcE,MAAG,2CAA2C,KAAKA,EAAC,IAAEH,GAAEC,IAAEC,EAAC,IAAE;AAAA,QAAM;AAAA,MAAC;AAAC,UAAIiB,KAAE,WAAU;AAAC,iBAASnB,KAAG;AAAC,UAAAE,GAAE,MAAKF,EAAC;AAAA,QAAC;AAAC,eAAOK,GAAEL,IAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAED,GAAE,MAAM,GAAG,GAAEE,KAAEH,KAAE,IAAE,IAAE,KAAIK,KAAEL,KAAE,IAAE,KAAGA,KAAEA,IAAEM,KAAE,SAASJ,GAAE,CAAC,EAAE,MAAM,CAAC,GAAE,EAAE,GAAEM,KAAE,SAASN,GAAE,CAAC,GAAE,EAAE,GAAEO,KAAE,SAASP,GAAE,CAAC,GAAE,EAAE;AAAE,iBAAM,UAAQ,KAAK,OAAOC,KAAEG,MAAGD,EAAC,IAAEC,MAAG,OAAK,KAAK,OAAOH,KAAEK,MAAGH,EAAC,IAAEG,MAAG,OAAK,KAAK,OAAOL,KAAEM,MAAGJ,EAAC,IAAEI,MAAG;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAST,IAAEC,IAAE;AAAC,cAAIC,KAAE,SAASD,GAAE,MAAM,CAAC,GAAE,EAAE,GAAEE,KAAEH,KAAE,IAAE,IAAE,KAAIK,KAAEL,KAAE,IAAE,KAAGA,KAAEA,IAAEM,KAAEJ,MAAG,IAAGM,KAAEN,MAAG,IAAE,KAAIO,KAAE,MAAIP;AAAE,iBAAM,OAAK,WAAS,SAAO,KAAK,OAAOC,KAAEG,MAAGD,EAAC,IAAEC,MAAG,OAAK,KAAK,OAAOH,KAAEK,MAAGH,EAAC,IAAEG,OAAI,KAAK,OAAOL,KAAEM,MAAGJ,EAAC,IAAEI,KAAI,SAAS,EAAE,EAAE,MAAM,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASR,IAAEC,IAAE;AAAC,iBAAOF,GAAE,WAAWE,EAAC,IAAE,KAAK,cAAcD,IAAEC,EAAC,IAAE,KAAK,cAAcD,IAAEC,EAAC;AAAA,QAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASF,IAAEC,IAAE;AAAC,iBAAO,WAAU;AAAC,mBAAOD,GAAE,MAAMC,IAAE,SAAS;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASD,IAAE;AAAC,iBAAOA,MAAG,aAAWkB,GAAElB,EAAC,KAAG,CAAC,MAAM,QAAQA,EAAC,KAAG,QAAMA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,MAAK,OAAM,SAASA,IAAEC,IAAE;AAAC,iBAAO,OAAO,UAAU,SAAS,KAAKA,EAAC,MAAI,aAAWD,KAAE;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAE;AAAC,cAAIC,IAAEC,KAAE,CAAC;AAAE,eAAID,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,GAAED,EAAC,IAAED,GAAEC,EAAC;AAAE,iBAAOC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE;AAAK,wBAAY,OAAO,OAAO,WAAS,OAAO,SAAO,SAASF,IAAE;AAAC,gBAAG,QAAMA,GAAE,OAAM,IAAI,UAAU,4CAA4C;AAAE,qBAAQC,KAAE,OAAOD,EAAC,GAAEE,KAAE,GAAEA,KAAE,UAAU,QAAOA,MAAI;AAAC,kBAAIC,KAAE,UAAUD,EAAC;AAAE,kBAAG,QAAMC,GAAE,UAAQE,MAAKF,GAAE,CAAAA,GAAE,eAAeE,EAAC,MAAIJ,GAAEI,EAAC,IAAEF,GAAEE,EAAC;AAAA,YAAE;AAAC,mBAAOJ;AAAA,UAAC;AAAG,cAAIE,KAAE,OAAO,OAAO,CAAC,GAAEH,EAAC;AAAE,iBAAO,KAAK,SAASA,EAAC,KAAG,KAAK,SAASC,EAAC,KAAG,OAAO,KAAKA,EAAC,EAAE,QAAS,SAASI,IAAE;AAAC,YAAAH,GAAE,SAASD,GAAEI,EAAC,CAAC,KAAGA,MAAKL,KAAEG,GAAEE,EAAC,IAAEH,GAAE,OAAOF,GAAEK,EAAC,GAAEJ,GAAEI,EAAC,CAAC,IAAE,OAAO,OAAOF,IAAEM,GAAE,CAAC,GAAEJ,IAAEJ,GAAEI,EAAC,CAAC,CAAC;AAAA,UAAC,CAAE,GAAEF;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,CAAC;AAAE,iBAAOF,GAAE,IAAK,SAASA,IAAE;AAAC,YAAAE,GAAE,KAAKH,GAAE,OAAOE,IAAED,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEA,KAAEE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASH,IAAE;AAAC,iBAAOA,KAAE;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASC,IAAE;AAAC,cAAGD,GAAE,GAAG,SAAQC,EAAC,GAAE;AAAC,qBAAQC,KAAE,CAAC,GAAEC,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,CAAAD,GAAEC,EAAC,IAAE,KAAK,MAAMF,GAAEE,EAAC,CAAC;AAAE,mBAAOD;AAAA,UAAC;AAAC,cAAGF,GAAE,GAAG,QAAOC,EAAC,EAAE,QAAO;AAAK,cAAGD,GAAE,GAAG,QAAOC,EAAC,EAAE,QAAOA;AAAE,cAAG,aAAWiB,GAAEjB,EAAC,GAAE;AAAC,gBAAII,KAAE,CAAC;AAAE,qBAAQC,MAAKL,GAAE,CAAAA,GAAE,eAAeK,EAAC,MAAID,GAAEC,EAAC,IAAE,KAAK,MAAML,GAAEK,EAAC,CAAC;AAAG,mBAAOD;AAAA,UAAC;AAAC,iBAAOJ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASD,IAAE;AAAC,iBAAO,KAAK,IAAIA,EAAC,IAAE,KAAK;AAAA,QAAI,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAG,KAAK,MAAM,KAAK,MAAMA,EAAC,CAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAIA,IAAE,KAAK,MAAM,KAAK,IAAID,EAAC,IAAE,KAAK,IAAIC,EAAC,CAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASD,IAAE;AAAC,iBAAO,SAAOA,KAAEA,KAAE,WAAWA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAE,iBAAO,OAAO,UAAUD,EAAC,IAAEA,KAAE,WAAWA,GAAE,YAAYC,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,kBAAO,KAAK,OAAO,IAAE,GAAG,SAAS,EAAE,EAAE,UAAU,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,OAAOD,EAAC,EAAE,MAAM,MAAM;AAAE,cAAG,MAAIC,GAAE,OAAO,QAAOA,GAAE,CAAC;AAAE,cAAIC,KAAE,IAAGC,KAAEH,KAAE,IAAE,MAAI,IAAGK,KAAEJ,GAAE,CAAC,EAAE,QAAQ,KAAI,EAAE,GAAEK,KAAE,OAAOL,GAAE,CAAC,CAAC,IAAE;AAAE,cAAGK,KAAE,GAAE;AAAC,iBAAIJ,KAAEC,KAAE,MAAKG,OAAK,CAAAJ,MAAG;AAAI,mBAAOA,KAAEG,GAAE,QAAQ,MAAK,EAAE;AAAA,UAAC;AAAC,eAAIC,MAAGD,GAAE,QAAOC,OAAK,CAAAJ,MAAG;AAAI,iBAAOG,KAAEH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,iBAAiBD,IAAE,IAAI,GAAEE,KAAEF,GAAE,cAAaG,KAAEH,GAAE;AAAY,iBAAOE,MAAG,WAAWD,GAAE,UAAU,IAAE,WAAWA,GAAE,aAAa,GAAE,CAACE,MAAG,WAAWF,GAAE,WAAW,IAAE,WAAWA,GAAE,YAAY,GAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAED,GAAE,sBAAsB;AAAE,iBAAM,EAAC,KAAIC,GAAE,KAAI,OAAMA,GAAE,OAAM,QAAOA,GAAE,QAAO,MAAKA,GAAE,MAAK,OAAMD,GAAE,aAAY,QAAOA,GAAE,cAAa,GAAEC,GAAE,MAAK,GAAEA,GAAE,IAAG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAASD,IAAE;AAAC,iBAAOA,GAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,mBAAO,MAAM,QAAQA,EAAC,MAAIA,KAAEA,GAAE,OAAQ,SAASD,IAAEC,IAAE;AAAC,qBAAOD,GAAE,SAAOC,GAAE,SAAOD,KAAEC;AAAA,YAAC,CAAE,IAAGD,GAAE,SAAOC,GAAE,SAAOD,KAAEC;AAAA,UAAC,GAAG,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,cAAID,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,WAAUC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAG,kBAAMD,GAAE,UAAU,GAAE,CAAC,MAAIA,KAAE;AAAW,cAAIE,KAAEF,GAAE,QAAQ,KAAI,EAAE;AAAE,UAAAE,KAAEA,GAAE,MAAM,IAAI,OAAO,QAAMA,GAAE,SAAO,IAAE,MAAK,GAAG,CAAC;AAAE,mBAAQC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAD,GAAEC,EAAC,IAAE,SAAS,MAAID,GAAEC,EAAC,EAAE,SAAOD,GAAEC,EAAC,IAAED,GAAEC,EAAC,IAAED,GAAEC,EAAC,GAAE,EAAE;AAAE,iBAAO,WAASF,MAAGC,GAAE,KAAKD,EAAC,GAAE,UAAQC,GAAE,KAAK,GAAG,IAAE;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAE;AAAC,iBAAO,WAAWA,GAAE,QAAQ,cAAa,IAAI,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASA,IAAE;AAAC,kBAAOA,KAAEA,GAAE,MAAM,sEAAsE,MAAI,MAAIA,GAAE,SAAO,OAAK,MAAI,SAASA,GAAE,CAAC,GAAE,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,KAAG,MAAI,SAASA,GAAE,CAAC,GAAE,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,KAAG,MAAI,SAASA,GAAE,CAAC,GAAE,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,IAAE;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,IAAE;AAAC,iBAAM,sDAAsD,KAAKA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAEC,IAAE;AAAC,mBAAQC,KAAE,CAAC,GAAEC,KAAE,IAAE,KAAK,KAAGF,IAAEI,KAAE,GAAEA,KAAEJ,IAAEI,MAAI;AAAC,gBAAIC,KAAE,CAAC;AAAE,YAAAA,GAAE,IAAEN,KAAE,KAAK,IAAIK,KAAEF,EAAC,GAAEG,GAAE,IAAE,CAACN,KAAE,KAAK,IAAIK,KAAEF,EAAC,GAAED,GAAE,KAAKI,EAAC;AAAA,UAAC;AAAC,iBAAOJ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,MAAGF,KAAE,MAAI,KAAK,KAAG;AAAI,iBAAM,EAAC,GAAEH,KAAEE,KAAE,KAAK,IAAIG,EAAC,GAAE,GAAEJ,KAAEC,KAAE,KAAK,IAAIG,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASL,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,KAAIC,KAAEF,GAAE,SAAS,EAAE,MAAM;AAAE,iBAAOE,KAAEA,GAAE,QAAQ,0CAAyCD,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASD,IAAE;AAAC,iBAAOA,KAAE,IAAE,IAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAGA,MAAGF,GAAE,OAAO,UAAQG,KAAED,KAAEF,GAAE,SAAO,GAAEG,OAAK,CAAAH,GAAE,KAAK,MAAM;AAAE,iBAAOA,GAAE,OAAOE,IAAE,GAAEF,GAAE,OAAOC,IAAE,CAAC,EAAE,CAAC,CAAC,GAAED;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAE;AAAC,iBAAO,WAAWA,GAAE,QAAQ,YAAW,EAAE,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASA,IAAEC,IAAE;AAAC,kBAAMD,KAAEA,GAAE,kBAAgB,CAACA,GAAE,UAAU,SAASC,EAAC,IAAG;AAAC,iBAAOD;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAEC,IAAE;AAAC,mBAAQC,MAAKD,GAAE,CAAAA,GAAE,eAAeC,EAAC,MAAIF,GAAE,MAAM,MAAIC,GAAEC,EAAC;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,MAAG,OAAOF,EAAC,EAAE,MAAM,GAAG,EAAE,CAAC,KAAG,IAAI,QAAOG,MAAG,OAAOF,EAAC,EAAE,MAAM,GAAG,EAAE,CAAC,KAAG,IAAI,QAAOI,KAAE,KAAK,IAAI,IAAG,KAAK,IAAIH,IAAEC,EAAC,CAAC;AAAE,kBAAO,KAAK,MAAMH,KAAEK,EAAC,IAAE,KAAK,MAAMJ,KAAEI,EAAC,KAAGA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASL,IAAE;AAAC,iBAAM,CAAC,MAAMA,EAAC,KAAG,WAAW,OAAOA,EAAC,CAAC,MAAIA,MAAG,CAAC,MAAM,SAASA,IAAE,EAAE,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASA,IAAE;AAAC,iBAAO,OAAOA,EAAC,MAAIA,MAAGA,KAAE,KAAG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,iBAAM,iCAAiC,KAAK,UAAU,SAAS;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAO,UAAU,UAAU,YAAY,EAAE,QAAQ,SAAS,IAAE;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,cAAIA,KAAE,OAAO,UAAU,WAAUC,KAAED,GAAE,QAAQ,OAAO;AAAE,iBAAOC,KAAE,KAAG,SAASD,GAAE,UAAUC,KAAE,GAAED,GAAE,QAAQ,KAAIC,EAAC,CAAC,GAAE,EAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,KAAK,IAAI,IAAGD,KAAE,KAAK,MAAM,KAAK,MAAM,KAAK,IAAIF,IAAEC,EAAC,CAAC,CAAC,CAAC;AAAE,eAAID,KAAE,KAAK,MAAM,KAAK,IAAIA,EAAC,IAAEG,EAAC,GAAEF,KAAE,KAAK,MAAM,KAAK,IAAIA,EAAC,IAAEE,EAAC,GAAEF,MAAG;AAAC,gBAAII,KAAEJ;AAAE,YAAAA,KAAED,KAAEC,IAAED,KAAEK;AAAA,UAAC;AAAC,iBAAOL,KAAEG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASH,IAAE;AAAC,mBAAQC,KAAE,CAAC,GAAEC,KAAE,GAAEF,MAAG,IAAG,CAAAA,KAAEE,MAAG,KAAGD,GAAE,KAAKC,EAAC,GAAEF,MAAGE,MAAGA;AAAI,iBAAOD;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,KAAK,IAAI,IAAGD,KAAE,KAAK,MAAM,KAAK,MAAM,KAAK,IAAIF,IAAEC,EAAC,CAAC,CAAC,CAAC;AAAE,kBAAOD,KAAE,KAAK,MAAM,KAAK,IAAIA,EAAC,IAAEG,EAAC,MAAIF,KAAE,KAAK,MAAM,KAAK,IAAIA,EAAC,IAAEE,EAAC,KAAGA;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEH;AAAA,MAAC,EAAE;AAAv4M,UAAy4MoB,KAAE,WAAU;AAAC,iBAASpB,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,mBAAmB;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAIA;AAAE,cAAG,CAAC,KAAK,EAAE,QAAQ,QAAO;AAAC,oBAAO,KAAK,EAAE,OAAO,MAAM,WAAW,QAAO;AAAA,cAAC,KAAI;AAAS,gBAAAA,KAAE;AAAI;AAAA,cAAM,KAAI;AAAS,gBAAAA,KAAE;AAAI;AAAA,cAAM,KAAI;AAAU,gBAAAA,KAAE;AAAI;AAAA,cAAM,KAAI;AAAA,cAAY;AAAQ,gBAAAA,KAAE;AAAK;AAAA,cAAM,KAAI;AAAQ,gBAAAA,KAAE,SAASA,IAAE;AAAC,sBAAIC,KAAE;AAAQ,0BAAOD,MAAG,KAAGA,OAAIC,KAAE,KAAGD,KAAEC,MAAG;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAS,gBAAAD,KAAE,SAASA,IAAE;AAAC,yBAAOA,KAAE,IAAE,OAAK,SAAOA,KAAEA,KAAEA,KAAE,IAAE,OAAK,UAAQA,MAAG,MAAI,QAAMA,KAAE,OAAIA,KAAE,MAAI,OAAK,UAAQA,MAAG,OAAK,QAAMA,KAAE,SAAM,UAAQA,MAAG,QAAM,QAAMA,KAAE;AAAA,gBAAO;AAAE;AAAA,cAAM,KAAI;AAAU,gBAAAA,KAAE,SAASA,IAAE;AAAC,yBAAOA,OAAI,CAAC,CAACA,KAAEA,KAAE,KAAK,IAAI,GAAE,MAAIA,EAAC,IAAE,KAAK,KAAKA,KAAE,UAAO,IAAE,KAAK,MAAI,GAAE,IAAE;AAAA,gBAAC;AAAA,YAAC;AAAC,iBAAK,EAAE,QAAQ,SAAOA;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,UAAAH,GAAE,KAAKC,EAAC,EAAE,QAAQE,EAAC,EAAE,KAAKD,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,UAAAH,GAAE,KAAK,EAAC,SAAQ,EAAC,CAAC,EAAE,QAAQC,IAAEC,EAAC,EAAE,KAAK,EAAC,SAAQ,EAAC,CAAC,EAAE,SAAU,WAAU;AAAC,YAAAC,GAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,UAAAL,GAAE,KAAKC,EAAC,EAAE,QAAQE,EAAC,EAAE,KAAKD,EAAC,EAAE,SAAU,WAAU;AAAC,mBAAOG,GAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASL,IAAE;AAAC,cAAIC,KAAED,GAAE,IAAGE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,MAAKM,KAAEN,GAAE,UAASQ,KAAER,GAAE,QAAOS,KAAET,GAAE,OAAMW,KAAEX,GAAE,OAAMY,KAAE,KAAK,GAAEF,KAAE;AAAE,UAAAE,GAAE,OAAO,MAAM,WAAW,iBAAiB,YAAUF,KAAEE,GAAE,OAAO,MAAM,WAAW,iBAAiB,QAAOA,GAAE,OAAO,MAAM,WAAW,iBAAiB,WAASA,GAAE,QAAQ,eAAa,UAAQA,GAAE,OAAO,MAAM,SAAOF,KAAE,IAAG,KAAK,SAAST,IAAEC,IAAEC,IAAE,WAASS,GAAE,OAAO,MAAM,QAAMA,GAAE,QAAQ,cAAYP,KAAE,UAASC,IAAEE,IAAEC,IAAEE,KAAED,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,eAAK,EAAE,QAAQ,gBAAgB,QAAS,SAASV,IAAE;AAAC,gBAAIC,KAAED,GAAE;AAAG,YAAAC,GAAE,UAAU,OAAO,2BAA2B,GAAEA,GAAE,UAAU,IAAI,iCAAiC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,mBAAiBA,GAAE,QAAQ,iBAAe,MAAG,KAAK,oBAAoB,GAAE,cAAY,OAAOA,GAAE,OAAO,MAAM,OAAO,gBAAcA,GAAE,OAAO,MAAM,OAAO,aAAa,KAAK,KAAI,EAAC,IAAGD,IAAE,GAAEC,GAAC,CAAC;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAEE,IAAEC,IAAE;AAAC,cAAIE,KAAE,MAAKC,KAAE,KAAK;AAAE,UAAAP,OAAIA,KAAEL,GAAE,KAAK,UAAU,IAAGM,OAAIA,KAAEN,GAAE,KAAK,QAAQ;AAAG,cAAIU,KAAE,SAASV,IAAE;AAAC,mBAAM,YAAUY,GAAE,OAAO,MAAM,SAAOJ,KAAE,IAAG,OAAO,OAAOI,GAAE,QAAQ,UAAU;AAAA,UAAC;AAAE,WAAC,CAACP,MAAGA,GAAE,QAAQ,WAAW,IAAE,MAAIA,GAAE,QAAQ,KAAK,IAAE,QAAMA,KAAEK,GAAE,KAAI,CAACJ,MAAGA,GAAE,QAAQ,WAAW,IAAE,MAAIA,GAAE,QAAQ,KAAK,IAAE,QAAMA,KAAEI,GAAE,IAAGE,GAAE,QAAQ,kBAAgBJ,KAAE,IAAGR,GAAE,KAAKK,EAAC,EAAE,QAAQ,GAAEO,GAAE,QAAQ,QAAOH,EAAC,EAAE,KAAKJ,EAAC,EAAE,QAAQG,IAAEI,GAAE,QAAQ,QAAOH,EAAC,EAAE,KAAKH,EAAC,EAAE,SAAU,WAAU;AAAC,YAAAa,GAAE,SAASjB,EAAC,IAAEA,OAAIU,GAAE,QAAQ,OAAOA,GAAE,QAAQ,mBAAmB,EAAE,SAAO,KAAGA,GAAE,QAAQ,iBAAeD,GAAE,mBAAmBX,EAAC,IAAE,WAASG,MAAGS,GAAE,QAAQ,kBAAgB,CAACA,GAAE,QAAQ,eAAaX,OAAIW,GAAE,QAAQ,OAAO,SAAO,KAAGA,GAAE,QAAQ,gBAAcD,GAAE,mBAAmBX,EAAC,GAAEW,GAAE,oBAAoB;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEX;AAAA,MAAC,EAAE;AAAniS,UAAqiSqB,KAAE,WAAU;AAAC,iBAASrB,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,UAAAF,GAAE,SAAS,IAAE,GAAG,IAAI,OAAO,IAAI,SAAQ,KAAK,QAAO,QAAO,OAAM,MAAM,GAAE,WAASE,GAAE,OAAO,OAAO,OAAO,SAAO,KAAK,YAAYF,IAAEC,IAAEC,GAAE,OAAO,OAAO,OAAO,OAAO,MAAKA,GAAE,OAAO,OAAO,OAAO,OAAO,KAAK,IAAEA,GAAE,OAAO,MAAM,WAAW,WAAS,KAAK,WAAWF,IAAEE,GAAE,OAAO,MAAM,YAAWD,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,UAAAA,GAAE,OAAO,MAAM,WAAW,WAAS,CAACF,GAAE,KAAK,UAAU,SAAS,mBAAmB,KAAG,KAAK,WAAWA,IAAEE,GAAE,OAAO,MAAM,YAAWD,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASD,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKE,KAAE,KAAK,GAAEC,KAAEJ,GAAE;AAAU,UAAAF,GAAE,SAAS,IAAE;AAAE,cAAI,OAAO,IAAI;AAAO,UAAAA,GAAE,OAAQ,SAASA,IAAE;AAAC,gBAAIE,KAAEG,GAAE,OAAO,MAAM;AAAW,aAACH,GAAE,UAAQC,GAAE,UAAUH,IAAEC,IAAEC,EAAC,IAAEF,IAAG,kBAAkB,EAAC,KAAI,EAAC,MAAK,UAAS,OAAM,KAAI,WAAUM,GAAC,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEN,GAAE,SAAS,KAAK,aAAa,eAAc,gBAAgB,GAAE,KAAK,iBAAiBA,GAAE,SAAS,IAAI;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKE,KAAE,KAAK,GAAEC,KAAEJ,GAAE;AAAU,UAAAF,GAAE,SAAS,IAAE;AAAE,cAAI,OAAO,IAAI;AAAO,UAAAA,GAAE,OAAQ,SAASA,IAAE;AAAC,gBAAIE,KAAEG,GAAE,OAAO,MAAM;AAAW,aAACH,GAAE,UAAQC,GAAE,UAAUH,IAAEC,IAAEC,EAAC,IAAEF,IAAG,kBAAkB,EAAC,KAAI,EAAC,MAAK,UAAS,OAAMM,GAAC,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEN,GAAE,SAAS,KAAK,aAAa,eAAc,gBAAgB,GAAE,KAAK,iBAAiBA,GAAE,SAAS,IAAI;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAG,kBAAOD,IAAE;AAAA,YAAC,KAAI;AAAO,mBAAK,gBAAgBF,IAAEC,EAAC;AAAE;AAAA,YAAM,KAAI;AAAU,mBAAK,iBAAiBD,IAAEC,IAAE,EAAC,WAAUE,GAAC,CAAC;AAAE;AAAA,YAAM,KAAI;AAAS,mBAAK,gBAAgBH,IAAEC,IAAE,EAAC,WAAUE,GAAC,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASH,IAAEC,IAAEC,IAAE;AAAC,cAAIC,IAAEE,KAAE,KAAK,GAAEC,KAAEJ,GAAE,MAAKM,KAAEN,GAAE,KAAIO,KAAEP,GAAE,MAAKS,KAAET,GAAE,OAAMU,KAAEV,GAAE;AAAQ,eAAI,UAAQC,KAAEE,GAAE,OAAO,MAAM,WAAW,oBAAkB,WAASF,KAAE,SAAOA,GAAE,UAAQ,KAAG,OAAKE,GAAE,OAAO,MAAM,WAAW,gBAAgB,QAAQJ,EAAC,EAAE,QAAOD;AAAE,cAAIU,KAAEV,GAAE,MAAM,MAAM,QAAQW,EAAC,IAAEA,GAAEV,EAAC,IAAEU,IAAEC,EAAC,EAAE,UAAUZ,GAAE,aAAY,IAAI,EAAE,OAAOS,IAAED,EAAC,EAAE,aAAaF,EAAC,EAAE,MAAMN,GAAE,MAAM;AAAE,iBAAOA,GAAE,MAAMA,GAAE,QAAOU,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASV,IAAEC,IAAE;AAAC,cAAIC,IAAEC,IAAEE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAEL,GAAE,KAAIO,KAAEP,GAAE,MAAKQ,KAAER,GAAE,MAAKU,KAAEV,GAAE,OAAMW,KAAEX,GAAE,SAAQS,KAAET,GAAE,kBAAiBa,KAAE,KAAK;AAAE,cAAGd,GAAE,SAAS,IAAE,GAAEmB,GAAE,SAAS,KAAG,gBAAcL,GAAE,OAAO,MAAM,KAAK,QAAOd;AAAE,eAAI,UAAQE,KAAEY,GAAE,OAAO,MAAM,WAAW,oBAAkB,WAASZ,KAAE,SAAOA,GAAE,UAAQ,KAAG,QAAM,UAAQC,KAAEW,GAAE,OAAO,MAAM,WAAW,oBAAkB,WAASX,KAAE,SAAOA,GAAE,QAAQE,EAAC,GAAG,QAAOL;AAAE,iBAAOW,KAAE,MAAM,QAAQA,EAAC,IAAEA,GAAEN,EAAC,IAAEM,IAAEX,GAAE,OAAQ,SAASA,IAAE;AAAC,gBAAIC,KAAE;AAAK,YAAAA,KAAEkB,GAAE,SAAS,KAAGA,GAAE,UAAU,KAAGA,GAAE,SAAS,IAAEnB,GAAE,MAAMW,IAAEC,EAAC,EAAE,UAAUZ,GAAE,aAAY,IAAI,EAAE,OAAOQ,IAAEF,EAAC,EAAE,aAAaG,EAAC,IAAET,GAAE,MAAMW,IAAEC,EAAC,EAAE,UAAUZ,GAAE,aAAY,IAAI,EAAE,OAAOQ,IAAEF,EAAC,EAAE,aAAaG,EAAC,EAAE,MAAMT,GAAE,MAAM,GAAEA,GAAE,MAAMA,GAAE,QAAOC,EAAC;AAAA,UAAC,CAAE,GAAES,MAAGV,GAAE,SAAS,KAAK,aAAa,eAAc,gBAAgB,GAAE,KAAK,iBAAiBA,GAAE,SAAS,IAAI,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAG,WAASA,GAAE,QAAQ,mBAAmBF,EAAC,KAAGE,GAAE,QAAQ,mBAAmBF,EAAC,EAAE,QAAQC,EAAC,IAAE,IAAG;AAAC,YAAAF,GAAE,KAAK,aAAa,YAAW,IAAE;AAAE,gBAAIK,KAAEF,GAAE,OAAO,OAAO,OAAO;AAAO,uBAASE,MAAG,KAAK,YAAYL,IAAEC,IAAEI,GAAE,MAAKA,GAAE,KAAK;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASL,IAAE;AAAC,WAAC,SAASC,IAAE;AAAC,qBAAQC,MAAKD,GAAE,CAAAA,GAAE,eAAeC,EAAC,KAAGF,GAAE,aAAaE,IAAED,GAAEC,EAAC,CAAC;AAAA,UAAC,EAAE,EAAC,OAAM,QAAO,QAAO,QAAO,GAAE,QAAO,GAAE,OAAM,CAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA5wY,UAA8wYsB,KAAE,WAAU;AAAC,iBAAStB,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAE;AAAC,mBAASC,GAAEF,IAAEC,IAAEC,IAAE;AAAC,gBAAIG,KAAEJ,GAAE,IAAED,GAAE,GAAEM,KAAEL,GAAE,IAAED,GAAE,GAAEQ,KAAE,KAAK,KAAKH,KAAEA,KAAEC,KAAEA,EAAC;AAAE,mBAAOH,GAAEH,IAAEC,IAAE,KAAK,IAAI,GAAEC,KAAEM,EAAC,CAAC;AAAA,UAAC;AAAC,mBAASL,GAAEH,IAAEC,IAAEC,IAAE;AAAC,mBAAM,EAAC,GAAEF,GAAE,KAAGC,GAAE,IAAED,GAAE,KAAGE,IAAE,GAAEF,GAAE,KAAGC,GAAE,IAAED,GAAE,KAAGE,GAAC;AAAA,UAAC;AAAC,mBAASG,GAAEL,IAAEC,IAAE;AAAC,YAAAD,GAAE,SAAO,MAAIA,GAAEA,GAAE,SAAO,CAAC,IAAEC,GAAE,GAAED,GAAEA,GAAE,SAAO,CAAC,IAAEC,GAAE;AAAA,UAAE;AAAC,mBAASK,GAAEN,IAAE;AAAC,mBAAM,EAAC,GAAE,WAAWA,GAAEA,GAAE,SAAO,CAAC,CAAC,GAAE,GAAE,WAAWA,GAAEA,GAAE,SAAO,CAAC,CAAC,EAAC;AAAA,UAAC;AAAC,UAAAA,GAAE,QAAQ,KAAK,IAAE,OAAKA,KAAE;AAAI,cAAIQ,KAAER,GAAE,MAAM,OAAO,EAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,gBAAIC,KAAED,GAAE,MAAM,gBAAgB;AAAE,mBAAOC,MAAGF,GAAE,KAAKE,GAAE,CAAC,CAAC,GAAEF,GAAE,KAAKE,GAAE,CAAC,CAAC,KAAGF,GAAE,KAAKC,EAAC,GAAED;AAAA,UAAC,GAAG,CAAC,CAAC,EAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,mBAAO,WAAWA,EAAC,KAAGA,MAAGD,GAAE,SAAOA,GAAEA,GAAE,SAAO,CAAC,EAAE,KAAKC,EAAC,IAAED,GAAE,KAAK,CAACC,EAAC,CAAC,GAAED;AAAA,UAAC,GAAG,CAAC,CAAC,GAAES,KAAE,CAAC;AAAE,cAAGD,GAAE,SAAO,GAAE;AAAC,gBAAIG,KAAEL,GAAEE,GAAE,CAAC,CAAC,GAAEI,KAAE;AAAK,mBAAKJ,GAAEA,GAAE,SAAO,CAAC,EAAE,CAAC,KAAGA,GAAE,CAAC,EAAE,SAAO,MAAII,KAAE,CAAC,KAAID,GAAE,GAAEA,GAAE,CAAC,GAAEH,GAAEA,GAAE,SAAO,CAAC,IAAEI,KAAGH,GAAE,KAAKD,GAAE,CAAC,CAAC;AAAE,qBAAQE,KAAE,GAAEA,KAAEF,GAAE,QAAOE,MAAI;AAAC,kBAAII,KAAEL,GAAEA,GAAE,SAAO,CAAC,GAAEM,KAAEP,GAAEE,EAAC,GAAEG,KAAEE,MAAGH,KAAEJ,GAAE,CAAC,IAAEA,GAAEE,KAAE,CAAC;AAAE,kBAAGG,MAAGC,MAAGA,GAAE,SAAO,KAAG,OAAKC,GAAE,CAAC,KAAGF,GAAE,SAAO,KAAG,OAAKA,GAAE,CAAC,GAAE;AAAC,oBAAIG,IAAEC,IAAEb,KAAEE,GAAEQ,EAAC,GAAEI,KAAEZ,GAAES,EAAC,GAAER,KAAED,GAAEO,EAAC;AAAE,gBAAAG,KAAEd,GAAEgB,IAAEd,IAAEH,EAAC,GAAEgB,KAAEf,GAAEgB,IAAEX,IAAEN,EAAC,GAAEI,GAAEU,IAAEC,EAAC,GAAED,GAAE,YAAUG,IAAET,GAAE,KAAKM,EAAC;AAAE,oBAAII,KAAEhB,GAAEa,IAAEE,IAAE,GAAE,GAAEE,KAAEjB,GAAEe,IAAED,IAAE,GAAE,GAAEI,KAAE,CAAC,KAAIF,GAAE,GAAEA,GAAE,GAAEC,GAAE,GAAEA,GAAE,GAAEH,GAAE,GAAEA,GAAE,CAAC;AAAE,gBAAAI,GAAE,YAAUH,IAAET,GAAE,KAAKY,EAAC;AAAA,cAAC,MAAM,CAAAZ,GAAE,KAAKM,EAAC;AAAA,YAAC;AAAC,gBAAGH,IAAE;AAAC,kBAAIU,KAAEhB,GAAEG,GAAEA,GAAE,SAAO,CAAC,CAAC;AAAE,cAAAA,GAAE,KAAK,CAAC,GAAG,CAAC,GAAEJ,GAAEI,GAAE,CAAC,GAAEa,EAAC;AAAA,YAAC;AAAA,UAAC,MAAM,CAAAb,KAAED;AAAE,iBAAOC,GAAE,OAAQ,SAAST,IAAEC,IAAE;AAAC,mBAAOD,KAAEC,GAAE,KAAK,GAAG,IAAE;AAAA,UAAG,GAAG,EAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,WAAUC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAO,iBAAO,KAAK,EAAE,QAAQ,IAAI,MAAM,KAAK,EAAE,KAAK,EAAC,IAAGT,IAAE,IAAGC,IAAE,IAAGC,IAAE,IAAGC,IAAE,QAAOE,IAAE,oBAAmBC,IAAE,gBAAeE,IAAE,kBAAiBC,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,cAAIT,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,WAAUE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEF,KAAE,KAAK,EAAE,QAAQ,IAAI,MAAM,KAAK;AAAE,iBAAOA,GAAE,KAAK,EAAC,GAAEV,IAAE,GAAEC,IAAE,OAAMC,KAAE,IAAEA,KAAE,GAAE,QAAOC,KAAE,IAAEA,KAAE,GAAE,IAAGE,IAAE,IAAGA,IAAE,SAAQG,IAAE,gBAAe,SAAOC,KAAEA,KAAE,GAAE,QAAO,SAAOE,KAAEA,KAAE,QAAO,oBAAmBC,GAAC,CAAC,GAAEF,GAAE,KAAK,aAAa,QAAOJ,EAAC,GAAEI;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASV,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,WAAUC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAO,iBAAO,KAAK,EAAE,QAAQ,IAAI,MAAM,QAAQH,EAAC,EAAE,KAAK,EAAC,MAAKG,IAAE,QAAOF,IAAE,gBAAeC,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAK,UAAAD,KAAE,MAAIA,KAAE;AAAG,cAAIE,KAAE,KAAK,EAAE,QAAQ,IAAI,MAAM,OAAO,IAAEF,EAAC;AAAE,iBAAO,SAAOC,MAAGC,GAAE,KAAKD,EAAC,GAAEC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAE,WAASD,KAAE,KAAGA,IAAEE,KAAEH,GAAE,QAAOK,KAAE,WAASF,KAAE,YAAUA,IAAEG,KAAEN,GAAE,aAAYQ,KAAE,WAASF,KAAE,IAAEA,IAAEG,KAAET,GAAE,MAAKW,KAAEX,GAAE,aAAYY,KAAE,WAASD,KAAE,IAAEA,IAAED,KAAEV,GAAE,eAAcc,KAAE,WAASJ,KAAE,IAAEA,IAAEK,KAAEf,GAAE,SAAQa,KAAEb,GAAE,eAAcgB,KAAE,WAASH,KAAE,OAAKA,IAAEI,KAAEjB,GAAE,iBAAgBI,KAAE,WAASa,KAAE,IAAEA,IAAEC,KAAE,KAAK;AAAE,iBAAO,SAAOF,OAAIA,KAAEE,GAAE,OAAO,OAAO,WAAUhB,GAAE,QAAQ,WAAW,IAAE,MAAIA,GAAE,QAAQ,KAAK,IAAE,QAAMA,KAAE,OAAO,OAAOgB,GAAE,QAAQ,UAAU,IAAGA,GAAE,QAAQ,IAAI,MAAM,KAAKhB,EAAC,EAAE,KAAK,EAAC,MAAKO,IAAE,gBAAeG,IAAE,QAAOP,IAAE,kBAAiBS,IAAE,kBAAiBE,IAAE,gBAAeR,IAAE,oBAAmBJ,IAAE,OAAMW,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,cAAIf,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,KAAK,EAAE,QAAQ,IAAI,MAAM,MAAM;AAAE,iBAAO,SAAOD,MAAGC,GAAE,KAAKD,EAAC,GAAEC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,CAAC,KAAIF,IAAEC,EAAC,EAAE,KAAK,GAAG;AAAE,iBAAOC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE;AAAK,iBAAO,SAAOD,KAAEC,KAAE,CAAC,MAAKH,IAAEC,EAAC,EAAE,KAAK,GAAG,IAAE,QAAMC,KAAEC,KAAE,CAAC,MAAKH,EAAC,EAAE,KAAK,GAAG,IAAE,QAAME,OAAIC,KAAE,CAAC,MAAKF,EAAC,EAAE,KAAK,GAAG,IAAGE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,cAAIE,KAAE,CAAC,KAAIR,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,EAAC,EAAE,KAAK,GAAG;AAAE,iBAAOE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASR,IAAEC,IAAEC,IAAEC,IAAE;AAAC,iBAAM,CAAC,KAAIH,IAAEC,IAAEC,IAAEC,EAAC,EAAE,KAAK,GAAG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAE;AAAI,oBAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC,MAAIA,KAAE;AAAK,cAAIE,KAAE,CAACF,IAAET,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAEE,EAAC,EAAE,KAAK,GAAG;AAAE,iBAAOG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASX,IAAE;AAAC,cAAIC,IAAEC,KAAEF,GAAE,GAAEG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,UAASM,KAAEN,GAAE,QAAOQ,KAAER,GAAE,QAAOS,KAAET,GAAE,aAAYW,KAAEX,GAAE,eAAcY,KAAEZ,GAAE,MAAKU,KAAEV,GAAE,gBAAec,KAAEd,GAAE,cAAaa,KAAEb,GAAE,iBAAgBgB,KAAEhB,GAAE,WAAUiB,KAAEjB,GAAE,WAAUI,KAAEJ,GAAE,kBAAiBkB,KAAE,WAASd,MAAGA,IAAEG,KAAEP,GAAE,mBAAkBmB,KAAE,WAASZ,MAAGA,IAAEe,KAAEtB,GAAE,YAAWuB,KAAE,WAASD,MAAGA,IAAEE,KAAE,KAAK,GAAEC,KAAE,IAAIJ,GAAE,KAAK,GAAG,GAAEK,KAAE,IAAIN,GAAE,KAAK,GAAG,GAAEO,KAAE,KAAK,EAAE,OAAO,MAAM,WAAW,SAAQC,KAAED,MAAG,KAAK,EAAE,OAAO,MAAM,WAAW,iBAAiB,SAAQE,KAAE,CAAC,EAAEF,MAAG,CAACH,GAAE,QAAQ,WAASI,MAAGJ,GAAE,QAAQ,eAAaA,GAAE,QAAQ;AAAe,UAAAK,KAAE5B,KAAEI,MAAGJ,KAAEK,IAAEkB,GAAE,QAAQ,iBAAe;AAAI,cAAIM,KAAEN,GAAE,OAAO,OAAO,WAAUO,KAAE;AAAE,UAAAA,KAAE,MAAM,QAAQD,EAAC,IAAEA,GAAE3B,EAAC,IAAEqB,GAAE,OAAO,OAAO;AAAU,cAAIQ,KAAE,KAAK,SAAS,EAAC,GAAE/B,IAAE,QAAOO,IAAE,aAAYC,IAAE,MAAKG,IAAE,aAAY,GAAE,SAAQI,IAAE,eAAcL,IAAE,iBAAgBoB,GAAC,CAAC;AAAE,cAAGC,GAAE,KAAK,SAAQ7B,EAAC,GAAEe,OAAI,UAAQD,MAAG,CAACO,GAAE,QAAQ,gBAAcA,GAAE,QAAQ,cAAYQ,GAAE,KAAK,EAAC,aAAY,uBAAuB,OAAOR,GAAE,QAAQ,MAAK,GAAG,EAAC,CAAC,IAAEQ,GAAE,KAAK,EAAC,aAAY,oBAAoB,OAAOR,GAAE,QAAQ,MAAK,GAAG,EAAC,CAAC,IAAG,WAASA,GAAE,OAAO,OAAO,OAAO,OAAO,KAAK,CAAAC,GAAE,iBAAiBO,IAAE7B,EAAC;AAAA,mBAAUqB,GAAE,OAAO,MAAM,WAAW,WAASD,IAAE;AAAC,gBAAIU,KAAET,GAAE,OAAO,MAAM;AAAW,YAAAC,GAAE,WAAWO,IAAEC,IAAE9B,EAAC;AAAA,UAAC;AAAC,UAAAgB,OAAIa,GAAE,KAAK,iBAAiB,cAAa,KAAK,eAAe,KAAK,MAAKA,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,cAAa,KAAK,eAAe,KAAK,MAAKA,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,aAAY,KAAK,cAAc,KAAK,MAAKA,EAAC,CAAC,IAAGA,GAAE,KAAK,EAAC,QAAO1B,IAAE,UAASD,GAAC,CAAC;AAAE,cAAI6B,KAAE,EAAC,IAAGF,IAAE,GAAE9B,IAAE,WAAUC,IAAE,UAASE,IAAE,QAAOC,IAAE,MAAKM,IAAE,aAAYH,IAAE,OAAMC,GAAC;AAAE,iBAAM,CAACiB,MAAGH,GAAE,QAAQ,WAASA,GAAE,QAAQ,cAAY,CAACA,GAAE,QAAQ,WAASA,GAAE,QAAQ,eAAaE,GAAE,oBAAoB,IAAEA,GAAE,sBAAsBX,GAAEA,GAAE,CAAC,GAAEmB,EAAC,GAAE,CAAC,GAAE,EAAC,OAAMpB,GAAC,CAAC,CAAC,GAAEU,GAAE,QAAQ,eAAaI,MAAGC,MAAGH,GAAE,sBAAsBX,GAAEA,GAAE,CAAC,GAAEmB,EAAC,GAAE,CAAC,GAAE,EAAC,OAAMrB,GAAC,CAAC,CAAC,GAAEmB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAShC,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,WAAUE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAE,iBAAO,KAAK,EAAE,QAAQ,IAAI,MAAM,QAAQJ,IAAEC,IAAG,SAASI,IAAE;AAAC,kCAAoBN,KAAEM,GAAE,KAAK,GAAE,GAAEJ,IAAE,CAAC,EAAE,OAAO,EAAC,OAAMC,IAAE,OAAME,KAAE,EAAC,CAAC,IAAE,oBAAkBL,KAAEM,GAAE,KAAK,GAAE,GAAE,GAAEL,EAAC,EAAE,OAAO,EAAC,OAAME,IAAE,OAAME,KAAE,EAAC,CAAC,IAAE,mBAAiBL,KAAEM,GAAE,KAAK,GAAE,GAAEL,IAAEC,EAAC,EAAE,OAAO,EAAC,OAAMC,IAAE,OAAME,GAAC,CAAC,IAAE,cAAYL,KAAEM,GAAE,KAAKL,IAAEC,EAAC,EAAE,KAAK,MAAM,EAAE,OAAO,EAAC,OAAMC,IAAE,OAAME,GAAC,CAAC,IAAE,cAAYL,MAAGM,GAAE,OAAOL,EAAC,EAAE,KAAK,MAAM,EAAE,OAAO,EAAC,OAAME,IAAE,OAAME,GAAC,CAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASL,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,cAAIC,IAAEE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEF,KAAE,KAAK;AAAE,UAAAT,GAAE,SAAO,KAAG,MAAIA,GAAE,QAAQ,GAAG,MAAIA,KAAEkB,GAAE,UAAUlB,IAAEE,EAAC,IAAGD,GAAE,SAAO,KAAG,MAAIA,GAAE,QAAQ,GAAG,MAAIA,KAAEiB,GAAE,UAAUjB,IAAEG,EAAC;AAAG,cAAIS,KAAE,GAAEC,KAAE,GAAEF,KAAE,GAAEG,KAAE;AAAK,mBAAOP,OAAIK,KAAE,WAASL,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAE,MAAI,GAAEM,KAAE,WAASN,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAE,MAAI,GAAEI,KAAE,WAASJ,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAE,MAAI,GAAEO,KAAE,WAASP,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAE,MAAI;AAAM,cAAIQ,KAAE,EAAE,YAAUP,GAAE,OAAO,MAAM,QAAM,UAAQA,GAAE,OAAO,MAAM,QAAM,gBAAcA,GAAE,OAAO,MAAM,QAAM,aAAWA,GAAE,OAAO,MAAM;AAAM,cAAGJ,KAAE,SAAOK,MAAG,MAAIA,GAAE,SAAOD,GAAE,QAAQ,IAAI,MAAM,SAASO,KAAE,WAAS,UAAU,SAASjB,IAAE;AAAC,YAAAA,GAAE,GAAGc,IAAEb,IAAEE,EAAC,GAAEH,GAAE,GAAGe,IAAEb,IAAEG,EAAC,GAAEL,GAAE,GAAGa,IAAEX,IAAEG,EAAC,GAAE,SAAOW,MAAGhB,GAAE,GAAGgB,IAAEf,IAAEE,EAAC;AAAA,UAAC,CAAE,IAAEO,GAAE,QAAQ,IAAI,MAAM,SAASO,KAAE,WAAS,UAAU,SAASjB,IAAE;AAAC,aAAC,MAAM,QAAQW,GAAEC,EAAC,CAAC,IAAED,GAAEC,EAAC,IAAED,IAAG,QAAS,SAASV,IAAE;AAAC,cAAAD,GAAE,GAAGC,GAAE,SAAO,KAAIA,GAAE,OAAMA,GAAE,OAAO;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE,GAAEgB,IAAE;AAAC,gBAAIb,KAAEM,GAAE,QAAQ,YAAU,GAAEQ,KAAER,GAAE,QAAQ,aAAW;AAAE,yBAAWA,GAAE,OAAO,MAAM,OAAKJ,GAAE,KAAK,EAAC,eAAc,kBAAiB,IAAGF,IAAE,IAAGc,IAAE,GAAEV,GAAC,CAAC,IAAEF,GAAE,KAAK,EAAC,IAAG,KAAG,IAAG,KAAG,GAAE,KAAG,IAAG,KAAG,IAAG,IAAE,CAAC;AAAA,UAAC,MAAK,gBAAaN,KAAEM,GAAE,KAAK,GAAE,CAAC,EAAE,GAAG,GAAE,CAAC,IAAE,eAAaN,KAAEM,GAAE,KAAK,GAAE,CAAC,EAAE,GAAG,GAAE,CAAC,IAAE,iBAAeN,KAAEM,GAAE,KAAK,GAAE,CAAC,EAAE,GAAG,GAAE,CAAC,IAAE,gBAAcN,MAAGM,GAAE,KAAK,GAAE,CAAC,EAAE,GAAG,GAAE,CAAC;AAAE,iBAAOA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAED,GAAE,MAAKE,KAAEF,GAAE,UAASG,KAAEH,GAAE,UAASK,KAAEL,GAAE,YAAWM,KAAE,KAAK,aAAaL,IAAEE,IAAEE,EAAC,GAAEG,KAAEF,GAAE,QAAML,GAAE,QAAOQ,KAAE,KAAK,MAAMP,KAAEM,EAAC;AAAE,iBAAON,KAAEI,GAAE,QAAML,GAAE,MAAM,GAAEQ,KAAE,CAAC,IAAE,QAAMR;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAEF,GAAE,GAAEG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,MAAKM,KAAEN,GAAE,YAAWQ,KAAER,GAAE,UAASS,KAAET,GAAE,YAAWW,KAAEX,GAAE,YAAWY,KAAEZ,GAAE,WAAUU,KAAEV,GAAE,SAAQc,KAAEd,GAAE,UAASa,KAAEb,GAAE,UAASgB,KAAE,WAASH,KAAE,KAAGA,IAAEI,KAAEjB,GAAE,aAAYI,KAAE,WAASa,MAAGA,IAAEC,KAAElB,GAAE,kBAAiBO,KAAE,WAASW,KAAE,SAAOA,IAAEC,KAAE,KAAK;AAAE,qBAASd,OAAIA,KAAE;AAAI,cAAIe,KAAEf;AAAE,UAAAC,OAAIA,KAAE,UAASM,MAAGA,GAAE,WAASA,KAAEO,GAAE,OAAO,MAAM,YAAWV,KAAEA,MAAGU,GAAE,OAAO,MAAM,YAAWR,KAAEA,MAAG;AAAU,cAAIU,IAAEC,KAAE,EAAC,UAASR,IAAE,UAASN,KAAEA,MAAG,QAAO,YAAWC,GAAC;AAAE,iBAAO,MAAM,QAAQJ,EAAC,IAAEgB,KAAEF,GAAE,QAAQ,IAAI,MAAM,KAAM,SAASnB,IAAE;AAAC,qBAAQE,KAAE,GAAEA,KAAEG,GAAE,QAAOH,KAAI,CAAAkB,KAAEf,GAAEH,EAAC,GAAEY,OAAIM,KAAEnB,GAAE,uBAAuBc,GAAE,EAAC,MAAKV,GAAEH,EAAC,EAAC,GAAEoB,EAAC,CAAC,IAAG,MAAIpB,KAAEF,GAAE,MAAMoB,EAAC,IAAEpB,GAAE,MAAMoB,EAAC,EAAE,QAAQ;AAAA,UAAC,CAAE,KAAGN,OAAIM,KAAE,KAAK,uBAAuBL,GAAE,EAAC,MAAKV,GAAC,GAAEiB,EAAC,CAAC,IAAGD,KAAEjB,KAAEe,GAAE,QAAQ,IAAI,MAAM,MAAMd,EAAC,IAAEc,GAAE,QAAQ,IAAI,MAAM,KAAM,SAASnB,IAAE;AAAC,mBAAOA,GAAE,MAAMoB,EAAC;AAAA,UAAC,CAAE,IAAGC,GAAE,KAAK,EAAC,GAAEnB,IAAE,GAAEC,IAAE,eAAcG,IAAE,qBAAoBC,IAAE,aAAYC,IAAE,eAAcC,IAAE,eAAcE,IAAE,MAAKC,IAAE,OAAM,qBAAmBI,GAAC,CAAC,GAAEK,GAAE,KAAK,MAAM,aAAWZ,IAAEY,GAAE,KAAK,MAAM,UAAQX,IAAEW;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASrB,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE;AAAG,kBAAOH,IAAE;AAAA,YAAC,KAAI;AAAQ,cAAAG,KAAE,KAAK,OAAOL,MAAGG,MAAG,MAAK,GAAG,EAAE,OAAOF,KAAEE,IAAE,KAAK,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,KAAEE,IAAE,MAAM,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,KAAEE,IAAE,KAAK,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,KAAEE,EAAC;AAAE;AAAA,YAAM,KAAI;AAAO,cAAAE,KAAE,KAAK,OAAOL,MAAGG,MAAG,OAAM,GAAG,EAAE,OAAOF,IAAE,KAAK,EAAE,OAAOD,KAAEG,IAAE,GAAG,EAAE,OAAOF,IAAE,MAAM,EAAE,OAAOD,IAAE,GAAG,EAAE,OAAOC,KAAEE,IAAE,KAAK,EAAE,OAAOH,IAAE,GAAG,EAAE,OAAOC,KAAEE,EAAC;AAAE;AAAA,YAAM,KAAI;AAAA,YAAO,KAAI;AAAU,kBAAIG,KAAE;AAAE,cAAAH,MAAG,MAAK,cAAYD,OAAIC,MAAG,KAAIG,KAAE;AAAG,uBAAQE,KAAE,KAAK,KAAGF,IAAEG,KAAE,GAAEA,MAAG,IAAEH,IAAEG,MAAI;AAAC,oBAAIE,KAAEF,KAAED,IAAEI,KAAEH,KAAE,KAAG,IAAEN,KAAEA,KAAE;AAAE,gBAAAE,OAAI,MAAII,KAAE,MAAI,QAAMT,KAAEY,KAAE,KAAK,IAAID,EAAC,KAAG,OAAKV,KAAEW,KAAE,KAAK,IAAID,EAAC;AAAA,cAAE;AAAC,cAAAN,MAAG;AAAI;AAAA,YAAM,KAAI;AAAW,cAAAA,KAAE,KAAK,OAAOL,IAAE,GAAG,EAAE,OAAOC,KAAEE,IAAE,oBAAoB,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,KAAEE,IAAE,oBAAoB,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,KAAEE,IAAE,mBAAmB;AAAE;AAAA,YAAM,KAAI;AAAA,YAAS,KAAI;AAAO,cAAAE,KAAE,KAAK,OAAOL,MAAGG,MAAG,QAAO,GAAG,EAAE,OAAOF,KAAEE,IAAE,kBAAkB,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,KAAEE,IAAE,kBAAkB,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,KAAEE,IAAE,kBAAkB,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,KAAEE,IAAE,iBAAiB;AAAE;AAAA,YAAM,KAAI;AAAU,cAAAA,MAAG,MAAKE,KAAE,KAAK,OAAOL,IAAE,GAAG,EAAE,OAAOC,KAAEE,IAAE,oBAAoB,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,IAAE,oBAAoB,EAAE,OAAOD,IAAE,GAAG,EAAE,OAAOC,KAAEE,IAAE,oBAAoB,EAAE,OAAOH,KAAEG,IAAE,GAAG,EAAE,OAAOF,IAAE,kBAAkB;AAAE;AAAA,YAAM,KAAI;AAAO,cAAAI,KAAE,KAAK,OAAOL,MAAGG,MAAG,MAAK,GAAG,EAAE,OAAOF,IAAE,kBAAkB,EAAE,OAAOD,KAAEG,IAAE,GAAG,EAAE,OAAOF,EAAC;AAAE;AAAA,YAAM;AAAQ,cAAAE,MAAG,GAAEE,KAAE,KAAK,OAAOL,IAAE,IAAI,EAAE,OAAOC,IAAE,mBAAmB,EAAE,OAAOE,KAAE,GAAE,qBAAqB,EAAE,OAAOA,KAAE,GAAE,GAAG,EAAE,OAAOA,KAAE,GAAE,SAAS,EAAE,OAAOA,IAAE,oBAAoB,EAAE,OAAOA,KAAE,GAAE,GAAG,EAAE,OAAOA,KAAE,GAAE,UAAU,EAAE,OAAOA,IAAE,IAAI;AAAA,UAAC;AAAC,iBAAOE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASL,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAE,KAAK,SAAS,EAAC,GAAE,KAAK,cAAcN,IAAEC,IAAEC,IAAEC,IAAEE,EAAC,GAAE,QAAOA,GAAE,kBAAiB,iBAAgBA,GAAE,sBAAqB,aAAYA,GAAE,kBAAiB,MAAKA,GAAE,gBAAe,aAAYA,GAAE,kBAAiB,eAAcA,GAAE,mBAAkB,CAAC;AAAE,iBAAOC,GAAE,KAAK,EAAC,IAAGN,IAAE,IAAGC,IAAE,OAAMI,GAAE,OAAM,OAAMA,GAAE,QAAMA,GAAE,QAAM,GAAE,CAAC,GAAEC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASN,IAAEC,IAAEC,IAAE;AAAC,UAAAF,KAAEA,MAAG;AAAE,cAAIG,KAAED,GAAE,SAAO;AAAE,iBAAOiB,GAAE,SAASlB,EAAC,MAAIE,KAAE,GAAEF,KAAE,IAAG,KAAK,gBAAgBD,IAAEC,IAAE,QAAMC,KAAE,SAAOA,GAAE,OAAMC,IAAEY,GAAEA,GAAE,CAAC,GAAEb,EAAC,GAAE,WAASA,GAAE,SAAO,WAASA,GAAE,SAAO,YAAUA,GAAE,QAAM,EAAC,kBAAiBA,GAAE,gBAAe,oBAAmBA,GAAE,iBAAgB,IAAE,CAAC,CAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIkB,GAAE,KAAK,GAAG,GAAEhB,KAAE,SAASL,GAAE,KAAK,aAAa,OAAO,GAAE,EAAE,GAAEM,KAAE,SAASN,GAAE,KAAK,aAAa,GAAG,GAAE,EAAE;AAAE,cAAG,cAAY,OAAOE,GAAE,OAAO,MAAM,OAAO,uBAAqBA,GAAE,OAAO,MAAM,OAAO,oBAAoBD,IAAE,KAAK,KAAI,EAAC,aAAYI,IAAE,gBAAeC,IAAE,GAAEJ,GAAC,CAAC,GAAE,KAAK,IAAI,OAAO,UAAU,uBAAsB,CAACD,IAAE,KAAK,KAAI,EAAC,aAAYI,IAAE,gBAAeC,IAAE,GAAEJ,GAAC,CAAC,CAAC,IAAG,WAASA,GAAE,OAAO,OAAO,OAAO,OAAO,QAAM,WAASF,GAAE,KAAK,aAAa,UAAU,MAAI,WAASE,GAAE,OAAO,OAAO,MAAM,OAAO,QAAM,CAACA,GAAE,QAAQ,eAAc;AAAC,gBAAIM,KAAEN,GAAE,OAAO,OAAO,MAAM;AAAO,YAAAC,GAAE,YAAYH,IAAEK,IAAEG,GAAE,MAAKA,GAAE,KAAK;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASR,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIkB,GAAE,KAAK,GAAG,GAAEhB,KAAE,SAASL,GAAE,KAAK,aAAa,OAAO,GAAE,EAAE,GAAEM,KAAE,SAASN,GAAE,KAAK,aAAa,GAAG,GAAE,EAAE;AAAE,wBAAY,OAAOE,GAAE,OAAO,MAAM,OAAO,uBAAqBA,GAAE,OAAO,MAAM,OAAO,oBAAoBD,IAAE,KAAK,KAAI,EAAC,aAAYI,IAAE,gBAAeC,IAAE,GAAEJ,GAAC,CAAC,GAAE,KAAK,IAAI,OAAO,UAAU,uBAAsB,CAACD,IAAE,KAAK,KAAI,EAAC,aAAYI,IAAE,gBAAeC,IAAE,GAAEJ,GAAC,CAAC,CAAC,GAAE,WAASA,GAAE,OAAO,OAAO,OAAO,OAAO,QAAM,WAASF,GAAE,KAAK,aAAa,UAAU,KAAG,WAASE,GAAE,OAAO,OAAO,MAAM,OAAO,QAAMC,GAAE,iBAAiBH,IAAEK,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASL,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIkB,GAAE,KAAK,GAAG,GAAEhB,KAAE,SAASL,GAAE,KAAK,aAAa,OAAO,GAAE,EAAE,GAAEM,KAAE,SAASN,GAAE,KAAK,aAAa,GAAG,GAAE,EAAE,GAAEQ,KAAE;AAAQ,cAAG,WAASR,GAAE,KAAK,aAAa,UAAU,GAAE;AAAC,gBAAGA,GAAE,KAAK,aAAa,YAAW,OAAO,GAAEE,GAAE,QAAQ,mBAAmBG,EAAC,EAAE,QAAQC,EAAC,IAAE,IAAG;AAAC,kBAAIG,KAAEP,GAAE,QAAQ,mBAAmBG,EAAC,EAAE,QAAQC,EAAC;AAAE,cAAAJ,GAAE,QAAQ,mBAAmBG,EAAC,EAAE,OAAOI,IAAE,CAAC;AAAA,YAAC;AAAA,UAAC,OAAK;AAAC,gBAAG,CAACP,GAAE,OAAO,OAAO,OAAO,oCAAkCA,GAAE,QAAQ,mBAAmB,SAAO,GAAE;AAAC,cAAAA,GAAE,QAAQ,qBAAmB,CAAC;AAAE,kBAAIS,KAAET,GAAE,QAAQ,IAAI,MAAM,OAAO,yBAAyB,EAAE,SAAQU,KAAEV,GAAE,QAAQ,IAAI,MAAM,OAAO,oDAAoD,EAAE,SAAQQ,KAAE,SAASV,IAAE;AAAC,sBAAM,UAAU,QAAQ,KAAKA,IAAG,SAASA,IAAE;AAAC,kBAAAA,GAAE,KAAK,aAAa,YAAW,OAAO,GAAEG,GAAE,iBAAiBH,IAAEK,EAAC;AAAA,gBAAC,CAAE;AAAA,cAAC;AAAE,cAAAK,GAAEC,EAAC,GAAED,GAAEE,EAAC;AAAA,YAAC;AAAC,YAAAZ,GAAE,KAAK,aAAa,YAAW,MAAM,GAAEQ,KAAE,QAAO,WAASN,GAAE,QAAQ,mBAAmBG,EAAC,MAAIH,GAAE,QAAQ,mBAAmBG,EAAC,IAAE,CAAC,IAAGH,GAAE,QAAQ,mBAAmBG,EAAC,EAAE,KAAKC,EAAC;AAAA,UAAC;AAAC,cAAG,WAASE,IAAE;AAAC,gBAAIM,KAAEZ,GAAE,OAAO,OAAO,OAAO;AAAO,gBAAG,WAASY,GAAE,CAAAX,GAAE,YAAYH,IAAEK,IAAES,GAAE,MAAKA,GAAE,KAAK;AAAA,qBAAU,WAASZ,GAAE,OAAO,OAAO,MAAM,UAAQ,CAACA,GAAE,QAAQ,eAAc;AAAC,kBAAIa,KAAEb,GAAE,OAAO,OAAO,MAAM;AAAO,cAAAC,GAAE,YAAYH,IAAEK,IAAEU,GAAE,MAAKA,GAAE,KAAK;AAAA,YAAC;AAAA,UAAC,WAAS,WAASb,GAAE,OAAO,OAAO,OAAO,OAAO,KAAK,KAAG,WAASA,GAAE,OAAO,OAAO,MAAM,OAAO,QAAMA,GAAE,QAAQ,cAAc,CAAAC,GAAE,iBAAiBH,IAAEK,EAAC;AAAA,eAAM;AAAC,YAAAU,KAAEb,GAAE,OAAO,OAAO,MAAM;AAAO,YAAAC,GAAE,YAAYH,IAAEK,IAAEU,GAAE,MAAKA,GAAE,KAAK;AAAA,UAAC;AAAC,wBAAY,OAAOb,GAAE,OAAO,MAAM,OAAO,sBAAoBA,GAAE,OAAO,MAAM,OAAO,mBAAmBD,IAAE,KAAK,KAAI,EAAC,oBAAmBC,GAAE,QAAQ,oBAAmB,aAAYG,IAAE,gBAAeC,IAAE,GAAEJ,GAAC,CAAC,GAAED,MAAG,KAAK,IAAI,OAAO,UAAU,sBAAqB,CAACA,IAAE,KAAK,KAAI,EAAC,oBAAmBC,GAAE,QAAQ,oBAAmB,aAAYG,IAAE,gBAAeC,IAAE,GAAEJ,GAAC,CAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,CAAC;AAAE,iBAAOD,MAAG,cAAY,OAAOA,GAAE,YAAUC,KAAED,GAAE,QAAQ,IAAG,EAAC,GAAEC,GAAE,IAAEA,GAAE,QAAM,GAAE,GAAEA,GAAE,IAAEA,GAAE,SAAO,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,KAAK,GAAEE,KAAE,KAAK,SAAS,EAAC,GAAE,MAAK,GAAE,MAAK,MAAKR,IAAE,YAAW,SAAQ,UAASC,IAAE,YAAWC,IAAE,WAAU,QAAO,SAAQ,EAAC,CAAC;AAAE,UAAAC,MAAGK,GAAE,KAAK,aAAYL,EAAC,GAAEG,GAAE,QAAQ,IAAI,MAAM,IAAIE,EAAC;AAAE,cAAIC,KAAED,GAAE,KAAK;AAAE,iBAAOH,OAAII,KAAED,GAAE,KAAK,sBAAsB,IAAGA,GAAE,OAAO,GAAE,EAAC,OAAMC,GAAE,OAAM,QAAOA,GAAE,OAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAAST,IAAEC,IAAEC,IAAE;AAAC,cAAG,cAAY,OAAOF,GAAE,0BAAwBA,GAAE,cAAYC,IAAEA,GAAE,SAAO,KAAGD,GAAE,sBAAsB,KAAGE,KAAE,MAAK;AAAC,qBAAQC,KAAEF,GAAE,SAAO,GAAEE,KAAE,GAAEA,MAAG,EAAE,KAAGH,GAAE,mBAAmB,GAAEG,EAAC,KAAGD,KAAE,IAAI,QAAO,MAAKF,GAAE,cAAYC,GAAE,UAAU,GAAEE,EAAC,IAAE;AAAO,YAAAH,GAAE,cAAY;AAAA,UAAG;AAAA,QAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,YAAW,OAAM,SAASA,IAAEC,IAAE;AAAC,mBAAQC,MAAKD,GAAE,CAAAA,GAAE,eAAeC,EAAC,KAAGF,GAAE,aAAaE,IAAED,GAAEC,EAAC,CAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA7x2B,UAA+x2BuB,KAAE,WAAU;AAAC,iBAASvB,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,cAAIA,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAE,KAAK,GAAEC,KAAE,CAAC;AAAE,cAAG,MAAID,GAAE,QAAQ,OAAO,OAAO,QAAOC;AAAE,mBAAQC,KAAE,GAAEA,KAAEF,GAAE,QAAQ,OAAOA,GAAE,QAAQ,mBAAmB,EAAE,QAAOE,MAAI;AAAC,qBAAQE,KAAE,GAAEC,KAAE,GAAEA,KAAEL,GAAE,QAAQ,OAAO,QAAOK,KAAI,YAASL,GAAE,QAAQ,OAAOK,EAAC,EAAEH,EAAC,KAAG,OAAKH,GAAE,QAAQM,EAAC,MAAID,MAAGJ,GAAE,QAAQ,OAAOK,EAAC,EAAEH,EAAC;AAAG,YAAAD,GAAE,KAAKG,EAAC;AAAA,UAAC;AAAC,iBAAOH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,cAAIF,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAK,iBAAO,SAAOA,KAAE,KAAK,EAAE,OAAO,OAAO,OAAQ,SAASA,IAAEC,IAAE;AAAC,mBAAOD,KAAEC;AAAA,UAAC,GAAG,CAAC,IAAE,KAAK,EAAE,QAAQ,OAAOD,EAAC,EAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,mBAAOD,KAAEC;AAAA,UAAC,GAAG,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kCAAiC,OAAM,WAAU;AAAC,cAAID,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,CAAC;AAAE,iBAAOD,GAAE,QAAQ,aAAa,QAAS,SAASE,IAAE;AAAC,gBAAIE,KAAE,CAAC;AAAE,YAAAJ,GAAE,OAAO,OAAO,QAAS,SAASD,IAAEE,IAAE;AAAC,cAAAC,GAAE,QAAQF,GAAE,QAAQ,YAAYC,EAAC,CAAC,IAAE,MAAIG,GAAE,KAAKH,EAAC;AAAA,YAAC,CAAE;AAAE,gBAAII,KAAEL,GAAE,QAAQ,OAAO,IAAK,SAASD,IAAEC,IAAE;AAAC,qBAAM,OAAKI,GAAE,QAAQJ,EAAC,IAAEA,KAAE;AAAA,YAAE,CAAE,EAAE,OAAQ,SAASD,IAAE;AAAC,qBAAM,OAAKA;AAAA,YAAC,CAAE;AAAE,YAAAE,GAAE,KAAKF,GAAE,uBAAuBM,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEJ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,EAAE,SAAQC,KAAE,KAAK,EAAE,QAAOC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEE,KAAE,CAAC,GAAEC,KAAEN,GAAE,OAAO,SAAOC,GAAE,MAAM,UAAQA,GAAE,MAAM,KAAM,SAASD,IAAE;AAAC,mBAAO,MAAM,QAAQA,GAAE,UAAU;AAAA,UAAC,CAAE;AAAE,UAAAC,GAAE,OAAO,QAAS,SAASD,IAAEC,IAAE;AAAC,YAAAI,GAAE,KAAKJ,EAAC,GAAEE,GAAE,KAAK,IAAI;AAAA,UAAC,CAAE,GAAEF,GAAE,MAAM,QAAS,SAASD,IAAEC,IAAE;AAAC,YAAAC,GAAED,EAAC,IAAE,CAAC;AAAA,UAAC,CAAE;AAAE,cAAIO,KAAE,CAAC;AAAE,UAAAP,GAAE,MAAM,QAAS,SAASD,IAAEG,IAAE;AAAC,gBAAIM,KAAE;AAAG,gBAAGT,GAAE,YAAW;AAAC,kBAAIW,KAAE,CAAC;AAAE,oBAAM,QAAQX,GAAE,UAAU,IAAEW,KAAEX,GAAE,aAAWW,GAAE,KAAKX,GAAE,UAAU,GAAEW,GAAE,QAAS,SAASX,IAAE;AAAC,gBAAAC,GAAE,OAAO,QAAS,SAASA,IAAEO,IAAE;AAAC,sBAAGP,GAAE,SAAOD,IAAE;AAAC,wBAAIW,KAAEH;AAAE,oBAAAL,OAAIK,MAAGF,KAAE,CAACA,MAAGD,GAAE,QAAQG,EAAC,IAAE,KAAGN,GAAEC,EAAC,EAAE,KAAK,CAACA,IAAEK,EAAC,CAAC,IAAE,QAAQ,KAAK,aAAWP,GAAE,OAAK,oJAAoJ,KAAGC,GAAEM,EAAC,EAAE,KAAK,CAACA,IAAEL,EAAC,CAAC,GAAEQ,KAAER,KAAGM,KAAE,MAAG,QAAME,KAAEN,GAAE,QAAQM,EAAC,MAAIN,GAAE,OAAOM,IAAE,CAAC;AAAA,kBAAC;AAAA,gBAAC,CAAE;AAAA,cAAC,CAAE;AAAA,YAAC;AAAC,YAAAF,MAAGD,GAAE,KAAKL,EAAC;AAAA,UAAC,CAAE,GAAED,KAAEA,GAAE,IAAK,SAASF,IAAEC,IAAE;AAAC,gBAAIC,KAAE,CAAC;AAAE,mBAAOF,GAAE,QAAS,SAASA,IAAE;AAAC,cAAAG,GAAEH,GAAE,CAAC,CAAC,IAAEA,GAAE,CAAC,GAAEE,GAAE,KAAKF,GAAE,CAAC,CAAC;AAAA,YAAC,CAAE,GAAEE;AAAA,UAAC,CAAE;AAAE,mBAAQO,KAAER,GAAE,MAAM,SAAO,GAAEU,KAAE,GAAEA,KAAEH,GAAE,WAASC,KAAED,GAAEG,EAAC,GAAET,GAAEO,EAAC,IAAE,CAAC,GAAEJ,KAAGM,MAAI;AAAC,gBAAIC,KAAEP,GAAE,CAAC;AAAE,YAAAA,GAAE,MAAM,GAAEH,GAAEO,EAAC,EAAE,KAAKG,EAAC,GAAET,GAAES,EAAC,IAAEH;AAAA,UAAC;AAAC,UAAAJ,GAAE,QAAS,SAASL,IAAE;AAAC,YAAAE,GAAEO,EAAC,EAAE,KAAKT,EAAC,GAAEG,GAAEH,EAAC,IAAES;AAAA,UAAC,CAAE,GAAET,GAAE,iBAAeE,GAAE,IAAK,SAASF,IAAE;AAAC,mBAAOA;AAAA,UAAC,CAAE,GAAEA,GAAE,wBAAsBG,GAAE,IAAK,SAASH,IAAE;AAAC,mBAAOA;AAAA,UAAC,CAAE,GAAEA,GAAE,eAAe,QAAS,SAASA,IAAEE,IAAE;AAAC,YAAAF,GAAE,QAAS,SAASA,IAAE;AAAC,cAAAC,GAAE,OAAOD,EAAC,KAAG,WAASC,GAAE,OAAOD,EAAC,EAAE,UAAQC,GAAE,OAAOD,EAAC,EAAE,QAAM,mBAAmB,OAAOE,GAAE,SAAS,CAAC;AAAA,YAAE,CAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIF,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAK,iBAAO,OAAK,SAAOA,KAAE,KAAK,EAAE,OAAO,OAAO,OAAQ,SAASA,IAAE;AAAC,mBAAO,SAAOA;AAAA,UAAC,CAAE,IAAE,KAAK,EAAE,OAAO,OAAOA,EAAC,EAAE,KAAK,OAAQ,SAASA,IAAE;AAAC,mBAAO,SAAOA;AAAA,UAAC,CAAE,GAAG;AAAA,QAAM,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,EAAE,QAAQ,OAAOA,EAAC,EAAE,MAAO,SAASA,IAAEC,IAAEC,IAAE;AAAC,mBAAOF,OAAIE,GAAE,CAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEF,GAAE,MAAM;AAAE,iBAAOC,GAAE,OAAO,MAAM,0BAAwBC,KAAEF,GAAE,IAAK,SAASA,IAAEE,IAAE;AAAC,mBAAOD,GAAE,OAAO,MAAM,OAAO,UAAUD,KAAEC,GAAE,QAAQ,OAAK,CAAC;AAAA,UAAC,CAAE,IAAGC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,sBAAoBA,GAAE,QAAQ,OAAO,IAAK,SAASA,IAAE;AAAC,mBAAOA,GAAE;AAAA,UAAM,CAAE,EAAE,QAAQ,KAAK,IAAI,MAAM,MAAKA,GAAE,QAAQ,OAAO,IAAK,SAASA,IAAE;AAAC,mBAAOA,GAAE;AAAA,UAAM,CAAE,CAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAE;AAAE,iBAAOD,GAAE,QAAQ,QAAQ,KAAK,QAAS,SAASA,IAAE;AAAC,YAAAC,KAAE,KAAK,IAAIA,IAAED,EAAC;AAAA,UAAC,CAAE,GAAEA,GAAE,OAAO,QAAQ,YAAUA,GAAE,OAAO,QAAQ,SAAS,UAAQA,GAAE,OAAO,QAAQ,SAAS,QAAS,SAASA,IAAE;AAAC,YAAAC,KAAE,KAAK,IAAIA,IAAED,GAAE,IAAI;AAAA,UAAC,CAAE,GAAEC,KAAE,MAAID,GAAE,OAAO,QAAQ,MAAM,OAAK,IAAEC,KAAED,GAAE,OAAO,QAAQ,MAAM,OAAKC,MAAGD,GAAE,OAAO,QAAQ,MAAM,aAAYA,GAAE,QAAQ,QAAQ,cAAYC,IAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,eAAaA,GAAE,QAAQ,OAAO,IAAK,SAASA,IAAEC,IAAE;AAAC,gBAAIC,KAAE;AAAE,gBAAG,MAAM,QAAQF,EAAC,EAAE,UAAQG,KAAE,GAAEA,KAAEH,GAAE,QAAOG,KAAI,CAAAD,MAAGF,GAAEG,EAAC;AAAA,gBAAO,CAAAD,MAAGF;AAAE,mBAAOE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAOA,GAAE,QAAQ,OAAO,IAAK,SAASC,IAAEE,IAAE;AAAC,qBAAQC,KAAE,GAAEE,KAAE,GAAEA,KAAEL,GAAE,QAAOK,KAAI,CAAAN,GAAE,QAAQ,QAAQG,EAAC,EAAEG,EAAC,IAAER,MAAGE,GAAE,QAAQ,QAAQG,EAAC,EAAEG,EAAC,IAAEP,OAAIK,MAAGH,GAAEK,EAAC;AAAG,mBAAOF;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAIN,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,gBAAcA,GAAE,QAAQ,OAAO,IAAK,SAASC,IAAEC,IAAE;AAAC,gBAAIC,KAAE,CAAC;AAAE,gBAAG,MAAM,QAAQF,EAAC,EAAE,UAAQI,KAAE,GAAEA,KAAEJ,GAAE,QAAOI,MAAI;AAAC,kBAAIC,KAAEN,GAAE,QAAQ,oBAAoBK,EAAC,GAAEG,KAAE;AAAE,cAAAF,OAAIE,KAAE,MAAIP,GAAEI,EAAC,IAAEC,KAAGH,GAAE,KAAKK,EAAC;AAAA,YAAC;AAAA,iBAAK;AAAC,kBAAIC,KAAE,MAAIR,KAAED,GAAE,QAAQ,aAAa,OAAQ,SAASA,IAAEC,IAAE;AAAC,uBAAOD,KAAEC;AAAA,cAAC,GAAG,CAAC;AAAE,cAAAE,GAAE,KAAKM,EAAC;AAAA,YAAC;AAAC,mBAAON;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIH,IAAEC,IAAEC,IAAEC,KAAE,MAAKE,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQG,KAAE,CAAC,GAAEC,KAAE,GAAEE,KAAE,CAAC,GAAEC,KAAE,KAAGF,KAAE;AAAE,cAAGJ,GAAE,SAAO,CAAC,GAAEA,GAAE,gBAAgB,UAAQQ,KAAE,GAAEA,KAAER,GAAE,QAAQ,QAAOQ,KAAI,CAAAR,GAAE,OAAO,KAAK,KAAK,IAAIA,GAAE,QAAQQ,EAAC,IAAER,GAAE,QAAQQ,EAAC,CAAC,CAAC,GAAEH,GAAE,KAAK,CAAC;AAAA,cAAO,CAAAL,GAAE,OAAO,KAAK,KAAK,IAAIA,GAAE,OAAKA,GAAE,IAAI,CAAC;AAAE,UAAAA,GAAE,SAAO,KAAK,IAAIA,GAAE,OAAKA,GAAE,IAAI,GAAEA,GAAE,SAAO,KAAK,IAAIA,GAAE,OAAKA,GAAE,IAAI;AAAE,mBAAQS,KAAE,GAAEA,KAAET,GAAE,OAAO,QAAOS,KAAI,CAAAP,GAAE,KAAKF,GAAE,OAAOS,EAAC,IAAET,GAAE,UAAU;AAAE,cAAGL,KAAEK,GAAE,SAAOA,GAAE,WAAUN,KAAEM,GAAE,SAAOA,GAAE,WAAUJ,KAAEI,GAAE,SAAOA,GAAE,aAAYG,KAAEH,GAAE,SAAOA,GAAE,aAAW,QAAMG,KAAE,IAAGH,GAAE,SAAO,OAAO,aAAW,MAAI,KAAK,IAAIA,GAAE,IAAI,MAAIA,GAAE,UAAQ,OAAID,GAAE,QAAQ,sBAAsB,SAAO,GAAE;AAAC,gBAAIQ,KAAE,SAASb,IAAEC,IAAE;AAAC,kBAAIC,KAAEG,GAAE,OAAO,MAAMA,GAAE,QAAQ,sBAAsBJ,EAAC,CAAC,GAAEK,KAAEN,KAAE,IAAE,KAAG;AAAE,qBAAOA,KAAE,KAAK,IAAIA,EAAC,GAAEE,GAAE,gBAAcF,KAAEG,GAAE,WAAWD,GAAE,SAAQF,EAAC,IAAG,CAACM,KAAEN,KAAEQ,GAAEP,EAAC;AAAA,YAAC;AAAE,gBAAGK,GAAE,iBAAgB;AAAC,cAAAK,KAAE,CAAC;AAAE,uBAAQK,KAAE,GAAEA,KAAER,GAAE,QAAOQ,KAAI,CAAAL,GAAE,KAAKE,GAAEP,GAAE,QAAQU,EAAC,GAAEA,EAAC,CAAC;AAAA,YAAC,MAAK,EAACL,KAAE,CAAC,GAAG,KAAKE,GAAEP,GAAE,MAAK,CAAC,CAAC,GAAEA,GAAE,SAAO,OAAO,aAAW,MAAI,KAAK,IAAIA,GAAE,IAAI,MAAIM,KAAE,CAACN,GAAE,OAAKN,IAAEU,KAAEJ,GAAE,OAAKL;AAAA,UAAE,MAAK,EAACU,KAAE,CAAC,GAAG,KAAK,CAAC,GAAEC,KAAE,GAAEF,KAAE;AAAE,iBAAM,EAAC,QAAOF,IAAE,gBAAeR,IAAE,QAAOS,IAAE,QAAOR,IAAE,gBAAeC,IAAE,mBAAkBU,IAAE,WAAUD,IAAE,WAAUD,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASV,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,iBAAOA,GAAE,QAAQ,YAAUF,GAAE,IAAK,SAASA,IAAEG,IAAE;AAAC,gBAAIE,KAAEH,GAAE,QAAQ,sBAAsBC,EAAC;AAAE,mBAAOD,GAAE,OAAO,MAAMG,EAAC,KAAGH,GAAE,OAAO,MAAMG,EAAC,EAAE,cAAYL,GAAE,IAAK,SAASA,IAAE;AAAC,qBAAO,SAAOA,KAAE,OAAKC,GAAE,UAAUC,GAAE,OAAO,MAAMG,EAAC,EAAE,SAAQL,IAAEG,EAAC;AAAA,YAAC,CAAE,IAAEH;AAAA,UAAC,CAAE,GAAEE,GAAE,QAAQ,kBAAgBF,KAAEE,GAAE,QAAQ;AAAA,QAAS,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAID,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAGD,MAAG,EAAE,QAAO;AAAE,cAAIE,KAAE,KAAK,GAAEE,KAAE,MAAIF,GAAE,QAAQ,QAAQD,EAAC,IAAE,KAAG,KAAK,WAAWF,IAAEG,GAAE,QAAQ,QAAQD,EAAC,CAAC,GAAEI,MAAG,MAAIH,GAAE,QAAQ,QAAQD,EAAC,IAAE,IAAE,KAAK,WAAWF,IAAEG,GAAE,QAAQ,QAAQD,EAAC,CAAC,KAAGG;AAAE,iBAAOJ,KAAE,IAAEA,KAAEK,MAAG,KAAK,WAAWN,IAAEC,EAAC,IAAEI,MAAGC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,KAAK,EAAE;AAAQ,iBAAOA,GAAE,YAAUH,GAAE,MAAM,GAAEG,GAAE,YAAUA,GAAE,OAAO,IAAK,SAASH,IAAEK,IAAE;AAAC,gBAAIC,KAAEJ,GAAE,QAAQ,sBAAsBG,EAAC;AAAE,gBAAGH,GAAE,OAAO,MAAMI,EAAC,KAAGL,GAAE,EAAE,OAAO,MAAMK,EAAC,EAAE,aAAY;AAAC,kBAAIE,IAAEC,KAAE,CAAC,OAAO,WAAUE,KAAE,OAAO;AAAU,qBAAOR,GAAE,UAAU,QAAS,SAASH,IAAEC,IAAE;AAAC,gBAAAD,GAAE,QAAS,SAASA,IAAE;AAAC,kBAAAE,GAAE,OAAO,MAAMD,EAAC,KAAGC,GAAE,OAAO,MAAMD,EAAC,EAAE,gBAAcQ,KAAE,KAAK,IAAIT,IAAES,EAAC,GAAEE,KAAE,KAAK,IAAIX,IAAEW,EAAC;AAAA,gBAAE,CAAE;AAAA,cAAC,CAAE,GAAEH,KAAE,KAAK,IAAIL,GAAE,OAAOE,EAAC,GAAE,KAAK,IAAIM,KAAEF,EAAC,IAAEN,GAAE,OAAOE,EAAC,CAAC,GAAEF,GAAE,UAAUE,EAAC,IAAEG,KAAEL,GAAE,YAAWK;AAAA,YAAC;AAAA,UAAC,CAAE,GAAEL,GAAE,kBAAgBH,GAAE,MAAM,IAAEG,GAAE;AAAA,QAAS,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK,GAAEC,KAAE,CAAC;AAAE,iBAAON,GAAE,OAAO,SAAO,KAAGC,GAAE,QAAS,SAASA,IAAE;AAAC,gBAAIO,KAAE,CAAC,GAAEC,KAAE,CAAC;AAAE,YAAAT,GAAE,EAAE,QAAS,SAASE,IAAEC,IAAE;AAAC,cAAAE,GAAE,OAAO,OAAOH,EAAC,EAAE,UAAQD,OAAIO,GAAE,KAAKR,GAAE,OAAOG,EAAC,CAAC,GAAEM,GAAE,KAAKP,EAAC;AAAA,YAAE,CAAE,GAAEM,GAAE,SAAO,KAAGF,GAAE,KAAKH,GAAE,KAAKK,IAAEN,IAAEO,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEH;AAAA,QAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAASN,IAAEC,IAAE;AAAC,cAAIC,KAAE,OAAGC,KAAE,GAAEE,KAAE;AAAE,iBAAO,WAASJ,OAAIA,KAAE,SAAQD,GAAE,UAAQ,WAASA,GAAE,CAAC,EAAE,QAAMA,GAAE,QAAS,SAASA,IAAE;AAAC,sBAAQA,GAAE,QAAM,aAAWA,GAAE,QAAM,kBAAgBA,GAAE,QAAM,cAAYA,GAAE,QAAMG,MAAI,WAASH,GAAE,QAAMA,GAAE,SAAOC,MAAGI;AAAA,UAAG,CAAE,GAAEA,KAAE,MAAIH,KAAE,OAAI,EAAC,eAAcC,IAAE,aAAYD,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASF,IAAEC,IAAEC,IAAE;AAAC,cAAIC,IAAEE,IAAEC,IAAEE,IAAEC,IAAEE;AAAE,WAAC,UAAQR,KAAEF,OAAI,WAASE,MAAGA,GAAE,UAAQF,KAAED,GAAE,YAAYC,IAAEC,EAAC,IAAG,UAAQG,KAAEJ,OAAI,WAASI,MAAGA,GAAE,iBAAeJ,GAAE,YAAY,UAAQA,KAAED,GAAE,uBAAuBC,EAAC,IAAG,UAAQK,KAAEL,OAAI,WAASK,MAAG,UAAQE,KAAEF,GAAE,gBAAc,WAASE,MAAGA,GAAE,UAAQP,KAAED,GAAE,uBAAuBC,EAAC,IAAG,UAAQQ,KAAER,OAAI,WAASQ,MAAG,UAAQE,KAAEF,GAAE,gBAAc,WAASE,MAAGA,GAAE,WAASV,KAAED,GAAE,uBAAuBC,EAAC;AAAI,iBAAOA;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAj5lC,UAAm5lCwB,KAAE,WAAU;AAAC,iBAASxB,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,UAAQA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,KAAK;AAAE,cAAG,eAAaF,GAAE,MAAM,aAAY;AAAC,gBAAIG,KAAE,SAAOF,KAAEA,KAAE,GAAEI,KAAEH,GAAE,QAAQ,IAAI,OAAO,cAAc,yEAAyE,OAAOC,IAAE,IAAI,CAAC;AAAE,gBAAG,SAAOE,IAAE;AAAC,kBAAIC,KAAED,GAAE,sBAAsB;AAAE,cAAAA,GAAE,aAAa,KAAI,WAAWA,GAAE,aAAa,GAAG,CAAC,IAAEC,GAAE,SAAO,CAAC;AAAE,kBAAIE,KAAE,UAAQR,GAAE,MAAM,WAASM,GAAE,QAAM,CAACA,GAAE;AAAM,cAAAD,GAAE,aAAa,KAAI,WAAWA,GAAE,aAAa,GAAG,CAAC,IAAEG,EAAC;AAAE,kBAAIC,KAAE,KAAK,QAAQ,SAAS,mBAAmBJ,EAAC,GAAEM,KAAEF,GAAE,GAAEG,KAAEH,GAAE;AAAE,cAAAJ,GAAE,aAAa,aAAY,cAAc,OAAOM,IAAE,GAAG,EAAE,OAAOC,IAAE,GAAG,CAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASZ,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAG,CAACF,MAAG,CAACC,GAAE,MAAM,QAAM,CAAC,OAAOA,GAAE,MAAM,IAAI,EAAE,KAAK,EAAE,QAAO;AAAK,cAAIE,KAAED,GAAE,QAAQ,IAAI,OAAO,cAAc,kBAAkB,EAAE,sBAAsB,GAAEG,KAAEL,GAAE,sBAAsB,GAAEM,KAAEL,GAAE,MAAM,MAAM,SAAQO,KAAEF,GAAE,MAAKG,KAAEH,GAAE,OAAMK,KAAEL,GAAE,KAAIM,KAAEN,GAAE;AAAO,cAAG,eAAaL,GAAE,MAAM,aAAY;AAAC,gBAAIS,KAAE,CAACF,IAAEC,IAAEE,IAAEC,EAAC;AAAE,YAAAD,KAAED,GAAE,CAAC,GAAEE,KAAEF,GAAE,CAAC,GAAEF,KAAEE,GAAE,CAAC,GAAED,KAAEC,GAAE,CAAC;AAAA,UAAC;AAAC,cAAII,KAAET,GAAE,OAAKF,GAAE,OAAKK,IAAEO,KAAEV,GAAE,MAAIF,GAAE,MAAIQ,IAAEE,KAAE,KAAK,QAAQ,SAAS,SAASC,KAAEZ,GAAE,QAAQ,sBAAqBa,IAAEV,GAAE,QAAMG,KAAEC,IAAEJ,GAAE,SAAOM,KAAEC,IAAEX,GAAE,MAAM,cAAaA,GAAE,MAAM,MAAM,YAAW,GAAEA,GAAE,MAAM,aAAYA,GAAE,MAAM,aAAY,CAAC;AAAE,iBAAOA,GAAE,MAAIY,GAAE,KAAK,UAAU,IAAIZ,GAAE,EAAE,GAAEY;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,cAAIb,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,SAASA,IAAEC,IAAEE,IAAE;AAAC,gBAAIC,KAAEL,GAAE,QAAQ,IAAI,OAAO,cAAc,eAAe,OAAOI,IAAE,2BAA2B,EAAE,OAAOA,IAAE,yBAAyB,EAAE,OAAOF,IAAE,IAAI,CAAC;AAAE,gBAAGG,IAAE;AAAC,kBAAIE,KAAEF,GAAE,YAAWG,KAAET,GAAE,oBAAoBM,IAAEJ,EAAC;AAAE,cAAAO,OAAID,GAAE,aAAaC,GAAE,MAAKH,EAAC,GAAEJ,GAAE,MAAM,cAAYO,GAAE,KAAK,iBAAiB,cAAaP,GAAE,MAAM,WAAW,KAAKF,IAAEE,EAAC,CAAC,GAAEA,GAAE,MAAM,cAAYO,GAAE,KAAK,iBAAiB,cAAaP,GAAE,MAAM,WAAW,KAAKF,IAAEE,EAAC,CAAC,GAAEA,GAAE,MAAM,SAAOO,GAAE,KAAK,iBAAiB,SAAQP,GAAE,MAAM,MAAM,KAAKF,IAAEE,EAAC,CAAC;AAAA,YAAE;AAAA,UAAC;AAAE,UAAAD,GAAE,OAAO,YAAY,MAAM,QAAS,SAASD,IAAEC,IAAE;AAAC,mBAAOC,GAAEF,IAAEC,IAAE,OAAO;AAAA,UAAC,CAAE,GAAEA,GAAE,OAAO,YAAY,MAAM,QAAS,SAASD,IAAEC,IAAE;AAAC,mBAAOC,GAAEF,IAAEC,IAAE,OAAO;AAAA,UAAC,CAAE,GAAEA,GAAE,OAAO,YAAY,OAAO,QAAS,SAASD,IAAEC,IAAE;AAAC,mBAAOC,GAAEF,IAAEC,IAAE,OAAO;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,IAAEC,KAAE,KAAK,GAAEE,KAAE,SAAOL,KAAEC,GAAE,IAAEA,GAAE,IAAGK,KAAE;AAAG,cAAG,KAAK,QAAQ,YAAW;AAAC,gBAAIE,KAAEL,GAAE,OAAO,MAAM,wBAAsBA,GAAE,QAAQ,iBAAeA,GAAE,QAAQ,QAAOM,KAAED,GAAE,QAAQH,EAAC,GAAEM,KAAER,GAAE,QAAQ,IAAI,OAAO,cAAc,4CAA4C,OAAOM,KAAE,GAAE,GAAG,CAAC;AAAE,YAAAP,KAAES,KAAE,WAAWA,GAAE,aAAa,GAAG,CAAC,KAAGR,GAAE,QAAQ,aAAWK,GAAE,SAAO,MAAIC,KAAE,KAAGN,GAAE,QAAQ,WAAU,WAASF,GAAE,eAAaE,GAAE,QAAQ,cAAYD,MAAGC,GAAE,QAAQ,YAAU,KAAGA,GAAE,QAAQ,OAAO,SAAO,KAAGA,GAAE,QAAQ,YAAUF,GAAE;AAAA,UAAY,OAAK;AAAC,gBAAIW,IAAEF,KAAEP,GAAE,QAAQ,eAAeF,GAAE,UAAU,EAAE,CAAC,GAAEa,KAAEX,GAAE,OAAO,MAAMF,GAAE,UAAU,EAAE,cAAY,IAAIsB,GAAE,KAAK,QAAQ,GAAG,EAAE,UAAUpB,GAAE,OAAO,MAAMF,GAAE,UAAU,EAAE,SAAQI,IAAEK,EAAC,IAAEP,GAAE,QAAQ,UAAUO,EAAC,KAAGL,KAAEF,GAAE,QAAQ,QAAQO,EAAC,MAAIP,GAAE,QAAQ,OAAOO,EAAC,IAAEP,GAAE,QAAQ;AAAY,YAAAD,KAAEC,GAAE,QAAQ,aAAW,KAAK,IAAI,KAAK,IAAIW,IAAE,CAAC,GAAEX,GAAE,QAAQ,UAAU,GAAEG,KAAEQ,KAAEX,GAAE,QAAQ,cAAYW,KAAE,GAAE,CAACb,GAAE,UAAQ,WAASA,GAAE,KAAG,SAAOA,GAAE,MAAIC,KAAE,IAAG,UAAQU,KAAET,GAAE,OAAO,MAAMF,GAAE,UAAU,MAAI,WAASW,MAAGA,GAAE,aAAWV,KAAEY;AAAA,UAAE;AAAC,iBAAM,YAAU,OAAOT,MAAGA,GAAE,SAAS,IAAI,MAAIH,KAAE,WAAWG,EAAC,IAAG,EAAC,IAAGH,IAAE,SAAQI,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASN,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,SAAOH,KAAEC,GAAE,IAAEA,GAAE,IAAGI,KAAE,KAAK,QAAQ,aAAWH,GAAE,QAAQ,OAAKA,GAAE,QAAQ,MAAKI,KAAE,KAAK,QAAQ,aAAWJ,GAAE,QAAQ,OAAKA,GAAE,QAAQ,MAAKM,KAAE,KAAK,QAAQ,aAAWN,GAAE,QAAQ,OAAO,CAAC,IAAEA,GAAE,QAAQ,QAAOO,KAAE,OAAGE,KAAE,KAAK,QAAQ,wBAAsBL,KAAEH,OAAIK,KAAEN,GAAE,QAAQ,cAAYC,KAAEE,OAAIG,KAAEN,GAAE,QAAQ;AAAW,iBAAM,eAAaA,GAAE,OAAO,MAAM,QAAM,CAACA,GAAE,OAAO,MAAM,yBAAuB,KAAK,QAAQ,cAAYA,GAAE,QAAQ,sBAAoBA,GAAE,OAAO,MAAM,UAAU,YAAUS,KAAE,KAAK,WAAWR,EAAC,IAAG,YAAU,OAAOA,MAAGA,GAAE,SAAS,IAAI,MAAIQ,KAAE,WAAWR,EAAC,IAAG,QAAMA,MAAGF,GAAE,WAASU,KAAET,GAAE,QAAQ,YAAW,WAASD,GAAE,eAAaC,GAAE,QAAQ,YAAU,CAAC,KAAK,QAAQ,eAAaS,MAAGT,GAAE,QAAQ,WAAS,KAAGA,GAAE,QAAQ,OAAO,SAAO,KAAGA,GAAE,QAAQ,WAASD,GAAE,cAAaU,KAAET,GAAE,QAAQ,aAAWS,KAAET,GAAE,QAAQ,WAAUO,KAAE,QAAIE,KAAE,MAAIA,KAAE,GAAEF,KAAE,OAAI,EAAC,GAAEE,IAAE,SAAQF,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAST,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEF;AAAE,UAAAC,GAAE,OAAO,MAAM,yBAAuBA,GAAE,QAAQ,eAAe,WAASD,KAAEC,GAAE,QAAQ,eAAe,QAAQD,EAAC,IAAE;AAAG,cAAIG,KAAEF,GAAE,QAAQ,OAAO,IAAK,SAASD,IAAE;AAAC,mBAAO,MAAM,QAAQA,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA;AAAA,UAAC,CAAE,EAAE,QAAQA,EAAC,GAAEK,KAAEJ,GAAE,QAAQ,IAAI,OAAO,cAAc,4CAA4C,OAAOE,KAAE,GAAE,GAAG,CAAC;AAAE,iBAAOE,OAAIH,KAAE,WAAWG,GAAE,aAAa,GAAG,CAAC,IAAGH;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAAr0uC,UAAu0uCyB,KAAE,WAAU;AAAC,iBAASzB,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,UAAQA,IAAE,KAAK,aAAW,KAAK,QAAQ,YAAW,KAAK,UAAQ,IAAIuB,GAAE,KAAK,OAAO;AAAA,QAAC;AAAC,eAAOnB,GAAEL,IAAE,CAAC,EAAC,KAAI,sBAAqB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,IAAEE,KAAE,KAAK,GAAEC,KAAE,KAAK,QAAQ,QAAQ,MAAKN,EAAC,GAAEQ,KAAEF,GAAE,GAAEG,KAAEH,GAAE,SAAQK,KAAE,MAAGC,KAAEZ,GAAE,MAAM,MAAKU,KAAEV,GAAE;AAAgB,cAAGmB,GAAE,SAASX,EAAC,GAAE;AAAC,gBAAG,SAAOR,GAAE,MAAI,WAASA,GAAE,IAAG;AAAC,kBAAG,CAACS,IAAE;AAAC,oBAAIK,KAAE,KAAK,QAAQ,SAAS,SAASN,KAAER,GAAE,SAAQ,IAAEA,GAAE,SAAQQ,KAAER,GAAE,SAAQK,GAAE,QAAQ,aAAWL,GAAE,SAAQA,GAAE,aAAYU,IAAEV,GAAE,WAAW;AAAE,gBAAAC,GAAE,YAAYa,GAAE,IAAI,GAAEd,GAAE,MAAIc,GAAE,KAAK,UAAU,IAAId,GAAE,EAAE;AAAA,cAAC;AAAA,YAAC,OAAK;AAAC,kBAAIe,KAAE,KAAK,QAAQ,QAAQ,MAAKf,EAAC;AAAE,kBAAGG,KAAEY,GAAE,GAAEJ,KAAEI,GAAE,SAAQ,CAACN,MAAG,CAACE,IAAE;AAAC,oBAAGR,KAAEK,IAAE;AAAC,sBAAIK,KAAEL;AAAE,kBAAAA,KAAEL,IAAEA,KAAEU;AAAA,gBAAC;AAAC,oBAAIG,KAAE,KAAK,QAAQ,SAAS,SAASR,KAAER,GAAE,SAAQ,IAAEA,GAAE,SAAQG,KAAEK,IAAEH,GAAE,QAAQ,aAAWL,GAAE,SAAQ,GAAEA,GAAE,WAAUA,GAAE,SAAQ,GAAEA,GAAE,aAAYU,EAAC;AAAE,gBAAAM,GAAE,KAAK,UAAU,IAAI,4BAA4B,GAAEA,GAAE,KAAK,aAAY,oBAAoB,OAAOX,GAAE,QAAQ,MAAK,GAAG,CAAC,GAAEJ,GAAE,YAAYe,GAAE,IAAI,GAAEhB,GAAE,MAAIgB,GAAE,KAAK,UAAU,IAAIhB,GAAE,EAAE;AAAA,cAAC;AAAA,YAAC;AAAC,gBAAG,CAACS,MAAG,CAACE,IAAE;AAAC,kBAAIM,KAAE,KAAK,QAAQ,SAAS,aAAaL,IAAE,WAAWZ,GAAE,MAAM,MAAM,QAAQ,CAAC,GAAEI,KAAE,UAAQJ,GAAE,MAAM,WAAS,IAAE,aAAWA,GAAE,MAAM,WAASK,GAAE,QAAQ,aAAW,KAAG,eAAaL,GAAE,MAAM,cAAYiB,GAAE,QAAM,IAAE,KAAGZ,GAAE,QAAQ,YAAWa,KAAE,KAAK,QAAQ,SAAS,SAAS,EAAC,GAAEV,KAAER,GAAE,MAAM,SAAQ,GAAEI,KAAEJ,GAAE,MAAM,WAAS,eAAaA,GAAE,MAAM,cAAY,UAAQA,GAAE,MAAM,WAASiB,GAAE,QAAM,IAAE,KAAG,CAACA,GAAE,QAAM,IAAE,IAAG,MAAKL,IAAE,YAAWZ,GAAE,MAAM,YAAW,UAASA,GAAE,MAAM,MAAM,UAAS,YAAWA,GAAE,MAAM,MAAM,YAAW,YAAWA,GAAE,MAAM,MAAM,YAAW,WAAUA,GAAE,MAAM,MAAM,OAAM,UAAS,qCAAqC,OAAOA,GAAE,MAAM,MAAM,UAAS,GAAG,EAAE,OAAOA,GAAE,KAAGA,GAAE,KAAG,EAAE,EAAC,CAAC;AAAE,cAAAkB,GAAE,KAAK,EAAC,KAAIhB,GAAC,CAAC,GAAED,GAAE,YAAYiB,GAAE,IAAI,GAAE,KAAK,QAAQ,QAAQ,gBAAgBlB,IAAEE,EAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIF,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,KAAK,QAAQ,SAAS,MAAM,EAAC,OAAM,+BAA8B,CAAC;AAAE,iBAAOD,GAAE,OAAO,YAAY,MAAM,IAAK,SAASA,IAAEE,IAAE;AAAC,YAAAH,GAAE,mBAAmBC,IAAEC,GAAE,MAAKC,EAAC;AAAA,UAAC,CAAE,GAAED;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA9tyC,UAAguyC0B,KAAE,WAAU;AAAC,iBAAS1B,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,WAAS,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,EAAE,GAAE,KAAK,WAAS,CAAC,GAAE,GAAE,GAAE,GAAE,EAAE,GAAE,KAAK,gBAAc,CAAC,GAAE,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,eAAc,OAAM,SAASA,IAAE;AAAC,iBAAM,YAAU,OAAOA,MAAG,CAAC,MAAM,KAAK,UAAUA,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,MAAMA,EAAC,IAAE,KAAK,EAAE,OAAO,MAAM,OAAO,cAAY,IAAI,KAAK,IAAI,KAAKA,EAAC,EAAE,YAAY,EAAE,OAAO,GAAE,EAAE,CAAC,EAAE,QAAQ,IAAE,IAAI,KAAKA,EAAC,EAAE,QAAQ,IAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,EAAE,OAAO,MAAM,OAAO,cAAY,IAAI,KAAK,IAAI,KAAKA,EAAC,EAAE,YAAY,CAAC,IAAE,IAAI,KAAKA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,MAAMD,EAAC;AAAE,cAAG,CAAC,MAAMC,EAAC,EAAE,QAAO,KAAK,aAAaD,EAAC;AAAE,cAAIE,KAAE,KAAK,MAAMF,GAAE,QAAQ,MAAK,GAAG,EAAE,QAAQ,YAAW,GAAG,CAAC;AAAE,iBAAOE,KAAE,KAAK,aAAaA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASF,IAAE;AAAC,iBAAO,KAAK,MAAMA,GAAE,QAAQ,MAAK,GAAG,EAAE,QAAQ,YAAW,GAAG,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,QAAQ,QAAOC,KAAE,KAAK,EAAE,OAAO,MAAM,OAAO,aAAYE,KAAE,CAAC,IAAI,EAAE,OAAOY,GAAEf,GAAE,MAAM,CAAC,GAAEI,KAAE,CAAC,GAAM,EAAE,OAAOW,GAAEf,GAAE,WAAW,CAAC,GAAEM,KAAE,CAAC,GAAM,EAAE,OAAOS,GAAEf,GAAE,IAAI,CAAC,GAAEO,KAAE,CAAC,GAAM,EAAE,OAAOQ,GAAEf,GAAE,SAAS,CAAC;AAAE,mBAASS,GAAEX,IAAEC,IAAE;AAAC,gBAAIC,KAAEF,KAAE;AAAG,iBAAIC,KAAEA,MAAG,GAAEC,GAAE,SAAOD,KAAG,CAAAC,KAAE,MAAIA;AAAE,mBAAOA;AAAA,UAAC;AAAC,cAAIU,KAAET,KAAEH,GAAE,eAAe,IAAEA,GAAE,YAAY;AAAE,UAAAC,MAAGA,MAAGA,KAAEA,GAAE,QAAQ,mBAAkB,OAAKW,EAAC,GAAG,QAAQ,gBAAe,OAAKA,GAAE,SAAS,EAAE,OAAO,GAAE,CAAC,CAAC,GAAG,QAAQ,eAAc,OAAKA,EAAC;AAAE,cAAIF,MAAGP,KAAEH,GAAE,YAAY,IAAEA,GAAE,SAAS,KAAG;AAAE,UAAAC,MAAGA,MAAGA,MAAGA,KAAEA,GAAE,QAAQ,mBAAkB,OAAKI,GAAE,CAAC,CAAC,GAAG,QAAQ,iBAAgB,OAAKC,GAAE,CAAC,CAAC,GAAG,QAAQ,gBAAe,OAAKK,GAAED,EAAC,CAAC,GAAG,QAAQ,eAAc,OAAKA,EAAC;AAAE,cAAII,KAAEX,KAAEH,GAAE,WAAW,IAAEA,GAAE,QAAQ;AAAE,UAAAC,MAAGA,MAAGA,MAAGA,KAAEA,GAAE,QAAQ,mBAAkB,OAAKO,GAAE,CAAC,CAAC,GAAG,QAAQ,iBAAgB,OAAKC,GAAE,CAAC,CAAC,GAAG,QAAQ,gBAAe,OAAKE,GAAEG,EAAC,CAAC,GAAG,QAAQ,eAAc,OAAKA,EAAC;AAAE,cAAIC,KAAEZ,KAAEH,GAAE,YAAY,IAAEA,GAAE,SAAS,GAAEa,KAAEE,KAAE,KAAGA,KAAE,KAAG,MAAIA,KAAE,KAAGA;AAAE,UAAAd,MAAGA,MAAGA,MAAGA,KAAEA,GAAE,QAAQ,iBAAgB,OAAKU,GAAEI,EAAC,CAAC,GAAG,QAAQ,eAAc,OAAKA,EAAC,GAAG,QAAQ,iBAAgB,OAAKJ,GAAEE,EAAC,CAAC,GAAG,QAAQ,eAAc,OAAKA,EAAC;AAAE,cAAIG,KAAEb,KAAEH,GAAE,cAAc,IAAEA,GAAE,WAAW;AAAE,UAAAC,MAAGA,KAAEA,GAAE,QAAQ,iBAAgB,OAAKU,GAAEK,EAAC,CAAC,GAAG,QAAQ,eAAc,OAAKA,EAAC;AAAE,cAAIZ,KAAED,KAAEH,GAAE,cAAc,IAAEA,GAAE,WAAW;AAAE,UAAAC,MAAGA,KAAEA,GAAE,QAAQ,iBAAgB,OAAKU,GAAEP,EAAC,CAAC,GAAG,QAAQ,eAAc,OAAKA,EAAC;AAAE,cAAIc,KAAEf,KAAEH,GAAE,mBAAmB,IAAEA,GAAE,gBAAgB;AAAE,UAAAC,KAAEA,GAAE,QAAQ,kBAAiB,OAAKU,GAAEO,IAAE,CAAC,CAAC,GAAEA,KAAE,KAAK,MAAMA,KAAE,EAAE,GAAEjB,KAAEA,GAAE,QAAQ,gBAAe,OAAKU,GAAEO,EAAC,CAAC,GAAEA,KAAE,KAAK,MAAMA,KAAE,EAAE;AAAE,cAAIX,KAAEQ,KAAE,KAAG,OAAK;AAAK,UAAAd,MAAGA,MAAGA,KAAEA,GAAE,QAAQ,eAAc,OAAKiB,EAAC,GAAG,QAAQ,iBAAgB,OAAKX,EAAC,GAAG,QAAQ,eAAc,OAAKA,GAAE,OAAO,CAAC,CAAC;AAAE,cAAIY,KAAEZ,GAAE,YAAY;AAAE,UAAAN,MAAGA,KAAEA,GAAE,QAAQ,iBAAgB,OAAKkB,EAAC,GAAG,QAAQ,eAAc,OAAKA,GAAE,OAAO,CAAC,CAAC;AAAE,cAAIC,KAAE,CAACpB,GAAE,kBAAkB,GAAEqB,KAAElB,MAAG,CAACiB,KAAE,MAAIA,KAAE,IAAE,MAAI;AAAI,cAAG,CAACjB,IAAE;AAAC,gBAAImB,MAAGF,KAAE,KAAK,IAAIA,EAAC,KAAG;AAAG,YAAAC,MAAGV,GAAE,KAAK,MAAMS,KAAE,EAAE,CAAC,IAAE,MAAIT,GAAEW,EAAC;AAAA,UAAC;AAAC,UAAArB,KAAEA,GAAE,QAAQ,eAAc,OAAKoB,EAAC;AAAE,cAAIE,MAAGpB,KAAEH,GAAE,UAAU,IAAEA,GAAE,OAAO,KAAG;AAAE,iBAAOC,MAAGA,MAAGA,MAAGA,MAAGA,KAAEA,GAAE,QAAQ,IAAI,OAAOO,GAAE,CAAC,GAAE,GAAG,GAAEA,GAAEe,EAAC,CAAC,GAAG,QAAQ,IAAI,OAAOd,GAAE,CAAC,GAAE,GAAG,GAAEA,GAAEc,EAAC,CAAC,GAAG,QAAQ,IAAI,OAAOlB,GAAE,CAAC,GAAE,GAAG,GAAEA,GAAEK,EAAC,CAAC,GAAG,QAAQ,IAAI,OAAOJ,GAAE,CAAC,GAAE,GAAG,GAAEA,GAAEI,EAAC,CAAC,GAAG,QAAQ,UAAS,IAAI;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASV,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,qBAASA,GAAE,OAAO,MAAM,QAAMH,KAAEG,GAAE,OAAO,MAAM,MAAK,WAASA,GAAE,OAAO,MAAM,QAAMF,KAAEE,GAAE,OAAO,MAAM;AAAK,cAAIE,KAAE,KAAK,QAAQL,EAAC,GAAEM,KAAE,KAAK,QAAQL,EAAC,GAAEO,KAAE,KAAK,WAAWH,IAAE,yBAAyB,EAAE,MAAM,GAAG,GAAEI,KAAE,KAAK,WAAWH,IAAE,yBAAyB,EAAE,MAAM,GAAG;AAAE,iBAAM,EAAC,gBAAe,SAASE,GAAE,CAAC,GAAE,EAAE,GAAE,gBAAe,SAASC,GAAE,CAAC,GAAE,EAAE,GAAE,WAAU,SAASD,GAAE,CAAC,GAAE,EAAE,GAAE,WAAU,SAASC,GAAE,CAAC,GAAE,EAAE,GAAE,WAAU,SAASD,GAAE,CAAC,GAAE,EAAE,GAAE,WAAU,SAASC,GAAE,CAAC,GAAE,EAAE,GAAE,SAAQ,SAASD,GAAE,CAAC,GAAE,EAAE,GAAE,SAAQ,SAASC,GAAE,CAAC,GAAE,EAAE,GAAE,SAAQ,SAASD,GAAE,CAAC,GAAE,EAAE,GAAE,SAAQ,SAASC,GAAE,CAAC,GAAE,EAAE,GAAE,UAAS,SAASD,GAAE,CAAC,GAAE,EAAE,IAAE,GAAE,UAAS,SAASC,GAAE,CAAC,GAAE,EAAE,IAAE,GAAE,SAAQ,SAASD,GAAE,CAAC,GAAE,EAAE,GAAE,SAAQ,SAASC,GAAE,CAAC,GAAE,EAAE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAST,IAAE;AAAC,iBAAOA,KAAE,KAAG,KAAGA,KAAE,OAAK,KAAGA,KAAE,OAAK;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,sBAAsBF,IAAEC,EAAC,IAAEC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE;AAAI,iBAAO,KAAK,WAAWD,EAAC,MAAIC,KAAE,MAAKA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAASD,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,cAAcF,EAAC,IAAEC;AAAE,iBAAOD,KAAE,KAAG,KAAK,WAAW,KAAGE,MAAIA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE;AAAG,kBAAOF,KAAEmB,GAAE,SAASnB,EAAC,GAAE,MAAG;AAAA,YAAC,KAAK,KAAK,SAAS,QAAQA,EAAC,IAAE;AAAG,oBAAIA,OAAIE,KAAE,KAAK,WAAWD,EAAC,IAAE,KAAG;AAAI;AAAA,YAAM,KAAK,KAAK,SAAS,QAAQD,EAAC,IAAE;AAAA,YAAG;AAAQ,cAAAE,KAAE;AAAA,UAAE;AAAC,iBAAOA;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA776C,UAA+76C2B,KAAE,WAAU;AAAC,iBAAS3B,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,mBAAiB;AAAA,QAAQ;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK;AAAE,cAAG,eAAaA,GAAE,OAAO,MAAM,QAAM,WAASA,GAAE,OAAO,MAAM,OAAO,aAAW,WAASA,GAAE,OAAO,QAAQ,EAAE,WAAU;AAAC,gBAAIC,KAAE,IAAIoB,GAAE,KAAK,GAAG;AAAE,mBAAOpB,GAAE,WAAWA,GAAE,QAAQL,EAAC,GAAEI,GAAE,OAAO,QAAQ,EAAE,MAAM;AAAA,UAAC;AAAC,iBAAOL,GAAEC,IAAEC,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAASH,IAAE;AAAC,iBAAO,MAAM,QAAQA,EAAC,IAAEA,GAAE,IAAK,SAASA,IAAE;AAAC,mBAAOA;AAAA,UAAC,CAAE,IAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAGgB,GAAE,SAASnB,EAAC,EAAE,KAAG,MAAIG,GAAE,QAAQ,cAAc,CAAAH,KAAEA,GAAE,QAAQ,WAASC,GAAE,kBAAgBA,GAAE,kBAAgBE,GAAE,QAAQ,aAAa;AAAA,eAAM;AAAC,gBAAIE,KAAEL,GAAE,QAAQ,CAAC;AAAE,YAAAA,KAAEA,MAAGK,KAAEA,KAAEL,GAAE,QAAQ,CAAC;AAAA,UAAC;AAAC,iBAAOA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK;AAAE,iBAAOA,GAAE,QAAQ,wBAAsB,SAASA,IAAE;AAAC,mBAAOD,GAAE,wBAAwBC,EAAC;AAAA,UAAC,GAAEA,GAAE,QAAQ,iBAAe,SAASA,IAAE;AAAC,mBAAOD,GAAE,wBAAwBC,EAAC;AAAA,UAAC,GAAEA,GAAE,QAAQ,eAAa,SAASD,IAAE;AAAC,mBAAOA;AAAA,UAAC,GAAEC,GAAE,QAAQ,kBAAgB,SAASA,IAAE;AAAC,mBAAOD,GAAE,wBAAwBC,EAAC;AAAA,UAAC,GAAE,WAASA,GAAE,OAAO,MAAM,OAAO,YAAUA,GAAE,QAAQ,kBAAgBA,GAAE,OAAO,MAAM,OAAO,YAAUA,GAAE,QAAQ,kBAAgB,SAASD,IAAE;AAAC,gBAAGmB,GAAE,SAASnB,EAAC,GAAE;AAAC,kBAAG,CAACC,GAAE,OAAO,MAAM,yBAAuB,cAAYA,GAAE,OAAO,MAAM,MAAK;AAAC,oBAAGkB,GAAE,SAASlB,GAAE,OAAO,MAAM,eAAe,EAAE,QAAOD,GAAE,QAAQC,GAAE,OAAO,MAAM,eAAe;AAAE,oBAAIC,KAAED,GAAE,QAAQ,OAAKA,GAAE,QAAQ;AAAK,uBAAOC,KAAE,KAAGA,KAAE,MAAIF,GAAE,QAAQ,CAAC,IAAEA,GAAE,QAAQ,CAAC;AAAA,cAAC;AAAC,kBAAGC,GAAE,QAAQ;AAAgB,oBAAGA,GAAE,QAAQ,OAAKA,GAAE,QAAQ,UAAQ,EAAE,QAAOD,GAAE,QAAQ,CAAC;AAAA;AAAE,qBAAOA,GAAE,QAAQ,CAAC;AAAA,YAAC;AAAC,mBAAOA;AAAA,UAAC,GAAE,cAAY,OAAOC,GAAE,OAAO,QAAQ,EAAE,YAAUA,GAAE,QAAQ,iBAAeA,GAAE,OAAO,QAAQ,EAAE,YAAUA,GAAE,QAAQ,iBAAeA,GAAE,QAAQ,iBAAgB,cAAY,OAAOA,GAAE,OAAO,MAAM,QAAQ,cAAYA,GAAE,QAAQ,wBAAsBA,GAAE,OAAO,MAAM,QAAQ,aAAY,MAAM,QAAQA,GAAE,OAAO,QAAQ,CAAC,KAAG,WAASA,GAAE,OAAO,QAAQ,EAAE,eAAaA,GAAE,QAAQ,QAAMA,GAAE,OAAO,QAAQ,IAAG,WAASA,GAAE,OAAO,QAAQ,EAAE,cAAYA,GAAE,QAAQ,eAAaA,GAAE,OAAO,QAAQ,EAAE,YAAW,WAASA,GAAE,OAAO,OAAO,cAAYA,GAAE,QAAQ,kBAAgBA,GAAE,OAAO,OAAO,YAAWA,GAAE,OAAO,MAAM,QAAS,SAASC,IAAEC,IAAE;AAAC,uBAASD,GAAE,OAAO,YAAUD,GAAE,QAAQ,iBAAiBE,EAAC,IAAED,GAAE,OAAO,YAAUD,GAAE,QAAQ,iBAAiBE,EAAC,IAAE,SAASE,IAAE;AAAC,qBAAOJ,GAAE,QAAQ,WAAS,MAAM,QAAQI,EAAC,IAAEA,GAAE,IAAK,SAASJ,IAAE;AAAC,uBAAOD,GAAE,kBAAkBC,IAAEC,IAAEC,EAAC;AAAA,cAAC,CAAE,IAAEH,GAAE,kBAAkBK,IAAEH,IAAEC,EAAC,IAAEE;AAAA,YAAC;AAAA,UAAC,CAAE,GAAEJ,GAAE;AAAA,QAAO,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK;AAAE,cAAG,cAAYA,GAAE,OAAO,MAAM,MAAK;AAAC,YAAAA,GAAE,QAAQ,WAAW,CAAC,EAAE,SAAOA,GAAE,QAAQ,YAAY,MAAM;AAAE,gBAAIC,KAAED,GAAE,QAAQ,YAAY,OAAQ,SAASA,IAAEC,IAAE;AAAC,qBAAOD,GAAE,SAAOC,GAAE,SAAOD,KAAEC;AAAA,YAAC,GAAG,CAAC;AAAE,YAAAD,GAAE,QAAQ,WAAW,CAAC,EAAE,UAAQC,IAAED,GAAE,QAAQ,WAAW,CAAC,EAAE,UAAQC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAjqgD,UAAmqgD4B,KAAE,WAAU;AAAC,iBAAS5B,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,YAAW,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,QAAOE,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,KAAK,GAAEE,KAAE,WAASX,GAAEG,EAAC,IAAE,KAAGH,GAAEG,EAAC,GAAES,KAAED,IAAED,KAAED,GAAE,QAAQ,iBAAgBK,KAAEL,GAAE,OAAO,MAAM,OAAO,WAAUM,KAAE,OAAGF,KAAE,IAAIc,GAAE,KAAK,GAAG,GAAEX,KAAEL;AAAE,UAAAH,OAAII,KAAEC,GAAE,aAAaH,IAAEC,IAAEK,IAAE,EAAC,GAAEb,IAAE,eAAc,IAAIuB,GAAE,KAAK,GAAG,EAAE,YAAW,GAAEjB,GAAC,CAAC,GAAE,WAASK,OAAIF,KAAEE,GAAEH,IAAEX,GAAEG,EAAC,GAAE,EAAC,GAAEA,IAAE,eAAc,IAAIuB,GAAE,KAAK,GAAG,EAAE,YAAW,GAAEjB,GAAC,CAAC;AAAI,cAAIQ,IAAEb;AAAE,UAAAH,GAAE,SAAO,KAAGgB,KAAEhB,GAAEE,EAAC,EAAE,MAAKC,KAAE,MAAKH,GAAE,QAAS,SAASD,IAAE;AAAC,wBAAUA,GAAE,OAAKI,KAAE,SAAO,UAAQJ,GAAE,OAAKI,KAAE,UAAQ,WAASJ,GAAE,OAAKI,KAAE,QAAM,aAAWJ,GAAE,SAAOI,KAAE;AAAA,UAAO,CAAE,GAAEW,KAAEX,OAAIa,IAAEf,KAAED,GAAEE,EAAC,EAAE,UAASS,KAAEX,GAAEE,EAAC,EAAE,SAAO,eAAaM,GAAE,OAAO,MAAM,QAAM,WAASK,OAAIF,KAAE,KAAI,WAASA,OAAIA,KAAE,KAAIA,KAAE,MAAM,QAAQA,EAAC,IAAEA,KAAEA,GAAE,SAAS;AAAE,cAAIM,KAAE,IAAII,GAAE,KAAK,GAAG,GAAEf,KAAE,CAAC;AAAE,UAAAA,KAAEE,GAAE,QAAQ,iBAAeD,KAAEU,GAAE,aAAaN,IAAE,SAASN,IAAE,EAAE,GAAE,MAAK,UAAU,OAAOG,GAAE,OAAO,MAAM,OAAO,QAAO,OAAO,GAAE,KAAE,IAAES,GAAE,aAAaN,IAAE,SAASN,IAAE,EAAE,CAAC;AAAE,cAAIa,KAAE,CAACV,GAAE,OAAO,MAAM,OAAO,kBAAgB,KAAK,IAAI;AAAU,iBAAM,CAAC,MAAM,QAAQG,EAAC,MAAI,UAAQ,OAAOA,EAAC,KAAGP,GAAE,QAAQO,EAAC,KAAG,KAAGO,QAAKP,KAAE,KAAI,EAAC,GAAEV,IAAE,MAAKU,IAAE,UAASL,IAAE,QAAOQ,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,+BAA8B,OAAM,SAASf,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAEF,GAAE,OAAO,MAAM;AAAW,iBAAM,iBAAeE,OAAIA,KAAE,KAAK,MAAMF,GAAE,QAAQ,YAAU,GAAG,IAAGE,KAAEH,MAAGF,KAAE,KAAK,MAAME,MAAGG,KAAE,EAAE,KAAG,MAAIJ,GAAE,OAAK,KAAIA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAG,MAAIN,MAAGM,GAAE,QAAQ,2BAAyBL,GAAE,OAAK,KAAID,OAAIE,KAAE,KAAGI,GAAE,QAAQ,0BAAwBL,GAAE,OAAK,KAAIK,GAAE,OAAO,MAAM,OAAO,yBAAuBH,GAAE,SAAO,GAAE;AAAC,gBAAIK,KAAEH,GAAEA,GAAE,SAAO,CAAC;AAAE,YAAAJ,GAAE,IAAEO,GAAE,SAAS,SAAOF,GAAE,QAAQ,gBAAc,KAAK,IAAIA,GAAE,OAAO,MAAM,OAAO,MAAM,IAAE,KAAG,QAAME,GAAE,MAAIP,GAAE,OAAK;AAAA,UAAG;AAAC,iBAAOA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAOA,GAAE,OAAO,MAAMF,EAAC,KAAGE,GAAE,OAAO,MAAMF,EAAC,EAAE,YAAUC,GAAE,QAAQ,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE;AAAQ,iBAAM,CAACA,GAAE,eAAeD,EAAC,EAAE,KAAM,SAASA,IAAE;AAAC,mBAAM,OAAKC,GAAE,uBAAuB,QAAQD,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,OAAO;AAAM,iBAAOC,GAAE,OAAO,SAAOC,GAAE,UAAQA,GAAE,KAAM,SAASH,IAAE;AAAC,mBAAO,MAAM,QAAQA,GAAE,UAAU;AAAA,UAAC,CAAE,IAAEA,KAAEE,GAAE,sBAAsBF,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,MAAMD,EAAC;AAAE,cAAG,CAACE,GAAE,QAAM,KAAK,wBAAwBF,EAAC,EAAE,QAAM;AAAG,cAAG,CAACE,GAAE,mBAAkB;AAAC,gBAAIC,KAAEF,GAAE,QAAQ,eAAeD,EAAC,GAAEK,KAAE,IAAIkB,GAAE,KAAK,GAAG;AAAE,mBAAOpB,GAAE,MAAO,SAASH,IAAE;AAAC,qBAAOK,GAAE,aAAaL,EAAC;AAAA,YAAC,CAAE;AAAA,UAAC;AAAC,iBAAM;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAO,MAAM,QAAQF,EAAC,KAAGE,GAAE,QAAQ,WAAWD,EAAC,KAAG,KAAK,IAAI,MAAM,gBAAgBD,IAAEE,GAAE,QAAQ,WAAWD,EAAC,EAAE,OAAO,QAAO,KAAE,GAAED;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAE,IAAIW,GAAE,KAAK,GAAG,GAAEV,KAAEH,GAAE,QAAQ,aAAWA,GAAE,OAAO,MAAMJ,EAAC,EAAE,OAAO;AAAQ,cAAGI,GAAE,QAAQ,kBAAgBG,KAAE,IAAE,cAAYH,GAAE,OAAO,MAAM,SAAOG,MAAGN,KAAE,IAAGH,GAAE,QAAMF,KAAE,GAAE;AAAC,qBAAKQ,GAAE,OAAO,MAAMJ,EAAC,EAAE,aAAWL,MAAGG,GAAE;AAAO,qBAAQO,KAAET,IAAES,MAAG,GAAEA,MAAI;AAAC,kBAAII,KAAEH,GAAE,SAASX,KAAEE,GAAE,UAAQC,GAAE,QAAMA,GAAE,SAAQS,KAAET,GAAE,SAAQH,KAAEE,GAAE,UAAQC,GAAE,SAAQS,KAAET,GAAE,SAAQA,GAAE,KAAK;AAAE,cAAAK,GAAE,IAAIM,EAAC,GAAEF,MAAGN;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEN;AAAA,MAAC,EAAE;AAAh0mD,UAAk0mD6B,KAAE,WAAU;AAAC,iBAAS7B,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,UAAQA,IAAE,KAAK,UAAQ,IAAIuB,GAAE,KAAK,OAAO,GAAE,KAAK,YAAU,IAAII,GAAE,KAAK,OAAO;AAAA,QAAC;AAAC,eAAOvB,GAAEL,IAAE,CAAC,EAAC,KAAI,sBAAqB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,IAAEE,KAAE,KAAK,GAAEC,KAAEN,GAAE,iBAAgBQ,KAAE,KAAK,QAAQ,QAAQ,MAAKR,EAAC,GAAES,KAAED,GAAE,IAAGG,KAAEH,GAAE,SAAQI,KAAE,MAAGF,KAAE,OAAGI,KAAEd,GAAE,MAAM;AAAK,cAAG,SAAOA,GAAE,MAAI,WAASA,GAAE,IAAG;AAAC,gBAAG,CAACW,IAAE;AAAC,cAAAD,KAAE;AAAG,kBAAIK,KAAE,KAAK,QAAQ,SAAS,SAAS,IAAEf,GAAE,SAAQS,KAAET,GAAE,SAAQ,KAAK,yBAAyBA,EAAC,GAAES,KAAET,GAAE,SAAQA,GAAE,aAAYM,IAAEN,GAAE,WAAW;AAAE,cAAAC,GAAE,YAAYc,GAAE,IAAI,GAAEf,GAAE,MAAIe,GAAE,KAAK,UAAU,IAAIf,GAAE,EAAE;AAAA,YAAC;AAAA,UAAC,OAAK;AAAC,gBAAGG,MAAGK,KAAE,KAAK,QAAQ,QAAQ,MAAKR,EAAC,GAAG,IAAGY,KAAEJ,GAAE,SAAQL,KAAEM,IAAE;AAAC,kBAAII,KAAEJ;AAAE,cAAAA,KAAEN,IAAEA,KAAEU;AAAA,YAAC;AAAC,gBAAG,CAACF,MAAG,CAACC,IAAE;AAAC,cAAAF,KAAE;AAAG,kBAAIM,KAAE,KAAK,QAAQ,SAAS,SAAS,IAAEhB,GAAE,SAAQG,KAAEH,GAAE,SAAQ,KAAK,yBAAyBA,EAAC,GAAES,KAAEN,IAAE,GAAEH,GAAE,WAAUA,GAAE,SAAQ,GAAEA,GAAE,aAAYM,EAAC;AAAE,cAAAU,GAAE,KAAK,UAAU,IAAI,4BAA4B,GAAEA,GAAE,KAAK,aAAY,oBAAoB,OAAOX,GAAE,QAAQ,MAAK,GAAG,CAAC,GAAEJ,GAAE,YAAYe,GAAE,IAAI,GAAEhB,GAAE,MAAIgB,GAAE,KAAK,UAAU,IAAIhB,GAAE,EAAE;AAAA,YAAC;AAAA,UAAC;AAAC,cAAGU,IAAE;AAAC,gBAAIO,KAAE,YAAUjB,GAAE,MAAM,WAASK,GAAE,QAAQ,YAAU,aAAWL,GAAE,MAAM,WAASK,GAAE,QAAQ,YAAU,IAAE,GAAED,KAAE,KAAK,QAAQ,SAAS,SAAS,EAAC,GAAEa,KAAEjB,GAAE,MAAM,SAAQ,IAAG,QAAMG,KAAEA,KAAEM,MAAGT,GAAE,MAAM,UAAQ,GAAE,MAAKc,IAAE,YAAWd,GAAE,MAAM,YAAW,UAASA,GAAE,MAAM,MAAM,UAAS,YAAWA,GAAE,MAAM,MAAM,YAAW,YAAWA,GAAE,MAAM,MAAM,YAAW,WAAUA,GAAE,MAAM,MAAM,OAAM,UAAS,qCAAqC,OAAOA,GAAE,MAAM,MAAM,UAAS,GAAG,EAAE,OAAOA,GAAE,KAAGA,GAAE,KAAG,EAAE,EAAC,CAAC;AAAE,YAAAI,GAAE,KAAK,EAAC,KAAIF,GAAC,CAAC,GAAED,GAAE,YAAYG,GAAE,IAAI;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASJ,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ;AAAU,kBAAOD,GAAE,MAAM,QAAQ,GAAG,IAAE,KAAGC,GAAE,QAAQ,YAAU,SAASD,GAAE,OAAM,EAAE,IAAE,MAAI,SAASA,GAAE,OAAM,EAAE,KAAGA,GAAE;AAAA,QAAO,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,KAAK,QAAQ,SAAS,MAAM,EAAC,OAAM,+BAA8B,CAAC;AAAE,iBAAOD,GAAE,OAAO,YAAY,MAAM,QAAS,SAASA,IAAEE,IAAE;AAAC,YAAAF,GAAE,aAAWD,GAAE,UAAU,oBAAoBC,GAAE,UAAU,GAAED,GAAE,UAAU,cAAcC,GAAE,UAAU,KAAGD,GAAE,UAAU,wBAAwBC,GAAE,UAAU,KAAGD,GAAE,mBAAmBC,IAAEC,GAAE,MAAKC,EAAC;AAAA,UAAC,CAAE,GAAED;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA7zqD,UAA+zqD8B,KAAE,WAAU;AAAC,iBAAS9B,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,UAAQA,IAAE,KAAK,UAAQ,IAAIuB,GAAE,KAAK,OAAO;AAAA,QAAC;AAAC,eAAOnB,GAAEL,IAAE,CAAC,EAAC,KAAI,sBAAqB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAG,EAAE,KAAK,EAAE,QAAQ,uBAAuB,QAAQF,GAAE,WAAW,IAAE,KAAI;AAAC,gBAAIG,KAAE,KAAK,QAAQ,QAAQ,MAAKH,EAAC,GAAEK,KAAEF,GAAE,GAAEG,KAAEH,GAAE,SAAQK,MAAGL,KAAE,KAAK,QAAQ,QAAQ,MAAKH,EAAC,GAAG,IAAGS,KAAEN,GAAE;AAAQ,gBAAGgB,GAAE,SAASd,EAAC,KAAG,CAACI,MAAG,CAACH,IAAE;AAAC,kBAAIK,KAAE,EAAC,OAAMX,GAAE,OAAO,MAAK,kBAAiBA,GAAE,OAAO,aAAY,gBAAeA,GAAE,OAAO,WAAU,kBAAiBA,GAAE,OAAO,aAAY,OAAMA,GAAE,OAAO,OAAM,SAAQA,GAAE,OAAO,QAAO,OAAM,sCAAsC,OAAOA,GAAE,OAAO,UAAS,GAAG,EAAE,OAAOA,GAAE,KAAGA,GAAE,KAAG,EAAE,EAAC,GAAEY,KAAE,KAAK,QAAQ,SAAS,WAAWP,KAAEL,GAAE,OAAO,SAAQQ,KAAER,GAAE,OAAO,SAAQW,EAAC;AAAE,cAAAV,GAAE,YAAYW,GAAE,IAAI;AAAE,kBAAIF,KAAEV,GAAE,MAAM,OAAKA,GAAE,MAAM,OAAK,IAAGc,KAAE,KAAK,QAAQ,SAAS,SAAS,EAAC,GAAET,KAAEL,GAAE,MAAM,SAAQ,GAAEQ,KAAER,GAAE,MAAM,UAAQA,GAAE,OAAO,OAAK,WAAWA,GAAE,MAAM,MAAM,QAAQ,IAAE,KAAI,MAAKU,IAAE,YAAWV,GAAE,MAAM,YAAW,UAASA,GAAE,MAAM,MAAM,UAAS,YAAWA,GAAE,MAAM,MAAM,YAAW,YAAWA,GAAE,MAAM,MAAM,YAAW,WAAUA,GAAE,MAAM,MAAM,OAAM,UAAS,qCAAqC,OAAOA,GAAE,MAAM,MAAM,UAAS,GAAG,EAAE,OAAOA,GAAE,KAAGA,GAAE,KAAG,EAAE,EAAC,CAAC;AAAE,kBAAGc,GAAE,KAAK,EAAC,KAAIZ,GAAC,CAAC,GAAED,GAAE,YAAYa,GAAE,IAAI,GAAEd,GAAE,UAAU,KAAI;AAAC,oBAAIe,KAAE,KAAK,QAAQ,SAAS,MAAM,EAAC,OAAM,6CAA2Cf,GAAE,UAAU,SAAQ,CAAC;AAAE,gBAAAe,GAAE,KAAK,EAAC,WAAU,aAAa,OAAOV,KAAEL,GAAE,UAAU,SAAQ,IAAI,EAAE,OAAOQ,KAAER,GAAE,UAAU,SAAQ,GAAG,EAAC,CAAC,GAAEe,GAAE,KAAK,YAAUf,GAAE,UAAU,KAAIC,GAAE,YAAYc,GAAE,IAAI;AAAA,cAAC;AAAC,kBAAGf,GAAE,MAAM,MAAK;AAAC,oBAAIa,KAAEb,GAAE,MAAM,QAAMA,GAAE,MAAM,QAAM,IAAGgB,KAAEhB,GAAE,MAAM,SAAOA,GAAE,MAAM,SAAO;AAAG,gBAAAY,KAAE,KAAK,QAAQ,SAAS,EAAC,GAAEP,KAAEL,GAAE,MAAM,UAAQa,KAAE,GAAE,GAAEL,KAAER,GAAE,MAAM,UAAQgB,KAAE,GAAE,OAAMH,IAAE,QAAOG,IAAE,MAAKhB,GAAE,MAAM,MAAK,UAAS,gCAA+B,CAAC;AAAA,cAAC;AAAC,cAAAA,GAAE,cAAYY,GAAE,KAAK,iBAAiB,cAAaZ,GAAE,WAAW,KAAK,MAAKA,EAAC,CAAC,GAAEA,GAAE,cAAYY,GAAE,KAAK,iBAAiB,cAAaZ,GAAE,WAAW,KAAK,MAAKA,EAAC,CAAC,GAAEA,GAAE,SAAOY,GAAE,KAAK,iBAAiB,SAAQZ,GAAE,MAAM,KAAK,MAAKA,EAAC,CAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,KAAK,QAAQ,SAAS,MAAM,EAAC,OAAM,+BAA8B,CAAC;AAAE,iBAAOD,GAAE,OAAO,YAAY,OAAO,IAAK,SAASA,IAAEE,IAAE;AAAC,YAAAH,GAAE,mBAAmBC,IAAEC,GAAE,MAAKC,EAAC;AAAA,UAAC,CAAE,GAAED;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAAE,UAAI+B,KAAE,EAAC,MAAK,MAAK,SAAQ,EAAC,QAAO,CAAC,WAAU,YAAW,SAAQ,SAAQ,OAAM,QAAO,QAAO,UAAS,aAAY,WAAU,YAAW,UAAU,GAAE,aAAY,CAAC,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK,GAAE,MAAK,CAAC,UAAS,UAAS,WAAU,aAAY,YAAW,UAAS,UAAU,GAAE,WAAU,CAAC,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK,GAAE,SAAQ,EAAC,aAAY,gBAAe,aAAY,gBAAe,aAAY,gBAAe,MAAK,QAAO,WAAU,aAAY,eAAc,kBAAiB,QAAO,WAAU,SAAQ,YAAW,KAAI,WAAU,OAAM,aAAY,EAAC,EAAC;AAA5kB,UAA8kBC,KAAE,WAAU;AAAC,iBAAShC,KAAG;AAAC,UAAAE,GAAE,MAAKF,EAAC,GAAE,KAAK,QAAM,EAAC,MAAK,MAAG,YAAW,OAAG,mBAAkB,MAAG,YAAW,QAAO,UAAS,OAAG,UAAS,OAAG,aAAY,OAAG,SAAQ,IAAG,YAAW,QAAO,UAAS,QAAO,gBAAe,OAAG,KAAI,QAAO,KAAI,QAAO,UAAS,OAAG,iBAAgB,QAAO,QAAO,EAAC,MAAK,MAAG,gBAAe,OAAG,UAAS,GAAE,UAAS,KAAI,SAAQ,GAAE,SAAQ,GAAE,OAAM,QAAO,QAAO,GAAE,SAAQ,IAAG,OAAM,EAAC,QAAO,CAAC,GAAE,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,UAAS,GAAE,GAAE,WAAU,OAAM,GAAE,YAAW,EAAC,MAAK,OAAG,OAAM,WAAU,OAAM,GAAE,SAAQ,GAAE,SAAQ,EAAC,GAAE,WAAU,EAAC,MAAK,OAAG,OAAM,WAAU,OAAM,GAAE,SAAQ,GAAE,SAAQ,EAAC,GAAE,OAAM,EAAC,MAAK,QAAO,QAAO,KAAI,SAAQ,GAAE,SAAQ,GAAE,OAAM,EAAC,OAAM,QAAO,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,UAAS,GAAE,EAAC,GAAE,SAAQ,EAAC,SAAQ,OAAG,SAAQ,EAAC,GAAE,YAAW,EAAC,MAAK,MAAG,UAAS,SAAQ,QAAO,EAAC,OAAM,WAAU,OAAM,GAAE,WAAU,EAAC,EAAC,EAAC,GAAE,KAAK,kBAAgB,EAAC,IAAG,QAAO,GAAE,GAAE,GAAE,MAAK,YAAW,GAAE,aAAY,QAAO,YAAW,QAAO,YAAW,QAAO,OAAM,QAAO,QAAO,EAAC,MAAK,GAAE,WAAU,QAAO,aAAY,GAAE,aAAY,QAAO,OAAM,UAAS,SAAQ,GAAE,SAAQ,GAAE,UAAS,GAAE,GAAE,OAAM,EAAC,aAAY,WAAU,aAAY,GAAE,cAAa,GAAE,MAAK,QAAO,YAAW,UAAS,SAAQ,GAAE,SAAQ,GAAE,YAAW,QAAO,YAAW,QAAO,OAAM,QAAO,OAAM,EAAC,YAAW,QAAO,OAAM,QAAO,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,UAAS,IAAG,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,EAAC,GAAE,WAAU,EAAC,KAAI,QAAO,UAAS,QAAO,SAAQ,GAAE,SAAQ,EAAC,GAAE,OAAM,EAAC,MAAK,QAAO,OAAM,IAAG,QAAO,IAAG,SAAQ,GAAE,SAAQ,EAAC,EAAC,GAAE,KAAK,kBAAgB,EAAC,IAAG,QAAO,GAAE,GAAE,IAAG,MAAK,iBAAgB,GAAE,WAAU,WAAU,aAAY,WAAU,aAAY,GAAE,SAAQ,KAAG,SAAQ,GAAE,SAAQ,GAAE,OAAM,QAAO,YAAW,GAAE,OAAM,EAAC,aAAY,WAAU,aAAY,GAAE,cAAa,GAAE,MAAK,QAAO,YAAW,OAAM,UAAS,SAAQ,SAAQ,GAAE,SAAQ,IAAG,YAAW,QAAO,YAAW,QAAO,OAAM,QAAO,OAAM,EAAC,YAAW,QAAO,OAAM,QAAO,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,UAAS,IAAG,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,EAAC,EAAC,GAAE,KAAK,kBAAgB,EAAC,IAAG,QAAO,GAAE,GAAE,IAAG,MAAK,iBAAgB,GAAE,WAAU,WAAU,aAAY,WAAU,aAAY,GAAE,SAAQ,KAAG,SAAQ,GAAE,SAAQ,GAAE,OAAM,EAAC,aAAY,WAAU,aAAY,GAAE,cAAa,GAAE,MAAK,QAAO,YAAW,UAAS,aAAY,YAAW,UAAS,OAAM,SAAQ,GAAE,SAAQ,GAAE,YAAW,QAAO,YAAW,QAAO,OAAM,QAAO,OAAM,EAAC,YAAW,QAAO,OAAM,QAAO,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,UAAS,IAAG,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,EAAC,EAAC,GAAE,KAAK,OAAK,EAAC,GAAE,GAAE,GAAE,GAAE,MAAK,IAAG,YAAW,SAAQ,WAAU,QAAO,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,UAAS,2BAA0B,iBAAgB,eAAc,aAAY,WAAU,cAAa,GAAE,aAAY,GAAE,aAAY,GAAE,cAAa,GAAE,YAAW,GAAE,eAAc,EAAC;AAAA,QAAC;AAAC,eAAOK,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,iBAAM,EAAC,aAAY,EAAC,OAAM,CAAC,KAAK,eAAe,GAAE,OAAM,CAAC,KAAK,eAAe,GAAE,QAAO,CAAC,KAAK,eAAe,GAAE,OAAM,CAAC,GAAE,QAAO,CAAC,GAAE,QAAO,CAAC,EAAC,GAAE,OAAM,EAAC,YAAW,EAAC,SAAQ,MAAG,QAAO,aAAY,OAAM,KAAI,kBAAiB,EAAC,OAAM,KAAI,SAAQ,KAAE,GAAE,kBAAiB,EAAC,SAAQ,MAAG,OAAM,IAAG,EAAC,GAAE,YAAW,IAAG,SAAQ,CAAC+B,EAAC,GAAE,eAAc,MAAK,YAAW,EAAC,SAAQ,OAAG,iBAAgB,QAAO,KAAI,GAAE,MAAK,GAAE,MAAK,GAAE,OAAM,QAAO,SAAQ,KAAG,GAAE,QAAO,EAAC,cAAa,QAAO,aAAY,QAAO,SAAQ,QAAO,SAAQ,QAAO,OAAM,QAAO,WAAU,QAAO,YAAW,QAAO,iBAAgB,QAAO,aAAY,QAAO,aAAY,QAAO,WAAU,QAAO,oBAAmB,QAAO,qBAAoB,QAAO,qBAAoB,QAAO,YAAW,QAAO,iBAAgB,QAAO,QAAO,QAAO,UAAS,QAAO,eAAc,OAAM,GAAE,WAAU,WAAU,YAAW,gCAA+B,QAAO,QAAO,oBAAmB,IAAG,sBAAqB,MAAG,sBAAqB,MAAG,IAAG,QAAO,OAAM,QAAO,OAAM,QAAO,SAAQ,GAAE,SAAQ,GAAE,WAAU,EAAC,SAAQ,OAAG,MAAK,KAAI,MAAK,EAAC,OAAM,WAAU,SAAQ,IAAE,GAAE,QAAO,EAAC,OAAM,GAAE,OAAM,WAAU,SAAQ,KAAG,WAAU,EAAC,GAAE,OAAM,EAAC,KAAI,QAAO,KAAI,OAAM,GAAE,OAAM,EAAC,KAAI,QAAO,KAAI,OAAM,EAAC,GAAE,WAAU,EAAC,SAAQ,MAAE,GAAE,OAAM,EAAC,SAAQ,OAAG,gBAAe,MAAG,QAAO,QAAO,SAAQ,OAAM,GAAE,SAAQ,OAAG,cAAa,MAAG,WAAU,UAAS,SAAQ,EAAC,MAAK,MAAG,SAAQ,GAAE,SAAQ,GAAE,OAAM,EAAC,UAAS,MAAG,WAAU,MAAG,MAAK,MAAG,QAAO,MAAG,SAAQ,MAAG,KAAI,MAAG,OAAM,MAAG,aAAY,CAAC,EAAC,GAAE,QAAO,EAAC,KAAI,EAAC,UAAS,QAAO,iBAAgB,KAAI,gBAAe,YAAW,aAAY,SAAQ,mBAAkB,QAAO,gBAAe,OAAM,GAAE,KAAI,EAAC,UAAS,OAAM,GAAE,KAAI,EAAC,UAAS,OAAM,GAAE,OAAM,QAAO,OAAM,OAAM,GAAE,cAAa,OAAM,GAAE,MAAK,QAAO,OAAM,QAAO,MAAK,EAAC,SAAQ,MAAG,MAAK,KAAI,gBAAe,OAAG,qBAAoB,MAAG,YAAW,EAAC,MAAK,EAAC,OAAM,WAAU,SAAQ,IAAE,GAAE,QAAO,EAAC,OAAM,WAAU,SAAQ,KAAG,OAAM,EAAC,EAAC,EAAC,EAAC,GAAE,aAAY,EAAC,MAAK,EAAC,cAAa,MAAE,GAAE,MAAK,EAAC,QAAO,SAAQ,GAAE,KAAI,EAAC,YAAW,OAAG,aAAY,OAAM,WAAU,OAAM,aAAY,OAAG,cAAa,GAAE,yBAAwB,UAAS,yBAAwB,QAAO,iBAAgB,MAAG,mBAAkB,OAAG,yBAAwB,OAAG,YAAW,OAAG,gBAAe,QAAO,UAAS,OAAG,YAAW,MAAG,QAAO,EAAC,QAAO,CAAC,GAAE,qBAAoB,CAAC,GAAE,sBAAqB,GAAE,qBAAoB,EAAC,GAAE,YAAW,EAAC,UAAS,OAAM,UAAS,KAAI,uBAAsB,MAAG,aAAY,cAAa,OAAM,EAAC,SAAQ,OAAG,WAAU,QAAO,SAAQ,GAAE,SAAQ,GAAE,OAAM,EAAC,OAAM,WAAU,UAAS,QAAO,YAAW,QAAO,YAAW,IAAG,EAAC,EAAC,EAAC,GAAE,QAAO,EAAC,UAAS,MAAG,iBAAgB,QAAO,iBAAgB,OAAM,GAAE,aAAY,EAAC,QAAO,EAAC,QAAO,WAAU,UAAS,UAAS,GAAE,MAAK,EAAC,cAAa,KAAE,EAAC,GAAE,SAAQ,EAAC,QAAO,EAAC,OAAM,WAAU,OAAM,UAAS,EAAC,GAAE,SAAQ,EAAC,QAAO,GAAE,cAAa,MAAG,gBAAe,KAAG,sBAAqB,OAAG,aAAY,OAAG,sBAAqB,OAAG,YAAW,EAAC,SAAQ,OAAG,QAAO,CAAC,GAAE,KAAI,QAAO,KAAI,OAAM,EAAC,GAAE,SAAQ,EAAC,cAAa,MAAG,gBAAe,KAAG,aAAY,OAAG,sBAAqB,OAAG,sBAAqB,OAAG,cAAa,GAAE,YAAW,EAAC,QAAO,QAAO,GAAE,YAAW,EAAC,SAAQ,OAAG,QAAO,CAAC,GAAE,KAAI,QAAO,KAAI,OAAM,EAAC,GAAE,WAAU,EAAC,cAAa,OAAG,YAAW,GAAE,UAAS,KAAI,SAAQ,GAAE,SAAQ,GAAE,QAAO,EAAC,QAAO,GAAE,MAAK,OAAM,YAAW,eAAc,OAAM,QAAO,YAAW,KAAI,aAAY,KAAI,cAAa,GAAE,cAAa,GAAE,cAAa,MAAG,UAAS,SAAQ,YAAW,EAAC,SAAQ,OAAG,KAAI,GAAE,MAAK,GAAE,MAAK,GAAE,OAAM,QAAO,SAAQ,IAAE,EAAC,GAAE,OAAM,EAAC,MAAK,MAAG,YAAW,QAAO,UAAS,QAAO,YAAW,WAAU,aAAY,OAAM,SAAQ,GAAE,QAAO,GAAE,YAAW,EAAC,SAAQ,OAAG,KAAI,GAAE,MAAK,GAAE,MAAK,GAAE,OAAM,QAAO,SAAQ,IAAE,EAAC,GAAE,YAAW,EAAC,MAAK,MAAG,MAAK,EAAC,MAAK,MAAG,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,OAAM,QAAO,SAAQ,GAAE,WAAU,SAAS/B,IAAE;AAAC,mBAAOA;AAAA,UAAC,EAAC,GAAE,OAAM,EAAC,MAAK,MAAG,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,OAAM,QAAO,SAAQ,IAAG,WAAU,SAASA,IAAE;AAAC,mBAAOA,KAAE;AAAA,UAAG,EAAC,GAAE,OAAM,EAAC,MAAK,OAAG,OAAM,SAAQ,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,OAAM,QAAO,WAAU,SAASA,IAAE;AAAC,mBAAOA,GAAE,QAAQ,aAAa,OAAQ,SAASA,IAAEC,IAAE;AAAC,qBAAOD,KAAEC;AAAA,YAAC,GAAG,CAAC,IAAED,GAAE,QAAQ,OAAO,SAAO;AAAA,UAAG,EAAC,EAAC,GAAE,WAAU,EAAC,SAAQ,OAAG,SAAQ,GAAE,SAAQ,GAAE,iBAAgB,MAAG,YAAW,QAAO,YAAW,KAAI,UAAS,QAAO,WAAU,SAASA,IAAE;AAAC,mBAAOA;AAAA,UAAC,GAAE,SAAQ,OAAM,EAAC,GAAE,KAAI,EAAC,aAAY,GAAE,SAAQ,GAAE,SAAQ,GAAE,YAAW,GAAE,UAAS,KAAI,eAAc,MAAG,YAAW,EAAC,QAAO,GAAE,qBAAoB,GAAE,GAAE,OAAM,EAAC,MAAK,OAAM,YAAW,eAAc,QAAO,EAAC,MAAK,OAAG,MAAK,EAAC,MAAK,MAAG,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,OAAM,QAAO,SAAQ,KAAI,WAAU,SAASA,IAAE;AAAC,mBAAOA;AAAA,UAAC,EAAC,GAAE,OAAM,EAAC,MAAK,MAAG,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,OAAM,QAAO,SAAQ,IAAG,WAAU,SAASA,IAAE;AAAC,mBAAOA;AAAA,UAAC,EAAC,GAAE,OAAM,EAAC,MAAK,OAAG,YAAW,OAAG,OAAM,SAAQ,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,OAAM,QAAO,WAAU,SAASA,IAAE;AAAC,mBAAOA,GAAE,QAAQ,aAAa,OAAQ,SAASA,IAAEC,IAAE;AAAC,qBAAOD,KAAEC;AAAA,YAAC,GAAG,CAAC;AAAA,UAAC,EAAC,EAAC,EAAC,EAAC,GAAE,WAAU,EAAC,OAAM,EAAC,aAAY,GAAE,aAAY,UAAS,GAAE,QAAO,EAAC,aAAY,GAAE,iBAAgB,UAAS,EAAC,GAAE,OAAM,EAAC,MAAK,QAAO,SAAQ,GAAE,SAAQ,GAAE,UAAS,EAAC,aAAY,GAAE,cAAa,WAAU,iBAAgB,WAAU,MAAK,EAAC,QAAO,OAAM,EAAC,EAAC,EAAC,GAAE,QAAO,QAAO,YAAW,EAAC,SAAQ,MAAG,iBAAgB,QAAO,WAAU,SAASD,IAAE;AAAC,mBAAO,SAAOA,KAAEA,KAAE;AAAA,UAAE,GAAE,YAAW,UAAS,aAAY,OAAG,SAAQ,GAAE,SAAQ,GAAE,OAAM,EAAC,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,QAAO,OAAM,GAAE,YAAW,EAAC,SAAQ,MAAG,WAAU,QAAO,cAAa,GAAE,SAAQ,GAAE,SAAQ,KAAG,aAAY,GAAE,aAAY,QAAO,YAAW,EAAC,SAAQ,OAAG,KAAI,GAAE,MAAK,GAAE,MAAK,GAAE,OAAM,QAAO,SAAQ,KAAG,EAAC,GAAE,YAAW,EAAC,SAAQ,OAAG,KAAI,GAAE,MAAK,GAAE,MAAK,GAAE,OAAM,QAAO,SAAQ,KAAG,EAAC,GAAE,MAAK,EAAC,MAAK,SAAQ,QAAO,QAAO,SAAQ,MAAI,UAAS,EAAC,OAAM,QAAO,MAAK,cAAa,gBAAe,KAAG,kBAAiB,QAAO,eAAc,MAAG,aAAY,GAAE,WAAU,GAAE,OAAM,CAAC,GAAE,IAAG,GAAG,GAAE,YAAW,CAAC,EAAC,GAAE,OAAM,EAAC,KAAI,CAAC,GAAE,OAAM,QAAO,QAAO,OAAM,GAAE,SAAQ,EAAC,OAAM,WAAU,OAAM,GAAE,QAAO,GAAE,aAAY,EAAC,EAAC,GAAE,oBAAmB,EAAC,OAAM,GAAE,aAAY,KAAG,aAAY,QAAO,WAAU,EAAC,GAAE,MAAK,EAAC,MAAK,MAAG,aAAY,WAAU,iBAAgB,GAAE,UAAS,QAAO,OAAM,EAAC,OAAM,EAAC,MAAK,MAAE,EAAC,GAAE,OAAM,EAAC,OAAM,EAAC,MAAK,KAAE,EAAC,GAAE,KAAI,EAAC,QAAO,QAAO,SAAQ,IAAE,GAAE,QAAO,EAAC,QAAO,QAAO,SAAQ,IAAE,GAAE,SAAQ,EAAC,KAAI,GAAE,OAAM,IAAG,QAAO,GAAE,MAAK,GAAE,EAAC,GAAE,QAAO,CAAC,GAAE,QAAO,EAAC,MAAK,MAAG,qBAAoB,OAAG,mBAAkB,MAAG,mBAAkB,MAAG,UAAS,OAAG,UAAS,UAAS,iBAAgB,UAAS,cAAa,OAAG,UAAS,QAAO,YAAW,QAAO,YAAW,KAAI,OAAM,QAAO,QAAO,QAAO,WAAU,QAAO,uBAAsB,QAAO,SAAQ,KAAI,SAAQ,GAAE,mBAAkB,CAAC,GAAE,QAAO,EAAC,QAAO,QAAO,iBAAgB,MAAE,GAAE,SAAQ,EAAC,MAAK,GAAE,YAAW,QAAO,aAAY,GAAE,OAAM,QAAO,SAAQ,GAAE,SAAQ,GAAE,YAAW,QAAO,SAAQ,OAAM,GAAE,YAAW,EAAC,YAAW,GAAE,UAAS,EAAC,GAAE,aAAY,EAAC,kBAAiB,KAAE,GAAE,aAAY,EAAC,qBAAoB,KAAE,EAAC,GAAE,SAAQ,EAAC,UAAS,CAAC,GAAE,MAAK,GAAE,QAAO,QAAO,cAAa,QAAO,aAAY,GAAE,eAAc,KAAG,iBAAgB,GAAE,aAAY,GAAE,OAAM,UAAS,SAAQ,GAAE,SAAQ,GAAE,oBAAmB,MAAG,SAAQ,QAAO,YAAW,QAAO,OAAM,EAAC,MAAK,QAAO,YAAW,EAAC,EAAC,GAAE,QAAO,EAAC,MAAK,QAAO,OAAM,UAAS,eAAc,UAAS,SAAQ,GAAE,SAAQ,GAAE,OAAM,EAAC,OAAM,QAAO,UAAS,QAAO,YAAW,OAAM,EAAC,GAAE,YAAW,CAAC,GAAE,QAAO,QAAO,QAAO,EAAC,QAAO,EAAC,QAAO,EAAC,MAAK,QAAO,OAAM,EAAC,EAAC,GAAE,OAAM,EAAC,QAAO,EAAC,MAAK,WAAU,OAAM,IAAE,EAAC,GAAE,QAAO,EAAC,kCAAiC,OAAG,QAAO,EAAC,MAAK,UAAS,OAAM,IAAE,EAAC,EAAC,GAAE,OAAM,EAAC,MAAK,QAAO,OAAM,QAAO,QAAO,GAAE,SAAQ,GAAE,SAAQ,GAAE,UAAS,OAAG,OAAM,EAAC,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,OAAM,OAAM,EAAC,GAAE,UAAS,EAAC,MAAK,QAAO,OAAM,QAAO,QAAO,GAAE,SAAQ,GAAE,SAAQ,IAAG,UAAS,OAAG,OAAM,EAAC,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,OAAM,OAAM,EAAC,GAAE,QAAO,EAAC,MAAK,MAAG,OAAM,UAAS,SAAQ,QAAO,OAAM,GAAE,QAAO,QAAO,WAAU,GAAE,MAAK,EAAC,MAAK,SAAQ,QAAO,QAAO,SAAQ,MAAI,UAAS,EAAC,OAAM,QAAO,MAAK,cAAa,gBAAe,KAAG,kBAAiB,QAAO,eAAc,MAAG,aAAY,GAAE,WAAU,GAAE,OAAM,CAAC,GAAE,IAAG,GAAG,GAAE,YAAW,CAAC,EAAC,EAAC,EAAC,GAAE,SAAQ,EAAC,SAAQ,MAAG,iBAAgB,QAAO,QAAO,MAAG,iBAAgB,OAAG,cAAa,OAAG,WAAU,OAAG,cAAa,OAAG,QAAO,QAAO,iBAAgB,OAAG,OAAM,SAAQ,UAAS,IAAG,OAAM,EAAC,UAAS,QAAO,YAAW,OAAM,GAAE,gBAAe,EAAC,qBAAoB,MAAE,GAAE,GAAE,EAAC,MAAK,MAAG,QAAO,UAAS,WAAU,OAAM,GAAE,GAAE,EAAC,WAAU,QAAO,OAAM,EAAC,WAAU,SAASA,IAAE;AAAC,mBAAOA,KAAEA,KAAE,OAAK;AAAA,UAAE,EAAC,EAAC,GAAE,GAAE,EAAC,WAAU,QAAO,OAAM,SAAQ,GAAE,QAAO,EAAC,MAAK,MAAG,YAAW,OAAM,GAAE,OAAM,EAAC,SAAQ,OAAM,GAAE,OAAM,EAAC,SAAQ,OAAG,UAAS,YAAW,SAAQ,GAAE,SAAQ,EAAC,EAAC,GAAE,OAAM,EAAC,MAAK,YAAW,YAAW,CAAC,GAAE,uBAAsB,OAAG,SAAQ,GAAE,SAAQ,GAAE,qBAAoB,QAAO,QAAO,EAAC,MAAK,MAAG,QAAO,KAAI,cAAa,OAAG,uBAAsB,MAAG,MAAK,OAAG,WAAU,QAAO,WAAU,KAAI,gBAAe,MAAG,OAAM,EAAC,QAAO,CAAC,GAAE,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,UAAS,GAAE,GAAE,SAAQ,GAAE,SAAQ,GAAE,QAAO,QAAO,WAAU,QAAO,aAAY,MAAG,mBAAkB,EAAC,MAAK,QAAO,OAAM,WAAU,KAAI,UAAS,MAAK,SAAQ,QAAO,YAAW,QAAO,WAAU,EAAC,GAAE,OAAM,EAAC,QAAO,CAAC,GAAE,OAAM,EAAC,QAAO,CAAC,GAAE,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,UAAS,GAAE,EAAC,GAAE,YAAW,EAAC,MAAK,MAAG,OAAM,WAAU,OAAM,QAAO,QAAO,GAAE,SAAQ,GAAE,SAAQ,EAAC,GAAE,WAAU,EAAC,MAAK,MAAG,OAAM,WAAU,QAAO,GAAE,SAAQ,GAAE,SAAQ,EAAC,GAAE,UAAS,QAAO,YAAW,QAAO,eAAc,MAAK,KAAI,QAAO,KAAI,QAAO,OAAM,QAAO,UAAS,OAAG,iBAAgB,QAAO,UAAS,UAAS,OAAM,EAAC,MAAK,QAAO,SAAQ,GAAE,SAAQ,GAAE,OAAM,EAAC,OAAM,QAAO,UAAS,QAAO,YAAW,KAAI,YAAW,QAAO,UAAS,GAAE,EAAC,GAAE,YAAW,EAAC,MAAK,MAAG,OAAM,GAAE,UAAS,QAAO,SAAQ,KAAG,QAAO,EAAC,OAAM,WAAU,OAAM,GAAE,WAAU,EAAC,GAAE,MAAK,EAAC,MAAK,SAAQ,OAAM,WAAU,UAAS,EAAC,WAAU,WAAU,SAAQ,WAAU,OAAM,CAAC,GAAE,GAAG,GAAE,aAAY,KAAG,WAAU,IAAE,EAAC,GAAE,YAAW,EAAC,SAAQ,OAAG,MAAK,GAAE,KAAI,GAAE,MAAK,GAAE,SAAQ,IAAE,EAAC,GAAE,SAAQ,EAAC,SAAQ,MAAG,SAAQ,GAAE,WAAU,QAAO,OAAM,EAAC,UAAS,QAAO,YAAW,OAAM,EAAC,EAAC,GAAE,OAAM,KAAK,OAAM,OAAM,EAAC,MAAK,IAAG,SAAQ,YAAW,YAAW,EAAC,SAAQ,OAAG,OAAM,WAAU,SAAQ,SAAQ,gBAAe,KAAG,EAAC,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAjha,UAAmhaiC,KAAE,WAAU;AAAC,iBAASjC,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,WAAS,IAAIqB,GAAE,KAAK,GAAG,GAAE,KAAK,EAAE,QAAQ,oBAAkB,KAAK,aAAW,OAAI,KAAK,UAAQ,IAAIE,GAAE,IAAI,GAAE,KAAK,mBAAiB,IAAIC,GAAE,IAAI,GAAE,KAAK,mBAAiB,IAAII,GAAE,IAAI,GAAE,KAAK,oBAAkB,IAAIC,GAAE,IAAI,GAAE,KAAK,EAAE,QAAQ,mBAAiB,KAAK,EAAE,OAAO,MAAM,CAAC,EAAE,aAAW,KAAK,uBAAqB,OAAI,KAAK,YAAU,KAAK,EAAE,QAAQ,YAAU,KAAK,EAAE,QAAQ;AAAA,QAAU;AAAC,eAAOzB,GAAEL,IAAE,CAAC,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK;AAAE,cAAGA,GAAE,QAAQ,cAAYA,GAAE,QAAQ,YAAW;AAAC,qBAAQC,KAAE,KAAK,iBAAiB,qBAAqB,GAAEC,KAAE,KAAK,iBAAiB,qBAAqB,GAAEC,KAAE,KAAK,kBAAkB,qBAAqB,GAAEE,KAAEL,GAAE,OAAO,MAAM,WAAW,SAAQM,KAAE,CAACL,IAAEC,IAAEC,EAAC,GAAEK,KAAE,CAACN,GAAE,MAAKD,GAAE,MAAKE,GAAE,IAAI,GAAEM,KAAE,GAAEA,KAAE,GAAEA,KAAI,CAAAT,GAAE,QAAQ,IAAI,YAAY,IAAIM,GAAEG,EAAC,CAAC,GAAE,CAACJ,MAAGL,GAAE,QAAQ,WAASA,GAAE,QAAQ,eAAa,cAAYA,GAAE,OAAO,MAAM,QAAM,aAAWA,GAAE,OAAO,MAAM,QAAMA,GAAE,QAAQ,aAAW,KAAGQ,GAAEC,EAAC,EAAE,UAAU,IAAI,2BAA2B,GAAET,GAAE,QAAQ,gBAAgB,KAAK,EAAC,IAAGQ,GAAEC,EAAC,GAAE,OAAM,EAAC,CAAC;AAAE,iBAAK,QAAQ,sBAAsB;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,cAAIT,KAAE;AAAK,eAAK,EAAE,OAAO,YAAY,OAAO,IAAK,SAASC,IAAEC,IAAE;AAAC,YAAAF,GAAE,SAASC,IAAEC,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,cAAIF,KAAE;AAAK,eAAK,EAAE,OAAO,YAAY,MAAM,IAAK,SAASC,IAAEC,IAAE;AAAC,YAAAF,GAAE,QAAQC,IAAEC,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAEC,IAAEC,IAAE;AAAC,eAAK,iBAAiB,mBAAmBF,IAAEC,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAEC,IAAEC,IAAE;AAAC,eAAK,iBAAiB,mBAAmBF,IAAEC,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAEC,IAAEC,IAAE;AAAC,eAAK,kBAAkB,mBAAmBF,IAAEC,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAEF,GAAE,GAAEG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,MAAKM,KAAEN,GAAE,YAAWQ,KAAER,GAAE,WAAUS,KAAET,GAAE,UAASW,KAAEX,GAAE,YAAWY,KAAEZ,GAAE,YAAWU,KAAEV,GAAE,UAASc,KAAEd,GAAE,iBAAgBe,KAAEf,GAAE,aAAYa,KAAEb,GAAE,iBAAgBgB,KAAEhB,GAAE,cAAaiB,KAAEjB,GAAE,aAAYI,KAAEJ,GAAE,UAASkB,KAAE,WAASd,KAAE,oBAAkBA,IAAEG,KAAEP,GAAE,aAAYmB,KAAE,WAASZ,KAAE,IAAEA,IAAEa,KAAEpB,GAAE,cAAaqB,KAAE,WAASD,KAAE,IAAEA,IAAEE,KAAEtB,GAAE,eAAcuB,KAAE,WAASD,KAAE,IAAEA,IAAEE,KAAExB,GAAE,YAAWyB,KAAE,WAASD,KAAE,IAAEA,IAAEE,KAAE,KAAK,GAAEC,KAAE,KAAK,SAAS,SAAS,EAAC,GAAEzB,IAAE,GAAEC,IAAE,MAAKE,IAAE,YAAWC,MAAG,SAAQ,UAASG,MAAG,QAAO,YAAWG,MAAG,WAAU,YAAWD,MAAGe,GAAE,OAAO,MAAM,YAAW,WAAUlB,MAAGkB,GAAE,OAAO,MAAM,WAAU,UAAShB,GAAC,CAAC,GAAEkB,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAcR,EAAC;AAAE,UAAAU,MAAGA,GAAE,YAAYD,GAAE,IAAI;AAAE,cAAIE,KAAEF,GAAE,KAAK;AAAE,cAAGtB,IAAE;AAAC,gBAAIyB,KAAE,KAAK,SAAS,SAASD,GAAE,IAAEV,IAAEU,GAAE,IAAEJ,IAAEI,GAAE,QAAMV,KAAEE,IAAEQ,GAAE,SAAON,KAAEE,IAAET,IAAEF,MAAG,eAAc,GAAEC,IAAEE,IAAEJ,EAAC;AAAE,YAAAe,GAAE,aAAaE,GAAE,MAAKH,GAAE,IAAI;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAAS3B,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEH,GAAE,MAAKK,KAAEL,GAAE,GAAEM,KAAE,WAASD,KAAE,IAAEA,IAAEG,KAAER,GAAE,GAAES,KAAE,WAASD,KAAE,IAAEA,IAAEG,KAAEX,GAAE,OAAMY,KAAE,WAASD,KAAE,KAAGA,IAAED,KAAEV,GAAE,QAAOc,KAAE,WAASJ,KAAE,KAAGA,IAAEK,KAAEf,GAAE,UAASa,KAAE,WAASE,KAAE,oBAAkBA,IAAEC,KAAEd,GAAE,QAAQ,IAAI,MAAM,MAAMC,EAAC;AAAE,UAAAa,GAAE,KAAKJ,IAAEE,EAAC,EAAE,KAAKR,IAAEG,EAAC;AAAE,cAAIQ,KAAEf,GAAE,QAAQ,IAAI,OAAO,cAAcW,EAAC;AAAE,iBAAOI,MAAGA,GAAE,YAAYD,GAAE,IAAI,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAAShB,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,sBAAsB,EAAC,QAAOF,IAAE,cAAaC,IAAE,SAAQC,IAAE,MAAK,SAAQ,eAAcA,GAAE,mBAAkB,CAAC,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAASF,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,sBAAsB,EAAC,QAAOF,IAAE,cAAaC,IAAE,SAAQC,IAAE,MAAK,SAAQ,eAAcA,GAAE,mBAAkB,CAAC,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAASF,IAAEC,IAAEC,IAAE;AAAC,iBAAO,WAAS,KAAK,eAAa,KAAK,aAAWA,GAAE,EAAE,QAAQ,kBAAiB,KAAK,sBAAsB,EAAC,QAAOF,IAAE,cAAaC,IAAE,SAAQC,IAAE,MAAK,SAAQ,eAAcA,GAAE,mBAAkB,CAAC,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAED,GAAE,QAAOE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,SAAQK,KAAEL,GAAE,MAAKM,KAAEN,GAAE,eAAcQ,KAAEL,IAAEM,KAAED,GAAE,GAAEG,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAc,eAAe,OAAOJ,IAAE,cAAc,CAAC,GAAEO,KAAED,GAAE,WAAW,SAAO,GAAED,KAAE,IAAIsB,MAAElB,KAAE,OAAO,OAAO,CAAC,GAAE,YAAUT,KAAEK,GAAE,kBAAgB,YAAUL,KAAEK,GAAE,kBAAgBA,GAAE,eAAe,GAAEK,KAAEI,GAAE,OAAOL,IAAEb,EAAC;AAAE,kBAAOI,IAAE;AAAA,YAAC,KAAI;AAAQ,mBAAK,mBAAmBU,IAAEJ,IAAEC,EAAC;AAAE;AAAA,YAAM,KAAI;AAAQ,mBAAK,mBAAmBG,IAAEJ,IAAEC,EAAC;AAAE;AAAA,YAAM,KAAI;AAAQ,mBAAK,mBAAmBG,IAAEJ,IAAEC,EAAC;AAAA,UAAC;AAAC,cAAIC,KAAEJ,GAAE,QAAQ,IAAI,OAAO,cAAc,eAAe,OAAOJ,IAAE,2BAA2B,EAAE,OAAOA,IAAE,yBAAyB,EAAE,OAAOO,IAAE,IAAI,CAAC,GAAEI,KAAE,KAAK,QAAQ,oBAAoBH,IAAEE,EAAC;AAAE,iBAAOC,MAAGL,GAAE,aAAaK,GAAE,MAAKH,EAAC,GAAEX,MAAGO,GAAE,QAAQ,OAAO,cAAc,KAAK,EAAC,SAAQD,IAAE,IAAGO,GAAE,KAAGA,GAAE,KAAGI,GAAE,SAAS,GAAE,QAAOb,IAAE,OAAM,iBAAgB,QAAOL,GAAC,CAAC,GAAEE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASH,IAAE;AAAC,mBAAQC,KAAED,GAAE,GAAEE,KAAED,GAAE,QAAQ,IAAI,OAAO,iBAAiB,6FAA6F,GAAEE,KAAEF,GAAE,QAAQ,OAAO,cAAc,SAAO,GAAEE,MAAG,GAAEA,KAAI,eAAYF,GAAE,QAAQ,OAAO,cAAcE,EAAC,EAAE,SAAO,oBAAkBF,GAAE,QAAQ,OAAO,cAAcE,EAAC,EAAE,SAAOF,GAAE,QAAQ,OAAO,cAAc,OAAOE,IAAE,CAAC;AAAE,UAAAD,KAAEiB,GAAE,YAAYjB,EAAC,GAAE,MAAM,UAAU,QAAQ,KAAKA,IAAG,SAASF,IAAE;AAAC,mBAAKA,GAAE,aAAY,CAAAA,GAAE,YAAYA,GAAE,UAAU;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAEF,GAAE,GAAEG,KAAED,GAAE,QAAQ,IAAI,OAAO,iBAAiB,IAAI,OAAOD,EAAC,CAAC;AAAE,UAAAE,OAAID,GAAE,QAAQ,OAAO,cAAc,IAAK,SAASF,IAAEG,IAAE;AAAC,YAAAH,GAAE,OAAKC,MAAGC,GAAE,QAAQ,OAAO,cAAc,OAAOC,IAAE,CAAC;AAAA,UAAC,CAAE,GAAE,MAAM,UAAU,QAAQ,KAAKA,IAAG,SAASH,IAAE;AAAC,YAAAA,GAAE,cAAc,YAAYA,EAAC;AAAA,UAAC,CAAE;AAAA,QAAE,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAp+jB,UAAs+jBkC,KAAE,SAASlC,IAAE;AAAC,YAAIC,IAAEC,KAAEF,GAAE,YAAWG,KAAEH,GAAE,KAAIK,KAAEL,GAAE,aAAYM,KAAEN,GAAE,gBAAeQ,KAAER,GAAE,IAAGS,KAAET,GAAE,IAAGW,KAAEX,GAAE,GAAEY,KAAED,GAAE,QAAQ,iBAAiBN,EAAC,EAAEC,EAAC,GAAEI,KAAEC,GAAE,QAAQ,eAAeN,EAAC,EAAEC,EAAC,GAAEQ,KAAEH,GAAE,QAAQ,OAAOL,EAAC,GAAES,KAAEJ,GAAE,OAAO,OAAON,EAAC,EAAE,OAAKM,GAAE,OAAO,OAAON,EAAC,EAAE,OAAK,IAAGQ,KAAEF,GAAE,QAAQ,gBAAeK,KAAEL,GAAE,OAAO,QAAQ,EAAE,MAAM,WAAUM,KAAE,EAAC,GAAEN,IAAE,aAAYN,IAAE,gBAAeC,IAAE,OAAMM,IAAE,KAAIF,GAAC;AAAE,SAAC,cAAY,OAAOM,OAAID,KAAEC,GAAED,IAAEE,EAAC,IAAG,UAAQhB,KAAEU,GAAE,OAAO,OAAON,EAAC,EAAE,KAAKC,EAAC,MAAI,WAASL,MAAGA,GAAE,MAAIa,KAAEH,GAAE,OAAO,OAAON,EAAC,EAAE,KAAKC,EAAC,EAAE,IAAGJ,OAAI,eAAaS,GAAE,OAAO,MAAM,SAAOG,KAAE,IAAIa,GAAExB,EAAC,EAAE,aAAaQ,GAAE,QAAQ,gBAAeG,IAAEA,IAAE,EAAC,GAAE,QAAO,eAAc,IAAIY,GAAEvB,EAAC,EAAE,YAAW,GAAEQ,GAAC,CAAC;AAAG,sBAAY,OAAOE,OAAIC,KAAED,GAAEC,IAAEG,EAAC,IAAG,OAAO,SAAST,EAAC,KAAG,OAAO,SAASC,EAAC,MAAIG,KAAEJ,IAAEE,KAAED;AAAG,YAAIL,KAAE,IAAGc,KAAE,IAAGX,KAAEI,GAAE,QAAQ,OAAON,EAAC;AAAE,YAAG,WAASM,GAAE,OAAO,QAAQ,EAAE,UAAU,KAAG,eAAaA,GAAE,OAAO,MAAM,MAAK;AAAC,cAAIQ,KAAE,IAAIO,GAAEvB,EAAC;AAAE,UAAAC,KAAEe,GAAE,WAAWA,GAAE,QAAQP,EAAC,GAAED,GAAE,OAAO,QAAQ,EAAE,MAAM,GAAEO,KAAEC,GAAE,WAAWA,GAAE,QAAQT,EAAC,GAAEC,GAAE,OAAO,QAAQ,EAAE,MAAM;AAAA,QAAC,MAAM,CAAAP,KAAEQ,IAAEM,KAAER;AAAA,YAAO,CAAAN,KAAEO,GAAE,OAAO,QAAQ,EAAE,UAAUC,EAAC,GAAEM,KAAEP,GAAE,OAAO,QAAQ,EAAE,UAAUD,EAAC;AAAE,eAAM,EAAC,OAAME,IAAE,KAAIF,IAAE,UAASN,IAAE,QAAOc,IAAE,QAAOJ,IAAE,OAAMP,IAAE,YAAWQ,GAAC;AAAA,MAAC;AAArjmB,UAAujmBoB,KAAE,SAASnC,IAAE;AAAC,YAAIC,KAAED,GAAE,OAAME,KAAEF,GAAE,YAAWG,KAAEH,GAAE,QAAOK,KAAEL,GAAE,OAAMM,KAAEN,GAAE,KAAIQ,KAAER,GAAE,aAAYS,KAAET,GAAE,gBAAeW,KAAEX,GAAE,IAAI,QAAQ,cAAc,cAAcQ,EAAC;AAAE,QAAAH,KAAEM,GAAE,aAAaN,EAAC,GAAEC,KAAEK,GAAE,aAAaL,EAAC;AAAE,YAAIM,KAAED,GAAE,aAAaX,GAAE,EAAE,QAAQ,OAAOQ,EAAC,EAAEC,EAAC,CAAC,GAAEC,KAAE,uCAAuC,OAAOL,IAAE,iFAAiF,EAAE,OAAOC,IAAE,aAAa;AAAE,eAAM,4FAA0FL,KAAE,QAAMC,MAAG,MAAI,+CAA6CC,KAAE,gBAAcH,GAAE,EAAE,QAAQ,cAAY,gBAAcA,GAAE,EAAE,OAAO,OAAOQ,EAAC,EAAE,QAAM,eAAaR,GAAE,EAAE,OAAO,OAAOQ,EAAC,EAAE,OAAKE,KAAE,SAAS,OAAOE,IAAE,SAAS,IAAEF,MAAG;AAAA,MAAe;AAA1wnB,UAA4wnB0B,KAAE,WAAU;AAAC,iBAASpC,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,OAAKC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,eAAK,KAAK,MAAM,CAAC,EAAE,OAAK,OAAG,KAAK,KAAK,MAAM,CAAC,EAAE,MAAM,OAAK,IAAG,KAAK,KAAK,MAAM,CAAC,EAAE,WAAW,OAAK,OAAG,KAAK,KAAK,MAAM,CAAC,EAAE,UAAU,OAAK,OAAG,KAAK,KAAK,MAAM,CAAC,EAAE,WAAS;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,YAAW,EAAC,QAAO,QAAO,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,QAAO,EAAC,OAAM,GAAE,OAAM,WAAU,GAAE,SAAQ,EAAC,MAAK,GAAE,OAAM,EAAC,YAAW,EAAC,EAAC,GAAE,OAAM,EAAC,YAAW,EAAC,OAAM,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASA,IAAE;AAAC,eAAK,UAAU;AAAE,iBAAOmB,GAAE,OAAOnB,IAAE,EAAC,MAAK,EAAC,MAAK,OAAG,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,GAAE,QAAO,EAAC,MAAK,MAAE,GAAE,OAAM,EAAC,QAAO,EAAC,MAAK,MAAE,GAAE,SAAQ,EAAC,SAAQ,MAAE,GAAE,YAAW,EAAC,MAAK,MAAE,GAAE,WAAU,EAAC,MAAK,MAAE,EAAC,GAAE,OAAM,EAAC,SAAQ,EAAC,MAAK,MAAE,GAAE,MAAK,EAAC,SAAQ,MAAE,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,iBAAO,KAAK,UAAU,GAAE,EAAC,OAAM,EAAC,SAAQ,EAAC,MAAK,MAAE,GAAE,MAAK,EAAC,SAAQ,MAAE,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAG,WAAU,SAASA,IAAEC,IAAE;AAAC,gBAAIC,KAAED,GAAE,EAAE,OAAO,OAAOA,GAAE,WAAW,EAAE;AAAK,mBAAO,SAAOD,KAAEE,KAAE,OAAKF,KAAE;AAAA,UAAE,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,SAAQ,GAAE,GAAE,MAAK,EAAC,OAAM,EAAC,OAAM,EAAC,MAAK,KAAE,EAAC,GAAE,OAAM,EAAC,OAAM,EAAC,MAAK,MAAE,EAAC,EAAC,GAAE,OAAM,EAAC,UAAS,OAAM,QAAO,EAAC,OAAM,EAAC,UAAS,IAAG,YAAW,IAAG,EAAC,GAAE,SAAQ,EAAC,SAAQ,MAAE,GAAE,YAAW,EAAC,MAAK,MAAE,EAAC,GAAE,SAAQ,EAAC,MAAK,GAAE,OAAM,EAAC,YAAW,EAAC,EAAC,GAAE,QAAO,EAAC,MAAK,MAAE,GAAE,SAAQ,EAAC,QAAO,OAAG,WAAU,MAAG,cAAa,KAAE,GAAE,QAAO,EAAC,OAAM,GAAE,OAAM,WAAU,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,SAAQ,OAAG,YAAW,EAAC,QAAO,QAAO,EAAC,GAAE,aAAY,EAAC,KAAI,EAAC,YAAW,EAAC,UAAS,SAAQ,EAAC,EAAC,GAAE,YAAW,EAAC,OAAM,EAAC,QAAO,CAAC,MAAM,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,EAAC,GAAE,QAAO,EAAC,OAAM,GAAE,SAAQ,QAAO,GAAE,MAAK,EAAC,SAAQ,KAAG,GAAE,QAAO,EAAC,SAAQ,EAAC,OAAM,SAAQ,EAAC,GAAE,SAAQ,EAAC,QAAO,OAAG,WAAU,KAAE,GAAE,OAAM,EAAC,SAAQ,EAAC,SAAQ,MAAE,GAAE,eAAc,WAAU,YAAW,EAAC,OAAM,YAAW,UAAS,QAAO,MAAK,EAAC,MAAK,WAAU,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,QAAO,EAAC,OAAM,EAAC,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,iBAAO,KAAK,UAAU,GAAEe,GAAEA,GAAE,CAAC,GAAE,KAAK,IAAI,CAAC,GAAE,CAAC,GAAE,EAAC,OAAM,EAAC,YAAW,EAAC,QAAO,UAAS,OAAM,KAAI,kBAAiB,EAAC,SAAQ,MAAE,EAAC,EAAC,GAAE,aAAY,EAAC,KAAI,EAAC,YAAW,MAAG,yBAAwB,UAAS,cAAa,GAAE,YAAW,EAAC,UAAS,SAAQ,EAAC,EAAC,GAAE,MAAK,EAAC,MAAK,OAAG,SAAQ,EAAC,MAAK,GAAE,OAAM,EAAC,EAAC,GAAE,OAAM,EAAC,QAAO,EAAC,MAAK,MAAE,GAAE,SAAQ,EAAC,SAAQ,MAAE,GAAE,YAAW,EAAC,MAAK,MAAE,GAAE,WAAU,EAAC,MAAK,MAAE,EAAC,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAIf,KAAE;AAAK,iBAAM,EAAC,QAAO,EAAC,OAAM,GAAE,QAAO,CAAC,MAAM,EAAC,GAAE,MAAK,EAAC,SAAQ,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,SAAQ,EAAC,QAAO,MAAG,QAAO,SAASC,IAAE;AAAC,gBAAIC,KAAED,GAAE,aAAYE,KAAEF,GAAE,gBAAeI,KAAEJ,GAAE;AAAE,mBAAOD,GAAE,eAAeK,IAAEH,IAAEC,IAAE,CAAC,QAAO,QAAO,IAAG,OAAM,OAAO,GAAE,aAAa;AAAA,UAAC,EAAC,GAAE,QAAO,EAAC,QAAO,EAAC,QAAO,EAAC,MAAK,OAAM,EAAC,EAAC,GAAE,OAAM,EAAC,YAAW,EAAC,OAAM,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,cAAIH,KAAE;AAAK,iBAAM,EAAC,OAAM,EAAC,YAAW,EAAC,kBAAiB,EAAC,SAAQ,MAAE,EAAC,EAAC,GAAE,QAAO,EAAC,OAAM,GAAE,QAAO,CAAC,SAAS,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,SAAQ,EAAC,QAAO,MAAG,QAAO,SAASC,IAAE;AAAC,gBAAIC,KAAED,GAAE,aAAYE,KAAEF,GAAE,gBAAeI,KAAEJ,GAAE;AAAE,mBAAOD,GAAE,eAAeK,IAAEH,IAAEC,IAAE,CAAC,WAAU,MAAK,UAAS,MAAK,SAAS,GAAE,SAAS;AAAA,UAAC,EAAC,GAAE,SAAQ,EAAC,MAAK,GAAE,aAAY,GAAE,cAAa,OAAM,GAAE,OAAM,EAAC,YAAW,EAAC,OAAM,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,YAAW,EAAC,kBAAiB,MAAE,EAAC,GAAE,QAAO,EAAC,OAAM,GAAE,SAAQ,SAAQ,GAAE,aAAY,EAAC,KAAI,EAAC,cAAa,GAAE,YAAW,EAAC,UAAS,SAAQ,EAAC,EAAC,GAAE,YAAW,EAAC,SAAQ,OAAG,WAAU,SAASH,IAAEC,IAAE;AAAC,YAAAA,GAAE;AAAI,gBAAIC,KAAED,GAAE,aAAYE,KAAEF,GAAE,gBAAeI,KAAEJ,GAAE,GAAEK,KAAE,WAAU;AAAC,kBAAIN,KAAEK,GAAE,QAAQ,iBAAiBH,EAAC,EAAEC,EAAC;AAAE,qBAAOE,GAAE,QAAQ,eAAeH,EAAC,EAAEC,EAAC,IAAEH;AAAA,YAAC;AAAE,mBAAOK,GAAE,QAAQ,cAAY,eAAaA,GAAE,OAAO,OAAOH,EAAC,EAAE,QAAM,gBAAcG,GAAE,OAAO,OAAOH,EAAC,EAAE,OAAKI,GAAE,IAAEN,KAAEM,GAAE;AAAA,UAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,OAAM,EAAC,QAAO,CAAC,MAAM,EAAC,EAAC,GAAE,SAAQ,EAAC,MAAK,GAAE,GAAE,SAAQ,EAAC,QAAO,OAAG,cAAa,MAAG,QAAO,SAASN,IAAE;AAAC,mBAAOA,GAAE,EAAE,OAAO,eAAaA,GAAE,EAAE,OAAO,YAAY,OAAKA,GAAE,EAAE,OAAO,YAAY,IAAI,aAAW,SAASA,IAAE;AAAC,kBAAIC,KAAEiC,GAAEnB,GAAEA,GAAE,CAAC,GAAEf,EAAC,GAAE,CAAC,GAAE,EAAC,YAAW,KAAE,CAAC,CAAC,GAAEE,KAAED,GAAE,OAAME,KAAEF,GAAE,YAAWI,KAAEJ,GAAE,QAAOK,KAAEL,GAAE,UAASO,KAAEP,GAAE;AAAO,qBAAOkC,GAAEpB,GAAEA,GAAE,CAAC,GAAEf,EAAC,GAAE,CAAC,GAAE,EAAC,OAAME,IAAE,YAAWC,IAAE,QAAOE,IAAE,OAAMC,IAAE,KAAIE,GAAC,CAAC,CAAC;AAAA,YAAC,EAAER,EAAC,IAAE,SAASA,IAAE;AAAC,kBAAIC,KAAEiC,GAAElC,EAAC,GAAEE,KAAED,GAAE,OAAME,KAAEF,GAAE,YAAWI,KAAEJ,GAAE,QAAOK,KAAEL,GAAE,OAAMO,KAAEP,GAAE;AAAI,qBAAOkC,GAAEpB,GAAEA,GAAE,CAAC,GAAEf,EAAC,GAAE,CAAC,GAAE,EAAC,OAAME,IAAE,YAAWC,IAAE,QAAOE,IAAE,OAAMC,IAAE,KAAIE,GAAC,CAAC,CAAC;AAAA,YAAC,EAAER,EAAC;AAAA,UAAC,EAAC,GAAE,OAAM,EAAC,eAAc,WAAU,SAAQ,EAAC,SAAQ,MAAE,GAAE,YAAW,EAAC,QAAO,EAAC,OAAM,EAAC,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASA,IAAE;AAAC,cAAIC,IAAEC;AAAE,iBAAO,UAAQD,KAAED,GAAE,YAAY,QAAM,WAASC,MAAGA,GAAE,cAAYD,GAAE,YAAY,IAAI,YAAU,IAAG,UAAQE,KAAEF,GAAE,YAAY,QAAM,WAASE,MAAGA,GAAE,gBAAcF,GAAE,YAAY,IAAI,cAAY,IAAGA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,iBAAM,EAAC,QAAO,EAAC,OAAM,GAAE,MAAK,EAAC,MAAK,SAAQ,UAAS,EAAC,eAAc,OAAG,OAAM,SAAQ,MAAK,YAAW,aAAY,MAAI,WAAU,KAAG,OAAM,CAAC,GAAE,KAAI,GAAG,EAAC,EAAC,EAAC,GAAE,MAAK,EAAC,MAAK,YAAW,UAAS,EAAC,eAAc,OAAG,OAAM,SAAQ,MAAK,YAAW,aAAY,MAAI,WAAU,KAAG,OAAM,CAAC,GAAE,KAAI,GAAG,EAAC,EAAC,GAAE,SAAQ,EAAC,MAAK,GAAE,OAAM,EAAC,YAAW,EAAC,EAAC,GAAE,SAAQ,EAAC,cAAa,MAAE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAM,EAAC,QAAO,EAAC,OAAM,YAAW,OAAM,EAAC,GAAE,MAAK,EAAC,MAAK,SAAQ,SAAQ,IAAE,GAAE,SAAQ,EAAC,MAAK,EAAC,GAAE,QAAO,EAAC,OAAM,EAAC,QAAO,EAAC,MAAK,OAAM,EAAC,GAAE,QAAO,EAAC,QAAO,EAAC,MAAK,OAAM,EAAC,EAAC,GAAE,SAAQ,EAAC,WAAU,OAAG,QAAO,MAAG,cAAa,MAAG,QAAO,SAASA,IAAE;AAAC,mBAAO,SAASA,IAAE;AAAC,kBAAIC,KAAEiC,GAAElC,EAAC,GAAEE,KAAED,GAAE,OAAME,KAAEF,GAAE,YAAWI,KAAEJ,GAAE,QAAOK,KAAEL,GAAE,OAAMO,KAAEP,GAAE;AAAI,qBAAOkC,GAAEpB,GAAEA,GAAE,CAAC,GAAEf,EAAC,GAAE,CAAC,GAAE,EAAC,OAAME,IAAE,YAAWC,IAAE,QAAOE,IAAE,OAAMC,IAAE,KAAIE,GAAC,CAAC,CAAC;AAAA,YAAC,EAAER,EAAC;AAAA,UAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASA,IAAE;AAAC,iBAAOmB,GAAE,OAAOnB,IAAE,EAAC,OAAM,EAAC,SAAQ,EAAC,cAAa,aAAY,MAAK,MAAE,GAAE,MAAK,EAAC,SAAQ,MAAE,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,QAAO,EAAC,OAAM,EAAC,GAAE,SAAQ,EAAC,SAAQ,MAAE,GAAE,OAAM,EAAC,SAAQ,EAAC,SAAQ,MAAE,EAAC,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,IAAE;AAAC,UAAAA,GAAE,aAAWA,GAAE,cAAY,CAAC,GAAEA,GAAE,WAAW,YAAUA,GAAE,WAAW,aAAW;AAAO,cAAIC,KAAED,GAAE,WAAW;AAAU,iBAAOA,GAAE,MAAM,QAAS,SAASC,IAAEC,IAAE;AAAC,YAAAF,GAAE,MAAME,EAAC,EAAE,MAAI,GAAEF,GAAE,MAAME,EAAC,EAAE,MAAI;AAAA,UAAG,CAAE,GAAE,UAAQF,GAAE,MAAM,SAAOA,GAAE,WAAW,YAAUC,MAAG,SAASD,IAAE;AAAC,mBAAM,YAAU,OAAOA,MAAGA,KAAEA,GAAE,QAAQ,CAAC,IAAE,MAAIA;AAAA,UAAC,IAAGA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,IAAI;AAAE,iBAAOe,GAAEA,GAAE,CAAC,GAAEf,EAAC,GAAE,CAAC,GAAE,EAAC,aAAYe,GAAEA,GAAE,CAAC,GAAEf,GAAE,WAAW,GAAE,CAAC,GAAE,EAAC,KAAIe,GAAEA,GAAE,CAAC,GAAEf,GAAE,YAAY,GAAG,GAAE,CAAC,GAAE,EAAC,yBAAwB,OAAM,yBAAwB,OAAM,CAAC,EAAC,CAAC,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASA,IAAE;AAAC,iBAAOA,GAAE,MAAM,wBAAsB,MAAGA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,UAAAF,GAAE,MAAM,OAAK,WAAUA,GAAE,MAAM,SAAOA,GAAE,MAAM,UAAQ,CAAC,GAAEA,GAAE,MAAM,OAAO,YAAUA,GAAE,MAAM,OAAO,aAAW,SAASA,IAAE;AAAC,mBAAOmB,GAAE,SAASnB,EAAC,IAAE,KAAK,MAAMA,EAAC,IAAEA;AAAA,UAAC;AAAE,cAAIG,KAAEH,GAAE,MAAM,OAAO,WAAUK,KAAEL,GAAE,MAAM,cAAYA,GAAE,MAAM,WAAW,SAAOA,GAAE,MAAM,aAAWA,GAAE;AAAO,iBAAOE,MAAGA,GAAE,WAASG,KAAEH,GAAE,IAAK,SAASF,IAAE;AAAC,mBAAO,MAAM,QAAQA,EAAC,IAAEA,KAAE,OAAOA,EAAC;AAAA,UAAC,CAAE,IAAGK,MAAGA,GAAE,WAASL,GAAE,MAAM,OAAO,YAAU,SAASA,IAAE;AAAC,mBAAOmB,GAAE,SAASnB,EAAC,IAAEG,GAAEE,GAAE,KAAK,MAAML,EAAC,IAAE,CAAC,CAAC,IAAEG,GAAEH,EAAC;AAAA,UAAC,IAAGA,GAAE,MAAM,aAAW,CAAC,GAAEA,GAAE,SAAO,CAAC,GAAEA,GAAE,MAAM,aAAWA,GAAE,MAAM,cAAY,cAAaA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,iBAAM,EAAC,YAAW,EAAC,OAAM,EAAC,QAAO,CAAC,MAAM,EAAC,EAAC,GAAE,SAAQ,EAAC,QAAO,OAAG,WAAU,KAAE,GAAE,OAAM,EAAC,YAAW,EAAC,OAAM,EAAC,EAAC,GAAE,MAAK,EAAC,MAAK,SAAQ,UAAS,EAAC,OAAM,SAAQ,SAAQ,MAAG,gBAAe,MAAI,aAAY,KAAG,WAAU,IAAE,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,iBAAM,EAAC,YAAW,EAAC,SAAQ,MAAE,GAAE,SAAQ,EAAC,QAAO,OAAG,WAAU,KAAE,GAAE,SAAQ,EAAC,MAAK,GAAE,aAAY,GAAE,OAAM,EAAC,YAAW,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,SAAQ,MAAE,GAAE,MAAK,EAAC,SAAQ,EAAC,GAAE,YAAW,EAAC,OAAM,EAAC,QAAO,CAAC,MAAM,EAAC,EAAC,GAAE,QAAO,EAAC,QAAO,CAAC,MAAM,EAAC,GAAE,SAAQ,EAAC,cAAa,MAAG,QAAO,EAAC,MAAK,MAAE,GAAE,GAAE,EAAC,MAAK,MAAE,EAAC,GAAE,QAAO,EAAC,UAAS,OAAM,SAAQ,EAAC,OAAM,SAAQ,EAAC,GAAE,MAAK,EAAC,SAAQ,EAAC,OAAM,GAAE,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,MAAK,EAAC,SAAQ,MAAE,EAAC,GAAE,YAAW,EAAC,OAAM,EAAC,UAAS,IAAG,YAAW,KAAI,QAAO,CAAC,MAAM,EAAC,EAAC,GAAE,QAAO,EAAC,MAAK,MAAG,OAAM,GAAE,QAAO,CAAC,MAAM,EAAC,GAAE,QAAO,EAAC,MAAK,MAAE,GAAE,MAAK,EAAC,SAAQ,GAAE,UAAS,EAAC,OAAM,CAAC,GAAE,GAAG,EAAC,EAAC,GAAE,SAAQ,EAAC,cAAa,MAAG,GAAE,EAAC,MAAK,MAAE,EAAC,GAAE,MAAK,EAAC,SAAQ,EAAC,MAAK,GAAE,OAAM,EAAC,EAAC,GAAE,OAAM,EAAC,YAAW,EAAC,MAAK,MAAE,GAAE,SAAQ,EAAC,SAAQ,MAAE,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,OAAM,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,SAAQ,EAAC,MAAK,MAAE,EAAC,GAAE,aAAY,EAAC,KAAI,EAAC,OAAM,EAAC,QAAO,EAAC,MAAK,MAAE,EAAC,EAAC,EAAC,GAAE,YAAW,EAAC,WAAU,SAASA,IAAE;AAAC,mBAAOA,GAAE,QAAQ,CAAC,IAAE;AAAA,UAAG,GAAE,OAAM,EAAC,QAAO,CAAC,MAAM,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,YAAW,EAAC,SAAQ,KAAE,EAAC,GAAE,QAAO,EAAC,QAAO,CAAC,MAAM,EAAC,GAAE,MAAK,EAAC,SAAQ,GAAE,UAAS,EAAC,OAAM,SAAQ,OAAM,CAAC,GAAE,GAAG,EAAC,EAAC,GAAE,SAAQ,EAAC,OAAM,QAAO,iBAAgB,KAAE,GAAE,QAAO,EAAC,UAAS,QAAO,GAAE,MAAK,EAAC,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,SAAQ,EAAC,MAAK,MAAE,EAAC,GAAE,YAAW,EAAC,WAAU,SAASA,IAAE;AAAC,mBAAOA,GAAE,QAAQ,CAAC,IAAE;AAAA,UAAG,GAAE,OAAM,EAAC,QAAO,CAAC,MAAM,EAAC,GAAE,YAAW,EAAC,SAAQ,MAAE,GAAE,YAAW,EAAC,SAAQ,KAAE,EAAC,GAAE,QAAO,EAAC,QAAO,CAAC,MAAM,EAAC,GAAE,MAAK,EAAC,SAAQ,GAAE,UAAS,EAAC,OAAM,SAAQ,gBAAe,MAAI,OAAM,CAAC,IAAG,GAAG,GAAE,aAAY,GAAE,WAAU,EAAC,EAAC,GAAE,SAAQ,EAAC,OAAM,QAAO,iBAAgB,KAAE,GAAE,QAAO,EAAC,UAAS,QAAO,GAAE,MAAK,EAAC,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,SAAQ,EAAC,MAAK,MAAE,EAAC,GAAE,YAAW,EAAC,WAAU,SAASA,IAAE;AAAC,mBAAOA,GAAE,QAAQ,CAAC,IAAE;AAAA,UAAG,GAAE,SAAQ,MAAE,GAAE,QAAO,EAAC,MAAK,MAAG,OAAM,EAAC,GAAE,MAAK,EAAC,SAAQ,IAAE,GAAE,SAAQ,EAAC,OAAM,QAAO,iBAAgB,KAAE,GAAE,QAAO,EAAC,UAAS,QAAO,GAAE,MAAK,EAAC,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,iBAAO,KAAK,KAAK,MAAM,CAAC,EAAE,OAAO,UAAQ,KAAK,KAAK,MAAM,CAAC,EAAE,OAAO,UAAQ,KAAK,KAAK,MAAM,CAAC,EAAE,OAAO,UAAQ,GAAE,EAAC,YAAW,EAAC,SAAQ,OAAG,OAAM,EAAC,UAAS,OAAM,EAAC,GAAE,QAAO,EAAC,OAAM,EAAC,GAAE,SAAQ,EAAC,MAAK,GAAE,aAAY,GAAE,eAAc,EAAC,GAAE,MAAK,EAAC,SAAQ,IAAE,GAAE,SAAQ,EAAC,QAAO,OAAG,WAAU,MAAG,cAAa,KAAE,GAAE,MAAK,EAAC,MAAK,OAAG,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,GAAE,OAAM,EAAC,QAAO,EAAC,WAAU,SAASA,IAAE;AAAC,mBAAOA;AAAA,UAAC,GAAE,OAAM,EAAC,QAAO,CAAC,SAAS,GAAE,UAAS,OAAM,EAAC,GAAE,SAAQ,EAAC,SAAQ,MAAE,GAAE,YAAW,EAAC,MAAK,MAAE,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAM,EAAC,OAAM,EAAC,YAAW,EAAC,kBAAiB,EAAC,SAAQ,MAAG,OAAM,IAAG,EAAC,GAAE,SAAQ,EAAC,MAAK,MAAE,EAAC,GAAE,MAAK,EAAC,UAAS,EAAC,OAAM,QAAO,gBAAe,KAAG,eAAc,OAAG,MAAK,aAAY,aAAY,GAAE,WAAU,GAAE,OAAM,CAAC,IAAG,IAAG,GAAG,EAAC,EAAC,GAAE,QAAO,EAAC,MAAK,OAAG,UAAS,QAAO,GAAE,SAAQ,EAAC,SAAQ,OAAG,iBAAgB,KAAE,GAAE,MAAK,EAAC,SAAQ,EAAC,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,QAAO,EAAC,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAEN,GAAE,QAAQ,cAAcC,EAAC,EAAEC,EAAC,GAAEM,KAAER,GAAE,QAAQ,cAAcC,EAAC,EAAEC,EAAC,GAAEO,KAAET,GAAE,QAAQ,cAAcC,EAAC,EAAEC,EAAC,GAAES,KAAEX,GAAE,QAAQ,cAAcC,EAAC,EAAEC,EAAC,GAAEU,KAAEZ,GAAE,QAAQ,cAAcC,EAAC,EAAEC,EAAC;AAAE,iBAAOF,GAAE,OAAO,OAAOC,EAAC,EAAE,QAAMD,GAAE,OAAO,OAAOC,EAAC,EAAE,SAAOI,KAAE,sDAAsD,OAAOL,GAAE,OAAO,OAAOC,EAAC,EAAE,OAAKD,GAAE,OAAO,OAAOC,EAAC,EAAE,OAAK,aAAWA,KAAE,IAAG,YAAY,EAAE,OAAOD,GAAE,QAAQ,OAAOC,EAAC,EAAEC,EAAC,GAAE,2BAA2B,IAAE,yDAAyD,OAAOF,GAAE,OAAO,MAAM,MAAK,IAAI,IAAE,QAAQ,OAAOG,GAAE,CAAC,GAAE,wBAAwB,IAAEG,KAAE,kBAAgB,QAAQ,OAAOH,GAAE,CAAC,GAAE,wBAAwB,IAAEK,KAAE,mBAAiBC,KAAE,QAAQ,OAAON,GAAE,CAAC,GAAE,wBAAwB,IAAEM,KAAE,kBAAgB,MAAI,QAAQ,OAAON,GAAE,CAAC,GAAE,wBAAwB,IAAEQ,KAAE,kBAAgB,QAAQ,OAAOR,GAAE,CAAC,GAAE,wBAAwB,IAAES,KAAE;AAAA,QAAqB,EAAC,CAAC,CAAC,GAAEZ;AAAA,MAAC,EAAE;AAAzk8B,UAA2k8BqC,KAAE,WAAU;AAAC,iBAASrC,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,OAAKC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAED,GAAE,oBAAmBE,KAAE,KAAK,MAAKC,KAAE,IAAI6B,MAAE3B,KAAE,IAAI+B,GAAElC,EAAC;AAAE,eAAK,YAAUA,GAAE,MAAM,MAAKA,KAAE,KAAK,YAAYA,EAAC,GAAEA,KAAE,KAAK,kBAAkBA,EAAC;AAAE,cAAII,KAAEH,GAAE,KAAK,GAAEK,KAAE,CAAC;AAAE,cAAGN,MAAG,aAAWgB,GAAEhB,EAAC,GAAE;AAAC,gBAAIO,IAAEE,IAAEC,IAAEF,IAAEI,IAAEC,IAAEF,IAAEG,IAAEC,IAAEb,IAAEG,KAAE,CAAC;AAAE,YAAAA,KAAE,OAAK,CAAC,QAAO,QAAO,OAAM,eAAc,WAAU,YAAW,aAAY,UAAS,WAAU,WAAU,WAAU,OAAM,aAAY,SAAQ,SAAQ,WAAW,EAAE,QAAQL,GAAE,MAAM,IAAI,IAAEG,GAAEH,GAAE,MAAM,IAAI,EAAE,IAAEG,GAAE,KAAK,GAAE,UAAQI,KAAEP,GAAE,gBAAc,WAASO,MAAG,UAAQE,KAAEF,GAAE,QAAM,WAASE,MAAGA,GAAE,aAAWJ,KAAEF,GAAE,OAAO,IAAGH,GAAE,MAAM,WAAS,UAAQA,GAAE,MAAM,SAAOK,KAAEF,GAAE,YAAY,IAAG,UAAQO,KAAEV,GAAE,MAAM,UAAQ,WAASU,MAAGA,GAAE,YAAUL,KAAEF,GAAE,MAAME,EAAC,IAAG,UAAQG,KAAER,GAAE,gBAAc,WAASQ,MAAG,UAAQI,KAAEJ,GAAE,SAAO,WAASI,MAAGA,GAAE,iBAAeP,KAAEF,GAAE,MAAM,IAAGH,GAAE,MAAM,WAAS,WAASA,GAAE,MAAM,cAAYA,KAAEG,GAAE,WAAWH,EAAC,IAAG,UAAQa,KAAEb,GAAE,gBAAc,WAASa,MAAG,UAAQF,KAAEE,GAAE,QAAM,WAASF,MAAGA,GAAE,eAAaX,KAAEG,GAAE,SAASH,EAAC,IAAG,KAAK,kBAAkB,OAAO,IAAI,GAAE,KAAK,kBAAkBA,EAAC,GAAEA,GAAE,QAAMA,GAAE,SAAO,OAAO,KAAK,SAAO,CAAC,GAAED,OAAIC,GAAE,MAAM,wBAAsB,SAAK,UAAQc,MAAGd,KAAE,KAAK,0BAA0B,KAAK,WAAUK,IAAEL,EAAC,GAAG,MAAM,cAAY,WAASc,MAAGA,GAAE,WAAS,UAAQC,KAAE,OAAO,KAAK,UAAQ,WAASA,MAAG,UAAQb,KAAEa,GAAE,cAAY,WAASb,MAAGA,GAAE,aAAWG,KAAEF,GAAE,UAAUE,EAAC,IAAGC,KAAEW,GAAE,OAAOb,IAAEC,EAAC;AAAA,UAAC;AAAC,cAAIa,KAAED,GAAE,OAAOX,IAAE,OAAO,IAAI;AAAE,iBAAOF,KAAEa,GAAE,OAAOC,IAAElB,EAAC,GAAEI,KAAE,KAAK,sBAAsBA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASN,IAAEC,IAAEC,IAAE;AAAC,cAAIC,IAAEE,IAAEC,KAAE,IAAI8B,GAAElC,EAAC,GAAEM,MAAG,UAAQR,MAAG,cAAYA,QAAK,UAAQG,KAAED,GAAE,gBAAc,WAASC,MAAG,UAAQE,KAAEF,GAAE,QAAM,WAASE,KAAE,SAAOA,GAAE,aAAYI,KAAE,UAAQT,MAAG,gBAAcA,MAAG,YAAUA,MAAG,YAAUA,MAAG,gBAAcA,MAAG,cAAYA,IAAEW,KAAE,eAAaT,GAAE,MAAM,QAAM,cAAYA,GAAE,MAAM,MAAKU,KAAEV,GAAE,MAAM,gBAAcA,GAAE,MAAM,gBAAcD,GAAE,SAAOA,GAAE,MAAM;AAAc,iBAAOO,MAAGC,MAAG,CAACE,MAAG,cAAYC,OAAIV,KAAEI,GAAE,oBAAoBJ,EAAC,IAAGA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,IAAI8B;AAAE,WAAC,WAAShC,GAAE,SAAO,CAACA,GAAE,SAAO,MAAM,QAAQA,GAAE,KAAK,KAAG,MAAIA,GAAE,MAAM,YAAUA,GAAE,QAAM,CAAC,IAAGA,GAAE,MAAM,gBAAc,SAAO,OAAO,KAAK,SAAO,OAAO,KAAK,MAAM,gBAAc,UAAQA,GAAE,QAAMmB,GAAE,OAAOnB,GAAE,OAAM,OAAO,KAAK,KAAK,IAAGA,GAAE,MAAM,gBAAc,QAAMA,GAAE,QAAM,CAACmB,GAAE,OAAOjB,GAAE,OAAMF,GAAE,KAAK,CAAC,IAAEA,GAAE,QAAMmB,GAAE,YAAYnB,GAAE,OAAME,GAAE,KAAK;AAAE,cAAIC,KAAE;AAAG,UAAAH,GAAE,MAAM,QAAS,SAASA,IAAE;AAAC,YAAAA,GAAE,gBAAcG,KAAE;AAAA,UAAG,CAAE;AAAE,cAAIE,KAAEL,GAAE;AAAO,iBAAOC,MAAG,CAACI,OAAIA,KAAEJ,GAAE,OAAO,SAAQE,MAAGE,GAAE,WAASL,GAAE,MAAM,UAAQK,GAAE,WAASL,GAAE,QAAMK,GAAE,IAAK,SAASJ,IAAEE,IAAE;AAAC,gBAAGF,GAAE,SAAOI,GAAEF,EAAC,EAAE,OAAK,UAAU,OAAOA,KAAE,CAAC,IAAGH,GAAE,MAAMG,EAAC,EAAE,QAAOH,GAAE,MAAMG,EAAC,EAAE,aAAWE,GAAEF,EAAC,EAAE,MAAKH,GAAE,MAAMG,EAAC;AAAE,gBAAIG,KAAEa,GAAE,OAAOjB,GAAE,OAAMF,GAAE,MAAM,CAAC,CAAC;AAAE,mBAAOM,GAAE,OAAK,OAAGA;AAAA,UAAC,CAAE,IAAGH,MAAGE,GAAE,SAAO,KAAGA,GAAE,WAASL,GAAE,MAAM,UAAQ,QAAQ,KAAK,gFAAgF,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAE;AAAC,iBAAO,WAASA,GAAE,gBAAcA,GAAE,cAAY,CAAC,GAAEA,GAAE,YAAY,QAAM,CAAC,GAAEA,GAAE,YAAY,QAAM,CAAC,GAAEA,GAAE,YAAY,SAAO,CAAC,IAAGA,KAAE,KAAK,uBAAuBA,EAAC,GAAEA,KAAE,KAAK,uBAAuBA,EAAC,GAAEA,KAAE,KAAK,uBAAuBA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,IAAI+B;AAAE,iBAAOhC,GAAE,YAAY,QAAMmB,GAAE,YAAY,WAASnB,GAAE,YAAY,QAAMA,GAAE,YAAY,QAAM,CAAC,GAAEC,GAAE,eAAe,GAAED;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,IAAI+B;AAAE,iBAAOhC,GAAE,YAAY,QAAMmB,GAAE,YAAY,WAASnB,GAAE,YAAY,QAAMA,GAAE,YAAY,QAAM,CAAC,GAAEC,GAAE,eAAe,GAAED;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,IAAI+B;AAAE,iBAAOhC,GAAE,YAAY,SAAOmB,GAAE,YAAY,WAASnB,GAAE,YAAY,SAAOA,GAAE,YAAY,SAAO,CAAC,GAAEC,GAAE,eAAe,GAAED;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAE;AAAC,UAAAA,GAAE,SAAO,WAASA,GAAE,MAAM,SAAOA,GAAE,YAAUA,GAAE,UAAQ,CAAC,IAAG,YAAUA,GAAE,QAAQ,UAAQA,GAAE,QAAQ,QAAM,SAAQA,GAAE,MAAM,cAAYA,GAAE,MAAM,YAAU,YAAWA,GAAE,MAAM,YAAUA,GAAE,MAAM,UAAQ;AAAA,QAAY,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAED;AAAE,cAAGC,GAAE,QAAQ,UAAQA,GAAE,QAAQ,UAAU,OAAM,IAAI,MAAM,oHAAoH;AAAE,cAAG,UAAQA,GAAE,MAAM,QAAMA,GAAE,YAAY,IAAI,YAAW;AAAC,gBAAGA,GAAE,MAAM,SAAO,EAAE,OAAM,IAAI,MAAM,gHAAgH;AAAE,YAAAA,GAAE,MAAM,CAAC,EAAE,aAAWA,GAAE,MAAM,CAAC,EAAE,WAAS,OAAIA,GAAE,MAAM,QAAQ,UAAQ,OAAGA,GAAE,MAAM,CAAC,EAAE,QAAQ,UAAQ,OAAGA,GAAE,MAAM,KAAK,UAAQ;AAAA,UAAE;AAAC,iBAAM,UAAQA,GAAE,MAAM,QAAM,eAAaA,GAAE,MAAM,QAAMA,GAAE,QAAQ,UAAQ,eAAaA,GAAE,MAAM,WAAW,SAAOA,GAAE,OAAO,SAAO,MAAIA,GAAE,MAAM,WAAW,QAAM,cAAa,kBAAgBA,GAAE,MAAM,QAAM,cAAYA,GAAE,MAAM,QAAMA,GAAE,MAAM,CAAC,EAAE,aAAW,QAAQ,KAAK,sBAAsB,OAAOA,GAAE,MAAM,MAAK,0BAA0B,CAAC,GAAEA,GAAE,MAAM,CAAC,EAAE,WAAS,QAAIA;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAnulC,UAAqulCsC,KAAE,WAAU;AAAC,iBAAStC,KAAG;AAAC,UAAAE,GAAE,MAAKF,EAAC;AAAA,QAAC;AAAC,eAAOK,GAAEL,IAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAE;AAAC,UAAAA,GAAE,SAAO,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,mBAAiB,CAAC,GAAEA,GAAE,iBAAe,CAAC,GAAEA,GAAE,cAAY,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,cAAY,CAAC,GAAEA,GAAE,UAAQ,CAAC,GAAEA,GAAE,UAAQ,CAAC,GAAEA,GAAE,cAAY,CAAC,GAAEA,GAAE,eAAa,CAAC,GAAEA,GAAE,YAAU,CAAC,GAAEA,GAAE,eAAa,CAAC,GAAEA,GAAE,sBAAoB,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,SAAO,CAAC,GAAEA,GAAE,iBAAe,OAAGA,GAAE,SAAO,CAAC,GAAEA,GAAE,YAAU,CAAC,GAAEA,GAAE,aAAW,CAAC,GAAEA,GAAE,aAAW,CAAC,GAAEA,GAAE,kBAAgB,OAAGA,GAAE,eAAa,CAAC,GAAEA,GAAE,iBAAe,CAAC,GAAEA,GAAE,kBAAgB,CAAC,GAAEA,GAAE,mBAAiB,OAAGA,GAAE,cAAY,MAAKA,GAAE,uBAAqB,MAAKA,GAAE,qBAAmB,GAAEA,GAAE,kBAAgB,CAAC,GAAEA,GAAE,cAAY,CAAC,GAAEA,GAAE,kBAAgB,CAAC,GAAEA,GAAE,aAAW,OAAGA,GAAE,wBAAsB,OAAGA,GAAE,yBAAuB,OAAGA,GAAE,YAAU,OAAGA,GAAE,eAAa,OAAGA,GAAE,kBAAgB,OAAGA,GAAE,OAAK,CAAC,OAAO,WAAUA,GAAE,OAAK,OAAO,WAAUA,GAAE,UAAQ,CAAC,GAAEA,GAAE,UAAQ,CAAC,GAAEA,GAAE,OAAK,CAAC,OAAO,WAAUA,GAAE,OAAK,OAAO,WAAUA,GAAE,cAAY,CAAC,OAAO,WAAUA,GAAE,cAAY,OAAO,WAAUA,GAAE,UAAQ,GAAEA,GAAE,UAAQ,OAAO,WAAUA,GAAE,OAAK,OAAO,WAAUA,GAAE,OAAK,CAAC,OAAO,WAAUA,GAAE,WAAS,OAAO,WAAUA,GAAE,aAAW,CAAC,GAAEA,GAAE,aAAW,MAAKA,GAAE,sBAAoB,CAAC,GAAEA,GAAE,gBAAc,CAAC,GAAEA,GAAE,eAAa,CAAC,GAAEA,GAAE,uBAAqB,GAAEA,GAAE,gBAAc,GAAEA,GAAE,SAAO,GAAEA,GAAE,SAAO,CAAC,GAAEA,GAAE,SAAO,GAAEA,GAAE,aAAW,GAAEA,GAAE,cAAY,GAAEA,GAAE,sBAAoB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,IAAE;AAAC,iBAAM,EAAC,SAAQ,MAAK,MAAK,MAAK,QAAO,EAAC,aAAY,CAAC,GAAE,SAAQ,CAAC,GAAE,SAAQ,CAAC,GAAE,SAAQ,CAAC,GAAE,WAAU,CAAC,GAAE,oBAAmB,CAAC,GAAE,QAAO,CAAC,GAAE,UAAS,CAAC,EAAC,GAAE,QAAO,CAAC,GAAE,SAAQ,MAAK,SAAQ,MAAK,MAAK,EAAC,QAAO,CAAC,EAAC,GAAE,QAAO,EAAC,QAAO,CAAC,EAAC,GAAE,YAAW,EAAC,OAAM,EAAC,QAAO,CAAC,EAAC,EAAC,GAAE,eAAc,EAAC,MAAK,EAAC,QAAO,CAAC,EAAC,EAAC,GAAE,SAAQ,EAAC,QAAO,CAAC,GAAE,MAAKA,GAAE,QAAQ,MAAK,aAAY,EAAC,GAAE,gBAAe,OAAG,eAAc,kBAAiB,UAAQ,UAAU,kBAAiB,SAAQ,OAAG,cAAa,OAAG,eAAc,MAAK,eAAc,CAAC,GAAE,WAAU,CAAC,GAAE,WAAU,CAAC,GAAE,cAAa,MAAK,QAAO,CAAC,GAAE,iBAAgB,CAAC,GAAE,kBAAiB,OAAG,oBAAmB,OAAG,iBAAgB,CAAC,GAAE,wBAAuB,CAAC,GAAE,0BAAyB,CAAC,GAAE,iCAAgC,CAAC,GAAE,cAAa,CAAC,GAAE,oBAAmB,OAAG,qBAAoB,IAAG,wBAAuB,IAAG,oBAAmB,CAAC,GAAE,iBAAgB,OAAG,oBAAmB,CAAC,GAAE,qBAAoB,GAAE,YAAW,GAAE,WAAU,QAAO,aAAY,WAASA,GAAE,MAAM,QAAQ,gBAAcA,GAAE,MAAM,QAAQ,MAAM,QAAMA,GAAE,MAAM,KAAK,SAAQ,YAAW,UAAQA,GAAE,MAAM,QAAQ,gBAAcA,GAAE,MAAM,QAAQ,MAAM,KAAI,kBAAiB,gBAAcA,GAAE,MAAM,QAAQ,gBAAcA,GAAE,MAAM,QAAQ,MAAM,WAAU,OAAM,MAAK,WAAU,OAAG,oBAAmB,CAAC,GAAE,eAAc,QAAO,eAAc,GAAE,OAAM,GAAE,OAAM,8BAA6B,UAAS,GAAE,WAAU,GAAE,QAAO,OAAG,QAAO,CAAC,GAAE,KAAI,CAAC,GAAE,QAAO,EAAC,eAAc,CAAC,EAAC,GAAE,eAAc,MAAG,uBAAsB,OAAG,wBAAuB,OAAG,iBAAgB,CAAC,GAAE,YAAW,MAAG,WAAU,OAAG,cAAaA,GAAE,YAAY,KAAK,cAAa,SAAQ,OAAG,aAAY,MAAK,aAAY,OAAG,aAAY,OAAG,eAAc,CAAC,GAAE,oBAAmB,MAAG,aAAY,CAAC,GAAE,iBAAgB,CAAC,GAAE,4BAA2B,CAAC,GAAE,eAAc,OAAG,QAAO,MAAK,QAAO,OAAG,WAAU,GAAE,YAAW,GAAE,eAAc,OAAG,eAAc,OAAG,iBAAgB,QAAO,kBAAiB,CAAC,GAAE,uBAAsB,QAAO,gBAAe,QAAO,OAAM,QAAO,cAAa,QAAO,mBAAkB,OAAM,mBAAkB,GAAE,wBAAuB,GAAE,kBAAiB,GAAE,kBAAiB,GAAE,QAAO,GAAE,QAAO,GAAE,YAAW,GAAE,YAAW,GAAE,iBAAgB,CAAC,GAAE,aAAY,CAAC,GAAE,iBAAgB,GAAE,iBAAgB,GAAE,SAAQ,MAAK,wBAAuB,CAAC,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,EAAE,GAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,uBAAsB,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAAE,gBAAe,CAAC,GAAE,uBAAsB,CAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,WAAWD,EAAC;AAAE,iBAAO,KAAK,eAAeC,EAAC,GAAEA,GAAE,gBAAckB,GAAE,OAAO,CAAC,GAAEnB,EAAC,GAAEC,GAAE,gBAAckB,GAAE,MAAMnB,GAAE,MAAM,GAAEC,GAAE,YAAUkB,GAAE,MAAMlB,GAAE,cAAc,KAAK,GAAEA,GAAE,YAAUkB,GAAE,MAAMlB,GAAE,cAAc,KAAK,GAAEA;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAvttC,UAAyttCuC,KAAE,WAAU;AAAC,iBAASvC,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,OAAKC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,cAAIA,KAAE,IAAIqC,GAAE,KAAK,IAAI,EAAE,KAAK,EAAC,oBAAmB,MAAE,CAAC;AAAE,iBAAM,EAAC,QAAOrC,IAAE,SAAS,IAAIsC,KAAG,KAAKtC,EAAC,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAx5tC,UAA05tCwC,KAAE,WAAU;AAAC,iBAASxC,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,OAAK,MAAK,KAAK,cAAY,GAAE,KAAK,aAAW,CAAC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAOE,KAAE,SAASF,GAAE,QAAQ,WAAU,EAAE,GAAEI,KAAE,SAASJ,GAAE,QAAQ,YAAW,EAAE,GAAEK,KAAEH,KAAEE,KAAEF,KAAEE,IAAEG,KAAER,GAAE,OAAMS,KAAE,GAAEE,KAAE;AAAE,qBAASX,GAAE,SAAO,WAASA,GAAE,SAAO,WAASE,GAAE,KAAK,MAAM,SAAO,WAASA,GAAE,KAAK,MAAM,UAAQO,KAAEP,GAAE,KAAK,MAAM,QAAM,GAAES,KAAET,GAAE,KAAK,MAAM,WAASO,KAAEH,KAAE,GAAEK,KAAEL,OAAIG,KAAET,GAAE,OAAMW,KAAEX,GAAE;AAAQ,cAAIY,KAAE,SAAS,gBAAgBX,GAAE,QAAQ,OAAM,SAAS;AAAE,UAAAqB,GAAE,SAASV,IAAE,EAAC,IAAGZ,GAAE,WAAU,cAAaA,GAAE,eAAaA,GAAE,eAAa,kBAAiB,OAAMS,KAAE,MAAK,QAAOE,KAAE,KAAI,CAAC;AAAE,cAAID,KAAE,SAAS,gBAAgBT,GAAE,QAAQ,OAAM,OAAO;AAAE,UAAAW,GAAE,YAAYF,EAAC,GAAEA,GAAE,eAAe,OAAO,IAAI,OAAM,QAAOF,EAAC,GAAEc,GAAE,SAASZ,IAAE,EAAC,GAAE,GAAE,GAAE,GAAE,qBAAoB,QAAO,OAAMD,KAAE,MAAK,QAAOE,KAAE,KAAI,CAAC,GAAED,GAAE,MAAM,UAAQV,GAAE,SAAQC,GAAE,QAAQ,IAAI,OAAO,KAAK,YAAYW,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASZ,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,MAAM;AAAK,kBAAO,UAAQC,MAAG,eAAaA,OAAID,GAAE,OAAO,YAAY,IAAI,eAAa,cAAYC,MAAG,cAAYA,KAAE,KAAK,cAAYF,GAAE,eAAa,KAAK,cAAYA,GAAE,eAAaC,GAAE,QAAQ,OAAO,QAAO,KAAK;AAAA,QAAW,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,eAAK,OAAKD;AAAE,cAAIE,IAAEC,IAAEE,IAAEC,KAAE,KAAK,EAAE;AAAO,eAAK,cAAY,KAAK,eAAeN,EAAC;AAAE,cAAIQ,KAAE,KAAK,cAAc,EAAE,KAAK,WAAW;AAAE,qBAASP,GAAE,QAAQ,aAAa,KAAK,WAAW,MAAIO,KAAEP,GAAE,QAAQ,aAAa,KAAK,WAAW,IAAG,cAAY,OAAOO,OAAIA,KAAEA,GAAE,EAAC,aAAY,KAAK,aAAY,gBAAeR,GAAE,gBAAe,OAAMA,GAAE,OAAM,GAAEC,GAAC,CAAC;AAAG,cAAIQ,KAAET,GAAE,WAASA,GAAE,WAAS,KAAK,YAAY,KAAK,WAAW,GAAEW,KAAE,MAAM,QAAQL,GAAE,KAAK,OAAO,IAAEA,GAAE,KAAK,QAAQ,KAAK,WAAW,IAAEA,GAAE,KAAK;AAAQ,UAAAN,GAAE,UAAQQ,KAAER,GAAE,QAAOQ,OAAIA,KAAE,QAAO,QAAQ,KAAK,8BAA8B;AAAG,cAAII,KAAEJ;AAAE,cAAG,OAAKA,GAAE,QAAQ,KAAK,IAAEA,GAAE,SAAO,MAAII,KAAEO,GAAE,UAAUX,IAAEG,EAAC,KAAGH,GAAE,QAAQ,MAAM,IAAE,OAAKG,KAAEQ,GAAE,mBAAmBX,EAAC,IAAGR,GAAE,YAAUW,KAAEX,GAAE,UAAS,cAAYS,OAAIN,KAAE,KAAK,kBAAkB,EAAC,YAAWH,GAAE,YAAW,aAAYG,IAAE,WAAUK,IAAE,aAAYG,IAAE,cAAaC,GAAC,CAAC,IAAG,eAAaH,OAAIJ,KAAE,KAAK,mBAAmB,EAAC,YAAWL,GAAE,YAAW,WAAUQ,IAAE,aAAYG,IAAE,GAAE,KAAK,YAAW,CAAC,IAAG,YAAUF,IAAE;AAAC,gBAAIC,KAAEJ,GAAE,KAAK,MAAM,KAAIQ,KAAEd,GAAE,YAAUA,GAAE,YAAU,IAAGe,KAAE,UAAU,OAAOd,GAAE,QAAQ,IAAI,EAAE,OAAOD,GAAE,eAAa,CAAC,EAAE,OAAOc,EAAC;AAAE,mBAAK,KAAK,WAAW,QAAQC,EAAC,MAAI,KAAK,eAAe,EAAC,SAAQJ,IAAE,OAAM,MAAM,QAAQD,EAAC,IAAEV,GAAE,eAAaU,GAAE,SAAOA,GAAEV,GAAE,YAAY,IAAEU,GAAE,CAAC,IAAEA,IAAE,OAAMV,GAAE,QAAMA,GAAE,QAAM,QAAO,QAAOA,GAAE,SAAOA,GAAE,SAAO,QAAO,cAAaA,GAAE,cAAa,WAAUe,GAAC,CAAC,GAAE,KAAK,WAAW,KAAKA,EAAC,IAAGb,KAAE,QAAQ,OAAOa,IAAE,GAAG;AAAA,UAAC,MAAM,CAAAb,KAAE,eAAaO,KAAEJ,KAAE,cAAYI,KAAEN,KAAES;AAAE,iBAAOZ,GAAE,UAAQE,KAAEU,KAAGV;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAO,MAAM,QAAQA,GAAE,OAAO,KAAK,IAAI,IAAEA,GAAE,OAAO,KAAK,KAAKD,EAAC,IAAEC,GAAE,OAAO,KAAK;AAAA,QAAI,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAOE,KAAE,KAAK,MAAKC,KAAE,CAAC;AAAE,iBAAOH,GAAE,QAAQ,cAAY,WAASA,GAAE,OAAO,OAAO,KAAK,WAAW,EAAE,OAAK,MAAM,QAAQA,GAAE,QAAQ,OAAO,MAAM,IAAEG,KAAEH,GAAE,QAAQ,OAAO,SAAOG,GAAE,KAAKH,GAAE,QAAQ,OAAO,MAAM,IAAE,MAAM,QAAQA,GAAE,QAAQ,KAAK,MAAM,IAAEG,KAAEH,GAAE,QAAQ,KAAK,SAAOG,GAAE,KAAKH,GAAE,QAAQ,KAAK,MAAM,IAAE,WAASC,GAAE,MAAM,OAAK,MAAM,QAAQD,GAAE,QAAQ,OAAO,MAAM,IAAEG,KAAEH,GAAE,QAAQ,OAAO,SAAOG,GAAE,KAAKH,GAAE,QAAQ,OAAO,MAAM,IAAE,MAAM,QAAQA,GAAE,QAAQ,KAAK,MAAM,IAAEG,KAAEH,GAAE,QAAQ,KAAK,SAAOG,GAAE,KAAKH,GAAE,QAAQ,KAAK,MAAM,GAAE,WAASE,GAAE,eAAaC,KAAE,CAAC,GAAE,MAAM,QAAQD,GAAE,UAAU,IAAEC,KAAED,GAAE,WAAW,MAAM,IAAEC,GAAE,KAAKD,GAAE,UAAU,IAAGC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAED,GAAE,YAAWE,KAAEF,GAAE,aAAYG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,aAAYM,KAAEN,GAAE,cAAaQ,KAAE,KAAK,EAAE,OAAO;AAAK,UAAAP,OAAIO,KAAEP;AAAG,cAAIQ,KAAE,KAAK,MAAKE,KAAE,IAAIW,GAAE,KAAK,GAAG,GAAEV,KAAE,MAAM,QAAQJ,GAAE,QAAQ,WAAW,IAAEA,GAAE,QAAQ,YAAY,KAAK,WAAW,IAAEA,GAAE,QAAQ,aAAYE,KAAEP;AAAE,gBAAM,QAAQK,GAAE,QAAQ,KAAK,IAAEN,KAAE,WAASM,GAAE,QAAQ,MAAMC,GAAE,YAAY,IAAEE,GAAE,YAAYH,GAAE,QAAQ,MAAMC,GAAE,YAAY,GAAED,GAAE,QAAQ,OAAMA,GAAE,QAAQ,QAAOE,IAAEE,IAAEP,EAAC,IAAEC,KAAEJ,KAAES,GAAE,YAAYH,GAAE,QAAQ,OAAMA,GAAE,QAAQ,OAAMA,GAAE,QAAQ,QAAOE,IAAEE,IAAEP,EAAC;AAAE,iBAAOH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAED,GAAE,WAAUE,KAAEF,GAAE,aAAYG,KAAEH,GAAE,YAAWK,KAAEL,GAAE,GAAEM,KAAE,KAAK,EAAE,OAAO;AAAK,UAAAH,OAAIG,KAAES,GAAEA,GAAE,CAAC,GAAET,EAAC,GAAEH,EAAC;AAAG,cAAIK,IAAEC,KAAE,KAAK,MAAKE,KAAE,IAAIW,GAAE,KAAK,GAAG,GAAEV,KAAE,IAAIO,MAAET,KAAEJ,GAAE,SAAS,MAAKQ,KAAEb,IAAEY,KAAE,WAASP,GAAE,SAAS,cAAYJ,KAAE,MAAM,QAAQI,GAAE,SAAS,WAAW,IAAEA,GAAE,SAAS,YAAYD,EAAC,IAAEC,GAAE,SAAS;AAAY,UAAAQ,GAAE,QAAQ,MAAM,IAAE,OAAKD,KAAEM,GAAE,mBAAmBL,EAAC;AAAG,cAAIE,KAAE,WAASV,GAAE,SAAS,YAAUJ,KAAE,MAAM,QAAQI,GAAE,SAAS,SAAS,IAAEA,GAAE,SAAS,UAAUD,EAAC,IAAEC,GAAE,SAAS;AAAU,cAAG,WAASA,GAAE,SAAS,oBAAkB,MAAIA,GAAE,SAAS,iBAAiB,OAAO,CAAAE,KAAE,WAASF,GAAE,SAAS,QAAMM,GAAE,WAAW,KAAG,WAAWN,GAAE,SAAS,cAAc,GAAEL,GAAE,QAAQ,KAAK,IAAE,KAAGkB,GAAE,QAAQlB,EAAC,IAAEA,EAAC,IAAEW,GAAE,WAAW,WAAWN,GAAE,SAAS,cAAc,GAAEL,GAAE,QAAQ,KAAK,IAAE,KAAGkB,GAAE,QAAQlB,EAAC,IAAEA,EAAC;AAAA,mBAAUK,GAAE,SAAS,iBAAiBG,GAAE,YAAY,GAAE;AAAC,gBAAIQ,KAAEX,GAAE,SAAS,iBAAiBG,GAAE,YAAY;AAAE,YAAAD,KAAES,IAAEA,GAAE,QAAQ,MAAM,IAAE,OAAKD,KAAEG,GAAE,mBAAmBF,EAAC;AAAA,UAAE,MAAM,CAAAT,KAAEP;AAAE,cAAGK,GAAE,SAAS,iBAAeQ,KAAER,GAAE,SAAS,eAAcA,GAAE,SAAS,eAAaE,KAAEF,GAAE,SAAS,aAAYA,GAAE,SAAS,eAAc;AAAC,gBAAIF,KAAEU;AAAE,YAAAA,KAAEN,IAAEA,KAAEJ;AAAA,UAAC;AAAC,iBAAOU,GAAE,QAAQ,KAAK,IAAE,OAAKA,KAAEK,GAAE,QAAQL,EAAC,IAAGN,GAAE,QAAQ,KAAK,IAAE,OAAKA,KAAEW,GAAE,QAAQX,EAAC,IAAGG,GAAE,aAAaD,IAAEI,IAAEN,IAAEK,IAAEG,IAAEP,GAAE,MAAKH,GAAE,SAAS,OAAMA,GAAE,SAAS,YAAWD,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEL;AAAA,MAAC,EAAE;AAA9h4C,UAAgi4CyC,KAAE,WAAU;AAAC,iBAASzC,GAAEC,IAAEE,IAAE;AAAC,UAAAD,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK;AAAE,cAAGA,GAAE,QAAQ,QAAQ,OAAK,MAAM,QAAQA,GAAE,OAAO,QAAQ,IAAI,IAAEA,GAAE,OAAO,QAAQ,OAAK,CAACA,GAAE,OAAO,QAAQ,IAAI,GAAEA,GAAE,QAAQ,QAAQ,KAAK,SAAO,GAAE;AAAC,gBAAGA,GAAE,QAAQ,QAAQ,KAAK,SAAOA,GAAE,QAAQ,OAAO,SAAO,EAAE,UAAQC,KAAE,GAAEA,MAAGD,GAAE,QAAQ,OAAO,QAAOC,KAAI,YAASD,GAAE,QAAQ,QAAQ,KAAKC,EAAC,KAAGD,GAAE,QAAQ,QAAQ,KAAK,KAAKA,GAAE,QAAQ,QAAQ,KAAK,CAAC,CAAC;AAAA,UAAC,MAAM,CAAAA,GAAE,QAAQ,QAAQ,OAAKA,GAAE,OAAO,OAAO,IAAK,SAASC,IAAE;AAAC,mBAAOD,GAAE,OAAO,QAAQ;AAAA,UAAI,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,IAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC,GAAEE,KAAE,KAAK,GAAEC,KAAER,IAAEU,KAAEX,IAAEY,KAAE,MAAKF,KAAE,IAAIY,GAAE,KAAK,GAAG,GAAER,KAAEN,GAAE,OAAO,QAAQ,YAAUA,GAAE,OAAO,QAAQ,SAAS;AAAO,eAAIA,GAAE,QAAQ,QAAQ,KAAKP,EAAC,IAAE,KAAGK,MAAGQ,QAAKF,KAAEF,GAAE,MAAM,EAAC,OAAMJ,MAAGQ,KAAE,KAAG,4BAA2B,CAAC,GAAG,KAAK,aAAY,0BAA0B,OAAON,GAAE,QAAQ,MAAK,GAAG,CAAC,GAAE,MAAM,QAAQG,GAAE,CAAC,EAAE,UAAQI,KAAE,GAAEA,KAAEJ,GAAE,EAAE,QAAOI,MAAI;AAAC,gBAAIF,KAAEX;AAAE,kBAAIA,MAAG,MAAIa,OAAIF,KAAE,IAAG,MAAIX,MAAG,MAAIa,OAAIF,KAAE;AAAG,gBAAIG,KAAE;AAAoB,gBAAG,WAASR,GAAE,OAAO,MAAM,QAAM,WAASA,GAAE,OAAO,MAAM,QAAMA,GAAE,QAAQ,eAAaA,GAAE,OAAO,QAAQ,cAAYQ,MAAG,wBAAuB,MAAM,QAAQR,GAAE,OAAO,QAAQ,IAAI,IAAEA,GAAE,QAAQ,QAAQ,KAAKP,EAAC,IAAE,IAAEO,GAAE,OAAO,QAAQ,OAAK,MAAIF,MAAGQ,IAAE;AAAC,cAAAK,GAAE,SAASR,GAAE,EAAEI,EAAC,CAAC,IAAEC,MAAG,KAAK,OAAOG,GAAE,SAAS,CAAC,IAAEH,KAAE;AAAuB,kBAAIC,KAAE,KAAK,gBAAgB,EAAC,UAASD,IAAE,aAAYf,IAAE,gBAAeY,GAAC,CAAC;AAAE,cAAAL,GAAE,OAAO,OAAOC,EAAC,EAAE,KAAKI,EAAC,MAAIL,GAAE,OAAO,OAAOC,EAAC,EAAE,KAAKI,EAAC,EAAE,cAAYI,GAAE,iBAAeT,GAAE,OAAO,OAAOC,EAAC,EAAE,KAAKI,EAAC,EAAE,YAAWL,GAAE,OAAO,OAAOC,EAAC,EAAE,KAAKI,EAAC,EAAE,gBAAcI,GAAE,mBAAiBT,GAAE,OAAO,OAAOC,EAAC,EAAE,KAAKI,EAAC,EAAE,eAAc,WAASV,OAAIc,GAAE,QAAMd,MAAIQ,GAAE,EAAEI,EAAC,IAAE,CAACP,GAAE,QAAQ,QAAQ,eAAaG,GAAE,EAAEI,EAAC,IAAEP,GAAE,QAAQ,YAAUA,GAAE,QAAQ,QAAQ,eAAaG,GAAE,EAAEI,EAAC,IAAE,CAACP,GAAE,QAAQ,QAAQ,eAAaG,GAAE,EAAEI,EAAC,IAAEP,GAAE,QAAQ,aAAWA,GAAE,QAAQ,QAAQ,iBAAeS,GAAE,QAAM,KAAIZ,KAAEK,GAAE,WAAWC,GAAE,EAAEI,EAAC,GAAEJ,GAAE,EAAEI,EAAC,GAAEE,EAAC,GAAG,KAAK,OAAMJ,EAAC,GAAER,GAAE,KAAK,KAAIQ,EAAC,GAAER,GAAE,KAAK,SAAQJ,EAAC,GAAEI,GAAE,KAAK,aAAa,uBAAsBY,GAAE,KAAK,GAAE,IAAII,GAAE,KAAK,GAAG,EAAE,mBAAmBhB,IAAEJ,IAAEY,EAAC,GAAE,KAAK,UAAUR,EAAC,GAAEO,MAAGA,GAAE,IAAIP,EAAC;AAAA,YAAC,MAAM,YAASG,GAAE,QAAQ,YAAYP,EAAC,MAAIO,GAAE,QAAQ,YAAYP,EAAC,IAAE,CAAC,IAAGO,GAAE,QAAQ,YAAYP,EAAC,EAAE,KAAK,CAACU,GAAE,EAAEI,EAAC,GAAEJ,GAAE,EAAEI,EAAC,CAAC,CAAC;AAAA,UAAC;AAAC,iBAAOH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASZ,IAAE;AAAC,cAAIC,KAAED,GAAE,UAASE,KAAEF,GAAE,aAAYG,KAAEH,GAAE,gBAAeK,KAAE,WAASF,KAAE,OAAKA,IAAEG,KAAEN,GAAE,QAAOQ,KAAE,WAASF,KAAE,OAAKA,IAAEG,KAAET,GAAE,MAAKW,KAAE,WAASF,KAAE,OAAKA,IAAEG,KAAEZ,GAAE,aAAYU,KAAE,WAASE,KAAE,OAAKA,IAAEE,KAAE,KAAK,GAAEC,KAAE,KAAK,eAAeb,EAAC,GAAEW,KAAE,SAAOF,KAAEG,GAAE,QAAQ,QAAQ,KAAKZ,EAAC,IAAES,IAAEK,KAAEF,GAAE,OAAO;AAAQ,iBAAO,SAAOT,MAAGW,GAAE,SAAS,UAAQA,GAAE,SAAS,IAAK,SAAShB,IAAE;AAAC,YAAAA,GAAE,gBAAcE,MAAGF,GAAE,mBAAiBK,OAAIU,GAAE,mBAAiBf,GAAE,aAAYe,GAAE,iBAAef,GAAE,WAAUa,KAAEb,GAAE,MAAKe,GAAE,aAAWf,GAAE;AAAA,UAAM,CAAE,GAAE,EAAC,OAAM,SAAOQ,KAAEK,KAAEL,IAAE,SAAQ,SAAOA,KAAEA,KAAEQ,GAAE,QAAO,kBAAiB,SAAON,KAAEA,KAAE,MAAM,QAAQM,GAAE,WAAW,IAAEA,GAAE,YAAYd,EAAC,IAAEc,GAAE,aAAY,kBAAiBD,GAAE,kBAAiB,gBAAeA,GAAE,gBAAe,OAAMA,GAAE,eAAa,MAAM,QAAQC,GAAE,KAAK,IAAEA,GAAE,MAAMd,EAAC,IAAEc,GAAE,QAAO,OAAMf,IAAE,oBAAmB,MAAM,QAAQe,GAAE,aAAa,IAAEA,GAAE,cAAcd,EAAC,IAAEc,GAAE,eAAc,sBAAqB,MAAM,QAAQA,GAAE,eAAe,IAAEA,GAAE,gBAAgBd,EAAC,IAAEc,GAAE,iBAAgB,kBAAiB,MAAM,QAAQA,GAAE,WAAW,IAAEA,GAAE,YAAYd,EAAC,IAAEc,GAAE,aAAY,aAAYd,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG;AAAE,UAAAtB,GAAE,KAAK,iBAAiB,cAAaE,GAAE,eAAe,KAAK,KAAK,KAAIF,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,cAAaE,GAAE,eAAe,KAAK,KAAK,KAAIF,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,aAAYE,GAAE,cAAc,KAAK,KAAK,KAAIF,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,SAAQC,GAAE,OAAO,QAAQ,OAAO,GAAED,GAAE,KAAK,iBAAiB,YAAWC,GAAE,OAAO,QAAQ,UAAU,GAAED,GAAE,KAAK,iBAAiB,cAAaE,GAAE,cAAc,KAAK,KAAK,KAAIF,EAAC,GAAE,EAAC,SAAQ,KAAE,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,QAAQ,QAAOE,KAAEF,GAAE,OAAO,QAAQ,eAAaA,GAAE,OAAO,QAAQ;AAAa,iBAAM,EAAC,kBAAiB,MAAM,QAAQE,EAAC,IAAEA,GAAEH,EAAC,IAAEG,IAAE,gBAAe,MAAM,QAAQD,EAAC,IAAEA,GAAEF,EAAC,IAAEE,GAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA98/C,UAAg9/C0C,KAAE,WAAU;AAAC,iBAAS1C,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,cAAY,KAAK,EAAE,OAAO,MAAM,WAAW;AAAA,QAAO;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAE,IAAIiB,GAAE,KAAK,GAAG,GAAEhB,KAAEJ,GAAE,WAAUM,KAAEN,GAAE,WAAUO,KAAEP,GAAE,QAAOS,KAAET,GAAE,UAASU,KAAEP,GAAE,MAAM,EAAC,OAAM,+CAA+C,OAAOF,GAAE,OAAO,MAAM,IAAI,EAAC,CAAC;AAAE,cAAGS,GAAE,KAAK,aAAY,0BAA0B,OAAOT,GAAE,QAAQ,MAAK,GAAG,CAAC,GAAE,MAAM,QAAQK,GAAE,CAAC,EAAE,UAAQE,KAAE,GAAEA,KAAEF,GAAE,EAAE,QAAOE,MAAI;AAAC,gBAAII,KAAEb,KAAE,GAAEc,KAAE;AAAG,kBAAId,MAAG,MAAIS,OAAII,KAAE,IAAG,MAAIb,MAAG,MAAIS,OAAII,KAAE;AAAG,gBAAID,KAAEV,GAAE,QAAQ,QAAQ,KAAKG,EAAC;AAAE,gBAAGG,OAAI,IAAE,GAAE;AAAC,kBAAIO,KAAEb,GAAE,OAAO,YAAY;AAAO,cAAAU,KAAEV,GAAE,QAAQ,QAAQG,EAAC,EAAEQ,EAAC,GAAEE,GAAE,aAAWH,MAAGJ,KAAGO,GAAE,mBAAiBH,KAAEG,GAAE,oBAAkBH,KAAEG,GAAE,kBAAiBA,GAAE,mBAAiBH,KAAEG,GAAE,oBAAkBH,KAAEG,GAAE;AAAA,YAAgB;AAAC,gBAAIC,KAAET,GAAE,EAAEE,EAAC,GAAEN,KAAEI,GAAE,EAAEE,EAAC;AAAE,gBAAGG,KAAEA,MAAG,GAAE,SAAOT,MAAG,WAASD,GAAE,QAAQ,OAAOG,EAAC,EAAEQ,EAAC,MAAIC,KAAE,QAAIA,IAAE;AAAC,kBAAIG,KAAE,KAAK,UAAUD,IAAEb,IAAES,IAAEP,IAAEQ,IAAEb,EAAC;AAAE,cAAAW,GAAE,IAAIM,EAAC;AAAA,YAAC;AAAC,YAAAP,GAAE,IAAIC,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASZ,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK,GAAEC,KAAEN,IAAEQ,KAAE,IAAIS,GAAE,KAAK,GAAG,GAAER,KAAE,IAAIS,GAAE,KAAK,GAAG,GAAEX,KAAE,IAAI8B,GAAE,KAAK,GAAG,GAAE1B,KAAE,IAAI2B,GAAE,KAAK,GAAG,GAAE1B,KAAE,IAAIO,GAAE,KAAK,GAAG,GAAET,KAAEC,GAAE,gBAAgB,EAAC,UAAS,qBAAoB,aAAYL,IAAE,gBAAeJ,IAAE,QAAO,aAAWG,GAAE,OAAO,MAAM,QAAMA,GAAE,QAAQ,eAAaA,GAAE,OAAO,OAAOL,EAAC,KAAG,aAAWK,GAAE,OAAO,OAAOL,EAAC,EAAE,OAAKD,KAAE,KAAI,CAAC,GAAEc,KAAEN,GAAE,SAAS,EAAC,cAAaP,IAAE,gBAAeE,IAAE,OAAMQ,GAAE,gBAAe,cAAa,qBAAoB,OAAML,GAAE,QAAQ,OAAOL,EAAC,EAAEG,EAAC,EAAC,CAAC,GAAEW,KAAEF,GAAE,WAAWf,IAAEC,IAAEY,EAAC;AAAE,cAAGL,GAAE,OAAO,OAAOC,EAAC,EAAE,KAAKJ,EAAC,KAAGG,GAAE,OAAO,OAAOC,EAAC,EAAE,KAAKJ,EAAC,EAAE,cAAYW,KAAER,GAAE,OAAO,OAAOC,EAAC,EAAE,KAAKJ,EAAC,EAAE,YAAWY,GAAE,KAAK,EAAC,MAAKD,GAAC,CAAC,GAAER,GAAE,OAAO,MAAM,WAAW,SAAQ;AAAC,gBAAIJ,KAAEI,GAAE,OAAO,MAAM;AAAW,YAAAI,GAAE,WAAWK,IAAEb,IAAED,EAAC;AAAA,UAAC;AAAC,cAAG,CAAC,KAAK,eAAaK,GAAE,QAAQ,eAAaA,GAAE,QAAQ,QAAQ,CAAAA,GAAE,QAAQ,iBAAe;AAAA,eAAO;AAAC,gBAAIU,KAAEV,GAAE,OAAO,MAAM,WAAW;AAAM,YAAAG,GAAE,cAAcM,IAAEC,IAAEV,GAAE,QAAQ,QAAQ,WAAU;AAAC,qBAAO,WAAY,WAAU;AAAC,gBAAAG,GAAE,mBAAmBM,EAAC;AAAA,cAAC,GAAG,GAAG;AAAA,YAAC,CAAE;AAAA,UAAC;AAAC,iBAAOA,GAAE,KAAK,EAAC,KAAIZ,IAAE,GAAEA,IAAE,OAAMF,IAAE,uBAAsBU,GAAE,MAAK,CAAC,GAAED,GAAE,mBAAmBK,IAAEd,IAAEE,EAAC,GAAES,GAAE,UAAUG,EAAC,GAAEA,GAAE,KAAK,UAAU,IAAI,mBAAmB,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASjB,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAM,EAAC,GAAED,MAAG,SAASC,GAAE,OAAO,WAAW,MAAM,UAAS,EAAE,IAAE,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAjkkD,UAAmkkD2C,KAAE,WAAU;AAAC,iBAAS3C,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAE,OAAGC,KAAE,IAAIU,GAAE,KAAK,GAAG,EAAE,aAAapB,IAAEM,EAAC,GAAEE,KAAEE,GAAE,OAAME,KAAEF,GAAE;AAAO,UAAAX,KAAE,MAAIA,KAAE,IAAGA,KAAEQ,GAAE,QAAQ,aAAWK,OAAIb,KAAEQ,GAAE,QAAQ,aAAWK,KAAE,IAAG,WAASL,GAAE,QAAQ,gBAAgBN,EAAC,MAAIM,GAAE,QAAQ,gBAAgBN,EAAC,IAAE,CAAC,IAAGM,GAAE,QAAQ,gBAAgBN,EAAC,EAAE,KAAK,EAAC,GAAEH,IAAE,GAAEC,IAAE,OAAMS,IAAE,QAAOI,GAAC,CAAC;AAAE,cAAIC,KAAEN,GAAE,QAAQ,gBAAgBN,EAAC,EAAE,SAAO,GAAEU,KAAE,WAASJ,GAAE,QAAQ,2BAA2BN,EAAC,IAAEM,GAAE,QAAQ,2BAA2BN,EAAC,EAAEM,GAAE,QAAQ,2BAA2BN,EAAC,EAAE,SAAO,CAAC,IAAE;AAAE,cAAG,WAASM,GAAE,QAAQ,gBAAgBN,EAAC,EAAEY,EAAC,GAAE;AAAC,gBAAIC,KAAEP,GAAE,QAAQ,gBAAgBN,EAAC,EAAEU,EAAC;AAAE,aAACb,KAAEgB,GAAE,IAAEA,GAAE,SAAOf,KAAEe,GAAE,IAAEA,GAAE,UAAQf,KAAEa,KAAEE,GAAE,KAAGhB,KAAEU,KAAEM,GAAE,OAAKL,KAAE;AAAA,UAAG;AAAC,kBAAO,MAAIN,MAAGC,QAAKK,KAAE,OAAI,EAAC,GAAEX,IAAE,GAAEC,IAAE,WAAUW,IAAE,eAAcD,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASX,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAEF,GAAE,MAAKG,KAAEH,GAAE,KAAIK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,GAAEQ,KAAER,GAAE,cAAaS,KAAET,GAAE,aAAYW,KAAE,WAASF,KAAE,IAAEA,IAAEG,KAAE,KAAK,GAAEF,KAAE,IAAIY,GAAE,KAAK,GAAG,GAAER,KAAEF,GAAE,OAAO,YAAWG,KAAE,GAAEF,KAAE,GAAEG,KAAEV,IAAEW,KAAE;AAAK,cAAG,OAAKL,GAAE,QAAQ,uBAAuB,QAAQP,EAAC,KAAG,CAACS,GAAE,WAAS,CAAC,MAAM,QAAQX,GAAE,CAAC,EAAE,QAAOc;AAAE,UAAAA,KAAEP,GAAE,MAAM,EAAC,OAAM,yBAAwB,CAAC;AAAE,mBAAQN,KAAE,GAAEA,KAAED,GAAE,EAAE,QAAOC,KAAI,KAAGW,KAAEZ,GAAE,EAAEC,EAAC,IAAEU,GAAE,SAAQD,KAAEV,GAAE,EAAEC,EAAC,IAAEU,GAAE,UAAQH,IAAE,CAAC,MAAMI,EAAC,GAAE;AAAC,kBAAIT,MAAG,MAAIF,OAAIY,KAAE,IAAG,MAAIV,MAAG,MAAIF,OAAIY,KAAE;AAAG,gBAAIE,KAAEN,GAAE,QAAQ,OAAOP,EAAC,EAAEW,EAAC;AAAE,4BAAcd,OAAIgB,KAAEV,KAAEI,GAAE,QAAQ,iBAAiBP,EAAC,EAAEW,EAAC,IAAEJ,GAAE,QAAQ,eAAeP,EAAC,EAAEW,EAAC;AAAG,gBAAIT,KAAE,IAAGY,KAAE,SAASnB,IAAE;AAAC,qBAAOY,GAAE,OAAO,WAAW,UAAUZ,IAAE,EAAC,KAAIC,GAAE,KAAI,aAAYI,IAAE,gBAAeW,IAAE,GAAEJ,GAAC,CAAC;AAAA,YAAC;AAAE,gBAAG,aAAWA,GAAE,OAAO,MAAM,KAAK,CAAAL,KAAEY,GAAED,KAAEN,GAAE,QAAQ,QAAQP,EAAC,EAAEW,EAAC,CAAC,GAAEH,KAAEV,GAAE,EAAEC,EAAC,GAAES,KAAE,IAAI6B,GAAE,KAAK,GAAG,EAAE,mBAAmB7B,IAAER,IAAEW,EAAC,EAAE;AAAA,gBAAO,YAASE,OAAIX,KAAEY,GAAED,EAAC;AAAG,gBAAIE,KAAER,GAAE,OAAO,WAAW;AAAW,YAAAA,GAAE,QAAQ,iBAAeQ,KAAE,MAAIJ,KAAE,QAAMA,OAAIJ,GAAE,OAAO,OAAOP,EAAC,EAAE,KAAK,SAAO,IAAE,UAAQ,WAAU,KAAK,mBAAmB,EAAC,GAAEU,IAAE,GAAEF,IAAE,MAAKN,IAAE,GAAEF,IAAE,GAAEW,IAAE,QAAOC,IAAE,kBAAiB,MAAG,kBAAiBL,GAAE,OAAO,YAAW,YAAWQ,GAAC,CAAC;AAAA,UAAC;AAAC,iBAAOH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASjB,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAEH,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,GAAEQ,KAAER,GAAE,GAAES,KAAET,GAAE,MAAKW,KAAEX,GAAE,YAAWY,KAAEZ,GAAE,UAASU,KAAEV,GAAE,QAAOc,KAAEd,GAAE,kBAAiBe,KAAEf,GAAE,OAAMa,KAAEb,GAAE,qBAAoBgB,KAAEhB,GAAE,kBAAiBiB,KAAEjB,GAAE,WAAUI,KAAE;AAAK,cAAG,MAAM,QAAQH,GAAE,OAAO,WAAW,eAAe,KAAGA,GAAE,OAAO,WAAW,gBAAgB,QAAQK,EAAC,IAAE,EAAE,QAAOF;AAAE,cAAIc,KAAE,EAAC,GAAEf,IAAE,GAAEE,IAAE,eAAc,MAAG,WAAU,KAAI;AAAE,UAAAW,OAAIE,KAAE,KAAK,qBAAqBf,IAAEE,IAAEI,IAAEH,IAAEE,IAAEK,IAAE,SAASC,GAAE,MAAM,UAAS,EAAE,CAAC,IAAGb,GAAE,QAAQ,WAASE,KAAEe,GAAE,GAAEb,KAAEa,GAAE,IAAGA,GAAE,cAAYf,KAAE,MAAIe,GAAE,UAAU,SAAOf,KAAEF,GAAE,QAAQ,YAAUiB,GAAE,UAAU,QAAM,QAAMT,KAAE;AAAI,cAAIF,KAAEN,GAAE,QAAQ,WAAW,MAAM,OAAOK,EAAC;AAAE,YAAE,UAAQL,GAAE,OAAO,MAAM,QAAM,eAAaA,GAAE,OAAO,MAAM,SAAOA,GAAE,OAAO,YAAY,IAAI,eAAaA,GAAE,OAAO,WAAW,iBAAeM,KAAEN,GAAE,QAAQ,WAAW,MAAM,OAAOO,EAAC,IAAG,cAAY,OAAOD,OAAIA,KAAEA,GAAE,EAAC,QAAON,GAAE,QAAQ,QAAO,aAAYK,IAAE,gBAAeE,IAAE,GAAEP,GAAC,CAAC,IAAGc,OAAIR,KAAEQ;AAAG,cAAII,KAAEL,GAAE,SAAQM,KAAEN,GAAE;AAAQ,cAAG,UAAQb,GAAE,OAAO,MAAM,QAAM,eAAaA,GAAE,OAAO,MAAM,SAAOkB,KAAE,GAAEC,KAAE,IAAGnB,GAAE,QAAQ,iBAAe,MAAIO,OAAIW,KAAE,KAAGL,GAAE,UAAQ,IAAG,MAAIN,MAAGA,OAAIP,GAAE,OAAO,OAAOK,EAAC,EAAE,KAAK,SAAO,MAAIa,KAAE,KAAID,GAAE,eAAc;AAAC,iBAAId,KAAEF,GAAE,SAAS,EAAC,OAAM,KAAI,QAAO,SAASY,GAAE,MAAM,UAAS,EAAE,GAAE,GAAEX,KAAEgB,IAAE,GAAEd,KAAEe,IAAE,WAAUb,IAAE,YAAWI,MAAGG,GAAE,YAAW,MAAKL,IAAE,UAASG,MAAGE,GAAE,MAAM,UAAS,YAAWA,GAAE,MAAM,YAAW,YAAWA,GAAE,MAAM,cAAY,SAAQ,CAAC,GAAG,KAAK,EAAC,OAAMG,MAAG,wBAAuB,IAAGd,IAAE,IAAGE,GAAC,CAAC,GAAES,GAAE,WAAW,SAAQ;AAAC,kBAAIS,KAAET,GAAE;AAAW,kBAAIO,GAAE,KAAK,GAAG,EAAE,WAAWjB,IAAEmB,EAAC;AAAA,YAAC;AAAC,YAAAb,GAAE,IAAIN,EAAC,GAAE,WAASH,GAAE,QAAQ,2BAA2BK,EAAC,MAAIL,GAAE,QAAQ,2BAA2BK,EAAC,IAAE,CAAC,IAAGL,GAAE,QAAQ,2BAA2BK,EAAC,EAAE,KAAKE,EAAC;AAAA,UAAC;AAAC,iBAAOJ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASJ,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,WAAW,YAAWG,KAAEF,GAAE,SAAQG,KAAEH,GAAE,UAAQ,GAAEK,KAAEP,GAAE,OAAMQ,KAAER,GAAE,QAAOU,KAAE,IAAIW,GAAE,KAAK,GAAG,EAAE,SAASrB,GAAE,IAAEI,IAAEJ,GAAE,IAAEK,KAAE,GAAEE,KAAE,IAAEH,IAAEI,KAAEH,IAAEH,GAAE,cAAa,kBAAgBD,GAAE,OAAO,MAAM,cAAYA,GAAE,OAAO,MAAM,aAAWA,GAAE,OAAO,MAAM,aAAW,QAAOC,GAAE,SAAQA,GAAE,aAAYA,GAAE,WAAW;AAAE,UAAAA,GAAE,WAAW,WAAS,IAAIkB,GAAE,KAAK,GAAG,EAAE,WAAWV,IAAER,GAAE,UAAU;AAAE,iBAAOQ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIX,KAAE,KAAK;AAAE,cAAG,aAAWA,GAAE,OAAO,MAAM,KAAK,UAAQC,KAAED,GAAE,QAAQ,IAAI,OAAO,iBAAiB,6BAA6B,GAAEE,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,gBAAIC,KAAEF,GAAEC,EAAC,GAAEG,KAAEF,GAAE,QAAQ,GAAEG,KAAE;AAAK,gBAAGD,GAAE,SAAOA,GAAE,WAASC,KAAE,KAAK,yBAAyBH,IAAEE,EAAC,IAAGC,IAAE;AAAC,cAAAH,GAAE,WAAW,aAAaG,GAAE,MAAKH,EAAC;AAAE,kBAAIK,KAAEL,GAAE,aAAa,MAAM;AAAE,cAAAH,GAAE,OAAO,MAAM,WAAW,WAAS,CAACA,GAAE,QAAQ,WAAS,CAACA,GAAE,QAAQ,cAAYM,GAAE,QAAQ,EAAE,KAAK,EAAC,MAAKE,GAAC,CAAC,IAAEF,GAAE,KAAK,EAAC,MAAKE,GAAC,CAAC,GAAEL,GAAE,aAAa,QAAOH,GAAE,OAAO,WAAW,WAAW,SAAS;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,mBAAQA,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,IAAI,OAAO,iBAAiB,wBAAwB,GAAEE,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAc,oCAAoC,GAAEG,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,CAAAD,MAAGA,GAAE,aAAaD,GAAEE,EAAC,GAAED,GAAE,WAAW;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAAxvtD,UAA0vtD4C,KAAE,WAAU;AAAC,iBAAS5C,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,sBAAoB;AAAA,QAA2B;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,iBAAO,KAAK,EAAE,QAAQ,IAAI,OAAO,uBAAuB,mBAAmB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,EAAE,QAAQ,IAAI,OAAO,cAAc,oDAAoD,OAAOmB,GAAE,aAAanB,EAAC,GAAE,IAAI,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,gBAAgBD,EAAC,GAAEE,KAAE,SAASD,GAAE,aAAa,gBAAgB,GAAE,EAAE;AAAE,iBAAM,EAAC,UAASA,GAAE,UAAU,SAAS,6BAA6B,GAAE,WAAUC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,mBAASC,GAAED,IAAE;AAAC,qBAAQC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAD,GAAEC,EAAC,EAAE,UAAQF,MAAGD,GAAE,KAAK,UAAU,IAAI,6BAA6B;AAAA,UAAC;AAAC,UAAAG,GAAED,GAAE,QAAQ,eAAe,GAAEC,GAAED,GAAE,QAAQ,wBAAwB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,KAAK,eAAeD,EAAC;AAAE,iBAAO,KAAK,IAAI,OAAO,cAAc,iBAAiBC,GAAE,WAAUA,GAAE,QAAQ,GAAEA,GAAE;AAAA,QAAQ,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,eAAeD,EAAC;AAAE,UAAAC,GAAE,YAAU,KAAK,IAAI,OAAO,cAAc,iBAAiBA,GAAE,WAAU,IAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,eAAeD,EAAC;AAAE,UAAAC,GAAE,YAAU,KAAK,IAAI,OAAO,cAAc,iBAAiBA,GAAE,WAAU,KAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAID,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,KAAK,GAAEE,KAAEc,GAAE,MAAMhB,GAAE,QAAQ,aAAa;AAAE,UAAAA,GAAE,QAAQ,gBAAc,CAAC,GAAED,MAAGC,GAAE,QAAQ,kBAAgB,CAAC,GAAEA,GAAE,QAAQ,2BAAyB,CAAC,GAAEA,GAAE,QAAQ,yBAAuB,CAAC,GAAEA,GAAE,QAAQ,kCAAgC,CAAC,KAAGE,KAAE,KAAK,qBAAqBA,EAAC,GAAEF,GAAE,OAAO,SAAOE,IAAEL,OAAIC,OAAIE,GAAE,QAAQ,SAAO,OAAG,KAAK,IAAI,cAAc,wBAAwB,IAAG,KAAK,IAAI,cAAc,cAAcE,IAAEF,GAAE,OAAO,MAAM,WAAW,iBAAiB,OAAO;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASH,IAAE;AAAC,mBAAQC,KAAE,KAAK,GAAEC,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,CAAAD,GAAE,QAAQ,uBAAuB,QAAQC,EAAC,IAAE,OAAKF,GAAEE,EAAC,EAAE,OAAK,CAAC;AAAG,iBAAOF;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK,gBAAgBF,EAAC,GAAEG,KAAE,SAAS,QAAMD,KAAE,SAAOA,GAAE,aAAa,gBAAgB,GAAE,EAAE,GAAEG,KAAEJ,GAAE,QAAQ,IAAI,OAAO,iBAAiB,+DAA+D,GAAEK,KAAE,MAAKE,KAAE,MAAKC,KAAE;AAAK,cAAGR,GAAE,QAAQ,cAAY,gBAAcA,GAAE,OAAO,MAAM,KAAK,KAAGA,GAAE,QAAQ,YAAW;AAAC,YAAAK,KAAEL,GAAE,QAAQ,IAAI,OAAO,cAAc,wCAAwC,OAAOE,IAAE,IAAI,CAAC,GAAEK,KAAEP,GAAE,QAAQ,IAAI,OAAO,cAAc,4CAA4C,OAAOE,IAAE,IAAI,CAAC;AAAE,gBAAIQ,KAAEV,GAAE,QAAQ,sBAAsBE,EAAC;AAAE,YAAAM,KAAER,GAAE,QAAQ,IAAI,OAAO,cAAc,0BAA0B,OAAOU,IAAE,IAAI,CAAC;AAAA,UAAC,MAAM,CAAAL,KAAEL,GAAE,QAAQ,IAAI,OAAO,cAAc,2BAA2B,OAAOE,KAAE,GAAE,IAAI,CAAC;AAAA,cAAO,CAAAG,KAAEL,GAAE,QAAQ,IAAI,OAAO,cAAc,2BAA2B,OAAOE,KAAE,GAAE,SAAS,CAAC;AAAE,mBAAQS,KAAE,GAAEA,KAAEP,GAAE,QAAOO,KAAI,CAAAP,GAAEO,EAAC,EAAE,UAAU,IAAI,KAAK,mBAAmB;AAAE,cAAGN,GAAE,CAAAL,GAAE,QAAQ,cAAYK,GAAE,WAAW,UAAU,OAAO,KAAK,mBAAmB,GAAEA,GAAE,UAAU,OAAO,KAAK,mBAAmB,GAAE,SAAOE,MAAGA,GAAE,UAAU,OAAO,KAAK,mBAAmB,GAAE,SAAOC,MAAGA,GAAE,UAAU,OAAO,KAAK,mBAAmB;AAAA,cAAO,UAAQC,KAAE,GAAEA,KAAEL,GAAE,QAAOK,KAAI,CAAAL,GAAEK,EAAC,EAAE,UAAU,OAAO,KAAK,mBAAmB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASV,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,UAAAD,OAAIA,KAAED,GAAE;AAAQ,cAAIG,KAAED,GAAE,QAAQ,IAAI,OAAO,iBAAiB,+DAA+D;AAAE,cAAG,gBAAcF,GAAE,MAAK;AAAC,gBAAIK,KAAE,SAASJ,GAAE,aAAa,KAAK,GAAE,EAAE,IAAE;AAAE,iBAAK,gBAAgBC,GAAE,QAAQ,YAAYG,EAAC,CAAC;AAAA,UAAC,WAAS,eAAaL,GAAE,KAAK,UAAQM,KAAE,GAAEA,KAAEH,GAAE,QAAOG,KAAI,CAAAH,GAAEG,EAAC,EAAE,UAAU,OAAO,KAAK,mBAAmB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASN,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEE,KAAEF,GAAE,QAAQ,IAAI,OAAO,uBAAuB,yBAAyB,GAAEG,KAAE,SAASN,IAAE;AAAC,qBAAQC,KAAE,GAAEA,KAAEI,GAAE,QAAOJ,KAAI,CAAAI,GAAEJ,EAAC,EAAE,UAAUD,EAAC,EAAEE,GAAE,mBAAmB;AAAA,UAAC;AAAE,cAAG,gBAAcF,GAAE,MAAK;AAAC,gBAAIQ,KAAE,SAASP,GAAE,aAAa,KAAK,GAAE,EAAE,IAAE;AAAE,YAAAK,GAAE,KAAK;AAAE,gBAAIG,KAAEN,GAAE,OAAO,YAAY,QAAQ,WAAW;AAAO,aAAC,SAASH,IAAEC,IAAE;AAAC,uBAAQE,KAAE,GAAEA,KAAEE,GAAE,QAAOF,MAAI;AAAC,oBAAIG,KAAE,OAAOD,GAAEF,EAAC,EAAE,aAAa,KAAK,CAAC;AAAE,gBAAAG,MAAGN,GAAE,SAAOM,KAAEN,GAAE,MAAIA,GAAE,OAAKC,MAAGK,OAAIL,OAAII,GAAEF,EAAC,EAAE,UAAU,OAAOD,GAAE,mBAAmB;AAAA,cAAC;AAAA,YAAC,EAAEO,GAAED,EAAC,GAAEC,GAAE,OAAQ,SAAST,IAAEC,IAAE;AAAC,qBAAO,KAAK,IAAID,IAAEC,GAAE,EAAE;AAAA,YAAC,GAAG,CAAC,CAAC;AAAA,UAAC,MAAK,gBAAaD,GAAE,QAAMM,GAAE,QAAQ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,WAAU;AAAC,cAAIN,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,OAAMC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAE,KAAK,GAAEC,KAAE;AAAE,cAAGD,GAAE,OAAO,OAAO,SAAO;AAAE,qBAAQG,KAAEH,GAAE,OAAO,OAAO,IAAK,SAASF,IAAEG,IAAE;AAAC,qBAAOH,GAAE,QAAMA,GAAE,KAAK,SAAO,KAAG,OAAKE,GAAE,QAAQ,uBAAuB,QAAQC,EAAC,MAAI,CAACD,GAAE,QAAQ,eAAa,MAAID,GAAE,UAAQA,GAAE,UAAQA,GAAE,QAAQC,GAAE,OAAO,OAAOC,EAAC,EAAE,IAAI,IAAE,MAAIA,KAAE;AAAA,YAAE,CAAE,GAAEG,KAAE,UAAQN,KAAE,IAAEK,GAAE,SAAO,GAAE,UAAQL,KAAEM,KAAED,GAAE,SAAOC,MAAG,GAAE,UAAQN,KAAEM,OAAIA,KAAI,KAAG,OAAKD,GAAEC,EAAC,GAAE;AAAC,cAAAH,KAAEE,GAAEC,EAAC;AAAE;AAAA,YAAK;AAAA;AAAC,iBAAOH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,iBAAO,KAAK,EAAE,QAAQ,cAAY,KAAK,EAAE,OAAO,OAAO,IAAK,SAASH,IAAEC,IAAE;AAAC,mBAAM,UAAQD,GAAE,QAAM,aAAWA,GAAE,OAAKC,KAAE;AAAA,UAAE,CAAE,EAAE,OAAQ,SAASD,IAAE;AAAC,mBAAM,OAAKA;AAAA,UAAC,CAAE,IAAE,KAAK,EAAE,OAAO,OAAO,IAAK,SAASA,IAAEC,IAAE;AAAC,mBAAOA;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK;AAAE,mBAASC,GAAEA,IAAEC,IAAEC,IAAE;AAAC,qBAAQE,KAAEJ,GAAEC,EAAC,EAAE,YAAWI,KAAE,EAAC,MAAKH,IAAE,OAAM,CAAC,GAAE,WAAUF,GAAEC,EAAC,EAAE,aAAa,gBAAgB,EAAC,GAAEM,KAAE,GAAEA,KAAEH,GAAE,QAAOG,KAAI,KAAGH,GAAEG,EAAC,EAAE,aAAa,QAAQ,GAAE;AAAC,kBAAIC,KAAEJ,GAAEG,EAAC,EAAE,aAAa,QAAQ;AAAE,cAAAF,GAAE,MAAM,KAAK,EAAC,GAAEG,GAAC,CAAC;AAAA,YAAC;AAAC,YAAAT,GAAE,QAAQ,cAAc,KAAKM,EAAC;AAAA,UAAC;AAAC,UAAAN,GAAE,QAAQ,gBAAc,CAAC;AAAE,WAAC,QAAO,QAAO,OAAM,YAAW,aAAY,eAAc,OAAO,EAAE,QAAS,SAASE,IAAE;AAAC,qBAAQC,IAAEE,MAAGF,KAAED,IAAEF,GAAE,QAAQ,IAAI,OAAO,iBAAiB,eAAe,OAAOG,IAAE,4BAA4B,CAAC,IAAGG,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAL,GAAEI,IAAEC,IAAEJ,EAAC;AAAA,UAAC,CAAE,GAAE,KAAK,6BAA6B,QAAQ,GAAE,KAAK,6BAA6B,SAAS;AAAE,cAAIA,KAAEF,GAAE,QAAQ,IAAI,OAAO,iBAAiB,eAAe,OAAOA,GAAE,OAAO,MAAM,MAAK,qBAAqB,CAAC;AAAE,cAAGE,GAAE,SAAO,EAAE,UAAQC,KAAE,SAASF,IAAE;AAAC,qBAAQC,KAAEF,GAAE,QAAQ,IAAI,OAAO,iBAAiB,eAAe,OAAOA,GAAE,OAAO,MAAM,MAAK,wCAAwC,EAAE,OAAOC,IAAE,SAAS,CAAC,GAAEE,KAAE,CAAC,GAAEE,KAAE,SAASL,IAAE;AAAC,kBAAIC,KAAE,SAASA,IAAE;AAAC,uBAAOC,GAAEF,EAAC,EAAE,aAAaC,EAAC;AAAA,cAAC,GAAEI,KAAE,EAAC,GAAE,WAAWJ,GAAE,GAAG,CAAC,GAAE,GAAE,WAAWA,GAAE,GAAG,CAAC,GAAE,OAAM,WAAWA,GAAE,OAAO,CAAC,GAAE,QAAO,WAAWA,GAAE,QAAQ,CAAC,EAAC;AAAE,cAAAE,GAAE,KAAK,EAAC,MAAKE,IAAE,OAAMH,GAAEF,EAAC,EAAE,aAAa,OAAO,EAAC,CAAC;AAAA,YAAC,GAAEM,KAAE,GAAEA,KAAEJ,GAAE,QAAOI,KAAI,CAAAD,GAAEC,EAAC;AAAE,YAAAN,GAAE,QAAQ,cAAc,KAAKG,EAAC;AAAA,UAAC,GAAEE,KAAE,GAAEA,KAAEH,GAAE,QAAOG,KAAI,CAAAF,GAAEE,EAAC;AAAE,UAAAL,GAAE,QAAQ,eAAaA,GAAE,QAAQ,gBAAcA,GAAE,QAAQ;AAAA,QAAO,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,IAAI,OAAO,iBAAiB,eAAe,OAAOD,IAAE,4BAA4B,CAAC;AAAE,cAAGE,GAAE,SAAO,EAAE,UAAQC,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,qBAAQE,KAAEJ,GAAE,QAAQ,IAAI,OAAO,iBAAiB,eAAe,OAAOD,IAAE,+CAA+C,EAAE,OAAOG,IAAE,WAAW,CAAC,GAAEG,KAAE,CAAC,GAAEE,KAAE,GAAEA,KAAEH,GAAE,QAAOG,KAAI,CAAAF,GAAE,KAAK,EAAC,GAAED,GAAEG,EAAC,EAAE,aAAa,IAAI,GAAE,GAAEH,GAAEG,EAAC,EAAE,aAAa,IAAI,GAAE,GAAEH,GAAEG,EAAC,EAAE,aAAa,GAAG,EAAC,CAAC;AAAE,YAAAP,GAAE,QAAQ,cAAc,KAAKK,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAIN,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,gBAAc,CAAC,GAAEA,GAAE,QAAQ,qBAAmB;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,QAAOE,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAEH,GAAE,QAAQ,WAAS,GAAEK,KAAEL,GAAE,QAAQ,YAAU,GAAEM,KAAE;AAAS,cAAGN,GAAE,QAAQ,SAAO,MAAGA,GAAE,QAAQ,iBAAe,MAAG,WAASC,GAAE,SAAOE,KAAE,IAAGG,KAAE,WAAS,YAAUL,GAAE,UAAQE,KAAEH,GAAE,QAAQ,WAAS,IAAGM,KAAE,QAAO,UAAQL,GAAE,gBAAcI,KAAE,KAAG,aAAWJ,GAAE,kBAAgBI,KAAEL,GAAE,QAAQ,YAAU,KAAIG,MAAGF,GAAE,SAAQI,KAAEA,KAAE,SAASJ,GAAE,MAAM,UAAS,EAAE,IAAE,IAAEA,GAAE,SAAQ,WAASA,GAAE,QAAM,OAAKA,GAAE,MAAK;AAAC,gBAAIO,KAAEN,GAAE,SAAS,EAAC,GAAEC,IAAE,GAAEE,IAAE,MAAKJ,GAAE,MAAK,YAAWK,IAAE,UAASL,GAAE,MAAM,UAAS,YAAWA,GAAE,MAAM,YAAW,WAAUA,GAAE,MAAM,OAAM,SAAQ,GAAE,OAAM,yBAAwB,CAAC;AAAE,YAAAD,GAAE,QAAQ,IAAI,MAAM,IAAIQ,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASR,IAAE;AAAC,mBAAQC,KAAE,KAAK,GAAEC,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,KAAG,MAAIF,GAAEE,EAAC,EAAE,OAAO,UAAQC,KAAE,GAAEA,KAAEH,GAAEC,GAAE,QAAQ,mBAAmB,EAAE,QAAOE,KAAI,CAAAH,GAAEE,EAAC,EAAE,KAAK,CAAC;AAAE,iBAAOF;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,mBAAQA,KAAE,MAAGC,KAAE,KAAK,GAAEC,KAAE,KAAK,gBAAgB,GAAEC,KAAE,GAAEA,KAAED,GAAE,SAAO,GAAEC,KAAI,KAAGD,GAAEC,EAAC,EAAE,CAAC,MAAID,GAAEC,KAAE,CAAC,EAAE,CAAC,GAAE;AAAC,YAAAH,KAAE;AAAG;AAAA,UAAK;AAAC,iBAAOC,GAAE,QAAQ,qBAAmBD,IAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE,QAAQ,QAAQ,IAAK,SAASA,IAAE;AAAC,mBAAOA,GAAE,SAAO,IAAEA,KAAE,CAAC;AAAA,UAAC,CAAE;AAAE,iBAAOA;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAr19D,UAAu19D6C,KAAE,WAAU;AAAC,iBAAS7C,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,aAAW,CAAC,GAAE,KAAK,eAAa,CAAC,GAAE,KAAK,cAAY,CAAC,GAAE,KAAK,cAAY,CAAC,GAAE,KAAK,YAAU,IAAIsB,GAAE,KAAK,GAAG;AAAA,QAAC;AAAC,eAAOlB,GAAEL,IAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,iBAAO,KAAK,WAAW,KAAG,KAAK,gBAAgB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE,OAAO,OAAO,MAAM,GAAEC,KAAE,IAAI2C,GAAE,KAAK,GAAG;AAAE,cAAG,KAAK,oBAAkB3C,GAAE,2BAA2B,GAAE,WAASD,GAAE,KAAK,iBAAiB,EAAE,QAAMA,GAAE,KAAK,iBAAiB,EAAE,KAAK,SAAO,KAAG,SAAOA,GAAE,KAAK,iBAAiB,EAAE,KAAK,CAAC,KAAG,WAASA,GAAE,KAAK,iBAAiB,EAAE,KAAK,CAAC,EAAE,KAAG,SAAOA,GAAE,KAAK,iBAAiB,EAAE,KAAK,CAAC,EAAE,QAAM;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE,OAAO,OAAO,MAAM,GAAEC,KAAE,IAAI2C,GAAE,KAAK,GAAG;AAAE,cAAG,KAAK,oBAAkB3C,GAAE,2BAA2B,GAAE,WAASD,GAAE,KAAK,iBAAiB,EAAE,QAAMA,GAAE,KAAK,iBAAiB,EAAE,KAAK,SAAO,KAAG,WAASA,GAAE,KAAK,iBAAiB,EAAE,KAAK,CAAC,KAAG,SAAOA,GAAE,KAAK,iBAAiB,EAAE,KAAK,CAAC,KAAGA,GAAE,KAAK,iBAAiB,EAAE,KAAK,CAAC,EAAE,gBAAc,MAAM,QAAM;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASA,IAAEC,IAAE;AAAC,mBAAQC,KAAE,KAAK,EAAE,QAAOC,KAAE,KAAK,EAAE,SAAQE,KAAE,cAAYH,GAAE,MAAM,QAAM,cAAYA,GAAE,OAAOD,EAAC,EAAE,MAAKK,KAAE,GAAEA,KAAEN,GAAEC,EAAC,EAAE,KAAK,QAAOK,KAAI,KAAG,WAASN,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,CAAC,MAAI,MAAM,QAAQN,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,CAAC,CAAC,KAAG,MAAIN,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,CAAC,EAAE,UAAQ,CAACD,KAAE,KAAK,WAAW,KAAKc,GAAE,YAAYnB,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAEN,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,UAAQ,IAAE,KAAK,WAAW,KAAKa,GAAE,YAAYnB,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,CAAC,CAAC,CAAC,IAAE,KAAK,WAAW,KAAKa,GAAE,YAAYnB,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,CAAC,CAAC,CAAC,GAAEH,GAAE,qBAAmB,OAAI,eAAaD,GAAE,MAAM,MAAK;AAAC,gBAAIM,KAAE,IAAI,KAAKR,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,CAAC,CAAC;AAAE,YAAAE,KAAE,IAAI,KAAKA,EAAC,EAAE,QAAQ,GAAE,KAAK,YAAY,KAAKA,EAAC;AAAA,UAAC,MAAM,MAAK,YAAY,KAAKR,GAAEC,EAAC,EAAE,KAAKK,EAAC,EAAE,CAAC,CAAC;AAAE,mBAAQG,KAAE,GAAEA,KAAET,GAAEC,EAAC,EAAE,KAAK,QAAOQ,KAAI,YAAST,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,MAAI,KAAK,aAAa,KAAKT,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,CAAC,GAAEN,GAAE,YAAU;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,QAAOC,KAAE,KAAK,EAAE,SAAQE,KAAE,IAAIqB,GAAE,KAAK,GAAG,GAAEpB,KAAEL;AAAE,UAAAE,GAAE,uBAAuB,QAAQF,EAAC,IAAE,OAAKK,KAAE,KAAK;AAAmB,mBAAQE,KAAE,GAAEA,KAAER,GAAEC,EAAC,EAAE,KAAK,QAAOO,KAAI,YAASR,GAAEC,EAAC,EAAE,KAAKO,EAAC,EAAE,MAAI,MAAM,QAAQR,GAAEC,EAAC,EAAE,KAAKO,EAAC,EAAE,CAAC,IAAE,KAAK,WAAW,KAAKW,GAAE,YAAYnB,GAAEC,EAAC,EAAE,KAAKO,EAAC,EAAE,EAAER,GAAEC,EAAC,EAAE,KAAKO,EAAC,EAAE,EAAE,SAAO,CAAC,CAAC,CAAC,IAAE,KAAK,WAAW,KAAKW,GAAE,YAAYnB,GAAEC,EAAC,EAAE,KAAKO,EAAC,EAAE,CAAC,CAAC,IAAG,WAASR,GAAEC,EAAC,EAAE,KAAKO,EAAC,EAAE,SAAO,MAAM,QAAQR,GAAEC,EAAC,EAAE,KAAKO,EAAC,EAAE,KAAK,KAAG,WAAS,KAAK,YAAYP,EAAC,MAAI,KAAK,YAAYA,EAAC,IAAE,CAAC,IAAG,KAAK,YAAYA,EAAC,EAAE,KAAKD,GAAEC,EAAC,EAAE,KAAKO,EAAC,EAAE,KAAK,MAAI,WAAS,KAAK,YAAYP,EAAC,MAAI,KAAK,YAAYA,EAAC,IAAE,CAAC,IAAG,KAAK,YAAYA,EAAC,EAAE,KAAK,IAAI;AAAG,mBAAQQ,KAAE,GAAEA,KAAET,GAAEM,EAAC,EAAE,KAAK,QAAOG,MAAI;AAAC,gBAAIE,KAAE,YAAU,OAAOX,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,GAAEG,KAAE,MAAM,QAAQZ,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,CAAC,GAAEC,KAAE,CAACE,MAAG,CAAC,CAACP,GAAE,YAAYL,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,CAAC;AAAE,gBAAGE,MAAGD,GAAE,KAAGC,MAAGT,GAAE,MAAM,uBAAsB;AAAC,kBAAIY,KAAEX,GAAE,mBAAiBA,GAAE;AAAY,6BAAaD,GAAE,MAAM,QAAMY,MAAG,KAAK,qBAAmB,MAAG,KAAK,YAAY,KAAKd,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,CAAC,GAAE,MAAMT,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,CAAC,KAAG,eAAa,KAAK,EAAE,OAAO,MAAM,QAAM,YAAU,OAAOT,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,MAAIN,GAAE,aAAW,SAAK,KAAK,YAAY,KAAKE,GAAE,UAAUL,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,CAAC,CAAC;AAAA,YAAC,MAAK,gBAAaP,GAAE,MAAM,OAAK,KAAK,YAAY,KAAKG,GAAE,UAAUL,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,EAAE,SAAS,CAAC,CAAC,KAAGN,GAAE,qBAAmB,MAAGA,GAAE,aAAW,MAAG,KAAK,YAAY,KAAK,WAAWH,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,CAAC,CAAC;AAAA,gBAAQ,CAAAG,MAAG,KAAK,qBAAmB,MAAG,KAAK,YAAY,KAAKZ,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,CAAC,MAAIN,GAAE,aAAW,MAAGA,GAAE,qBAAmB,MAAG,KAAK,YAAY,KAAKH,GAAEM,EAAC,EAAE,KAAKG,EAAC,EAAE,CAAC;AAAA,UAAE;AAAC,cAAGT,GAAEC,EAAC,EAAE,KAAK,CAAC,KAAG,WAASD,GAAEC,EAAC,EAAE,KAAK,CAAC,EAAE,GAAE;AAAC,qBAAQc,KAAE,GAAEA,KAAEf,GAAEC,EAAC,EAAE,KAAK,QAAOc,KAAI,MAAK,aAAa,KAAKf,GAAEC,EAAC,EAAE,KAAKc,EAAC,EAAE,CAAC;AAAE,YAAAZ,GAAE,YAAU;AAAA,UAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,SAAQC,KAAE,CAAC;AAAE,iBAAO,KAAK,gBAAgB,IAAEA,KAAE,KAAK,sBAAsB,SAAQH,IAAEC,EAAC,IAAE,KAAK,WAAW,MAAIE,KAAE,KAAK,sBAAsB,MAAKH,IAAEC,EAAC,IAAGC,GAAE,iBAAiB,KAAK,WAASC,GAAE,QAAM,CAAC,IAAEA,GAAE,KAAK,GAAED,GAAE,eAAe,KAAK,WAASC,GAAE,MAAI,CAAC,IAAEA,GAAE,GAAG,GAAED,GAAE,YAAY,KAAKC,GAAE,YAAY,GAAED,GAAE,YAAY,QAAS,SAASF,IAAEC,IAAE;AAAC,YAAAD,MAAGA,GAAE,QAAS,SAASA,IAAEC,IAAE;AAAC,cAAAD,GAAE,EAAE,QAAS,SAASC,IAAEC,IAAE;AAAC,yBAAQC,KAAE,GAAEA,KAAEH,GAAE,EAAE,QAAOG,KAAI,KAAGD,OAAIC,IAAE;AAAC,sBAAIE,KAAEJ,GAAE,IAAGK,KAAEL,GAAE,IAAGO,KAAER,GAAE,EAAEG,EAAC,EAAE;AAAG,kBAAAE,MAAGL,GAAE,EAAEG,EAAC,EAAE,MAAIK,MAAGF,OAAIN,GAAE,SAAS,QAAQC,GAAE,SAAS,IAAE,KAAGD,GAAE,SAAS,KAAKC,GAAE,SAAS,GAAED,GAAE,SAAS,QAAQA,GAAE,EAAEG,EAAC,EAAE,SAAS,IAAE,KAAGH,GAAE,SAAS,KAAKA,GAAE,EAAEG,EAAC,EAAE,SAAS;AAAA,gBAAE;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,SAAQC,KAAE,CAAC;AAAE,iBAAO,KAAK,gBAAgB,IAAEA,KAAE,KAAK,+BAA+B,SAAQH,IAAEC,EAAC,IAAE,KAAK,WAAW,MAAIE,KAAE,KAAK,+BAA+B,MAAKH,IAAEC,EAAC,IAAGC,GAAE,cAAcD,EAAC,IAAEE,GAAE,GAAED,GAAE,cAAcD,EAAC,IAAEE,GAAE,GAAED,GAAE,cAAcD,EAAC,IAAEE,GAAE,GAAED,GAAE,cAAcD,EAAC,IAAEE,GAAE,GAAED,GAAE,cAAcD,EAAC,IAAEE,GAAE,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASH,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,CAAC,GAAEE,KAAE,CAAC,GAAEC,KAAEL,GAAEC,EAAC,EAAE,KAAK,OAAQ,SAASF,IAAEC,IAAEC,IAAE;AAAC,mBAAOD,OAAIC,GAAE,UAAW,SAASD,IAAE;AAAC,qBAAOA,GAAE,MAAID,GAAE;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE,EAAE,IAAK,SAASA,IAAEC,IAAE;AAAC,mBAAM,EAAC,GAAED,GAAE,GAAE,UAAS,CAAC,GAAE,GAAE,CAAC,EAAC;AAAA,UAAC,CAAE;AAAE,cAAG,YAAUA,GAAE,UAAQQ,KAAE,GAAEA,KAAEP,GAAEC,EAAC,EAAE,KAAK,QAAOM,KAAI,OAAM,QAAQP,GAAEC,EAAC,EAAE,KAAKM,EAAC,CAAC,KAAGL,GAAE,KAAKF,GAAEC,EAAC,EAAE,KAAKM,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAEH,GAAE,KAAKJ,GAAEC,EAAC,EAAE,KAAKM,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAIL,GAAE,KAAKF,GAAEC,EAAC,EAAE,KAAKM,EAAC,CAAC,GAAEH,GAAE,KAAKJ,GAAEC,EAAC,EAAE,KAAKM,EAAC,CAAC;AAAA,mBAAW,SAAOR,GAAE,UAAQS,KAAE,SAAST,IAAE;AAAC,gBAAIQ,KAAE,MAAM,QAAQP,GAAEC,EAAC,EAAE,KAAKF,EAAC,EAAE,CAAC,GAAES,KAAEU,GAAE,SAAS,GAAER,KAAEV,GAAEC,EAAC,EAAE,KAAKF,EAAC,EAAE,GAAEY,KAAE,EAAC,IAAGJ,KAAEP,GAAEC,EAAC,EAAE,KAAKF,EAAC,EAAE,EAAE,CAAC,IAAEC,GAAEC,EAAC,EAAE,KAAKF,EAAC,EAAE,GAAE,IAAGQ,KAAEP,GAAEC,EAAC,EAAE,KAAKF,EAAC,EAAE,EAAE,CAAC,IAAEC,GAAEC,EAAC,EAAE,KAAKF,EAAC,EAAE,GAAE,WAAUS,GAAC;AAAE,YAAAR,GAAEC,EAAC,EAAE,KAAKF,EAAC,EAAE,YAAUS;AAAE,gBAAIC,KAAEJ,GAAE,UAAW,SAASN,IAAE;AAAC,qBAAOA,GAAE,MAAIW;AAAA,YAAC,CAAE;AAAE,YAAAL,GAAEI,EAAC,EAAE,EAAE,KAAKE,EAAC,GAAET,GAAE,KAAKS,GAAE,EAAE,GAAEP,GAAE,KAAKO,GAAE,EAAE;AAAA,UAAC,GAAED,KAAE,GAAEA,KAAEV,GAAEC,EAAC,EAAE,KAAK,QAAOS,KAAI,CAAAF,GAAEE,EAAC;AAAE,iBAAM,EAAC,OAAMR,IAAE,KAAIE,IAAE,cAAaC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kCAAiC,OAAM,SAASN,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAE,cAAYF,GAAE,OAAO,MAAM,QAAM,cAAYA,GAAE,OAAO,OAAOD,EAAC,EAAE,MAAKI,KAAE,CAAC,GAAEE,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEE,KAAE,CAAC,GAAEC,KAAE,CAAC;AAAE,cAAG,YAAUZ,GAAE,KAAGK,MAAG,MAAIJ,GAAEC,EAAC,EAAE,KAAK,CAAC,EAAE,UAAQ,CAACG,MAAG,MAAIJ,GAAEC,EAAC,EAAE,KAAK,CAAC,EAAE,OAAO,UAAQQ,KAAE,GAAEA,KAAET,GAAEC,EAAC,EAAE,KAAK,QAAOQ,KAAI,CAAAJ,GAAE,KAAKL,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,CAAC,GAAEF,GAAE,KAAKP,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,CAAC,GAAEL,MAAGI,GAAE,KAAKR,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,CAAC,GAAEC,GAAE,KAAKV,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,CAAC,GAAEE,GAAE,KAAKX,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,CAAC,MAAIC,GAAE,KAAKV,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,CAAC,GAAEE,GAAE,KAAKX,GAAEC,EAAC,EAAE,KAAKQ,EAAC,EAAE,CAAC,CAAC;AAAA,cAAQ,UAAQI,KAAE,GAAEA,KAAEb,GAAEC,EAAC,EAAE,KAAK,QAAOY,KAAI,OAAM,QAAQb,GAAEC,EAAC,EAAE,KAAKY,EAAC,EAAE,CAAC,CAAC,MAAIR,GAAE,KAAKL,GAAEC,EAAC,EAAE,KAAKY,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAEN,GAAE,KAAKP,GAAEC,EAAC,EAAE,KAAKY,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAET,MAAGI,GAAE,KAAKR,GAAEC,EAAC,EAAE,KAAKY,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAEH,GAAE,KAAKV,GAAEC,EAAC,EAAE,KAAKY,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAEF,GAAE,KAAKX,GAAEC,EAAC,EAAE,KAAKY,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAIH,GAAE,KAAKV,GAAEC,EAAC,EAAE,KAAKY,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAEF,GAAE,KAAKX,GAAEC,EAAC,EAAE,KAAKY,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAAA,mBAAY,SAAOd,GAAE,UAAQe,KAAE,GAAEA,KAAEd,GAAEC,EAAC,EAAE,KAAK,QAAOa,KAAI,OAAM,QAAQd,GAAEC,EAAC,EAAE,KAAKa,EAAC,EAAE,CAAC,MAAIT,GAAE,KAAKL,GAAEC,EAAC,EAAE,KAAKa,EAAC,EAAE,EAAE,CAAC,CAAC,GAAEP,GAAE,KAAKP,GAAEC,EAAC,EAAE,KAAKa,EAAC,EAAE,EAAE,CAAC,CAAC,GAAEV,MAAGI,GAAE,KAAKR,GAAEC,EAAC,EAAE,KAAKa,EAAC,EAAE,EAAE,CAAC,CAAC,GAAEJ,GAAE,KAAKV,GAAEC,EAAC,EAAE,KAAKa,EAAC,EAAE,EAAE,CAAC,CAAC,GAAEH,GAAE,KAAKX,GAAEC,EAAC,EAAE,KAAKa,EAAC,EAAE,EAAE,CAAC,CAAC,MAAIJ,GAAE,KAAKV,GAAEC,EAAC,EAAE,KAAKa,EAAC,EAAE,EAAE,CAAC,CAAC,GAAEH,GAAE,KAAKX,GAAEC,EAAC,EAAE,KAAKa,EAAC,EAAE,EAAE,CAAC,CAAC;AAAI,iBAAM,EAAC,GAAET,IAAE,GAAEE,IAAE,GAAEC,IAAE,GAAEE,IAAE,GAAEC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASZ,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,KAAK,KAAIC,KAAE,KAAK,EAAE,QAAOE,KAAE,KAAK,EAAE,SAAQC,KAAE,IAAIoB,GAAExB,EAAC,GAAEM,KAAEL,GAAE,OAAO,SAAO,IAAEA,GAAE,OAAO,MAAM,IAAEA,GAAE,MAAM,WAAW,MAAM;AAAE,UAAAE,GAAE,aAAW,eAAaF,GAAE,MAAM,QAAME,GAAE,iBAAgBA,GAAE,iBAAe,eAAaF,GAAE,MAAM,QAAMA,GAAE,MAAM,MAAM,OAAO,SAAO,GAAEE,GAAE,mBAAiBA,GAAE,SAAOF,GAAE,MAAM,MAAM,SAAQH,GAAE,QAAS,SAASA,IAAEC,IAAE;AAAC,uBAASD,GAAE,OAAKK,GAAE,YAAY,KAAKL,GAAE,IAAI,IAAEK,GAAE,YAAY,KAAK,YAAU,SAASJ,KAAE,GAAE,EAAE,CAAC;AAAA,UAAC,CAAE,GAAE,KAAK,UAAU,uBAAuB;AAAE,cAAIQ,KAAE,CAAC,GAAEE,KAAEM,GAAE,IAAI,IAAId,GAAE,OAAO,IAAK,SAASH,IAAE;AAAC,mBAAOA,GAAE;AAAA,UAAK,CAAE,CAAC,CAAC;AAAE,UAAAG,GAAE,OAAO,QAAS,SAASH,IAAEC,IAAE;AAAC,gBAAIC,KAAES,GAAE,QAAQX,GAAE,KAAK;AAAE,YAAAS,GAAEP,EAAC,MAAIO,GAAEP,EAAC,IAAE,CAAC,IAAGO,GAAEP,EAAC,EAAE,KAAKG,GAAE,YAAYJ,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEI,GAAE,eAAaI;AAAE,mBAAQG,KAAE,WAAU;AAAC,qBAAQZ,KAAE,GAAEA,KAAEQ,GAAE,QAAOR,KAAI,KAAG,YAAU,OAAOQ,GAAER,EAAC,GAAE;AAAC,kBAAG,CAACM,GAAE,YAAYE,GAAER,EAAC,CAAC,EAAE,OAAM,IAAI,MAAM,+EAA+E;AAAE,cAAAC,GAAE,YAAY,KAAKK,GAAE,UAAUE,GAAER,EAAC,CAAC,CAAC;AAAA,YAAC,MAAM,CAAAC,GAAE,YAAY,KAAKO,GAAER,EAAC,CAAC;AAAA,UAAC,GAAEU,KAAE,GAAEA,KAAEV,GAAE,QAAOU,MAAI;AAAC,gBAAG,KAAK,aAAW,CAAC,GAAE,KAAK,cAAY,CAAC,GAAE,KAAK,eAAa,CAAC,GAAE,WAASV,GAAEU,EAAC,EAAE,KAAK,QAAO,KAAK,QAAQ,MAAM,+EAA+E;AAAE,gBAAG,eAAaP,GAAE,MAAM,QAAM,gBAAcA,GAAE,MAAM,QAAM,eAAaH,GAAEU,EAAC,EAAE,QAAM,gBAAcV,GAAEU,EAAC,EAAE,SAAOL,GAAE,cAAY,MAAG,eAAaF,GAAE,MAAM,QAAM,gBAAcA,GAAE,MAAM,QAAM,KAAK,gBAAgBH,IAAEU,EAAC,IAAG,KAAK,cAAc,EAAE,MAAK,gBAAgB,IAAE,KAAK,oBAAoBV,IAAEU,EAAC,IAAE,KAAK,WAAW,KAAG,KAAK,eAAeV,IAAEU,EAAC,GAAE,kBAAgBP,GAAE,MAAM,QAAM,kBAAgBH,GAAEU,EAAC,EAAE,QAAM,cAAYP,GAAE,MAAM,QAAM,cAAYH,GAAEU,EAAC,EAAE,QAAM,KAAK,yBAAyBV,IAAEU,EAAC,GAAEL,GAAE,OAAO,KAAK,KAAK,UAAU,GAAEA,GAAE,OAAO,KAAK,KAAK,WAAW,GAAEA,GAAE,QAAQ,KAAK,KAAK,WAAW,GAAEA,GAAE,cAAY,KAAK,aAAYK,OAAI,KAAK,qBAAmB,KAAK,uBAAqBL,GAAE,aAAW;AAAA,iBAAQ;AAAC,6BAAaF,GAAE,MAAM,QAAME,GAAE,aAAW,MAAGO,GAAE,GAAEP,GAAE,QAAQ,KAAK,KAAK,WAAW,KAAG,cAAYF,GAAE,MAAM,SAAOE,GAAE,aAAW,MAAGG,GAAE,SAAO,MAAI,KAAK,cAAYA,IAAEH,GAAE,QAAQ,KAAK,KAAK,WAAW,KAAIA,GAAE,OAAO,KAAK,KAAK,WAAW;AAAE,kBAAIS,KAAEd,GAAEU,EAAC,EAAE,KAAK,IAAK,SAASV,IAAE;AAAC,uBAAOmB,GAAE,YAAYnB,EAAC;AAAA,cAAC,CAAE;AAAE,cAAAK,GAAE,OAAO,KAAKS,EAAC;AAAA,YAAC;AAAC,YAAAT,GAAE,QAAQ,KAAK,KAAK,YAAY,GAAE,WAASL,GAAEU,EAAC,EAAE,QAAML,GAAE,aAAa,KAAKL,GAAEU,EAAC,EAAE,KAAK,IAAEL,GAAE,aAAa,KAAK,MAAM;AAAA,UAAC;AAAC,iBAAO,KAAK;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASL,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,SAAQC,KAAE,KAAK,EAAE;AAAO,UAAAD,GAAE,SAAOD,GAAE,MAAM,GAAEC,GAAE,cAAYC,GAAE,OAAO,MAAM;AAAE,mBAAQC,KAAE,GAAEA,KAAEF,GAAE,OAAO,QAAOE,KAAI,YAASF,GAAE,YAAYE,EAAC,KAAGF,GAAE,YAAY,KAAK,aAAWE,KAAE,EAAE;AAAE,iBAAO,KAAK;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,QAAOC,KAAE,KAAK,EAAE;AAAQ,cAAGD,GAAE,MAAM,WAAW,SAAO,EAAE,CAAAC,GAAE,SAAOD,GAAE,MAAM;AAAA,mBAAmBA,GAAE,OAAO,SAAO,EAAE,CAAAC,GAAE,SAAOD,GAAE,OAAO,MAAM;AAAA,mBAAU,KAAK,oBAAmB;AAAC,gBAAGC,GAAE,SAAOA,GAAE,OAAO,CAAC,GAAEA,GAAE,YAAY,WAASA,GAAE,YAAY,IAAK,SAASF,IAAE;AAAC,cAAAA,GAAE,QAAS,SAASA,IAAE;AAAC,gBAAAE,GAAE,OAAO,QAAQF,GAAE,CAAC,IAAE,KAAGA,GAAE,KAAGE,GAAE,OAAO,KAAKF,GAAE,CAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAEE,GAAE,SAAO,MAAM,KAAK,IAAI,IAAIA,GAAE,OAAO,IAAI,KAAK,SAAS,CAAC,GAAE,KAAK,KAAK,IAAGD,GAAE,MAAM,sBAAsB,KAAImC,GAAEnC,EAAC,EAAE,yBAAyBA,IAAE,KAAK,KAAIC,GAAE,QAAQ,CAAC,CAAC,GAAE,KAAK,wBAAwBF,EAAC;AAAA,UAAC,MAAM,MAAK,wBAAwBA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,SAAQC,KAAE,KAAK,EAAE,QAAOC,KAAE,CAAC;AAAE,cAAGF,GAAE,YAAW;AAAC,gBAAGA,GAAE,OAAO,SAAO,EAAE,KAAG,KAAK,WAAW,EAAE,UAAQI,KAAEH,GAAE,OAAO,IAAK,SAASF,IAAEC,IAAE;AAAC,qBAAOD,GAAE,KAAK,OAAQ,SAASA,IAAEC,IAAEC,IAAE;AAAC,uBAAOA,GAAE,UAAW,SAASD,IAAE;AAAC,yBAAOA,GAAE,MAAID,GAAE;AAAA,gBAAC,CAAE,MAAIC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAEK,KAAED,GAAE,OAAQ,SAASL,IAAEC,IAAEC,IAAEC,IAAE;AAAC,qBAAOA,GAAEH,EAAC,EAAE,SAAOC,GAAE,SAAOD,KAAEE;AAAA,YAAC,GAAG,CAAC,GAAEM,KAAE,GAAEA,KAAEH,GAAEC,EAAC,EAAE,QAAOE,KAAI,CAAAL,GAAE,KAAKK,KAAE,CAAC;AAAA,gBAAO,UAAQC,KAAE,GAAEA,KAAER,GAAE,OAAOA,GAAE,mBAAmB,EAAE,QAAOQ,KAAI,CAAAN,GAAE,KAAKM,KAAE,CAAC;AAAE,YAAAR,GAAE,UAAQ,CAAC;AAAE,qBAAQU,KAAE,GAAEA,KAAEX,GAAE,QAAOW,KAAI,CAAAV,GAAE,QAAQ,KAAKE,EAAC;AAAE,iBAAK,EAAE,QAAQ,oBAAkBF,GAAE,aAAW;AAAA,UAAG;AAAC,cAAG,MAAIE,GAAE,QAAO;AAAC,YAAAA,KAAEF,GAAE,aAAW,CAAC,IAAEA,GAAE,OAAO,IAAK,SAASD,IAAEC,IAAE;AAAC,qBAAOA,KAAE;AAAA,YAAC,CAAE;AAAE,qBAAQW,KAAE,GAAEA,KAAEZ,GAAE,QAAOY,KAAI,CAAAX,GAAE,QAAQ,KAAKE,EAAC;AAAA,UAAC;AAAC,UAAAF,GAAE,SAAOE,IAAED,GAAE,MAAM,0BAAwBD,GAAE,iBAAeE,GAAE,IAAK,SAASH,IAAE;AAAC,mBAAOE,GAAE,MAAM,OAAO,UAAUF,EAAC;AAAA,UAAC,CAAE,IAAGC,GAAE,mBAAiB;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAOE,KAAEF,GAAE;AAAQ,cAAG,KAAK,8BAA8B,GAAE,KAAK,qBAAmB,OAAG,KAAK,IAAI,KAAK,aAAa,GAAE,KAAK,IAAI,KAAK,YAAY,GAAEE,GAAE,cAAY,KAAK,oBAAoBH,EAAC,GAAE,KAAK,UAAU,iBAAiB,KAAG,KAAK,uBAAuBA,EAAC,GAAEE,GAAE,MAAM,SAAQ;AAAC,gBAAIG,KAAE,IAAIuC,GAAE,KAAK,GAAG;AAAE,YAAAzC,GAAE,SAAOE,GAAE,0BAA0BF,GAAE,MAAM;AAAA,UAAC;AAAC,eAAK,UAAU,gBAAgB,GAAEA,GAAE,eAAaA,GAAE,sBAAoB,KAAK,UAAU,uBAAuB,GAAEA,GAAE,8BAA4B,KAAK,UAAU,+BAA+B,IAAG,KAAK,UAAU,iBAAiB,GAAEA,GAAE,sBAAoBA,GAAE,eAAa,cAAYD,GAAE,MAAM,QAAM,MAAIA,GAAE,OAAO,UAAQ,MAAIA,GAAE,MAAM,WAAW,WAAS,KAAK,yBAAyBF,EAAC;AAAE,mBAAQM,KAAE,KAAK,UAAU,kBAAkBH,GAAE,MAAM,GAAEK,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,KAAG,MAAM,QAAQF,GAAEE,EAAC,CAAC,GAAE;AAAC,YAAAL,GAAE,eAAa;AAAG;AAAA,UAAK;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iCAAgC,OAAM,WAAU;AAAC,cAAIH,KAAE,KAAK,GAAEC,KAAE,CAAC;AAAE,UAAAD,GAAE,QAAQ,eAAe,QAAS,SAASE,IAAEC,IAAE;AAAC,gBAAIE,KAAE;AAAE,YAAAH,GAAE,QAAS,SAASD,IAAE;AAAC,qBAAKD,GAAE,QAAQ,uBAAuB,QAAQC,EAAC,KAAGI;AAAA,YAAG,CAAE,GAAEA,KAAE,KAAGA,MAAGH,GAAE,UAAQD,GAAE,KAAKE,EAAC;AAAA,UAAC,CAAE,GAAEH,GAAE,QAAQ,qBAAmBC,GAAE,IAAK,SAASD,IAAE;AAAC,mBAAOA;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAz+zE,UAA2+zE8C,KAAE,WAAU;AAAC,iBAAS9C,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,WAAWF,GAAE,eAAe,MAAK,OAAO,CAAC,GAAEG,KAAE,WAAWH,GAAE,eAAe,MAAK,QAAQ,CAAC;AAAE,UAAAA,GAAE,eAAe,MAAK,SAAQE,KAAED,EAAC,GAAED,GAAE,eAAe,MAAK,UAASG,KAAEF,EAAC,GAAED,GAAE,eAAe,MAAK,WAAU,SAAOE,KAAE,MAAIC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIH,KAAE;AAAK,iBAAO,IAAI,QAAS,SAASC,IAAE;AAAC,gBAAIC,KAAEF,GAAE,GAAEG,KAAED,GAAE,OAAO,MAAM,QAAQ,OAAO,OAAMG,KAAEH,GAAE,OAAO,MAAM,QAAQ,OAAO,SAAOC,KAAED,GAAE,QAAQ;AAAS,YAAAG,OAAIA,KAAE;AAAG,gBAAIC,KAAEN,GAAE,EAAE,QAAQ,IAAI,MAAM,IAAI,GAAEQ,KAAER,GAAE,EAAE,QAAQ,IAAI,MAAM,KAAK,UAAU,IAAE;AAAE,kBAAIK,MAAGL,GAAE,aAAaQ,IAAEH,EAAC,GAAEL,GAAE,sBAAsBQ,EAAC,EAAE,KAAM,WAAU;AAAC,cAAAF,KAAG,IAAI,gBAAe,kBAAkBE,EAAC,GAAEP,GAAEK,GAAE,QAAQ,WAAU,QAAQ,CAAC;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAEF,GAAE,qBAAqB,OAAO,GAAEG,KAAE,MAAM,KAAKD,EAAC,EAAE,IAAK,SAASF,IAAE;AAAC,gBAAIE,KAAEF,GAAE,eAAe,gCAA+B,MAAM;AAAE,mBAAOE,MAAG,CAACA,GAAE,WAAW,OAAO,IAAED,GAAE,iBAAiBC,EAAC,EAAE,KAAM,SAASD,IAAE;AAAC,cAAAD,GAAE,eAAe,gCAA+B,QAAOC,EAAC;AAAA,YAAC,CAAE,EAAE,MAAO,SAASD,IAAE;AAAC,sBAAQ,MAAM,qCAAoCA,EAAC;AAAA,YAAC,CAAE,IAAE,QAAQ,QAAQ;AAAA,UAAC,CAAE;AAAE,iBAAO,QAAQ,IAAIG,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASH,IAAE;AAAC,iBAAO,IAAI,QAAS,SAASC,IAAEC,IAAE;AAAC,gBAAIC,KAAE,IAAI;AAAM,YAAAA,GAAE,cAAY,aAAYA,GAAE,SAAO,WAAU;AAAC,kBAAIH,KAAE,SAAS,cAAc,QAAQ;AAAE,cAAAA,GAAE,QAAMG,GAAE,OAAMH,GAAE,SAAOG,GAAE,QAAOH,GAAE,WAAW,IAAI,EAAE,UAAUG,IAAE,GAAE,CAAC,GAAEF,GAAED,GAAE,UAAU,CAAC;AAAA,YAAC,GAAEG,GAAE,UAAQD,IAAEC,GAAE,MAAIH;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,IAAI,OAAO,uBAAuB,wBAAwB,GAAEE,KAAEF,GAAE,QAAQ,IAAI,OAAO,uBAAuB,wBAAwB,GAAEG,KAAEH,GAAE,QAAQ,IAAI,OAAO,iBAAiB,mDAAmD;AAAE,gBAAM,UAAU,QAAQ,KAAKG,IAAG,SAASH,IAAE;AAAC,YAAAA,GAAE,aAAa,SAAQ,CAAC;AAAA,UAAC,CAAE,GAAEC,MAAGA,GAAE,CAAC,MAAIA,GAAE,CAAC,EAAE,aAAa,KAAI,IAAI,GAAEA,GAAE,CAAC,EAAE,aAAa,MAAK,IAAI,GAAEA,GAAE,CAAC,EAAE,aAAa,MAAK,IAAI,IAAGC,MAAGA,GAAE,CAAC,MAAIA,GAAE,CAAC,EAAE,aAAa,KAAI,IAAI,GAAEA,GAAE,CAAC,EAAE,aAAa,MAAK,IAAI,GAAEA,GAAE,CAAC,EAAE,aAAa,MAAK,IAAI;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,cAAIF,KAAE;AAAK,iBAAO,IAAI,QAAS,SAASC,IAAE;AAAC,YAAAD,GAAE,QAAQ,GAAEA,GAAE,aAAa,EAAE,KAAM,SAASA,IAAE;AAAC,kBAAIE,KAAE,IAAI,KAAK,CAACF,EAAC,GAAE,EAAC,MAAK,8BAA6B,CAAC;AAAE,cAAAC,GAAE,IAAI,gBAAgBC,EAAC,CAAC;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE;AAAK,iBAAO,IAAI,QAAS,SAASC,IAAE;AAAC,gBAAIC,KAAEF,GAAE,GAAEI,KAAEL,KAAEA,GAAE,SAAOA,GAAE,QAAMG,GAAE,QAAQ,WAAS;AAAE,YAAAF,GAAE,QAAQ;AAAE,gBAAIK,KAAE,SAAS,cAAc,QAAQ;AAAE,YAAAA,GAAE,QAAMH,GAAE,QAAQ,WAASE,IAAEC,GAAE,SAAO,SAASH,GAAE,QAAQ,IAAI,OAAO,MAAM,QAAO,EAAE,IAAEE;AAAE,gBAAIG,KAAE,kBAAgBL,GAAE,OAAO,MAAM,cAAYA,GAAE,OAAO,MAAM,aAAWA,GAAE,OAAO,MAAM,aAAW,QAAOM,KAAEH,GAAE,WAAW,IAAI;AAAE,YAAAG,GAAE,YAAUD,IAAEC,GAAE,SAAS,GAAE,GAAEH,GAAE,QAAMD,IAAEC,GAAE,SAAOD,EAAC,GAAEJ,GAAE,aAAa,EAAE,KAAM,SAASD,IAAE;AAAC,kBAAIC,KAAE,wBAAsB,mBAAmBD,EAAC,GAAEG,KAAE,IAAI;AAAM,cAAAA,GAAE,cAAY,aAAYA,GAAE,SAAO,WAAU;AAAC,oBAAGM,GAAE,UAAUN,IAAE,GAAE,CAAC,GAAEG,GAAE,UAAS;AAAC,sBAAIN,KAAEM,GAAE,SAAS;AAAE,kBAAAJ,GAAE,EAAC,MAAKF,GAAC,CAAC;AAAA,gBAAC,OAAK;AAAC,sBAAIC,KAAEK,GAAE,UAAU,WAAW;AAAE,kBAAAJ,GAAE,EAAC,QAAOD,GAAC,CAAC;AAAA,gBAAC;AAAA,cAAC,GAAEE,GAAE,MAAIF;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAID,KAAE;AAAK,eAAK,OAAO,EAAE,KAAM,SAASC,IAAE;AAAC,YAAAD,GAAE,gBAAgBC,IAAED,GAAE,EAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,UAAS,MAAM;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,EAAE,OAAO,MAAM,QAAQ,OAAO,OAAMC,KAAE,KAAK,EAAE,OAAO,MAAM,QAAQ,OAAO,OAAMC,KAAEF,KAAE,EAAC,OAAMA,GAAC,IAAEC,KAAE,EAAC,OAAMA,GAAC,IAAE;AAAO,eAAK,QAAQC,EAAC,EAAE,KAAM,SAASF,IAAE;AAAC,gBAAIC,KAAED,GAAE,QAAOE,KAAEF,GAAE;AAAK,YAAAE,KAAE,UAAU,iBAAiBA,IAAEH,GAAE,EAAE,QAAQ,UAAQ,MAAM,IAAEA,GAAE,gBAAgBE,IAAEF,GAAE,EAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,UAAS,MAAM;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAEF,GAAE,QAAOG,KAAEH,GAAE,UAASK,KAAEL,GAAE,iBAAgBM,KAAE,WAASD,KAAE,MAAIA,IAAEG,KAAER,GAAE,eAAcS,KAAE,WAASD,KAAE,OAAKA,IAAEG,KAAE,KAAK;AAAE,UAAAT,OAAIA,KAAES,GAAE,OAAO;AAAQ,cAAIC,IAAEF,IAAEI,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEF,KAAE,IAAGG,KAAEL,GAAE,QAAQ,OAAO,IAAK,SAASX,IAAEC,IAAE;AAAC,mBAAM,OAAKU,GAAE,QAAQ,uBAAuB,QAAQV,EAAC,IAAED,KAAE,CAAC;AAAA,UAAC,CAAE,GAAEI,KAAE,SAASJ,IAAE;AAAC,mBAAM,cAAY,OAAOW,GAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,oBAAkBA,GAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,kBAAkBX,EAAC,IAAE,eAAaW,GAAE,OAAO,MAAM,QAAM,OAAOX,EAAC,EAAE,UAAQ,KAAG,IAAI,KAAKA,EAAC,EAAE,aAAa,IAAEmB,GAAE,SAASnB,EAAC,IAAEA,KAAEA,GAAE,MAAMM,EAAC,EAAE,KAAK,EAAE;AAAA,UAAC,GAAEY,KAAE,SAASlB,IAAE;AAAC,mBAAM,cAAY,OAAOW,GAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,iBAAeA,GAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,eAAeX,EAAC,IAAEA;AAAA,UAAC,GAAEO,KAAE,KAAK,IAAI,MAAM,MAAKU,GAAEf,GAAE,IAAK,SAASF,IAAE;AAAC,mBAAOA,GAAE,OAAKA,GAAE,KAAK,SAAO;AAAA,UAAC,CAAE,CAAC,CAAC,GAAEoB,KAAE,IAAIyB,GAAE,KAAK,GAAG,GAAExB,KAAE,IAAIO,GAAE,KAAK,GAAG,GAAEN,KAAE,SAAStB,IAAE;AAAC,gBAAIE,KAAE;AAAG,gBAAGS,GAAE,QAAQ,YAAW;AAAC,kBAAG,eAAaA,GAAE,OAAO,MAAM,QAAMA,GAAE,OAAO,MAAM,sBAAsB,KAAGA,GAAE,QAAQ,iBAAgB;AAAC,oBAAIR,KAAEQ,GAAE,QAAQ,iBAAiB,CAAC,GAAEN,KAAE,IAAIuC,GAAE3C,GAAE,GAAG,EAAE,2BAA2B;AAAE,gBAAAC,KAAEC,GAAEQ,GAAE,QAAQ,OAAOX,EAAC,GAAE,EAAC,aAAYK,IAAE,gBAAeL,IAAE,GAAEW,GAAC,CAAC;AAAA,cAAC,MAAM,CAAAT,KAAEmB,GAAE,SAASV,GAAE,QAAQ,QAAOA,GAAE,QAAQ,iBAAgB,GAAEX,EAAC,EAAE;AAAK,6BAAaW,GAAE,OAAO,MAAM,SAAOA,GAAE,OAAO,MAAM,WAAW,SAAOT,KAAES,GAAE,OAAO,MAAM,WAAWX,EAAC,IAAEW,GAAE,OAAO,OAAO,WAAST,KAAES,GAAE,OAAO,OAAOX,EAAC;AAAA,YAAG,MAAM,CAAAE,KAAES,GAAE,OAAO,OAAOX,EAAC;AAAE,mBAAO,SAAOE,KAAE,eAAa,MAAM,QAAQA,EAAC,MAAIA,KAAEA,GAAE,KAAK,GAAG,IAAGiB,GAAE,SAASjB,EAAC,IAAEA,KAAEA,GAAE,MAAMI,EAAC,EAAE,KAAK,EAAE;AAAA,UAAE,GAAEiB,KAAE,SAASvB,IAAEC,IAAE;AAAC,gBAAGa,GAAE,UAAQ,MAAIb,MAAGc,GAAE,KAAKD,GAAE,KAAKR,EAAC,CAAC,GAAEN,GAAE,MAAK;AAAC,cAAAA,GAAE,OAAKA,GAAE,KAAK,UAAQA,GAAE,QAAMiB,GAAE,MAAMV,EAAC,CAAC,EAAE,IAAK,WAAU;AAAC,uBAAM;AAAA,cAAE,CAAE;AAAE,uBAAQJ,KAAE,GAAEA,KAAEH,GAAE,KAAK,QAAOG,MAAI;AAAC,gBAAAW,KAAE,CAAC;AAAE,oBAAIT,KAAEiB,GAAEnB,EAAC;AAAE,oBAAG,gBAAcE,IAAE;AAAC,sBAAGA,OAAIe,GAAE,WAAW,IAAEf,KAAEH,GAAED,EAAC,EAAE,KAAKE,EAAC,EAAE,IAAEiB,GAAE,gBAAgB,MAAIf,KAAEH,GAAED,EAAC,EAAE,KAAKE,EAAC,IAAED,GAAED,EAAC,EAAE,KAAKE,EAAC,EAAE,CAAC,IAAE,MAAK,MAAIF,IAAE;AAAC,oBAAAa,GAAE,KAAKV,GAAEC,EAAC,CAAC;AAAE,6BAAQG,KAAE,GAAEA,KAAEG,GAAE,QAAQ,OAAO,QAAOH,MAAI;AAAC,0BAAIC,IAAEG,KAAEQ,GAAE,WAAW,IAAE,UAAQX,KAAEP,GAAEM,EAAC,EAAE,KAAKL,EAAC,MAAI,WAASM,KAAE,SAAOA,GAAE,IAAEO,GAAER,EAAC,EAAEL,EAAC;AAAE,sBAAAW,GAAE,KAAKI,GAAEN,EAAC,CAAC;AAAA,oBAAC;AAAA,kBAAC;AAAC,mBAAC,kBAAgBD,GAAE,OAAO,MAAM,QAAMX,GAAE,QAAM,kBAAgBA,GAAE,UAAQc,GAAE,IAAI,GAAEA,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,GAAEW,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,GAAEW,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,GAAEW,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,KAAI,cAAYQ,GAAE,OAAO,MAAM,QAAMX,GAAE,QAAM,cAAYA,GAAE,UAAQc,GAAE,IAAI,GAAEA,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,GAAEW,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,GAAEW,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,GAAEW,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,GAAEW,GAAE,KAAKH,GAAE,QAAQ,cAAcV,EAAC,EAAEE,EAAC,CAAC,IAAG,eAAaQ,GAAE,OAAO,MAAM,SAAOG,GAAE,IAAI,GAAEA,GAAE,KAAKH,GAAE,QAAQ,iBAAiBV,EAAC,EAAEE,EAAC,CAAC,GAAEW,GAAE,KAAKH,GAAE,QAAQ,eAAeV,EAAC,EAAEE,EAAC,CAAC,IAAGW,GAAE,UAAQC,GAAE,KAAKD,GAAE,KAAKR,EAAC,CAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC;AAAA,UAAC;AAAE,UAAAQ,GAAE,KAAKH,GAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,cAAc,GAAE,cAAYA,GAAE,OAAO,MAAM,QAAMG,GAAE,KAAK,SAAS,GAAEA,GAAE,KAAK,IAAI,GAAEA,GAAE,KAAK,QAAQ,GAAEA,GAAE,KAAK,IAAI,GAAEA,GAAE,KAAK,SAAS,KAAG,kBAAgBH,GAAE,OAAO,MAAM,QAAMG,GAAE,KAAK,MAAM,GAAEA,GAAE,KAAK,MAAM,GAAEA,GAAE,KAAK,KAAK,GAAEA,GAAE,KAAK,OAAO,KAAG,eAAaH,GAAE,OAAO,MAAM,QAAMG,GAAE,KAAK,SAAS,GAAEA,GAAE,KAAK,SAAS,KAAGZ,GAAE,IAAK,SAASF,IAAEC,IAAE;AAAC,gBAAIC,MAAGF,GAAE,OAAKA,GAAE,OAAK,UAAU,OAAOC,EAAC,KAAG;AAAG,YAAAU,GAAE,QAAQ,cAAYG,GAAE,KAAKZ,GAAE,MAAMI,EAAC,EAAE,KAAK,EAAE,IAAEJ,GAAE,MAAMI,EAAC,EAAE,KAAK,EAAE,IAAE,UAAU,OAAOL,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEU,GAAE,QAAQ,eAAaG,GAAE,KAAKH,GAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,WAAW,GAAEI,GAAE,KAAKD,GAAE,KAAKR,EAAC,CAAC,IAAGK,GAAE,QAAQ,sBAAoB,CAACA,GAAE,QAAQ,cAAYA,GAAE,OAAO,MAAM,WAAW,UAAQA,GAAE,OAAO,OAAO,SAAOT,GAAE,IAAK,SAASF,IAAEC,IAAE;AAAC,YAAAU,GAAE,QAAQ,aAAWY,GAAEvB,IAAEC,EAAC,MAAIa,KAAE,CAAC,GAAG,KAAKV,GAAEO,GAAE,QAAQ,OAAOV,EAAC,CAAC,CAAC,GAAEa,GAAE,KAAKI,GAAEF,GAAEf,EAAC,CAAC,CAAC,GAAEc,GAAE,KAAKD,GAAE,KAAKR,EAAC,CAAC;AAAA,UAAE,CAAE,KAAGM,KAAE,oBAAI,OAAIF,KAAE,CAAC,GAAER,GAAE,QAAS,SAASF,IAAEC,IAAE;AAAC,oBAAMD,MAAGA,GAAE,KAAK,QAAS,SAASA,IAAE;AAAC,kBAAIG,IAAEE;AAAE,kBAAGe,GAAE,WAAW,EAAE,CAAAjB,KAAEH,GAAE,GAAEK,KAAEL,GAAE;AAAA,mBAAM;AAAC,oBAAG,CAACoB,GAAE,gBAAgB,EAAE;AAAO,gBAAAjB,KAAEH,GAAE,CAAC,GAAEK,KAAEL,GAAE,CAAC;AAAA,cAAC;AAAC,cAAAU,GAAEP,EAAC,MAAIO,GAAEP,EAAC,IAAE,MAAMD,GAAE,MAAM,EAAE,KAAK,EAAE,IAAGQ,GAAEP,EAAC,EAAEF,EAAC,IAAEiB,GAAEb,EAAC,GAAEO,GAAE,IAAIT,EAAC;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE,GAAEW,GAAE,UAAQC,GAAE,KAAKD,GAAE,KAAKR,EAAC,CAAC,GAAE,MAAM,KAAKM,EAAC,EAAE,KAAK,EAAE,QAAS,SAASZ,IAAE;AAAC,YAAAe,GAAE,KAAK,CAACX,GAAEJ,EAAC,GAAEU,GAAEV,EAAC,EAAE,KAAKM,EAAC,CAAC,CAAC;AAAA,UAAC,CAAE,IAAGO,MAAGE,GAAE,KAAKN,EAAC,GAAE,KAAK,gBAAgB,kCAAgC,mBAAmB,WAASI,EAAC,GAAEV,MAAGQ,GAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,UAAS,MAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASX,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,SAAS,cAAc,GAAG;AAAE,UAAAA,GAAE,OAAKH,IAAEG,GAAE,YAAUF,MAAG,KAAK,EAAE,QAAQ,WAASC,IAAE,SAAS,KAAK,YAAYC,EAAC,GAAEA,GAAE,MAAM,GAAE,SAAS,KAAK,YAAYA,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEH;AAAA,MAAC,EAAE;AAAv4iF,UAAy4iF+C,KAAE,WAAU;AAAC,iBAAS/C,GAAEC,IAAEE,IAAE;AAAC,UAAAD,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,SAAOE,IAAE,KAAK,IAAEF,GAAE;AAAE,cAAII,KAAE,KAAK;AAAE,eAAK,YAAU,IAAIuB,GAAE3B,EAAC,GAAE,KAAK,cAAYI,GAAE,QAAQ,OAAO,MAAM,GAAEA,GAAE,QAAQ,gBAAgB,SAAO,KAAG,CAACA,GAAE,QAAQ,oBAAkB,KAAK,cAAYA,GAAE,QAAQ,gBAAgB,MAAM,IAAGA,GAAE,OAAO,MAAM,wBAAsB,KAAK,cAAYA,GAAE,OAAO,MAAM,sBAAqB,KAAK,cAAY,CAAC,GAAE,KAAK,mBAAiB,CAAC,GAAE,UAAQA,GAAE,OAAO,MAAM,WAAS,KAAK,OAAK,IAAE,KAAK,OAAKA,GAAE,QAAQ,YAAW,KAAK,OAAK,KAAK,OAAKA,GAAE,OAAO,MAAM,WAAW,SAAQ,KAAK,0BAAwB,UAAQA,GAAE,OAAO,MAAM,QAAMA,GAAE,OAAO,YAAY,IAAI,YAAW,KAAK,gBAAcA,GAAE,OAAO,MAAM,OAAO,MAAM,UAAS,KAAK,kBAAgBA,GAAE,OAAO,MAAM,OAAO,MAAM,YAAW,KAAK,kBAAgBA,GAAE,OAAO,MAAM,OAAO,MAAM,QAAO,KAAK,mBAAiBA,GAAE,OAAO,MAAM,WAAW,OAAM,KAAK,4BAA0B,KAAK,mBAAiBA,GAAE,OAAO,MAAM,CAAC,EAAE,WAAW,MAAM,SAAS,IAAG,KAAK,iBAAiB,QAAQ,GAAG,IAAE,KAAG,KAAK,mBAAiBA,GAAE,QAAQ,YAAU,SAAS,KAAK,kBAAiB,EAAE,IAAE,MAAI,KAAK,mBAAiB,SAAS,KAAK,kBAAiB,EAAE,GAAE,KAAK,oBAAkBA,GAAE,OAAO,MAAM,WAAW,QAAO,KAAK,QAAMA,GAAE,OAAO,MAAM,CAAC;AAAA,QAAC;AAAC,eAAOA,GAAEL,IAAE,CAAC,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAE,IAAIqB,GAAE,KAAK,GAAG,GAAEpB,KAAED,GAAE,MAAM,EAAC,OAAM,oBAAmB,WAAU,aAAa,OAAOD,GAAE,OAAO,MAAM,SAAQ,IAAI,EAAE,OAAOA,GAAE,OAAO,MAAM,SAAQ,GAAG,EAAC,CAAC,GAAEG,KAAEF,GAAE,MAAM,EAAC,OAAM,4BAA2B,WAAU,aAAa,OAAOD,GAAE,QAAQ,iBAAgB,IAAI,EAAE,OAAOA,GAAE,QAAQ,iBAAgB,GAAG,EAAC,CAAC;AAAE,UAAAE,GAAE,IAAIC,EAAC;AAAE,mBAAQE,KAAE,CAAC,GAAEC,KAAE,GAAEA,KAAE,KAAK,YAAY,QAAOA,KAAI,CAAAD,GAAE,KAAK,KAAK,YAAYC,EAAC,CAAC;AAAE,cAAG,KAAK,uBAAuB,MAAGL,IAAEE,IAAEE,IAAEL,GAAE,QAAQ,YAAY,SAASA,IAAEC,IAAE;AAAC,mBAAOA;AAAA,UAAC,CAAE,GAAED,GAAE,QAAQ,gBAAe;AAAC,gBAAIQ,KAAER,GAAE,QAAQ;AAAO,YAAAK,KAAE,CAAC;AAAE,qBAAQI,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAJ,GAAE,KAAKG,GAAEC,EAAC,EAAE,KAAK;AAAE,gBAAIE,KAAE,CAAC;AAAE,YAAAX,GAAE,OAAO,MAAM,MAAM,UAAQW,GAAE,gBAAcX,GAAE,OAAO,MAAM,MAAM,MAAM,UAASW,GAAE,kBAAgBX,GAAE,OAAO,MAAM,MAAM,MAAM,YAAWW,GAAE,kBAAgBX,GAAE,OAAO,MAAM,MAAM,MAAM,QAAOW,GAAE,aAAWX,GAAE,OAAO,MAAM,MAAM,MAAM,YAAWW,GAAE,WAASX,GAAE,OAAO,MAAM,MAAM,MAAM,WAAU,KAAK,uBAAuB,OAAGC,IAAEE,IAAEE,IAAE,OAAI,SAASL,IAAEC,IAAE;AAAC,qBAAOO,GAAER,EAAC,EAAE,OAAKC;AAAA,YAAC,GAAGU,EAAC;AAAA,UAAC;AAAC,cAAG,WAASX,GAAE,OAAO,MAAM,MAAM,MAAK;AAAC,gBAAIY,KAAEX,GAAE,MAAM,EAAC,OAAM,yBAAwB,CAAC,GAAES,KAAET,GAAE,SAAS,EAAC,GAAED,GAAE,QAAQ,YAAU,IAAEA,GAAE,OAAO,MAAM,MAAM,SAAQ,GAAE,KAAK,OAAK,WAAW,KAAK,aAAa,KAAG,aAAWA,GAAE,OAAO,MAAM,WAASA,GAAE,QAAQ,oBAAkB,CAACA,GAAE,QAAQ,oBAAkB,MAAIA,GAAE,OAAO,MAAM,MAAM,SAAQ,MAAKA,GAAE,OAAO,MAAM,MAAM,MAAK,YAAW,UAAS,UAASA,GAAE,OAAO,MAAM,MAAM,MAAM,UAAS,YAAWA,GAAE,OAAO,MAAM,MAAM,MAAM,YAAW,YAAWA,GAAE,OAAO,MAAM,MAAM,MAAM,YAAW,WAAUA,GAAE,OAAO,MAAM,MAAM,MAAM,OAAM,UAAS,iCAA+BA,GAAE,OAAO,MAAM,MAAM,MAAM,SAAQ,CAAC;AAAE,YAAAY,GAAE,IAAIF,EAAC,GAAER,GAAE,IAAIU,EAAC;AAAA,UAAC;AAAC,cAAGZ,GAAE,OAAO,MAAM,WAAW,MAAK;AAAC,gBAAIc,KAAEd,GAAE,QAAQ,sBAAqBe,KAAEd,GAAE,SAASD,GAAE,QAAQ,gBAAcA,GAAE,OAAO,MAAM,WAAW,UAAQc,IAAE,KAAK,MAAK,KAAK,mBAAiBA,IAAE,KAAK,MAAKd,GAAE,OAAO,MAAM,WAAW,OAAM,GAAE,KAAK,iBAAiB;AAAE,iBAAK,UAAQ,KAAK,OAAO,iBAAeA,GAAE,OAAO,KAAK,OAAK,KAAK,OAAO,cAAc,IAAIe,EAAC,IAAEb,GAAE,IAAIa,EAAC;AAAA,UAAC;AAAC,iBAAOb;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASF,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,cAAIE,IAAEC,KAAE,MAAKE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAE,CAAC,GAAEF,KAAE,CAAC,GAAEI,KAAE,KAAK,GAAEC,KAAEJ,GAAE,iBAAe,KAAK,eAAcE,KAAEF,GAAE,mBAAiB,KAAK,iBAAgBK,KAAEL,GAAE,mBAAiB,KAAK,iBAAgBM,KAAEN,GAAE,cAAYG,GAAE,OAAO,MAAM,OAAO,MAAM,YAAWV,KAAEO,GAAE,YAAUG,GAAE,OAAO,MAAM,OAAO,MAAM,UAASI,KAAEJ,GAAE,QAAQ,eAAcP,KAAEJ,GAAE,QAAOgB,KAAE,eAAaL,GAAE,OAAO,MAAM,OAAKA,GAAE,QAAQ,aAAWP;AAAE,cAAG,MAAIY,MAAGZ,KAAEY,OAAIA,KAAEZ,KAAGF,IAAE;AAAC,gBAAIe,KAAED,KAAE,IAAEA,KAAE,IAAEA;AAAE,YAAAX,KAAEM,GAAE,QAAQ,YAAU,KAAK,IAAIM,IAAEb,KAAE,CAAC,GAAEW,KAAEA,KAAEZ,GAAE,GAAEE,EAAC,IAAE,IAAEM,GAAE,OAAO,MAAM,OAAO;AAAA,UAAO,MAAM,CAAAN,KAAEM,GAAE,QAAQ,YAAUK,IAAED,KAAEA,KAAEZ,GAAE,GAAEE,EAAC,IAAEM,GAAE,OAAO,MAAM,OAAO;AAAQ,mBAAQO,KAAE,SAAShB,IAAE;AAAC,gBAAIM,KAAEO,KAAEZ,GAAED,IAAEG,EAAC,IAAE,IAAEM,GAAE,OAAO,MAAM,OAAO;AAAQ,kBAAIT,MAAG,MAAIE,MAAGC,KAAE,MAAIU,MAAG,MAAIC,OAAIR,KAAEG,GAAE,QAAQ,YAAU;AAAG,gBAAIM,KAAEX,GAAE,UAAU,SAASN,IAAEW,GAAE,QAAQ,iBAAgBH,IAAEN,IAAEO,IAAEG,IAAEf,EAAC,GAAEqB,KAAE;AAAG,YAAAP,GAAE,QAAQ,iBAAed,OAAIqB,KAAE,KAAIP,GAAE,OAAO,MAAM,MAAM,QAAM,UAAQA,GAAE,OAAO,MAAM,aAAWO,MAAG,WAAWP,GAAE,OAAO,MAAM,MAAM,MAAM,QAAQ,IAAE,IAAGd,OAAIqB,KAAEA,KAAE,WAAWN,EAAC,KAAGD,GAAE,QAAQ,oBAAkBA,GAAE,QAAQ,2BAAyBA,GAAE,QAAQ,gBAAc,KAAG,KAAIM,KAAE,WAASN,GAAE,OAAO,MAAM,cAAY,iBAAeA,GAAE,OAAO,MAAM,cAAY,eAAaA,GAAE,OAAO,MAAM,OAAKL,GAAE,UAAU,4BAA4BJ,IAAEe,IAAEb,EAAC,IAAEE,GAAE,UAAU,0BAA0BJ,IAAEe,IAAEb,IAAEK,IAAEF,EAAC;AAAE,gBAAGI,GAAE,OAAO,MAAM,OAAO,MAAK;AAAC,kBAAIQ,KAAErB,GAAE,SAAS,EAAC,GAAEmB,GAAE,GAAE,GAAEX,GAAE,OAAKK,GAAE,OAAO,MAAM,OAAO,UAAQO,MAAG,UAAQP,GAAE,OAAO,MAAM,WAASA,GAAE,QAAQ,cAAYA,GAAE,OAAO,MAAM,UAAU,SAAO,IAAE,IAAG,MAAKM,GAAE,MAAK,YAAW,UAAS,YAAWA,GAAE,SAAO,MAAIH,IAAE,UAASF,IAAE,YAAWF,IAAE,WAAU,MAAM,QAAQG,EAAC,IAAEhB,MAAGc,GAAE,OAAO,MAAM,wBAAsBE,GAAEF,GAAE,QAAQ,OAAKT,KAAE,CAAC,IAAEW,GAAEX,EAAC,IAAEW,IAAE,aAAY,OAAG,WAAUhB,KAAE,4BAA0B,mCAAiCI,GAAC,CAAC;AAAE,kBAAGF,GAAE,IAAIoB,EAAC,GAAEA,GAAE,GAAG,SAAS,SAAStB,IAAE;AAAC,oBAAG,cAAY,OAAOc,GAAE,OAAO,MAAM,OAAO,iBAAgB;AAAC,sBAAIb,KAAE,OAAO,OAAO,CAAC,GAAEa,IAAE,EAAC,YAAWT,GAAC,CAAC;AAAE,kBAAAS,GAAE,OAAO,MAAM,OAAO,gBAAgBd,IAAES,GAAE,KAAIR,EAAC;AAAA,gBAAC;AAAA,cAAC,CAAE,GAAED,IAAE;AAAC,oBAAIuB,KAAE,SAAS,gBAAgBT,GAAE,QAAQ,OAAM,OAAO;AAAE,gBAAAS,GAAE,cAAY,MAAM,QAAQH,GAAE,IAAI,IAAEA,GAAE,KAAK,KAAK,GAAG,IAAEA,GAAE,MAAKE,GAAE,KAAK,YAAYC,EAAC,GAAE,OAAKH,GAAE,SAAOR,GAAE,KAAKQ,GAAE,IAAI,GAAEV,GAAE,KAAKU,EAAC;AAAA,cAAE;AAAA,YAAC;AAAC,YAAAf,KAAEE,KAAE,MAAIW,MAAGZ,GAAED,KAAE,GAAEG,EAAC;AAAA,UAAE,GAAEc,KAAE,GAAEA,MAAGf,KAAE,GAAEe,KAAI,CAAAD,GAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAStB,IAAE;AAAC,cAAIC,IAAEC,IAAEC,KAAE,MAAKE,KAAE,KAAK,GAAEC,KAAE,IAAIgB,GAAE,KAAK,GAAG,GAAEd,KAAEH,GAAE,OAAO,MAAM,CAAC,EAAE,WAASA,GAAE,QAAQ,gBAAgBL,EAAC,IAAE,GAAES,KAAEH,GAAE,MAAM,EAAC,OAAM,8CAA6C,KAAIN,GAAC,CAAC,GAAEW,KAAEL,GAAE,MAAM,EAAC,OAAM,8DAA6D,WAAU,eAAaE,KAAE,OAAM,CAAC;AAAE,UAAAC,GAAE,IAAIE,EAAC;AAAE,cAAIC,KAAE,CAAC;AAAE,cAAGP,GAAE,OAAO,MAAML,EAAC,EAAE,KAAK,UAAQU,KAAE,GAAEA,KAAE,KAAK,YAAY,QAAOA,KAAI,CAAAE,GAAE,KAAK,KAAK,YAAYF,EAAC,CAAC;AAAE,UAAAT,KAAEI,GAAE,QAAQ,aAAWO,GAAE,QAAOV,KAAE,CAACD,KAAE;AAAI,cAAIa,KAAET,GAAE,QAAQ,iBAAiB,CAAC,GAAEU,KAAEV,GAAE,OAAO,MAAM,CAAC,EAAE;AAAO,cAAGU,GAAE,KAAK,UAAQF,KAAE,SAASL,IAAE;AAAC,gBAAIC,KAAE,WAASG,GAAEJ,EAAC,IAAE,KAAGI,GAAEJ,EAAC;AAAE,YAAAC,KAAEK,GAAEL,IAAE,EAAC,aAAYT,IAAE,gBAAeQ,IAAE,GAAEH,GAAC,CAAC;AAAE,gBAAIK,KAAEP,GAAE,UAAU,kBAAkBY,GAAE,MAAM,QAAOf,EAAC,GAAEa,KAAE;AAAE,kBAAM,QAAQJ,EAAC,MAAII,KAAEJ,GAAE,SAAO,IAAE,SAASM,GAAE,MAAM,UAAS,EAAE;AAAG,gBAAIC,KAAED,GAAE,UAAQ,IAAGE,KAAE;AAAM,YAAAd,GAAE,MAAM,aAAWc,KAAE,UAAS,WAASZ,GAAE,OAAO,MAAM,CAAC,EAAE,OAAO,SAAOW,KAAED,GAAE,SAAQE,KAAE,WAAS,aAAWZ,GAAE,OAAO,MAAM,CAAC,EAAE,OAAO,SAAOW,KAAED,GAAE,SAAQE,KAAE,YAAU,YAAUZ,GAAE,OAAO,MAAM,CAAC,EAAE,OAAO,UAAQY,KAAE;AAAO,gBAAIb,KAAEE,GAAE,SAAS,EAAC,GAAEU,IAAE,GAAEd,KAAED,KAAEc,GAAE,UAAQF,IAAE,MAAKJ,IAAE,YAAWQ,IAAE,WAAU,MAAM,QAAQP,EAAC,IAAEA,GAAEF,EAAC,IAAEE,IAAE,UAASK,GAAE,MAAM,UAAS,YAAWA,GAAE,MAAM,YAAW,YAAWA,GAAE,MAAM,YAAW,aAAY,OAAG,UAAS,4BAA0BA,GAAE,MAAM,UAAS,UAASA,GAAE,SAAQ,CAAC;AAAE,YAAAJ,GAAE,IAAIP,EAAC,GAAEA,GAAE,GAAG,SAAS,SAASJ,IAAE;AAAC,kBAAG,cAAY,OAAOK,GAAE,OAAO,MAAM,OAAO,iBAAgB;AAAC,oBAAIJ,KAAE,OAAO,OAAO,CAAC,GAAEI,IAAE,EAAC,YAAWG,GAAC,CAAC;AAAE,gBAAAH,GAAE,OAAO,MAAM,OAAO,gBAAgBL,IAAEG,GAAE,KAAIF,EAAC;AAAA,cAAC;AAAA,YAAC,CAAE;AAAE,gBAAIiB,KAAE,SAAS,gBAAgBb,GAAE,QAAQ,OAAM,OAAO;AAAE,gBAAGa,GAAE,cAAY,MAAM,QAAQT,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA,IAAEL,GAAE,KAAK,YAAYc,EAAC,GAAE,MAAIb,GAAE,OAAO,MAAML,EAAC,EAAE,OAAO,QAAO;AAAC,kBAAIO,KAAED,GAAE,mBAAmBF,GAAE,IAAI;AAAE,cAAAA,GAAE,KAAK,aAAa,aAAY,UAAU,OAAOC,GAAE,OAAO,MAAML,EAAC,EAAE,OAAO,QAAO,KAAK,EAAE,OAAOO,GAAE,GAAE,GAAG,CAAC;AAAA,YAAC;AAAC,YAAAL,MAAGD;AAAA,UAAC,GAAEe,KAAE,GAAEA,MAAGJ,GAAE,SAAO,GAAEI,KAAI,CAAAH,GAAEG,EAAC;AAAE,cAAG,WAASX,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,MAAK;AAAC,gBAAIY,KAAEX,GAAE,MAAM,EAAC,OAAM,0DAAyD,WAAU,eAAaE,KAAE,OAAM,CAAC,GAAEJ,KAAEE,GAAE,SAAS,EAAC,GAAED,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,SAAQ,GAAEA,GAAE,QAAQ,aAAW,IAAEA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,SAAQ,MAAKA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,MAAK,YAAW,UAAS,WAAUA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,MAAM,OAAM,UAASA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,MAAM,UAAS,YAAWA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,MAAM,YAAW,YAAWA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,MAAM,YAAW,UAAS,iCAA+BA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,MAAM,SAAQ,CAAC;AAAE,YAAAY,GAAE,IAAIb,EAAC,GAAEK,GAAE,IAAIQ,EAAC;AAAA,UAAC;AAAC,cAAIC,KAAE;AAAE,eAAK,2BAAyBb,GAAE,OAAO,MAAM,CAAC,EAAE,aAAWa,KAAEb,GAAE,QAAQ;AAAW,cAAIE,KAAEF,GAAE,OAAO,MAAM;AAAW,cAAGE,GAAE,MAAK;AAAC,gBAAIY,KAAEb,GAAE,SAASD,GAAE,QAAQ,gBAAcE,GAAE,UAAQW,IAAE,IAAEX,GAAE,SAAQF,GAAE,QAAQ,gBAAcE,GAAE,UAAQW,IAAEb,GAAE,QAAQ,aAAWE,GAAE,SAAQA,GAAE,OAAM,CAAC;AAAE,iBAAK,UAAQ,KAAK,OAAO,iBAAeF,GAAE,OAAO,KAAK,OAAK,KAAK,OAAO,cAAc,IAAIc,EAAC,IAAEV,GAAE,IAAIU,EAAC;AAAA,UAAC;AAAC,iBAAOd,GAAE,OAAO,MAAM,CAAC,EAAE,UAAU,QAAM,KAAK,UAAU,eAAea,IAAEN,GAAE,QAAOP,GAAE,OAAO,MAAM,CAAC,EAAE,YAAWA,GAAE,OAAO,MAAM,CAAC,EAAE,WAAU,GAAEJ,IAAEQ,EAAC,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAST,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAEL;AAAE,cAAG,EAAEA,KAAE,KAAGA,KAAE,IAAEG,GAAE,QAAQ,YAAW;AAAC,gBAAIG,KAAE,KAAK,OAAKH,GAAE,OAAO,MAAM,UAAU;AAAQ,gBAAGF,KAAEA,KAAEK,KAAEH,GAAE,OAAO,MAAM,UAAU,QAAO,UAAQA,GAAE,OAAO,MAAM,aAAWF,KAAEK,KAAEH,GAAE,OAAO,MAAM,UAAU,SAAQA,GAAE,OAAO,MAAM,UAAU,MAAK;AAAC,kBAAIK,KAAE,IAAIc,GAAE,KAAK,GAAG,EAAE,SAAStB,KAAEG,GAAE,OAAO,MAAM,UAAU,SAAQG,KAAEH,GAAE,OAAO,MAAM,SAAQE,KAAEF,GAAE,OAAO,MAAM,UAAU,SAAQF,KAAEE,GAAE,OAAO,MAAM,SAAQA,GAAE,OAAO,MAAM,UAAU,KAAK;AAAE,cAAAD,GAAE,IAAIM,EAAC,GAAEA,GAAE,KAAK,UAAU,IAAI,uBAAuB;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,cAAIR,KAAE,KAAK,GAAEC,KAAE,CAAC,GAAEC,KAAE,KAAK,YAAY,QAAOC,KAAEH,GAAE,QAAQ;AAAc,cAAGA,GAAE,QAAQ,gBAAgB,SAAO,EAAE,UAAQK,KAAE,GAAEA,KAAEH,IAAEG,KAAI,CAAAF,KAAE,KAAK,YAAYE,EAAC,EAAE,UAASJ,GAAE,KAAKE,EAAC;AAAA,cAAO,UAAQG,KAAEJ,IAAEM,KAAE,GAAEA,KAAEF,IAAEE,MAAI;AAAC,gBAAIC,KAAEH;AAAE,YAAAN,GAAE,QAAQ,cAAY,UAAQA,GAAE,OAAO,MAAM,SAAOS,MAAG,IAAGN,MAAGH,GAAE,QAAQ,YAAUS,IAAER,GAAE,KAAKE,EAAC;AAAA,UAAC;AAAC,iBAAOF;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK,GAAEC,KAAE,IAAIqB,GAAE,KAAK,GAAG,GAAEpB,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAc,2BAA2B,GAAEG,KAAEH,GAAE,QAAQ,IAAI,OAAO,iBAAiB,mEAAmE,GAAEK,KAAEL,GAAE,QAAQ,IAAI,OAAO,iBAAiB,iCAAiC,GAAEM,KAAEN,GAAE,QAAQ,IAAI,OAAO,iBAAiB,+CAA+C;AAAE,cAAGA,GAAE,QAAQ,iBAAeA,GAAE,OAAO,MAAM,OAAO,aAAa,UAAQQ,KAAE,GAAEA,KAAEL,GAAE,QAAOK,MAAI;AAAC,gBAAIC,KAAER,GAAE,mBAAmBE,GAAEK,EAAC,CAAC;AAAE,YAAAC,GAAE,IAAEA,GAAE,IAAE,GAAEA,GAAE,IAAEA,GAAE,IAAE,GAAEN,GAAEK,EAAC,EAAE,aAAa,aAAY,UAAU,OAAOR,GAAE,OAAO,MAAM,OAAO,QAAO,GAAG,EAAE,OAAOS,GAAE,GAAE,GAAG,EAAE,OAAOA,GAAE,GAAE,GAAG,CAAC,GAAEN,GAAEK,EAAC,EAAE,aAAa,eAAc,KAAK;AAAE,YAAAN,GAAE,aAAa,aAAY,gBAAgB,OAAO,KAAI,GAAG,CAAC;AAAE,gBAAIS,KAAER,GAAEK,EAAC,EAAE;AAAW,YAAAR,GAAE,OAAO,MAAM,OAAO,QAAM,MAAM,UAAU,QAAQ,KAAKW,IAAG,SAAST,IAAE;AAAC,cAAAD,GAAE,sBAAsBC,IAAEA,GAAE,aAAYF,GAAE,QAAQ,qBAAmB,aAAWA,GAAE,OAAO,OAAO,WAAS,KAAG,GAAG;AAAA,YAAC,CAAE;AAAA,UAAC;AAAA,cAAK,EAAC,WAAU;AAAC,qBAAQE,KAAEF,GAAE,QAAQ,aAAWA,GAAE,QAAQ,OAAO,SAAO,IAAGK,KAAE,GAAEA,KAAEF,GAAE,QAAOE,MAAI;AAAC,kBAAIC,KAAEH,GAAEE,EAAC,EAAE;AAAW,cAAAL,GAAE,OAAO,MAAM,OAAO,QAAM,eAAaA,GAAE,OAAO,MAAM,QAAM,MAAM,UAAU,QAAQ,KAAKM,IAAG,SAASN,IAAE;AAAC,gBAAAC,GAAE,sBAAsBD,IAAEA,GAAE,aAAYE,EAAC;AAAA,cAAC,CAAE;AAAA,YAAC;AAAA,UAAC,EAAE;AAAE,cAAGG,GAAE,SAAO,GAAE;AAAC,gBAAIO,KAAEP,GAAEA,GAAE,SAAO,CAAC,EAAE,QAAQ,GAAEK,KAAEL,GAAE,CAAC,EAAE,QAAQ;AAAE,YAAAO,GAAE,IAAE,OAAKP,GAAEA,GAAE,SAAO,CAAC,EAAE,WAAW,YAAYA,GAAEA,GAAE,SAAO,CAAC,CAAC,GAAEK,GAAE,IAAEA,GAAE,QAAMV,GAAE,QAAQ,aAAW,CAACA,GAAE,QAAQ,mBAAiBK,GAAE,CAAC,EAAE,WAAW,YAAYA,GAAE,CAAC,CAAC;AAAE,qBAAQS,KAAE,GAAEA,KAAER,GAAE,QAAOQ,KAAI,CAAAb,GAAE,sBAAsBK,GAAEQ,EAAC,GAAER,GAAEQ,EAAC,EAAE,aAAYd,GAAE,OAAO,MAAM,CAAC,EAAE,OAAO,YAAUA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,OAAK,IAAE,WAAWA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAM,MAAM,QAAQ,IAAE,KAAG,EAAE;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAnl4F,UAAql4FgD,KAAE,WAAU;AAAC,iBAAShD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAE,cAAIE,KAAE,KAAK;AAAE,eAAK,cAAYA,GAAE,QAAQ,OAAO,MAAM,GAAE,KAAK,YAAU,IAAIyB,GAAE3B,EAAC,GAAE,KAAK,aAAWE,GAAE,QAAQ,YAAY,UAAQA,GAAE,QAAQ,iBAAgBA,GAAE,QAAQ,gBAAgB,SAAO,MAAI,KAAK,cAAYA,GAAE,QAAQ,gBAAgB,MAAM;AAAA,QAAE;AAAC,eAAOE,GAAEL,IAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIA,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG;AAAE,UAAAtB,OAAIA,KAAEE,GAAE,MAAM,EAAC,OAAM,kBAAiB,CAAC;AAAG,cAAIC,KAAED,GAAE,SAASD,GAAE,QAAQ,eAAc,GAAEA,GAAE,QAAQ,eAAcA,GAAE,QAAQ,YAAW,aAAa,GAAEI,KAAEH,GAAE,SAASD,GAAE,QAAQ,eAAcA,GAAE,QAAQ,YAAWA,GAAE,QAAQ,WAAUA,GAAE,QAAQ,YAAW,aAAa;AAAE,iBAAOD,GAAE,IAAIK,EAAC,GAAEL,GAAE,IAAIG,EAAC,GAAEH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,WAAU;AAAC,cAAG,KAAK,EAAE,QAAQ,YAAW;AAAC,gBAAIA,KAAE,KAAK,WAAW;AAAE,mBAAO,KAAK,aAAaA,GAAE,EAAE,GAAEA;AAAA,UAAC;AAAC,iBAAO;AAAA,QAAI,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAE,MAAM,QAAQH,GAAE,OAAO,OAAO,KAAK,IAAE,KAAK,IAAI,MAAM,MAAKiB,GAAEjB,GAAE,OAAO,OAAO,KAAK,CAAC,IAAEA,GAAE,OAAO,OAAO,OAAMK,KAAE,SAASL,IAAE;AAAC,gBAAIE,KAAE,SAAS,gBAAgBD,GAAE,OAAM,UAAU;AAAE,mBAAOC,GAAE,aAAa,MAAKF,EAAC,GAAEE;AAAA,UAAC;AAAE,UAAAD,GAAE,IAAI,iBAAeI,GAAE,eAAe,OAAOJ,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,oBAAkBI,GAAE,kBAAkB,OAAOJ,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,uBAAqBI,GAAE,qBAAqB,OAAOJ,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,iBAAeI,GAAE,eAAe,OAAOJ,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,oBAAkBI,GAAE,kBAAkB,OAAOJ,GAAE,IAAI,CAAC;AAAE,cAAIK,KAAE,GAAEE,KAAE;AAAE,WAAC,CAAC,OAAM,YAAW,eAAc,SAAS,EAAE,SAASR,GAAE,OAAO,MAAM,IAAI,KAAGA,GAAE,QAAQ,gBAAc,MAAIA,GAAE,QAAQ,cAAY,CAACA,GAAE,QAAQ,oBAAkBM,KAAE,KAAK,IAAIN,GAAE,OAAO,KAAK,QAAQ,MAAKC,GAAE,oBAAoB,GAAEO,KAAE,KAAK,IAAIR,GAAE,OAAO,KAAK,QAAQ,OAAMC,GAAE,oBAAoB,IAAGA,GAAE,IAAI,aAAWC,GAAE,SAAS,GAAE,GAAED,GAAE,WAAUA,GAAE,YAAW,GAAE,MAAM,GAAEA,GAAE,IAAI,gBAAcC,GAAE,SAAS,CAACC,KAAE,IAAEG,KAAE,GAAE,CAACH,KAAE,IAAE,GAAEF,GAAE,YAAUE,KAAEK,KAAEF,KAAE,GAAEL,GAAE,aAAWE,KAAE,GAAE,GAAE,MAAM;AAAE,cAAIM,KAAET,GAAE,QAAQ,QAAQ;AAAY,UAAAC,GAAE,IAAI,mBAAiBC,GAAE,SAAS,CAACO,IAAE,CAACA,IAAER,GAAE,YAAU,IAAEQ,IAAER,GAAE,aAAW,IAAEQ,IAAE,GAAE,MAAM,GAAER,GAAE,IAAI,eAAe,YAAYA,GAAE,IAAI,WAAW,IAAI,GAAEA,GAAE,IAAI,kBAAkB,YAAYA,GAAE,IAAI,cAAc,IAAI,GAAEA,GAAE,IAAI,qBAAqB,YAAYA,GAAE,IAAI,iBAAiB,IAAI;AAAE,cAAIU,KAAEV,GAAE,IAAI,OAAO,cAAc,MAAM;AAAE,UAAAU,GAAE,YAAYV,GAAE,IAAI,cAAc,GAAEU,GAAE,YAAYV,GAAE,IAAI,iBAAiB,GAAEU,GAAE,YAAYV,GAAE,IAAI,oBAAoB,GAAEU,GAAE,YAAYV,GAAE,IAAI,cAAc,GAAEU,GAAE,YAAYV,GAAE,IAAI,iBAAiB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,IAAGG,KAAEH,GAAE,IAAGK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,QAAOS,KAAET,GAAE,QAAOW,KAAE,KAAK;AAAE,cAAG,EAAE,MAAIV,MAAGU,GAAE,QAAQ,0BAAwBV,OAAIO,KAAE,KAAGG,GAAE,QAAQ,yBAAuB,CAACA,GAAE,OAAO,MAAM,OAAO,aAAW,YAAUA,GAAE,OAAO,MAAM,OAAM;AAAC,YAAAA,GAAE,OAAO,KAAK,MAAM,MAAM,QAAM,KAAK,cAAc,EAAC,GAAEV,IAAE,IAAGC,IAAE,IAAGC,IAAE,IAAGE,IAAE,IAAGC,IAAE,QAAOE,IAAE,QAAOC,GAAC,CAAC;AAAE,gBAAIG,KAAE;AAAE,gBAAGD,GAAE,QAAQ,kBAAgB,cAAYA,GAAE,OAAO,MAAM,eAAc;AAAC,kBAAID,KAAEC,GAAE,QAAQ;AAAO,kBAAGD,IAAE;AAAC,yBAAQI,KAAE,GAAEC,KAAE,GAAED,KAAEb,MAAGc,KAAEL,GAAE,QAAOK,KAAI,CAAAD,MAAGJ,GAAEK,EAAC,EAAE;AAAK,gBAAAD,OAAIb,OAAIW,KAAE,MAAGD,GAAE,QAAQ;AAAA,cAAkB;AAAA,YAAC;AAAC,gBAAIoC,GAAE,KAAK,GAAG,EAAE,eAAe7C,IAAEU,IAAED,GAAE,QAAQ,IAAI,WAAW;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASX,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,IAAGG,KAAEH,GAAE,IAAGK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,QAAOS,KAAET,GAAE,QAAOW,KAAE,KAAK,GAAEC,KAAEH,GAAE,KAAK,UAAU,SAAS,iCAAiC,GAAEC,KAAEC,GAAE,QAAQ,sBAAqBG,KAAE,MAAIX,MAAG,MAAIG,MAAG,MAAIJ,MAAG,MAAIG,MAAGF,OAAIQ,GAAE,QAAQ,cAAYL,OAAIK,GAAE,QAAQ,cAAYA,GAAE,QAAQ,oBAAkB,MAAIV,MAAGA,OAAIO,KAAE,IAAGO,KAAE,IAAIO,GAAE,IAAI,EAAE,SAASpB,MAAGU,KAAEF,KAAE,IAAGP,IAAEE,MAAGO,KAAEF,KAAE,IAAGJ,IAAEK,GAAE,OAAO,KAAK,aAAYA,GAAE,OAAO,KAAK,eAAe;AAAE,UAAAI,GAAE,KAAK,UAAU,IAAI,qBAAqB,GAAED,MAAGH,GAAE,OAAO,KAAK,OAAK,KAAK,cAAc,IAAII,EAAC,IAAEN,GAAE,IAAIM,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASf,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,IAAGG,KAAEH,GAAE,IAAGK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,MAAKS,KAAE,KAAK,GAAEE,KAAE,IAAIW,GAAE,KAAK,GAAG,GAAEV,KAAEH,GAAE,QAAQ,sBAAqBC,KAAED,GAAE,OAAO,KAAKD,EAAC,EAAE,OAAOP,EAAC,GAAEa,KAAEH,GAAE,SAAST,MAAG,UAAQM,KAAEI,KAAE,IAAGT,IAAEE,MAAG,UAAQG,KAAE,IAAEI,KAAE,IAAGN,IAAE,GAAEI,IAAED,GAAE,OAAO,KAAKD,EAAC,EAAE,OAAO;AAAE,eAAK,IAAI,IAAIM,EAAC,GAAEA,GAAE,KAAK,aAAY,oBAAoB,OAAOL,GAAE,QAAQ,MAAK,GAAG,CAAC,GAAEK,GAAE,KAAK,UAAU,IAAI,mBAAmB,OAAON,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASR,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAEF,GAAE,QAAOG,KAAEH,GAAE,YAAWK,KAAE,KAAK;AAAE,cAAGA,GAAE,OAAO,KAAK,MAAM,MAAM,QAAMA,GAAE,OAAO,MAAM,UAAU,MAAK;AAAC,gBAAIC,IAAEE,KAAEH,GAAE,QAAQ,eAAcI,KAAEJ,GAAE,QAAQ;AAAW,YAAAA,GAAE,QAAQ,gBAAgB,SAAO,SAASL,IAAE;AAAC,uBAAQG,KAAEH,GAAE,IAAGK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,IAAGS,KAAET,GAAE,IAAGW,KAAE,GAAEA,KAAER,IAAEQ,KAAI,CAAAN,KAAEJ,GAAE,YAAYU,EAAC,EAAE,UAASH,KAAEP,GAAE,YAAYU,EAAC,EAAE,UAASV,GAAE,eAAe,EAAC,GAAEU,IAAE,IAAGN,IAAE,IAAGC,IAAE,IAAGE,IAAE,IAAGC,IAAE,QAAOP,IAAE,QAAOD,GAAE,aAAY,CAAC;AAAA,YAAC,EAAE,EAAC,IAAGC,IAAE,IAAGM,IAAE,IAAG,GAAE,IAAGF,IAAE,IAAGG,GAAC,CAAC,KAAGJ,GAAE,QAAQ,eAAaH,KAAEG,GAAE,QAAQ,WAAW,OAAO,SAAQ,SAASL,IAAE;AAAC,uBAAQG,KAAEH,GAAE,IAAGM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,IAAGS,KAAET,GAAE,IAAGW,KAAEX,GAAE,IAAGY,KAAE,GAAEA,KAAET,MAAGE,GAAE,QAAQ,aAAW,IAAE,IAAGO,KAAI,OAAIA,MAAG,MAAIT,MAAG,MAAIE,GAAE,QAAQ,eAAaI,KAAEH,KAAED,GAAE,QAAQ,YAAU,IAAGJ,GAAE,eAAe,EAAC,GAAEW,IAAE,IAAGN,IAAE,IAAGE,IAAE,IAAGC,IAAE,IAAGE,IAAE,QAAOT,IAAE,QAAOD,GAAE,aAAY,CAAC,GAAEQ,KAAEH,MAAGD,GAAE,QAAQ,aAAWA,GAAE,QAAQ,aAAWF,KAAE,IAAEA;AAAA,YAAE,EAAE,EAAC,IAAGD,IAAE,IAAGM,IAAE,IAAG,GAAE,IAAGF,IAAE,IAAGG,GAAC,CAAC;AAAA,UAAE;AAAC,cAAGJ,GAAE,OAAO,KAAK,MAAM,MAAM,MAAK;AAAC,gBAAIM,KAAE,GAAEC,KAAE,GAAEF,KAAEL,GAAE,QAAQ,WAAUS,KAAEX,KAAE;AAAE,iBAAK,eAAaW,KAAET,GAAE,QAAQ,OAAO;AAAQ,qBAAQU,KAAE,GAAEA,KAAED,MAAG,KAAK,aAAW,IAAE,IAAGC,KAAI,MAAK,cAAc,EAAC,GAAEA,IAAE,QAAOD,MAAG,KAAK,aAAW,IAAE,IAAG,IAAG,GAAE,IAAGH,IAAE,IAAGD,IAAE,IAAGE,IAAE,QAAO,KAAK,aAAY,CAAC,GAAEA,KAAED,MAAGN,GAAE,QAAQ,cAAY,KAAK,aAAWS,KAAEX;AAAA,UAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAED,GAAE,QAAOE,KAAE,KAAK;AAAE,cAAGA,GAAE,OAAO,KAAK,MAAM,MAAM,QAAMA,GAAE,OAAO,MAAM,UAAU,KAAK,UAAQC,IAAEE,KAAEH,GAAE,QAAQ,eAAcI,KAAEJ,GAAE,QAAQ,YAAWM,KAAE,GAAEA,KAAEP,KAAE,GAAEO,MAAI;AAAC,YAAAN,GAAE,OAAO,KAAK,MAAM,MAAM,QAAM,KAAK,cAAc,EAAC,GAAEM,IAAE,QAAOP,KAAE,GAAE,IAAGI,IAAE,IAAG,GAAE,IAAGF,IAAE,IAAGG,IAAE,QAAO,KAAK,aAAY,CAAC,GAAE,IAAIyC,GAAE,KAAK,GAAG,EAAE,eAAe1C,IAAE,GAAEH,GAAE,QAAQ,IAAI,WAAW,GAAEC,KAAEE,MAAGH,GAAE,QAAQ,YAAUD;AAAA,UAAC;AAAC,cAAGC,GAAE,OAAO,KAAK,MAAM,MAAM,KAAK,UAAQO,KAAE,GAAEE,KAAE,GAAEC,KAAEV,GAAE,QAAQ,WAAUQ,KAAE,GAAEA,KAAER,GAAE,QAAQ,aAAW,GAAEQ,KAAI,MAAK,cAAc,EAAC,GAAEA,IAAE,QAAOR,GAAE,QAAQ,aAAW,GAAE,IAAG,GAAE,IAAGO,IAAE,IAAGG,IAAE,IAAGD,IAAE,QAAO,KAAK,aAAY,CAAC,GAAEA,KAAEF,MAAGP,GAAE,QAAQ,aAAWA,GAAE,QAAQ;AAAA,QAAU,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAE,IAAIoB,GAAE,KAAK,GAAG;AAAE,eAAK,MAAIpB,GAAE,MAAM,EAAC,OAAM,kBAAiB,CAAC,GAAE,KAAK,eAAaA,GAAE,MAAM,EAAC,OAAM,kCAAiC,CAAC,GAAE,KAAK,eAAaA,GAAE,MAAM,EAAC,OAAM,gCAA+B,CAAC,GAAE,KAAK,gBAAcA,GAAE,MAAM,EAAC,OAAM,0BAAyB,CAAC,GAAE,KAAK,IAAI,IAAI,KAAK,YAAY,GAAE,KAAK,IAAI,IAAI,KAAK,YAAY,GAAEF,GAAE,OAAO,KAAK,SAAO,KAAK,aAAa,KAAK,GAAE,KAAK,aAAa,KAAK,GAAE,KAAK,cAAc,KAAK;AAAG,mBAAQG,KAAE,GAAEA,KAAEF,GAAE,eAAe,UAAQA,GAAE,mBAAmB,SAASE,EAAC,IAAG,CAAAA;AAAI,UAAAA,OAAIF,GAAE,eAAe,WAASE,KAAE;AAAG,cAAIE,IAAEC,KAAEL,GAAE,WAAWE,EAAC,EAAE,OAAO,SAAO;AAAE,cAAG,CAACF,GAAE,mBAAiB,KAAK,YAAW;AAAC,gBAAIO,IAAEC,IAAEE;AAAE,gBAAGN,KAAE,KAAK,YAAY,QAAO,KAAK,WAAW,CAAAC,KAAEL,GAAE,OAAO,QAAOD,GAAE,OAAO,MAAM,cAAYA,GAAE,OAAO,MAAM,OAAO,cAAYK,KAAEL,GAAE,OAAO,MAAM,cAAa,UAAQQ,KAAEP,GAAE,eAAa,WAASO,MAAG,UAAQC,KAAED,GAAEL,EAAC,MAAI,WAASM,MAAG,UAAQE,KAAEF,GAAE,WAAS,WAASE,KAAE,SAAOA,GAAE,UAAQ,KAAG,eAAaX,GAAE,OAAO,MAAM,SAAOK,KAAEJ,GAAE,WAAWE,EAAC,EAAE,OAAO,SAAO;AAAG,iBAAK,aAAa,EAAC,QAAOE,IAAE,YAAWC,GAAC,CAAC;AAAA,UAAC,MAAM,CAAAD,KAAEC,IAAEA,KAAEL,GAAE,aAAY,KAAK,qBAAqB,EAAC,QAAOI,IAAE,YAAWC,GAAC,CAAC;AAAE,iBAAO,KAAK,cAAcD,IAAEC,EAAC,GAAE,EAAC,IAAG,KAAK,KAAI,eAAc,KAAK,eAAc,gBAAeL,GAAE,YAAUI,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASL,IAAEC,IAAE;AAAC,cAAIC,IAAEC,IAAEE,KAAE,MAAKC,KAAE,KAAK;AAAE,eAAI,UAAQJ,KAAEI,GAAE,OAAO,KAAK,IAAI,WAAS,WAASJ,KAAE,SAAOA,GAAE,UAAQ,KAAG,SAASF,IAAEE,IAAEC,IAAEK,IAAEC,IAAEE,IAAE;AAAC,qBAAQC,KAAE,GAAEF,KAAE,GAAEE,KAAEV,IAAEU,MAAIF,KAAI,CAAAA,MAAGJ,GAAE,OAAO,KAAKN,EAAC,EAAE,OAAO,WAASU,KAAE,IAAGL,GAAE,kBAAkB,EAAC,GAAEK,IAAE,IAAGP,IAAE,IAAGK,IAAE,IAAGC,IAAE,IAAGE,IAAE,MAAKX,GAAC,CAAC,GAAEQ,MAAGF,GAAE,QAAQ,aAAWL;AAAA,UAAC,EAAE,OAAMA,IAAE,GAAE,GAAEK,GAAE,QAAQ,WAAUA,GAAE,QAAQ,aAAWL,EAAC,IAAG,UAAQE,KAAEG,GAAE,OAAO,KAAK,OAAO,WAAS,WAASH,KAAE,SAAOA,GAAE,UAAQ,GAAE;AAAC,gBAAIK,KAAEF,GAAE,QAAQ,mBAAiB,SAAOA,GAAE,OAAO,MAAM,iBAAe,eAAaA,GAAE,OAAO,MAAM,QAAM,CAACA,GAAE,OAAO,MAAM,wBAAsBN,KAAEA,KAAE;AAAE,YAAAM,GAAE,QAAQ,eAAaE,KAAEF,GAAE,QAAQ,WAAW,OAAO,SAAO;AAAG,qBAAQG,KAAEH,GAAE,QAAQ,eAAcK,KAAEL,GAAE,QAAQ,gBAAcA,GAAE,QAAQ,YAAUE,IAAEI,KAAEN,GAAE,QAAQ,YAAWI,KAAE,GAAEI,KAAE,GAAEJ,KAAEV,IAAEU,MAAII,MAAI;AAAC,kBAAIC;AAAE,kBAAGD,MAAGR,GAAE,OAAO,KAAK,OAAO,OAAO,WAASQ,KAAE,IAAG,eAAaR,GAAE,OAAO,MAAM,KAAK,CAAAG,KAAE,KAAK,YAAYC,EAAC,EAAE,UAASC,OAAI,UAAQI,KAAE,KAAK,YAAYL,KAAE,CAAC,MAAI,WAASK,KAAE,SAAOA,GAAE,aAAWT,GAAE,QAAQ,aAAW,KAAK,YAAYI,EAAC,EAAE;AAAS,mBAAK,kBAAkB,EAAC,GAAEI,IAAE,IAAGL,IAAE,IAAG,GAAE,IAAGE,IAAE,IAAGC,IAAE,MAAK,SAAQ,CAAC,GAAEH,MAAGH,GAAE,QAAQ,YAAUE;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAER;AAAA,MAAC,EAAE;AAAploG,UAAsloGiD,KAAE,WAAU;AAAC,iBAASjD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,YAAU,IAAIsB,GAAE,KAAK,GAAG;AAAA,QAAC;AAAC,eAAOlB,GAAEL,IAAE,CAAC,EAAC,KAAI,aAAY,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,IAAEC,IAAEE,IAAEC,IAAEE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEC,KAAE,OAAME,KAAE,KAAK,GAAEC,KAAED,GAAE;AAAQ,UAAAC,GAAE,mBAAiBV,KAAES,GAAE,OAAO,OAAMR,KAAE,KAAK,KAAKS,GAAE,WAAS,OAAK,IAAG,CAAC,MAAIV,KAAES,GAAE,OAAO,MAAMH,EAAC,GAAEL,KAAE,KAAK,KAAKS,GAAE,YAAU,OAAK,IAAG,CAAC,IAAGO,GAAE,SAAShB,EAAC,MAAIA,KAAE,KAAIE,KAAE,WAASH,GAAE,OAAK,SAAOA,GAAE,KAAII,KAAE,WAASJ,GAAE,OAAK,SAAOA,GAAE;AAAI,cAAIQ,KAAE,WAASR,GAAE,YAAU,SAAOA,GAAE,UAASY,KAAE,WAASZ,GAAE,cAAY,SAAOA,GAAE,YAAWa,KAAED,KAAEZ,GAAE,aAAWU,GAAE,sBAAsB,KAAK,IAAI,KAAK,MAAMT,KAAE,CAAC,GAAES,GAAE,sBAAsB,SAAO,CAAC,CAAC;AAAE,cAAGA,GAAE,mBAAiB,CAACE,MAAGF,GAAE,sBAAoB,MAAIG,KAAEH,GAAE,qBAAoBE,KAAE,OAAIC,KAAE,iBAAeA,KAAEH,GAAE,aAAW,IAAE,KAAK,IAAI,KAAK,MAAMG,EAAC,CAAC,IAAGf,OAAI,OAAO,aAAW,MAAIC,MAAG,CAACkB,GAAE,SAASnB,EAAC,KAAG,CAACmB,GAAE,SAASlB,EAAC,KAAGD,OAAI,OAAO,aAAWC,OAAI,CAAC,OAAO,eAAaD,KAAEmB,GAAE,SAASjB,GAAE,GAAG,IAAEA,GAAE,MAAI,GAAED,KAAEkB,GAAE,SAASjB,GAAE,GAAG,IAAEA,GAAE,MAAIF,KAAEe,IAAEH,GAAE,qBAAmB,QAAIZ,KAAEC,IAAE;AAAC,oBAAQ,KAAK,gEAAgE;AAAE,gBAAIY,KAAEZ;AAAE,YAAAA,KAAED,IAAEA,KAAEa;AAAA,UAAC,MAAM,CAAAb,OAAIC,OAAID,KAAE,MAAIA,KAAE,IAAEA,KAAE,GAAEC,KAAE,MAAIA,KAAE,IAAEA,KAAE;AAAG,cAAIe,KAAE,CAAC;AAAE,UAAAD,KAAE,MAAIA,KAAE;AAAG,cAAIE,KAAEF,IAAEX,KAAE,KAAK,IAAIH,KAAED,EAAC;AAAE,WAACK,MAAGL,KAAE,KAAGA,KAAEI,KAAE,SAAMJ,KAAE,GAAEK,KAAE,OAAI,CAACC,MAAGL,KAAE,KAAG,CAACA,KAAEG,KAAE,SAAMH,KAAE,GAAEK,KAAE;AAAI,cAAIY,MAAGd,KAAE,KAAK,IAAIH,KAAED,EAAC,KAAGiB,IAAEV,KAAEW,IAAEE,KAAE,KAAK,MAAM,KAAK,MAAMb,EAAC,CAAC,GAAEc,KAAE,KAAK,IAAI,IAAGD,EAAC,GAAEE,KAAE,KAAK,KAAKf,KAAEc,EAAC;AAAE,cAAGH,KAAEX,MAAGe,KAAEV,GAAE,uBAAuB,MAAIA,GAAE,gBAAc,IAAE,CAAC,EAAEU,EAAC,KAAGD,IAAET,GAAE,mBAAiBV,GAAE,YAAU,eAAaA,GAAE,QAAMgB,KAAEhB,GAAE,UAASQ,KAAE,QAAIA,OAAIQ,KAAEhB,GAAE,WAAUQ,MAAGR,GAAE,gBAAe;AAAC,gBAAIqB,KAAE,KAAK,MAAM,KAAK,MAAML,EAAC,CAAC;AAAE,YAAAA,MAAG,KAAK,IAAI,IAAGE,KAAEG,EAAC;AAAA,UAAC;AAAC,cAAGlB,MAAGC,IAAE;AAAC,gBAAIkB,KAAEpB,KAAEa;AAAE,gBAAGH,GAAE,KAAGJ,GAAE,KAAG,KAAGS,GAAE,IAAIf,IAAEc,EAAC,GAAE;AAAC,kBAAIO,KAAEN,GAAE,OAAOD,IAAEM,EAAC;AAAE,cAAAN,KAAEM,KAAEC,KAAE,KAAGA,KAAED;AAAA,YAAC,MAAM,MAAGL,GAAE,IAAID,IAAEM,EAAC,IAAEN,KAAEM,MAAGA,KAAEN,IAAEJ,KAAE;AAAA,gBAAS,CAAAI,KAAEM;AAAA,qBAAUd,GAAE,MAAGS,GAAE,IAAIf,IAAEc,EAAC,IAAEM,KAAEN,KAAEA,KAAEM;AAAA,qBAAU,KAAGL,GAAE,IAAIf,IAAEc,EAAC,EAAE,CAAAM,KAAEN;AAAA,iBAAM;AAAC,cAAAM,KAAEpB,MAAGa,KAAE,KAAK,KAAKb,KAAEc,EAAC;AAAG,kBAAIQ,KAAEP,GAAE,OAAOf,IAAEc,EAAC;AAAE,cAAAd,KAAEsB,KAAEvB,OAAIqB,KAAEE,KAAGR,KAAEM;AAAA,YAAC;AAAC,YAAAP,KAAE,KAAK,MAAMb,KAAEc,EAAC;AAAA,UAAC,OAAK;AAAC,gBAAGb,MAAGC,IAAE;AAAC,kBAAGA,GAAE,KAAGQ,GAAE,CAAAd,KAAEC,KAAEiB,KAAED;AAAA,mBAAM;AAAC,oBAAIU,KAAE3B;AAAE,gBAAAA,KAAEkB,KAAE,KAAK,MAAMlB,KAAEkB,EAAC,GAAE,KAAK,IAAIjB,KAAED,EAAC,IAAEmB,GAAE,OAAOf,IAAEc,EAAC,IAAEf,OAAIH,KAAEC,KAAEiB,KAAEH,IAAEf,MAAGkB,KAAE,KAAK,OAAOS,KAAE3B,MAAGkB,EAAC;AAAA,cAAE;AAAA,uBAASb,GAAE,KAAGS,GAAE,CAAAb,KAAED,KAAEkB,KAAED;AAAA,mBAAM;AAAC,oBAAIW,KAAE3B;AAAE,gBAAAA,KAAEiB,KAAE,KAAK,KAAKjB,KAAEiB,EAAC,GAAE,KAAK,IAAIjB,KAAED,EAAC,IAAEmB,GAAE,OAAOf,IAAEc,EAAC,IAAEf,OAAIF,KAAED,KAAEkB,KAAEH,IAAEd,MAAGiB,KAAE,KAAK,MAAMU,KAAE3B,MAAGiB,EAAC;AAAA,cAAE;AAAA,YAAC,WAASN,GAAE,mBAAiBE,IAAE;AAAC,kBAAIe,KAAEX,KAAE,KAAK,MAAMlB,KAAEkB,EAAC,GAAEY,KAAED,KAAEX,KAAED;AAAE,cAAAa,KAAE7B,OAAIiB,MAAG,IAAGY,KAAE7B,IAAEA,MAAGD,KAAE6B,MAAGX,KAAED,IAAEb,KAAE,KAAK,IAAIH,KAAED,EAAC,GAAEA,KAAE,KAAGA,KAAE,KAAK,IAAI8B,KAAE7B,EAAC,MAAID,KAAE,GAAEC,KAAEiB,KAAED,KAAGhB,KAAE,KAAG,CAACA,KAAE,KAAK,IAAI4B,KAAE7B,EAAC,MAAIC,KAAE,GAAED,KAAE,CAACkB,KAAED;AAAA,YAAE,MAAM,CAAAjB,KAAEkB,KAAE,KAAK,MAAMlB,KAAEkB,EAAC,GAAEjB,KAAEiB,KAAE,KAAK,KAAKjB,KAAEiB,EAAC;AAAE,YAAAd,KAAE,KAAK,IAAIH,KAAED,EAAC,GAAEkB,KAAEC,GAAE,OAAOf,IAAEc,EAAC,GAAED,KAAE,KAAK,MAAMb,KAAEc,EAAC;AAAA,UAAC;AAAC,cAAGJ,MAAGT,MAAGC,OAAIW,KAAE,KAAK,MAAMb,KAAEK,OAAIS,KAAET,GAAE,KAAG,MAAIU,GAAE,gBAAgBF,EAAC,EAAE,SAAO,KAAGA,MAAI,CAACH,MAAGZ,GAAE,kBAAgB,MAAIU,GAAE,iBAAeK,KAAEb,OAAIa,KAAEb,IAAEc,KAAE,KAAK,MAAMd,KAAEa,EAAC,IAAGA,KAAEd,OAAI,CAACW,MAAG,CAACJ,MAAGR,GAAE,iBAAgB;AAAC,gBAAI6B,KAAEZ,GAAE,gBAAgBF,EAAC,GAAEe,KAAED,GAAE,SAAO,GAAEE,KAAEhB;AAAE,cAAE,UAAQiB,KAAE,GAAEA,KAAEF,IAAEE,KAAI,UAAQC,KAAE,GAAEA,MAAGH,KAAEE,IAAEC,MAAI;AAAC,uBAAQC,KAAE,KAAK,IAAID,KAAED,IAAEF,EAAC,GAAEK,KAAEJ,IAAEK,KAAE,GAAEC,KAAEJ,IAAEI,MAAGH,IAAEG,KAAI,CAAAD,MAAGP,GAAEQ,EAAC;AAAE,mBAAIF,MAAGC,MAAGnC,IAAE;AAAC,gBAAA8B,KAAEI;AAAE,sBAAM;AAAA,cAAC;AAAA,YAAC;AAAC,YAAAnB,KAAEe,OAAIhB,KAAEb,KAAEA,KAAE6B,IAAEhB,KAAE,KAAK,MAAMb,KAAEc,EAAC;AAAA,UAAC;AAAC,UAAAN,GAAE,mBAAiB,KAAGA,GAAE,uBAAqBA,GAAE,mBAAmB,QAAQJ,EAAC,IAAE,MAAII,GAAE,sBAAoBK;AAAG,cAAIuB,KAAExC,KAAEkB,IAAEuB,KAAEvB,KAAET;AAAE,aAAE;AAAC,YAAA+B,MAAGtB,IAAEF,GAAE,KAAKG,GAAE,YAAYqB,IAAE,CAAC,CAAC;AAAA,UAAC,SAAOvC,KAAEuC,KAAEC;AAAG,iBAAM,EAAC,QAAOzB,IAAE,SAAQA,GAAE,CAAC,GAAE,SAAQA,GAAEA,GAAE,SAAO,CAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAAShB,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,IAAGC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,GAAEE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,QAAOC,KAAE,KAAK,IAAIL,KAAED,EAAC,GAAEQ,KAAE,CAAC;AAAE,cAAGR,OAAIC,GAAE,QAAM,EAAC,QAAOO,KAAE,CAACR,EAAC,GAAE,SAAQQ,GAAE,CAAC,GAAE,SAAQA,GAAEA,GAAE,SAAO,CAAC,EAAC;AAAE,4BAAgBN,KAAE,KAAK,0BAA0BA,IAAEC,IAAEG,EAAC,OAAKJ,KAAE,KAAK,EAAE,QAAQ,aAAW,IAAGG,OAAIA,KAAEC,KAAEJ,KAAGG,KAAE,KAAK,MAAM,MAAIA,KAAE,OAAO,QAAQ,IAAE,IAAGH,OAAI,OAAO,cAAYA,KAAE,GAAEG,KAAE;AAAG,mBAAQI,KAAET,IAAEE,MAAG,IAAG,CAAAM,GAAE,KAAKC,EAAC,GAAEA,KAAEU,GAAE,gBAAgBV,IAAEJ,EAAC,GAAEH,MAAG;AAAE,iBAAM,EAAC,QAAOM,IAAE,SAAQA,GAAE,CAAC,GAAE,SAAQA,GAAEA,GAAE,SAAO,CAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASR,IAAEC,IAAEC,IAAE;AAAC,UAAAD,MAAG,MAAIA,KAAE,KAAK,IAAID,IAAEE,EAAC,IAAGF,MAAG,MAAIA,KAAE,KAAK,IAAIC,IAAEC,EAAC;AAAG,mBAAQC,KAAE,CAAC,GAAEE,KAAE,KAAK,KAAK,KAAK,IAAIJ,EAAC,IAAE,KAAK,IAAIC,EAAC,IAAE,CAAC,GAAEI,KAAE,KAAK,MAAM,KAAK,IAAIN,EAAC,IAAE,KAAK,IAAIE,EAAC,CAAC,GAAEI,KAAED,IAAEC,KAAI,CAAAH,GAAE,KAAK,KAAK,IAAID,IAAEI,EAAC,CAAC;AAAE,iBAAM,EAAC,QAAOH,IAAE,SAAQA,GAAE,CAAC,GAAE,SAAQA,GAAEA,GAAE,SAAO,CAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASH,IAAEC,IAAEC,IAAE;AAAC,UAAAD,MAAG,MAAIA,KAAE,KAAK,IAAID,IAAEE,EAAC,IAAGF,MAAG,MAAIA,KAAE,KAAK,IAAIC,IAAEC,EAAC;AAAG,mBAAQC,KAAE,CAAC,GAAEE,KAAE,KAAK,IAAIJ,EAAC,IAAE,KAAK,IAAIC,EAAC,GAAEI,KAAE,KAAK,IAAIN,EAAC,IAAE,KAAK,IAAIE,EAAC,GAAEM,KAAEH,KAAEC,IAAEG,KAAE,KAAK,MAAMD,EAAC,GAAEG,KAAEH,KAAEC,IAAEG,KAAE,GAAEF,KAAEJ,IAAEM,KAAEH,IAAEG,MAAIF,MAAGC,GAAE,CAAAR,GAAE,KAAK,KAAK,IAAID,IAAEQ,EAAC,CAAC;AAAE,iBAAOP,GAAE,KAAK,KAAK,IAAID,IAAEG,EAAC,CAAC,GAAE,EAAC,QAAOF,IAAE,SAAQH,IAAE,SAAQC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASD,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAEH;AAAE,cAAG,WAASC,MAAG,KAAK,EAAE,OAAO,MAAMA,EAAC,EAAE,OAAO,aAAW,WAAS,KAAK,EAAE,OAAO,MAAMA,EAAC,EAAE,YAAW;AAAC,gBAAII,KAAE,OAAO,KAAK,EAAE,OAAO,MAAMJ,EAAC,EAAE,OAAO,UAAU,CAAC,CAAC;AAAE,YAAAkB,GAAE,SAASd,EAAC,KAAG,MAAI,KAAK,EAAE,QAAQ,kBAAgBF,KAAE,KAAK,KAAKD,EAAC;AAAA,UAAE;AAAC,iBAAOC,KAAEH,KAAEG,KAAEH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,SAAQE,KAAE,KAAK,EAAE,QAAOC,KAAEH,GAAE,kBAAgBE,GAAE,QAAMA,GAAE,MAAML,EAAC;AAAE,qBAASG,GAAE,WAAWH,EAAC,MAAIG,GAAE,WAAWH,EAAC,IAAE,CAAC;AAAG,cAAIQ,KAAE,KAAK,IAAIN,KAAED,EAAC;AAAE,UAAAK,GAAE,eAAaE,MAAG,MAAIL,GAAE,kBAAgB,OAAIG,GAAE,eAAaE,KAAE,KAAGL,GAAE,qBAAmB,OAAGA,GAAE,WAAWH,EAAC,IAAEM,GAAE,iBAAe,KAAK,qBAAqBL,IAAEC,IAAEI,GAAE,OAAO,IAAE,KAAK,iBAAiBL,IAAEC,IAAEI,GAAE,OAAO,KAAGJ,OAAI,CAAC,OAAO,aAAWiB,GAAE,SAASjB,EAAC,KAAGD,OAAI,OAAO,aAAWkB,GAAE,SAASlB,EAAC,KAAGE,GAAE,qBAAmB,OAAGA,GAAE,WAAWH,EAAC,IAAE,KAAK,UAAUC,IAAEC,IAAEF,EAAC,KAAGG,GAAE,WAAWH,EAAC,IAAE,KAAK,UAAU,OAAO,WAAU,GAAEA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQG,KAAE,KAAK,IAAIJ,KAAED,EAAC;AAAE,cAAGC,OAAI,CAAC,OAAO,aAAWkB,GAAE,SAASlB,EAAC,GAAE;AAAC,gBAAIK,KAAEH,GAAE,cAAY;AAAE,YAAAE,KAAE,MAAIA,KAAE,MAAIC,KAAED,KAAGF,GAAE,aAAW,KAAK,YAAYH,IAAEC,IAAEK,IAAE,GAAEJ,GAAE,OAAO,MAAM,QAAQ;AAAA,UAAC,MAAM,CAAAC,GAAE,aAAW,KAAK,YAAY,GAAE,IAAG,EAAE;AAAE,iBAAOA,GAAE;AAAA,QAAU,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAIH,KAAE,MAAKC,KAAE,KAAK,EAAE,QAAOC,KAAE,KAAK,EAAE;AAAQ,eAAK,UAAU,uBAAuB;AAAE,cAAIC,KAAED,GAAE,gBAAeG,KAAEH,GAAE,SAAQI,KAAEJ,GAAE;AAAQ,UAAAA,GAAE,qBAAmB,MAAGA,GAAE,YAAU,CAAC,GAAEC,GAAE,QAAS,SAASA,IAAEK,IAAE;AAAC,gBAAIC,KAAE,CAAC;AAAE,YAAAN,GAAE,QAAS,SAASH,IAAE;AAAC,kBAAIE,KAAED,GAAE,OAAOD,EAAC,EAAE;AAAM,cAAAS,GAAE,QAAQP,EAAC,IAAE,KAAGO,GAAE,KAAKP,EAAC;AAAA,YAAC,CAAE,GAAEC,GAAE,SAAO,IAAE,WAAU;AAAC,kBAAIQ,IAAEC,IAAEF,KAAE,OAAO,WAAUI,KAAE,CAAC,OAAO,WAAUC,KAAEL,IAAEG,KAAEC;AAAE,kBAAGb,GAAE,MAAM,QAAQ,EAAC,WAAU;AAAC,oBAAID,KAAE,IAAI,MAAME,GAAE,UAAU,EAAE,KAAK,CAAC,GAAEG,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEU,KAAE,CAAC;AAAE,gBAAAP,GAAE,QAAS,WAAU;AAAC,kBAAAJ,GAAE,KAAKL,GAAE,IAAK,WAAU;AAAC,2BAAO,OAAO;AAAA,kBAAS,CAAE,CAAC,GAAEM,GAAE,KAAKN,GAAE,IAAK,WAAU;AAAC,2BAAO,OAAO;AAAA,kBAAS,CAAE,CAAC,GAAEgB,GAAE,KAAKhB,GAAE,IAAK,WAAU;AAAC,2BAAO,OAAO;AAAA,kBAAS,CAAE,CAAC;AAAA,gBAAC,CAAE;AAAE,yBAAQiB,KAAE,SAASjB,IAAE;AAAC,mBAACW,MAAGV,GAAE,OAAOE,GAAEH,EAAC,CAAC,EAAE,SAAOW,KAAEV,GAAE,OAAOE,GAAEH,EAAC,CAAC,EAAE;AAAM,sBAAIU,KAAEP,GAAEH,EAAC;AAAE,kBAAAY,KAAEX,GAAE,OAAOS,EAAC,EAAE,QAAMT,GAAE,OAAOS,EAAC,EAAE,QAAM,QAAQ,OAAOF,EAAC,GAAE,EAAEN,GAAE,uBAAuB,QAAQQ,EAAC,IAAE,KAAGR,GAAE,gCAAgC,QAAQQ,EAAC,IAAE,OAAKR,GAAE,qBAAmB,OAAGO,GAAE,QAAS,SAAST,IAAEG,IAAE;AAAC,wBAAGF,GAAE,OAAOS,EAAC,EAAE,UAAQV,GAAE,UAAQQ,KAAE,GAAEA,KAAEN,GAAE,OAAOQ,EAAC,EAAE,QAAOF,MAAI;AAAC,0BAAIC,KAAEP,GAAE,OAAOQ,EAAC,EAAEF,EAAC;AAAE,sBAAAC,MAAG,IAAEH,GAAEH,EAAC,EAAEK,EAAC,KAAGC,KAAEO,GAAEb,EAAC,EAAEK,EAAC,KAAGC,IAAEJ,GAAEF,EAAC,EAAEK,EAAC,KAAGC,IAAEM,KAAE,KAAK,IAAIA,IAAEN,EAAC,GAAEI,KAAE,KAAK,IAAIA,IAAEJ,EAAC;AAAA,oBAAC;AAAA,kBAAC,CAAE,IAAG,UAAQE,MAAG,aAAWA,MAAGT,GAAE,UAAU,KAAKU,EAAC;AAAA,gBAAC,GAAER,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAa,GAAEb,EAAC;AAAE,gBAAAO,OAAIA,KAAEV,GAAE,MAAM,OAAM,UAAQU,MAAG,aAAWA,KAAEF,GAAE,QAAS,SAAST,IAAEC,IAAE;AAAC,kBAAAS,KAAE,KAAK,IAAIA,IAAE,KAAK,IAAI,MAAM,MAAKM,GAAEf,EAAC,CAAC,CAAC,GAAEa,KAAE,KAAK,IAAIA,IAAE,KAAK,IAAI,MAAM,MAAKR,GAAEL,EAAC,CAAC,CAAC;AAAA,gBAAC,CAAE,KAAGQ,GAAE,QAAS,SAAST,IAAEC,IAAE;AAAC,kBAAAc,KAAE,KAAK,IAAIA,IAAE,KAAK,IAAI,MAAM,MAAKV,GAAEJ,EAAC,CAAC,CAAC,GAAEY,KAAE,KAAK,IAAIA,IAAE,KAAK,IAAI,MAAM,MAAKR,GAAEJ,EAAC,CAAC,CAAC;AAAA,gBAAC,CAAE,GAAES,KAAEK,IAAED,KAAED,KAAGH,OAAI,OAAO,aAAWI,OAAI,OAAO,cAAYA,KAAE,CAAC,OAAO;AAAA,cAAU,EAAE;AAAA,kBAAO,UAAQE,KAAE,GAAEA,KAAEb,GAAE,QAAOa,MAAI;AAAC,oBAAIC,KAAEd,GAAEa,EAAC;AAAE,gBAAAN,KAAE,KAAK,IAAIA,IAAEL,GAAEY,EAAC,CAAC,GAAEH,KAAE,KAAK,IAAIA,IAAER,GAAEW,EAAC,CAAC,GAAE,EAAEf,GAAE,uBAAuB,QAAQe,EAAC,IAAE,KAAGf,GAAE,gCAAgC,QAAQe,EAAC,IAAE,OAAKf,GAAE,qBAAmB;AAAA,cAAG;AAAC,yBAASD,GAAE,MAAMO,EAAC,EAAE,QAAME,KAAE,cAAY,OAAOT,GAAE,MAAMO,EAAC,EAAE,MAAIP,GAAE,MAAMO,EAAC,EAAE,IAAIE,EAAC,IAAET,GAAE,MAAMO,EAAC,EAAE,MAAK,WAASP,GAAE,MAAMO,EAAC,EAAE,QAAMM,KAAE,cAAY,OAAOb,GAAE,MAAMO,EAAC,EAAE,MAAIP,GAAE,MAAMO,EAAC,EAAE,IAAIM,EAAC,IAAEb,GAAE,MAAMO,EAAC,EAAE,MAAKN,GAAE,YAAUA,GAAE,UAAU,OAAQ,SAASF,IAAEC,IAAEC,IAAE;AAAC,uBAAOA,GAAE,QAAQF,EAAC,MAAIC;AAAA,cAAC,CAAE,GAAED,GAAE,kBAAkBQ,IAAEE,IAAEI,EAAC,GAAEX,GAAE,QAAS,SAASH,IAAE;AAAC,gBAAAK,GAAEL,EAAC,IAAEE,GAAE,WAAWM,EAAC,EAAE,SAAQF,GAAEN,EAAC,IAAEE,GAAE,WAAWM,EAAC,EAAE;AAAA,cAAO,CAAE;AAAA,YAAC,EAAE,IAAER,GAAE,kBAAkBQ,IAAE,GAAE,CAAC,OAAO,SAAS;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,CAAC,CAAC,GAAER;AAAA,MAAC,EAAE;AAA502G,UAA802GkD,KAAE,WAAU;AAAC,iBAASlD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,SAAO,IAAIgD,GAAEhD,EAAC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAK,UAAU,GAAE,KAAK,UAAU,GAAE,KAAK,UAAU;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,OAAO,WAAUC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,OAAO,WAAUC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKE,KAAE,KAAK,EAAE,QAAOC,KAAE,KAAK,EAAE,SAAQE,KAAE,CAAC,OAAO,WAAUC,KAAE,OAAO;AAAU,mBAAON,OAAIA,KAAEH,KAAE;AAAG,cAAIW,KAAEL,GAAE,QAAOM,KAAED,IAAED,KAAEC;AAAE,4BAAgBN,GAAE,MAAM,QAAMO,KAAEN,GAAE,eAAcI,KAAEJ,GAAE,iBAAe,cAAYD,GAAE,MAAM,QAAMO,KAAEN,GAAE,eAAcI,KAAEJ,GAAE,iBAAeA,GAAE,gBAAcM,KAAEN,GAAE,kBAAiBI,KAAEJ,GAAE;AAAgB,cAAIQ,KAAE;AAAG,cAAGR,GAAE,QAAQ,UAAQH,IAAE;AAAC,gBAAIY,IAAEF,KAAE,UAAQE,KAAET,GAAE,gBAAc,WAASS,KAAE,SAAOA,GAAE,EAAE,OAAO,MAAM;AAAM,aAACV,GAAE,MAAM,KAAK,WAASA,GAAE,MAAM,KAAK,kBAAgB,QAAMQ,MAAGA,GAAE,WAAS,QAAMA,MAAGA,GAAE,oBAAkBC,KAAE;AAAA,UAAG;AAAC,mBAAQE,KAAEhB,IAAEgB,KAAEb,IAAEa,MAAI;AAAC,YAAAV,GAAE,aAAW,KAAK,IAAIA,GAAE,YAAWK,GAAEK,EAAC,EAAE,MAAM;AAAE,gBAAIC,KAAEZ,GAAE,OAAOW,EAAC,EAAE;AAAK,YAAAV,GAAE,eAAe,WAASA,GAAE,aAAWA,GAAE,eAAe,OAAQ,SAASN,IAAE;AAAC,qBAAO,WAASA;AAAA,YAAC,CAAE,EAAE,SAAQM,GAAE,OAAO,UAAQ,eAAaD,GAAE,MAAM,QAAM,MAAIC,GAAE,OAAO,OAAQ,SAASN,IAAEC,IAAE;AAAC,qBAAOD,KAAEC,GAAE;AAAA,YAAM,GAAG,CAAC,MAAIK,GAAE,aAAW,KAAK,IAAIA,GAAE,YAAWA,GAAE,OAAO,MAAM;AAAG,gBAAIF,KAAE,GAAEc,KAAEP,GAAEK,EAAC,EAAE,SAAO;AAAE,gBAAGF,IAAE;AAAC,kBAAGT,GAAE,MAAM,IAAI,QAAKD,KAAEc,MAAGZ,GAAE,QAAQU,EAAC,EAAEZ,EAAC,IAAEC,GAAE,MAAM,KAAID,KAAI;AAAC,kBAAGC,GAAE,MAAM,IAAI,QAAKa,KAAEd,MAAGE,GAAE,QAAQU,EAAC,EAAEE,EAAC,IAAEb,GAAE,MAAM,KAAIa,KAAI;AAAA,YAAC;AAAC,qBAAQX,KAAEH,IAAEG,MAAGW,MAAGX,KAAED,GAAE,OAAOU,EAAC,EAAE,QAAOT,MAAI;AAAC,kBAAIa,KAAET,GAAEK,EAAC,EAAET,EAAC;AAAE,kBAAG,SAAOa,MAAGD,GAAE,SAASC,EAAC,GAAE;AAAC,wBAAO,WAASV,GAAEM,EAAC,EAAET,EAAC,MAAIC,KAAE,KAAK,IAAIA,IAAEE,GAAEM,EAAC,EAAET,EAAC,CAAC,GAAEN,KAAE,KAAK,IAAIA,IAAES,GAAEM,EAAC,EAAET,EAAC,CAAC,IAAG,WAASK,GAAEI,EAAC,EAAET,EAAC,MAAIN,KAAE,KAAK,IAAIA,IAAEW,GAAEI,EAAC,EAAET,EAAC,CAAC,GAAEL,KAAE,KAAK,IAAIA,IAAEU,GAAEI,EAAC,EAAET,EAAC,CAAC,IAAGU,IAAE;AAAA,kBAAC,KAAI;AAAc,+BAASX,GAAE,cAAcU,EAAC,EAAET,EAAC,MAAIC,KAAE,KAAK,IAAIA,IAAEF,GAAE,cAAcU,EAAC,EAAET,EAAC,CAAC,GAAEN,KAAE,KAAK,IAAIA,IAAEK,GAAE,cAAcU,EAAC,EAAET,EAAC,CAAC;AAAG;AAAA,kBAAM,KAAI;AAAU,+BAASD,GAAE,cAAcU,EAAC,EAAET,EAAC,MAAIC,KAAE,KAAK,IAAIA,IAAEF,GAAE,cAAcU,EAAC,EAAET,EAAC,CAAC,GAAEN,KAAE,KAAK,IAAIA,IAAEK,GAAE,cAAcU,EAAC,EAAET,EAAC,CAAC;AAAA,gBAAE;AAAC,gBAAAU,MAAG,kBAAgBA,MAAG,cAAYA,MAAG,gBAAcA,MAAG,eAAaA,OAAIT,KAAE,KAAK,IAAIA,IAAEF,GAAE,OAAOU,EAAC,EAAET,EAAC,CAAC,GAAEN,KAAE,KAAK,IAAIA,IAAEK,GAAE,OAAOU,EAAC,EAAET,EAAC,CAAC,IAAGL,KAAEM,IAAEF,GAAE,YAAYU,EAAC,KAAGV,GAAE,YAAYU,EAAC,EAAET,EAAC,KAAG,MAAM,QAAQD,GAAE,YAAYU,EAAC,EAAET,EAAC,CAAC,KAAGD,GAAE,YAAYU,EAAC,EAAET,EAAC,EAAE,QAAS,SAASP,IAAE;AAAC,kBAAAS,OAAI,OAAO,cAAYA,KAAE,KAAK,IAAIA,IAAET,GAAE,KAAK,GAAEC,KAAEQ,KAAGD,KAAE,KAAK,IAAIA,IAAER,GAAE,KAAK,GAAEE,KAAEM;AAAA,gBAAC,CAAE,GAAEW,GAAE,QAAQC,EAAC,MAAIA,KAAED,GAAE,YAAYC,EAAC,GAAEd,GAAE,gBAAc,KAAK,IAAIA,GAAE,eAAcc,GAAE,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,IAAGX,KAAEG,GAAEI,EAAC,EAAET,EAAC,KAAGK,GAAEI,EAAC,EAAET,EAAC,IAAE,MAAIE,KAAEG,GAAEI,EAAC,EAAET,EAAC;AAAA,cAAE,MAAM,CAAAD,GAAE,gBAAc;AAAA,YAAE;AAAC,sBAAQW,MAAG,aAAWA,OAAIR,KAAE,KAAGD,KAAE,MAAIA,KAAE,GAAEN,KAAE,KAAK,IAAIA,IAAE,CAAC,IAAGO,OAAI,OAAO,cAAYA,KAAE,GAAER,KAAE,KAAK,IAAIA,IAAE,CAAC;AAAA,UAAG;AAAC,iBAAM,eAAaI,GAAE,MAAM,QAAMC,GAAE,iBAAiB,UAAQA,GAAE,oBAAkBG,KAAER,KAAG,UAAQI,GAAE,MAAM,SAAOI,KAAE,KAAGD,KAAE,MAAIA,KAAE,IAAGC,OAAI,OAAO,cAAYA,KAAE,KAAI,EAAC,MAAKA,IAAE,MAAKD,IAAE,SAAQP,IAAE,UAASC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,EAAE,SAAQC,KAAE,KAAK,EAAE;AAAO,UAAAD,GAAE,OAAK,CAAC,OAAO,WAAUA,GAAE,OAAK,OAAO;AAAU,cAAIE,IAAEC,KAAE,OAAO;AAAU,cAAGH,GAAE,iBAAgB;AAAC,YAAAG,KAAE,OAAO;AAAU,qBAAQE,KAAE,GAAEA,KAAEL,GAAE,OAAO,QAAOK,KAAI,CAAAH,KAAE,KAAK,YAAYG,EAAC,GAAEL,GAAE,QAAQK,EAAC,IAAEH,GAAE,SAAQF,GAAE,QAAQK,EAAC,IAAEH,GAAE,UAASC,KAAE,KAAK,IAAIA,IAAED,GAAE,OAAO;AAAA,UAAC;AAAC,cAAGA,KAAE,KAAK,YAAY,GAAEC,IAAE,MAAKH,GAAE,OAAO,MAAM,GAAE,UAAQC,GAAE,MAAM,QAAMD,GAAE,OAAKE,GAAE,MAAKF,GAAE,OAAKE,GAAE,SAAOF,GAAE,OAAKE,GAAE,SAAQF,GAAE,OAAKE,GAAE,WAAUC,KAAED,GAAE,SAAQD,GAAE,MAAM,WAAS,KAAK,kBAAkB,GAAE,WAASA,GAAE,MAAM,QAAM,WAASA,GAAE,MAAM,QAAM,cAAYA,GAAE,MAAM,QAAM,kBAAgBA,GAAE,MAAM,QAAM,cAAYA,GAAE,MAAM,QAAM,eAAaA,GAAE,MAAM,QAAM,CAACD,GAAE,kBAAgBA,GAAE,SAAO,OAAO,aAAWG,OAAI,CAAC,OAAO,aAAWA,OAAIH,GAAE,SAAOA,GAAE,OAAKG,MAAGH,GAAE,OAAKA,GAAE,SAAO,OAAO,YAAU,KAAK,IAAIE,GAAE,MAAKF,GAAE,IAAI,IAAEE,GAAE,MAAKD,GAAE,MAAM,QAAS,SAASA,IAAEC,IAAE;AAAC,uBAASD,GAAE,QAAM,YAAU,OAAOA,GAAE,MAAID,GAAE,QAAQE,EAAC,IAAED,GAAE,MAAI,cAAY,OAAOA,GAAE,QAAMD,GAAE,QAAQE,EAAC,IAAED,GAAE,IAAID,GAAE,kBAAgBA,GAAE,QAAQE,EAAC,IAAEF,GAAE,IAAI,IAAGA,GAAE,OAAKA,GAAE,QAAQE,EAAC,IAAG,WAASD,GAAE,QAAM,YAAU,OAAOA,GAAE,MAAID,GAAE,QAAQE,EAAC,IAAED,GAAE,MAAI,cAAY,OAAOA,GAAE,QAAMD,GAAE,QAAQE,EAAC,IAAED,GAAE,IAAID,GAAE,kBAAgBA,GAAE,QAAQE,EAAC,MAAI,OAAO,YAAU,IAAEF,GAAE,QAAQE,EAAC,IAAEF,GAAE,IAAI,IAAGA,GAAE,OAAKA,GAAE,QAAQE,EAAC;AAAA,UAAE,CAAE,GAAEF,GAAE,iBAAgB;AAAC,aAAC,OAAM,KAAK,EAAE,QAAS,SAASE,IAAE;AAAC,yBAASD,GAAE,MAAMC,EAAC,KAAG,YAAU,OAAOD,GAAE,MAAMC,EAAC,MAAI,UAAQA,KAAEF,GAAE,OAAKC,GAAE,MAAMC,EAAC,IAAEF,GAAE,OAAKC,GAAE,MAAMC,EAAC;AAAA,YAAE,CAAE;AAAA,UAAC;AAAC,iBAAOF,GAAE,mBAAiB,KAAK,OAAO,mBAAmB,GAAEA,GAAE,OAAKG,OAAI,KAAK,OAAO,kBAAkB,GAAEH,GAAE,MAAKA,GAAE,IAAI,GAAEA,GAAE,OAAKA,GAAE,WAAW,CAAC,EAAE,SAAQA,GAAE,OAAKA,GAAE,WAAW,CAAC,EAAE,SAAQA,GAAE,QAAQ,CAAC,IAAEA,GAAE,MAAKA,GAAE,QAAQ,CAAC,IAAEA,GAAE,OAAMA,GAAE,YAAU,CAAC,GAAEA,GAAE,aAAW,CAAC,GAAEA,GAAE,aAAW,CAAC,GAAEC,GAAE,OAAO,QAAS,SAASC,IAAE;AAAC,oBAAOA,GAAE,QAAMD,GAAE,MAAM,MAAK;AAAA,cAAC,KAAI;AAAA,cAAM,KAAI;AAAS,gBAAAD,GAAE,UAAU,KAAKE,GAAE,KAAK;AAAE;AAAA,cAAM,KAAI;AAAO,gBAAAF,GAAE,WAAW,KAAKE,GAAE,KAAK;AAAE;AAAA,cAAM,KAAI;AAAO,gBAAAF,GAAE,WAAW,KAAKE,GAAE,KAAK;AAAA,YAAC;AAAA,UAAC,CAAE,GAAEF,GAAE,YAAUA,GAAE,UAAU,OAAQ,SAASA,IAAEC,IAAEC,IAAE;AAAC,mBAAOA,GAAE,QAAQF,EAAC,MAAIC;AAAA,UAAC,CAAE,GAAED,GAAE,aAAWA,GAAE,WAAW,OAAQ,SAASA,IAAEC,IAAEC,IAAE;AAAC,mBAAOA,GAAE,QAAQF,EAAC,MAAIC;AAAA,UAAC,CAAE,GAAED,GAAE,aAAWA,GAAE,WAAW,OAAQ,SAASA,IAAEC,IAAEC,IAAE;AAAC,mBAAOA,GAAE,QAAQF,EAAC,MAAIC;AAAA,UAAC,CAAE,GAAE,EAAC,MAAKD,GAAE,MAAK,MAAKA,GAAE,MAAK,SAAQA,GAAE,SAAQ,SAAQA,GAAE,SAAQ,YAAWA,GAAE,WAAU;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE,SAAQC,KAAE,KAAK,EAAE,QAAOC,KAAE,cAAYD,GAAE,MAAM,QAAM,eAAaA,GAAE,MAAM,QAAM,eAAaA,GAAE,MAAM,QAAM,CAACD,GAAE,oBAAkBA,GAAE,oBAAkBA,GAAE;AAAW,cAAGA,GAAE,cAAY,WAAU;AAAC,qBAAQC,KAAE,GAAEA,KAAED,GAAE,OAAO,QAAOC,KAAI,KAAGD,GAAE,OAAOC,EAAC,EAAE,UAAQC,KAAE,GAAEA,KAAEF,GAAE,OAAOC,EAAC,EAAE,QAAOC,KAAI,UAAOF,GAAE,OAAOC,EAAC,EAAEC,EAAC,KAAGiB,GAAE,SAASnB,GAAE,OAAOC,EAAC,EAAEC,EAAC,CAAC,MAAIF,GAAE,OAAK,KAAK,IAAIA,GAAE,MAAKA,GAAE,OAAOC,EAAC,EAAEC,EAAC,CAAC,GAAEF,GAAE,cAAY,KAAK,IAAIA,GAAE,MAAKA,GAAE,OAAOC,EAAC,EAAEC,EAAC,CAAC,GAAEF,GAAE,OAAK,KAAK,IAAIA,GAAE,MAAKA,GAAE,OAAOC,EAAC,EAAEC,EAAC,CAAC,GAAEF,GAAE,cAAY,KAAK,IAAIA,GAAE,MAAKA,GAAE,OAAOC,EAAC,EAAEC,EAAC,CAAC;AAAA,UAAE,EAAE,GAAEF,GAAE,oBAAkB,MAAIC,GAAE,MAAM,WAAW,WAASD,GAAE,OAAKA,GAAE,OAAOA,GAAE,OAAO,SAAO,CAAC,GAAEA,GAAE,cAAYA,GAAE,OAAOA,GAAE,OAAO,SAAO,CAAC,GAAEA,GAAE,OAAK,GAAEA,GAAE,cAAY,IAAGA,GAAE,cAAYA,GAAE,oBAAkBA,GAAE,oBAAmB;AAAC,gBAAIG,KAAE;AAAG,gBAAG,WAASF,GAAE,MAAM,WAAW,CAAAE,KAAE,KAAK,MAAMH,GAAE,WAAS,GAAG,GAAE,cAAYC,GAAE,MAAM,QAAMD,GAAE,aAAW,OAAKG,KAAEH,GAAE,aAAW,IAAGG,KAAEH,GAAE,cAAY,MAAIA,GAAE,eAAaG,KAAEH,GAAE,aAAW;AAAA,qBAAW,iBAAeC,GAAE,MAAM,YAAW;AAAC,kBAAGD,GAAE,OAAO,SAAO,MAAIG,KAAEH,GAAE,OAAOA,GAAE,mBAAmB,EAAE,SAAO,IAAGA,GAAE,YAAW;AAAC,oBAAIK,KAAEL,GAAE,OAAKA,GAAE;AAAK,gBAAAK,KAAE,OAAKF,KAAEE,KAAE;AAAA,cAAE;AAAA,YAAC,MAAM,CAAAF,KAAEF,GAAE,MAAM;AAAW,gBAAGD,GAAE,cAAYG,IAAE,WAASF,GAAE,MAAM,OAAK,YAAU,OAAOA,GAAE,MAAM,QAAMD,GAAE,OAAKC,GAAE,MAAM,MAAK,WAASA,GAAE,MAAM,OAAK,YAAU,OAAOA,GAAE,MAAM,QAAMD,GAAE,OAAKC,GAAE,MAAM,MAAK,WAASA,GAAE,MAAM,UAAQD,GAAE,OAAKA,GAAE,OAAKC,GAAE,MAAM,QAAOD,GAAE,SAAO,OAAO,aAAWA,GAAE,SAAO,CAAC,OAAO,UAAU,KAAGC,GAAE,MAAM,yBAAuB,CAACD,GAAE,oBAAmB;AAAC,uBAAQM,KAAE,CAAC,GAAEE,KAAER,GAAE,OAAK,GAAEQ,KAAER,GAAE,MAAKQ,KAAI,CAAAF,GAAE,KAAKE,KAAE,CAAC;AAAE,cAAAR,GAAE,aAAW,EAAC,QAAOM,IAAE,SAAQA,GAAE,CAAC,GAAE,SAAQA,GAAEA,GAAE,SAAO,CAAC,EAAC;AAAA,YAAC,MAAM,CAAAN,GAAE,aAAW,KAAK,OAAO,UAAUA,GAAE,MAAKA,GAAE,IAAI;AAAA,gBAAO,CAAAA,GAAE,aAAW,KAAK,OAAO,YAAY,GAAEG,IAAEA,IAAE,GAAEF,GAAE,MAAM,QAAQ,GAAED,GAAE,oBAAkBA,GAAE,OAAO,SAAO,MAAIA,GAAE,aAAW,KAAK,OAAO,YAAY,GAAEA,GAAE,OAAO,QAAOG,KAAE,GAAE,GAAEF,GAAE,MAAM,QAAQ,GAAED,GAAE,UAAQA,GAAE,OAAO,MAAM;AAAG,YAAAE,OAAIF,GAAE,SAAOA,GAAE,WAAW,OAAO,MAAM;AAAA,UAAE;AAAC,iBAAOA,GAAE,mBAAiBA,GAAE,OAAO,WAASA,GAAE,cAAYA,GAAE,OAAO,SAAQ,KAAK,uBAAuB,GAAE,KAAK,aAAa,GAAE,EAAC,MAAKA,GAAE,MAAK,MAAKA,GAAE,KAAI;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE;AAAQ,cAAGA,GAAE;AAAU,qBAAQC,KAAE,GAAEA,KAAED,GAAE,OAAO,QAAOC,KAAI,KAAG,WAASD,GAAE,QAAQC,EAAC,EAAE,UAAQC,KAAE,GAAEA,KAAEF,GAAE,QAAQC,EAAC,EAAE,QAAOC,KAAI,UAAOF,GAAE,QAAQC,EAAC,EAAEC,EAAC,KAAGiB,GAAE,SAASnB,GAAE,QAAQC,EAAC,EAAEC,EAAC,CAAC,MAAIF,GAAE,OAAK,KAAK,IAAIA,GAAE,MAAKA,GAAE,QAAQC,EAAC,EAAEC,EAAC,CAAC,GAAEF,GAAE,OAAK,KAAK,IAAIA,GAAE,MAAKA,GAAE,QAAQC,EAAC,EAAEC,EAAC,CAAC;AAAA;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,EAAE,SAAQC,KAAE,KAAK,EAAE;AAAO,cAAGD,GAAE,SAAOA,GAAE,MAAK;AAAC,gBAAIE,KAAE,IAAIwB,GAAE,KAAK,GAAG;AAAE,gBAAG,eAAazB,GAAE,MAAM,MAAK;AAAC,kBAAIE,KAAED,GAAE,QAAQF,GAAE,IAAI;AAAE,cAAAC,GAAE,MAAM,OAAO,cAAYE,GAAE,WAAWA,GAAE,WAAW,IAAE,CAAC,IAAEA,GAAE,QAAQA,GAAE,QAAQ,IAAE,CAAC,GAAEH,GAAE,OAAK,IAAI,KAAKG,EAAC,EAAE,QAAQ;AAAE,kBAAIE,KAAEH,GAAE,QAAQF,GAAE,IAAI;AAAE,cAAAC,GAAE,MAAM,OAAO,cAAYI,GAAE,WAAWA,GAAE,WAAW,IAAE,CAAC,IAAEA,GAAE,QAAQA,GAAE,QAAQ,IAAE,CAAC,GAAEL,GAAE,OAAK,IAAI,KAAKK,EAAC,EAAE,QAAQ;AAAA,YAAC,MAAK,EAAC,cAAYJ,GAAE,MAAM,QAAM,eAAaA,GAAE,MAAM,QAAM,CAACD,GAAE,sBAAoBA,GAAE,OAAKA,GAAE,OAAK,GAAEA,GAAE,cAAYA,GAAE,MAAKA,GAAE,OAAKA,GAAE,OAAK,GAAEA,GAAE,cAAYA,GAAE;AAAA,UAAK;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE;AAAQ,UAAAA,GAAE,cAAYA,GAAE,QAAQ,QAAS,SAASC,IAAEC,IAAE;AAAC,kBAAID,GAAE,UAAQA,GAAE,KAAKD,GAAE,QAAQA,GAAE,mBAAmB,EAAEA,GAAE,QAAQA,GAAE,mBAAmB,EAAE,SAAO,CAAC,CAAC;AAAE,gBAAIG,KAAEF,GAAE,MAAM;AAAE,YAAAE,GAAE,KAAM,SAASH,IAAEC,IAAE;AAAC,qBAAOD,KAAEC;AAAA,YAAC,CAAE,GAAEE,GAAE,QAAS,SAASF,IAAEC,IAAE;AAAC,kBAAGA,KAAE,GAAE;AAAC,oBAAIG,KAAEJ,KAAEE,GAAED,KAAE,CAAC;AAAE,gBAAAG,KAAE,MAAIL,GAAE,WAAS,KAAK,IAAIK,IAAEL,GAAE,QAAQ;AAAA,cAAE;AAAA,YAAC,CAAE,GAAE,MAAIA,GAAE,cAAYA,GAAE,aAAW,OAAO,cAAYA,GAAE,WAAS;AAAA,UAAG,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,EAAE;AAAQ,cAAGA,GAAE,OAAO,QAAO;AAAC,gBAAIC,KAAED,GAAE;AAAa,YAAAC,GAAE,WAASA,KAAE,CAAC,KAAK,EAAE,QAAQ,YAAY,IAAK,SAASF,IAAE;AAAC,qBAAOA;AAAA,YAAC,CAAE,CAAC;AAAG,gBAAIG,KAAE,CAAC,GAAEE,KAAE,CAAC;AAAE,YAAAH,GAAE,QAAS,SAASA,IAAE;AAAC,cAAAC,GAAED,EAAC,IAAE,CAAC,GAAEG,GAAEH,EAAC,IAAE,CAAC,GAAEF,GAAE,EAAE,OAAO,OAAO,IAAK,SAASA,IAAEG,IAAE;AAAC,uBAAOD,GAAE,QAAQD,GAAE,YAAYE,EAAC,CAAC,IAAE,KAAGA,KAAE;AAAA,cAAI,CAAE,EAAE,OAAQ,SAASH,IAAE;AAAC,uBAAO,SAAOA;AAAA,cAAC,CAAE,EAAE,QAAS,SAASM,IAAE;AAAC,yBAAQE,KAAE,GAAEA,KAAEP,GAAE,OAAOA,GAAE,mBAAmB,EAAE,QAAOO,MAAI;AAAC,sBAAIC,IAAEE,IAAEC,IAAEF;AAAE,6BAASP,GAAED,EAAC,EAAEM,EAAC,MAAIL,GAAED,EAAC,EAAEM,EAAC,IAAE,GAAEH,GAAEH,EAAC,EAAEM,EAAC,IAAE,KAAIR,GAAE,EAAE,OAAO,MAAM,WAAS,CAACC,GAAE,eAAaD,GAAE,EAAE,OAAO,MAAM,WAASC,GAAE,gBAAc,CAACD,GAAE,EAAE,OAAO,MAAM,gBAAc,WAAS,UAAQS,KAAET,GAAE,EAAE,OAAO,WAAS,WAASS,MAAG,UAAQE,KAAEF,GAAEH,EAAC,MAAI,WAASK,KAAE,SAAOA,GAAE,SAAO,cAAY,UAAQC,KAAEZ,GAAE,EAAE,OAAO,WAAS,WAASY,MAAG,UAAQF,KAAEE,GAAEN,EAAC,MAAI,WAASI,KAAE,SAAOA,GAAE,WAAS,SAAOT,GAAE,OAAOK,EAAC,EAAEE,EAAC,KAAGW,GAAE,SAASlB,GAAE,OAAOK,EAAC,EAAEE,EAAC,CAAC,MAAIP,GAAE,OAAOK,EAAC,EAAEE,EAAC,IAAE,IAAEL,GAAED,EAAC,EAAEM,EAAC,KAAG,WAAWP,GAAE,OAAOK,EAAC,EAAEE,EAAC,CAAC,IAAE,OAAKH,GAAEH,EAAC,EAAEM,EAAC,KAAG,WAAWP,GAAE,OAAOK,EAAC,EAAEE,EAAC,CAAC;AAAA,gBAAE;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,GAAE,OAAO,QAAQL,EAAC,EAAE,QAAS,SAASH,IAAE;AAAC,kBAAIE,KAAEc,GAAEhB,IAAE,CAAC,EAAE,CAAC;AAAE,cAAAG,GAAED,EAAC,EAAE,QAAS,SAASF,IAAEM,IAAE;AAAC,gBAAAL,GAAE,OAAK,KAAK,IAAIA,GAAE,MAAKE,GAAED,EAAC,EAAEI,EAAC,CAAC,GAAEL,GAAE,OAAK,KAAK,IAAIA,GAAE,MAAKI,GAAEH,EAAC,EAAEI,EAAC,CAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEN;AAAA,MAAC,EAAE;AAAr7oH,UAAu7oHmD,KAAE,WAAU;AAAC,iBAASnD,GAAEC,IAAEE,IAAE;AAAC,UAAAD,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,SAAOE,IAAE,KAAK,IAAEF,GAAE;AAAE,cAAII,KAAE,KAAK;AAAE,eAAK,gBAAcA,GAAE,OAAO,MAAM,OAAO,MAAM,UAAS,KAAK,iBAAeA,GAAE,OAAO,MAAM,OAAO,MAAM,YAAW,KAAK,kBAAgBA,GAAE,OAAO,MAAM,OAAO,MAAM,QAAO,KAAK,0BAAwB,UAAQA,GAAE,OAAO,MAAM,QAAMA,GAAE,OAAO,YAAY,IAAI,YAAW,KAAK,YAAU,aAAWA,GAAE,OAAO,MAAM,WAASA,GAAE,QAAQ,aAAW,GAAE,KAAK,cAAY,CAAC,GAAE,KAAK,YAAU,IAAIuB,GAAE3B,EAAC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,aAAY,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAEF,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO,OAAMK,KAAEF,GAAE,UAASG,KAAEH,GAAE,YAAWK,KAAEL,GAAE,YAAWM,KAAEP,GAAE,MAAM,EAAC,OAAM,oBAAmB,KAAIF,IAAE,WAAU,aAAa,OAAOC,GAAE,QAAQ,gBAAgBD,EAAC,GAAE,MAAM,EAAC,CAAC;AAAE,cAAG,KAAK,UAAU,cAAcA,EAAC,EAAE,QAAOS;AAAE,cAAIE,KAAET,GAAE,MAAM,EAAC,OAAM,2BAA0B,CAAC;AAAE,UAAAO,GAAE,IAAIE,EAAC;AAAE,cAAIC,KAAEX,GAAE,QAAQ,WAAWD,EAAC,EAAE,OAAO,SAAO,GAAEU,KAAET,GAAE,QAAQ,aAAWW,IAAEE,KAAEb,GAAE,QAAQ,iBAAiBD,EAAC,GAAEe,KAAE,KAAK,UAAU,uBAAuBf,IAAEC,GAAE,QAAQ,WAAWD,EAAC,EAAE,OAAO,MAAM,CAAC;AAAE,cAAGC,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO,MAAK;AAAC,gBAAIa,KAAEZ,GAAE,QAAQ,aAAWA,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO;AAAQ,YAAAC,GAAE,QAAQ,kBAAgBY,KAAE,IAAE,cAAYZ,GAAE,OAAO,MAAM,SAAOY,MAAGH,KAAE,IAAGG,MAAG,SAASR,IAAE,EAAE,IAAE;AAAE,qBAAQW,KAAEJ,IAAEI,MAAG,GAAEA,MAAI;AAAC,kBAAIC,KAAEH,GAAEC,GAAEC,EAAC,GAAEA,IAAEf,EAAC,GAAEG,KAAEH,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO;AAAQ,cAAAC,GAAE,OAAO,MAAMD,EAAC,EAAE,YAAU,MAAIC,GAAE,OAAO,MAAM,WAASG,MAAG;AAAI,kBAAIc,KAAE,KAAK,cAAcjB,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO,OAAMC,GAAE,OAAO,MAAMD,EAAC,EAAE,QAAQ,GAAEO,KAAE,KAAK,UAAU,kBAAkBJ,GAAE,QAAOH,EAAC,GAAEoB,KAAE,MAAM,QAAQb,EAAC,IAAEA,GAAES,EAAC,IAAET,IAAEc,KAAEF,GAAE,YAAYlB,GAAE,QAAQ,IAAI,OAAO,iBAAiB,0BAA0B,OAAOD,IAAE,kCAAkC,CAAC,CAAC,EAAE,IAAK,SAASA,IAAE;AAAC,uBAAOA,GAAE;AAAA,cAAW,CAAE,GAAEuB,KAAErB,GAAE,SAAS,EAAC,GAAEE,IAAE,GAAES,IAAE,MAAKQ,GAAE,SAASJ,EAAC,KAAG,CAAChB,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO,iBAAe,KAAGiB,IAAE,YAAWC,IAAE,UAASb,IAAE,YAAWC,IAAE,YAAWE,IAAE,UAASP,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO,UAAS,WAAUoB,IAAE,aAAY,OAAG,UAAS,0BAA0B,OAAOjB,GAAE,QAAQ,EAAC,CAAC;AAAE,cAAAQ,GAAE,IAAIY,EAAC,GAAE,KAAK,WAAWA,IAAEN,EAAC,GAAE,MAAIhB,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO,UAAQ,KAAK,YAAYE,IAAEqB,IAAE,YAAWtB,GAAE,OAAO,MAAMD,EAAC,EAAE,OAAO,MAAM,GAAEa,MAAGH;AAAA,YAAC;AAAA,UAAC;AAAC,iBAAO,KAAK,cAAcR,IAAEO,IAAET,EAAC,GAAE,KAAK,cAAcE,IAAEO,IAAET,IAAEY,IAAEF,EAAC,GAAED;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAAST,IAAEC,IAAE;AAAC,iBAAM,WAASD,KAAE,UAAQ,aAAWA,KAAE,WAAS,YAAUA,KAAE,QAAMC,KAAE,UAAQ;AAAA,QAAK,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,SAAS,gBAAgB,KAAK,EAAE,QAAQ,OAAM,OAAO;AAAE,UAAAA,GAAE,cAAY,MAAM,QAAQD,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA,IAAED,GAAE,KAAK,YAAYE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAEL,GAAE,mBAAmBE,GAAE,IAAI,GAAEI,KAAEN,GAAE,mBAAmBC,GAAE,IAAI;AAAE,UAAAA,GAAE,KAAK,aAAa,aAAY,UAAU,OAAOE,IAAE,GAAG,EAAE,OAAOE,GAAE,GAAE,GAAG,EAAE,OAAOC,GAAE,GAAE,GAAG,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASN,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAG,WAASA,GAAE,OAAO,MAAMD,EAAC,EAAE,MAAM,MAAK;AAAC,gBAAIG,KAAEL,GAAE,MAAM,EAAC,OAAM,yBAAwB,CAAC,GAAEM,KAAEH,GAAE,OAAO,MAAMD,EAAC,EAAE,WAASC,GAAE,QAAQ,gBAAgBD,EAAC,IAAE,GAAEM,KAAER,GAAE,SAAS,EAAC,GAAEM,IAAE,GAAEH,GAAE,QAAQ,aAAW,IAAEA,GAAE,QAAQ,aAAWA,GAAE,OAAO,MAAMD,EAAC,EAAE,MAAM,SAAQ,MAAKC,GAAE,OAAO,MAAMD,EAAC,EAAE,MAAM,MAAK,YAAW,OAAM,WAAUC,GAAE,OAAO,MAAMD,EAAC,EAAE,MAAM,MAAM,OAAM,UAASC,GAAE,OAAO,MAAMD,EAAC,EAAE,MAAM,MAAM,UAAS,YAAWC,GAAE,OAAO,MAAMD,EAAC,EAAE,MAAM,MAAM,YAAW,YAAWC,GAAE,OAAO,MAAMD,EAAC,EAAE,MAAM,MAAM,YAAW,UAAS,+BAA+B,OAAOC,GAAE,OAAO,MAAMD,EAAC,EAAE,MAAM,MAAM,QAAQ,EAAC,CAAC;AAAE,YAAAG,GAAE,IAAIG,EAAC,GAAEP,GAAE,IAAII,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASL,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAEF,GAAE,OAAO,MAAMJ,EAAC,EAAE,YAAWO,KAAE,KAAGD,GAAE;AAAQ,cAAGF,GAAE,OAAO,MAAMJ,EAAC,EAAE,aAAWO,KAAE,MAAID,GAAE,UAASA,GAAE,MAAK;AAAC,gBAAIG,KAAEX,GAAE,SAASS,IAAEH,GAAE,QAAQ,aAAWE,GAAE,UAAQ,GAAEC,IAAEH,GAAE,QAAQ,aAAWA,GAAE,QAAQ,aAAWE,GAAE,UAAQ,GAAEA,GAAE,OAAM,GAAEA,GAAE,KAAK;AAAE,YAAAP,GAAE,IAAIU,EAAC;AAAA,UAAC;AAAC,UAAAL,GAAE,OAAO,MAAMJ,EAAC,EAAE,UAAU,QAAM,KAAK,UAAU,eAAeO,IAAEN,IAAEK,IAAEF,GAAE,OAAO,MAAMJ,EAAC,EAAE,WAAUA,IAAEG,IAAEJ,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAED,GAAE,MAAM,EAAC,OAAM,6CAA4C,CAAC,GAAEG,KAAEH,GAAE,MAAM,EAAC,OAAM,4BAA2B,WAAU,aAAa,OAAOD,GAAE,QAAQ,iBAAgB,IAAI,EAAE,OAAOA,GAAE,QAAQ,iBAAgB,GAAG,EAAC,CAAC;AAAE,UAAAE,GAAE,IAAIE,EAAC;AAAE,cAAIC,KAAEL,GAAE,QAAQ,WAAWD,EAAC,EAAE,OAAO,SAAO,GAAEQ,KAAEP,GAAE,QAAQ,YAAUK,KAAE,KAAGG,KAAED,KAAEP,GAAE,OAAO,MAAM,OAAO,SAAQU,KAAEV,GAAE,QAAQ,iBAAgBW,KAAE,KAAK,UAAU,uBAAuBZ,IAAEC,GAAE,QAAQ,WAAWD,EAAC,EAAE,OAAO,MAAM,CAAC,GAAEU,KAAET,GAAE,QAAQ;AAAgB,cAAGS,GAAE,SAAO,MAAI,KAAK,cAAYA,GAAE,MAAM,GAAEJ,MAAGM,KAAEF,GAAE,MAAM,GAAG,SAAQT,GAAE,OAAO,MAAM,OAAO,KAAK,UAAQa,KAAEJ,GAAE,SAAO,IAAEJ,IAAEI,GAAE,SAAOI,KAAEJ,GAAE,SAAOI,MAAG,GAAEJ,GAAE,SAAOI,OAAIA,MAAI;AAAC,gBAAIC,KAAEJ,GAAEC,GAAEE,EAAC,GAAEA,IAAEb,EAAC,GAAEY,KAAEZ,GAAE,QAAQ,YAAUA,GAAE,QAAQ,iBAAeQ,KAAED,KAAEP,GAAE,OAAO,MAAM,OAAO;AAAS,gBAAGS,GAAE,QAAO;AAAC,kBAAIM,KAAE,KAAK,UAAU,SAASJ,IAAEF,IAAEG,IAAEC,IAAE,KAAK,aAAY,KAAK,aAAa;AAAE,cAAAD,KAAEG,GAAE,GAAED,KAAEC,GAAE,MAAK,KAAK,YAAY,KAAKA,GAAE,IAAI,GAAE,MAAIF,MAAGb,GAAE,QAAQ,2BAAyBc,KAAE,KAAID,OAAIF,GAAE,SAAO,KAAGX,GAAE,QAAQ,0BAAwBc,KAAE;AAAA,YAAG;AAAC,gBAAIE,KAAEf,GAAE,SAAS,EAAC,GAAEW,IAAE,GAAE,KAAK,YAAUZ,GAAE,OAAO,MAAM,OAAO,UAAQ,MAAI,UAAQA,GAAE,OAAO,MAAM,WAASA,GAAE,QAAQ,cAAYA,GAAE,OAAO,MAAM,UAAU,SAAO,IAAE,IAAG,MAAKc,IAAE,YAAW,UAAS,WAAU,MAAM,QAAQ,KAAK,eAAe,IAAE,KAAK,gBAAgBf,EAAC,IAAE,KAAK,iBAAgB,UAAS,KAAK,eAAc,YAAW,KAAK,iBAAgB,YAAWC,GAAE,OAAO,MAAM,OAAO,MAAM,YAAW,aAAY,OAAG,UAAS,0BAA0B,OAAOA,GAAE,OAAO,MAAM,OAAO,MAAM,QAAQ,EAAC,CAAC;AAAE,YAAAI,GAAE,IAAIY,EAAC,GAAEA,GAAE,MAAMF,EAAC,GAAE,KAAK,WAAWE,IAAEF,EAAC,GAAEN,MAAGD;AAAA,UAAC;AAAC,iBAAO,KAAK,uBAAuBL,EAAC,GAAE,KAAK,oBAAoBA,EAAC,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAEF,GAAE,OAAO,MAAM;AAAW,cAAGE,GAAE,MAAK;AAAC,gBAAIE,KAAE;AAAE,sBAAQJ,GAAE,OAAO,MAAM,QAAMA,GAAE,QAAQ,eAAaI,MAAG;AAAI,gBAAIC,KAAEJ,GAAE,SAASD,GAAE,QAAQ,gBAAcI,KAAEF,GAAE,SAAQ,KAAK,WAAUF,GAAE,QAAQ,WAAU,KAAK,WAAUE,GAAE,OAAM,GAAEA,GAAE,MAAM;AAAE,iBAAK,UAAQ,KAAK,OAAO,iBAAeF,GAAE,OAAO,KAAK,OAAK,KAAK,OAAO,cAAc,IAAIK,EAAC,IAAEN,GAAE,IAAIM,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG;AAAE,cAAG,WAASrB,GAAE,OAAO,MAAM,MAAM,MAAK;AAAC,gBAAIE,KAAED,GAAE,MAAM,EAAC,OAAM,yDAAwD,CAAC,GAAEG,KAAEH,GAAE,SAAS,EAAC,GAAED,GAAE,QAAQ,YAAU,IAAEA,GAAE,OAAO,MAAM,MAAM,SAAQ,GAAE,KAAK,YAAU,WAAW,KAAK,aAAa,IAAE,WAAWA,GAAE,OAAO,MAAM,MAAM,MAAM,QAAQ,IAAEA,GAAE,OAAO,MAAM,MAAM,UAAQ,IAAG,MAAKA,GAAE,OAAO,MAAM,MAAM,MAAK,YAAW,UAAS,UAASA,GAAE,OAAO,MAAM,MAAM,MAAM,UAAS,YAAWA,GAAE,OAAO,MAAM,MAAM,MAAM,YAAW,YAAWA,GAAE,OAAO,MAAM,MAAM,MAAM,YAAW,WAAUA,GAAE,OAAO,MAAM,MAAM,MAAM,OAAM,UAAS,+BAA+B,OAAOA,GAAE,OAAO,MAAM,MAAM,MAAM,QAAQ,EAAC,CAAC;AAAE,YAAAE,GAAE,IAAIE,EAAC,GAAEL,GAAE,IAAIG,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAImB,GAAE,KAAK,GAAG,GAAEjB,KAAEH,GAAE,QAAQ,IAAI,OAAO,cAAc,0BAA0B,OAAOF,IAAE,8BAA8B,CAAC,GAAEM,KAAED,KAAEA,GAAE,sBAAsB,IAAE,EAAC,OAAM,GAAE,QAAO,EAAC,GAAEG,KAAEN,GAAE,QAAQ,IAAI,OAAO,cAAc,0BAA0B,OAAOF,IAAE,iCAAiC,CAAC,GAAES,KAAED,KAAEA,GAAE,sBAAsB,IAAE,EAAC,OAAM,GAAE,QAAO,EAAC;AAAE,cAAGA,IAAE;AAAC,gBAAIG,KAAE,KAAK,sBAAsBX,IAAEM,IAAEG,IAAER,EAAC;AAAE,YAAAO,GAAE,aAAa,KAAIG,GAAE,QAAMV,KAAE,KAAG,EAAE;AAAE,gBAAIW,KAAET,GAAE,mBAAmBK,EAAC;AAAE,YAAAA,GAAE,aAAa,aAAY,UAAU,OAAOP,KAAE,KAAGC,GAAE,OAAO,MAAMF,EAAC,EAAE,MAAM,SAAOE,GAAE,OAAO,MAAMF,EAAC,EAAE,MAAM,QAAO,GAAG,EAAE,OAAOY,GAAE,GAAE,GAAG,EAAE,OAAOA,GAAE,GAAE,GAAG,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASZ,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK,GAAEC,KAAE,GAAEE,KAAE;AAAG,iBAAO,WAASH,GAAE,OAAO,MAAML,EAAC,EAAE,MAAM,QAAMA,KAAE,IAAE,EAAC,MAAKM,IAAE,MAAK,EAAC,KAAGH,KAAEG,KAAEL,GAAE,QAAMI,GAAE,OAAO,MAAML,EAAC,EAAE,MAAM,UAAQE,GAAE,QAAM,IAAEM,KAAE,KAAGF,KAAE,KAAGL,GAAE,QAAMI,GAAE,OAAO,MAAML,EAAC,EAAE,MAAM,UAAQQ,KAAE,IAAEN,GAAE,QAAM,GAAEG,GAAE,QAAQ,oBAAkBG,KAAE,IAAGF,KAAE,KAAGL,GAAE,QAAMI,GAAE,OAAO,MAAML,EAAC,EAAE,MAAM,UAAQQ,MAAI,EAAC,MAAKF,IAAE,MAAKE,GAAC;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASR,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,GAAEE,KAAE,GAAEC,KAAE,IAAGE,KAAE;AAAE,UAAAN,GAAE,OAAO,MAAM,SAAO,MAAI,KAAK,aAAW,OAAIA,GAAE,OAAO,MAAM,QAAS,SAASO,IAAEE,IAAE;AAAC,gBAAIC,KAAEV,GAAE,QAAQ,mBAAmB,SAASS,EAAC,KAAG,CAACF,GAAE,QAAMA,GAAE,YAAU,MAAIT,GAAEW,EAAC,EAAE,OAAMD,KAAEV,GAAEW,EAAC,EAAE,QAAMV,GAAEU,EAAC,EAAE;AAAM,YAAAF,GAAE,WAASP,GAAE,QAAQ,mBAAiBG,KAAEH,GAAE,QAAQ,YAAUA,GAAE,QAAQ,aAAW,GAAEA,GAAE,QAAQ,gBAAgBS,EAAC,IAAEN,KAAEI,GAAE,OAAO,YAAUJ,KAAEH,GAAE,QAAQ,YAAUA,GAAE,QAAQ,aAAWM,IAAEI,OAAIJ,MAAGE,KAAE,KAAIR,GAAE,QAAQ,gBAAgBS,EAAC,IAAEN,KAAEI,GAAE,OAAO,UAAQ,OAAKN,KAAED,GAAE,QAAQ,aAAWI,IAAEM,OAAIN,MAAGI,KAAE,KAAIR,GAAE,QAAQ,gBAAgBS,EAAC,IAAER,KAAEM,GAAE,OAAO;AAAA,UAAQ,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,cAAIT,KAAE,KAAK;AAAE,UAAAmB,GAAE,YAAYnB,GAAE,QAAQ,IAAI,OAAO,uBAAuB,kBAAkB,CAAC,EAAE,QAAS,SAASC,IAAEC,IAAE;AAAC,gBAAIC,KAAEH,GAAE,OAAO,MAAME,EAAC;AAAE,gBAAGC,MAAG,CAACA,GAAE,YAAU,WAASA,GAAE,OAAO,OAAM;AAAC,kBAAIE,KAAEL,GAAE,QAAQ,IAAI,OAAO,cAAc,0BAA0B,OAAOE,IAAE,8BAA8B,CAAC,GAAEI,KAAEa,GAAE,YAAYnB,GAAE,QAAQ,IAAI,OAAO,iBAAiB,0BAA0B,OAAOE,IAAE,4BAA4B,CAAC,CAAC,GAAEM,KAAEH,GAAE,sBAAsB;AAAE,cAAAC,GAAE,QAAS,SAASN,IAAE;AAAC,gBAAAA,GAAE,aAAa,eAAcG,GAAE,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,WAASA,GAAE,OAAO,SAAOA,GAAE,WAAS,aAAWA,GAAE,OAAO,QAAME,GAAE,aAAa,aAAY,aAAa,OAAOG,GAAE,QAAM,KAAGL,GAAE,WAAS,IAAE,KAAI,MAAM,CAAC,IAAE,YAAUA,GAAE,OAAO,SAAOA,GAAE,YAAUE,GAAE,aAAa,aAAY,aAAa,OAAOG,GAAE,OAAM,MAAM,CAAC,IAAEH,GAAE,aAAa,aAAY,cAAc,OAAOG,GAAE,OAAM,MAAM,CAAC;AAAA,YAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,CAAC,CAAC,GAAER;AAAA,MAAC,EAAE;AAAht6H,UAAkt6HoD,KAAE,WAAU;AAAC,iBAASpD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,gBAAckB,GAAE,KAAK,KAAK,eAAc,IAAI;AAAA,QAAC;AAAC,eAAOd,GAAEL,IAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,OAAO,eAAeF,EAAC,IAAEE,GAAE,QAAQ,OAAOF,EAAC,EAAE,KAAKC,EAAC,IAAEC,GAAE,QAAQ,OAAOF,EAAC,IAAE,CAACC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAGA,GAAE,QAAQ,OAAO,eAAeF,EAAC,GAAE;AAAC,gBAAIG,KAAED,GAAE,QAAQ,OAAOF,EAAC,EAAE,QAAQC,EAAC;AAAE,mBAAKE,MAAGD,GAAE,QAAQ,OAAOF,EAAC,EAAE,OAAOG,IAAE,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAGA,GAAE,QAAQ,OAAO,eAAeF,EAAC,GAAE;AAAC,YAAAC,MAAGA,GAAE,WAASA,KAAE,CAAC;AAAG,qBAAQE,KAAED,GAAE,QAAQ,OAAOF,EAAC,GAAEK,KAAEF,GAAE,QAAOG,KAAE,GAAEA,KAAED,IAAEC,KAAI,CAAAH,GAAEG,EAAC,EAAE,MAAM,MAAKL,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAID,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,KAAK,KAAIC,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAcA,GAAE,QAAQ,UAAU;AAAE,eAAK,IAAI,UAAU,QAAS,SAASD,IAAE;AAAC,YAAAG,GAAE,iBAAiBH,IAAG,SAASA,IAAE;AAAC,kBAAIG,KAAE,OAAO,OAAO,CAAC,GAAEF,IAAE,EAAC,aAAYA,GAAE,QAAQ,aAAWA,GAAE,QAAQ,sBAAoB,GAAE,gBAAeA,GAAE,QAAQ,uBAAsB,CAAC;AAAE,8BAAcD,GAAE,QAAM,gBAAcA,GAAE,OAAK,cAAY,OAAOC,GAAE,OAAO,MAAM,OAAO,aAAWA,GAAE,OAAO,MAAM,OAAO,UAAUD,IAAEE,IAAEC,EAAC,IAAE,iBAAeH,GAAE,QAAM,iBAAeA,GAAE,OAAK,cAAY,OAAOC,GAAE,OAAO,MAAM,OAAO,cAAYA,GAAE,OAAO,MAAM,OAAO,WAAWD,IAAEE,IAAEC,EAAC,KAAG,cAAYH,GAAE,QAAM,MAAIA,GAAE,SAAO,eAAaA,GAAE,UAAQ,cAAY,OAAOC,GAAE,OAAO,MAAM,OAAO,SAAOA,GAAE,OAAO,MAAM,OAAO,MAAMD,IAAEE,IAAEC,EAAC,GAAED,GAAE,IAAI,OAAO,UAAU,SAAQ,CAACF,IAAEE,IAAEC,EAAC,CAAC;AAAA,YAAE,GAAG,EAAC,SAAQ,OAAG,SAAQ,KAAE,CAAC;AAAA,UAAC,CAAE,GAAE,KAAK,IAAI,UAAU,QAAS,SAASD,IAAE;AAAC,YAAAD,GAAE,QAAQ,IAAI,OAAO,iBAAiBC,IAAEF,GAAE,eAAc,EAAC,SAAQ,KAAE,CAAC;AAAA,UAAC,CAAE,GAAE,KAAK,IAAI,KAAK,kBAAkB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEF,GAAE,OAAO;AAAU,cAAG,YAAUA,GAAE,MAAK;AAAC,gBAAIG,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAc,kBAAkB;AAAE,YAAAE,MAAGA,GAAE,UAAU,SAAS,sBAAsB,KAAG,2BAAyBD,MAAGC,GAAE,UAAU,OAAO,sBAAsB;AAAA,UAAC;AAAC,UAAAF,GAAE,QAAQ,UAAQ,gBAAcD,GAAE,OAAKA,GAAE,QAAQ,CAAC,EAAE,UAAQA,GAAE,SAAQC,GAAE,QAAQ,UAAQ,gBAAcD,GAAE,OAAKA,GAAE,QAAQ,CAAC,EAAE,UAAQA,GAAE;AAAA,QAAO,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAns+H,UAAqs+HqD,MAAG,WAAU;AAAC,iBAASrD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,0BAAyB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,OAAO,MAAM;AAAQ,iBAAO,KAAK,SAAO,OAAO,KAAK,MAAM,WAAS,OAAO,KAAK,MAAM,QAAQ,SAAO,MAAIA,KAAE,KAAK,EAAE,OAAO,MAAM,QAAQ,OAAO,OAAO,KAAK,MAAM,OAAO;AAAG,cAAIC,KAAED,GAAE,OAAQ,SAASA,IAAE;AAAC,mBAAOA,GAAE,SAAOD;AAAA,UAAC,CAAE,EAAE,CAAC;AAAE,cAAG,CAACE,GAAE,OAAM,IAAI,MAAM,yFAAyF;AAAE,cAAIC,KAAEgB,GAAE,OAAOY,IAAE7B,EAAC;AAAE,eAAK,EAAE,QAAQ,SAAOC,GAAE;AAAA,QAAO,EAAC,CAAC,CAAC,GAAEH;AAAA,MAAC,EAAE;AAAnt/H,UAAqt/HsD,MAAG,WAAU;AAAC,iBAAStD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,YAAW,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,IAAEC,IAAEE,KAAE,MAAKC,KAAE,KAAK,EAAE,SAAQE,KAAE,KAAK,EAAE,QAAOC,KAAE,IAAIsC,GAAE,KAAK,KAAI9C,EAAC,GAAEU,KAAE,IAAIwC,GAAE,KAAK,KAAIlD,EAAC;AAAE,UAAAK,GAAE,cAAY,YAAUN,OAAIM,GAAE,mBAAiBH,KAAEQ,GAAE,kBAAkB,CAAC,GAAET,KAAEO,GAAE,kBAAkB,CAAC,GAAEH,GAAE,IAAI,YAAY,IAAIJ,EAAC,GAAEI,GAAE,IAAI,YAAY,IAAIH,EAAC,MAAID,KAAEO,GAAE,UAAU,GAAEH,GAAE,IAAI,YAAY,IAAIJ,EAAC,GAAEM,GAAE,MAAM,IAAK,SAASR,IAAEC,IAAE;AAAC,gBAAG,OAAKK,GAAE,mBAAmB,QAAQL,EAAC,MAAIE,KAAEQ,GAAE,UAAUV,EAAC,GAAEK,GAAE,IAAI,MAAM,IAAIH,EAAC,GAAE,WAASE,GAAE,EAAE,OAAO,KAAK,WAAU;AAAC,kBAAIH,KAAEI,GAAE,IAAI,MAAM,SAAS,EAAE,CAAC;AAAE,cAAAJ,GAAE,OAAO,GAAEI,GAAE,IAAI,MAAM,IAAIJ,EAAC;AAAA,YAAC;AAAA,UAAC,CAAE;AAAA,QAAG,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA/ygI,UAAizgIuD,MAAG,WAAU;AAAC,iBAASvD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAE,IAAIqB,GAAE,KAAK,GAAG,GAAEpB,KAAE,IAAImB,GAAE,KAAK,GAAG,GAAElB,KAAEH,GAAE,OAAO,MAAM,WAAW,KAAK,UAASK,KAAEL,GAAE,OAAO,MAAM,WAAW,YAAWM,KAAEN,GAAE,OAAO,MAAM,WAAW,KAAK,MAAKQ,KAAEL,GAAE,WAAUM,KAAEN,GAAE,SAAQQ,KAAER,GAAE,aAAYS,KAAET,GAAE,WAAUO,KAAEP,GAAE,OAAMW,KAAET,GAAE,SAAQU,KAAEV,GAAE,MAAKQ,KAAER,GAAE,KAAIW,KAAEX,GAAE,MAAKY,KAAEZ,GAAE,OAAMD,KAAEC,GAAE,SAAQa,KAAElB,GAAE,OAAO,MAAM,WAAW,KAAK;AAAM,cAAGA,GAAE,OAAO,MAAM,WAAW,MAAK;AAAC,2BAAaM,OAAIY,KAAEjB,GAAE,aAAa,YAAWO,IAAEC,IAAEE,IAAEC,IAAE,MAAKF,IAAE,IAAI;AAAG,gBAAIH,KAAEN,GAAE,SAAS;AAAE,kBAAID,GAAE,OAAO,MAAM,WAAW,UAAQO,KAAEN,GAAE,SAAS;AAAG,gBAAImB,KAAEpB,GAAE,QAAQ;AAAW,aAAC,CAACmB,GAAE,SAASC,EAAC,KAAGA,KAAE,OAAKA,KAAE;AAAG,gBAAIG,KAAEvB,GAAE,OAAO,MAAM,WAAW;AAAM,aAAC,CAACmB,GAAE,SAASI,EAAC,KAAGA,KAAE,OAAKA,KAAE,IAAGhB,GAAE,KAAK,EAAC,OAAM,0BAAyB,GAAE,GAAE,GAAE,GAAE,IAAGa,IAAE,OAAMG,IAAE,QAAOH,IAAE,MAAKF,IAAE,QAAO,QAAO,gBAAelB,GAAE,OAAO,MAAM,WAAW,SAAQ,QAAOA,GAAE,OAAO,MAAM,WAAW,OAAO,OAAM,gBAAeA,GAAE,OAAO,MAAM,WAAW,OAAO,OAAM,oBAAmBA,GAAE,OAAO,MAAM,WAAW,OAAO,UAAS,CAAC,GAAEc,OAAIP,KAAEL,GAAE,WAAWK,IAAE,EAAC,MAAKQ,IAAE,KAAIF,IAAE,MAAKG,IAAE,OAAMC,IAAE,SAAQb,GAAC,CAAC,IAAGJ,GAAE,QAAQ,IAAI,YAAY,IAAIO,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,cAAIP,KAAE,KAAK,GAAEC,KAAE,IAAIqB,GAAE,KAAK,GAAG,GAAEpB,KAAEF,GAAE,OAAO,MAAM,CAAC,EAAE,YAAWG,KAAEH,GAAE,QAAQ;AAAqB,cAAGA,GAAE,OAAO,MAAM,CAAC,EAAE,WAAW,MAAK;AAAC,gBAAIK,KAAEJ,GAAE,SAAS,CAACE,IAAE,GAAEH,GAAE,QAAQ,YAAUG,IAAE,GAAED,GAAE,OAAO,OAAMA,GAAE,OAAO,WAAUA,GAAE,OAAO,KAAK;AAAE,YAAAG,GAAE,KAAK,EAAC,OAAM,yBAAwB,CAAC,GAAEL,GAAE,QAAQ,IAAI,YAAY,IAAIK,EAAC;AAAA,UAAC;AAAC,cAAIC,KAAEL,GAAE,SAAS,CAACE,IAAE,GAAEH,GAAE,QAAQ,YAAUG,IAAE,GAAED,GAAE,OAAO,OAAM,GAAE,CAAC;AAAE,UAAAI,GAAE,KAAK,EAAC,OAAM,gCAA+B,CAAC,GAAEN,GAAE,QAAQ,IAAI,YAAY,IAAIM,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEN;AAAA,MAAC,EAAE;AAA35jI,UAA65jIwD,MAAG,WAAU;AAAC,iBAASxD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,yBAAwB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAED,GAAE;AAAO,cAAG,MAAIC,GAAE,WAAW,QAAO;AAAC,gBAAIE,KAAEF,GAAE,WAAW,MAAM;AAAE,YAAAE,GAAE,KAAM,SAASL,IAAEC,IAAE;AAAC,qBAAOD,GAAE,aAAWC,GAAE,aAAW,IAAEA,GAAE,aAAWD,GAAE,aAAW,KAAG;AAAA,YAAC,CAAE,EAAE,QAAQ;AAAE,gBAAIM,KAAE,IAAI+B,GAAE,CAAC,CAAC,GAAE7B,KAAE,WAAU;AAAC,kBAAIR,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEG,KAAEE,GAAE,CAAC,EAAE,YAAWG,KAAE,OAAO,aAAW,IAAE,OAAO,aAAW,OAAO;AAAM,kBAAGA,KAAEL,IAAE;AAAC,oBAAIM,KAAEU,GAAE,MAAMjB,GAAE,QAAQ,aAAa;AAAE,gBAAAO,GAAE,SAAOU,GAAE,MAAMjB,GAAE,OAAO,MAAM;AAAE,oBAAIS,KAAEY,GAAE,iBAAiBjB,IAAEG,IAAEP,EAAC;AAAE,gBAAAF,KAAEmB,GAAE,OAAOR,IAAEX,EAAC,GAAEA,KAAEmB,GAAE,OAAOjB,GAAE,QAAOF,EAAC,GAAEC,GAAE,0BAA0BD,EAAC;AAAA,cAAC,MAAM,UAAQY,KAAE,GAAEA,KAAEP,GAAE,QAAOO,KAAI,CAAAJ,KAAEH,GAAEO,EAAC,EAAE,eAAaZ,KAAEuB,GAAE,iBAAiBjB,IAAED,GAAEO,EAAC,EAAE,SAAQV,EAAC,GAAEF,KAAEmB,GAAE,OAAOjB,GAAE,QAAOF,EAAC,GAAEC,GAAE,0BAA0BD,EAAC;AAAA,YAAE;AAAE,gBAAGA,IAAE;AAAC,kBAAIS,KAAEc,GAAE,iBAAiBjB,IAAEN,IAAEE,EAAC;AAAE,cAAAO,KAAEU,GAAE,OAAOjB,GAAE,QAAOO,EAAC,GAAED,GAAEC,KAAEU,GAAE,OAAOV,IAAET,EAAC,CAAC;AAAA,YAAC,MAAM,CAAAQ,GAAE,CAAC,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASR,IAAE;AAAC,cAAIC,KAAE,IAAIoC,GAAErC,EAAC,EAAE,KAAK,EAAC,oBAAmB,KAAE,CAAC;AAAE,eAAK,EAAE,SAAOC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAl5lI,UAAo5lIyD,MAAG,WAAU;AAAC,iBAASzD,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,SAAO,CAAC,GAAE,KAAK,YAAU,OAAG,KAAK,uBAAqB,KAAK,wBAAwB,GAAE,KAAK,mBAAiB,KAAK,oBAAoB;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE,QAAOC,KAAED,GAAE,OAAME,KAAEF,GAAE;AAAY,iBAAM,cAAYC,GAAE,QAAMC,GAAE,WAASA,GAAE,QAAQ,eAAa,cAAYD,GAAE,QAAMC,GAAE,WAASA,GAAE,QAAQ;AAAA,QAAW,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,EAAE,QAAOC,KAAED,GAAE,OAAME,KAAEF,GAAE;AAAY,iBAAOE,GAAE,OAAKA,GAAE,IAAI,gBAAc,UAAQD,GAAE,QAAM,eAAaA,GAAE;AAAA,QAAK,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAK,iBAAiB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK,GAAEC,KAAE,IAAIkB;AAAE,UAAAnB,GAAE,QAAQ,IAAI,OAAO,UAAU,IAAI,oBAAoB,OAAOA,GAAE,OAAO,MAAM,IAAI,CAAC;AAAE,cAAIE,KAAEe,GAAEjB,GAAE,OAAO,UAAQA,GAAE,OAAO,KAAK,UAAQ,CAAC,CAAC;AAAE,UAAAA,GAAE,QAAQ,SAAO,KAAK,UAAUE,EAAC,GAAE,KAAK,kBAAkBF,GAAE,QAAQ,cAAaA,GAAE,QAAQ,MAAM,GAAEA,GAAE,OAAO,MAAM,WAAW,YAAUA,GAAE,QAAQ,SAAO,KAAK,oBAAoBA,GAAE,OAAO,MAAM,YAAWA,GAAE,QAAQ,QAAOC,EAAC;AAAG,cAAIE,KAAEH,GAAE,QAAQ,OAAO,MAAM;AAAE,eAAK,gBAAgBA,GAAE,QAAQ,MAAM,GAAE,KAAK,gBAAgB,CAAC,QAAO,QAAQ,GAAEG,EAAC,GAAE,KAAK,sBAAsBA,EAAC,GAAE,KAAK,yBAAyB,GAAE,KAAK,mBAAmBA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,iBAAOF,MAAG,MAAIA,GAAE,SAAO,MAAM,QAAQA,EAAC,KAAGA,GAAE,SAAO,KAAG,cAAY,OAAOA,GAAE,CAAC,KAAG,KAAK,YAAU,MAAGE,GAAE,OAAO,OAAO,IAAK,SAASC,IAAEE,IAAE;AAAC,gBAAIC,KAAEN,GAAEK,EAAC,KAAGL,GAAE,CAAC;AAAE,mBAAM,cAAY,OAAOM,KAAEA,GAAE,EAAC,OAAMJ,GAAE,QAAQ,aAAWA,GAAE,QAAQ,OAAOG,EAAC,EAAE,CAAC,KAAG,IAAEH,GAAE,QAAQ,OAAOG,EAAC,GAAE,aAAYA,IAAE,gBAAeA,IAAE,GAAEJ,GAAE,EAAC,CAAC,IAAEK;AAAA,UAAC,CAAE,KAAGN,KAAE,KAAK,WAAW;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAEC,IAAE;AAAC,UAAAD,GAAE,QAAS,SAASA,IAAEE,IAAE;AAAC,YAAAF,OAAIC,GAAEC,EAAC,IAAEF;AAAA,UAAE,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAEH,GAAE,OAAMK,KAAEL,GAAE,gBAAeM,KAAEN,GAAE,SAAQQ,KAAE,KAAK,oBAAkB,KAAK,uBAAqBP,GAAE,CAAC,EAAE,SAAOA,GAAE,SAAOA,GAAE,QAAOQ,KAAE,KAAGD,KAAEH,KAAGM,KAAE;AAAE,iBAAO,MAAM,KAAK,EAAC,QAAOH,GAAC,GAAG,WAAU;AAAC,gBAAIR,KAAE,WAASM,KAAEJ,GAAE,WAAW,KAAGS,IAAER,EAAC,IAAED,GAAE,WAAWS,IAAER,EAAC;AAAE,mBAAOQ,MAAGF,IAAET;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,UAAAH,GAAE,QAAS,SAASA,IAAE;AAAC,YAAAG,GAAE,QAAQH,EAAC,EAAE,SAAO,WAASG,GAAE,OAAOH,EAAC,EAAE,SAAOE,GAAE,YAAUC,GAAE,OAAO,SAAOF,KAAEE,GAAE,OAAOH,EAAC,EAAE,OAAO,MAAM,GAAEE,GAAE,gBAAgBC,GAAE,QAAQH,EAAC,EAAE,MAAM;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,WAAW,MAAM,SAAO,WAASA,GAAE,OAAO,WAAW,MAAM,SAAOD,KAAEC,GAAE,OAAO,WAAW,MAAM,OAAO,MAAM,GAAE,KAAK,gBAAgBA,GAAE,QAAQ,WAAW,MAAM,QAAO,EAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,cAAc,KAAK,SAAO,WAASA,GAAE,OAAO,YAAY,MAAM,SAAS,KAAK,SAAO,CAAC,WAASA,GAAE,OAAO,MAAM,OAAK,YAAU,MAAM,IAAEA,GAAE,OAAO,YAAY,MAAM,SAAS,KAAK,OAAO,MAAM,GAAE,KAAK,gBAAgBA,GAAE,QAAQ,cAAc,KAAK,QAAO,EAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,QAAQ,SAAO,WAASA,GAAE,OAAO,QAAQ,SAAOD,KAAEC,GAAE,OAAO,QAAQ,OAAO,MAAM,GAAE,KAAK,gBAAgBA,GAAE,QAAQ,QAAQ,MAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,KAAK,GAAEE,KAAEJ,MAAGE,GAAE,QAAQ,OAAO;AAAO,cAAG,SAAOD,OAAIA,KAAE,KAAK,oBAAkB,KAAK,wBAAsB,cAAYC,GAAE,OAAO,MAAM,QAAMA,GAAE,OAAO,YAAY,WAASA,GAAE,OAAO,YAAY,QAAQ,WAAW,UAASD,MAAGC,GAAE,QAAQ,OAAO,WAASE,KAAEF,GAAE,QAAQ,OAAOA,GAAE,QAAQ,mBAAmB,EAAE,SAAOA,GAAE,QAAQ,OAAO,SAAQH,GAAE,SAAOK,GAAE,UAAQC,KAAED,KAAEL,GAAE,QAAOQ,KAAE,GAAEA,KAAEF,IAAEE,KAAI,CAAAR,GAAE,KAAKA,GAAEQ,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASR,IAAE;AAAC,UAAAA,GAAE,QAAMA,GAAE,SAAO,CAAC,GAAEA,GAAE,UAAQA,GAAE,WAAS,CAAC;AAAE,cAAIC,KAAED,GAAE,MAAM,MAAKE,KAAE,WAASD,KAAE,aAAW,YAAUA,KAAE,aAAWD,GAAE,MAAM,WAAS,YAAWG,KAAE,WAASF,KAAE,YAAU,YAAUA,KAAE,YAAUD,GAAE,MAAM,aAAW;AAAU,iBAAOA,GAAE,QAAQ,QAAMC,MAAG,SAAQD,GAAE,MAAM,YAAUG,IAAEH,GAAE,MAAM,UAAQE,IAAEF;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,cAAIA,KAAE,EAAC,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,UAAS,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,WAAU,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,GAAE,SAAQ,CAAC,WAAU,WAAU,WAAU,WAAU,SAAS,EAAC;AAAE,iBAAOA,GAAE,KAAK,EAAE,OAAO,MAAM,OAAO,KAAGA,GAAE;AAAA,QAAO,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAA/5uI,UAAi6uI0D,MAAG,WAAU;AAAC,iBAAS1D,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,eAAK,kBAAkB,OAAO,GAAE,KAAK,kBAAkB,UAAU;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,YAAUF,KAAEC,GAAE,OAAO,QAAMA,GAAE,OAAO,UAASE,KAAEF,GAAE,QAAQ,WAAS,GAAEI,KAAEH,GAAE,SAAQI,KAAE;AAAS,cAAG,WAASJ,GAAE,SAAOC,KAAE,IAAGG,KAAE,WAAS,YAAUJ,GAAE,UAAQC,KAAEF,GAAE,QAAQ,WAAS,IAAGK,KAAE,QAAOH,MAAGD,GAAE,SAAQG,KAAEA,KAAE,SAASH,GAAE,MAAM,UAAS,EAAE,IAAEA,GAAE,SAAO,GAAE,WAASA,GAAE,MAAK;AAAC,gBAAIM,KAAE,IAAIc,GAAE,KAAK,GAAG,EAAE,SAAS,EAAC,GAAEnB,IAAE,GAAEE,IAAE,MAAKH,GAAE,MAAK,YAAWI,IAAE,UAASJ,GAAE,MAAM,UAAS,YAAWA,GAAE,MAAM,YAAW,YAAWA,GAAE,MAAM,YAAW,WAAUA,GAAE,MAAM,OAAM,SAAQ,EAAC,CAAC;AAAE,YAAAM,GAAE,KAAK,aAAa,SAAQ,cAAc,OAAOR,IAAE,OAAO,CAAC,GAAEC,GAAE,QAAQ,IAAI,MAAM,IAAIO,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAER;AAAA,MAAC,EAAE;AAAhqwI,UAAkqwI2D,MAAG,WAAU;AAAC,iBAAS3D,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,OAAKA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,0BAAyB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,GAAEC,KAAE,GAAEE,KAAE,YAAUL,KAAEC,GAAE,OAAO,MAAM,WAASA,GAAE,OAAO,SAAS,UAASK,KAAEL,GAAE,QAAQ,IAAI,OAAO,cAAc,eAAe,OAAOD,IAAE,OAAO,CAAC;AAAE,cAAG,SAAOM,MAAG,CAACD,IAAE;AAAC,gBAAIG,KAAEF,GAAE,sBAAsB;AAAE,YAAAJ,KAAEM,GAAE,OAAML,KAAEF,GAAE,QAAQ,aAAWO,GAAE,SAAO,IAAEA,GAAE;AAAA,UAAM;AAAC,iBAAM,EAAC,OAAMN,IAAE,QAAOC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,cAAIH,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,IAAI;AAAa,UAAAA,GAAE,OAAO,OAAO,UAAQ,UAAQA,GAAE,OAAO,OAAO,YAAU,aAAWA,GAAE,OAAO,OAAO,aAAWC,GAAE,MAAM,YAAUD,GAAE,QAAQ,YAAU,IAAE;AAAM,cAAIE,KAAE,OAAO,OAAO,CAAC,GAAEiB,GAAE,sBAAsBlB,EAAC,CAAC;AAAE,iBAAO,SAAOA,MAAG,CAACD,GAAE,OAAO,OAAO,YAAUA,GAAE,OAAO,OAAO,OAAK,KAAK,KAAK,SAAO,EAAC,GAAEE,GAAE,GAAE,GAAEA,GAAE,GAAE,QAAOA,GAAE,QAAO,OAAM,MAAIA,GAAE,SAAO,IAAEA,GAAE,MAAK,IAAE,KAAK,KAAK,SAAO,EAAC,GAAE,GAAE,GAAE,GAAE,QAAO,GAAE,OAAM,EAAC,GAAE,WAASF,GAAE,OAAO,OAAO,YAAU,YAAUA,GAAE,OAAO,OAAO,YAAU,MAAI,KAAK,KAAK,OAAO,QAAMA,GAAE,QAAQ,aAAW,KAAK,KAAK,OAAO,QAAMA,GAAE,QAAQ,WAAS,MAAK,KAAK,KAAK;AAAA,QAAM,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,CAAC;AAAE,UAAAD,GAAE,OAAO,OAAO,QAAS,SAASI,IAAEC,IAAE;AAAC,YAAAD,GAAE,KAAK,QAAS,SAASA,IAAEG,IAAE;AAAC,kBAAIC;AAAE,cAAAA,KAAER,GAAE,QAAQ,OAAOK,EAAC,EAAEE,EAAC,GAAEL,KAAEF,GAAE,OAAO,WAAW,UAAUQ,IAAE,EAAC,KAAIT,GAAE,KAAK,KAAI,aAAYM,IAAE,gBAAeE,IAAE,GAAEP,GAAC,CAAC,GAAEC,GAAE,KAAKC,EAAC;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE;AAAE,cAAIA,KAAEgB,GAAE,wBAAwBjB,EAAC,GAAEG,KAAE,IAAIiB,GAAE,KAAK,KAAK,GAAG,GAAEhB,KAAEL,GAAE,OAAO,WAAW,OAAMO,KAAEH,GAAE,aAAaF,IAAE,SAASG,GAAE,QAAQ,GAAEA,GAAE,UAAU;AAAE,iBAAM,EAAC,OAAM,OAAKE,GAAE,OAAM,QAAOA,GAAE,OAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAASR,IAAEC,IAAE;AAAC,cAAIC,KAAEF;AAAE,cAAG,KAAK,EAAE,QAAQ,cAAa;AAAC,gBAAIG,KAAEF,GAAE,IAAK,SAASD,IAAEC,IAAE;AAAC,qBAAO,MAAM,QAAQD,EAAC,IAAEA,GAAE,SAAO;AAAA,YAAC,CAAE,GAAEK,KAAE,KAAK,IAAI,MAAM,MAAKY,GAAEd,EAAC,CAAC;AAAE,YAAAD,KAAED,GAAEE,GAAE,QAAQE,EAAC,CAAC;AAAA,UAAC;AAAC,iBAAOH;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAAn2zI,UAAq2zI4D,MAAG,WAAU;AAAC,iBAAS5D,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,OAAKA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIA,IAAEC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,OAAO,MAAM;AAAE,cAAGA,GAAE,OAAO,MAAM,yBAAuB,MAAIC,GAAE,WAASA,KAAED,GAAE,QAAQ,iBAAgBA,GAAE,QAAQ,gBAAgB,SAAO,GAAE;AAAC,gBAAIE,KAAE,KAAK,8BAA8B;AAAE,YAAAH,KAAE,EAAC,OAAMG,GAAE,OAAM,QAAOA,GAAE,OAAM,GAAEF,GAAE,QAAQ,gBAAc;AAAA,UAAE,OAAK;AAAC,iBAAK,KAAK,wBAAsB,WAASA,GAAE,OAAO,OAAO,YAAU,YAAUA,GAAE,OAAO,OAAO,YAAUA,GAAE,OAAO,OAAO,WAAS,IAAE,KAAK,KAAK,OAAO;AAAM,gBAAII,KAAEJ,GAAE,QAAQ,iBAAgBK,KAAEa,GAAE,wBAAwBjB,EAAC,GAAEM,KAAE,KAAK,KAAK,WAAW,6BAA6BF,IAAEJ,EAAC;AAAE,YAAAD,GAAE,QAAQ,oBAAkBO,KAAEF,KAAEL,GAAE,QAAQ,WAAW,CAAC,EAAE,OAAO,OAAQ,SAASD,IAAEC,IAAE;AAAC,qBAAOD,GAAE,SAAOC,GAAE,SAAOD,KAAEC;AAAA,YAAC,GAAG,CAAC;AAAG,gBAAIQ,KAAE,IAAIkB,GAAE,KAAK,KAAK,GAAG,GAAEhB,KAAEL;AAAE,YAAAA,KAAEG,GAAE,aAAaJ,IAAEC,IAAEK,IAAE,EAAC,GAAE,QAAO,eAAc,IAAIe,GAAE,KAAK,KAAK,GAAG,EAAE,YAAW,GAAEzB,GAAC,CAAC,GAAEO,KAAEC,GAAE,aAAaJ,IAAEG,IAAEG,IAAE,EAAC,GAAE,QAAO,eAAc,IAAIe,GAAE,KAAK,KAAK,GAAG,EAAE,YAAW,GAAEzB,GAAC,CAAC,IAAGA,GAAE,OAAO,MAAM,yBAAuB,WAASK,MAAG,OAAK,OAAOA,EAAC,EAAE,KAAK,OAAKE,KAAEF,KAAE;AAAK,gBAAIM,KAAE,IAAIU,GAAE,KAAK,KAAK,GAAG,GAAEZ,KAAEE,GAAE,aAAaN,IAAEL,GAAE,OAAO,MAAM,OAAO,MAAM,QAAQ,GAAEa,KAAEJ;AAAE,gBAAGJ,OAAIE,OAAIM,KAAEF,GAAE,aAAaJ,IAAEP,GAAE,OAAO,MAAM,OAAO,MAAM,QAAQ,KAAID,KAAE,EAAC,OAAMU,GAAE,SAAOI,GAAE,QAAMJ,GAAE,QAAMI,GAAE,OAAM,QAAOJ,GAAE,UAAQI,GAAE,SAAOJ,GAAE,SAAOI,GAAE,OAAM,GAAG,QAAMZ,GAAE,SAAOD,GAAE,QAAQ,WAAS,KAAK,KAAK,wBAAsB,KAAK,KAAK,aAAW,KAAK,KAAK,QAAQ,OAAK,KAAK,KAAK,QAAQ,SAAO,MAAIA,GAAE,OAAO,MAAM,OAAO,UAAQA,GAAE,OAAO,MAAM,OAAO,cAAa;AAAC,kBAAG,CAACA,GAAE,QAAQ,iBAAgB;AAAC,gBAAAA,GAAE,QAAQ,gBAAc;AAAG,oBAAIc,KAAE,SAASf,IAAE;AAAC,yBAAOY,GAAE,aAAaZ,IAAEC,GAAE,OAAO,MAAM,OAAO,MAAM,UAASA,GAAE,OAAO,MAAM,OAAO,MAAM,YAAW,UAAU,OAAOA,GAAE,OAAO,MAAM,OAAO,QAAO,OAAO,GAAE,KAAE;AAAA,gBAAC;AAAE,gBAAAS,KAAEK,GAAET,EAAC,GAAEA,OAAIE,OAAIM,KAAEC,GAAEP,EAAC,IAAGR,GAAE,UAAQU,GAAE,SAAOI,GAAE,SAAOJ,GAAE,SAAOI,GAAE,UAAQ,KAAId,GAAE,QAAMU,GAAE,QAAMI,GAAE,QAAMJ,GAAE,QAAMI,GAAE;AAAA,cAAK;AAAA,YAAC,MAAM,CAAAb,GAAE,QAAQ,gBAAc;AAAA,UAAE;AAAC,iBAAOA,GAAE,OAAO,MAAM,OAAO,SAAOD,KAAE,EAAC,OAAM,GAAE,QAAO,EAAC,IAAG,EAAC,OAAMA,GAAE,OAAM,QAAOA,GAAE,OAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,WAAU;AAAC,cAAIA,IAAEC,KAAE,KAAK;AAAE,cAAG,CAACA,GAAE,QAAQ,eAAe,QAAM,EAAC,OAAM,GAAE,QAAO,EAAC;AAAE,cAAIC,IAAEC,MAAG,UAAQH,KAAEC,GAAE,OAAO,MAAM,MAAM,UAAQ,WAASD,KAAE,SAAOA,GAAE,aAAWC,GAAE,OAAO,MAAM,OAAO,MAAM,UAASI,KAAEJ,GAAE,QAAQ,OAAO,IAAK,SAASD,IAAE;AAAC,mBAAOA,GAAE;AAAA,UAAK,CAAE,GAAEM,KAAEa,GAAE,wBAAwBd,EAAC,GAAEG,KAAE,KAAK,KAAK,WAAW,6BAA6BF,IAAED,EAAC,GAAEI,KAAE,IAAIa,GAAE,KAAK,KAAK,GAAG,GAAEX,KAAEF,GAAE,aAAaH,IAAEH,EAAC,GAAES,KAAED;AAAE,iBAAOL,OAAIE,OAAII,KAAEH,GAAE,aAAaD,IAAEL,EAAC,IAAGD,KAAE,EAAC,OAAMS,GAAE,SAAOC,GAAE,QAAMD,GAAE,QAAMC,GAAE,OAAM,QAAOD,GAAE,UAAQC,GAAE,SAAOD,GAAE,SAAOC,GAAE,OAAM,GAAEX,GAAE,OAAO,MAAM,OAAO,SAAOC,KAAE,EAAC,OAAM,GAAE,QAAO,EAAC,IAAG,EAAC,OAAMA,GAAE,OAAM,QAAOA,GAAE,OAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,GAAEC,KAAE,GAAEC,KAAE;AAAE,cAAG,WAASF,GAAE,OAAO,MAAM,MAAM,MAAK;AAAC,gBAAIG,KAAE,IAAImB,GAAE,KAAK,KAAK,GAAG,EAAE,aAAatB,GAAE,OAAO,MAAM,MAAM,MAAKA,GAAE,OAAO,MAAM,MAAM,MAAM,QAAQ;AAAE,YAAAC,KAAEE,GAAE,OAAMD,KAAEC,GAAE;AAAA,UAAM;AAAC,iBAAM,EAAC,OAAMF,IAAE,QAAOC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iCAAgC,OAAM,WAAU;AAAC,cAAIF,IAAEC,KAAE,KAAK;AAAE,eAAK,KAAK,kBAAgBA,GAAE,QAAQ,gBAAgB,MAAM;AAAE,cAAIC,KAAE,KAAK,KAAK,gBAAgB,IAAK,SAASF,IAAE;AAAC,mBAAOA,GAAE;AAAA,UAAK,CAAE,GAAEG,KAAED,GAAE,OAAQ,SAASF,IAAEC,IAAE;AAAC,mBAAO,WAASD,MAAG,QAAQ,MAAM,uFAAuF,GAAE,KAAGA,GAAE,SAAOC,GAAE,SAAOD,KAAEC;AAAA,UAAC,GAAG,CAAC;AAAE,iBAAO,QAAMD,KAAE,IAAIsB,GAAE,KAAK,KAAK,GAAG,EAAE,aAAanB,IAAEF,GAAE,OAAO,MAAM,OAAO,MAAM,QAAQ,GAAG,QAAMC,GAAE,SAAOD,GAAE,QAAQ,aAAW,MAAIA,GAAE,OAAO,MAAM,OAAO,WAASA,GAAE,QAAQ,qBAAmB,OAAID;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQG,KAAEH,GAAE,QAAOI,KAAED,GAAE,MAAM,MAAKG,KAAER,GAAE;AAAM,UAAAG,GAAE,wBAAsB,OAAGA,GAAE,yBAAuB;AAAG,cAAIM,KAAEP,GAAE,OAAO,MAAM,CAAC,EAAE,YAAUA,GAAE,QAAQ,iBAAgBS,KAAE,SAASX,IAAES,IAAE;AAAC,YAAAJ,GAAE,MAAM,SAAO,KAAG,SAASL,IAAE;AAAC,qBAAM,OAAKG,GAAE,uBAAuB,QAAQH,EAAC;AAAA,YAAC,EAAES,EAAC,KAAG,SAAST,IAAE;AAAC,kBAAGC,GAAE,KAAK,mBAAiBA,GAAE,KAAK,gBAAgB,QAAO;AAAC,oBAAIQ,KAAER,GAAE,KAAK,gBAAgB,CAAC,GAAEU,KAAEV,GAAE,KAAK,gBAAgBA,GAAE,KAAK,gBAAgB,SAAO,CAAC,EAAE,WAASO,KAAE,OAAKP,GAAE,KAAK,iBAAgBW,KAAEH,GAAE,WAASD,KAAE,OAAKP,GAAE,KAAK,gBAAeS,KAAE,YAAUR,GAAE,OAAO,OAAO,YAAUD,GAAE,KAAK,OAAO,QAAM,IAAEA,GAAE,KAAK,OAAO,QAAM;AAAE,gBAAAU,KAAER,GAAE,WAASA,GAAE,aAAWO,OAAIP,GAAE,wBAAsB,OAAIS,KAAE,EAAEZ,GAAE,QAAM,CAACA,GAAE,YAAU,UAAQK,GAAE,MAAM,QAAM,kBAAgBA,GAAE,MAAM,QAAM,eAAaA,GAAE,MAAM,QAAM,cAAYA,GAAE,MAAM,OAAK,KAAGG,KAAE,UAAQL,GAAE,yBAAuB;AAAA,cAAG,MAAK,gBAAaG,KAAEL,GAAE,KAAK,QAAQ,QAAMO,MAAG,CAACL,GAAE,kBAAgBA,GAAE,wBAAsB,QAAI,eAAaG,MAAGL,GAAE,KAAK,QAAQ,QAAMO,KAAE,IAAEP,GAAE,KAAK,mBAAiB,CAACE,GAAE,iBAAe,CAACD,GAAE,OAAO,MAAM,OAAO,SAAOD,GAAE,KAAK,YAAUO,KAAE,IAAE;AAAA,YAAE,EAAER,EAAC;AAAA,UAAC;AAAE,UAAAK,GAAE,MAAM,QAAS,SAASL,IAAEE,IAAE;AAAC,YAAAO,MAAGR,GAAE,KAAK,QAAQ,OAAKO,OAAIP,GAAE,KAAK,WAASO,KAAE,IAAE,IAAGP,GAAE,KAAK,YAAUO,KAAE,IAAE,KAAGG,GAAEX,IAAEE,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA378I,UAA678I6D,MAAG,WAAU;AAAC,iBAAS7D,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,OAAKA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,CAAC,GAAEC,KAAE,IAAGE,KAAE,IAAIuB,GAAE,KAAK,KAAK,GAAG;AAAE,iBAAO3B,GAAE,OAAO,MAAM,IAAK,SAASK,IAAEE,IAAE;AAAC,gBAAIC,KAAE,EAAC,aAAYD,IAAE,gBAAe,IAAG,GAAEP,GAAC,GAAEU,KAAEV,GAAE,QAAQ,WAAWO,EAAC,GAAEI,KAAE;AAAE,gBAAG,CAACP,GAAE,cAAcG,EAAC,KAAGF,GAAE,OAAO,QAAM,WAASA,GAAE,OAAO,aAAWM,KAAEN,GAAE,OAAO,WAAU,CAACD,GAAE,cAAcG,EAAC,KAAGF,GAAE,OAAO,QAAMK,GAAE,OAAO,QAAO;AAAC,kBAAID,KAAET,GAAE,QAAQ,iBAAiBO,EAAC,GAAEM,KAAEH,GAAE,YAAU,OAAO,YAAU,IAAEA,GAAE,SAAQI,KAAEJ,GAAE,OAAO,OAAQ,SAASX,IAAEC,IAAE;AAAC,oBAAIC,IAAEC;AAAE,wBAAO,UAAQD,KAAE,OAAOQ,GAAEV,IAAES,EAAC,CAAC,MAAI,WAASP,KAAE,SAAOA,GAAE,WAAS,UAAQC,KAAE,OAAOO,GAAET,IAAEQ,EAAC,CAAC,MAAI,WAASN,KAAE,SAAOA,GAAE,UAAQH,KAAEC;AAAA,cAAC,GAAGa,EAAC,GAAED,KAAEE,KAAEL,GAAEK,IAAEN,EAAC;AAAE,kBAAG,WAASM,MAAG,MAAIA,GAAE,WAASA,KAAEJ,GAAE,UAASV,GAAE,QAAQ,iBAAgB;AAAC,gBAAAE,KAAE;AAAE,oBAAIa,KAAEf,GAAE,QAAQ,OAAO,MAAM;AAAE,gBAAAc,KAAEI,GAAE,wBAAwBH,EAAC,GAAED,KAAEL,GAAEK,IAAE,EAAC,aAAYP,IAAE,gBAAe,IAAG,GAAEP,GAAC,CAAC,GAAEY,KAAEb,GAAE,KAAK,WAAW,6BAA6Be,IAAEC,EAAC;AAAA,cAAC;AAAC,kBAAIC,KAAE,IAAIK,GAAEtB,GAAE,KAAK,GAAG,GAAEI,KAAE,UAAU,OAAOE,GAAE,OAAO,QAAO,OAAO,GAAEY,KAAED,GAAE,aAAaF,IAAET,GAAE,OAAO,MAAM,UAASA,GAAE,OAAO,MAAM,YAAWF,IAAE,KAAE,GAAEG,KAAEW;AAAE,cAAAH,OAAIF,OAAIN,KAAEU,GAAE,aAAaJ,IAAEP,GAAE,OAAO,MAAM,UAASA,GAAE,OAAO,MAAM,YAAWF,IAAE,KAAE,IAAGF,GAAE,KAAK,EAAC,QAAOU,KAAEL,GAAE,SAAOK,KAAEM,GAAE,QAAMN,KAAEL,GAAE,QAAMW,GAAE,QAAMX,GAAE,QAAMW,GAAE,SAAOf,IAAE,QAAOI,GAAE,SAAOW,GAAE,SAAOX,GAAE,SAAOW,GAAE,OAAM,CAAC;AAAA,YAAC,MAAM,CAAAhB,GAAE,KAAK,EAAC,OAAM,GAAE,QAAO,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIF,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,CAAC;AAAE,iBAAOD,GAAE,OAAO,MAAM,IAAK,SAASA,IAAEE,IAAE;AAAC,gBAAGF,GAAE,QAAM,WAASA,GAAE,MAAM,MAAK;AAAC,kBAAII,KAAE,IAAIiB,GAAEtB,GAAE,KAAK,GAAG,GAAEM,KAAE,UAAU,OAAOL,GAAE,MAAM,QAAO,OAAO,GAAEO,KAAEH,GAAE,aAAaJ,GAAE,MAAM,MAAKA,GAAE,MAAM,MAAM,UAASA,GAAE,MAAM,MAAM,YAAWK,IAAE,KAAE;AAAE,cAAAJ,GAAE,KAAK,EAAC,OAAMM,GAAE,OAAM,QAAOA,GAAE,OAAM,CAAC;AAAA,YAAC,MAAM,CAAAN,GAAE,KAAK,EAAC,OAAM,GAAE,QAAO,EAAC,CAAC;AAAA,UAAC,CAAE,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEE,KAAEL,GAAE,QAAQ,WAAW,SAAO,IAAE,KAAG,GAAEM,KAAE,IAAIsB,GAAE,KAAK,KAAK,GAAG,GAAEpB,KAAE,SAASA,IAAEC,IAAE;AAAC,gBAAIE,KAAEX,GAAE,OAAO,MAAMS,EAAC,EAAE,UAASG,KAAE;AAAE,YAAAJ,GAAE,QAAM,KAAG,CAACG,MAAGC,KAAEJ,GAAE,QAAMH,IAAE,SAASJ,IAAE;AAAC,qBAAOD,GAAE,QAAQ,mBAAmB,QAAQC,EAAC,IAAE;AAAA,YAAE,EAAEQ,EAAC,MAAIG,KAAEA,KAAEJ,GAAE,QAAMH,OAAIO,KAAED,MAAGL,GAAE,cAAcG,EAAC,IAAE,IAAE,GAAET,GAAE,OAAO,MAAMS,EAAC,EAAE,WAASN,MAAGS,KAAEV,MAAGU,IAAEX,MAAGW;AAAA,UAAC;AAAE,iBAAOZ,GAAE,QAAQ,cAAc,IAAK,SAASA,IAAEC,IAAE;AAAC,YAAAO,GAAER,IAAEC,EAAC;AAAA,UAAC,CAAE,GAAED,GAAE,QAAQ,aAAa,IAAK,SAASA,IAAEC,IAAE;AAAC,YAAAO,GAAER,IAAEC,EAAC;AAAA,UAAC,CAAE,GAAED,GAAE,QAAQ,mBAAiB,CAACA,GAAE,OAAO,MAAM,CAAC,EAAE,aAAWC,KAAED,GAAE,QAAQ,cAAc,CAAC,EAAE,QAAMA,GAAE,QAAQ,aAAa,CAAC,EAAE,QAAM,KAAI,KAAK,KAAK,iBAAeE,IAAE,KAAK,KAAK,kBAAgBC,IAAEF;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAA3uhJ,UAA6uhJ8D,MAAG,WAAU;AAAC,iBAAS9D,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,OAAKA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,kCAAiC,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAOE,KAAEF,GAAE;AAAQ,cAAGE,GAAE,UAAQA,GAAE,gBAAgB,SAAOA,GAAE,yBAAyB,WAASD,GAAE,OAAO,OAAO,QAAO;AAAE,cAAIG,KAAE,SAASL,IAAE;AAAC,mBAAM,CAAC,OAAM,YAAW,eAAc,SAAS,EAAE,SAASA,EAAC;AAAA,UAAC,GAAEM,KAAEJ,GAAE,MAAM,MAAKM,KAAE,GAAEC,KAAEJ,GAAEC,EAAC,IAAEJ,GAAE,OAAO,SAAO;AAAE,UAAAC,GAAE,gBAAc,MAAIM,KAAEN,GAAE,gBAAeA,GAAE,gBAAgB,QAAS,SAASH,IAAE;AAAC,YAAAK,GAAEL,GAAE,IAAI,MAAIS,MAAG;AAAA,UAAE,CAAE,GAAEP,GAAE,MAAM,YAAUO,KAAE;AAAG,cAAIE,KAAEN,GAAEC,EAAC,KAAGH,GAAE,gBAAc,GAAES,KAAE,KAAK,IAAIT,GAAE,cAAYA,GAAE,WAAW;AAAE,cAAGQ,MAAGR,GAAE,cAAY,CAACA,GAAE,mBAAiBM,KAAE,KAAG,MAAIG,IAAE;AAAC,YAAAA,MAAG,MAAIA,KAAET,GAAE;AAAY,gBAAIO,KAAEE,KAAEZ,IAAEc,KAAEX,GAAE,YAAUA,GAAE,WAASO,KAAE,IAAEP,GAAE,WAASO,KAAE;AAAE,YAAAI,KAAEd,KAAE,MAAIc,MAAG,KAAIN,KAAEM,KAAE,SAASZ,GAAE,YAAY,IAAI,aAAY,EAAE,IAAE,OAAK,MAAIM,KAAE,IAAGL,GAAE,uBAAqBK;AAAA,UAAC;AAAC,iBAAOA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,cAAIR,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAE,KAAK,KAAK,eAAa,CAACD,GAAE,aAAW,IAAE;AAAG,WAAC,SAAQ,UAAU,EAAE,QAAS,SAASG,IAAE;AAAC,uBAASJ,GAAE,OAAOI,EAAC,EAAE,OAAKF,MAAGF,GAAE,OAAOI,EAAC,EAAE,SAAOF,MAAGH,GAAE,KAAK,eAAa,CAACE,GAAE,aAAW,IAAE;AAAA,UAAC,CAAE,GAAE,CAACD,GAAE,OAAO,OAAO,QAAM,aAAWA,GAAE,OAAO,OAAO,YAAUA,GAAE,OAAO,OAAO,YAAUC,GAAE,eAAaC,MAAG;AAAI,cAAIE,KAAE,KAAK,KAAK,WAAW,uBAAuB,OAAO,GAAEC,KAAE,KAAK,KAAK,WAAW,uBAAuB,UAAU;AAAE,UAAAJ,GAAE,cAAYG,GAAE,SAAOC,GAAE,SAAOH,IAAED,GAAE,cAAYG,GAAE,SAAOC,GAAE,SAAOH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIyB,GAAE,KAAK,KAAK,GAAG;AAAE,UAAA1B,GAAE,OAAO,MAAM,QAAS,SAASG,IAAEC,IAAE;AAAC,mBAAKJ,GAAE,QAAQ,mBAAmB,QAAQI,EAAC,KAAGD,GAAE,YAAUF,GAAE,cAAcG,EAAC,MAAID,GAAE,aAAWH,GAAE,QAAQ,cAAYD,GAAEK,EAAC,EAAE,QAAMN,GAAEM,EAAC,EAAE,QAAM,SAASD,GAAE,OAAO,MAAM,UAAS,EAAE,IAAE,MAAI,KAAIH,GAAE,QAAQ,aAAW,MAAIA,GAAE,QAAQ,aAAW;AAAA,UAAG,CAAE;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAAz7kJ,UAA27kJ+D,MAAG,WAAU;AAAC,iBAAS/D,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,SAAO,CAAC,GAAE,KAAK,aAAW,GAAE,KAAK,iBAAe,GAAE,KAAK,kBAAgB,GAAE,KAAK,cAAY,GAAE,KAAK,cAAY,KAAK,EAAE,OAAO,MAAM,UAAU,SAAQ,KAAK,aAAW,IAAI0D,IAAG,IAAI,GAAE,KAAK,WAAS,IAAIE,IAAG,IAAI,GAAE,KAAK,WAAS,IAAID,IAAG,IAAI,GAAE,KAAK,UAAQ,IAAIE,IAAG,IAAI,GAAE,KAAK,wBAAsB,GAAE,KAAK,UAAQ,KAAK,EAAE,OAAO,KAAK,SAAQ,KAAK,YAAU,GAAE,KAAK,WAAS;AAAA,QAAC;AAAC,eAAOzD,GAAEL,IAAE,CAAC,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAED,GAAE;AAAQ,eAAK,SAAO,KAAK,WAAW,eAAe,GAAE,KAAK,mBAAiB,EAAC,OAAM,GAAE,QAAO,EAAC;AAAE,cAAIE,KAAE,MAAM,QAAQF,GAAE,OAAO,OAAO,KAAK,IAAE,KAAK,IAAI,MAAM,MAAKgB,GAAEhB,GAAE,OAAO,OAAO,KAAK,CAAC,IAAEA,GAAE,OAAO,OAAO;AAAM,eAAK,iBAAeA,GAAE,OAAO,QAAQ,SAAS,SAAO,KAAGA,GAAE,OAAO,QAAQ,OAAK,MAAI,OAAO,QAAQ,KAAK,OAAO,EAAE,QAAS,SAASA,IAAE;AAAC,gBAAIC,KAAEc,GAAEf,IAAE,CAAC,GAAEE,KAAED,GAAE,CAAC,GAAEG,KAAEH,GAAE,CAAC;AAAE,YAAAF,GAAE,QAAQG,EAAC,IAAE,KAAK,IAAIE,IAAEL,GAAE,EAAE,QAAQ,QAAQ,cAAY,GAAG;AAAA,UAAC,CAAE,GAAE,KAAK,QAAQ,MAAI,KAAK,IAAIG,KAAE,GAAE,KAAK,QAAQ,GAAG,GAAE,KAAK,QAAQ,SAAO,KAAK,IAAIA,KAAE,GAAE,KAAK,QAAQ,MAAM,IAAGD,GAAE,aAAW,KAAK,2BAA2B,IAAE,KAAK,8BAA8B,GAAE,KAAK,QAAQ,wBAAwB,GAAEA,GAAE,aAAWA,GAAE,aAAW,KAAK,QAAQ,MAAI,KAAK,QAAQ,QAAOA,GAAE,YAAUA,GAAE,YAAU,KAAK,QAAQ,OAAK,KAAK,QAAQ,QAAM,KAAK,YAAU,KAAK;AAAS,cAAIG,KAAE,KAAK,QAAQ,+BAA+BH,GAAE,SAAS;AAAE,UAAAA,GAAE,YAAUA,GAAE,YAAU,IAAEG,IAAEH,GAAE,aAAWA,GAAE,aAAW,KAAK,QAAQ,OAAK,KAAK,YAAUG,KAAE,IAAEA,KAAE,IAAGH,GAAE,aAAWA,GAAE,aAAW,KAAK,QAAQ;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,WAAU;AAAC,cAAIF,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAE,KAAK,SAAS,qBAAqB,GAAEE,KAAE,KAAK,SAAS,oBAAoB;AAAE,UAAAH,GAAE,iBAAe,KAAK,mBAAiB,KAAK,WAAW,kBAAkB,IAAGD,GAAE,QAAQ,gBAAc,CAAC,GAAEA,GAAE,QAAQ,eAAa,CAAC,GAAEA,GAAE,OAAO,MAAM,IAAK,SAASD,IAAEE,IAAE;AAAC,YAAAD,GAAE,QAAQ,cAAc,KAAK,EAAC,OAAME,GAAED,EAAC,EAAE,OAAM,OAAMA,GAAC,CAAC,GAAED,GAAE,QAAQ,aAAa,KAAK,EAAC,OAAMI,GAAEH,EAAC,EAAE,OAAM,OAAMA,GAAC,CAAC;AAAA,UAAC,CAAE,GAAE,KAAK,aAAW,KAAK,SAAS,mBAAmB;AAAE,cAAII,KAAE,KAAK,SAAS,qBAAqB,GAAEE,KAAE,KAAK,SAAS,0BAA0B,GAAEC,KAAE,KAAK,SAAS,oBAAoB;AAAE,eAAK,+BAA+BH,IAAEG,IAAED,EAAC,GAAEN,GAAE,kBAAgBD,GAAE,QAAQ,gBAAc,KAAK,cAAY,IAAE,IAAGC,GAAE,kBAAgBD,GAAE,QAAQ,iBAAeA,GAAE,QAAQ,cAAYA,GAAE,OAAO,MAAM,OAAO,UAAQ,MAAI,CAAC,KAAK,aAAW,IAAE,GAAEA,GAAE,QAAQ,oBAAkBC,GAAE,gBAAc,OAAGA,GAAE,kBAAgB,SAASD,GAAE,OAAO,MAAM,OAAO,MAAM,UAAS,EAAE,IAAE,MAAI,KAAIC,GAAE,kBAAgBA,GAAE,kBAAgBD,GAAE,OAAO,MAAM,OAAO,SAAQC,GAAE,kBAAgBA,GAAE,kBAAgBD,GAAE,OAAO,MAAM,OAAO;AAAQ,cAAIU,KAAE,KAAK,YAAWC,KAAE,KAAK;AAAY,UAAAV,GAAE,oBAAkB,KAAK,cAAYO,GAAE,QAAOP,GAAE,yBAAuBA,GAAE,oBAAkBI,GAAE,QAAOJ,GAAE,mBAAiB,KAAK,YAAWA,GAAE,cAAY,KAAK;AAAY,cAAIQ,KAAE;AAAG,WAAC,YAAUT,GAAE,OAAO,MAAM,QAAM,KAAK,iBAAeU,KAAE,GAAEC,KAAE,IAAG,KAAK,gBAAc,KAAK,SAAO,EAAC,QAAO,GAAE,OAAM,EAAC,KAAI,KAAK,eAAa,cAAYX,GAAE,OAAO,MAAM,UAAQU,KAAE,GAAEC,KAAE,GAAEF,KAAE,IAAG,KAAK,eAAa,cAAYT,GAAE,OAAO,MAAM,QAAM,KAAK,SAAS,yBAAyBK,EAAC;AAAE,cAAIQ,KAAE,WAAU;AAAC,YAAAZ,GAAE,aAAWS,KAAEX,GAAE,iBAAiB,OAAME,GAAE,aAAWA,GAAE,YAAUF,GAAE,OAAO,SAAOY,MAAGZ,GAAE,eAAa,cAAYC,GAAE,OAAO,MAAM,OAAK,IAAEA,GAAE,QAAQ,gBAAc,KAAG,KAAIC,GAAE,YAAUA,GAAE,WAASS,KAAE,IAAEX,GAAE,iBAAiB;AAAA,UAAK;AAAE,kBAAO,UAAQC,GAAE,OAAO,MAAM,aAAWS,KAAER,GAAE,cAAYD,GAAE,OAAO,MAAM,UAAU,SAAO,IAAGA,GAAE,OAAO,OAAO,UAAS;AAAA,YAAC,KAAI;AAAS,cAAAC,GAAE,aAAWQ,IAAEI,GAAE;AAAE;AAAA,YAAM,KAAI;AAAM,cAAAZ,GAAE,aAAW,KAAK,OAAO,SAAOQ,IAAEI,GAAE;AAAE;AAAA,YAAM,KAAI;AAAO,cAAAZ,GAAE,aAAWQ,IAAER,GAAE,aAAW,KAAK,OAAO,QAAMS,KAAE,KAAK,iBAAiB,OAAMT,GAAE,aAAWA,GAAE,YAAUU,KAAE,IAAGV,GAAE,YAAUA,GAAE,WAAS,KAAK,OAAO,QAAMS,KAAE,IAAE,KAAK,iBAAiB;AAAM;AAAA,YAAM,KAAI;AAAQ,cAAAT,GAAE,aAAWQ,IAAER,GAAE,aAAWS,KAAE,KAAK,iBAAiB,OAAMT,GAAE,aAAWA,GAAE,YAAUU,KAAE,IAAGV,GAAE,YAAUA,GAAE,WAAS,KAAK,OAAO,QAAMS,KAAE,IAAE,KAAK,iBAAiB,QAAM;AAAE;AAAA,YAAM;AAAQ,oBAAM,IAAI,MAAM,+BAA+B;AAAA,UAAC;AAAC,eAAK,QAAQ,wBAAwBN,IAAEF,EAAC,GAAE,IAAIgD,GAAE,KAAK,GAAG,EAAE,kBAAkBhD,IAAEE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iCAAgC,OAAM,WAAU;AAAC,cAAIL,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,QAAOG,KAAE;AAAE,UAAAH,GAAE,OAAO,OAAO,QAAM,CAACA,GAAE,OAAO,OAAO,aAAWG,KAAE;AAAI,cAAIE,KAAE,UAAQH,GAAE,MAAM,QAAM,gBAAcA,GAAE,MAAM,QAAM,YAAUA,GAAE,MAAM,OAAK,QAAM,aAAYI,KAAEJ,GAAE,YAAYG,EAAC,EAAE,SAAQG,KAAEN,GAAE,YAAYG,EAAC,EAAE;AAAQ,cAAG,CAACH,GAAE,OAAO,QAAMA,GAAE,OAAO,UAAS;AAAC,YAAAD,GAAE,aAAWA,GAAE;AAAU,gBAAIQ,KAAER,GAAE,IAAI,OAAO,sBAAsB,EAAE;AAAM,mBAAOA,GAAE,YAAU,KAAK,IAAIQ,IAAER,GAAE,UAAU,GAAEA,GAAE,aAAWK,IAAE,MAAKL,GAAE,aAAWO,MAAGP,GAAE,WAASA,GAAE,aAAW;AAAA,UAAE;AAAC,kBAAOC,GAAE,OAAO,UAAS;AAAA,YAAC,KAAI;AAAS,cAAAD,GAAE,aAAWA,GAAE,YAAU,KAAK,OAAO,QAAOA,GAAE,YAAUA,GAAE,UAASA,GAAE,aAAWK,KAAE,IAAGL,GAAE,aAAWO,MAAGP,GAAE,WAASA,GAAE,aAAW;AAAE;AAAA,YAAM,KAAI;AAAM,cAAAA,GAAE,aAAWA,GAAE,YAAU,KAAK,OAAO,QAAOA,GAAE,YAAUA,GAAE,UAASA,GAAE,aAAW,KAAK,OAAO,SAAOK,KAAE,IAAGL,GAAE,aAAWO,MAAGP,GAAE,WAASA,GAAE,aAAW;AAAE;AAAA,YAAM,KAAI;AAAO,cAAAA,GAAE,YAAUA,GAAE,WAAS,KAAK,OAAO,QAAME,IAAEF,GAAE,aAAW,WAASC,GAAE,MAAM,SAAOD,GAAE,YAAUA,GAAE,WAAUA,GAAE,aAAWK,IAAEL,GAAE,aAAWO,KAAE,KAAK,OAAO,QAAML;AAAE;AAAA,YAAM,KAAI;AAAQ,cAAAF,GAAE,YAAUA,GAAE,WAAS,KAAK,OAAO,QAAME,KAAE,GAAEF,GAAE,aAAW,WAASC,GAAE,MAAM,SAAOD,GAAE,YAAUA,GAAE,WAAUA,GAAE,aAAWK,IAAEL,GAAE,aAAWO,KAAE;AAAG;AAAA,YAAM;AAAQ,oBAAM,IAAI,MAAM,+BAA+B;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kCAAiC,OAAM,SAASR,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAEF,GAAE,QAAQ,iBAAe,IAAE,GAAEG,KAAEJ,GAAE,SAAOF,GAAE,SAAOC,GAAE,QAAOO,KAAEL,GAAE,QAAQ,eAAa,MAAIA,GAAE,QAAQ,mBAAkBM,KAAEN,GAAE,QAAQ,gBAAc,KAAG,IAAGQ,KAAER,GAAE,QAAQ,iBAAe,aAAWA,GAAE,OAAO,OAAO,WAAS,KAAG;AAAE,eAAK,cAAYG,KAAEE,KAAEH,KAAEI,KAAEE,IAAE,KAAK,aAAWX,GAAE,OAAM,KAAK,cAAYC,GAAE,SAAOE,GAAE,OAAO,MAAM,OAAO,cAAY,KAAK,cAAYA,GAAE,OAAO,MAAM,OAAO,YAAWA,GAAE,OAAO,MAAM,OAAO,aAAW,KAAK,cAAYA,GAAE,OAAO,MAAM,OAAO,cAAY,KAAK,cAAYA,GAAE,OAAO,MAAM,OAAO,YAAWA,GAAE,OAAO,MAAM,aAAW,KAAK,cAAY;AAAG,cAAIS,KAAE,GAAEF,KAAE;AAAE,UAAAP,GAAE,OAAO,MAAM,QAAS,SAASH,IAAE;AAAC,YAAAY,MAAGZ,GAAE,OAAO,UAASU,MAAGV,GAAE,OAAO;AAAA,UAAQ,CAAE,GAAE,KAAK,aAAWY,OAAI,KAAK,aAAWA,KAAG,KAAK,aAAWF,OAAI,KAAK,aAAWA;AAAA,QAAE,EAAC,CAAC,CAAC,GAAEV;AAAA,MAAC,EAAE;AAAj5wJ,UAAm5wJgE,MAAG,WAAU;AAAC,iBAAShE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,QAAMA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,cAAIA,IAAEC,IAAEC,IAAEC,KAAE,SAAS,cAAc,OAAO;AAAE,UAAAA,GAAE,aAAa,QAAO,UAAU;AAAE,cAAIE,MAAG,UAAQL,KAAE,KAAK,MAAM,QAAM,WAASA,MAAG,UAAQC,KAAED,GAAE,SAAO,WAASC,MAAG,UAAQC,KAAED,GAAE,UAAQ,WAASC,KAAE,SAAOA,GAAE,UAAQ,KAAK,EAAE,OAAO,MAAM;AAAM,UAAAG,MAAGF,GAAE,aAAa,SAAQE,EAAC;AAAE,cAAIC,KAAE,SAAS,eAAe,msEAAmsE;AAAE,iBAAOH,GAAE,YAAYG,EAAC,GAAEH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIH,KAAE,KAAK,EAAE,QAAQ,IAAI,OAAO,cAAc,oBAAoB,EAAE,sBAAsB,GAAEC,KAAED,GAAE;AAAM,iBAAM,EAAC,MAAKA,GAAE,QAAO,MAAKC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,eAAK,EAAE,QAAQ,IAAI,gBAAgB,YAAY,KAAK,gBAAgB,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,cAAGA,GAAE,QAAQ,cAAY,gBAAcA,GAAE,OAAO,MAAM,MAAK;AAAC,YAAAA,GAAE,QAAQ,UAAQ;AAAG,gBAAIE,KAAE,MAAKC,KAAE;AAAK,gBAAGH,GAAE,QAAQ,eAAa,CAAC,GAAEA,GAAE,QAAQ,cAAYE,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAc,wCAAwC,OAAOH,IAAE,IAAI,CAAC,GAAEM,KAAE,SAASD,GAAE,aAAa,gBAAgB,GAAE,EAAE,MAAIA,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAc,2BAA2B,OAAOH,KAAE,GAAE,IAAI,CAAC,GAAEM,KAAE,SAASD,GAAE,aAAa,KAAK,GAAE,EAAE,IAAE,IAAGJ,GAAE,EAAC,EAAC,IAAGE,GAAE,QAAQ,iBAAgB,KAAIA,GAAE,QAAQ,uBAAsB,GAAE,EAAC,IAAGA,GAAE,QAAQ,0BAAyB,KAAIA,GAAE,QAAQ,gCAA+B,CAAC,EAAE,QAAS,SAASH,IAAE;AAAC,cAAAE,GAAE,oBAAoBF,GAAE,IAAGA,GAAE,KAAIM,EAAC;AAAA,YAAC,CAAE;AAAA,gBAAO,MAAK,WAAW,EAAC,UAASD,IAAE,WAAUC,GAAC,CAAC;AAAA,UAAC,OAAK;AAAC,gBAAIE,KAAEL,GAAE,QAAQ,IAAI,MAAM,OAAO,4BAA4B,OAAOH,KAAE,GAAE,SAAS,CAAC,GAAES,KAAEN,GAAE,OAAO,MAAM;AAAK,gBAAG,UAAQM,MAAG,gBAAcA,MAAG,YAAUA,IAAE;AAAC,kBAAIE,KAAER,GAAE,OAAO,YAAY,IAAI,MAAM;AAAO,kBAAImB,GAAE,KAAK,MAAM,GAAG,EAAE,cAAcd,GAAE,QAAQ,CAAC,GAAE,IAAI,GAAE,KAAK,MAAM,IAAI,IAAI,qBAAqBA,GAAE,QAAQ,CAAC,EAAE,MAAKG,EAAC;AAAA,YAAC;AAAC,YAAAH,GAAE,KAAK,OAAO;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASR,IAAE;AAAC,cAAIC,KAAED,GAAE,WAAUE,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQG,KAAEc,GAAE,MAAMjB,GAAE,OAAO,MAAM;AAAE,cAAGC,GAAE,YAAW;AAAC,gBAAIG,KAAEJ,GAAE,OAAO,MAAMC,GAAE,sBAAsBF,EAAC,CAAC,GAAEO,KAAE,EAAC,OAAMP,IAAE,MAAKI,GAAEJ,EAAC,EAAE,KAAK,MAAM,GAAE,MAAKI,GAAEJ,EAAC,EAAE,QAAMC,GAAE,OAAO,MAAM,KAAI;AAAE,gBAAGI,MAAGA,GAAE,QAAMA,GAAE,WAAW,CAAAH,GAAE,gCAAgC,QAAQF,EAAC,IAAE,MAAIE,GAAE,yBAAyB,KAAKK,EAAC,GAAEL,GAAE,gCAAgC,KAAKF,EAAC;AAAA,qBAAWE,GAAE,uBAAuB,QAAQF,EAAC,IAAE,GAAE;AAAC,cAAAE,GAAE,gBAAgB,KAAKK,EAAC,GAAEL,GAAE,uBAAuB,KAAKF,EAAC;AAAE,kBAAIQ,KAAEN,GAAE,aAAa,QAAQF,EAAC;AAAE,cAAAE,GAAE,aAAa,OAAOM,IAAE,CAAC;AAAA,YAAC;AAAA,UAAC,MAAM,CAAAN,GAAE,gBAAgB,KAAK,EAAC,OAAMF,IAAE,MAAKI,GAAEJ,EAAC,EAAC,CAAC,GAAEE,GAAE,uBAAuB,KAAKF,EAAC;AAAE,iBAAOE,GAAE,qBAAmBA,GAAE,gBAAgB,SAAOA,GAAE,yBAAyB,WAASD,GAAE,OAAO,OAAO,QAAO,KAAK,gCAAgCG,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASL,IAAE;AAAC,mBAAQC,KAAED,GAAE,UAASE,KAAEF,GAAE,WAAUG,KAAE,KAAK,GAAEE,KAAE,KAAK,yBAAyB,EAAC,WAAUH,GAAC,CAAC,GAAEI,KAAEL,GAAE,YAAWO,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,CAAAF,GAAEE,EAAC,EAAE,UAAU,SAAS,gCAAgC,MAAIF,GAAEE,EAAC,EAAE,UAAU,SAAS,iBAAiB,IAAEF,GAAEE,EAAC,EAAE,UAAU,OAAO,iBAAiB,IAAEF,GAAEE,EAAC,EAAE,UAAU,IAAI,iBAAiB;AAAG,eAAK,MAAM,IAAI,cAAc,cAAcH,IAAEF,GAAE,OAAO,MAAM,WAAW,iBAAiB,OAAO;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASH,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAEc,GAAE,MAAMhB,GAAE,OAAO,MAAM;AAAE,cAAGH,GAAE,SAAO,GAAE;AAAC,qBAAQM,KAAE,GAAEA,KAAEN,GAAE,QAAOM,KAAI,CAAAN,GAAEM,EAAC,EAAE,UAAQJ,OAAIC,GAAE,QAAQ,aAAWE,GAAEH,EAAC,EAAE,OAAKF,GAAEM,EAAC,EAAE,KAAK,MAAM,IAAED,GAAEH,EAAC,IAAEF,GAAEM,EAAC,EAAE,MAAKD,GAAEH,EAAC,EAAE,SAAO,OAAGF,GAAE,OAAOM,IAAE,CAAC,GAAEL,GAAE,OAAOK,IAAE,CAAC,GAAEH,GAAE,QAAQ,aAAa,KAAKD,EAAC;AAAG,YAAAG,KAAE,KAAK,gCAAgCA,EAAC,GAAE,KAAK,MAAM,IAAI,cAAc,cAAcA,IAAEF,GAAE,OAAO,MAAM,WAAW,iBAAiB,OAAO;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mCAAkC,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE;AAAE,iBAAOD,GAAE,QAAQ,aAAWD,GAAE,QAAS,SAASG,IAAEE,IAAE;AAAC,YAAAJ,GAAE,QAAQ,uBAAuB,QAAQI,EAAC,IAAE,KAAGJ,GAAE,QAAQ,gCAAgC,QAAQI,EAAC,IAAE,MAAIL,GAAEK,EAAC,EAAE,OAAK,CAAC,GAAEH;AAAA,UAAI,CAAE,IAAEF,GAAE,QAAS,SAASG,IAAEE,IAAE;AAAC,aAACJ,GAAE,QAAQ,uBAAuB,QAAQI,EAAC,IAAE,MAAIL,GAAEK,EAAC,IAAE,GAAEH;AAAA,UAAI,CAAE,GAAED,GAAE,QAAQ,qBAAmBC,OAAIF,GAAE,QAAOA;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAA738J,UAA+38JiE,MAAG,WAAU;AAAC,iBAASjE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,gBAAc,KAAK,cAAc,KAAK,IAAI,GAAE,KAAK,kBAAgB,KAAK,gBAAgB,KAAK,IAAI,GAAE,KAAK,oBAAkB,UAAQ,KAAK,EAAE,OAAO,MAAM,QAAM,KAAK,EAAE,OAAO,YAAY,IAAI,eAAa,MAAI,KAAK,EAAE,OAAO,OAAO,QAAO,KAAK,gBAAc,IAAI+D,IAAG,IAAI;AAAA,QAAC;AAAC,eAAO3D,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,QAAOG,KAAED,GAAE,OAAO,uBAAqB,MAAID,GAAE,OAAO,UAAQ,KAAK,qBAAmBA,GAAE,OAAO,SAAO;AAAE,cAAG,KAAK,cAAc,sBAAsB,IAAGE,MAAG,CAACF,GAAE,eAAaC,GAAE,OAAO,MAAK;AAAC,mBAAKD,GAAE,IAAI,aAAa,aAAY,CAAAA,GAAE,IAAI,aAAa,YAAYA,GAAE,IAAI,aAAa,UAAU;AAAE,iBAAK,YAAY,GAAE,aAAWC,GAAE,OAAO,YAAU,UAAQA,GAAE,OAAO,WAAS,KAAK,sBAAsB,IAAE,YAAUA,GAAE,OAAO,YAAU,WAASA,GAAE,OAAO,YAAU,KAAK,oBAAoB;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,WAAUG,KAAE,KAAK,GAAEE,KAAE,SAAS,cAAc,MAAM;AAAE,UAAAA,GAAE,UAAU,IAAI,0BAA0B;AAAE,cAAIC,KAAEH,GAAE,OAAO,OAAO,QAAQ,SAAOA,GAAE,OAAO,QAAQ,OAAMK,KAAEF;AAAE,gBAAM,QAAQA,EAAC,MAAIE,KAAEF,GAAEL,EAAC;AAAG,cAAIQ,KAAE,MAAM,QAAQN,GAAE,OAAO,OAAO,QAAQ,IAAI,IAAE,WAAWA,GAAE,OAAO,OAAO,QAAQ,KAAKF,EAAC,CAAC,IAAE,WAAWE,GAAE,OAAO,OAAO,QAAQ,IAAI,GAAEQ,KAAE,MAAM,QAAQR,GAAE,OAAO,OAAO,QAAQ,OAAO,IAAE,WAAWA,GAAE,OAAO,OAAO,QAAQ,QAAQF,EAAC,CAAC,IAAE,WAAWE,GAAE,OAAO,OAAO,QAAQ,OAAO,GAAES,KAAE,MAAM,QAAQT,GAAE,OAAO,OAAO,QAAQ,OAAO,IAAE,WAAWA,GAAE,OAAO,OAAO,QAAQ,QAAQF,EAAC,CAAC,IAAE,WAAWE,GAAE,OAAO,OAAO,QAAQ,OAAO,GAAEO,KAAE,MAAM,QAAQP,GAAE,OAAO,OAAO,QAAQ,WAAW,IAAE,WAAWA,GAAE,OAAO,OAAO,QAAQ,YAAYF,EAAC,CAAC,IAAE,WAAWE,GAAE,OAAO,OAAO,QAAQ,WAAW,GAAEW,KAAET,GAAE;AAAM,cAAGS,GAAE,SAAO,KAAGL,KAAEC,MAAG,MAAKI,GAAE,QAAM,KAAGL,KAAEC,MAAG,MAAKI,GAAE,OAAKH,KAAE,MAAKG,GAAE,MAAIF,KAAE,MAAKT,GAAE,OAAO,OAAO,QAAQ,WAAW,CAAAW,GAAE,aAAW,eAAcA,GAAE,QAAMZ,GAAED,EAAC,GAAE,MAAM,QAAQE,GAAE,OAAO,OAAO,QAAQ,UAAU,IAAEA,GAAE,OAAO,OAAO,QAAQ,WAAWF,EAAC,MAAII,GAAE,YAAUF,GAAE,OAAO,OAAO,QAAQ,WAAWF,EAAC,EAAE,KAAGI,GAAE,YAAUF,GAAE,OAAO,OAAO,QAAQ,WAAW;AAAA,eAAM;AAAC,gBAAIU,KAAE,IAAI4B,GAAE,KAAK,GAAG,EAAE,gBAAgB,EAAC,UAAS,gEAAgE,OAAOjC,EAAC,GAAE,aAAYP,IAAE,aAAYS,IAAE,MAAKD,GAAC,CAAC,GAAEO,KAAE,IAAIX,EAAC,EAAE,KAAK,QAAO,MAAM,GAAEY,KAAE,IAAIK,GAAE,KAAK,GAAG,EAAE,WAAW,GAAE,GAAEP,GAAEA,GAAE,CAAC,GAAEF,EAAC,GAAE,CAAC,GAAE,EAAC,gBAAe,MAAM,QAAQX,EAAC,IAAEA,GAAED,EAAC,IAAEY,GAAE,gBAAe,OAAML,GAAC,CAAC,CAAC;AAAE,gBAAI,OAAO,6CAA6C,EAAE,QAAQ,QAAS,SAASR,IAAE;AAAC,cAAAA,GAAE,KAAK,UAAU,SAAS,4BAA4B,IAAEA,GAAE,KAAK,MAAM,YAAU,wBAAsBA,GAAE,KAAK,MAAM,YAAU;AAAA,YAAqB,CAAE,GAAEgB,GAAE,IAAIC,EAAC;AAAA,UAAC;AAAC,iBAAOZ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAIL,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,OAAO,YAAWE,KAAEF,GAAE,QAAQ,aAAYI,KAAEJ,GAAE,OAAO,OAAO,QAAQ,aAAWA,GAAE,OAAO,OAAO,QAAQ,WAAW,MAAM,IAAEA,GAAE,QAAQ,OAAO,MAAM;AAAE,cAAG,cAAYA,GAAE,OAAO,MAAM,MAAK;AAAC,gBAAIK,KAAEL,GAAE,OAAO,YAAY,QAAQ,WAAW;AAAO,YAAAE,KAAEG,GAAE,IAAK,SAASN,IAAE;AAAC,qBAAOA,GAAE,OAAKA,GAAE,OAAKA,GAAE,OAAK,QAAMA,GAAE;AAAA,YAAE,CAAE,GAAEK,KAAEC,GAAE,IAAK,SAASN,IAAE;AAAC,qBAAOA,GAAE;AAAA,YAAK,CAAE;AAAA,UAAC,MAAM,MAAK,sBAAoBG,KAAEF,GAAE,QAAQ,OAAO,MAAM;AAAG,UAAAA,GAAE,OAAO,OAAO,kBAAkB,WAASE,KAAEF,GAAE,OAAO,OAAO;AAAmB,mBAAQO,KAAEP,GAAE,QAAQ,iBAAgBQ,KAAER,GAAE,OAAO,OAAO,cAAaU,KAAEF,KAAEN,GAAE,SAAO,IAAE,GAAEM,KAAEE,MAAG,IAAEA,MAAGR,GAAE,SAAO,GAAEM,KAAEE,OAAIA,MAAI;AAAC,gBAAIC,IAAEF,KAAEF,GAAEL,GAAEQ,EAAC,GAAE,EAAC,aAAYA,IAAE,GAAEV,GAAC,CAAC,GAAEa,KAAE,OAAGC,KAAE;AAAG,gBAAGd,GAAE,QAAQ,gBAAgB,SAAO,EAAE,UAAQY,KAAE,GAAEA,KAAEZ,GAAE,QAAQ,gBAAgB,QAAOY,KAAI,CAAAZ,GAAE,QAAQ,gBAAgBY,EAAC,EAAE,UAAQF,OAAIG,KAAE;AAAI,gBAAGb,GAAE,QAAQ,gCAAgC,SAAO,EAAE,UAAQe,KAAE,GAAEA,KAAEf,GAAE,QAAQ,gCAAgC,QAAOe,KAAI,CAAAf,GAAE,QAAQ,gCAAgCe,EAAC,MAAIL,OAAII,KAAE;AAAI,gBAAIE,KAAE,KAAK,mBAAmB,EAAC,GAAEN,IAAE,WAAUN,GAAC,CAAC;AAAE,YAAAiB,GAAE,SAASL,IAAE,EAAC,KAAIN,KAAE,GAAE,kBAAiBG,MAAGC,GAAC,CAAC,IAAGD,MAAGC,OAAIE,GAAE,UAAU,IAAI,4BAA4B;AAAE,gBAAIb,KAAE,SAAS,cAAc,KAAK,GAAEc,KAAE,SAAS,cAAc,MAAM;AAAE,YAAAA,GAAE,UAAU,IAAI,wBAAwB,GAAEA,GAAE,YAAU,MAAM,QAAQR,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA;AAAE,gBAAIH,KAAEN,GAAE,OAAO,OAAO,OAAO,kBAAgBA,GAAE,QAAQ,OAAOU,EAAC,IAAE,MAAM,QAAQV,GAAE,OAAO,OAAO,OAAO,MAAM,IAAE,UAAQW,KAAEX,GAAE,OAAO,OAAO,OAAO,WAAS,WAASW,KAAE,SAAOA,GAAED,EAAC,IAAEV,GAAE,OAAO,OAAO,OAAO;AAAO,YAAAM,OAAIA,KAAEN,GAAE,OAAO,MAAM,YAAWiB,GAAE,MAAM,QAAMX,IAAEW,GAAE,MAAM,WAAS,WAAWjB,GAAE,OAAO,OAAO,QAAQ,IAAE,MAAKiB,GAAE,MAAM,aAAWjB,GAAE,OAAO,OAAO,YAAWiB,GAAE,MAAM,aAAWhB,MAAGD,GAAE,OAAO,MAAM,YAAWqB,GAAE,SAASJ,IAAE,EAAC,KAAIP,KAAE,GAAE,GAAEA,IAAE,qBAAoB,mBAAmBD,EAAC,GAAE,kBAAiBI,MAAGC,GAAC,CAAC,GAAEX,GAAE,YAAYa,EAAC,GAAEb,GAAE,YAAYc,EAAC;AAAE,gBAAIE,KAAE,IAAIG,GAAE,KAAK,GAAG;AAAE,gBAAG,CAACtB,GAAE,OAAO,OAAO,kBAAkB,OAAImB,GAAE,sBAAsBT,EAAC,KAAGS,GAAE,qBAAqBT,EAAC,KAAG,CAACS,GAAE,aAAaT,EAAC,KAAG,OAAKV,GAAE,QAAQ,uBAAuB,QAAQU,EAAC,KAAG,OAAKV,GAAE,QAAQ,gCAAgC,QAAQU,EAAC,KAAGP,GAAE,UAAU,IAAI,+BAA+B;AAAE,YAAAH,GAAE,OAAO,OAAO,qBAAmBmB,GAAE,aAAaT,EAAC,KAAG,OAAKV,GAAE,QAAQ,uBAAuB,QAAQU,EAAC,KAAG,OAAKV,GAAE,QAAQ,gCAAgC,QAAQU,EAAC,KAAGP,GAAE,UAAU,IAAI,+BAA+B,GAAEH,GAAE,QAAQ,IAAI,aAAa,YAAYG,EAAC,GAAEH,GAAE,QAAQ,IAAI,aAAa,UAAU,IAAI,oBAAoB,OAAOA,GAAE,OAAO,OAAO,eAAe,CAAC,GAAEA,GAAE,QAAQ,IAAI,aAAa,UAAU,IAAI,yBAAuBA,GAAE,OAAO,OAAO,QAAQ,GAAEG,GAAE,UAAU,IAAI,0BAA0B,GAAEA,GAAE,MAAM,SAAO,GAAG,OAAOH,GAAE,OAAO,OAAO,WAAW,UAAS,KAAK,EAAE,OAAOA,GAAE,OAAO,OAAO,WAAW,YAAW,IAAI,GAAEA,GAAE,QAAQ,IAAI,aAAa,MAAM,QAAMA,GAAE,OAAO,OAAO,QAAMA,GAAE,OAAO,OAAO,QAAM,OAAK,IAAGA,GAAE,QAAQ,IAAI,aAAa,MAAM,SAAOA,GAAE,OAAO,OAAO,SAAOA,GAAE,OAAO,OAAO,SAAO,OAAK,IAAGqB,GAAE,SAASlB,IAAE,EAAC,KAAIO,KAAE,GAAE,YAAWQ,GAAE,aAAahB,GAAEQ,EAAC,CAAC,GAAE,kBAAiBG,MAAGC,GAAC,CAAC,IAAGD,MAAGC,OAAIX,GAAE,UAAU,IAAI,4BAA4B,GAAEH,GAAE,OAAO,OAAO,YAAY,oBAAkBG,GAAE,UAAU,IAAI,qBAAqB;AAAA,UAAC;AAAC,UAAAH,GAAE,QAAQ,IAAI,OAAO,iBAAiB,SAAQD,GAAE,eAAc,IAAE,GAAEC,GAAE,OAAO,OAAO,YAAY,uBAAqB,MAAIA,GAAE,OAAO,OAAO,kBAAkB,WAASA,GAAE,QAAQ,IAAI,OAAO,iBAAiB,aAAYD,GAAE,iBAAgB,IAAE,GAAEC,GAAE,QAAQ,IAAI,OAAO,iBAAiB,YAAWD,GAAE,iBAAgB,IAAE;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,IAAI,cAAaG,KAAEF,GAAE,cAAaG,KAAE,GAAEE,KAAE;AAAE,cAAG,aAAWN,GAAE,OAAO,OAAO,SAAS,CAAAM,KAAEN,GAAE,QAAQ,YAAU,KAAK,IAAIG,IAAEH,GAAE,QAAQ,YAAU,CAAC,IAAE;AAAA,mBAAU,UAAQA,GAAE,OAAO,OAAO,UAAS;AAAC,gBAAIO,KAAE,IAAIsD,IAAG,KAAK,GAAG,GAAEpD,KAAEF,GAAE,WAAW,uBAAuB,OAAO,EAAE,QAAOG,KAAEH,GAAE,WAAW,uBAAuB,UAAU,EAAE;AAAO,YAAAD,MAAGG,KAAE,IAAEA,KAAE,KAAG,MAAIC,KAAE,IAAEA,KAAE,KAAG;AAAA,UAAE;AAAC,UAAAT,GAAE,MAAM,WAAS,YAAWG,KAAEA,KAAEN,KAAEE,GAAE,OAAO,OAAO,SAAQM,KAAEA,KAAEP,KAAEC,GAAE,OAAO,OAAO,SAAQC,GAAE,MAAM,OAAKG,KAAE,MAAKH,GAAE,MAAM,MAAIK,KAAE,MAAK,YAAUN,GAAE,OAAO,OAAO,aAAWC,GAAE,MAAM,OAAK,QAAOA,GAAE,MAAM,QAAM,KAAGD,GAAE,OAAO,OAAO,UAAQ;AAAM,WAAC,SAAQ,QAAQ,EAAE,QAAS,SAASF,IAAE;AAAC,YAAAG,GAAE,MAAMH,EAAC,MAAIG,GAAE,MAAMH,EAAC,IAAE,SAASE,GAAE,OAAO,OAAOF,EAAC,GAAE,EAAE,IAAE;AAAA,UAAK,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,IAAI,aAAa,MAAM,QAAM;AAAE,cAAIC,KAAE,IAAI8D,IAAG,KAAK,GAAG,GAAE7D,KAAED,GAAE,WAAW,uBAAuB,OAAO,GAAEE,KAAEF,GAAE,WAAW,uBAAuB,UAAU,GAAEI,KAAE;AAAE,oBAAQL,GAAE,OAAO,OAAO,aAAWK,KAAEH,GAAE,SAAOC,GAAE,SAAOH,GAAE,OAAO,MAAM,SAAOA,GAAE,OAAO,SAAS,SAAO,KAAI,KAAK,gBAAgB,IAAGK,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIL,KAAE,KAAK,GAAEC,KAAE,KAAK,cAAc,oBAAoB,GAAEC,KAAE;AAAE,qBAASF,GAAE,OAAO,OAAO,aAAWE,KAAE,KAAI,YAAUF,GAAE,OAAO,OAAO,aAAWE,KAAEF,GAAE,QAAQ,WAASC,GAAE,OAAK,KAAI,KAAK,gBAAgBC,IAAE,EAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEF,GAAE,OAAO,UAAU,SAAS,0BAA0B,KAAGA,GAAE,OAAO,UAAU,SAAS,wBAAwB,KAAGA,GAAE,OAAO,UAAU,SAAS,0BAA0B;AAAE,cAAG,cAAYC,GAAE,OAAO,MAAM,QAAM,KAAK,mBAAkB;AAAC,gBAAGC,IAAE;AAAC,kBAAIC,KAAE,SAASH,GAAE,OAAO,aAAa,KAAK,GAAE,EAAE,IAAE;AAAE,mBAAK,IAAI,OAAO,UAAU,eAAc,CAAC,KAAK,KAAIG,IAAE,KAAK,CAAC,CAAC,GAAE,IAAIyC,GAAE,KAAK,GAAG,EAAE,uBAAuB5C,IAAEA,GAAE,MAAM;AAAA,YAAC;AAAA,UAAC,MAAK,EAACA,GAAE,OAAO,UAAU,SAAS,4BAA4B,KAAGE,MAAG,IAAI0C,GAAE,KAAK,GAAG,EAAE,oBAAoB5C,IAAEA,GAAE,MAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAG,CAACA,GAAE,OAAO,OAAO,kBAAkB,WAASD,GAAE,OAAO,UAAU,SAAS,0BAA0B,KAAGA,GAAE,OAAO,UAAU,SAAS,wBAAwB,KAAGA,GAAE,OAAO,UAAU,SAAS,0BAA0B,IAAG;AAAC,gBAAIE,KAAE,SAASF,GAAE,OAAO,aAAa,KAAK,GAAE,EAAE,IAAE,GAAEG,KAAE,WAASH,GAAE,OAAO,aAAa,gBAAgB,GAAEK,KAAE,KAAK,EAAE,OAAO,MAAM,OAAO;AAAY,0BAAY,OAAOA,MAAGA,GAAE,KAAK,KAAIH,IAAE,KAAK,CAAC,GAAE,KAAK,IAAI,OAAO,UAAU,eAAc,CAAC,KAAK,KAAIA,IAAE,KAAK,CAAC,CAAC;AAAE,gBAAII,KAAE,KAAK,EAAE,OAAO,OAAO,QAAQ;AAAQ,0BAAY,OAAOA,MAAGN,GAAE,OAAO,UAAU,SAAS,0BAA0B,MAAIM,GAAE,KAAK,KAAIJ,IAAE,KAAK,CAAC,GAAE,KAAK,IAAI,OAAO,UAAU,qBAAoB,CAAC,KAAK,KAAIA,IAAE,KAAK,CAAC,CAAC,IAAG,cAAYD,GAAE,OAAO,MAAM,QAAM,cAAYA,GAAE,OAAO,MAAM,QAAM,CAAC,KAAK,qBAAmBA,GAAE,OAAO,OAAO,YAAY,oBAAkB,KAAK,cAAc,iBAAiBC,IAAEC,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEH;AAAA,MAAC,EAAE;AAA/juK,UAAikuKkE,MAAG,WAAU;AAAC,iBAASlE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAE,cAAIE,KAAE,KAAK;AAAE,eAAK,KAAG,KAAK,EAAE,OAAO,MAAM,QAAO,KAAK,gBAAc,uBAAsB,KAAK,eAAa,KAAK,EAAE,QAAQ,OAAO,SAAQ,KAAK,OAAKA,GAAE,QAAQ,MAAK,KAAK,OAAKA,GAAE,QAAQ;AAAA,QAAI;AAAC,eAAOE,GAAEL,IAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,WAAU;AAAC,mBAAO,SAAS,cAAc,KAAK;AAAA,UAAC,GAAEC,KAAED,GAAE;AAAE,cAAGC,GAAE,aAAa,SAAQ,oBAAoB,GAAEA,GAAE,MAAM,MAAIF,GAAE,OAAO,MAAM,QAAQ,UAAQ,MAAKE,GAAE,MAAM,QAAM,IAAEF,GAAE,OAAO,MAAM,QAAQ,UAAQ,MAAKA,GAAE,QAAQ,IAAI,OAAO,YAAYE,EAAC,GAAE,KAAK,SAAOD,GAAE,GAAE,KAAK,WAASA,GAAE,GAAE,KAAK,YAAUA,GAAE,GAAE,KAAK,QAAMA,GAAE,GAAE,KAAK,cAAYA,GAAE,GAAE,KAAK,cAAYA,GAAE,GAAE,KAAK,aAAWA,GAAE,GAAE,KAAK,SAAOA,GAAE,GAAE,KAAK,gBAAc,CAAC,GAAE,KAAK,IAAED,GAAE,OAAO,MAAM,QAAQ,OAAM,MAAM,QAAQ,KAAK,EAAE,WAAW,EAAE,UAAQI,KAAE,GAAEA,KAAE,KAAK,EAAE,YAAY,QAAOA,KAAI,MAAK,cAAc,KAAKH,GAAE,CAAC;AAAE,cAAII,KAAE,CAAC,GAAEE,KAAE,SAASN,IAAEC,IAAEE,IAAE;AAAC,gBAAIG,KAAEN,GAAE,YAAY;AAAE,YAAAF,GAAE,EAAEQ,EAAC,KAAGP,GAAE,OAAO,MAAM,KAAK,WAASK,GAAE,KAAK,EAAC,IAAGH,IAAE,MAAK,YAAU,OAAOH,GAAE,EAAEQ,EAAC,IAAER,GAAE,EAAEQ,EAAC,IAAEH,IAAE,OAAML,GAAE,aAAaE,EAAC,GAAE,OAAM,cAAc,OAAOM,IAAE,OAAO,EAAC,CAAC;AAAA,UAAC;AAAE,UAAAA,GAAE,UAAS,KAAK,UAAS,0TAA0T,GAAEA,GAAE,WAAU,KAAK,WAAU,uSAAuS;AAAE,cAAIC,KAAE,SAASP,IAAE;AAAC,YAAAF,GAAE,EAAEE,EAAC,KAAGD,GAAE,OAAO,MAAMC,EAAC,EAAE,WAASI,GAAE,KAAK,EAAC,IAAG,WAASJ,KAAEF,GAAE,SAAOA,GAAE,aAAY,MAAK,YAAU,OAAOA,GAAE,EAAEE,EAAC,IAAEF,GAAE,EAAEE,EAAC,IAAE,WAASA,KAAE,2cAAyc,8bAA6b,OAAMF,GAAE,aAAa,WAASE,KAAE,kBAAgB,WAAW,GAAE,OAAMD,GAAE,QAAQ,gBAAc,8BAA4B,cAAc,OAAOC,IAAE,OAAO,EAAC,CAAC;AAAA,UAAC;AAAE,UAAAO,GAAE,MAAM,GAAEA,GAAE,WAAW,GAAE,KAAK,EAAE,OAAKR,GAAE,OAAO,MAAM,KAAK,WAASK,GAAE,KAAK,EAAC,IAAG,KAAK,OAAM,MAAK,YAAU,OAAO,KAAK,EAAE,MAAI,KAAK,EAAE,MAAI,4pBAA2pB,OAAM,KAAK,aAAa,KAAI,OAAML,GAAE,QAAQ,gBAAc,8BAA4B,sBAAqB,CAAC,GAAEO,GAAE,SAAQ,KAAK,aAAY,4MAA4M,GAAE,KAAK,EAAE,YAAUF,GAAE,KAAK,EAAC,IAAG,KAAK,YAAW,MAAK,YAAU,OAAO,KAAK,EAAE,WAAS,KAAK,EAAE,WAAS,6LAA4L,OAAM,KAAK,aAAa,MAAK,OAAM,uBAAsB,CAAC;AAAE,mBAAQK,KAAE,GAAEA,KAAE,KAAK,cAAc,QAAOA,KAAI,CAAAL,GAAE,KAAK,EAAC,IAAG,KAAK,cAAcK,EAAC,GAAE,MAAK,KAAK,EAAE,YAAYA,EAAC,EAAE,MAAK,OAAM,KAAK,EAAE,YAAYA,EAAC,EAAE,OAAM,OAAM,KAAK,EAAE,YAAYA,EAAC,EAAE,OAAM,OAAM,oCAAkC,KAAK,EAAE,YAAYA,EAAC,EAAE,MAAK,CAAC;AAAE,UAAAL,GAAE,QAAS,SAASN,IAAEC,IAAE;AAAC,YAAAD,GAAE,SAAOmB,GAAE,iBAAiBb,IAAEL,IAAED,GAAE,KAAK;AAAA,UAAC,CAAE;AAAE,mBAAQY,KAAE,GAAEA,KAAEN,GAAE,QAAOM,KAAI,CAAAU,GAAE,SAAShB,GAAEM,EAAC,EAAE,IAAG,EAAC,OAAMN,GAAEM,EAAC,EAAE,OAAM,OAAMN,GAAEM,EAAC,EAAE,MAAK,CAAC,GAAEN,GAAEM,EAAC,EAAE,GAAG,YAAUN,GAAEM,EAAC,EAAE,MAAKT,GAAE,YAAYG,GAAEM,EAAC,EAAE,EAAE;AAAE,eAAK,qBAAqBT,EAAC,GAAEF,GAAE,QAAQ,cAAY,KAAK,OAAO,UAAU,IAAI,KAAK,aAAa,IAAEA,GAAE,QAAQ,aAAW,KAAK,MAAM,UAAU,IAAI,KAAK,aAAa,IAAEA,GAAE,QAAQ,oBAAkB,KAAK,YAAY,UAAU,IAAI,KAAK,aAAa,GAAE,KAAK,yBAAyB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASD,IAAE;AAAC,eAAK,cAAY,CAAC,GAAEA,GAAE,YAAY,KAAK,MAAM,GAAEsB,GAAE,SAAS,KAAK,QAAO,EAAC,OAAM,kBAAiB,CAAC;AAAE,mBAAQrB,KAAE,CAAC,EAAC,MAAK,aAAY,OAAM,KAAK,aAAa,YAAW,GAAE,EAAC,MAAK,aAAY,OAAM,KAAK,aAAa,YAAW,GAAE,EAAC,MAAK,aAAY,OAAM,KAAK,aAAa,YAAW,CAAC,GAAEC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,MAAK,YAAY,KAAK,SAAS,cAAc,KAAK,CAAC,GAAE,KAAK,YAAYA,EAAC,EAAE,YAAUD,GAAEC,EAAC,EAAE,OAAMoB,GAAE,SAAS,KAAK,YAAYpB,EAAC,GAAE,EAAC,OAAM,wBAAwB,OAAOD,GAAEC,EAAC,EAAE,IAAI,GAAE,OAAMD,GAAEC,EAAC,EAAE,MAAK,CAAC,GAAE,KAAK,OAAO,YAAY,KAAK,YAAYA,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,WAAU;AAAC,cAAIF,KAAE;AAAK,eAAK,YAAY,iBAAiB,SAAQ,KAAK,gBAAgB,KAAK,IAAI,CAAC,GAAE,KAAK,YAAY,iBAAiB,SAAQ,KAAK,oBAAoB,KAAK,MAAK,WAAW,CAAC,GAAE,KAAK,OAAO,iBAAiB,SAAQ,KAAK,oBAAoB,KAAK,MAAK,MAAM,CAAC,GAAE,KAAK,SAAS,iBAAiB,SAAQ,KAAK,aAAa,KAAK,IAAI,CAAC,GAAE,KAAK,UAAU,iBAAiB,SAAQ,KAAK,cAAc,KAAK,IAAI,CAAC,GAAE,KAAK,MAAM,iBAAiB,SAAQ,KAAK,cAAc,KAAK,IAAI,CAAC,GAAE,KAAK,WAAW,iBAAiB,SAAQ,KAAK,WAAW,KAAK,IAAI,CAAC,GAAE,KAAK,YAAY,QAAS,SAASC,IAAE;AAAC,YAAAA,GAAE,UAAU,SAAS,WAAW,IAAEA,GAAE,iBAAiB,SAAQD,GAAE,eAAe,KAAKA,IAAE,KAAK,CAAC,IAAEC,GAAE,UAAU,SAAS,WAAW,IAAEA,GAAE,iBAAiB,SAAQD,GAAE,eAAe,KAAKA,IAAE,KAAK,CAAC,IAAEC,GAAE,UAAU,SAAS,WAAW,KAAGA,GAAE,iBAAiB,SAAQD,GAAE,eAAe,KAAKA,IAAE,KAAK,CAAC;AAAA,UAAC,CAAE;AAAE,mBAAQC,KAAE,GAAEA,KAAE,KAAK,EAAE,YAAY,QAAOA,KAAI,MAAK,cAAcA,EAAC,EAAE,iBAAiB,SAAQ,KAAK,EAAE,YAAYA,EAAC,EAAE,MAAM,KAAK,MAAK,KAAK,KAAI,KAAK,IAAI,CAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASD,IAAE;AAAC,eAAK,IAAI,gBAAgB,EAAE,QAAS,SAASC,IAAE;AAAC,YAAAA,GAAE,IAAI,QAAQ,oBAAoB;AAAE,gBAAIC,KAAE,gBAAcF,KAAEC,GAAE,IAAI,QAAQ,cAAYA,GAAE,IAAI,QAAQ,QAAOE,KAAE,gBAAcH,KAAE,qBAAmB;AAAc,YAAAC,GAAE,EAAE,QAAQE,EAAC,IAAE,CAACF,GAAE,EAAE,QAAQE,EAAC,GAAED,GAAE,UAAU,SAASD,GAAE,IAAI,QAAQ,aAAa,IAAEC,GAAE,UAAU,OAAOD,GAAE,IAAI,QAAQ,aAAa,IAAEC,GAAE,UAAU,IAAID,GAAE,IAAI,QAAQ,aAAa;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK;AAAE,eAAK,WAAS,KAAK,SAAOA,GAAE,QAAQ,IAAI,OAAO,cAAc,uBAAuB,IAAG,KAAK,UAAQ,KAAK,QAAMA,GAAE,QAAQ,IAAI,OAAO,cAAc,sBAAsB,IAAG,KAAK,gBAAc,KAAK,cAAYA,GAAE,QAAQ,IAAI,OAAO,cAAc,4BAA4B;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASA,IAAE;AAAC,eAAK,oBAAoB,GAAE,UAAQA,KAAE,KAAK,EAAE,QAAQ,aAAW,OAAG,KAAK,EAAE,QAAQ,cAAY;AAAG,cAAIC,KAAE,UAAQD,KAAE,KAAK,QAAM,KAAK,QAAOE,KAAE,UAAQF,KAAE,KAAK,SAAO,KAAK;AAAM,UAAAC,MAAGA,GAAE,UAAU,IAAI,KAAK,aAAa,GAAEC,MAAGA,GAAE,UAAU,OAAO,KAAK,aAAa;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,eAAK,IAAI,gBAAgB,EAAE,QAAS,SAASF,IAAE;AAAC,YAAAA,GAAE,IAAI,QAAQ,oBAAoB,GAAEA,GAAE,EAAE,QAAQ,aAAW,CAACA,GAAE,EAAE,QAAQ,YAAWA,GAAE,IAAI,QAAQ,MAAM,UAAU,SAASA,GAAE,IAAI,QAAQ,aAAa,IAAEA,GAAE,IAAI,QAAQ,MAAM,UAAU,OAAOA,GAAE,IAAI,QAAQ,aAAa,IAAEA,GAAE,IAAI,QAAQ,MAAM,UAAU,IAAIA,GAAE,IAAI,QAAQ,aAAa;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,aAAW,OAAGA,GAAE,QAAQ,cAAY,OAAGA,GAAE,QAAQ,mBAAiB,OAAG,KAAK,yBAAyB,GAAE,CAAC,KAAK,OAAM,KAAK,aAAY,KAAK,MAAM,EAAE,QAAS,SAASA,IAAE;AAAC,YAAAA,MAAGA,GAAE,UAAU,OAAOD,GAAE,aAAa;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK;AAAE,UAAAA,GAAE,QAAQ,eAAa,KAAK,OAAKA,GAAE,QAAQ,MAAK,KAAK,OAAKA,GAAE,QAAQ;AAAM,cAAIC,MAAG,KAAK,OAAK,KAAK,QAAM,GAAEC,MAAG,KAAK,OAAKD,MAAG,GAAEE,MAAG,KAAK,OAAKF,MAAG,GAAEI,KAAE,KAAK,gBAAgBH,IAAEC,EAAC;AAAE,UAAAH,GAAE,QAAQ,iBAAe,KAAK,kBAAkBK,GAAE,MAAKA,GAAE,IAAI;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,cAAIL,KAAE,KAAK;AAAE,cAAGA,GAAE,QAAQ,eAAa,KAAK,OAAKA,GAAE,QAAQ,MAAK,KAAK,OAAKA,GAAE,QAAQ,OAAM,EAAE,eAAaA,GAAE,OAAO,MAAM,QAAM,IAAI,KAAK,KAAK,IAAI,EAAE,eAAe,IAAE,MAAK;AAAC,gBAAIC,MAAG,KAAK,OAAK,KAAK,QAAM,GAAEC,KAAE,KAAK,QAAMD,KAAE,KAAK,OAAME,KAAE,KAAK,QAAMF,KAAE,KAAK,OAAMI,KAAE,KAAK,gBAAgBH,IAAEC,EAAC;AAAE,YAAAH,GAAE,QAAQ,kBAAgB,KAAK,kBAAkBK,GAAE,MAAKA,GAAE,IAAI;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASL,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,OAAO,MAAM;AAAsB,iBAAM,EAAC,MAAKA,KAAE,KAAK,MAAMF,EAAC,IAAEA,IAAE,MAAKE,KAAE,KAAK,MAAMD,EAAC,IAAEA,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAG,WAASF,MAAG,WAASC,IAAE;AAAC,gBAAG,EAAEC,GAAE,OAAO,MAAM,0BAAwBF,KAAE,MAAIA,KAAE,GAAEC,KAAEC,GAAE,QAAQ,aAAYD,KAAED,KAAE,KAAI;AAAC,kBAAIG,KAAE,EAAC,KAAIH,IAAE,KAAIC,GAAC,GAAEI,KAAE,KAAK,mBAAmBF,EAAC;AAAE,cAAAE,OAAIF,KAAEE,GAAE;AAAO,kBAAIC,KAAE,EAAC,OAAMH,GAAC,GAAEK,KAAEW,GAAE,MAAMjB,GAAE,QAAQ,cAAc,KAAK;AAAE,cAAAA,GAAE,OAAO,MAAM,UAAQI,GAAE,QAAME,KAAG,KAAK,EAAE,QAAQ,SAAO,MAAG,KAAK,IAAI,cAAc,eAAeF,IAAE,OAAG,KAAK,EAAE,OAAO,MAAM,WAAW,iBAAiB,OAAO,GAAE,KAAK,aAAaH,IAAEK,EAAC;AAAA,YAAC;AAAA,UAAC,MAAM,MAAK,gBAAgB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASR,IAAEC,IAAE;AAAC,wBAAY,OAAO,KAAK,GAAG,UAAQ,KAAK,GAAG,OAAO,KAAK,KAAI,EAAC,OAAMD,IAAE,OAAMC,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE;AAAK,iBAAM,cAAY,OAAO,KAAK,GAAG,eAAaA,KAAE,KAAK,GAAG,WAAW,MAAK,EAAC,OAAMF,IAAE,OAAMC,GAAC,CAAC,IAAGC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,cAAIF,KAAE;AAAK,iBAAO,WAAY,WAAU;AAAC,YAAAA,GAAE,OAAO,UAAU,SAAS,sBAAsB,IAAEA,GAAE,OAAO,UAAU,OAAO,sBAAsB,IAAEA,GAAE,OAAO,UAAU,IAAI,sBAAsB;AAAA,UAAC,GAAG,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAI4C,GAAE,KAAK,GAAG;AAAE,kBAAO9C,IAAE;AAAA,YAAC,KAAI;AAAM,cAAAE,GAAE,YAAY,KAAK,GAAG;AAAE;AAAA,YAAM,KAAI;AAAM,cAAAA,GAAE,YAAY,KAAK,GAAG;AAAE;AAAA,YAAM,KAAI;AAAM,cAAAA,GAAE,YAAY,EAAC,QAAOD,GAAE,OAAO,QAAO,iBAAgBA,GAAE,OAAO,MAAM,QAAQ,OAAO,IAAI,gBAAe,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASD,IAAE;AAAC,eAAK,IAAI,gBAAgB,EAAE,QAAS,SAASA,IAAE;AAAC,gBAAIC,KAAED,GAAE;AAAE,gBAAGC,GAAE,QAAQ,UAAU,MAAIA,GAAE,QAAQ,cAAc,MAAM,KAAIA,GAAE,QAAQ,UAAU,MAAIA,GAAE,QAAQ,cAAc,MAAM,KAAID,GAAE,cAAc,wBAAwB,GAAE,cAAY,OAAOC,GAAE,OAAO,MAAM,OAAO,iBAAgB;AAAC,kBAAIC,KAAED,GAAE,OAAO,MAAM,OAAO,gBAAgBD,IAAEC,EAAC;AAAE,cAAAC,MAAGF,GAAE,cAAc,wBAAwBE,EAAC;AAAA,YAAC;AAAC,0BAAY,OAAOD,GAAE,OAAO,MAAM,OAAO,UAAQD,GAAE,IAAI,QAAQ,aAAa,EAAC,KAAIC,GAAE,OAAO,MAAM,KAAI,KAAIA,GAAE,OAAO,MAAM,IAAG,CAAC,GAAEA,GAAE,QAAQ,SAAO;AAAG,gBAAIE,KAAEH,GAAE,IAAI,OAAO,qBAAqBmB,GAAE,MAAMlB,GAAE,QAAQ,aAAa,CAAC;AAAE,YAAAD,GAAE,cAAc,cAAcG,IAAEF,GAAE,OAAO,MAAM,WAAW,iBAAiB,OAAO;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAK,SAAO,MAAK,KAAK,WAAS,MAAK,KAAK,YAAU,MAAK,KAAK,QAAM,MAAK,KAAK,cAAY,MAAK,KAAK,cAAY,MAAK,KAAK,aAAW;AAAA,QAAI,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAvzkL,UAAyzkLmE,MAAG,SAASnE,IAAE;AAAC,QAAAY,GAAET,IAAE+D,GAAE;AAAE,YAAIjE,KAAEO,GAAEL,EAAC;AAAE,iBAASA,GAAEH,IAAE;AAAC,cAAIK;AAAE,iBAAOH,GAAE,MAAKC,EAAC,IAAGE,KAAEJ,GAAE,KAAK,MAAKD,EAAC,GAAG,MAAIA,IAAEK,GAAE,IAAEL,GAAE,GAAEK,GAAE,UAAQ,OAAGA,GAAE,WAAS,IAAIiB,GAAEjB,GAAE,GAAG,GAAEA,GAAE,YAAU,CAAC,aAAY,cAAa,aAAY,cAAa,aAAY,WAAU,YAAW,OAAO,GAAEA,GAAE,UAAQ,GAAEA,GAAE,UAAQ,GAAEA,GAAE,SAAO,GAAEA,GAAE,OAAK,GAAEA,GAAE,QAAM,GAAEA,GAAE,SAAO,GAAEA,GAAE,OAAK,GAAEA,GAAE,QAAM,GAAEA,GAAE,gBAAc,QAAOA,GAAE,gBAAc,MAAKA,GAAE,gBAAc,KAAIA,GAAE,aAAW,KAAIA;AAAA,QAAC;AAAC,eAAOA,GAAEF,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAEF,GAAE,UAASG,KAAE,KAAK,GAAEE,KAAE;AAAK,eAAK,WAASH,IAAE,KAAK,WAAS,KAAK,SAAS,SAAS,GAAE,GAAE,GAAE,CAAC,GAAE,KAAK,gBAAc,KAAK,SAAS,SAAS,GAAE,GAAE,GAAE,CAAC,GAAE,KAAK,WAASC,GAAE,QAAQ,IAAI,OAAO,cAAc,kBAAkB,GAAE,KAAK,SAAS,KAAK,UAAU,IAAI,sBAAsB,GAAE,KAAK,cAAc,KAAK,UAAU,IAAI,2BAA2B,GAAEA,GAAE,QAAQ,IAAI,YAAY,IAAI,KAAK,QAAQ,GAAEA,GAAE,QAAQ,IAAI,YAAY,IAAI,KAAK,aAAa,GAAE,QAAMA,GAAE,OAAO,MAAM,UAAU,OAAK,KAAK,kBAAgB,KAAK,cAAc,UAAU,EAAC,MAAK,GAAE,MAAK,GAAE,MAAKA,GAAE,QAAQ,WAAU,MAAKA,GAAE,QAAQ,WAAU,CAAC,EAAE,GAAG,YAAW,KAAK,kBAAkB,KAAK,MAAK,UAAU,CAAC,IAAE,QAAMA,GAAE,OAAO,MAAM,UAAU,OAAK,KAAK,kBAAgB,KAAK,cAAc,UAAU,EAAC,MAAK,GAAE,MAAKA,GAAE,QAAQ,UAAS,CAAC,EAAE,GAAG,YAAW,KAAK,kBAAkB,KAAK,MAAK,UAAU,CAAC,IAAE,KAAK,kBAAgB,KAAK,cAAc,UAAU,EAAE,GAAG,YAAW,KAAK,kBAAkB,KAAK,MAAK,UAAU,CAAC,GAAE,KAAK,qBAAqB,GAAE,KAAK,YAAUA,GAAE,QAAQ,IAAI,OAAO,cAAc,GAAG,OAAOA,GAAE,QAAQ,YAAW,kBAAkB,CAAC,GAAE,KAAK,UAAU,UAAU,IAAI,qBAAqB,GAAE,KAAK,UAAU,QAAS,SAASH,IAAE;AAAC,YAAAC,GAAE,UAAU,iBAAiBD,IAAEK,GAAE,eAAe,KAAKA,IAAEH,EAAC,GAAE,EAAC,SAAQ,OAAG,SAAQ,KAAE,CAAC;AAAA,UAAC,CAAE,GAAEC,GAAE,OAAO,MAAM,KAAK,uBAAqB,KAAK,UAAU,iBAAiB,SAAQE,GAAE,gBAAgB,KAAKA,EAAC,GAAE,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,eAAK,oBAAkB,KAAK,gBAAgB,UAAU,KAAE,GAAE,KAAK,gBAAgB,IAAI,GAAE,KAAK,cAAc,IAAI,IAAG,KAAK,gBAAc,MAAK,KAAK,WAAS,MAAK,KAAK,WAAS;AAAA,QAAI,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASL,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,MAAKE,KAAE,KAAK,IAAI,SAAQC,KAAEJ,GAAE,QAAQ,cAAYA,GAAE,OAAO,MAAM,KAAK,OAAKA,GAAE,OAAO,MAAM,UAAU,MAAKM,KAAEN,GAAE,OAAO,MAAM,QAAQ;AAAa,cAAGD,GAAE,YAAU,KAAK,kBAAgB,MAAGI,GAAE,yBAAyB,UAAQG,KAAE,SAAO,KAAK,KAAG,KAAK,oBAAkBH,GAAE,yBAAyBG,EAAC,GAAE,KAAK,kBAAgB,QAAIP,GAAE,QAAO;AAAC,gBAAIQ,IAAEE,KAAEV,GAAE,OAAO;AAAU,gBAAGA,GAAE,OAAO,cAAY,SAAOA,GAAE,OAAO,eAAaQ,KAAER,GAAE,OAAO,WAAW,YAAW,EAAEU,GAAE,SAAS,2BAA2B,KAAGA,GAAE,SAAS,0BAA0B,KAAGA,GAAE,SAAS,wBAAwB,KAAGF,MAAGA,GAAE,SAAS,oBAAoB,IAAG;AAAC,kBAAGN,GAAE,UAAQ,gBAAcF,GAAE,QAAM,iBAAeA,GAAE,OAAKA,GAAE,QAAQ,CAAC,EAAE,UAAQ,eAAaA,GAAE,OAAKA,GAAE,eAAe,CAAC,EAAE,UAAQA,GAAE,SAAQE,GAAE,UAAQ,gBAAcF,GAAE,QAAM,iBAAeA,GAAE,OAAKA,GAAE,QAAQ,CAAC,EAAE,UAAQ,eAAaA,GAAE,OAAKA,GAAE,eAAe,CAAC,EAAE,UAAQA,GAAE,SAAQ,gBAAcA,GAAE,QAAM,MAAIA,GAAE,OAAM;AAAC,oBAAIW,KAAET,GAAE,SAAS,sBAAsB;AAAE,gBAAAA,GAAE,SAAOA,GAAE,UAAQS,GAAE,MAAKT,GAAE,SAAOA,GAAE,UAAQS,GAAE,KAAIT,GAAE,UAAQ,OAAGA,GAAE,EAAE,QAAQ,YAAU;AAAA,cAAE;AAAC,mBAAI,gBAAcF,GAAE,QAAM,MAAIA,GAAE,SAAO,gBAAcA,GAAE,UAAQE,GAAE,UAAQ,MAAGD,GAAE,QAAQ,cAAYA,GAAE,QAAQ,YAAU,MAAKC,GAAE,EAAE,QAAQ,aAAWA,GAAE,YAAY,EAAC,SAAQA,IAAE,UAASG,IAAE,UAASN,GAAC,CAAC,MAAIG,GAAE,EAAE,QAAQ,aAAWD,GAAE,QAAQ,eAAaC,GAAE,EAAE,QAAQ,aAAWD,GAAE,QAAQ,sBAAoBC,GAAE,YAAUA,GAAE,iBAAiB,EAAC,SAAQA,IAAE,UAASG,GAAC,CAAC,KAAI,cAAYL,GAAE,QAAM,eAAaA,GAAE,QAAM,iBAAeA,GAAE,MAAK;AAAC,oBAAIS,IAAEI,KAAE,UAAQJ,KAAEP,GAAE,aAAW,WAASO,KAAE,SAAOA,GAAE,sBAAsB;AAAE,gBAAAI,MAAGX,GAAE,EAAE,QAAQ,cAAYA,GAAE,OAAKA,GAAE,UAAQW,GAAE,MAAKX,GAAE,OAAKA,GAAE,UAAQW,GAAE,KAAIX,GAAE,QAAM,KAAK,IAAIA,GAAE,OAAKA,GAAE,MAAM,GAAEA,GAAE,QAAM,KAAK,IAAIA,GAAE,OAAKA,GAAE,MAAM,IAAGD,GAAE,QAAQ,eAAaA,GAAE,QAAQ,qBAAmBC,GAAE,eAAe,EAAC,SAAQA,IAAE,UAASG,GAAC,CAAC,GAAEJ,GAAE,QAAQ,cAAYA,GAAE,OAAO,MAAM,yBAAuBC,GAAE,mBAAmB,IAAGD,GAAE,QAAQ,eAAaC,GAAE,kBAAkB,KAAK,aAAa,GAAEA,GAAE,UAAQ,OAAGA,GAAE,EAAE,QAAQ,YAAU;AAAA,cAAE;AAAC,mBAAK,2BAA2B;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,UAAAF,GAAE,eAAe;AAAE,cAAIG,KAAE,KAAK,IAAI;AAAE,UAAAA,KAAED,GAAE,QAAQ,qBAAmB,KAAK,eAAa,KAAK,sBAAsBF,EAAC,GAAEE,GAAE,QAAQ,qBAAmBC,KAAG,KAAK,iBAAe,aAAa,KAAK,aAAa,GAAE,KAAK,gBAAc,WAAY,WAAU;AAAC,YAAAA,KAAED,GAAE,QAAQ,qBAAmBD,GAAE,eAAaA,GAAE,sBAAsBD,EAAC,GAAEE,GAAE,QAAQ,qBAAmBC;AAAA,UAAE,GAAG,KAAK,aAAa;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASH,IAAE;AAAC,cAAIC,IAAEC,KAAE,KAAK;AAAE,eAAK,OAAKA,GAAE,QAAQ,aAAWA,GAAE,QAAQ,OAAKA,GAAE,QAAQ,MAAK,KAAK,OAAKA,GAAE,QAAQ,aAAWA,GAAE,QAAQ,OAAKA,GAAE,QAAQ;AAAK,cAAIC,KAAE,UAAQF,KAAE,KAAK,aAAW,WAASA,KAAE,SAAOA,GAAE,sBAAsB;AAAE,cAAGE,IAAE;AAAC,gBAAIE,IAAEC,IAAEE,IAAEC,MAAGT,GAAE,UAAQG,GAAE,QAAMA,GAAE,OAAMQ,KAAE,KAAK,MAAKC,KAAE,KAAK,MAAKF,KAAEE,KAAED;AAAE,gBAAGX,GAAE,SAAO,GAAE;AAAC,kBAAIc,KAAEH,KAAEF,KAAEC;AAAE,cAAAJ,KAAEQ,MAAGT,KAAE,MAAGK,MAAG,GAAEF,KAAEM,KAAET,KAAE;AAAA,YAAC,MAAM,CAAAC,KAAEK,MAAGN,KAAE,MAAIK,MAAG,GAAEF,KAAEI,KAAEP,KAAE;AAAE,gBAAG,CAACH,GAAE,QAAQ,YAAW;AAAC,cAAAI,KAAE,KAAK,IAAIA,IAAEJ,GAAE,QAAQ,WAAW,GAAEM,KAAE,KAAK,IAAIA,IAAEN,GAAE,QAAQ,WAAW;AAAE,kBAAIa,KAAE,QAAKb,GAAE,QAAQ,cAAYA,GAAE,QAAQ;AAAa,kBAAGM,KAAEF,KAAES,IAAE;AAAC,oBAAIF,MAAGP,KAAEE,MAAG;AAAE,gBAAAF,KAAEO,KAAEE,KAAE,GAAEP,KAAEK,KAAEE,KAAE;AAAA,cAAC;AAAA,YAAC;AAAC,gBAAIC,KAAE,KAAK,gBAAgBV,IAAEE,EAAC;AAAE,kBAAMQ,GAAE,IAAI,KAAG,MAAMA,GAAE,IAAI,KAAG,KAAK,kBAAkBA,GAAE,MAAKA,GAAE,IAAI;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,WAAU;AAAC,cAAIhB,KAAE,KAAK;AAAE,cAAG,KAAK,eAAc;AAAC,gBAAIC,KAAE,KAAK,cAAc,KAAK,sBAAsB;AAAE,YAAAA,GAAE,QAAM,KAAGA,GAAE,SAAO,KAAG,KAAK,gBAAgB,UAAU,EAAC,QAAO,QAAO,WAAU,GAAE,WAAU,OAAM,CAAC,EAAE,OAAO,EAAC,YAAW,EAAC,MAAK,GAAE,MAAK,GAAE,MAAKD,GAAE,QAAQ,WAAU,MAAKA,GAAE,QAAQ,WAAU,EAAC,CAAC,EAAE,GAAG,YAAW,KAAK,kBAAkB,KAAK,MAAK,UAAU,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAE,KAAK;AAAS,cAAG,CAACD,GAAE,QAAQ;AAAY,gBAAG,WAASA,GAAE,QAAQ,aAAW,SAAOA,GAAE,QAAQ,UAAU,MAAK,kBAAkBA,GAAE,QAAQ,SAAS;AAAA,qBAAU,WAASA,GAAE,OAAO,MAAM,UAAU,MAAM,OAAK,WAASA,GAAE,OAAO,MAAM,UAAU,MAAM,KAAI;AAAC,kBAAIE,MAAGF,GAAE,OAAO,MAAM,UAAU,MAAM,MAAIA,GAAE,QAAQ,QAAMC,GAAE,QAAOE,KAAEH,GAAE,QAAQ,aAAWA,GAAE,QAAQ,OAAKA,GAAE,OAAO,MAAM,UAAU,MAAM,OAAKC,GAAE,SAAOC;AAAE,cAAAF,GAAE,QAAQ,eAAaE,MAAGF,GAAE,OAAO,MAAM,UAAU,MAAM,MAAIA,GAAE,QAAQ,WAAW,CAAC,EAAE,WAASC,GAAE,gBAAeE,MAAGH,GAAE,OAAO,MAAM,UAAU,MAAM,MAAIA,GAAE,OAAO,MAAM,UAAU,MAAM,OAAKC,GAAE;AAAgB,kBAAII,KAAE,EAAC,GAAEH,IAAE,GAAE,GAAE,OAAMC,IAAE,QAAOH,GAAE,QAAQ,YAAW,YAAW,GAAE,YAAW,GAAE,kBAAiB,KAAE;AAAE,mBAAK,kBAAkBK,EAAC,GAAE,KAAK,2BAA2B,GAAE,cAAY,OAAOL,GAAE,OAAO,MAAM,OAAO,aAAWA,GAAE,OAAO,MAAM,OAAO,UAAU,KAAK,KAAI,EAAC,OAAM,EAAC,KAAIA,GAAE,OAAO,MAAM,UAAU,MAAM,KAAI,KAAIA,GAAE,OAAO,MAAM,UAAU,MAAM,IAAG,GAAE,OAAM,CAAC,EAAC,CAAC;AAAA,YAAC;AAAA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,OAAMK,KAAEL,GAAE,QAAOM,KAAEN,GAAE,YAAWQ,KAAE,WAASF,KAAE,IAAEA,IAAEG,KAAET,GAAE,YAAWW,KAAE,WAASF,KAAE,IAAEA,IAAEG,KAAE,KAAK,GAAEF,KAAE,KAAK,UAASI,KAAE,KAAK;AAAc,cAAG,KAAK,WAAS,SAAOF,GAAE,QAAQ,WAAU;AAAC,gBAAIG,KAAE,EAAC,WAAU,eAAaP,KAAE,OAAKG,KAAE,IAAG;AAAE,YAAAC,GAAE,QAAQ,eAAa,KAAK,YAAUT,KAAE,MAAIA,KAAE,IAAGO,GAAE,KAAK,EAAC,GAAET,IAAE,GAAEC,IAAE,OAAMC,IAAE,QAAOE,IAAE,MAAKO,GAAE,OAAO,MAAM,KAAK,WAAW,KAAK,OAAM,gBAAeA,GAAE,OAAO,MAAM,KAAK,WAAW,KAAK,SAAQ,QAAOA,GAAE,OAAO,MAAM,KAAK,WAAW,OAAO,OAAM,gBAAeA,GAAE,OAAO,MAAM,KAAK,WAAW,OAAO,OAAM,kBAAiBA,GAAE,OAAO,MAAM,KAAK,WAAW,OAAO,QAAO,CAAC,GAAEU,GAAE,SAASZ,GAAE,MAAKK,EAAC,IAAGH,GAAE,QAAQ,qBAAmBE,GAAE,KAAK,EAAC,GAAEb,IAAE,GAAEC,IAAE,OAAMC,KAAE,IAAEA,KAAE,GAAE,QAAOE,KAAE,IAAEA,KAAE,GAAE,MAAKO,GAAE,OAAO,MAAM,UAAU,KAAK,OAAM,gBAAeA,GAAE,OAAO,MAAM,UAAU,KAAK,SAAQ,QAAOA,GAAE,OAAO,MAAM,UAAU,OAAO,OAAM,gBAAeA,GAAE,OAAO,MAAM,UAAU,OAAO,OAAM,oBAAmBA,GAAE,OAAO,MAAM,UAAU,OAAO,WAAU,kBAAiBA,GAAE,OAAO,MAAM,UAAU,OAAO,QAAO,CAAC,GAAEU,GAAE,SAASR,GAAE,MAAKC,EAAC;AAAA,UAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASf,IAAE;AAAC,UAAAA,MAAGA,GAAE,KAAK,EAAC,GAAE,GAAE,GAAE,GAAE,OAAM,GAAE,QAAO,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE,UAASG,KAAE,KAAK,GAAEE,KAAEJ,IAAEK,KAAE,KAAK,SAAS,sBAAsB,GAAEE,KAAEH,GAAE,SAAO,GAAEI,KAAEJ,GAAE,QAAOM,KAAE,OAAGC,KAAE,OAAGF,KAAEL,GAAE,UAAQC,GAAE,OAAKE,IAAEM,KAAET,GAAE,UAAQC,GAAE,MAAIG,IAAEM,KAAE,CAAC;AAAE,iBAAO,KAAK,IAAIL,KAAEF,EAAC,IAAEL,GAAE,QAAQ,YAAUO,KAAEP,GAAE,QAAQ,YAAUK,KAAEH,GAAE,UAAQC,GAAE,OAAK,MAAII,KAAEF,KAAGA,KAAEH,GAAE,UAAQC,GAAE,SAAOK,KAAE,MAAGD,KAAE,KAAK,IAAIA,EAAC,IAAGD,KAAEJ,GAAE,UAAQC,GAAE,QAAMM,KAAE,MAAGE,KAAE,KAAK,IAAIA,EAAC,IAAGC,KAAE,QAAMb,KAAE,EAAC,GAAES,KAAEH,KAAEE,KAAEF,IAAE,GAAE,GAAE,OAAME,IAAE,QAAOP,GAAE,QAAQ,WAAU,IAAE,QAAMD,KAAE,EAAC,GAAE,GAAE,GAAEU,KAAEH,KAAEK,KAAEL,IAAE,OAAMN,GAAE,QAAQ,WAAU,QAAOW,GAAC,IAAE,EAAC,GAAEH,KAAEH,KAAEE,KAAEF,IAAE,GAAEI,KAAEH,KAAEK,KAAEL,IAAE,OAAMC,IAAE,QAAOI,GAAC,GAAET,GAAE,kBAAkBU,EAAC,GAAEV,GAAE,kBAAkB,UAAU,GAAEU;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASf,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEE,KAAE,KAAK,UAASC,KAAE,KAAK,eAAcE,KAAE;AAAE,yBAAaR,OAAIQ,KAAE;AAAI,cAAIC,KAAE,SAAST,IAAE;AAAC,mBAAO,WAAWM,GAAE,KAAK,aAAaN,EAAC,CAAC;AAAA,UAAC,GAAEW,KAAE,EAAC,GAAEF,GAAE,GAAG,GAAE,GAAEA,GAAE,GAAG,GAAE,OAAMA,GAAE,OAAO,GAAE,QAAOA,GAAE,QAAQ,EAAC;AAAE,UAAAN,GAAE,QAAQ,YAAUQ,IAAE,cAAY,OAAOR,GAAE,OAAO,MAAM,OAAO,aAAWA,GAAE,QAAQ,qBAAmB,aAAa,KAAK,EAAE,QAAQ,oBAAoB,GAAE,KAAK,EAAE,QAAQ,uBAAqB,OAAO,WAAY,WAAU;AAAC,gBAAIH,IAAEC,IAAEO,IAAEC,IAAEE,KAAET,GAAE,SAAS,sBAAsB,GAAEU,KAAEN,GAAE,KAAK,sBAAsB;AAAE,YAAAH,GAAE,QAAQ,cAAYH,KAAEG,GAAE,QAAQ,WAAW,CAAC,EAAE,WAASS,GAAE,OAAKD,GAAE,QAAMN,GAAE,gBAAeJ,KAAEE,GAAE,QAAQ,WAAW,CAAC,EAAE,WAASS,GAAE,QAAMD,GAAE,QAAMN,GAAE,gBAAeG,KAAE,GAAEC,KAAE,MAAIT,KAAEG,GAAE,QAAQ,WAAW,WAASS,GAAE,OAAKD,GAAE,QAAMN,GAAE,QAAOJ,KAAEE,GAAE,QAAQ,WAAW,WAASS,GAAE,QAAMD,GAAE,QAAMN,GAAE,QAAOG,KAAEL,GAAE,QAAQ,WAAW,CAAC,EAAE,WAASQ,GAAE,SAAOC,GAAE,UAAQP,GAAE,OAAO,CAAC,GAAEI,KAAEN,GAAE,QAAQ,WAAW,CAAC,EAAE,WAASS,GAAE,MAAID,GAAE,OAAKN,GAAE,OAAO,CAAC;AAAG,gBAAIK,KAAE,EAAC,OAAM,EAAC,KAAIV,IAAE,KAAIC,GAAC,GAAE,OAAM,EAAC,KAAIO,IAAE,KAAIC,GAAC,EAAC;AAAE,YAAAN,GAAE,OAAO,MAAM,OAAO,UAAUD,GAAE,KAAIQ,EAAC,GAAEP,GAAE,OAAO,MAAM,MAAM,WAAS,WAASA,GAAE,OAAO,MAAM,OAAO,iBAAeA,GAAE,OAAO,MAAM,OAAO,cAAcD,GAAE,KAAIQ,EAAC;AAAA,UAAC,GAAGF,EAAC;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASR,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE,UAASG,KAAE,KAAK,GAAEE,KAAEJ,IAAEK,KAAE,KAAK,UAASE,KAAE,KAAK,IAAI;AAAQ,cAAGH,GAAE,SAAOA,GAAE,MAAK;AAAC,gBAAII,KAAEJ,GAAE;AAAO,YAAAA,GAAE,SAAOA,GAAE,MAAKA,GAAE,OAAKI;AAAA,UAAC;AAAC,cAAGJ,GAAE,SAAOA,GAAE,MAAK;AAAC,gBAAIM,KAAEN,GAAE;AAAO,YAAAA,GAAE,SAAOA,GAAE,MAAKA,GAAE,OAAKM;AAAA,UAAC;AAAC,cAAIC,KAAE,QAAOF,KAAE;AAAO,UAAAP,GAAE,QAAQ,cAAYS,KAAET,GAAE,QAAQ,WAAW,CAAC,EAAE,UAAQE,GAAE,SAAOC,GAAE,gBAAeI,KAAEP,GAAE,QAAQ,WAAW,CAAC,EAAE,UAAQE,GAAE,OAAKC,GAAE,mBAAiBM,KAAET,GAAE,QAAQ,WAAW,UAAQE,GAAE,SAAOC,GAAE,QAAOI,KAAEP,GAAE,QAAQ,WAAW,UAAQE,GAAE,OAAKC,GAAE;AAAQ,cAAIQ,KAAE,CAAC,GAAEC,KAAE,CAAC;AAAE,cAAGZ,GAAE,OAAO,MAAM,QAAS,SAASH,IAAEC,IAAE;AAAC,gBAAIC,KAAEC,GAAE,QAAQ,eAAeF,EAAC,EAAE,CAAC;AAAE,YAAAa,GAAE,KAAKX,GAAE,QAAQ,WAAWF,EAAC,EAAE,UAAQK,GAAE,OAAOJ,EAAC,IAAEG,GAAE,MAAM,GAAEU,GAAE,KAAKZ,GAAE,QAAQ,WAAWF,EAAC,EAAE,UAAQK,GAAE,OAAOJ,EAAC,IAAEG,GAAE,IAAI;AAAA,UAAC,CAAE,GAAEA,GAAE,YAAUA,GAAE,QAAM,MAAIA,GAAE,QAAM,OAAKO,OAAIF;AAAE,gBAAGP,GAAE,QAAQ,aAAY;AAAC,kBAAIU,KAAEM,GAAE,MAAMhB,GAAE,QAAQ,cAAc,KAAK,GAAEa,KAAEG,GAAE,MAAMhB,GAAE,QAAQ,cAAc,KAAK;AAAE,kBAAGA,GAAE,QAAQ,SAAO,MAAGA,GAAE,OAAO,MAAM,0BAAwBS,KAAE,KAAK,MAAMA,EAAC,GAAEF,KAAE,KAAK,MAAMA,EAAC,GAAEE,KAAE,MAAIA,KAAE,GAAEF,KAAEP,GAAE,QAAQ,aAAYO,KAAEE,KAAE,MAAIF,KAAEE,KAAE,KAAI,SAAOV,MAAG,QAAMA,OAAIc,KAAE,EAAC,KAAIJ,IAAE,KAAIF,GAAC,IAAG,SAAOR,MAAG,QAAMA,MAAGW,GAAE,QAAS,SAASb,IAAEC,IAAE;AAAC,gBAAAY,GAAEZ,EAAC,EAAE,MAAIc,GAAEd,EAAC,GAAEY,GAAEZ,EAAC,EAAE,MAAIa,GAAEb,EAAC;AAAA,cAAC,CAAE,GAAEO,IAAE;AAAC,oBAAIS,KAAET,GAAE,mBAAmBQ,IAAEH,EAAC;AAAE,gBAAAI,OAAID,KAAEC,GAAE,QAAMA,GAAE,QAAMD,IAAEH,KAAEI,GAAE,QAAMA,GAAE,QAAMJ;AAAA,cAAE;AAAC,kBAAIT,KAAE,EAAC,OAAMY,GAAC;AAAE,cAAAb,GAAE,OAAO,MAAM,UAAQC,GAAE,QAAMS,KAAGR,GAAE,IAAI,cAAc,eAAeD,IAAE,OAAGC,GAAE,EAAE,OAAO,MAAM,WAAW,iBAAiB,OAAO,GAAE,cAAY,OAAOF,GAAE,OAAO,MAAM,OAAO,UAAQK,GAAE,aAAaQ,IAAEH,EAAC;AAAA,YAAC,WAASV,GAAE,QAAQ,kBAAiB;AAAC,kBAAIe,IAAEX,KAAE;AAAK,cAAAW,KAAE,EAAC,KAAIN,IAAE,KAAIF,GAAC,GAAE,SAAOR,MAAG,QAAMA,OAAIK,KAAEY,GAAE,MAAMhB,GAAE,OAAO,KAAK,GAAG,QAAS,SAASH,IAAEC,IAAE;AAAC,gBAAAM,GAAEN,EAAC,EAAE,MAAIc,GAAEd,EAAC,GAAEM,GAAEN,EAAC,EAAE,MAAIa,GAAEb,EAAC;AAAA,cAAC,CAAE,GAAEE,GAAE,QAAQ,YAAUE,GAAE,WAAU,cAAY,OAAOF,GAAE,OAAO,MAAM,OAAO,aAAWA,GAAE,OAAO,MAAM,OAAO,UAAUE,GAAE,KAAI,EAAC,OAAMa,IAAE,OAAMX,GAAC,CAAC;AAAA,YAAC;AAAA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASP,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAE,KAAK,GAAEC,KAAEF;AAAE,cAAG,WAASC,GAAE,QAAQ,mBAAmB,GAAE;AAAC,gBAAIG,KAAEH,GAAE,QAAQ,mBAAmB,IAAEC,GAAE,SAAQG,KAAEJ,GAAE,QAAQ,mBAAmB,IAAEC,GAAE;AAAQ,iBAAK,IAAIE,EAAC,IAAE,KAAK,IAAIC,EAAC,KAAGD,KAAE,IAAE,KAAK,gBAAc,SAAO,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAIC,EAAC,KAAGD,KAAE,IAAE,KAAK,gBAAc,UAAQ,KAAK,IAAIC,EAAC,IAAE,KAAK,IAAID,EAAC,KAAGC,KAAE,IAAE,KAAK,gBAAc,OAAK,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAID,EAAC,KAAGC,KAAE,MAAI,KAAK,gBAAc;AAAA,UAAO;AAAC,UAAAJ,GAAE,QAAQ,qBAAmB,EAAC,GAAEC,GAAE,SAAQ,GAAEA,GAAE,QAAO;AAAE,cAAIK,KAAEN,GAAE,QAAQ,aAAWA,GAAE,QAAQ,OAAKA,GAAE,QAAQ,MAAKO,KAAEP,GAAE,QAAQ,aAAWA,GAAE,QAAQ,OAAKA,GAAE,QAAQ;AAAK,UAAAA,GAAE,OAAO,MAAM,yBAAuBC,GAAE,YAAYK,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAIT,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,MAAKE,KAAEF,GAAE,QAAQ,MAAKG,MAAGH,GAAE,QAAQ,OAAKA,GAAE,QAAQ,QAAM;AAAE,qBAAS,KAAK,iBAAeC,KAAED,GAAE,QAAQ,OAAKG,IAAED,KAAEF,GAAE,QAAQ,OAAKG,MAAG,YAAU,KAAK,kBAAgBF,KAAED,GAAE,QAAQ,OAAKG,IAAED,KAAEF,GAAE,QAAQ,OAAKG,KAAGF,KAAE,KAAK,MAAMA,EAAC,GAAEC,KAAE,KAAK,MAAMA,EAAC,GAAE,KAAK,oBAAoB,EAAC,OAAM,EAAC,KAAID,IAAE,KAAIC,GAAC,EAAC,GAAED,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK,UAASE,KAAEc,GAAE,MAAMjB,GAAE,QAAQ,cAAc,KAAK,GAAEI,KAAEH,GAAE,QAAOK,KAAEN,GAAE,QAAQ,MAAKO,KAAEP,GAAE,QAAQ;AAAK,UAAAA,GAAE,QAAQ,eAAaI,KAAEH,GAAE,gBAAeK,KAAEN,GAAE,QAAQ,MAAKO,KAAEP,GAAE,QAAQ,OAAM,WAAS,KAAK,iBAAeF,KAAEQ,KAAEN,GAAE,QAAQ,YAAU,KAAGI,IAAEL,KAAEQ,KAAEP,GAAE,QAAQ,YAAU,KAAGI,MAAG,YAAU,KAAK,kBAAgBN,KAAEQ,KAAEN,GAAE,QAAQ,YAAU,KAAGI,IAAEL,KAAEQ,KAAEP,GAAE,QAAQ,YAAU,KAAGI,KAAGJ,GAAE,QAAQ,eAAaF,KAAEE,GAAE,QAAQ,eAAaD,KAAEC,GAAE,QAAQ,iBAAeF,KAAEQ,IAAEP,KAAEQ;AAAG,cAAIE,KAAE,EAAC,OAAM,EAAC,KAAIX,IAAE,KAAIC,GAAC,EAAC;AAAE,UAAAC,GAAE,OAAO,MAAM,UAAQS,GAAE,QAAMN,KAAG,KAAK,oBAAoBM,IAAEX,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASD,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,eAAK,IAAI,cAAc,eAAeH,IAAE,OAAG,KAAE,GAAE,cAAY,OAAOG,GAAE,OAAO,MAAM,OAAO,YAAUA,GAAE,OAAO,MAAM,OAAO,SAAS,KAAK,KAAI,EAAC,OAAM,EAAC,KAAIF,IAAE,KAAIC,GAAC,EAAC,CAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEC;AAAA,MAAC,EAAE;AAAjm+L,UAAmm+LiE,MAAG,WAAU;AAAC,iBAASpE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,QAAMA,IAAE,KAAK,MAAIA,GAAE;AAAA,QAAG;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAED,GAAE,WAAUE,KAAEF,GAAE,QAAOG,KAAEH,GAAE,SAAQK,KAAEL,GAAE,SAAQM,KAAE,KAAK,GAAEE,KAAEN,GAAE,sBAAsB,GAAEO,KAAED,GAAE,OAAMG,KAAEH,GAAE,QAAOI,KAAEH,MAAGH,GAAE,QAAQ,aAAW,IAAGI,KAAEC,KAAEL,GAAE,QAAQ,YAAWQ,KAAE,KAAK,QAAQ;AAAE,WAACR,GAAE,QAAQ,eAAa,CAACQ,MAAGR,GAAE,OAAO,MAAM,0BAAwBM,KAAEH,KAAEH,GAAE,QAAQ;AAAY,cAAIS,KAAEZ,KAAEK,GAAE,OAAKF,GAAE,QAAQ,sBAAqBO,KAAER,KAAEG,GAAE;AAAI,UAAAO,KAAE,KAAGF,KAAE,KAAGE,KAAEN,MAAGI,KAAEF,MAAGV,GAAE,UAAU,OAAO,eAAe,GAAEA,GAAE,UAAU,OAAO,cAAc,KAAGK,GAAE,QAAQ,eAAaL,GAAE,UAAU,OAAO,cAAc,GAAEA,GAAE,UAAU,IAAI,eAAe,KAAGK,GAAE,QAAQ,eAAaL,GAAE,UAAU,OAAO,eAAe,GAAEA,GAAE,UAAU,IAAI,cAAc;AAAG,cAAIe,KAAE,KAAK,MAAMD,KAAEH,EAAC,GAAEK,KAAE,KAAK,MAAMJ,KAAEH,EAAC;AAAE,UAAAI,MAAG,CAACR,GAAE,OAAO,MAAM,0BAAwBU,KAAE,KAAK,KAAKD,KAAEH,EAAC,GAAEI,MAAG;AAAG,cAAIZ,KAAE,MAAKc,KAAE,MAAKX,KAAED,GAAE,QAAQ,cAAc,IAAK,SAASN,IAAE;AAAC,mBAAOA,GAAE,OAAQ,SAASA,IAAE;AAAC,qBAAOmB,GAAE,SAASnB,EAAC;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE,GAAEoB,KAAEd,GAAE,QAAQ,cAAc,IAAK,SAASN,IAAE;AAAC,mBAAOA,GAAE,OAAQ,SAASA,IAAE;AAAC,qBAAOmB,GAAE,SAASnB,EAAC;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE;AAAE,cAAGM,GAAE,QAAQ,YAAW;AAAC,gBAAIe,KAAE,KAAK,MAAM,UAAU,EAAE,sBAAsB,GAAEC,KAAEP,MAAGM,GAAE,QAAMZ,KAAGc,KAAEV,MAAGQ,GAAE,SAAOV;AAAG,YAAAP,MAAGc,KAAE,KAAK,oBAAoBI,IAAEC,IAAEhB,IAAEa,EAAC,GAAG,OAAMJ,KAAEE,GAAE,GAAE,SAAOd,OAAIG,KAAED,GAAE,QAAQ,cAAcF,EAAC,GAAEY,MAAGE,KAAE,KAAK,eAAeI,IAAEf,EAAC,GAAG;AAAA,UAAM;AAAC,iBAAOD,GAAE,QAAQ,sBAAoB,SAAOF,KAAE,KAAGA,KAAG,CAACY,MAAGA,KAAE,OAAKA,KAAE,IAAGV,GAAE,QAAQ,kBAAgBA,GAAE,QAAQ,yBAAuBW,KAAEX,GAAE,QAAQ,yBAAuBU,IAAE,EAAC,gBAAeZ,IAAE,GAAEE,GAAE,QAAQ,kBAAgBW,KAAED,IAAE,QAAOD,IAAE,QAAOF,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASb,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK,GAAEC,KAAE,GAAEE,KAAE,MAAKC,KAAE;AAAG,UAAAJ,GAAE,QAAQ,OAAO,SAAO,IAAEC,KAAE,KAAK,qBAAqBJ,EAAC,IAAEM,KAAE;AAAE,cAAIG,KAAET,GAAEI,EAAC,EAAE,CAAC,GAAEM,KAAE,KAAK,IAAIZ,KAAEW,EAAC;AAAE,cAAGT,GAAE,QAAS,SAASD,IAAE;AAAC,YAAAA,GAAE,QAAS,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,IAAIH,KAAEC,EAAC;AAAE,cAAAE,MAAGS,OAAIA,KAAET,IAAEM,KAAEP;AAAA,YAAE,CAAE;AAAA,UAAC,CAAE,GAAE,OAAKO,IAAE;AAAC,gBAAIC,KAAEP,GAAEG,EAAC,EAAEG,EAAC,GAAEK,KAAE,KAAK,IAAIb,KAAES,EAAC;AAAE,YAAAF,KAAEF,IAAEH,GAAE,QAAS,SAASH,IAAEE,IAAE;AAAC,kBAAIC,KAAE,KAAK,IAAIF,KAAED,GAAES,EAAC,CAAC;AAAE,cAAAN,MAAGW,OAAIA,KAAEX,IAAEK,KAAEN;AAAA,YAAE,CAAE;AAAA,UAAC;AAAC,iBAAM,EAAC,OAAMM,IAAE,GAAEC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAAST,IAAE;AAAC,mBAAQC,KAAE,KAAK,GAAEC,KAAE,GAAEC,KAAEH,GAAE,IAAK,SAASA,IAAEC,IAAE;AAAC,mBAAOD,GAAE,SAAO,IAAEC,KAAE;AAAA,UAAE,CAAE,GAAEI,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,KAAG,OAAKF,GAAEE,EAAC,KAAG,OAAKJ,GAAE,QAAQ,uBAAuB,QAAQI,EAAC,KAAG,OAAKJ,GAAE,QAAQ,gCAAgC,QAAQI,EAAC,GAAE;AAAC,YAAAH,KAAEC,GAAEE,EAAC;AAAE;AAAA,UAAK;AAAC,iBAAOH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASF,IAAEC,IAAE;AAAC,mBAAQC,KAAED,GAAE,CAAC,GAAEE,KAAE,MAAKE,KAAE,KAAK,IAAIL,KAAEE,EAAC,GAAEI,KAAE,GAAEA,KAAEL,GAAE,QAAOK,MAAI;AAAC,gBAAIE,KAAE,KAAK,IAAIR,KAAEC,GAAEK,EAAC,CAAC;AAAE,YAAAE,KAAEH,OAAIA,KAAEG,IAAEL,KAAEG;AAAA,UAAE;AAAC,iBAAM,EAAC,OAAMH,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,CAAC,GAAEC,KAAE,KAAK,EAAE,QAAQ,QAAQ,OAAQ,SAASF,IAAE;AAAC,mBAAO,WAASA,GAAE,CAAC;AAAA,UAAC,CAAE;AAAE,cAAGE,GAAE,SAAO,EAAE,UAAQC,KAAE,GAAEA,KAAED,GAAE,SAAO,GAAEC,KAAI,YAASD,GAAEC,EAAC,EAAEH,EAAC,KAAG,WAASE,GAAEC,KAAE,CAAC,EAAEH,EAAC,KAAGE,GAAEC,EAAC,EAAEH,EAAC,MAAIE,GAAEC,KAAE,CAAC,EAAEH,EAAC,KAAGC,GAAE,KAAK,SAAS;AAAE,iBAAO,MAAIA,GAAE;AAAA,QAAM,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,mBAAQD,KAAE,MAAGC,KAAE,KAAK,EAAE,QAAQ,eAAcC,KAAE,GAAEA,KAAED,GAAE,SAAO,GAAEC,KAAI,KAAGD,GAAEC,EAAC,EAAE,KAAK,WAASD,GAAEC,KAAE,CAAC,EAAE,KAAK,QAAO;AAAC,YAAAF,KAAE;AAAG;AAAA,UAAK;AAAC,iBAAOA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAE;AAAC,iBAAOiB,GAAEjB,EAAC,EAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,mBAAOD,KAAEC,GAAE,QAAQ,EAAE;AAAA,UAAM,GAAG,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASD,IAAE;AAAC,iBAAM,YAAU,OAAOA,KAAE,KAAK,EAAE,QAAQ,IAAI,OAAO,iBAAiB,wCAAwC,OAAOA,IAAE,wCAAwC,CAAC,IAAE,KAAK,EAAE,QAAQ,IAAI,OAAO,iBAAiB,qCAAqC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE,QAAQ,IAAI,OAAO,iBAAiB,iCAAiC;AAAE,WAACA,KAAEiB,GAAEjB,EAAC,GAAG,KAAM,SAASA,IAAEC,IAAE;AAAC,gBAAIC,KAAE,OAAOF,GAAE,aAAa,gBAAgB,CAAC,GAAEG,KAAE,OAAOF,GAAE,aAAa,gBAAgB,CAAC;AAAE,mBAAOE,KAAED,KAAE,IAAEC,KAAED,KAAE,KAAG;AAAA,UAAC,CAAE;AAAE,cAAID,KAAE,CAAC;AAAE,iBAAOD,GAAE,QAAS,SAASA,IAAE;AAAC,YAAAC,GAAE,KAAKD,GAAE,cAAc,oBAAoB,CAAC;AAAA,UAAC,CAAE,GAAEC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASD,IAAE;AAAC,iBAAO,KAAK,aAAaA,EAAC,EAAE,SAAO;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,OAAOF,GAAE,aAAa,IAAI,CAAC,GAAEG,KAAE,OAAOH,GAAE,aAAa,IAAI,CAAC,GAAEK,KAAEL,GAAE,aAAa,OAAO;AAAE,iBAAO,IAAIsB,GAAE,KAAK,GAAG,EAAE,cAAcpB,IAAEC,IAAEE,IAAEJ,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAO,KAAK,EAAE,QAAQ,IAAI,OAAO,iBAAiB,kHAAkH;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,iBAAO,KAAK,UAAU,EAAE,SAAO;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,QAAQ,MAAM;AAAK,iBAAO,WAASC,OAAIA,KAAED,GAAE,QAAQ,QAAQ,KAAKD,EAAC,IAAEC,GAAE,OAAO,QAAQ,MAAM,aAAYC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK;AAAM,gBAAIA,GAAE,uBAAuB,WAASA,GAAE,yBAAuBD,GAAE,QAAQ,IAAI,OAAO,iBAAiB,kCAAkC;AAAG,mBAAQE,KAAED,GAAE,wBAAuBG,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,cAAWL,MAAGG,GAAEE,EAAC,EAAE,UAAU,IAAI,mBAAmB,GAAEF,GAAEE,EAAC,EAAE,MAAM,UAAQJ,GAAE,OAAO,QAAQ,MAAM,YAAUE,GAAEE,EAAC,EAAE,UAAU,OAAO,mBAAmB,GAAEF,GAAEE,EAAC,EAAE,MAAM,UAAQ;AAAA,QAAO,EAAC,CAAC,CAAC,GAAEL;AAAA,MAAC,EAAE;AAArsnM,UAAusnMqE,MAAG,WAAU;AAAC,iBAASrE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,MAAIA,GAAE,KAAI,KAAK,QAAMA,IAAE,KAAK,cAAY,IAAImE,IAAGnE,EAAC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAED,GAAE,QAAOE,KAAE,WAASD,MAAGA,IAAEE,KAAEH,GAAE,SAAQK,KAAEL,GAAE,GAAEM,KAAE,WAASD,KAAE,IAAEA,IAAEG,KAAER,GAAE,GAAES,KAAE,WAASD,KAAE,OAAKA,IAAEG,KAAEX,GAAE,IAAGY,KAAEZ,GAAE,IAAGU,KAAEV,GAAE,GAAEc,KAAE,KAAK;AAAE,qBAASA,GAAE,OAAO,QAAQ,SAAO,KAAK,oBAAoB,EAAC,GAAER,IAAE,GAAEG,IAAE,IAAGE,IAAE,IAAGC,IAAE,GAAEE,GAAC,CAAC,IAAE,KAAK,2BAA2BZ,IAAEI,EAAC;AAAE,cAAIS,KAAE,KAAK,iBAAiB,EAAC,GAAET,IAAE,GAAEG,GAAC,CAAC;AAAE,eAAK,YAAY,EAAC,GAAEH,IAAE,GAAEG,IAAE,QAAOM,IAAE,SAAQZ,IAAE,QAAOD,IAAE,GAAEQ,GAAC,CAAC;AAAE,cAAIG,KAAE,KAAK,MAAM,aAAa;AAAE,eAAK,MAAM,YAAY,UAAQA,GAAE,sBAAsB,EAAE,OAAM,KAAK,MAAM,YAAY,WAASA,GAAE,sBAAsB,EAAE;AAAA,QAAM,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASb,IAAE;AAAC,cAAIC,IAAEC,KAAE,MAAKC,KAAEH,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,QAAOQ,KAAER,GAAE,SAAQS,KAAET,GAAE,QAAOW,KAAEX,GAAE,GAAEY,KAAE,KAAK,GAAEF,KAAE,CAAC,GAAEI,KAAE,SAASd,IAAE;AAAC,mBAAOY,GAAE,QAAQ,YAAYZ,EAAC,KAAGY,GAAE,QAAQ,YAAYZ,EAAC,EAAEK,EAAC,KAAG,MAAM,QAAQO,GAAE,QAAQ,YAAYZ,EAAC,EAAEK,EAAC,CAAC;AAAA,UAAC,GAAEQ,KAAEP,GAAE,MAAKU,KAAEV,GAAE,MAAKW,KAAEX,GAAE,YAAWF,KAAE,IAAGc,KAAEN,GAAE,QAAQ,OAAOT,EAAC;AAAE,mBAAOE,MAAGO,GAAE,OAAO,YAAY,IAAI,gBAAcM,KAAEN,GAAE,QAAQ,OAAOP,EAAC;AAAG,mBAAQE,KAAE,SAASP,IAAEM,IAAE;AAAC,gBAAIC,KAAEL,GAAE,cAAcC,EAAC;AAAE,YAAAC,KAAEF,GAAE,cAAc,EAAC,IAAGK,GAAE,mBAAkB,OAAMJ,IAAE,aAAYA,IAAE,GAAEE,GAAC,CAAC,GAAE,cAAYO,GAAE,OAAO,MAAM,SAAOR,KAAEG,GAAE,kBAAkB,OAAOK,GAAE,OAAO,OAAOT,EAAC,EAAE,KAAKE,EAAC,EAAE,CAAC,GAAE,EAAC,QAAOO,GAAE,QAAQ,QAAO,aAAYT,IAAE,gBAAeE,IAAE,GAAEO,GAAC,CAAC;AAAG,gBAAIO,KAAEP,GAAE,OAAO,QAAQ,eAAaN,KAAEN;AAAE,gBAAGY,GAAE,QAAQ,YAAW;AAAC,kBAAIQ,KAAE,SAASpB,IAAE;AAAC,oBAAIC,IAAEC,IAAEC,IAAEG;AAAE,uBAAOM,GAAE,QAAQ,cAAYL,GAAE,aAAa,UAAQN,KAAEW,GAAE,QAAQ,qBAAmB,WAASX,MAAG,UAAQC,KAAED,GAAED,EAAC,MAAI,WAASE,KAAE,SAAOA,GAAEG,EAAC,GAAE,EAAC,QAAOO,GAAE,QAAQ,kBAAiB,aAAYZ,IAAE,gBAAeK,IAAE,GAAEO,GAAC,CAAC,IAAE,QAAML,GAAE,aAAa,UAAQJ,KAAES,GAAE,QAAQ,mBAAiB,WAAST,MAAG,UAAQG,KAAEH,GAAEH,EAAC,MAAI,WAASM,KAAE,SAAOA,GAAED,EAAC,GAAE,EAAC,QAAOO,GAAE,QAAQ,gBAAe,aAAYZ,IAAE,gBAAeK,IAAE,GAAEO,GAAC,CAAC,IAAEL,GAAE,aAAaK,GAAE,QAAQ,OAAOZ,EAAC,EAAEK,EAAC,GAAE,EAAC,QAAOO,GAAE,QAAQ,QAAO,aAAYZ,IAAE,gBAAeK,IAAE,GAAEO,GAAC,CAAC;AAAA,cAAC;AAAE,kBAAGH,GAAE,CAAAF,KAAEL,GAAE,cAAciB,EAAC,GAAEf,KAAEF,GAAE,cAAc,EAAC,IAAGK,GAAE,mBAAkB,OAAMY,IAAE,aAAYhB,IAAE,GAAEE,GAAC,CAAC,GAAEa,KAAEN,GAAE,QAAQ,OAAOO,EAAC,GAAElB,KAAEmB,GAAED,EAAC,GAAEL,GAAEK,EAAC,MAAIT,KAAEE,GAAE,QAAQ,YAAYO,EAAC,EAAEd,EAAC,EAAE,IAAK,SAASL,IAAE;AAAC,uBAAM,EAAC,OAAMA,IAAE,KAAIO,GAAE,aAAaP,GAAE,OAAM,EAAC,aAAYmB,IAAE,gBAAed,IAAE,GAAEO,GAAC,CAAC,EAAC;AAAA,cAAC,CAAE;AAAA,mBAAO;AAAC,oBAAIS,IAAEC,KAAE,QAAMX,MAAG,UAAQU,KAAEV,GAAE,WAAS,WAASU,KAAE,SAAOA,GAAE,aAAa,MAAM;AAAE,gBAAAC,OAAI,OAAKA,GAAE,QAAQ,KAAK,IAAE,OAAKA,GAAE,QAAQ,SAAS,MAAIJ,KAAEN,GAAE,QAAQ,IAAI,OAAO,cAAcU,GAAE,OAAO,CAAC,EAAE,MAAM,GAAE,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,QAAQ,KAAGJ,KAAEI,KAAGrB,KAAEmB,GAAEjB,EAAC,GAAEW,GAAEX,EAAC,KAAG,MAAM,QAAQS,GAAE,QAAQ,YAAYT,EAAC,EAAEE,EAAC,CAAC,MAAIK,KAAEE,GAAE,QAAQ,YAAYT,EAAC,EAAEE,EAAC,EAAE,IAAK,SAASL,IAAE;AAAC,yBAAM,EAAC,OAAMA,IAAE,KAAIO,GAAE,aAAaP,GAAE,OAAM,EAAC,aAAYG,IAAE,gBAAeE,IAAE,GAAEO,GAAC,CAAC,EAAC;AAAA,gBAAC,CAAE;AAAA,cAAE;AAAA,YAAC;AAAC,qBAAOP,OAAIJ,KAAEM,GAAE,aAAaK,GAAE,QAAQ,OAAOT,EAAC,GAAEY,GAAEA,GAAE,CAAC,GAAEH,EAAC,GAAE,CAAC,GAAE,EAAC,aAAYT,IAAE,gBAAeA,GAAC,CAAC,CAAC,IAAGD,GAAE,YAAY,EAAC,GAAEC,IAAE,GAAEgB,IAAE,GAAEd,IAAE,SAAQG,IAAE,QAAO,EAAC,KAAIP,IAAE,UAASS,IAAE,MAAKG,IAAE,YAAWI,IAAE,MAAKD,GAAC,GAAE,YAAWZ,IAAE,QAAOK,IAAE,QAAOS,GAAC,CAAC;AAAA,UAAC,GAAEC,KAAE,GAAEC,KAAER,GAAE,QAAQ,OAAO,SAAO,GAAEO,KAAEP,GAAE,QAAQ,OAAO,QAAOO,MAAIC,KAAI,CAAAb,GAAEY,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASpB,IAAE;AAAC,cAAIC,IAAEC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,iBAAiBF,EAAC;AAAE,iBAAO,WAASE,GAAE,QAAQ,QAAM,MAAM,QAAQA,GAAE,QAAQ,KAAK,KAAGC,KAAED,GAAE,QAAQ,MAAMF,EAAC,KAAGE,GAAE,QAAQ,MAAMF,EAAC,EAAE,WAAUC,KAAEC,GAAE,QAAQ,MAAMF,EAAC,KAAGE,GAAE,QAAQ,MAAMF,EAAC,EAAE,SAAOE,GAAE,QAAQ,MAAMF,EAAC,EAAE,MAAM,cAAYG,KAAED,GAAE,QAAQ,MAAM,WAAU,cAAY,OAAOA,GAAE,QAAQ,MAAM,MAAM,cAAYD,KAAEC,GAAE,QAAQ,MAAM,MAAM,cAAYD,KAAEC,GAAE,OAAO,QAAQ,EAAE,MAAM,WAAU,cAAY,OAAOC,OAAIA,KAAED,GAAE,QAAQ,iBAAiB,CAAC,IAAEA,GAAE,QAAQ,iBAAiB,CAAC,IAAE,SAASF,IAAE;AAAC,mBAAOA;AAAA,UAAC,IAAG,cAAY,OAAOC,OAAIA,KAAE,SAASD,IAAE;AAAC,mBAAOA;AAAA,UAAC,IAAG,EAAC,cAAaG,IAAE,mBAAkBF,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAED,GAAE,IAAGE,KAAEF,GAAE,OAAMG,KAAEH,GAAE,aAAYK,KAAEL,GAAE,GAAEM,KAAE,KAAK;AAAE,iBAAOL,GAAE,OAAOK,GAAE,QAAQ,YAAYJ,EAAC,CAAC,GAAE,EAAC,QAAOI,GAAE,QAAQ,QAAO,aAAYH,IAAE,gBAAeE,IAAE,GAAEC,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASN,IAAE;AAAC,UAAAA,GAAE;AAAE,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,SAAQK,KAAEL,GAAE,QAAOM,KAAEN,GAAE,YAAWQ,KAAER,GAAE,QAAOS,KAAET,GAAE,QAAOW,KAAE,KAAK,GAAEC,KAAE,KAAK,OAAMF,KAAEL,GAAE,KAAIS,KAAET,GAAE,UAASU,KAAEV,GAAE,MAAKQ,KAAER,GAAE,YAAWW,KAAEX,GAAE,MAAKY,KAAE;AAAK,UAAAA,KAAEd,GAAEF,EAAC,EAAE,UAASU,GAAE,OAAO,QAAQ,oBAAkBR,GAAEF,EAAC,EAAE,MAAM,kBAAgBQ,IAAEQ,GAAE,CAAC,EAAE,MAAM,UAAQ,SAAQL,GAAE,qBAAmB,SAAOA,GAAE,iBAAeA,GAAE,eAAaD,GAAE,QAAQ,IAAI,OAAO,cAAc,2BAA2B,IAAGC,GAAE,aAAa,YAAUG,KAAGH,GAAE,0BAAwBA,GAAE,iBAAiB,YAAU,OAAKC,KAAEA,KAAEE;AAAG,cAAIX,KAAED,GAAEF,EAAC,EAAE,cAAc,kCAAkC;AAAE,UAAAG,OAAIA,GAAE,YAAUE,MAAG;AAAI,cAAIY,KAAEf,GAAEF,EAAC,EAAE,cAAc,kCAAkC;AAAE,UAAAiB,OAAIA,GAAE,YAAU,WAASR,KAAEA,KAAE,KAAIO,GAAE,CAAC,KAAGA,GAAE,CAAC,EAAE,UAAU,SAAS,2BAA2B,MAAIN,GAAE,OAAO,QAAQ,OAAO,cAAY,MAAM,QAAQA,GAAE,OAAO,QAAQ,OAAO,UAAU,MAAIF,KAAEE,GAAE,OAAO,QAAQ,OAAO,WAAWV,EAAC,IAAGgB,GAAE,CAAC,EAAE,MAAM,kBAAgBR,KAAGE,GAAE,OAAO,QAAQ,OAAO,SAAOM,GAAE,CAAC,EAAE,MAAM,UAAQ;AAAQ,cAAIV,KAAEJ,GAAEF,EAAC,EAAE,cAAc,sCAAsC,GAAEkB,KAAEhB,GAAEF,EAAC,EAAE,cAAc,sCAAsC;AAAE,cAAGa,GAAE,UAAQH,GAAE,QAAQ,YAAYV,EAAC,GAAE;AAAC,gBAAImB,KAAE,WAAU;AAAC,kBAAIpB,KAAE,UAASC,KAAE;AAAQ,cAAAa,GAAE,QAAS,SAASZ,IAAEC,IAAE;AAAC,gBAAAH,MAAG,gGAAgG,OAAOE,GAAE,MAAM,aAAY,sDAAsD,EAAE,OAAOA,GAAE,MAAM,MAAK,QAAQ,GAAED,MAAG,QAAQ,OAAOC,GAAE,KAAI,QAAQ;AAAA,cAAC,CAAE,GAAEK,GAAE,YAAUP,KAAE,UAASmB,GAAE,YAAUlB,KAAE;AAAA,YAAQ;AAAE,YAAAO,KAAEG,GAAE,QAAQ,YAAYV,EAAC,EAAEC,EAAC,KAAG,MAAM,QAAQS,GAAE,QAAQ,YAAYV,EAAC,EAAEC,EAAC,CAAC,IAAEkB,GAAE,KAAGb,GAAE,YAAU,IAAGY,GAAE,YAAU,MAAIC,GAAE;AAAA,UAAC,MAAM,CAAAb,GAAE,YAAU,IAAGY,GAAE,YAAU;AAAG,mBAAOH,OAAIb,GAAEF,EAAC,EAAE,cAAc,kCAAkC,EAAE,YAAUU,GAAE,OAAO,QAAQ,EAAE,OAAMR,GAAEF,EAAC,EAAE,cAAc,kCAAkC,EAAE,YAAU,WAASe,KAAEA,KAAE;AAAI,cAAGR,MAAGS,GAAE,CAAC,GAAE;AAAC,gBAAGN,GAAE,OAAO,QAAQ,iBAAgB;AAAC,kBAAIU,KAAElB,GAAEF,EAAC,EAAE,cAAc,4BAA4B,GAAEqB,KAAEnB,GAAEF,EAAC,EAAE,cAAc,0BAA0B;AAAE,mBAAG,WAAWS,EAAC,KAAGW,GAAE,MAAM,UAAQ,QAAOC,GAAE,MAAM,UAAQ,WAASD,GAAE,MAAM,UAAQ,SAAQC,GAAE,MAAM,UAAQ;AAAA,YAAQ;AAAC,oBAAMZ,MAAGC,GAAE,QAAQ,gCAAgC,QAAQV,EAAC,IAAE,MAAIU,GAAE,QAAQ,uBAAuB,QAAQV,EAAC,IAAE,MAAI,MAAM,QAAQW,GAAE,QAAQ,eAAe,KAAG,OAAKA,GAAE,QAAQ,gBAAgB,QAAQX,EAAC,IAAEgB,GAAE,CAAC,EAAE,WAAW,MAAM,UAAQ,SAAOA,GAAE,CAAC,EAAE,WAAW,MAAM,UAAQN,GAAE,OAAO,QAAQ,MAAM;AAAA,UAAO,MAAM,OAAM,QAAQC,GAAE,QAAQ,eAAe,KAAG,OAAKA,GAAE,QAAQ,gBAAgB,QAAQX,EAAC,MAAIgB,GAAE,CAAC,EAAE,WAAW,MAAM,UAAQ;AAAA,QAAO,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAASjB,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAGF,GAAE,MAAK,YAAY,6BAA6B,QAAQ;AAAA,eAAM;AAAC,iBAAK,YAAY,6BAA6B,SAAS;AAAE,gBAAIG,KAAED,GAAE,QAAQ,IAAI,OAAO,cAAc,oCAAoC,OAAOD,EAAC,CAAC;AAAE,YAAAE,OAAIA,GAAE,UAAU,IAAI,mBAAmB,GAAEA,GAAE,MAAM,UAAQD,GAAE,OAAO,QAAQ,MAAM;AAAA,UAAQ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEG,KAAE,KAAK,GAAEE,KAAE,KAAK,IAAI,OAAO,gBAAgB,GAAEC,KAAE,IAAGE,KAAE,IAAGC,KAAE,MAAKE,KAAE,MAAKC,KAAE,EAAC,QAAOT,GAAE,QAAQ,QAAO,aAAYF,IAAE,gBAAeC,IAAE,GAAEC,GAAC,GAAEO,KAAEP,GAAE,QAAQ;AAAa,mBAAOD,KAAES,KAAER,GAAE,QAAQ,OAAOF,EAAC,IAAEE,GAAE,QAAQ,cAAY,cAAYA,GAAE,OAAO,MAAM,QAAMG,KAAED,GAAEJ,EAAC,EAAEC,EAAC,GAAE,MAAIG,GAAEJ,EAAC,EAAE,WAASK,KAAED,GAAE,KAAK,YAAY,qBAAqBA,EAAC,CAAC,EAAEH,EAAC,MAAII,KAAE,IAAIuC,GAAE,KAAK,GAAG,EAAE,WAAW,IAAE,WAAS1C,GAAE,OAAO,OAAOF,EAAC,EAAE,KAAKC,EAAC,IAAEC,GAAE,OAAO,OAAOF,EAAC,EAAE,KAAKC,EAAC,EAAE,IAAE,KAAG,WAASC,GAAE,QAAQ,OAAOD,EAAC,IAAEC,GAAE,QAAQ,OAAOD,EAAC,IAAE;AAAG,cAAIY,KAAER;AAAE,UAAAH,GAAE,QAAQ,cAAY,eAAaA,GAAE,OAAO,MAAM,OAAKG,KAAE,IAAIqB,GAAE,KAAK,GAAG,EAAE,aAAaxB,GAAE,QAAQ,gBAAeW,IAAEA,IAAE,EAAC,GAAE,QAAO,eAAc,IAAIY,GAAE,KAAK,GAAG,EAAE,YAAW,GAAE,KAAK,EAAC,CAAC,IAAEpB,KAAEH,GAAE,QAAQ,kBAAgBA,GAAE,QAAQ,iBAAiB,CAAC,EAAEW,IAAEF,EAAC,IAAET,GAAE,QAAQ,gBAAgBW,IAAEF,EAAC;AAAE,iBAAO,WAAST,GAAE,OAAO,QAAQ,EAAE,cAAYG,KAAEH,GAAE,QAAQ,eAAeW,IAAEF,EAAC,IAAGT,GAAE,QAAQ,QAAQ,SAAO,KAAGA,GAAE,QAAQ,QAAQF,EAAC,EAAE,SAAO,MAAIQ,KAAEC,GAAEP,GAAE,QAAQ,QAAQF,EAAC,EAAEC,EAAC,GAAEC,EAAC,IAAGK,KAAE,cAAY,OAAOL,GAAE,OAAO,MAAM,QAAQ,YAAUA,GAAE,QAAQ,sBAAsBW,IAAEF,EAAC,IAAEN,IAAE,EAAC,KAAI,MAAM,QAAQK,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA,IAAE,MAAK,MAAM,QAAQL,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA,IAAE,YAAW,MAAM,QAAQE,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA,IAAE,MAAKC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAST,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,IAAGK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,GAAEQ,KAAE,KAAK,MAAM,aAAa,GAAEC,KAAEH,GAAE,OAAO,QAAQ;AAAO,gBAAM,QAAQG,EAAC,KAAGA,GAAER,EAAC,MAAIQ,KAAEA,GAAER,EAAC,IAAGO,GAAE,YAAUC,GAAE,EAAC,KAAI,KAAK,KAAI,QAAOH,GAAE,QAAQ,QAAO,aAAYL,IAAE,gBAAeC,IAAE,IAAGC,IAAE,IAAGE,IAAE,GAAEC,GAAC,CAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEN;AAAA,MAAC,EAAE;AAAnm3M,UAAqm3MsE,MAAG,WAAU;AAAC,iBAAStE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,QAAMC,IAAE,KAAK,MAAIA,GAAE,KAAI,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,KAAK,OAAMC,KAAE,KAAK,GAAEE,KAAEH,GAAE,iBAAiB,GAAEI,KAAEN,KAAEE,GAAE,mBAAiB,GAAEM,KAAEL,GAAE,QAAQ,OAAO,MAAM,EAAE;AAAO,cAAG,SAAOF,OAAIK,KAAEH,GAAE,QAAQ,YAAUK,KAAEP,KAAG,SAAOI,MAAGF,GAAE,QAAQ,oBAAkBE,GAAE,aAAa,KAAIC,EAAC,GAAED,GAAE,aAAa,MAAKC,EAAC,GAAED,GAAE,aAAa,MAAKC,EAAC,GAAED,GAAE,aAAa,MAAKF,GAAE,QAAQ,UAAU,GAAEE,GAAE,UAAU,IAAI,mBAAmB,IAAGC,KAAE,MAAIA,KAAE,IAAGA,KAAEH,GAAE,QAAQ,cAAYG,KAAEH,GAAE,QAAQ,YAAWD,GAAE,uBAAsB;AAAC,gBAAIO,KAAEH;AAAE,4BAAcH,GAAE,OAAO,MAAM,WAAW,SAAO,eAAaA,GAAE,OAAO,MAAM,WAAW,UAAQM,KAAEH,KAAEJ,GAAE,mBAAiB,IAAG,KAAK,iBAAiBO,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAAST,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAM,mBAAOA,GAAE,eAAaqB,GAAE,SAASrB,GAAE,aAAY,EAAC,IAAGD,IAAE,IAAGA,GAAC,CAAC,GAAE,SAAOC,GAAE,qBAAmBqB,GAAE,SAASrB,GAAE,mBAAkB,EAAC,IAAGD,IAAE,IAAGA,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK;AAAM,cAAG,SAAOA,GAAE,gBAAc,MAAIA,GAAE,kBAAiB;AAAC,YAAAA,GAAE,aAAa,UAAU,IAAI,mBAAmB;AAAE,gBAAIC,KAAED,GAAE,YAAUD,GAAE,OAAO,MAAM,QAAQ,UAAQA,GAAE,QAAQ,aAAW,IAAEA,GAAE,OAAO,MAAM;AAAQ,gBAAGD,MAAGE,GAAE,aAAa,sBAAsB,EAAE,QAAM,GAAE,CAAC,MAAMF,EAAC,GAAE;AAAC,cAAAA,MAAGC,GAAE,QAAQ;AAAW,kBAAII;AAAE,cAAAA,KAAE,IAAIiB,GAAE,KAAK,GAAG,EAAE,aAAapB,GAAE,iBAAiB,SAAS,GAAEA,GAAE,iBAAiB,MAAM,WAASG,GAAE,QAAM,MAAKH,GAAE,aAAa,MAAM,OAAKF,KAAE,MAAKE,GAAE,aAAa,MAAM,MAAIC,KAAE;AAAA,YAAI;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK;AAAM,mBAAOA,GAAE,eAAaA,GAAE,aAAWD,GAAE,QAAQ,IAAI,OAAO,iBAAiB,0BAA0B;AAAG,cAAIE,KAAE,SAASD,GAAE,kBAAkB,aAAa,IAAI,GAAE,EAAE,GAAEG,KAAEJ,GAAE,QAAQ,aAAWE,IAAEG,KAAEJ,GAAE,WAAWF,EAAC,EAAE,sBAAsB,EAAE,QAAOQ,KAAEP,GAAE,QAAQ,gBAAgBD,EAAC,IAAE;AAAE,UAAAC,GAAE,OAAO,MAAMD,EAAC,EAAE,aAAWQ,MAAG,KAAIH,MAAGC,KAAE,GAAE,OAAKL,GAAE,QAAQ,mBAAmB,QAAQD,EAAC,KAAGE,GAAE,WAAWF,EAAC,EAAE,UAAU,IAAI,mBAAmB,GAAEE,GAAE,WAAWF,EAAC,EAAE,MAAM,MAAIK,KAAE,MAAKH,GAAE,WAAWF,EAAC,EAAE,MAAM,OAAKQ,KAAEP,GAAE,OAAO,MAAMD,EAAC,EAAE,QAAQ,UAAQ,QAAME,GAAE,WAAWF,EAAC,EAAE,UAAU,OAAO,mBAAmB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,KAAK,GAAEE,KAAE,KAAK,OAAMC,KAAED,GAAE,aAAa,GAAEG,KAAEH,GAAE,aAAYI,KAAE,SAAOP,KAAE,WAAWA,EAAC,IAAE,GAAES,KAAE,WAAWX,EAAC,IAAES,KAAE,GAAEG,KAAE,WAAWX,EAAC,IAAEQ,KAAE;AAAE,cAAGE,KAAER,GAAE,QAAQ,YAAU,MAAIQ,KAAEA,KAAEH,GAAE,UAAQC,KAAE,KAAIE,KAAER,GAAE,QAAQ,YAAUK,GAAE,UAAQ,OAAKG,KAAER,GAAE,QAAQ,YAAUK,GAAE,UAASG,KAAE,QAAMA,KAAE,MAAKR,GAAE,OAAO,QAAQ,cAAa;AAAC,gBAAIO,KAAEL,GAAE,UAAU,EAAE,sBAAsB;AAAE,aAACM,KAAEN,GAAE,EAAE,UAAQK,GAAE,QAAMP,GAAE,QAAQ,YAAU,MAAIQ,MAAGN,GAAE,YAAY,WAAUO,KAAEP,GAAE,EAAE,UAAQF,GAAE,QAAQ,aAAWO,GAAE,OAAKP,GAAE,QAAQ,aAAW,MAAIS,MAAGP,GAAE,YAAY;AAAA,UAAS,MAAM,CAAAF,GAAE,QAAQ,mBAAiBK,GAAE,WAAS,IAAEI,KAAET,GAAE,QAAQ,eAAaS,KAAET,GAAE,QAAQ,aAAWK,GAAE,WAASL,GAAE,QAAQ;AAAY,gBAAMQ,EAAC,MAAIA,MAAGR,GAAE,QAAQ,YAAWG,GAAE,MAAM,OAAKK,KAAE,MAAKL,GAAE,MAAM,MAAIM,KAAE;AAAA,QAAK,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASZ,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK;AAAM,cAAGD,GAAE,QAAQ,QAAQ,KAAKF,EAAC,IAAE,EAAE,UAAQK,KAAEH,GAAE,QAAQ,IAAI,OAAO,iBAAiB,yCAAyC,OAAOF,IAAE,uBAAuB,CAAC,GAAEM,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,UAASD,GAAEC,EAAC,EAAE,aAAa,KAAK,GAAE,EAAE,MAAIL,OAAIE,GAAE,OAAO,gBAAgB,GAAEA,GAAE,OAAO,oBAAoBF,IAAEI,GAAEC,EAAC,CAAC;AAAA,cAAQ,CAAAH,GAAE,OAAO,gBAAgB,GAAE,KAAK,wBAAwBF,IAAED,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,IAAEC,IAAEE,IAAEC,IAAEE,KAAE,KAAK,GAAEC,KAAE,KAAK,OAAME,KAAE,IAAIW,GAAE,KAAK,GAAG,GAAEV,KAAEJ,GAAE,QAAQ,aAAYE,KAAED,GAAE,YAAY,mBAAmBR,EAAC,GAAEa,KAAEN,GAAE,OAAO,OAAOP,EAAC,EAAE;AAAK,cAAG,CAACa,MAAG,aAAWA,MAAG,kBAAgBA,MAAG,cAAYA,IAAE;AAAC,YAAAT,KAAE,UAAQH,KAAEU,GAAEX,EAAC,EAAED,EAAC,MAAI,WAASE,KAAE,SAAOA,GAAE,CAAC,GAAEI,MAAG,UAAQH,KAAES,GAAEX,EAAC,EAAED,EAAC,MAAI,WAASG,KAAE,SAAOA,GAAE,CAAC,MAAI;AAAE,gBAAIY,KAAEP,GAAE,QAAQ,IAAI,OAAO,cAAc,wCAAwC,OAAOP,IAAE,oCAAoC,CAAC;AAAE,gBAAGc,MAAGT,KAAEE,GAAE,QAAQ,cAAYF,KAAE,GAAE;AAAC,kBAAIO,KAAEE,GAAE,aAAa,OAAO,GAAEC,KAAEL,GAAE,cAAcN,IAAEC,IAAEO,IAAE,MAAIH,EAAC;AAAE,cAAAK,GAAE,aAAa,KAAIC,EAAC;AAAA,YAAC;AAAC,iBAAK,gBAAgBX,EAAC,GAAEI,GAAE,gBAAc,KAAK,YAAYJ,IAAEC,IAAEI,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASV,IAAE;AAAC,cAAIC,IAAEC,KAAE,KAAK,OAAMC,KAAED,GAAE,GAAEG,KAAE,GAAEC,KAAE,GAAEE,KAAEL,GAAE,QAAQ,aAAYM,KAAE,IAAImC,GAAE,KAAK,GAAG,GAAEjC,KAAE,IAAIW,GAAE,KAAK,GAAG;AAAE,UAAArB,KAAEQ,GAAE,2BAA2B,OAAM,CAAC,QAAO,QAAO,WAAU,QAAQ,CAAC;AAAE,cAAIG,KAAEV,GAAE,YAAY,mBAAmBD,EAAC;AAAE,UAAAO,GAAEP,EAAC,MAAII,KAAEG,GAAEP,EAAC,EAAED,EAAC,EAAE,CAAC,GAAEM,KAAEE,GAAEP,EAAC,EAAED,EAAC,EAAE,CAAC;AAAG,cAAIU,KAAER,GAAE,YAAY,cAAc;AAAE,cAAG,SAAOQ,GAAE,UAAQI,KAAE,GAAEA,KAAEX,GAAE,QAAQ,OAAO,QAAOW,MAAI;AAAC,gBAAIC,KAAEP,GAAEM,EAAC;AAAE,gBAAGX,GAAE,QAAQ,eAAa,WAASY,MAAGL,GAAE,OAAOI,IAAE,GAAE,IAAI,GAAEC,MAAGA,GAAE,QAAO;AAAC,kBAAIF,KAAEL,GAAEM,EAAC,EAAEd,EAAC,EAAE,CAAC,GAAEgB,KAAE;AAAO,cAAAN,GAAEI,EAAC,EAAE,aAAa,MAAKT,EAAC;AAAE,kBAAIY,KAAEP,GAAEI,EAAC,EAAE,aAAa,OAAO;AAAE,kBAAG,gBAAcX,GAAE,OAAO,MAAM,QAAM,CAACA,GAAE,QAAQ,aAAY;AAAC,oBAAIC,KAAEJ,KAAEG,GAAE,QAAQ,OAAOW,EAAC,EAAE;AAAO,gBAAAE,KAAER,GAAEM,EAAC,EAAEV,EAAC,EAAE,CAAC,GAAES,MAAG,KAAK,IAAIA,KAAEG,EAAC,IAAE;AAAA,cAAC;AAAC,kBAAG,SAAOH,MAAG,CAAC,MAAMA,EAAC,KAAGA,KAAEV,GAAE,QAAQ,aAAWS,MAAGC,KAAED,KAAE,GAAE;AAAC,oBAAIM,KAAEP,GAAE,cAAcN,IAAEQ,IAAEI,IAAEL,EAAC;AAAE,gBAAAF,GAAEI,EAAC,EAAE,aAAa,KAAII,EAAC;AAAA,cAAC,MAAM,CAAAR,GAAEI,EAAC,EAAE,aAAa,KAAI,EAAE;AAAA,YAAC;AAAA,UAAC;AAAC,eAAK,gBAAgBT,EAAC,GAAEH,GAAE,gBAAc,KAAK,YAAYG,IAAEC,MAAGH,GAAE,QAAQ,YAAWS,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAASZ,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK,OAAME,KAAEH,GAAE,QAAQ,eAAaA,GAAE,QAAQ,aAAa,SAAOA,GAAE,QAAQ,OAAO,QAAOI,KAAED,MAAG,KAAGA,KAAE,KAAG,IAAE,KAAK,MAAMA,KAAE,CAAC,IAAE,KAAK,MAAMA,KAAE,CAAC,IAAE;AAAE,UAAAH,GAAE,QAAQ,oBAAkBI,KAAE,IAAIsC,GAAE,KAAK,GAAG,EAAE,2BAA2B,MAAM,IAAE;AAAG,cAAIpC,KAAEN,GAAE,QAAQ,IAAI,OAAO,cAAc,kDAAkD,OAAOI,IAAE,aAAa,EAAE,OAAON,IAAE,6DAA6D,EAAE,OAAOM,IAAE,aAAa,EAAE,OAAON,IAAE,yDAAyD,EAAE,OAAOM,IAAE,aAAa,EAAE,OAAON,IAAE,0DAA0D,EAAE,OAAOM,IAAE,aAAa,EAAE,OAAON,IAAE,IAAI,CAAC;AAAE,UAAAQ,MAAG,YAAU,OAAOP,OAAIO,KAAEN,GAAE,QAAQ,IAAI,OAAO,cAAc,+DAA+D,OAAOD,IAAE,aAAa,EAAE,OAAOD,IAAE,mFAAmF,EAAE,OAAOC,IAAE,aAAa,EAAE,OAAOD,IAAE,+EAA+E,EAAE,OAAOC,IAAE,aAAa,EAAE,OAAOD,IAAE,gFAAgF,EAAE,OAAOC,IAAE,aAAa,EAAE,OAAOD,IAAE,IAAI,CAAC;AAAG,cAAIS,KAAED,KAAE,WAAWA,GAAE,aAAa,IAAI,CAAC,IAAE,GAAEG,KAAEH,KAAE,WAAWA,GAAE,aAAa,IAAI,CAAC,IAAE,GAAEI,KAAEJ,KAAE,WAAWA,GAAE,aAAa,UAAU,CAAC,IAAE,GAAEE,KAAEP,GAAE,UAAU,EAAE,sBAAsB,GAAEW,KAAEN,OAAIA,GAAE,UAAU,SAAS,6BAA6B,KAAGA,GAAE,UAAU,SAAS,yBAAyB;AAAG,UAAAN,GAAE,QAAQ,cAAYM,MAAG,CAACM,OAAIL,MAAGJ,KAAE,KAAG,IAAEO,KAAE,IAAE,IAAGJ,MAAGM,MAAGZ,GAAE,QAAQ,gBAAcO,MAAGG,KAAE,MAAIV,GAAE,QAAQ,oBAAkBO,KAAEN,GAAE,oBAAoBH,KAAE,CAAC,IAAEG,GAAE,yBAAuB,GAAE,MAAMM,EAAC,MAAIA,KAAEN,GAAE,oBAAoBH,EAAC,IAAEG,GAAE,yBAAuB,KAAID,GAAE,QAAQ,kBAAgBS,MAAGR,GAAE,YAAY,WAASD,GAAE,OAAO,QAAQ,eAAaS,KAAER,GAAE,EAAE,UAAQO,GAAE,MAAIP,GAAE,YAAY,WAAS,IAAEQ,KAAER,GAAE,YAAY,WAAS,KAAGD,GAAE,QAAQ,eAAaS,KAAET,GAAE,QAAQ,aAAYA,GAAE,QAAQ,mBAAiB,KAAK,gBAAgBO,EAAC,GAAEN,GAAE,gBAAc,KAAK,YAAYM,IAAEE,MAAGT,GAAE,QAAQ,UAAU;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAAx5kN,UAA05kNuE,MAAG,WAAU;AAAC,iBAASvE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,QAAMA,IAAE,KAAK,MAAIA,GAAE,KAAI,KAAK,kBAAgB,IAAIqE,IAAGrE,EAAC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAE,IAAIqB,GAAE,KAAK,GAAG,GAAEpB,KAAE,IAAIuC,GAAE,KAAK,GAAG,GAAEtC,KAAEH,GAAE,QAAQ,IAAI,OAAO,iBAAiB,oBAAoB;AAAE,UAAAG,KAAEc,GAAEd,EAAC,GAAEH,GAAE,OAAO,MAAM,WAASG,GAAE,KAAM,SAASH,IAAEC,IAAE;AAAC,mBAAO,WAAWD,GAAE,aAAa,gBAAgB,CAAC,IAAE,WAAWC,GAAE,aAAa,gBAAgB,CAAC;AAAA,UAAC,CAAE;AAAE,mBAAQI,KAAE,GAAEA,KAAEF,GAAE,QAAOE,MAAI;AAAC,gBAAIC,KAAEH,GAAEE,EAAC,EAAE,cAAc,iCAAiC;AAAE,gBAAG,SAAOC,IAAE;AAAC,kBAAIE,KAAE,QAAOC,KAAE,sBAAsB,QAAQ,KAAK,OAAO,IAAE,GAAG,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;AAAE,yBAAST,GAAE,OAAO,MAAM,QAAM,WAASA,GAAE,OAAO,MAAM,QAAMA,GAAE,QAAQ,eAAaA,GAAE,OAAO,QAAQ,cAAYS,MAAG;AAAsB,kBAAIE,KAAET,GAAE,gBAAgB,EAAC,UAASO,IAAE,aAAY,OAAOH,GAAE,aAAa,gBAAgB,CAAC,EAAC,CAAC;AAAE,eAACE,KAAEP,GAAE,WAAW,GAAE,GAAEU,EAAC,GAAG,KAAK,aAAa,uBAAsB,CAAC;AAAE,kBAAIC,KAAE,SAAS,gBAAgBZ,GAAE,QAAQ,OAAM,GAAG;AAAE,cAAAY,GAAE,UAAU,IAAI,2BAA2B,GAAEA,GAAE,YAAYJ,GAAE,IAAI,GAAEF,GAAE,YAAYM,EAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASZ,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKE,KAAE,KAAK;AAAE,uBAAWA,GAAE,OAAO,MAAM,QAAM,KAAK,aAAaL,IAAEC,EAAC;AAAE,cAAIK,KAAEL,GAAE,aAAa,IAAI,GAAEO,KAAEP,GAAE,aAAa,IAAI;AAAE,cAAG,SAAOC,MAAG,SAAOC,OAAIG,KAAEJ,IAAEM,KAAEL,KAAG,KAAK,gBAAgB,gBAAgBG,EAAC,GAAE,CAAC,KAAK,cAAa;AAAC,gBAAG,YAAUD,GAAE,OAAO,MAAM,MAAK;AAAC,kBAAII,KAAE,KAAK,MAAM,UAAU,EAAE,sBAAsB;AAAE,cAAAH,KAAE,KAAK,MAAM,EAAE,UAAQG,GAAE;AAAA,YAAI;AAAC,iBAAK,gBAAgB,YAAYH,IAAEE,IAAEH,GAAE,OAAO,QAAQ,MAAM,IAAI;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASL,IAAE;AAAC,mBAAQC,KAAE,KAAK,GAAEC,KAAE,MAAKC,KAAE,KAAK,OAAME,KAAEL,IAAEM,KAAEL,GAAE,QAAQ,IAAI,OAAO,iBAAiB,yEAAyE,GAAEO,KAAEP,GAAE,OAAO,QAAQ,MAAM,MAAKQ,KAAE,GAAEA,KAAEH,GAAE,QAAOG,MAAI;AAAC,gBAAIE,KAAEL,GAAEG,EAAC,EAAE,aAAa,KAAK,GAAEG,KAAEN,GAAEG,EAAC,EAAE,aAAa,OAAO;AAAE,gBAAG,WAASD,OAAIA,KAAEP,GAAE,QAAQ,QAAQ,KAAKW,EAAC,IAAEX,GAAE,OAAO,QAAQ,MAAM,aAAYI,OAAI,SAASM,IAAE,EAAE,GAAE;AAAC,cAAAT,GAAE,aAAaG,IAAEC,GAAEG,EAAC,CAAC;AAAE,kBAAIC,KAAEJ,GAAEG,EAAC,EAAE,aAAa,IAAI,GAAEK,KAAER,GAAEG,EAAC,EAAE,aAAa,IAAI;AAAE,cAAAP,GAAE,gBAAgB,gBAAgBQ,EAAC,GAAEP,GAAE,gBAAcD,GAAE,gBAAgB,YAAYQ,IAAEI,IAAEN,EAAC;AAAA,YAAC,MAAM,CAAAN,GAAE,aAAaI,GAAEG,EAAC,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAAST,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,QAAQ,MAAM,MAAKG,KAAE,MAAIL,KAAEC,GAAE,WAAW,aAAWA,GAAE,WAAW;AAAU,cAAG,QAAMI,GAAE,aAAa,qBAAqB,GAAE;AAAC,gBAAIC,KAAE,SAASD,GAAE,aAAa,OAAO,GAAE,EAAE;AAAE,uBAASF,OAAIA,KAAED,GAAE,QAAQ,QAAQ,KAAKI,EAAC,IAAEJ,GAAE,OAAO,QAAQ,MAAM,aAAYC,KAAE,MAAIA,KAAE;AAAG,gBAAIK,KAAE,KAAK,MAAM,YAAY,iBAAiBP,IAAEE,EAAC;AAAE,YAAAF,GAAE,aAAa,KAAIO,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASR,IAAE;AAAC,cAAIC,KAAE,WAAWD,GAAE,aAAa,qBAAqB,CAAC,GAAEE,KAAE,KAAK,MAAM,YAAY,iBAAiBF,IAAEC,EAAC;AAAE,UAAAD,GAAE,aAAa,KAAIE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,mBAAQF,KAAE,KAAK,EAAE,QAAQ,IAAI,OAAO,iBAAiB,yEAAyE,GAAEC,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,gBAAIC,KAAE,WAAWF,GAAEC,EAAC,EAAE,aAAa,qBAAqB,CAAC;AAAE,gBAAGkB,GAAE,SAASjB,EAAC,KAAGA,MAAG,GAAE;AAAC,kBAAIC,KAAE,KAAK,MAAM,YAAY,iBAAiBH,GAAEC,EAAC,GAAEC,EAAC;AAAE,cAAAF,GAAEC,EAAC,EAAE,aAAa,KAAIE,EAAC;AAAA,YAAC,MAAM,CAAAH,GAAEC,EAAC,EAAE,aAAa,KAAI,MAAM;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAA7/qN,UAA+/qNwE,MAAG,WAAU;AAAC,iBAASxE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE;AAAE,cAAIE,KAAE,KAAK;AAAE,eAAK,QAAMF,IAAE,KAAK,4BAA0B,CAACE,GAAE,QAAQ,mBAAiB,eAAaA,GAAE,OAAO,MAAM,QAAMA,GAAE,OAAO,YAAY,IAAI;AAAA,QAAiB;AAAC,eAAOE,GAAEL,IAAE,CAAC,EAAC,KAAI,WAAU,OAAM,SAASA,IAAEC,IAAE;AAAC,iBAAO,WAAWD,GAAE,OAAO,aAAaC,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,KAAIG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,MAAKQ,KAAE,KAAK,OAAMC,KAAE,KAAK;AAAE,cAAGR,GAAE,OAAO,UAAU,SAAS,cAAc,OAAOK,IAAE,OAAO,CAAC,GAAE;AAAC,gBAAIK,KAAE,KAAK,QAAQV,IAAE,GAAG,GAAEW,KAAE,KAAK,QAAQX,IAAE,GAAG,GAAES,KAAE,KAAK,QAAQT,IAAE,IAAI,GAAEa,KAAE,KAAK,QAAQb,IAAE,IAAI,GAAEc,KAAE,KAAK,QAAQd,IAAE,OAAO,GAAEY,KAAE,KAAK,QAAQZ,IAAE,QAAQ;AAAE,gBAAGO,GAAE,cAAc,gBAAgB,EAAC,SAAQN,GAAE,SAAQ,GAAES,IAAE,GAAEC,IAAE,QAAO,OAAG,GAAEX,GAAC,CAAC,GAAEQ,GAAE,QAAQ,sBAAoBE,IAAEF,GAAE,QAAQ,yBAAuBG,IAAET,KAAEO,KAAEF,GAAE,YAAY,UAAQ,IAAEO,IAAEV,KAAES,KAAEN,GAAE,YAAY,WAAS,IAAEK,KAAE,GAAEL,GAAE,gBAAgB,gBAAgBE,KAAEK,KAAE,CAAC,GAAEZ,KAAEM,GAAE,QAAQ,YAAU,MAAIN,KAAEO,KAAEF,GAAE,YAAY,UAAQ,IAAEO,KAAGP,GAAE,EAAE,OAAO,QAAQ,cAAa;AAAC,kBAAIQ,KAAEP,GAAE,QAAQ,IAAI,OAAO,sBAAsB;AAAE,cAAAN,KAAEM,GAAE,QAAQ,UAAQO,GAAE,QAAMb,KAAEM,GAAE,QAAQ,YAAU,IAAED,GAAE,YAAY,UAAQ,IAAGH,KAAEI,GAAE,QAAQ,UAAQO,GAAE,OAAKX,KAAEI,GAAE,QAAQ,aAAW,IAAED,GAAE,YAAY,WAAS;AAAA,YAAE;AAAA,UAAC;AAAC,iBAAM,EAAC,GAAEL,IAAE,GAAEE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASL,IAAE;AAAC,cAAIC,IAAEC,IAAEC,KAAEH,GAAE,GAAEK,KAAEL,GAAE,KAAIM,KAAEN,GAAE,GAAEQ,KAAER,GAAE,GAAES,KAAE,KAAK,GAAEE,KAAE,KAAK;AAAM,cAAGR,GAAE,OAAO,UAAU,SAAS,mBAAmB,GAAE;AAAC,gBAAIS,KAAE,SAASP,GAAE,MAAM,aAAa,IAAI,GAAE,EAAE,GAAEK,KAAE,SAASL,GAAE,MAAM,aAAa,IAAI,GAAE,EAAE,GAAES,KAAE,WAAWT,GAAE,MAAM,aAAa,KAAK,CAAC;AAAE,gBAAGH,KAAE,SAASG,GAAE,MAAM,aAAa,KAAK,GAAE,EAAE,GAAEJ,KAAE,SAASI,GAAE,MAAM,WAAW,WAAW,WAAW,aAAa,KAAK,GAAE,EAAE,IAAE,GAAEM,GAAE,WAAU;AAAC,kBAAII,KAAEI,GAAE,aAAad,GAAE,OAAM,mBAAmB;AAAE,cAAAU,OAAId,KAAE,SAASc,GAAE,aAAa,gBAAgB,GAAE,EAAE;AAAA,YAAE;AAAC,gBAAGJ,GAAE,cAAc,gBAAgB,EAAC,SAAQN,GAAE,SAAQ,GAAEJ,IAAE,GAAEC,IAAE,QAAO,CAACS,GAAE,mBAAiBF,GAAE,OAAO,QAAQ,QAAO,GAAEN,GAAC,CAAC,GAAE,cAAYA,GAAE,QAAMQ,GAAE,YAAYR,IAAEF,IAAEC,EAAC,GAAEO,GAAE,QAAQ,sBAAoBR,IAAEQ,GAAE,QAAQ,yBAAuBP,IAAEI,KAAEM,IAAEJ,KAAEE,KAAED,GAAE,QAAQ,aAAW,MAAIE,GAAE,YAAY,UAASA,GAAE,EAAE,OAAO,QAAQ,cAAa;AAAC,kBAAIE,KAAEF,GAAE,UAAU,EAAE,sBAAsB;AAAE,cAAAH,KAAEG,GAAE,EAAE,UAAQF,GAAE,QAAQ,aAAWI,GAAE;AAAA,YAAG;AAAC,YAAAC,KAAE,MAAIN,KAAEE,KAAGC,GAAE,OAAO,oBAAoBT,IAAEG,GAAE,OAAMC,IAAEE,EAAC;AAAA,UAAC;AAAC,iBAAM,EAAC,GAAEF,IAAE,GAAEE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASR,IAAE;AAAC,cAAIC,IAAEC,IAAEC,KAAEH,GAAE,GAAEK,KAAEL,GAAE,KAAIM,KAAE,KAAK,GAAEE,KAAE,KAAK,OAAMC,KAAED,GAAE,aAAa,GAAEG,KAAE,GAAEC,KAAE,GAAEF,KAAE,GAAEI,KAAE,KAAK,gBAAgB,EAAC,GAAEX,IAAE,KAAIE,GAAC,CAAC;AAAE,UAAAJ,KAAEa,GAAE;AAAE,cAAIC,KAAED,GAAE;AAAE,UAAAR,GAAE,QAAQ,sBAAoBL,IAAEK,GAAE,QAAQ,yBAAuBS,IAAET,GAAE,QAAQ,mBAAiBE,GAAE,YAAY,QAAQ,KAAG,CAACF,GAAE,OAAO,QAAQ,UAAQM,KAAEE,GAAE,GAAEJ,KAAEI,GAAE,GAAEZ,KAAE,MAAM,QAAQI,GAAE,OAAO,OAAO,KAAK,IAAEA,GAAE,OAAO,OAAO,MAAML,EAAC,IAAEK,GAAE,OAAO,OAAO,OAAMK,KAAEC,MAAGN,GAAE,QAAQ,eAAaA,GAAE,OAAO,QAAQ,WAASK,MAAG,IAAG,MAAMD,EAAC,MAAIA,KAAEJ,GAAE,QAAQ,YAAUE,GAAE,YAAY;AAAU,cAAIK,KAAE,SAASR,GAAE,MAAM,WAAW,aAAa,gBAAgB,GAAE,EAAE;AAAE,cAAGC,GAAE,QAAQ,kBAAgBA,GAAE,OAAO,MAAMO,EAAC,KAAGP,GAAE,OAAO,MAAMO,EAAC,EAAE,WAASP,GAAE,OAAO,MAAM,CAAC,EAAE,UAASM,KAAEJ,GAAE,YAAY,UAAQF,GAAE,QAAQ,YAAUM,MAAGJ,GAAE,YAAY,UAAQI,KAAE,MAAIA,KAAE,IAAGJ,GAAE,EAAE,OAAO,QAAQ,cAAa;AAAC,gBAAIQ,KAAER,GAAE,UAAU,EAAE,sBAAsB;AAAE,YAAAE,KAAEF,GAAE,EAAE,UAAQQ,GAAE;AAAA,UAAG;AAAC,mBAAOR,GAAE,YAAUA,GAAE,UAAQF,GAAE,QAAQ,IAAI,OAAO,cAAc,qBAAqB,IAAGA,GAAE,OAAO,QAAQ,WAASA,GAAE,QAAQ,gBAAc,IAAEE,GAAE,gBAAgB,gBAAgBG,KAAET,KAAE,CAAC,IAAEM,GAAE,gBAAgB,gBAAgBG,EAAC,IAAG,CAACH,GAAE,iBAAe,CAACF,GAAE,OAAO,QAAQ,UAAQA,GAAE,QAAQ,mBAAiBE,GAAE,YAAY,QAAQ,OAAKE,KAAEA,KAAEJ,GAAE,QAAQ,aAAWE,GAAE,YAAY,WAAS,GAAEC,GAAE,MAAM,OAAKG,KAAEN,GAAE,QAAQ,aAAW,MAAKG,GAAE,MAAM,MAAIC,KAAE;AAAA,QAAK,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASV,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAEF,GAAE,GAAEG,KAAEH,GAAE,KAAIK,KAAE,KAAK,GAAEC,KAAE,MAAKE,KAAE,KAAK,OAAMC,KAAE,GAAEE,KAAE,GAAEC,KAAE,GAAEF,KAAE,GAAEI,KAAE,GAAEC,KAAEb,GAAE,OAAO;AAAU,cAAGa,GAAE,SAAS,qBAAqB,KAAGA,GAAE,SAAS,6BAA6B,KAAGA,GAAE,SAAS,yBAAyB,KAAGA,GAAE,SAAS,0BAA0B,GAAE;AAAC,gBAAIF,KAAEX,GAAE,QAAOc,KAAEH,GAAE,sBAAsB,GAAEI,KAAEd,GAAE,OAAO,sBAAsB,GAAEC,KAAEY,GAAE;AAAO,YAAAF,KAAEE,GAAE;AAAO,gBAAIE,KAAEF,GAAE,OAAMT,KAAE,SAASM,GAAE,aAAa,IAAI,GAAE,EAAE,GAAEM,KAAE,SAASN,GAAE,aAAa,IAAI,GAAE,EAAE;AAAE,YAAAH,KAAE,WAAWG,GAAE,aAAa,UAAU,CAAC;AAAE,gBAAIO,KAAE,gBAAclB,GAAE,OAAKA,GAAE,QAAQ,CAAC,EAAE,UAAQA,GAAE;AAAQ,YAAAI,KAAE,SAASO,GAAE,aAAa,GAAG,GAAE,EAAE,GAAEJ,KAAE,SAASI,GAAE,WAAW,aAAa,KAAK,GAAE,EAAE,IAAE;AAAE,gBAAIQ,KAAER,GAAE,aAAa,eAAe,GAAES,KAAET,GAAE,aAAa,eAAe;AAAE,YAAAR,GAAE,QAAQ,gBAAcI,KAAE,SAASI,GAAE,WAAW,aAAa,gBAAgB,GAAE,EAAE;AAAG,gBAAIU,KAAE,SAASvB,IAAE;AAAC,qBAAOK,GAAE,QAAQ,aAAWE,KAAEW,KAAE,IAAEjB,GAAE,4BAA0BM,KAAEW,KAAE,IAAEX,KAAEC,GAAE,yBAAuBU,KAAE;AAAA,YAAC,GAAEM,KAAE,WAAU;AAAC,qBAAOL,KAAEX,GAAE,0BAAwBJ,KAAE,IAAEI,GAAE,YAAY,WAAS;AAAA,YAAC;AAAE,YAAAA,GAAE,cAAc,gBAAgB,EAAC,SAAQL,GAAE,SAAQ,GAAEM,IAAE,GAAEH,IAAE,IAAGe,KAAE,SAASA,IAAE,EAAE,IAAE,MAAK,IAAGC,KAAE,SAASA,IAAE,EAAE,IAAE,MAAK,QAAO,CAACd,GAAE,mBAAiBH,GAAE,OAAO,QAAQ,QAAO,GAAEH,GAAC,CAAC,GAAEG,GAAE,OAAO,QAAQ,eAAaA,GAAE,QAAQ,mBAAiBM,KAAES,KAAEH,GAAE,OAAK,IAAGL,KAAEY,GAAE,MAAIb,KAAEY,GAAE,GAAEX,KAAEV,GAAE,UAAQe,GAAE,MAAIT,GAAE,YAAY,WAAS,IAAE,MAAIH,GAAE,QAAQ,oBAAkBM,KAAEJ,MAAGC,GAAE,SAAS,sBAAoBG,KAAEJ,KAAEC,GAAE,YAAY,UAASI,KAAEY,GAAE,MAAIb,KAAEY,GAAE,GAAEX,KAAEO;AAAA,UAAE;AAAC,iBAAM,EAAC,GAAER,IAAE,GAAEC,IAAE,WAAUE,IAAE,UAASJ,IAAE,GAAED,IAAE,GAAEH,GAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEN;AAAA,MAAC,EAAE;AAA520N,UAA820NyE,MAAG,WAAU;AAAC,iBAASzE,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,QAAMA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAE,KAAK,OAAMC,KAAE,aAAWF,GAAE,OAAO,MAAM;AAAS,UAAAC,GAAE,YAAUC,KAAEF,GAAE,QAAQ,aAAW,IAAE,CAACA,GAAE,QAAQ,cAAYA,GAAE,OAAO,MAAM,UAAU,SAAO;AAAE,cAAIG,KAAED,KAAE,2DAAyD,uDAAsDG,KAAEL,GAAE,QAAQ,IAAI;AAAO,UAAAC,GAAE,0BAAwB,SAAOD,GAAE,QAAQ,IAAI,OAAO,cAAc,0BAA0B,MAAIC,GAAE,eAAa,SAAS,cAAc,KAAK,GAAEA,GAAE,aAAa,aAAa,SAAQE,KAAE,uBAAqBH,GAAE,OAAO,QAAQ,KAAK,GAAEK,GAAE,YAAYJ,GAAE,YAAY,GAAEA,GAAE,mBAAiB,SAAS,cAAc,KAAK,GAAEA,GAAE,iBAAiB,UAAU,IAAI,8BAA8B,GAAEA,GAAE,iBAAiB,MAAM,aAAWD,GAAE,OAAO,MAAM,QAAQ,MAAM,cAAYA,GAAE,OAAO,MAAM,YAAWC,GAAE,iBAAiB,MAAM,WAASD,GAAE,OAAO,MAAM,QAAQ,MAAM,UAASC,GAAE,aAAa,YAAYA,GAAE,gBAAgB;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,mBAAQD,KAAE,KAAK,GAAEC,KAAE,KAAK,OAAMC,KAAE,GAAEA,KAAEF,GAAE,OAAO,MAAM,QAAOE,MAAI;AAAC,gBAAIC,KAAEH,GAAE,OAAO,MAAME,EAAC,EAAE,YAAUF,GAAE,OAAO,MAAME,EAAC,EAAE,WAAW;AAAS,YAAAD,GAAE,YAAUE,KAAEH,GAAE,QAAQ,YAAU,IAAE;AAAE,gBAAIK,KAAE,mDAAmD,OAAOH,IAAEC,KAAE,mCAAiC,+BAA+B,GAAEG,KAAEN,GAAE,QAAQ,IAAI;AAAO,qBAAOA,GAAE,QAAQ,IAAI,OAAO,cAAc,oDAAoD,OAAOE,EAAC,CAAC,MAAID,GAAE,eAAa,SAAS,cAAc,KAAK,GAAEA,GAAE,aAAa,aAAa,SAAQI,KAAE,uBAAqBL,GAAE,OAAO,QAAQ,KAAK,GAAEM,GAAE,YAAYL,GAAE,YAAY,GAAE,MAAIC,OAAID,GAAE,mBAAiB,CAAC,IAAGA,GAAE,iBAAiBC,EAAC,IAAE,SAAS,cAAc,KAAK,GAAED,GAAE,iBAAiBC,EAAC,EAAE,UAAU,IAAI,8BAA8B,GAAED,GAAE,aAAa,YAAYA,GAAE,iBAAiBC,EAAC,CAAC;AAAA,UAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,GAAEC,KAAE,KAAK,OAAMC,KAAED,GAAE,iBAAiB;AAAE,cAAGA,GAAE,mBAAiB,SAASD,GAAE,OAAO,MAAM,WAAW,OAAM,EAAE,GAAEA,GAAE,QAAQ,aAAY;AAAC,gBAAIG,KAAEH,GAAE,QAAQ,IAAI,OAAO,cAAc,sBAAsB;AAAE,gBAAG,SAAOG,MAAG,eAAaH,GAAE,OAAO,MAAM,WAAW,OAAM;AAAC,kBAAIK,KAAE,WAAWF,GAAE,aAAa,UAAU,CAAC;AAAE,cAAAF,GAAE,mBAAiBI;AAAA,YAAC,WAAS,gBAAcL,GAAE,OAAO,MAAM,WAAW,OAAM;AAAC,kBAAIM,KAAEN,GAAE,QAAQ,OAAO;AAAO,cAAAC,GAAE,mBAAiBD,GAAE,QAAQ,YAAUM;AAAA,YAAC;AAAA,UAAC,WAAS,gBAAcN,GAAE,OAAO,MAAM,WAAW,OAAM;AAAC,gBAAIQ,KAAER,GAAE,QAAQ,OAAO;AAAO,YAAAC,GAAE,mBAAiBD,GAAE,QAAQ,YAAUQ;AAAA,UAAC,WAAS,eAAaR,GAAE,OAAO,MAAM,WAAW,OAAM;AAAC,gBAAIS,KAAET,GAAE,QAAQ,IAAI,OAAO,cAAc,sBAAsB;AAAE,gBAAG,SAAOS,IAAE;AAAC,kBAAIE,KAAE,WAAWF,GAAE,aAAa,UAAU,CAAC;AAAE,cAAAR,GAAE,mBAAiBU;AAAA,YAAC,MAAM,CAAAV,GAAE,mBAAiB;AAAA,UAAC;AAAC,UAAAD,GAAE,QAAQ,oBAAkBC,GAAE,mBAAiB,IAAG,SAAOC,MAAGD,GAAE,mBAAiB,KAAGC,GAAE,aAAa,SAAQD,GAAE,gBAAgB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK,GAAEC,KAAE,KAAK;AAAM,UAAAA,GAAE,cAAYD,GAAE,QAAQ,IAAI,OAAO,cAAc,yBAAyB,GAAEC,GAAE,oBAAkBD,GAAE,QAAQ,IAAI,OAAO,cAAc,gCAAgC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,OAAME,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQG,KAAEF,GAAE,eAAeN,EAAC;AAAE,cAAGG,GAAE,cAAcH,EAAC,KAAGQ,GAAE,SAAO,GAAE;AAAC,gBAAIC,KAAEH,GAAE,iBAAiBN,EAAC,GAAEW,KAAER,GAAE,UAAU,EAAE,sBAAsB,GAAES,KAAEJ,GAAE,CAAC,GAAEE,KAAE;AAAE,YAAAR,GAAE,OAAO,SAAO,MAAIQ,KAAEE;AAAG,gBAAIE,MAAGb,KAAEU,GAAE,OAAKT,GAAE,OAAOQ,EAAC,GAAEK,KAAET,GAAE,QAAQM,EAAC,IAAEN,GAAE,QAAQM,EAAC,GAAEC,KAAEP,GAAE,QAAQM,EAAC,KAAGG,KAAED;AAAG,YAAAT,GAAE,OAAO,MAAML,EAAC,EAAE,aAAWa,KAAEP,GAAE,QAAQM,EAAC,KAAGG,KAAED,MAAIX,GAAE,gBAAgB,gBAAgBF,KAAEU,GAAE,GAAG,GAAER,GAAE,iBAAiBH,EAAC,EAAE,YAAUS,GAAEI,EAAC,GAAEV,GAAE,gBAAgB,iBAAiBH,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAA117N,UAA417N0E,MAAG,WAAU;AAAC,iBAAS1E,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAE,cAAIE,KAAE,KAAK;AAAE,eAAK,UAAQA,GAAE,OAAO,SAAQ,KAAK,cAAY,IAAIiE,IAAG,IAAI,GAAE,KAAK,gBAAc,IAAIC,IAAG,IAAI,GAAE,KAAK,kBAAgB,IAAIC,IAAG,IAAI,GAAE,KAAK,SAAO,IAAIC,IAAG,IAAI,GAAE,KAAK,YAAU,IAAIC,IAAG,IAAI,GAAE,KAAK,cAAY,IAAIC,IAAG,IAAI,GAAE,KAAK,kBAAgB,KAAK,QAAQ,WAAU,KAAK,mBAAiB,KAAK,QAAQ,EAAE,MAAK,KAAK,eAAa,KAAK,QAAQ,MAAM,SAAQ,KAAK,eAAa,MAAK,KAAK,aAAW,MAAK,KAAK,cAAY,CAACtE,GAAE,QAAQ,mBAAiB,KAAK,QAAQ,QAAO,KAAK,gBAAc,KAAK,IAAI;AAAA,QAAC;AAAC,eAAOE,GAAEL,IAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,SAASA,IAAE;AAAC,iBAAOA,OAAIA,KAAE,OAAMA,GAAE,EAAE,QAAQ,IAAI,SAAOA,GAAE,EAAE,QAAQ,IAAI,OAAO,cAAc,qBAAqB,IAAE;AAAA,QAAI,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,iBAAO,KAAK,EAAE,QAAQ,IAAI,OAAO,cAAc,yBAAyB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,WAAU;AAAC,iBAAO,KAAK,EAAE,QAAQ,IAAI,OAAO,cAAc,kBAAkB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,eAAK,WAASD,IAAE,KAAK,wBAAsBC,GAAE,OAAO,MAAM,QAAQ,WAASA,GAAE,QAAQ,YAAW,KAAK,gBAAcA,GAAE,OAAO,MAAM,IAAK,SAASD,IAAEE,IAAE;AAAC,mBAAM,CAAC,EAAEF,GAAE,QAAMA,GAAE,QAAQ,WAASC,GAAE,QAAQ;AAAA,UAAW,CAAE,GAAE,KAAK,yBAAuB,CAAC,GAAEA,GAAE,QAAQ,eAAa,KAAK,mBAAiB;AAAI,cAAIC,KAAE,SAAS,cAAc,KAAK;AAAE,cAAGA,GAAE,UAAU,IAAI,oBAAoB,GAAED,GAAE,OAAO,QAAQ,YAAUC,GAAE,UAAU,IAAID,GAAE,OAAO,QAAQ,QAAQ,GAAEC,GAAE,UAAU,IAAI,oBAAoB,OAAO,KAAK,QAAQ,KAAK,CAAC,GAAED,GAAE,QAAQ,IAAI,OAAO,YAAYC,EAAC,GAAED,GAAE,QAAQ,YAAW;AAAC,iBAAK,YAAY,iBAAiB,GAAE,KAAK,YAAY,iBAAiB,GAAE,KAAK,YAAY,mBAAmB,GAAE,KAAK,YAAY,iBAAiB;AAAE,gBAAIE,KAAE,IAAI4C,GAAE,KAAK,GAAG;AAAE,iBAAK,sBAAoB5C,GAAE,uBAAuB;AAAA,UAAC;AAAC,cAAG,CAACF,GAAE,QAAQ,eAAa,CAAC,KAAK,QAAQ,aAAW,eAAaA,GAAE,OAAO,MAAM,QAAM,KAAK,QAAQ,WAAS,KAAK,kBAAgB,OAAI,MAAIA,GAAE,OAAO,QAAQ,QAAM,MAAIA,GAAE,QAAQ,QAAQ,eAAa,KAAK,OAAO,kBAAkB,IAAI,GAAEA,GAAE,QAAQ,gBAAgB,WAASA,GAAE,QAAQ,OAAO,QAAO;AAAC,iBAAK,0BAAwBA,GAAE,QAAQ,aAAWA,GAAE,QAAQ,YAAW,KAAK,yBAAuBA,GAAE,QAAQ,YAAUA,GAAE,QAAQ,YAAW,KAAK,qBAAmB,KAAK,eAAa,SAAS,cAAc,KAAK,GAAE,KAAK,aAAa,UAAU,IAAI,0BAA0B,GAAE,KAAK,aAAa,MAAM,aAAW,KAAK,QAAQ,MAAM,cAAYA,GAAE,OAAO,MAAM,YAAW,KAAK,aAAa,MAAM,WAAS,KAAK,QAAQ,MAAM,UAASC,GAAE,YAAY,KAAK,YAAY;AAAG,gBAAIG,KAAEJ,GAAE,QAAQ,OAAO;AAAO,aAACA,GAAE,QAAQ,YAAUA,GAAE,QAAQ,gBAAc,KAAK,QAAQ,WAASI,KAAE,KAAK,kBAAgB,IAAEJ,GAAE,QAAQ,OAAO,SAAQ,KAAK,eAAaA,GAAE,QAAQ,IAAI,OAAO,iBAAiB,yBAAyB,GAAE,KAAK,UAAQ,KAAK,iBAAiBI,EAAC,GAAE,KAAK,aAAa;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASL,IAAE;AAAC,mBAAQC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,CAAC,GAAEE,KAAE,KAAK,aAAa,GAAEC,KAAE,SAASA,IAAE;AAAC,gBAAIE,KAAE,SAAS,cAAc,KAAK;AAAE,YAAAA,GAAE,UAAU,IAAI,mCAAkC,mCAAmC,OAAOF,EAAC,CAAC,GAAEE,GAAE,MAAM,QAAMN,GAAE,OAAO,QAAQ,eAAaF,KAAEM,KAAEA,KAAE;AAAE,gBAAIG,KAAE,SAAS,cAAc,MAAM;AAAE,YAAAA,GAAE,UAAU,IAAI,2BAA2B,GAAEA,GAAE,MAAM,kBAAgBP,GAAE,QAAQ,OAAOI,EAAC,GAAEE,GAAE,YAAYC,EAAC;AAAE,gBAAIE,KAAE,SAAS,cAAc,KAAK;AAAE,YAAAA,GAAE,UAAU,IAAI,yBAAyB,GAAEA,GAAE,MAAM,aAAWV,GAAE,QAAQ,MAAM,cAAYC,GAAE,OAAO,MAAM,YAAWS,GAAE,MAAM,WAASV,GAAE,QAAQ,MAAM,UAAS,CAAC,KAAI,SAAQ,GAAG,EAAE,QAAS,SAASD,IAAE;AAAC,kBAAIC,KAAE,SAAS,cAAc,KAAK;AAAE,cAAAA,GAAE,UAAU,IAAI,sBAAsB,OAAOD,IAAE,QAAQ,CAAC;AAAE,kBAAIE,KAAE,SAAS,cAAc,MAAM;AAAE,cAAAA,GAAE,UAAU,IAAI,2BAA2B,OAAOF,IAAE,QAAQ,CAAC,GAAEC,GAAE,YAAYC,EAAC;AAAE,kBAAIC,KAAE,SAAS,cAAc,MAAM;AAAE,cAAAA,GAAE,UAAU,IAAI,2BAA2B,OAAOH,IAAE,QAAQ,CAAC,GAAEC,GAAE,YAAYE,EAAC,GAAEQ,GAAE,YAAYV,EAAC;AAAA,YAAC,CAAE,GAAEO,GAAE,YAAYG,EAAC,GAAEN,GAAE,YAAYG,EAAC,GAAEL,GAAE,KAAKK,EAAC;AAAA,UAAC,GAAEA,KAAE,GAAEA,KAAER,IAAEQ,KAAI,CAAAF,GAAEE,EAAC;AAAE,iBAAOL;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIH,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,MAAM,MAAKE,KAAE,KAAK,aAAa,GAAEC,KAAE,EAAE,UAAQF,MAAG,kBAAgBA,MAAG,cAAYA,MAAG,eAAaA,KAAGI,KAAE,WAASJ,MAAG,WAASA,MAAG,cAAYA,MAAG,aAAWA,MAAG,YAAUA,IAAEK,KAAEN,GAAE,QAAQ,IAAI,MAAM,MAAKQ,KAAE,KAAK,UAAU;AAAE,UAAAA,OAAI,KAAK,cAAYA,GAAE,sBAAsB;AAAG,cAAIC,IAAEE,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEF,KAAE,EAAC,WAAUJ,IAAE,QAAOE,IAAE,WAAUN,IAAE,UAASS,IAAE,UAASC,IAAE,SAAQ,KAAK,QAAO;AAAE,cAAGZ,GAAE,QAAQ,eAAaK,KAAEI,KAAET,GAAE,QAAQ,IAAI,OAAO,iBAAiB,oEAAoE,IAAEG,KAAEM,KAAET,GAAE,QAAQ,IAAI,OAAO,iBAAiB,qLAAqL,IAAE,cAAYC,MAAG,cAAYA,OAAIQ,KAAET,GAAE,QAAQ,IAAI,OAAO,iBAAiB,gFAAgF,IAAGS,MAAGA,GAAE,QAAQ,UAAQK,KAAE,GAAEA,KAAEL,GAAE,QAAOK,KAAI,CAAAH,GAAE,KAAKF,GAAEK,EAAC,EAAE,aAAa,IAAI,CAAC,GAAEF,GAAE,KAAKH,GAAEK,EAAC,EAAE,aAAa,IAAI,CAAC;AAAE,cAAGd,GAAE,QAAQ,YAAU,CAAC,KAAK,mBAAiBA,GAAE,QAAQ,eAAa,CAAC,KAAK,mBAAiBG,MAAG,KAAK,YAAY,QAAQ,KAAG,KAAK,QAAQ,OAAO,MAAK,uBAAuB,CAACG,EAAC,GAAEI,EAAC;AAAA,mBAAUP,MAAG,CAACH,GAAE,QAAQ,eAAaK,MAAG,KAAK,gBAAgB,MAAK,4BAA4BK,EAAC;AAAA,mBAAU,CAACV,GAAE,QAAQ,cAAY,cAAYC,MAAG,cAAYA,IAAE;AAAC,gBAAIc,KAAEf,GAAE,QAAQ,IAAI,OAAO,iBAAiB,oBAAoB;AAAE,iBAAK,uBAAuBe,IAAEL,EAAC;AAAA,UAAC;AAAC,cAAG,KAAK,iBAAgB;AAAC,gBAAIG,KAAEb,GAAE,QAAQ,IAAI,OAAO,iBAAiB,wFAAwF;AAAE,YAAAa,GAAE,SAAO,KAAG,KAAK,uBAAuBA,IAAEH,EAAC,GAAE,KAAK,YAAY,QAAQ,KAAG,CAAC,KAAK,QAAQ,UAAQ,KAAK,4BAA4BA,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIV,KAAE,KAAK,GAAEC,KAAE,KAAK,aAAa,GAAEC,KAAED,GAAE,sBAAsB,GAAEE,KAAED,GAAE,QAAM,IAAGG,KAAEH,GAAE,SAAO,IAAGI,KAAE,KAAK,QAAQ,MAAM,SAAQE,KAAE,KAAK,QAAQ,MAAM,SAAQC,KAAE,KAAK,QAAQ,MAAM,SAAS,YAAY;AAAE,iBAAOA,GAAE,QAAQ,OAAO,IAAE,OAAKH,KAAEA,KAAEN,GAAE,QAAQ,WAASG,KAAE,KAAIM,GAAE,QAAQ,QAAQ,IAAE,OAAKD,KAAEA,KAAER,GAAE,QAAQ,YAAUK,KAAE,KAAIJ,GAAE,MAAM,OAAKK,KAAE,MAAKL,GAAE,MAAM,MAAIO,KAAE,MAAK,EAAC,GAAEF,IAAE,GAAEE,IAAE,SAAQL,IAAE,UAASE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,+BAA8B,OAAM,SAASL,IAAE;AAAC,cAAIC,KAAE,KAAK,EAAE,QAAQ,IAAI,OAAO,iBAAiB,wJAAwJ;AAAE,eAAK,uBAAuBA,IAAED,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASA,IAAEC,IAAE;AAAC,mBAAQC,KAAE,MAAKC,KAAE,SAASA,IAAE;AAAC,gBAAIE,KAAE,EAAC,OAAML,GAAEG,EAAC,GAAE,WAAUF,GAAE,WAAU,UAASA,GAAE,UAAS,UAASA,GAAE,UAAS,QAAOA,GAAE,QAAO,WAAUA,GAAE,WAAU,SAAQA,GAAE,QAAO;AAAE,aAAC,aAAY,WAAU,aAAY,YAAW,UAAU,EAAE,IAAK,SAASA,IAAE;AAAC,qBAAOD,GAAEG,EAAC,EAAE,iBAAiBF,IAAEC,GAAE,cAAc,KAAKA,IAAEG,EAAC,GAAE,EAAC,SAAQ,OAAG,SAAQ,KAAE,CAAC;AAAA,YAAC,CAAE;AAAA,UAAC,GAAEA,KAAE,GAAEA,KAAEL,GAAE,QAAOK,KAAI,CAAAF,GAAEE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASL,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,IAAI,IAAE,KAAK;AAAc,UAAAA,MAAG,MAAI,KAAK,YAAYH,IAAEC,EAAC,KAAG,aAAa,KAAK,kBAAkB,GAAE,KAAK,qBAAmB,WAAY,WAAU;AAAC,YAAAC,GAAE,YAAYF,IAAEC,EAAC;AAAA,UAAC,GAAG,MAAIE,EAAC;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE;AAAK,eAAK,gBAAc,KAAK,IAAI;AAAE,cAAIC,KAAE,CAAC,GAAEE,KAAE,KAAK;AAAE,UAAAA,GAAE,OAAO,MAAM,UAAQF,KAAE,KAAK,IAAI,iBAAiB,IAAGE,GAAE,QAAQ,eAAaA,GAAE,QAAQ,SAAO,KAAG,KAAGA,GAAE,QAAQ,SAAO,IAAE,KAAG,MAAIA,GAAE,QAAQ,gBAAcF,GAAE,SAAOA,GAAE,QAAS,SAASA,IAAE;AAAC,gBAAIE,KAAEH,GAAE,aAAaC,EAAC,GAAEG,KAAE,EAAC,OAAMN,GAAE,OAAM,WAAUK,IAAE,UAASL,GAAE,UAAS,UAASA,GAAE,UAAS,QAAOA,GAAE,QAAO,WAAUA,GAAE,WAAU,SAAQG,GAAE,EAAE,QAAQ,QAAQ,QAAO;AAAE,YAAAA,GAAE,EAAE,QAAQ,SAAOD,GAAE,EAAE,QAAQ,QAAMC,GAAE,EAAE,QAAQ,SAAOD,GAAE,EAAE,QAAQ,QAAMC,GAAE,EAAE,QAAQ,QAAQ,qBAAqB,EAAC,UAASA,IAAE,OAAMA,GAAE,EAAE,QAAQ,SAAQ,KAAIG,IAAE,GAAEL,GAAC,CAAC;AAAA,UAAC,CAAE,IAAE,KAAK,qBAAqB,EAAC,UAAS,KAAK,KAAI,OAAM,KAAK,EAAE,QAAQ,SAAQ,KAAID,IAAE,GAAEC,GAAC,CAAC;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAED,GAAE,UAASE,KAAEF,GAAE,OAAMG,KAAEH,GAAE,KAAIK,KAAEL,GAAE,GAAEM,KAAEL,GAAE,GAAEO,KAAE,KAAK,aAAaP,EAAC;AAAE,cAAGO,IAAE;AAAC,gBAAGN,GAAE,cAAY,EAAC,GAAE,GAAE,GAAE,GAAE,SAAQM,GAAE,sBAAsB,EAAE,OAAM,UAASA,GAAE,sBAAsB,EAAE,OAAM,GAAEN,GAAE,IAAEG,IAAEH,GAAE,YAAY,QAAQ,KAAG,CAACI,GAAE,QAAQ,eAAa,CAACJ,GAAE;AAAY,kBAAG,KAAK,QAAQ,eAAe,oBAAoB,KAAI0C,GAAE3C,EAAC,EAAE,oBAAoBI,IAAEA,GAAE,OAAO,UAAU;AAAA;AAAE,YAAAH,GAAE,gBAAcA,GAAE,qBAAqB,GAAEI,GAAE,QAAQ,aAAWJ,GAAE,mBAAmB,EAAC,GAAEG,IAAE,KAAIF,IAAE,aAAYD,GAAE,YAAW,CAAC,IAAEA,GAAE,sBAAsB,EAAC,GAAEG,IAAE,KAAIF,IAAE,aAAYD,GAAE,YAAW,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASF,IAAE;AAAC,cAAIC,IAAEC,IAAEC,KAAEH,GAAE,GAAEK,KAAEL,GAAE,KAAIM,KAAE,KAAK,GAAEE,KAAEH,GAAE,OAAO,sBAAsB,GAAEI,KAAE,gBAAcN,GAAE,OAAKA,GAAE,QAAQ,CAAC,EAAE,UAAQA,GAAE,SAAQQ,KAAE,gBAAcR,GAAE,OAAKA,GAAE,QAAQ,CAAC,EAAE,UAAQA,GAAE;AAAQ,cAAG,KAAK,UAAQQ,IAAE,KAAK,UAAQF,IAAEH,GAAE,QAAQ,sBAAoB,IAAGA,GAAE,QAAQ,yBAAuB,IAAGK,KAAEH,GAAE,OAAKG,KAAEH,GAAE,MAAIA,GAAE,OAAO,MAAK,eAAeH,EAAC;AAAA,eAAM;AAAC,gBAAG,MAAM,QAAQ,KAAK,QAAQ,eAAe,KAAG,CAACC,GAAE,OAAO,QAAQ,QAAO;AAAC,kBAAIM,KAAE,SAASP,GAAE,MAAM,aAAa,OAAO,GAAE,EAAE;AAAE,kBAAG,KAAK,QAAQ,gBAAgB,QAAQO,EAAC,IAAE,EAAE,QAAO,KAAK,KAAK,eAAeP,EAAC;AAAA,YAAC;AAAC,gBAAIK,KAAE,KAAK,aAAa,GAAEI,KAAE,KAAK,iBAAiB,GAAEC,KAAE,CAAC;AAAE,YAAAT,GAAE,OAAO,MAAM,UAAQS,KAAE,KAAK,IAAI,gBAAgB;AAAG,gBAAIF,KAAEP,GAAE,QAAQ,YAAU,UAAQA,GAAE,OAAO,MAAM,QAAM,CAACA,GAAE,QAAQ,mBAAiB,KAAK,YAAY,QAAQ,KAAG,KAAK,QAAQ,UAAQA,GAAE,QAAQ,eAAa,KAAK,YAAY,QAAQ;AAAE,gBAAG,gBAAcH,GAAE,QAAM,gBAAcA,GAAE,QAAM,cAAYA,GAAE,MAAK;AAAC,kBAAGG,GAAE,QAAQ,gBAAgB,SAAOA,GAAE,QAAQ,yBAAyB,WAASA,GAAE,QAAQ,OAAO,OAAO;AAAO,uBAAOQ,MAAGA,GAAE,UAAU,IAAI,mBAAmB;AAAE,kBAAIE,KAAE,KAAK,cAAc,OAAQ,SAAShB,IAAE;AAAC,uBAAM,SAAKA;AAAA,cAAC,CAAE;AAAE,kBAAG,SAAO,KAAK,eAAagB,GAAE,UAAQ,KAAK,YAAY,UAAU,IAAI,mBAAmB,GAAEH,MAAG,CAAC,KAAK,mBAAiBE,GAAE,SAAO,EAAE,MAAK,oBAAoBZ,IAAEM,IAAEE,IAAEN,EAAC;AAAA,uBAAU,cAAYC,GAAE,OAAO,MAAM,QAAM,cAAYA,GAAE,OAAO,MAAM,MAAK;AAAC,oBAAIW,KAAE,KAAK,UAAU,sBAAsB,EAAC,GAAEd,IAAE,KAAIE,IAAE,GAAEJ,IAAE,GAAEC,IAAE,MAAKI,GAAE,OAAO,MAAM,KAAI,CAAC;AAAE,gBAAAL,KAAEgB,GAAE,GAAEf,KAAEe,GAAE,GAAEP,GAAE,MAAM,OAAKT,KAAE,MAAKS,GAAE,MAAM,MAAIR,KAAE;AAAA,cAAI,MAAM,MAAK,YAAY,QAAQ,KAAG,KAAK,UAAU,iBAAiB,EAAC,GAAEC,IAAE,KAAIE,GAAC,CAAC,GAAE,KAAK,YAAY,WAAW,KAAG,KAAK,UAAU,oBAAoB,EAAC,GAAEF,IAAE,KAAIE,IAAE,GAAEJ,IAAE,GAAEC,GAAC,CAAC;AAAE,kBAAG,KAAK,cAAc,OAAO,UAAQE,KAAE,GAAEA,KAAEE,GAAE,OAAO,MAAM,QAAOF,KAAI,MAAK,YAAY,qBAAqBA,IAAEO,IAAE,KAAK,QAAQ;AAAE,cAAAL,GAAE,QAAQ,IAAI,OAAO,UAAU,IAAI,2BAA2B,GAAED,GAAE,UAAU,UAAU,IAAI,mBAAmB;AAAA,YAAC,MAAK,gBAAaF,GAAE,QAAM,eAAaA,GAAE,QAAM,KAAK,eAAeE,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASL,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,KAAIG,KAAEH,GAAE,aAAYK,KAAE,KAAK,GAAEC,KAAEJ,GAAE,MAAM,aAAa,KAAK,GAAEM,KAAE,KAAK,aAAa,GAAEC,KAAEJ,GAAE,QAAQ,IAAI,OAAO,sBAAsB;AAAE,cAAG,gBAAcJ,GAAE,QAAM,gBAAcA,GAAE,MAAK;AAAC,YAAAI,GAAE,QAAQ,IAAI,OAAO,UAAU,IAAI,2BAA2B,GAAEG,GAAE,UAAU,IAAI,mBAAmB,GAAE,KAAK,cAAc,gBAAgB,EAAC,SAAQN,GAAE,SAAQ,GAAE,SAASI,IAAE,EAAE,IAAE,GAAE,QAAO,MAAE,CAAC;AAAE,gBAAIK,KAAEN,GAAE,QAAQ,UAAQI,GAAE,OAAKN,GAAE,UAAQ,GAAES,KAAEP,GAAE,QAAQ,UAAQI,GAAE,MAAIN,GAAE,WAAS;AAAG,gBAAGK,GAAE,MAAM,OAAKG,KAAE,MAAKH,GAAE,MAAM,MAAII,KAAE,MAAKP,GAAE,OAAO,OAAO,uBAAsB;AAAC,kBAAIK,KAAEJ,KAAE,GAAEQ,MAAG,GAAET,GAAE,OAAO,OAAO,uBAAuB,KAAK,aAAaK,EAAC,EAAE,aAAa,mBAAmB,GAAE,EAAC,aAAYA,IAAE,gBAAeA,IAAE,GAAEL,GAAC,CAAC;AAAE,mBAAK,aAAaK,EAAC,EAAE,YAAUI;AAAA,YAAC;AAAA,UAAC,MAAK,gBAAab,GAAE,QAAM,eAAaA,GAAE,SAAOO,GAAE,UAAU,OAAO,mBAAmB,GAAEH,GAAE,QAAQ,IAAI,OAAO,UAAU,OAAO,2BAA2B,GAAEA,GAAE,OAAO,OAAO,yBAAuB,KAAK,aAAa,QAAS,SAASL,IAAE;AAAC,gBAAIC,KAAED,GAAE,aAAa,mBAAmB;AAAE,YAAAA,GAAE,YAAU,mBAAmBC,EAAC;AAAA,UAAC,CAAE;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK,GAAEC,KAAE,KAAK,YAAY,iBAAiB,EAAC,SAAQ,MAAK,WAAUH,GAAE,WAAU,QAAOA,GAAE,QAAO,SAAQF,IAAE,SAAQC,GAAC,CAAC,GAAEM,KAAEF,GAAE,GAAEG,KAAEH,GAAE;AAAe,UAAAD,GAAE,QAAQ,uBAAuB,SAASI,EAAC,MAAIA,KAAE;AAAM,cAAIE,KAAER,GAAE,OAAO,sBAAsB;AAAE,cAAGG,GAAE,SAAO,KAAGA,GAAE,SAAOK,GAAE,MAAM,MAAK,eAAeR,EAAC;AAAA,mBAAU,SAAOM,GAAE,MAAK,2BAA2BT,IAAES,IAAEN,IAAEK,EAAC;AAAA,mBAAU,KAAK,YAAY,WAAWA,EAAC,KAAGH,GAAE,QAAQ,iBAAgB;AAAC,gBAAIO,KAAEP,GAAE,QAAQ,OAAO,UAAW,SAASL,IAAEC,IAAE;AAAC,qBAAM,CAACI,GAAE,QAAQ,uBAAuB,SAASJ,EAAC;AAAA,YAAC,CAAE;AAAE,iBAAK,OAAOD,IAAE,MAAKY,IAAEJ,IAAEL,GAAE,OAAO;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,8BAA6B,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK;AAAE,cAAG,CAAC,KAAK,QAAQ,UAAQ,SAAOA,GAAE,QAAQ,OAAOJ,EAAC,EAAEE,EAAC,EAAE,QAAO,KAAK,KAAK,eAAeD,EAAC;AAAE,cAAG,WAASG,GAAE,QAAQ,OAAOJ,EAAC,EAAEE,EAAC,EAAE,MAAK,QAAQ,UAAQ,KAAK,YAAY,WAAWA,EAAC,KAAG,KAAK,YAAY,uBAAuB,IAAE,KAAK,OAAOH,IAAE,MAAKC,IAAEE,IAAED,GAAE,OAAO,IAAE,KAAK,OAAOF,IAAE,MAAKC,IAAEE,IAAED,GAAE,SAAQ,KAAE;AAAA,mBAAU,KAAK,YAAY,WAAWC,EAAC,GAAE;AAAC,gBAAIG,KAAED,GAAE,QAAQ,OAAO,UAAW,SAASL,IAAEC,IAAE;AAAC,qBAAM,CAACI,GAAE,QAAQ,uBAAuB,SAASJ,EAAC;AAAA,YAAC,CAAE;AAAE,iBAAK,OAAOD,IAAE,MAAKM,IAAEH,IAAED,GAAE,OAAO;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,mBAAQF,KAAE,KAAK,GAAEC,KAAE,IAAIqB,GAAE,KAAK,GAAG,GAAEpB,KAAEF,GAAE,QAAQ,IAAI,MAAM,OAAO,sBAAsB,GAAEG,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAF,GAAE,eAAeC,GAAEC,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK,iBAAiB;AAAE,cAAGD,GAAE,QAAQ,IAAI,OAAO,UAAU,OAAO,2BAA2B,GAAED,GAAE,UAAU,UAAU,OAAO,mBAAmB,GAAE,KAAK,sBAAsB,GAAE,aAAWC,GAAE,OAAO,MAAM,QAAM,KAAK,OAAO,gBAAgB,GAAE,SAAOC,MAAGA,GAAE,UAAU,OAAO,mBAAmB,GAAE,SAAO,KAAK,eAAa,KAAK,YAAY,UAAU,OAAO,mBAAmB,GAAE,KAAK,yBAAuB,KAAK,aAAa,UAAU,OAAO,mBAAmB,GAAE,KAAK,cAAc,QAAO;AAAC,qBAAO,KAAK,eAAa,KAAK,aAAWD,GAAE,QAAQ,IAAI,OAAO,iBAAiB,0BAA0B;AAAG,qBAAQE,KAAE,GAAEA,KAAE,KAAK,WAAW,QAAOA,KAAI,MAAK,WAAWA,EAAC,EAAE,UAAU,OAAO,mBAAmB;AAAA,UAAC;AAAC,UAAAF,GAAE,OAAO,OAAO,yBAAuB,KAAK,aAAa,QAAS,SAASD,IAAE;AAAC,gBAAIC,KAAED,GAAE,aAAa,mBAAmB;AAAE,YAAAA,GAAE,YAAU,mBAAmBC,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASD,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,wBAAY,OAAOA,GAAE,OAAO,MAAM,OAAO,eAAaA,GAAE,OAAO,MAAM,OAAO,YAAYH,IAAE,KAAK,KAAI,EAAC,aAAYC,IAAE,gBAAeC,IAAE,GAAEC,GAAC,CAAC,GAAE,KAAK,IAAI,OAAO,UAAU,eAAc,CAACH,IAAE,KAAK,KAAI,EAAC,aAAYC,IAAE,gBAAeC,IAAE,GAAEC,GAAC,CAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,cAAIC,IAAEE,IAAEC,IAAEE,IAAEC,IAAEF,IAAEI,IAAED,IAAEG,IAAEC,IAAEb,IAAEc,IAAEX,IAAEY,IAAEC,IAAEC,IAAEE,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,KAAK,GAAEC,KAAExB;AAAE,wBAAYD,GAAE,QAAM,KAAK,YAAYA,IAAEE,IAAEC,EAAC,GAAE,SAAOoB,OAAIA,KAAE,KAAK,QAAQ;AAAQ,cAAIG,KAAE,KAAK,YAAY,WAAWxB,EAAC,GAAEyB,KAAE,KAAK,YAAY,UAAU;AAAE,cAAGH,GAAE,OAAO,OAAO,uBAAsB;AAAC,gBAAII,KAAEJ,GAAE,OAAO,OAAO,uBAAsBK,KAAE,MAAM,KAAK,KAAK,YAAY;AAAE,YAAAA,GAAE,QAAS,SAAS7B,IAAE;AAAC,kBAAIC,KAAED,GAAE,aAAa,mBAAmB;AAAE,cAAAA,GAAE,YAAU,mBAAmBC,EAAC;AAAA,YAAC,CAAE;AAAE,qBAAQ6B,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,kBAAIC,KAAEF,GAAEC,EAAC,GAAEE,KAAE,SAASD,GAAE,aAAa,GAAG,GAAE,EAAE,GAAEE,KAAE,mBAAmBF,GAAE,aAAa,mBAAmB,CAAC,GAAEG,KAAEN,GAAEK,IAAE,EAAC,aAAYV,KAAES,KAAE9B,IAAE,gBAAeC,IAAE,GAAEqB,GAAC,CAAC;AAAE,kBAAGD,GAAE,CAAAQ,GAAE,YAAUP,GAAE,QAAQ,uBAAuB,QAAQQ,EAAC,IAAE,IAAEE,KAAED;AAAA,uBAAUF,GAAE,YAAUC,OAAI9B,KAAEgC,KAAED,IAAE/B,OAAI8B,GAAE;AAAA,YAAK;AAAA,UAAC;AAAC,cAAIG,KAAEpB,GAAEA,GAAE,EAAC,SAAQV,IAAE,GAAEH,IAAE,GAAEC,GAAC,GAAE,YAAU,UAAQG,KAAEkB,GAAE,QAAQ,gBAAc,WAASlB,MAAG,UAAQE,KAAEF,GAAEJ,EAAC,MAAI,WAASM,MAAG,UAAQC,KAAED,GAAEL,EAAC,MAAI,WAASM,MAAG,UAAQE,KAAEF,GAAE,EAAE,CAAC,MAAI,WAASE,KAAE,SAAOA,GAAE,OAAK,EAAC,IAAG,UAAQC,KAAEY,GAAE,QAAQ,gBAAc,WAASZ,MAAG,UAAQF,KAAEE,GAAEV,EAAC,MAAI,WAASQ,MAAG,UAAQI,KAAEJ,GAAEP,EAAC,MAAI,WAASW,MAAG,UAAQD,KAAEC,GAAE,EAAE,CAAC,MAAI,WAASD,KAAE,SAAOA,GAAE,GAAE,CAAC,GAAE,YAAU,UAAQG,KAAEQ,GAAE,QAAQ,gBAAc,WAASR,MAAG,UAAQC,KAAED,GAAEd,EAAC,MAAI,WAASe,MAAG,UAAQb,KAAEa,GAAEd,EAAC,MAAI,WAASC,MAAG,UAAQc,KAAEd,GAAE,EAAE,CAAC,MAAI,WAASc,KAAE,SAAOA,GAAE,OAAK,EAAC,IAAG,UAAQX,KAAEiB,GAAE,QAAQ,gBAAc,WAASjB,MAAG,UAAQY,KAAEZ,GAAEL,EAAC,MAAI,WAASiB,MAAG,UAAQC,KAAED,GAAEhB,EAAC,MAAI,WAASiB,MAAG,UAAQC,KAAED,GAAE,EAAE,CAAC,MAAI,WAASC,KAAE,SAAOA,GAAE,GAAE,CAAC;AAAE,cAAGE,IAAE;AAAC,gBAAGE,GAAE,cAAc,gBAAgBV,GAAEA,GAAE,CAAC,GAAEoB,EAAC,GAAE,CAAC,GAAE,EAAC,QAAO,CAAC,KAAK,mBAAiB,KAAK,QAAQ,OAAM,CAAC,CAAC,GAAET,GAAE,CAAAF,GAAE,QAAQ,QAAQ,cAAY,IAAEC,GAAE,OAAO,cAActB,EAAC,IAAEsB,GAAE,gBAAgB,yBAAyBtB,EAAC;AAAA,qBAAU,KAAK,YAAY,QAAQ,MAAI,KAAK,kBAAgB,KAAK,YAAY,cAAcwB,EAAC,GAAE,KAAK,kBAAgB,IAAG;AAAC,kBAAIS,KAAE,IAAId,GAAE,KAAK,GAAG,GAAEe,KAAEb,GAAE,QAAQ,IAAI,MAAM,OAAO,2BAA2B,OAAOrB,IAAE,IAAI,CAAC;AAAE,mBAAK,sBAAsB,GAAE,KAAK,gBAAgB,0BAA0BA,IAAED,EAAC;AAAE,uBAAQoC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAF,GAAE,eAAeC,GAAEC,EAAC,CAAC;AAAA,YAAC;AAAA,UAAC,MAAM,CAAAb,GAAE,cAAc,gBAAgBV,GAAE,EAAC,QAAO,MAAE,GAAEoB,EAAC,CAAC,GAAE,KAAK,YAAY,QAAQ,KAAGV,GAAE,gBAAgB,0BAA0BtB,IAAED,EAAC,GAAEwB,MAAGD,GAAE,gBAAgB,YAAYvB,IAAEC,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEH;AAAA,MAAC,EAAE;AAAlj7O,UAAoj7O2E,MAAG,WAAU;AAAC,iBAAS3E,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,SAAOA,IAAE,KAAK,iBAAe,KAAK,EAAE,OAAO,YAAY,IAAI,WAAW,MAAM,WAAU,KAAK,mBAAiB,KAAK,iBAAe,KAAK,EAAE,OAAO,WAAW;AAAA,QAAU;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,uBAAsB,OAAM,SAASA,IAAE;AAAC,cAAIC,IAAEC,IAAEC,KAAEH,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,IAAGS,KAAET,GAAE,GAAEW,KAAEX,GAAE,GAAEY,KAAEZ,GAAE,WAAUU,KAAEV,GAAE,kBAAiBc,KAAEd,GAAE,QAAOa,KAAEb,GAAE,WAAUgB,KAAEhB,GAAE,UAASiB,KAAEjB,GAAE,cAAaI,KAAEJ,GAAE,cAAakB,KAAElB,GAAE,eAAcO,KAAEP,GAAE,cAAamB,KAAE,KAAK,GAAEC,KAAE,IAAIE,GAAE,KAAK,OAAO,GAAG,GAAED,KAAE,MAAM,QAAQ,KAAK,OAAO,WAAW,IAAE,KAAK,OAAO,YAAYT,EAAC,IAAE,KAAK,OAAO;AAAY,UAAAO,GAAE,QAAQ,cAAY,CAACA,GAAE,QAAQ,mBAAiBlB,KAAEE,KAAE,WAAWa,MAAGE,KAAE,EAAE,GAAEhB,KAAEG,KAAE,WAAWQ,MAAGK,KAAE,EAAE,IAAEG,OAAIpB,KAAEE,KAAE,WAAWa,KAAEE,EAAC,GAAEhB,KAAEG,KAAE,WAAWQ,KAAEK,EAAC;AAAG,cAAIK,IAAEC,KAAE,MAAKC,KAAEtB,IAAEuB,KAAErB,IAAEsB,KAAE,CAAC,GAAEC,KAAET,GAAE,OAAO,YAAWU,KAAE,KAAK,OAAO,WAAW,YAAWC,KAAE,KAAK,OAAO,WAAW,WAAW;AAAM,qBAAS1B,MAAG,KAAK,OAAO,eAAaF,KAAEE,IAAEsB,KAAEtB,KAAG,WAASa,MAAG,KAAK,OAAO,8BAA4BhB,KAAEgB,IAAEQ,KAAER;AAAG,cAAIc,KAAEH,GAAE,SAAQI,KAAEJ,GAAE,SAAQK,KAAE,EAAC,OAAM,GAAE,QAAO,EAAC;AAAE,cAAGd,GAAE,OAAO,WAAW,SAAQ;AAAC,gBAAIe,KAAEf,GAAE,QAAQ,OAAOV,EAAC,EAAEE,EAAC;AAAE,YAAAsB,KAAEb,GAAE,aAAaD,GAAE,OAAO,WAAW,YAAUA,GAAE,OAAO,WAAW,UAAUe,IAAEnB,GAAEA,GAAE,CAAC,GAAEI,EAAC,GAAE,CAAC,GAAE,EAAC,aAAYV,IAAE,gBAAeE,IAAE,GAAEQ,GAAC,CAAC,CAAC,IAAEA,GAAE,QAAQ,iBAAiB,CAAC,EAAEe,EAAC,GAAE,WAAWN,GAAE,MAAM,QAAQ,CAAC;AAAA,UAAC;AAAC,cAAIO,KAAE,EAAC,GAAEhC,IAAE,GAAEE,IAAE,GAAEI,IAAE,GAAEE,IAAE,WAAUC,IAAE,kBAAiBF,IAAE,cAAaH,IAAE,KAAIN,IAAE,KAAIC,IAAE,WAAUW,IAAE,UAASG,IAAE,WAAUiB,IAAE,aAAYZ,IAAE,aAAYI,IAAE,aAAYC,IAAE,kBAAiBE,IAAE,qBAAoBC,IAAE,0BAAyBC,IAAE,MAAKC,IAAE,MAAKC,GAAC;AAAE,iBAAOL,KAAE,KAAK,OAAO,eAAa,KAAK,gCAAgCQ,EAAC,IAAE,KAAK,mCAAmCA,EAAC,GAAE5B,GAAE,KAAK,EAAC,IAAGoB,GAAE,KAAI,IAAGA,GAAE,KAAI,GAAEhB,IAAE,KAAIQ,GAAE,QAAQ,OAAOV,EAAC,EAAEE,EAAC,GAAE,WAAUE,IAAE,UAASG,GAAC,CAAC,GAAEO,KAAE,KAAK,yBAAyB,EAAC,GAAEI,GAAE,aAAY,GAAEA,GAAE,aAAY,KAAI,KAAK,OAAO,aAAW,CAACrB,IAAEE,EAAC,IAAE,WAASW,GAAE,OAAO,MAAM,YAAUL,GAAEF,EAAC,EAAED,EAAC,IAAEQ,GAAE,QAAQ,OAAOP,EAAC,EAAED,EAAC,GAAE,GAAEC,IAAE,GAAED,IAAE,UAASK,IAAE,WAAUH,IAAE,WAAUoB,IAAE,kBAAiBL,GAAC,CAAC,GAAET,GAAE,OAAO,MAAM,WAASW,GAAE,YAAUN,KAAE,KAAK,oBAAoB,EAAC,GAAEG,GAAE,kBAAiB,GAAEA,GAAE,kBAAiB,UAASX,IAAE,WAAUH,IAAE,WAAUD,IAAE,YAAWe,GAAE,uBAAsB,KAAI,KAAK,yBAAyB,EAAC,WAAUf,IAAE,GAAED,GAAC,CAAC,GAAE,kBAAiBiB,IAAE,0BAAyBE,GAAC,CAAC,IAAG,EAAC,YAAWP,IAAE,iBAAgBC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASxB,IAAE;AAAC,cAAIC,KAAED,GAAE,WAAUE,KAAEF,GAAE,GAAEG,KAAE,KAAK,GAAEE,KAAE,KAAK,OAAO,oBAAoBH,EAAC;AAAE,iBAAO,KAAK,mBAAiBG,KAAE,KAAK,eAAeA,IAAEU,GAAEA,GAAE,CAAC,GAAEZ,EAAC,GAAE,CAAC,GAAE,EAAC,aAAYF,IAAE,gBAAeC,IAAE,GAAEC,GAAC,CAAC,CAAC,IAAGE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sCAAqC,OAAM,SAASL,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEF,GAAE,GAAEG,KAAEH,GAAE,GAAEK,KAAEL,GAAE;AAAU,UAAAA,GAAE;AAAiB,cAAIM,IAAEE,IAAEC,KAAET,GAAE,GAAEW,KAAEX,GAAE,KAAIY,KAAEZ,GAAE,UAASU,KAAEV,GAAE,WAAUc,KAAEd,GAAE,WAAUe,KAAEf,GAAE,aAAYa,KAAEb,GAAE,aAAYgB,KAAEhB,GAAE,kBAAiBiB,KAAEjB,GAAE,qBAAoBI,KAAEJ,GAAE,0BAAyBkB,KAAElB,GAAE,aAAYO,KAAEP,GAAE,MAAKmB,KAAEnB,GAAE,MAAKoB,KAAET;AAAE,UAAAD,KAAE,KAAK,IAAIA,EAAC;AAAE,cAAIW,KAAE,eAAapB,GAAE,OAAO,YAAY,IAAI,WAAW,aAAYsB,KAAE,KAAK,OAAO,WAAW,uBAAuB,EAAC,GAAErB,IAAE,GAAEC,GAAC,CAAC,EAAE;AAAe,UAAAQ,MAAGO,KAAE;AAAE,cAAIM,KAAEvB,GAAE,QAAQ,YAAUA,GAAE,QAAQ;AAAW,cAAG,KAAK,OAAO,4BAA0Bc,MAAGH,KAAE,KAAGG,KAAEd,GAAE,QAAQ,aAAWU,KAAEC,KAAE,IAAEL,KAAEI,KAAEa,KAAEZ,KAAE,IAAEL,IAAEgB,KAAE,KAAGtB,GAAE,OAAO,YAAY,IAAI,4BAA0Bc,MAAGH,KAAEW,MAAIF,IAAE;AAAC,YAAAN,KAAEA,KAAED,GAAE,SAAO,IAAEI,KAAE,IAAE;AAAA,UAAC;AAAC,cAAIO,KAAExB,GAAE,QAAQ,OAAOC,EAAC,EAAEC,EAAC,IAAE,GAAEuB,KAAEjB;AAAE,kBAAO,KAAK,OAAO,eAAaiB,KAAEjB,MAAGgB,KAAEf,KAAE,CAACA,MAAIO,GAAE,UAAS;AAAA,YAAC,KAAI;AAAS,cAAAJ,KAAEQ,KAAEI,KAAEC,KAAEhB,KAAE,IAAES,KAAEO,KAAEhB,KAAE,IAAES,KAAEM,KAAEC,KAAEhB,KAAE,IAAEI,GAAE,SAAO,IAAEK,KAAEO,KAAEhB,KAAE,IAAEI,GAAE,SAAO,IAAEK;AAAE;AAAA,YAAM,KAAI;AAAS,cAAAN,KAAEQ,KAAEI,KAAEC,KAAEhB,KAAES,KAAEO,KAAEhB,KAAES,KAAEM,KAAEC,KAAEhB,KAAEI,GAAE,SAAOI,KAAEC,KAAEO,KAAEhB,KAAEI,GAAE,SAAO,IAAEI,KAAEC;AAAE;AAAA,YAAM,KAAI;AAAM,cAAAN,KAAEQ,KAAEI,KAAEC,KAAEP,KAAEO,KAAEP,KAAEM,KAAEC,KAAEZ,GAAE,SAAO,IAAEK,KAAEO,KAAEZ,GAAE,SAAOK;AAAA,UAAC;AAAC,cAAG,KAAK,OAAO,4BAA0Bd,MAAGD,GAAE,SAAQ;AAAC,gBAAIuB,KAAE,IAAIL,GAAE,KAAK,OAAO,GAAG,EAAE,aAAa,KAAK,yBAAyB,EAAC,WAAUjB,IAAE,GAAEF,GAAC,CAAC,GAAEa,GAAE,QAAQ;AAAE,YAAAV,KAAEmB,KAAEC,KAAEC,GAAE,SAAO,IAAER,KAAEf,GAAE,UAAQ,KAAGsB,KAAEC,GAAE,SAAOR,KAAEf,GAAE,UAAQ;AAAG,gBAAIwB,KAAEJ;AAAE,YAAAhB,KAAEY,MAAGnB,GAAE,QAAQ,aAAW,CAACW,KAAEX,GAAE,QAAQ,UAAU,SAAO,IAAEA,GAAE,QAAQ,UAAU,SAAOW,KAAE,KAAGX,GAAE,QAAQ,UAAU,SAAO,KAAGW,KAAEgB,MAAGxB,GAAE;AAAA,UAAO;AAAC,iBAAOH,GAAE,OAAO,MAAM,YAAUY,KAAE,IAAEA,KAAE,IAAEK,KAAEL,KAAEC,GAAE,SAAO,IAAEb,GAAE,QAAQ,eAAaY,KAAEZ,GAAE,QAAQ,aAAWiB,MAAI,EAAC,KAAIP,IAAE,KAAIF,IAAE,aAAYM,IAAE,aAAYF,IAAE,kBAAiBL,IAAE,kBAAiBF,IAAE,uBAAsB,SAAQ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mCAAkC,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEF,GAAE,GAAEG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,WAAUQ,KAAER,GAAE,KAAIS,KAAET,GAAE,WAAUW,KAAEX,GAAE,UAASY,KAAEZ,GAAE,WAAUU,KAAEV,GAAE,aAAYc,KAAEd,GAAE,aAAYe,KAAEf,GAAE,kBAAiBa,KAAEb,GAAE,qBAAoBgB,KAAEhB,GAAE,0BAAyBiB,KAAEjB,GAAE,MAAKI,KAAEJ,GAAE,MAAKkB,KAAEjB,GAAE,QAAQ,aAAWA,GAAE,QAAQ;AAAW,UAAAU,KAAE,KAAK,IAAIA,EAAC;AAAE,cAAIJ,IAAEY,IAAEC,KAAEZ,MAAG,KAAK,OAAO,aAAW,IAAEU,MAAGT,KAAE,IAAEG,GAAE,SAAO,IAAER,KAAE,GAAEiB,KAAE,SAAQE,KAAEtB,GAAE,QAAQ,OAAOE,EAAC,EAAEE,EAAC,IAAE,GAAEmB,KAAEtB;AAAE,kBAAO,KAAK,OAAO,eAAasB,KAAEtB,MAAGqB,KAAE,CAACZ,KAAEA,KAAGU,KAAEE,KAAE,UAAQ,QAAOV,GAAE,UAAS;AAAA,YAAC,KAAI;AAAS,cAAAH,KAAEa,KAAEC,KAAEb,KAAE,IAAEM,KAAE,KAAK,IAAIL,GAAE,QAAM,GAAEY,KAAEb,KAAE,CAAC,IAAEM;AAAE;AAAA,YAAM,KAAI;AAAS,cAAAP,KAAEa,KAAEC,KAAEb,KAAEG,KAAEG,KAAEO,KAAEb,KAAEG,KAAEG;AAAE;AAAA,YAAM,KAAI;AAAM,cAAAP,KAAEa,KAAEC,KAAEV,KAAEG,KAAEO,KAAEV,KAAEG;AAAA,UAAC;AAAC,cAAG,KAAK,OAAO,4BAA0BX,MAAGU,GAAE,SAAQ;AAAC,gBAAIS,KAAE,IAAIH,GAAE,KAAK,OAAO,GAAG,EAAE,aAAa,KAAK,yBAAyB,EAAC,WAAUhB,IAAE,GAAED,GAAC,CAAC,GAAEU,GAAE,QAAQ;AAAE,YAAAQ,MAAGhB,KAAEiB,KAAEV,KAAEG,KAAED,GAAE,SAAQK,KAAE,SAAOd,KAAEiB,KAAEP,KAAED,GAAE,WAAS,KAAK,OAAO,aAAW,EAAEL,KAAEG,MAAGA,KAAGK,KAAEC,KAAER,GAAE,SAAO,IAAEa,GAAE,SAAO,IAAET,GAAE,UAAQF;AAAA,UAAC;AAAC,iBAAOb,GAAE,OAAO,MAAM,YAAU,YAAUc,GAAE,aAAWL,KAAEE,GAAE,QAAM,IAAEF,KAAEa,KAAEX,GAAE,QAAME,KAAEA,KAAEJ,KAAEE,GAAE,QAAMX,GAAE,QAAQ,cAAYS,KAAEa,KAAEtB,GAAE,QAAQ,YAAUa,KAAEb,GAAE,QAAQ,YAAUW,GAAE,QAAME,MAAG,aAAWC,GAAE,aAAWL,KAAEE,GAAE,QAAM,IAAE,IAAEF,KAAEE,GAAE,QAAM,IAAEE,KAAEJ,KAAEE,GAAE,QAAM,IAAEX,GAAE,QAAQ,cAAYS,KAAET,GAAE,QAAQ,YAAUW,GAAE,QAAM,IAAEE,MAAG,UAAQC,GAAE,eAAaL,KAAE,IAAEA,KAAEE,GAAE,QAAME,KAAEJ,KAAE,IAAET,GAAE,QAAQ,cAAYS,KAAET,GAAE,QAAQ,YAAUW,GAAE,QAAME,OAAK,EAAC,KAAIZ,IAAE,KAAIM,IAAE,aAAYE,IAAE,aAAYU,IAAE,kBAAiBb,IAAE,kBAAiBY,IAAE,uBAAsBE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASrB,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,KAAIK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,GAAEQ,KAAER,GAAE,WAAUS,KAAET,GAAE,WAAUW,KAAEX,GAAE,UAASY,KAAEZ,GAAE,kBAAiBU,KAAE,KAAK,GAAEI,KAAE;AAAY,yBAAaJ,GAAE,OAAO,YAAY,IAAI,WAAW,gBAAcI,KAAE,eAAe,OAAOb,IAAE,IAAI,EAAE,OAAOC,IAAE,GAAG;AAAG,cAAIW,KAAE,IAAI8B,GAAE,KAAK,OAAO,GAAG,GAAE3B,KAAE,IAAIM,GAAE,KAAK,OAAO,GAAG,GAAEL,KAAEL,GAAE,WAAUR,KAAE,MAAKc,KAAER,GAAE,QAAQ,uBAAuB,QAAQL,EAAC,IAAE;AAAG,cAAGO,GAAE,WAAS,CAACM,IAAE;AAAC,YAAAd,KAAEY,GAAE,MAAM,EAAC,OAAM,0BAAyB,WAAUF,GAAC,CAAC;AAAE,gBAAIP,KAAE;AAAG,uBAASJ,OAAII,KAAEU,GAAEd,IAAEY,GAAEA,GAAE,CAAC,GAAEL,EAAC,GAAE,CAAC,GAAE,EAAC,aAAYL,IAAE,gBAAeC,IAAE,GAAEI,GAAC,CAAC,CAAC,IAAG,CAACP,MAAGO,GAAE,OAAO,YAAY,IAAI,4BAA0BH,KAAE;AAAI,gBAAIY,KAAET,GAAE,QAAQ,OAAOL,EAAC,EAAEC,EAAC,IAAE,GAAEc,KAAEV,GAAE,OAAO,YAAY,IAAI,WAAW;AAAS,gBAAG,eAAaA,GAAE,OAAO,YAAY,IAAI,WAAW,gBAAc,UAAQU,OAAIR,GAAE,aAAWO,KAAE,QAAM,UAAS,aAAWC,OAAIR,GAAE,aAAW,WAAU,aAAWQ,OAAIR,GAAE,aAAWO,KAAE,QAAM,WAAU,KAAK,OAAO,cAAY,KAAK,OAAO,WAAW,WAAW,sBAAsB,CAAAR,KAAEK,GAAE,aAAaT,IAAE,WAAWK,GAAE,MAAM,QAAQ,CAAC,EAAE,UAAQL,KAAE;AAAI,YAAAG,GAAE,OAAO,MAAM,WAAS,KAAK,OAAO,WAAW,WAAW,0BAAwB,KAAK,OAAO,eAAaF,GAAE,QAAM,MAAI,KAAK,IAAIG,EAAC,MAAIJ,KAAE,MAAIC,GAAE,SAAO,MAAI,KAAK,IAAIC,EAAC,MAAIF,KAAE;AAAK,gBAAIc,KAAEN,GAAE,CAAC,GAAEH,EAAC;AAAE,iBAAK,OAAO,gBAAcT,KAAE,MAAI,YAAUS,GAAE,aAAWS,GAAE,aAAW,QAAM,UAAQT,GAAE,eAAaS,GAAE,aAAW,WAAUR,GAAE,mBAAmB,EAAC,GAAEZ,IAAE,GAAEC,IAAE,MAAKK,IAAE,GAAEF,IAAE,GAAEC,IAAE,QAAOF,IAAE,kBAAiBiB,IAAE,qBAAoB,MAAG,kBAAiB,KAAE,CAAC;AAAA,UAAC;AAAC,iBAAOjB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASJ,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,KAAIK,KAAEL,GAAE,WAAUM,KAAEN,GAAE,YAAWQ,KAAER,GAAE;AAAyB,eAAK;AAAE,cAAIS,IAAEE,KAAE,IAAIW,GAAE,KAAK,OAAO,GAAG;AAAE,iBAAOd,GAAE,WAAS,WAASP,MAAG,WAASC,MAAG,KAAK,OAAO,4BAA0BG,OAAII,KAAEE,GAAE,SAAS,EAAC,GAAEV,IAAE,GAAEC,IAAE,WAAUM,GAAE,MAAM,OAAM,MAAKL,IAAE,YAAWG,IAAE,YAAWE,GAAE,MAAM,YAAW,UAASA,GAAE,MAAM,UAAS,YAAWA,GAAE,MAAM,WAAU,CAAC,IAAGC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAET;AAAA,MAAC,EAAE;AAAxvpP,UAA0vpP4E,MAAG,WAAU;AAAC,iBAAS5E,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,SAAOA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,eAAK,OAAO,SAAOD,IAAE,KAAK,OAAO,aAAW,GAAE,KAAK,OAAO,YAAU,GAAE,KAAK,OAAO,WAAS,IAAG,KAAK,OAAO,eAAa;AAAE,mBAAQE,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,KAAGF,GAAEE,EAAC,EAAE,SAAO,MAAI,KAAK,OAAO,YAAU,KAAK,OAAO,YAAU,GAAE,KAAK,OAAO,cAAYF,GAAEE,EAAC,EAAE,SAAQD,GAAE,QAAQ,WAAW,UAAQE,KAAE,GAAEA,KAAEH,GAAEE,EAAC,EAAE,QAAOC,KAAI,CAAAF,GAAE,QAAQ,QAAQC,EAAC,EAAEC,EAAC,IAAEF,GAAE,QAAQ,QAAMA,GAAE,QAAQ,QAAQC,EAAC,EAAEC,EAAC,IAAEF,GAAE,QAAQ,QAAM,KAAK,OAAO;AAAA,cAAoB,MAAK,OAAO,eAAaA,GAAE,QAAQ;AAAW,eAAK,kBAAgB,KAAK,sBAAsBA,GAAE,QAAQ,MAAM,GAAE,MAAI,KAAK,OAAO,cAAY,KAAK,OAAO,YAAU,IAAG,KAAK,OAAO,eAAa,CAAC,GAAEA,GAAE,QAAQ,eAAa,KAAK,gBAAgB,EAAC,QAAOD,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAIA,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAEE,IAAEC,IAAEE,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ;AAAW,eAAK,OAAO,eAAaC,KAAED,GAAE,QAAQ,OAAO;AAAQ,cAAID,KAAE,KAAK,OAAO;AAAU,cAAGC,GAAE,OAAO,YAAY,IAAI,sBAAoBD,KAAE,IAAG,KAAK,OAAO,aAAa,CAAAL,MAAGH,KAAES,GAAE,QAAQ,aAAWC,MAAGF,IAAEC,GAAE,QAAQ,eAAaN,MAAGH,KAAES,GAAE,QAAQ,aAAW,KAAK,OAAO,cAAY,KAAK,OAAO,YAAWN,KAAEA,KAAE,SAAS,KAAK,OAAO,WAAW,WAAU,EAAE,IAAE,KAAI,OAAK,OAAO,KAAK,OAAO,WAAW,SAAS,EAAE,QAAQ,GAAG,MAAIA,KAAE,SAAS,KAAK,OAAO,WAAW,WAAU,EAAE,IAAGI,KAAE,KAAK,OAAO,oBAAkBE,GAAE,QAAQ,iBAAe,KAAK,OAAO,aAAWA,GAAE,QAAQ,YAAU,MAAI,KAAK,OAAO,aAAW,IAAE,KAAK,OAAO,oBAAkB,IAAG,KAAK,OAAO,aAAWF,KAAEE,GAAE,QAAQ,YAAU,IAAGV,MAAGC,KAAEG,KAAE,KAAK,OAAO,aAAW;AAAA,eAAM;AAAC,gBAAGF,KAAEQ,GAAE,QAAQ,YAAU,KAAK,OAAO,cAAaA,GAAE,OAAO,MAAM,0BAAwBR,KAAEQ,GAAE,QAAQ,YAAUA,GAAE,QAAQ,aAAYL,KAAEH,KAAEO,KAAE,SAAS,KAAK,OAAO,WAAW,aAAY,EAAE,IAAE,KAAIC,GAAE,QAAQ,YAAW;AAAC,kBAAIG,KAAE,KAAK,OAAO;AAAO,cAAAH,GAAE,QAAQ,YAAU,QAAKA,GAAE,QAAQ,YAAUA,GAAE,QAAQ,WAASG,KAAE,MAAIX,KAAEQ,GAAE,QAAQ,WAASG,MAAIR,KAAEH,KAAEO,KAAE,SAAS,KAAK,OAAO,WAAW,aAAY,EAAE,IAAE,OAAK,MAAIJ,KAAE;AAAA,YAAE;AAAC,mBAAK,OAAO,KAAK,OAAO,WAAW,WAAW,EAAE,QAAQ,GAAG,MAAIA,KAAE,SAAS,KAAK,OAAO,WAAW,aAAY,EAAE,IAAGE,KAAEG,GAAE,QAAQ,aAAW,KAAK,OAAO,UAAU,KAAK,OAAO,iBAAiB,KAAG,KAAK,OAAO,aAAWA,GAAE,QAAQ,aAAW,MAAI,KAAK,OAAO,aAAW,IAAE,KAAK,OAAO,UAAU,KAAK,OAAO,iBAAiB,IAAE,IAAGX,KAAEW,GAAE,QAAQ,iBAAeR,KAAEG,KAAE,KAAK,OAAO,aAAW;AAAA,UAAC;AAAC,iBAAOK,GAAE,QAAQ,YAAUN,IAAEM,GAAE,QAAQ,WAASL,IAAE,EAAC,GAAEN,IAAE,GAAEC,IAAE,WAAUC,IAAE,WAAUC,IAAE,WAAUE,IAAE,UAASC,IAAE,OAAME,IAAE,OAAMC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,6BAA4B,OAAM,SAAST,IAAE;AAAC,UAAAA,GAAE,EAAE,QAAQ,aAAa,QAAS,SAASC,IAAE;AAAC,YAAAD,GAAEC,EAAC,MAAID,GAAEC,EAAC,IAAE,CAAC,IAAGD,GAAEC,EAAC,EAAE,QAAM,CAAC,GAAED,GAAEC,EAAC,EAAE,QAAM,CAAC,GAAED,GAAEC,EAAC,EAAE,SAAO,CAAC,GAAED,GAAEC,EAAC,EAAE,SAAO,CAAC,GAAED,GAAEC,EAAC,EAAE,WAAS,CAAC,GAAED,GAAEC,EAAC,EAAE,WAAS,CAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAASD,IAAE;AAAC,UAAAA,GAAE,EAAE,QAAQ,aAAa,QAAS,SAASC,IAAE;AAAC,YAAAD,GAAEC,EAAC,MAAID,GAAEC,EAAC,IAAE,CAAC,IAAGD,GAAEC,EAAC,EAAE,QAAM,CAAC,GAAED,GAAEC,EAAC,EAAE,SAAO,CAAC,GAAED,GAAEC,EAAC,EAAE,WAAS,CAAC,GAAED,GAAEC,EAAC,EAAE,QAAM,CAAC,GAAED,GAAEC,EAAC,EAAE,SAAO,CAAC,GAAED,GAAEC,EAAC,EAAE,WAAS,CAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,IAAEC,IAAEE,IAAEC,IAAEE,IAAEC,KAAE,KAAK,GAAEF,KAAE,KAAK,OAAO,IAAI,MAAKI,KAAE,MAAKC,KAAE,KAAK,OAAO,WAAW,cAAYb,KAAED;AAAE,eAAK,OAAO,WAAW,OAAO,OAAO,SAAO,KAAG,KAAK,OAAO,WAAW,OAAO,OAAO,IAAK,SAASE,IAAE;AAAC,YAAAH,GAAEC,EAAC,EAAEC,EAAC,KAAGC,GAAE,QAAMH,GAAEC,EAAC,EAAEC,EAAC,KAAGC,GAAE,OAAKW,KAAEX,GAAE;AAAA,UAAM,CAAE;AAAE,iBAAO,UAAQE,KAAEO,GAAE,OAAO,OAAOX,EAAC,EAAE,KAAKC,EAAC,MAAI,WAASG,MAAGA,GAAE,cAAYS,KAAEF,GAAE,OAAO,OAAOX,EAAC,EAAE,KAAKC,EAAC,EAAE,YAAWQ,GAAE,SAAS,EAAC,cAAa,KAAK,OAAO,WAAW,cAAYK,KAAEZ,IAAE,gBAAeD,IAAE,OAAMY,IAAE,OAAMd,GAAEC,EAAC,EAAEC,EAAC,GAAE,YAAW,UAAQI,KAAEM,GAAE,OAAO,OAAOX,EAAC,EAAE,KAAKC,EAAC,MAAI,WAASI,KAAE,SAAOA,GAAE,MAAK,UAAS,UAAQE,KAAEI,GAAE,OAAO,OAAOX,EAAC,EAAE,KAAKC,EAAC,MAAI,WAASM,MAAG,UAAQC,KAAED,GAAE,SAAO,WAASC,MAAGA,GAAE,OAAK,UAAQE,KAAEC,GAAE,OAAO,OAAOX,EAAC,EAAE,KAAKC,EAAC,MAAI,WAASS,KAAE,SAAOA,GAAE,KAAK,OAAK,MAAM,QAAQC,GAAE,OAAO,KAAK,IAAI,IAAEA,GAAE,OAAO,KAAK,KAAKT,EAAC,IAAES,GAAE,OAAO,KAAK,KAAI,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASZ,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,GAAEE,KAAE,KAAK;AAAE,iBAAO,KAAK,OAAO,OAAOL,EAAC,EAAEC,EAAC,IAAE,KAAK,OAAO,cAAY,QAAG,KAAK,OAAO,cAAY,MAAGI,GAAE,OAAO,OAAO,SAAO,KAAK,OAAO,gBAAcF,KAAE,MAAM,QAAQ,KAAK,OAAO,WAAW,IAAE,KAAK,OAAO,YAAYD,EAAC,IAAE,KAAK,OAAO,eAAcC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,CAAC,KAAK,EAAE,OAAO,MAAM,WAAS,WAASD,GAAE,OAAO,YAAY,IAAI,2BAAyBA,GAAE,OAAO,YAAY,IAAI,gBAAc,GAAEE,KAAEH,GAAE,QAAOK,KAAEL,GAAE,CAAC,EAAE,QAAOQ,KAAE,MAAM,KAAK,EAAC,QAAOL,GAAC,GAAG,WAAU;AAAC,mBAAO,MAAME,EAAC,EAAE,KAAKH,KAAE,QAAM,MAAM;AAAA,UAAC,CAAE;AAAE,cAAGA,GAAE,QAAOM;AAAE,mBAAQC,KAAE,GAAEA,KAAEJ,IAAEI,MAAI;AAAC,qBAAQE,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEF,KAAE,GAAEI,KAAE,GAAEA,KAAEX,IAAEW,MAAI;AAAC,kBAAIC,KAAEf,GAAEc,EAAC,EAAEL,EAAC;AAAE,cAAAM,KAAE,KAAGJ,GAAE,KAAKG,EAAC,GAAEJ,QAAKK,KAAE,MAAIH,GAAE,KAAKE,EAAC,GAAEJ;AAAA,YAAI;AAAC,gBAAGC,GAAE,SAAO,KAAG,MAAIC,GAAE,OAAO,KAAG,MAAID,GAAE,OAAO,CAAAH,GAAEG,GAAE,CAAC,CAAC,EAAEF,EAAC,IAAE;AAAA,iBAAW;AAAC,kBAAII,IAAEG,KAAEL,GAAE,CAAC,GAAEM,KAAEN,GAAEA,GAAE,SAAO,CAAC,GAAEP,KAAEE,GAAEK,EAAC;AAAE,kBAAG;AAAC,qBAAIP,GAAE,EAAE,GAAE,EAAES,KAAET,GAAE,EAAE,GAAG,QAAM;AAAC,sBAAIc,KAAEL,GAAE;AAAM,kBAAAL,GAAEU,EAAC,EAAET,EAAC,IAAES,OAAIF,KAAE,WAASE,OAAID,KAAE,QAAM;AAAA,gBAAM;AAAA,cAAC,SAAOjB,IAAE;AAAC,gBAAAI,GAAE,EAAEJ,EAAC;AAAA,cAAC,UAAC;AAAQ,gBAAAI,GAAE,EAAE;AAAA,cAAC;AAAA,YAAC;AAAA,qBAASQ,GAAE,SAAO,KAAG,MAAID,GAAE,OAAO,KAAG,MAAIC,GAAE,OAAO,CAAAJ,GAAEI,GAAE,CAAC,CAAC,EAAEH,EAAC,IAAE;AAAA,iBAAW;AAAC,kBAAIF,IAAEY,KAAEP,GAAE,CAAC,GAAEQ,KAAER,GAAEA,GAAE,SAAO,CAAC,GAAES,KAAEf,GAAEM,EAAC;AAAE,kBAAG;AAAC,qBAAIS,GAAE,EAAE,GAAE,EAAEd,KAAEc,GAAE,EAAE,GAAG,QAAM;AAAC,sBAAIC,KAAEf,GAAE;AAAM,kBAAAC,GAAEc,EAAC,EAAEb,EAAC,IAAEa,OAAIH,KAAE,WAASG,OAAIF,KAAE,QAAM;AAAA,gBAAM;AAAA,cAAC,SAAOpB,IAAE;AAAC,gBAAAqB,GAAE,EAAErB,EAAC;AAAA,cAAC,UAAC;AAAQ,gBAAAqB,GAAE,EAAE;AAAA,cAAC;AAAA,YAAC;AAAA,qBAASV,GAAE,SAAO,KAAGC,GAAE,SAAO,GAAE;AAAC,kBAAIW,IAAEC,KAAEb,GAAEA,GAAE,SAAO,CAAC,GAAEc,KAAEnB,GAAEK,EAAC;AAAE,kBAAG;AAAC,qBAAIc,GAAE,EAAE,GAAE,EAAEF,KAAEE,GAAE,EAAE,GAAG,QAAM;AAAC,sBAAIC,KAAEH,GAAE;AAAM,kBAAAf,GAAEkB,EAAC,EAAEjB,EAAC,IAAEiB,OAAIF,KAAE,QAAM;AAAA,gBAAM;AAAA,cAAC,SAAOxB,IAAE;AAAC,gBAAAyB,GAAE,EAAEzB,EAAC;AAAA,cAAC,UAAC;AAAQ,gBAAAyB,GAAE,EAAE;AAAA,cAAC;AAAC,kBAAIE,IAAEC,KAAEhB,GAAEA,GAAE,SAAO,CAAC,GAAEiB,KAAEvB,GAAEM,EAAC;AAAE,kBAAG;AAAC,qBAAIiB,GAAE,EAAE,GAAE,EAAEF,KAAEE,GAAE,EAAE,GAAG,QAAM;AAAC,sBAAIC,KAAEH,GAAE;AAAM,kBAAAnB,GAAEsB,EAAC,EAAErB,EAAC,IAAEqB,OAAIF,KAAE,WAAS;AAAA,gBAAM;AAAA,cAAC,SAAO5B,IAAE;AAAC,gBAAA6B,GAAE,EAAE7B,EAAC;AAAA,cAAC,UAAC;AAAQ,gBAAA6B,GAAE,EAAE;AAAA,cAAC;AAAA,YAAC,WAAS,MAAInB,IAAE;AAAC,cAAAF,GAAEG,GAAE,CAAC,KAAGC,GAAE,CAAC,CAAC,EAAEH,EAAC,IAAE;AAAA,YAAM;AAAA,UAAC;AAAC,iBAAOD;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASR,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,IAAGK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,IAAGS,KAAET,GAAE,UAASW,KAAE,KAAK,GAAEC,KAAE,IAAIU,GAAE,KAAK,OAAO,GAAG,GAAEZ,KAAE,IAAIkC,GAAE,KAAK,OAAO,GAAG,EAAE,2BAA2B;AAAE,cAAG,KAAK,OAAO,WAAW,OAAO,oBAAoB,SAAO,KAAGlC,OAAIR,IAAE;AAAC,YAAAD,MAAG,KAAK,OAAO,WAAW,OAAO,oBAAoB,WAASA,MAAG,KAAK,OAAO,WAAW,OAAO,oBAAoB;AAAQ,gBAAIa,KAAE,KAAK,OAAO,WAAW,OAAO,oBAAoBb,EAAC,GAAEc,KAAEH,GAAE,SAAS,WAAST,KAAEA,KAAE,GAAE,WAASG,KAAEA,KAAE,GAAE,WAASD,KAAEA,KAAEM,GAAE,QAAQ,WAAU,WAASH,KAAEA,KAAEG,GAAE,QAAQ,YAAW,KAAK,OAAO,WAAW,OAAO,qBAAoBG,IAAE,KAAK,OAAO,WAAW,OAAO,oBAAoB;AAAE,YAAAL,GAAE,IAAIM,EAAC,GAAEA,GAAE,KAAK,UAAU,IAAI,0BAA0B;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASf,IAAE;AAAC,cAAIC,IAAEC,KAAEF,GAAE,UAASG,KAAEH,GAAE,cAAaK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,aAAYS,KAAET,GAAE,YAAWW,KAAEX,GAAE,QAAOY,KAAEZ,GAAE,aAAYU,KAAEV,GAAE,WAAUc,KAAEd,GAAE,GAAEe,KAAEf,GAAE,GAAEa,KAAEb,GAAE,GAAEgB,KAAE,IAAIM,GAAE,KAAK,OAAO,GAAG;AAAE,WAACd,KAAE,MAAM,QAAQA,EAAC,IAAEA,GAAEE,EAAC,IAAEF,QAAKA,KAAE;AAAG,cAAIS,KAAEf,IAAEE,KAAED;AAAE,oBAAQF,KAAEY,GAAE,OAAO,OAAOH,EAAC,EAAE,KAAKK,EAAC,MAAI,WAASd,MAAGA,GAAE,sBAAoBG,KAAED,KAAEU,GAAE,OAAO,OAAOH,EAAC,EAAE,KAAKK,EAAC,EAAE,oBAAkB,GAAEE,KAAEf,KAAEW,GAAE,OAAO,OAAOH,EAAC,EAAE,KAAKK,EAAC,EAAE;AAAmB,cAAIG,KAAEV,KAAE,GAAED,KAAEH,KAAEc,IAAEC,KAAEf,KAAEa,KAAEC,IAAEE,MAAGT,GAAEG,EAAC,EAAEC,EAAC,KAAG,IAAE,IAAE,OAAKN,KAAE,KAAG;AAAG,UAAAJ,MAAG,OAAKa,KAAEE,IAAEd,MAAG,OAAKY,KAAEE;AAAE,cAAIC,KAAEL,GAAE,KAAKT,IAAEF,EAAC,GAAEkB,KAAEP,GAAE,KAAKT,IAAEF,EAAC,GAAEmB,KAAER,GAAE,KAAKG,IAAEd,EAAC;AAAE,cAAGQ,GAAE,QAAQ,cAAc,SAAO,MAAIU,KAAE,KAAK,OAAO,gBAAgBb,IAAEK,IAAE,KAAE,IAAGM,KAAEA,KAAEL,GAAE,KAAKT,IAAED,EAAC,IAAEU,GAAE,KAAKG,IAAEb,EAAC,IAAEkB,MAAG,aAAWX,GAAE,OAAO,YAAY,IAAI,2BAAyB,WAAS,KAAK,gBAAgBH,EAAC,EAAEK,EAAC,IAAE,OAAK,OAAMQ,KAAEA,KAAEP,GAAE,KAAKT,IAAEF,EAAC,IAAEmB,KAAEA,KAAEA,KAAEA,KAAEA,KAAER,GAAE,KAAKT,IAAEF,EAAC,KAAG,aAAWQ,GAAE,OAAO,YAAY,IAAI,2BAAyB,WAAS,KAAK,gBAAgBH,EAAC,EAAEK,EAAC,IAAE,OAAK,OAAM,WAAS,KAAK,gBAAgBL,EAAC,EAAEK,EAAC,MAAIM,KAAEL,GAAE,iBAAiBK,IAAER,GAAE,OAAO,YAAY,IAAI,YAAY,IAAGA,GAAE,OAAO,MAAM,SAAQ;AAAC,gBAAIY,KAAE,KAAK;AAAO,aAACA,KAAE,KAAK,OAAOb,EAAC,GAAG,MAAM,KAAKN,KAAEY,KAAEE,EAAC,GAAEK,GAAE,OAAO,KAAK,KAAK,IAAIpB,KAAEC,KAAEE,KAAEY,EAAC,CAAC,GAAEK,GAAE,SAAS,KAAK,KAAK,OAAO,OAAOX,EAAC,EAAEC,EAAC,CAAC;AAAA,UAAC;AAAC,iBAAM,EAAC,QAAOM,IAAE,UAASE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASvB,IAAE;AAAC,cAAIC,IAAEC,KAAEF,GAAE,cAAaG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,IAAGQ,KAAER,GAAE,aAAYS,KAAET,GAAE,YAAWW,KAAEX,GAAE,QAAOY,KAAEZ,GAAE,aAAYU,KAAEV,GAAE,WAAUc,KAAEd,GAAE,GAAEe,KAAEf,GAAE,GAAEa,KAAEb,GAAE,GAAEgB,KAAE,IAAIM,GAAE,KAAK,OAAO,GAAG;AAAE,WAACd,KAAE,MAAM,QAAQA,EAAC,IAAEA,GAAEE,EAAC,IAAEF,QAAKA,KAAE;AAAG,cAAIS,KAAEf,IAAEE,KAAED;AAAE,oBAAQF,KAAEY,GAAE,OAAO,OAAOH,EAAC,EAAE,KAAKK,EAAC,MAAI,WAASd,MAAGA,GAAE,oBAAkBgB,KAAEf,KAAEW,GAAE,OAAO,OAAOH,EAAC,EAAE,KAAKK,EAAC,EAAE,kBAAgB,GAAEX,KAAED,KAAEU,GAAE,OAAO,OAAOH,EAAC,EAAE,KAAKK,EAAC,EAAE;AAAiB,cAAIG,KAAEV,KAAE,GAAED,KAAEU,KAAEC,IAAEC,KAAEF,KAAEb,KAAEc,IAAEE,MAAGT,GAAEG,EAAC,EAAEC,EAAC,KAAG,IAAE,IAAE,OAAKN,KAAE,KAAG;AAAG,UAAAJ,MAAG,OAAKa,KAAEE,IAAEd,MAAG,OAAKY,KAAEE;AAAE,cAAIC,KAAEL,GAAE,KAAKX,IAAEE,EAAC,GAAEgB,KAAEP,GAAE,KAAKX,IAAEE,EAAC;AAAE,UAAAM,GAAE,QAAQ,cAAc,SAAO,MAAIU,KAAE,KAAK,OAAO,gBAAgBb,IAAEK,IAAE,KAAE;AAAG,cAAIS,KAAER,GAAE,KAAKX,IAAEc,EAAC;AAAE,cAAGE,KAAEA,KAAEL,GAAE,KAAKV,IAAEC,EAAC,IAAES,GAAE,KAAKV,IAAEa,EAAC,IAAEK,MAAG,aAAWX,GAAE,OAAO,YAAY,IAAI,2BAAyB,WAAS,KAAK,gBAAgBH,EAAC,EAAEK,EAAC,IAAE,OAAK,OAAMQ,KAAEA,KAAEP,GAAE,KAAKX,IAAEE,EAAC,IAAEiB,KAAEA,KAAEA,KAAEA,KAAEA,KAAER,GAAE,KAAKX,IAAEE,EAAC,KAAG,aAAWM,GAAE,OAAO,YAAY,IAAI,2BAAyB,WAAS,KAAK,gBAAgBH,EAAC,EAAEK,EAAC,IAAE,OAAK,OAAM,WAAS,KAAK,gBAAgBL,EAAC,EAAEK,EAAC,MAAIM,KAAEL,GAAE,iBAAiBK,IAAER,GAAE,OAAO,YAAY,IAAI,YAAY,IAAGA,GAAE,OAAO,MAAM,SAAQ;AAAC,gBAAIY,KAAE,KAAK;AAAO,aAACA,KAAE,KAAK,OAAOb,EAAC,GAAG,MAAM,KAAKN,KAAEY,KAAEE,EAAC,GAAEK,GAAE,OAAO,KAAK,KAAK,IAAIpB,KAAEC,KAAEE,KAAEY,EAAC,CAAC,GAAEK,GAAE,SAAS,KAAK,KAAK,OAAO,OAAOX,EAAC,EAAEC,EAAC,CAAC;AAAA,UAAC;AAAC,iBAAM,EAAC,QAAOM,IAAE,UAASE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASvB,IAAE;AAAC,mBAAQC,KAAED,GAAE,QAAOE,KAAE,KAAK,GAAEC,KAAE,GAAEA,KAAEF,GAAE,QAAOE,MAAI;AAAC,qBAAQE,KAAE,GAAEC,KAAE,GAAEA,KAAEL,GAAEC,GAAE,QAAQ,mBAAmB,EAAE,QAAOI,KAAI,CAAAD,MAAGJ,GAAEE,EAAC,EAAEG,EAAC;AAAE,kBAAID,MAAG,KAAK,OAAO,aAAa,KAAKF,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,IAAED,KAAE;AAAK,iBAAO,QAAMD,OAAIE,KAAED,KAAED,KAAE,KAAK,OAAO,iBAAe,KAAG,KAAK,OAAO,aAAWA,KAAE,KAAK,OAAO,iBAAe,KAAIE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASF,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,IAAEF,KAAE;AAAK,iBAAO,QAAMD,OAAIG,KAAEF,KAAED,KAAE,KAAK,OAAO,OAAOE,EAAC,IAAE,KAAG,KAAK,OAAO,aAAWF,KAAE,KAAK,OAAO,OAAOE,EAAC,IAAE,KAAIC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,cAAIE,KAAE,MAAKG,KAAE,KAAK,GAAEC,KAAE,CAAC,GAAEF,KAAE,SAASP,IAAEE,IAAE;AAAC,gBAAIM;AAAE,YAAAC,GAAE,MAAMH,GAAEE,KAAE,CAAC,GAAEX,IAAE,QAAMA,KAAEQ,GAAE,aAAaL,IAAEF,IAAE,KAAE,IAAEO,GAAE,aAAaL,IAAED,IAAEI,IAAE,KAAE,CAAC,GAAEG,GAAEE,IAAE,SAAQN,EAAC,GAAEM,GAAE;AAAA,UAAC;AAAE,cAAGA,GAAE,QAAQ,YAAYR,EAAC,KAAGQ,GAAE,QAAQ,YAAYR,EAAC,EAAEE,EAAC,KAAG,MAAM,QAAQM,GAAE,QAAQ,YAAYR,EAAC,EAAEE,EAAC,CAAC,KAAGM,GAAE,QAAQ,YAAYR,EAAC,EAAEE,EAAC,EAAE,QAAS,SAASL,IAAE;AAAC,YAAAU,GAAEV,GAAE,OAAMA,EAAC;AAAA,UAAC,CAAE,GAAE,KAAK,OAAO,WAAW,cAAYW,GAAE,QAAQ,YAAY,QAAO;AAAC,gBAAIG,KAAE,KAAK,OAAO,WAAW,iBAAe,KAAK,OAAO,WAAW,iBAAeH,GAAE,QAAQ,QAAOE,KAAE,EAAC,cAAa,QAAMb,KAAE,IAAEW,GAAE,QAAQ,QAAQ,KAAKR,EAAC,GAAE,aAAY,QAAMH,KAAEW,GAAE,QAAQ,QAAQ,KAAKR,EAAC,IAAE,GAAE,iBAAgB,GAAE,eAAc,SAAQ,aAAY,MAAM,QAAQW,GAAEX,EAAC,CAAC,IAAEW,GAAEX,EAAC,EAAE,CAAC,IAAEW,GAAEX,EAAC,EAAC;AAAE,YAAAO,GAAEC,GAAE,QAAQ,iBAAiBR,EAAC,EAAEE,EAAC,GAAEQ,EAAC,GAAEH,GAAEC,GAAE,QAAQ,eAAeR,EAAC,EAAEE,EAAC,GAAEU,GAAEA,GAAE,CAAC,GAAEF,EAAC,GAAE,CAAC,GAAE,EAAC,aAAY,MAAM,QAAQC,GAAEX,EAAC,CAAC,IAAEW,GAAEX,EAAC,EAAE,CAAC,IAAEW,GAAEX,EAAC,EAAC,CAAC,CAAC;AAAA,UAAC;AAAC,iBAAOS;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASZ,IAAE;AAAC,cAAIC,KAAED,GAAE,cAAaE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,OAAMK,KAAEL,GAAE,OAAMM,KAAEN,GAAE,UAASQ,KAAER,GAAE,WAAUS,KAAE,IAAIa,GAAE,KAAK,OAAO,GAAG,GAAEX,KAAEF,GAAE,MAAM,EAAC,WAAU,8BAA6B,CAAC;AAAE,UAAAE,GAAE,KAAK,UAAU,IAAI,2BAA2B,GAAE,KAAK,OAAO,EAAE,QAAQ,gBAAgB,KAAK,EAAC,IAAGA,GAAE,KAAI,CAAC,GAAEA,GAAE,KAAK,aAAY,0BAA0B,OAAO,KAAK,OAAO,EAAE,QAAQ,MAAK,GAAG,CAAC;AAAE,cAAIC,KAAE;AAAK,iBAAO,KAAK,OAAO,eAAa,MAAM,QAAQT,EAAC,KAAGA,GAAE,QAAS,SAASH,IAAE;AAAC,gBAAGA,GAAE,KAAG,MAAIA,GAAE,KAAGS,GAAE,EAAE,QAAQ,YAAU,GAAE;AAAC,kBAAIR,KAAE,WAASD,GAAE,MAAM,eAAaA,GAAE,MAAM,eAAaQ,KAAE,GAAEL,KAAED,KAAED,KAAEO,KAAE;AAAE,cAAAI,KAAEH,GAAE,SAAST,GAAE,GAAEG,KAAE,IAAEF,IAAED,GAAE,GAAEG,IAAEH,GAAE,MAAM,cAAYA,GAAE,MAAM,cAAY,QAAOA,GAAE,MAAM,iBAAgBA,GAAE,MAAM,cAAYA,GAAE,MAAM,cAAY,GAAEA,GAAE,MAAM,aAAa,GAAEW,GAAE,IAAIC,EAAC;AAAA,YAAC;AAAA,UAAC,CAAE,IAAE,MAAM,QAAQP,EAAC,KAAGA,GAAE,QAAS,SAASL,IAAE;AAAC,gBAAGA,GAAE,KAAG,MAAIA,GAAE,KAAGS,GAAE,EAAE,QAAQ,aAAW,GAAE;AAAC,kBAAIP,KAAE,WAASF,GAAE,MAAM,cAAYA,GAAE,MAAM,cAAYM,KAAE,GAAEH,KAAEF,KAAEC,KAAEI,KAAE;AAAE,cAAAM,KAAEH,GAAE,SAASN,KAAE,IAAED,IAAEF,GAAE,GAAEG,IAAEH,GAAE,GAAEA,GAAE,MAAM,cAAYA,GAAE,MAAM,cAAY,QAAOA,GAAE,MAAM,iBAAgBA,GAAE,MAAM,eAAaA,GAAE,MAAM,eAAa,GAAEA,GAAE,MAAM,aAAa,GAAEW,GAAE,IAAIC,EAAC;AAAA,YAAC;AAAA,UAAC,CAAE,GAAED;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASX,IAAE;AAAC,cAAIC,KAAED,GAAE,WAAUE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,OAAMK,KAAE,KAAK,GAAEC,KAAEL,GAAE,GAAEO,KAAEP,GAAE,IAAGQ,KAAER,GAAE,cAAaU,KAAET,GAAE,GAAEU,KAAEV,GAAE,IAAGQ,KAAER,GAAE,cAAaY,KAAEL,KAAEP,GAAE,WAAUa,KAAE,IAAIO,GAAE,KAAK,OAAO,GAAG,GAAET,KAAE,IAAIM,MAAEH,KAAED,GAAE,KAAKP,IAAEM,EAAC,IAAEC,GAAE,KAAKT,IAAEQ,EAAC,IAAEC,GAAE,KAAKJ,IAAED,EAAC,IAAEK,GAAE,KAAKH,IAAEF,EAAC,IAAEK,GAAE,KAAKP,IAAEM,EAAC,KAAG,aAAWT,GAAE,OAAO,YAAY,IAAI,2BAAyB,WAAS,KAAK,gBAAgB,SAAS,EAAE,CAAC,IAAE,OAAK;AAAM,iBAAOU,GAAE,SAAS,EAAC,GAAEC,IAAE,MAAKH,GAAE,WAAW,KAAGM,GAAE,QAAQhB,EAAC,CAAC,GAAE,QAAO,QAAO,aAAY,GAAE,aAAY,GAAE,SAAQ,yBAAwB,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASH,IAAE;AAAC,cAAIC,IAAEC,KAAEF,GAAE,GAAEG,KAAEH,GAAE,GAAEK,KAAE,KAAK,GAAEC,KAAE,GAAEE,KAAE;AAAE,kBAAOH,GAAE,OAAO,YAAY,IAAI,aAAWA,GAAE,QAAQ,OAAO,IAAK,SAASL,IAAEC,IAAE;AAAC,mBAAOA;AAAA,UAAC,CAAE,KAAG,UAAQA,KAAEI,GAAE,QAAQ,iBAAe,WAASJ,KAAE,SAAOA,GAAE,EAAE,IAAK,SAASD,IAAE;AAAC,mBAAOA;AAAA,UAAC,CAAE,MAAI,CAAC,GAAG,QAAS,SAASA,IAAE;AAAC,gBAAIC,KAAEI,GAAE,QAAQ,cAAcL,EAAC,EAAEG,EAAC;AAAE,YAAAF,MAAGK,MAAIN,KAAEE,MAAG,MAAID,MAAGO;AAAA,UAAG,CAAE,GAAE,EAAC,gBAAeF,IAAE,gBAAeE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASR,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,aAAa,UAAW,SAASC,IAAE;AAAC,mBAAOA,GAAE,QAAQD,GAAE,QAAQ,YAAYD,EAAC,CAAC,IAAE;AAAA,UAAE,CAAE,GAAEG,KAAE,KAAK,OAAO,oBAAmBE,KAAEF,GAAE,QAAQD,EAAC;AAAE,iBAAOG,KAAE,MAAIF,GAAE,KAAKD,EAAC,GAAEG,KAAEF,GAAE,SAAO,IAAG,EAAC,YAAWD,IAAE,kBAAiBG,GAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEL;AAAA,MAAC,EAAE;AAArlhQ,UAAulhQ6E,MAAG,WAAU;AAAC,iBAAS7E,GAAEC,IAAEE,IAAE;AAAC,UAAAD,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAE,cAAII,KAAE,KAAK;AAAE,eAAK,aAAWA,GAAE,OAAO,YAAY,KAAI,KAAK,eAAa,KAAK,WAAW,YAAW,KAAK,cAAYA,GAAE,OAAO,OAAO,OAAM,KAAK,cAAY,OAAG,KAAK,aAAWA,GAAE,QAAQ,YAAY,UAAQ,KAAK,cAAa,KAAK,4BAA0B,CAACA,GAAE,QAAQ,mBAAiBA,GAAE,QAAQ,YAAY,UAAQA,GAAE,OAAO,YAAY,IAAI,mBAAkB,KAAK,WAAS,KAAK,WAAW,UAAS,KAAK,WAASF,IAAE,SAAO,KAAK,aAAW,KAAK,SAAOA,GAAE,QAAO,KAAK,SAAOA,GAAE,QAAO,KAAK,iBAAeA,GAAE,gBAAe,KAAK,iBAAeA,GAAE,gBAAe,KAAK,YAAUA,GAAE,WAAU,KAAK,oBAAkBA,GAAE,oBAAmB,KAAK,aAAW,GAAE,KAAK,oBAAkB,GAAE,KAAK,YAAU,GAAE,KAAK,UAAQ,CAAC;AAAE,cAAIG,KAAE,IAAIsC,GAAE,KAAK,GAAG;AAAE,eAAK,0BAAwBtC,GAAE,2BAA2B,QAAO,CAAC,OAAM,QAAQ,CAAC,GAAE,KAAK,qBAAmB,CAAC;AAAE,cAAIE,KAAEF,GAAE,oBAAoB,GAAEG,KAAE,IAAIc,GAAE,KAAK,GAAG;AAAE,eAAK,sBAAoBd,GAAE,uBAAuB,KAAK,EAAE,OAAO,OAAO,IAAK,SAAST,IAAEC,IAAE;AAAC,mBAAM,OAAKO,GAAE,QAAQP,EAAC,IAAEA,KAAE;AAAA,UAAE,CAAE,EAAE,OAAQ,SAASD,IAAE;AAAC,mBAAM,OAAKA;AAAA,UAAC,CAAE,CAAC,GAAE,KAAK,aAAW,IAAI4E,IAAG,IAAI;AAAA,QAAC;AAAC,eAAOvE,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAImB,GAAE,KAAK,GAAG,GAAEjB,KAAE,IAAIkB,GAAE,KAAK,KAAIrB,EAAC;AAAE,UAAAF,KAAEK,GAAE,aAAaL,EAAC,GAAE,KAAK,SAAOA,IAAE,KAAK,SAAOK,GAAE,cAAc,KAAK,MAAM,GAAE,KAAK,WAAW,cAAcL,EAAC;AAAE,cAAIM,KAAEH,GAAE,MAAM,EAAC,OAAM,+CAA8C,CAAC;AAAE,UAAAD,GAAE,OAAO,WAAW,WAAS,KAAK,aAAW,KAAK,WAAW,WAAW,YAAU,QAAQ,KAAK,iIAAiI;AAAE,mBAAQM,KAAE,GAAEC,KAAE,GAAED,KAAER,GAAE,QAAOQ,MAAIC,MAAI;AAAC,gBAAIE,IAAEC,IAAEF,IAAEI,IAAED,KAAE,QAAOG,KAAE,QAAOC,KAAE,CAAC,GAAEb,KAAE,CAAC,GAAEc,KAAEhB,GAAE,QAAQ,cAAYD,GAAEO,EAAC,IAAEA,IAAED,KAAE,KAAK,WAAW,cAAcW,EAAC,EAAE,kBAAiBE,KAAEjB,GAAE,MAAM,EAAC,OAAM,qBAAoB,KAAIK,KAAE,GAAE,YAAWW,GAAE,aAAajB,GAAE,QAAQ,YAAYgB,EAAC,CAAC,GAAE,kBAAiBA,GAAC,CAAC;AAAE,iBAAK,IAAI,OAAO,0BAA0BE,IAAEF,EAAC,GAAElB,GAAEQ,EAAC,EAAE,SAAO,MAAI,KAAK,WAAS,KAAK,WAAS;AAAG,gBAAIa,KAAE,GAAEG,KAAE;AAAE,iBAAK,OAAO,SAAO,MAAI,KAAK,aAAWtB,GAAE,QAAQ,sBAAsBgB,EAAC,GAAE,KAAK,oBAAkBA;AAAG,gBAAIO,KAAE,KAAK;AAAkB,iBAAK,aAAWvB,GAAE,OAAO,MAAM,KAAK,UAAU,KAAGA,GAAE,OAAO,MAAM,KAAK,UAAU,EAAE;AAAS,gBAAIwB,KAAE,KAAK,WAAW,iBAAiB;AAAE,YAAAV,KAAEU,GAAE,GAAEL,KAAEK,GAAE,WAAUd,KAAEc,GAAE,WAAUZ,KAAEY,GAAE,OAAMb,KAAEa,GAAE,GAAEF,KAAEE,GAAE,UAASf,KAAEe,GAAE,WAAUhB,KAAEgB,GAAE,OAAM,KAAK,cAAYtB,GAAE,KAAKS,KAAEW,KAAE,CAAC;AAAE,gBAAIG,KAAExB,GAAE,MAAM,EAAC,OAAM,yBAAwB,kBAAiBe,GAAC,CAAC;AAAE,YAAAhB,GAAE,QAAQ,gBAAgB,KAAK,EAAC,IAAGyB,GAAE,KAAI,CAAC,GAAEA,GAAE,KAAK,UAAU,IAAI,2BAA2B;AAAE,gBAAIC,KAAEzB,GAAE,MAAM,EAAC,OAAM,+BAA8B,CAAC,GAAE0B,KAAE1B,GAAE,MAAM,EAAC,OAAM,yBAAwB,CAAC;AAAE,YAAAD,GAAE,QAAQ,gBAAgB,KAAK,EAAC,IAAG2B,GAAE,KAAI,CAAC,GAAEA,GAAE,KAAK,UAAU,IAAI,2BAA2B;AAAE,qBAAQC,KAAE,GAAEA,KAAE9B,GAAEQ,EAAC,EAAE,QAAOsB,MAAI;AAAC,kBAAIC,KAAE,KAAK,WAAW,eAAevB,IAAEsB,IAAEZ,EAAC,GAAEc,KAAE,MAAKC,KAAE,EAAC,SAAQ,EAAC,GAAEzB,IAAE,GAAEsB,IAAE,WAAUZ,IAAE,mBAAkBO,IAAE,IAAGhB,GAAC,GAAE,GAAEI,IAAE,GAAEG,IAAE,aAAYe,IAAE,UAASX,GAAC;AAAE,mBAAK,gBAAcY,KAAE,KAAK,aAAajB,GAAEA,GAAE,CAAC,GAAEkB,EAAC,GAAE,CAAC,GAAE,EAAC,WAAUZ,IAAE,OAAMP,IAAE,WAAUF,GAAC,CAAC,CAAC,GAAEY,KAAE,KAAK,OAAOhB,EAAC,EAAEsB,EAAC,IAAE,KAAK,mBAAiBE,KAAE,KAAK,gBAAgBjB,GAAEA,GAAE,CAAC,GAAEkB,EAAC,GAAE,CAAC,GAAE,EAAC,WAAUtB,IAAE,UAASa,IAAE,OAAMd,GAAC,CAAC,CAAC,GAAEW,KAAE,KAAK,OAAOb,EAAC,EAAEsB,EAAC,IAAE,KAAK,OAAOL,EAAC;AAAG,kBAAIS,KAAE,KAAK,WAAW,iBAAiBlC,IAAEQ,IAAEsB,IAAEZ,EAAC;AAAE,kBAAG,KAAK,YAAU,KAAK,WAAW,cAAY,KAAK,QAAQ,UAAQY,KAAE,GAAE;AAAC,oBAAIK,KAAE,KAAK,WAAW,cAAc,EAAC,OAAM,YAAU,OAAOD,MAAG,QAAM,QAAMA,KAAE,SAAOA,GAAE,QAAQ,KAAK,KAAGA,KAAEf,GAAE,UAAUjB,GAAE,QAAQ,OAAOM,EAAC,CAAC,GAAE,WAAU,KAAK,QAAQ,KAAK,QAAQ,SAAO,CAAC,GAAE,WAAUwB,GAAC,CAAC;AAAE,gBAAAG,MAAGN,GAAE,IAAIM,EAAC;AAAA,cAAC;AAAC,mBAAK,QAAQ,KAAKH,EAAC;AAAE,kBAAII,KAAE,KAAK,WAAW,aAAa,EAAC,cAAaJ,GAAE,cAAa,cAAaA,GAAE,cAAa,OAAMA,GAAE,OAAM,OAAMA,GAAE,OAAM,WAAUX,IAAE,UAASG,GAAC,CAAC;AAAE,cAAAY,MAAGR,GAAE,IAAIQ,EAAC,GAAEpB,KAAEgB,GAAE,GAAEnB,KAAEmB,GAAE,GAAEF,KAAE,KAAG1B,GAAE,KAAKS,KAAEW,KAAE,CAAC,GAAEP,GAAE,KAAKD,EAAC,GAAE,KAAK,aAAa,EAAC,WAAUE,IAAE,UAASgB,IAAE,GAAEJ,IAAE,GAAEtB,IAAE,kBAAiBD,IAAE,UAASyB,GAAE,UAAS,QAAOA,GAAE,QAAO,aAAYD,IAAE,UAASX,IAAE,GAAEP,IAAE,GAAEG,IAAE,QAAOhB,IAAE,WAAU,KAAK,IAAIgC,GAAE,YAAUA,GAAE,YAAUX,EAAC,GAAE,UAAS,KAAK,IAAIW,GAAE,WAASA,GAAE,WAASR,EAAC,GAAE,kBAAiBG,IAAE,gBAAeC,IAAE,cAAaC,IAAE,eAAc,KAAK,UAAS,MAAK,MAAK,CAAC;AAAA,YAAC;AAAC,YAAA3B,GAAE,QAAQ,cAAcgB,EAAC,IAAEd,IAAEF,GAAE,QAAQ,cAAcgB,EAAC,IAAED,IAAEX,GAAE,IAAIc,EAAC;AAAA,UAAC;AAAC,iBAAOd;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAED,GAAE,WAAUE,KAAEF,GAAE,UAASG,KAAEH,GAAE,UAASK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,GAAEQ,KAAER,GAAE,kBAAiBS,KAAET,GAAE,UAASW,KAAEX,GAAE,QAAOY,KAAEZ,GAAE,aAAYU,KAAEV,GAAE,UAASc,KAAEd,GAAE,GAAEe,KAAEf,GAAE,GAAEa,KAAEb,GAAE,IAAGgB,KAAEhB,GAAE,IAAGiB,KAAEjB,GAAE,QAAOI,KAAEJ,GAAE,WAAUkB,KAAElB,GAAE,UAASO,KAAEP,GAAE,cAAamB,KAAEnB,GAAE,cAAaoB,KAAEpB,GAAE,kBAAiBuB,KAAEvB,GAAE,gBAAewB,KAAExB,GAAE,cAAayB,KAAEzB,GAAE,eAAc0B,KAAE1B,GAAE,MAAK2B,KAAE3B,GAAE,SAAQ4B,KAAE,KAAK,GAAEC,KAAE,IAAIP,GAAE,KAAK,GAAG;AAAE,cAAG,CAACnB,IAAE;AAAC,gBAAI2B,KAAE,cAAY,OAAOF,GAAE,QAAQ,OAAO,OAAO3B,EAAC,IAAE,SAASD,IAAE;AAAC,kBAAIC,IAAEC,KAAE0B,GAAE,OAAO,OAAO;AAAO,qBAAO,MAAM,QAAQ1B,EAAC,KAAGA,GAAE,SAAO,OAAKD,KAAEC,GAAEF,EAAC,OAAKC,KAAE,KAAI,cAAY,OAAOA,MAAGA,GAAE,EAAC,OAAM2B,GAAE,QAAQ,OAAO5B,EAAC,EAAEK,EAAC,GAAE,gBAAeA,IAAE,GAAEuB,GAAC,CAAC,IAAE3B;AAAA,YAAC,EAAEA,EAAC,IAAE2B,GAAE,QAAQ,OAAO,OAAO3B,EAAC;AAAE,YAAAE,KAAE,KAAK,WAAW,cAAYyB,GAAE,QAAQ,OAAO,OAAOvB,EAAC,IAAEyB;AAAA,UAAC;AAAC,UAAAF,GAAE,OAAO,OAAOtB,EAAC,EAAE,KAAKD,EAAC,KAAGuB,GAAE,OAAO,OAAOtB,EAAC,EAAE,KAAKD,EAAC,EAAE,gBAAcF,KAAEyB,GAAE,OAAO,OAAOtB,EAAC,EAAE,KAAKD,EAAC,EAAE,cAAa,KAAK,gBAAcH,KAAE;AAAQ,cAAI6B,KAAE1B,KAAEuB,GAAE,OAAO,MAAM,WAAW,iBAAiB,SAAOA,GAAE,OAAO,MAAM,WAAW,QAAMA,GAAE,QAAQ,cAAY,KAAII,KAAEH,GAAE,YAAY,EAAC,GAAEvB,IAAE,GAAED,IAAE,WAAUJ,IAAE,UAASQ,IAAE,QAAOE,IAAE,QAAOR,IAAE,aAAYS,IAAE,eAAcgB,GAAE,OAAO,OAAO,SAAQ,MAAK1B,IAAE,gBAAe6B,IAAE,cAAaH,GAAE,OAAO,MAAM,WAAW,OAAM,iBAAgBA,GAAE,OAAO,MAAM,WAAW,iBAAiB,OAAM,WAAU,cAAc,OAAOF,IAAE,QAAQ,EAAE,OAAOC,EAAC,GAAE,WAAUD,GAAC,CAAC;AAAE,UAAAM,GAAE,KAAK,aAAY,uBAAuB,OAAOJ,GAAE,QAAQ,MAAK,GAAG,CAAC;AAAE,cAAIK,KAAEL,GAAE,OAAO;AAAmB,UAAAK,GAAE,QAAM,KAAG5B,MAAGuB,GAAE,QAAQ,aAAWK,GAAE,UAAQD,GAAE,KAAK,aAAa,oBAAmBC,GAAE,SAAS,GAAED,GAAE,KAAK,aAAa,gBAAeC,GAAE,WAAW,GAAED,GAAE,KAAK,aAAa,gBAAeC,GAAE,WAAW,IAAG,WAASpB,MAAG,WAASG,OAAIgB,GAAE,KAAK,iBAAgBnB,EAAC,GAAEmB,GAAE,KAAK,iBAAgBhB,EAAC,IAAG,IAAIK,GAAE,KAAK,GAAG,EAAE,mBAAmBW,IAAE/B,IAAEI,EAAC,GAAEK,GAAE,IAAIsB,EAAC;AAAE,cAAIE,KAAE,IAAIyC,IAAG,IAAI,EAAE,oBAAoB,EAAC,GAAE7D,IAAE,GAAEC,IAAE,IAAGF,IAAE,IAAGG,IAAE,GAAEV,IAAE,GAAED,IAAE,QAAOY,IAAE,WAAUhB,IAAE,kBAAiBO,IAAE,WAAUJ,IAAE,UAASc,IAAE,cAAaX,IAAE,cAAaY,IAAE,cAAaa,IAAE,eAAcP,GAAC,CAAC;AAAE,iBAAO,SAAOS,GAAE,cAAYd,GAAE,IAAIc,GAAE,UAAU,GAAEA,GAAE,mBAAiBd,GAAE,IAAIc,GAAE,eAAe,GAAExB,GAAE,IAAIU,EAAC,GAAEG,MAAGb,GAAE,IAAIa,EAAC,GAAEC,MAAGd,GAAE,IAAIc,EAAC,GAAEd;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASV,IAAE;AAAC,cAAIC,IAAEC,KAAEF,GAAE,SAAQG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,aAAYM,KAAEN,GAAE,OAAMQ,KAAER,GAAE,GAAES,KAAET,GAAE,GAAEW,KAAEX,GAAE,WAAUY,KAAEZ,GAAE,UAASU,KAAE,KAAK,GAAEI,KAAEZ,GAAE,GAAEa,KAAEb,GAAE;AAAE,cAAGQ,GAAE,QAAQ,WAAW,CAAAT,MAAGQ,MAAGC,GAAE,QAAQ,QAAQI,EAAC,EAAEC,EAAC,IAAEL,GAAE,QAAQ,QAAM,KAAK,iBAAeP,MAAGA,KAAE,KAAK;AAAA,mBAAiBO,GAAE,OAAO,YAAY,IAAI,yBAAwB;AAAC,gBAAIG,KAAE,GAAEG,KAAE;AAAE,YAAAN,GAAE,QAAQ,cAAc,QAAS,SAASV,IAAEC,IAAE;AAAC,cAAAD,GAAEe,EAAC,KAAGF,MAAIZ,KAAEa,MAAG,MAAId,GAAEe,EAAC,KAAGC;AAAA,YAAG,CAAE,GAAEH,KAAE,MAAIV,KAAE,KAAK,YAAUA,KAAEU,KAAGZ,KAAEQ,KAAEN,KAAE,KAAK,UAASF,MAAGE,KAAEa;AAAA,UAAC,MAAM,CAAAf,KAAEQ,KAAEN,KAAE,KAAK;AAAS,eAAK,aAAWG,OAAI,KAAK,WAAW,aAAa,KAAK,OAAOQ,EAAC,EAAEC,EAAC,GAAET,EAAC,IAAEA,MAAG,IAAGE,KAAE,KAAK,WAAW,aAAa,KAAK,OAAOM,EAAC,EAAEC,EAAC,GAAET,EAAC;AAAE,cAAIW,KAAE,KAAK,WAAW,YAAY,EAAC,cAAahB,IAAE,WAAUE,IAAE,IAAGG,IAAE,IAAGE,IAAE,aAAYH,IAAE,YAAW,KAAK,YAAW,QAAO,KAAK,QAAO,WAAUH,GAAE,WAAU,GAAEY,IAAE,GAAEC,IAAE,GAAEL,GAAC,CAAC;AAAE,iBAAOA,GAAE,QAAQ,eAAaD,MAAGE,KAAG,KAAK,WAAW,cAAc,EAAC,GAAEI,IAAE,GAAED,IAAE,IAAGb,KAAEE,KAAE,KAAK,UAAS,IAAGA,KAAE,KAAK,WAAU,UAASS,GAAC,CAAC,GAAE,EAAC,QAAOK,GAAE,QAAO,UAASA,GAAE,UAAS,IAAGX,IAAE,GAAEE,IAAE,GAAEC,IAAE,OAAM,KAAK,WAAW,cAAc,KAAIH,IAAE,MAAKQ,IAAEC,EAAC,GAAE,cAAad,IAAE,WAAUE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASH,IAAE;AAAC,cAAIC,IAAEC,KAAEF,GAAE,SAAQG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,WAAUQ,KAAER,GAAE,UAASS,KAAET,GAAE,OAAMW,KAAEX,GAAE,aAAYY,KAAEZ,GAAE,UAASU,KAAE,KAAK,GAAEI,KAAEZ,GAAE,WAAUa,KAAEb,GAAE,mBAAkBW,KAAEX,GAAE,GAAEc,KAAEd,GAAE,GAAEe,KAAEf,GAAE;AAAG,cAAGQ,GAAE,QAAQ,YAAW;AAAC,gBAAIN,KAAE,KAAK,uBAAuB,EAAC,GAAED,IAAE,GAAEa,IAAE,WAAUF,IAAE,UAASN,GAAC,CAAC;AAAE,YAAAL,KAAEC,GAAE,GAAEH,KAAEG,GAAE;AAAA,UAAY,WAASM,GAAE,OAAO,YAAY,IAAI,yBAAwB;AAAC,gBAAIQ,KAAE,KAAK,WAAW,uBAAuB,EAAC,GAAEL,IAAE,GAAEG,GAAC,CAAC,GAAET,KAAEW,GAAE,gBAAeC,KAAED,GAAE;AAAe,YAAAX,KAAE,MAAIC,KAAE,KAAK,YAAUA,KAAED,KAAGN,KAAEE,KAAEK,KAAE,KAAK,UAASP,MAAGO,KAAEW;AAAA,UAAC,MAAM,CAAAlB,KAAEE,KAAEK,KAAE,KAAK;AAAS,UAAAH,KAAE,KAAK,WAAW,aAAa,KAAK,OAAOQ,EAAC,EAAEG,EAAC,GAAEP,IAAEM,EAAC;AAAE,cAAIK,KAAE,KAAK,WAAW,eAAe,EAAC,cAAanB,IAAE,UAASO,IAAE,IAAGC,IAAE,IAAGJ,IAAE,aAAYM,IAAE,YAAW,KAAK,YAAW,QAAO,KAAK,QAAO,WAAUG,IAAE,GAAED,IAAE,GAAEG,IAAE,GAAEN,GAAC,CAAC;AAAE,iBAAOA,GAAE,QAAQ,eAAaP,MAAGG,KAAG,KAAK,WAAW,cAAc,EAAC,IAAGW,IAAE,GAAED,IAAE,GAAEH,IAAE,IAAGZ,KAAEU,KAAE,IAAEH,KAAE,KAAK,UAAS,IAAGA,KAAE,KAAK,YAAUG,KAAE,GAAE,UAASC,GAAC,CAAC,GAAE,EAAC,QAAOQ,GAAE,QAAO,UAASA,GAAE,UAAS,GAAEjB,IAAE,GAAEE,IAAE,OAAM,KAAK,WAAW,cAAc,KAAI,MAAKI,IAAEI,IAAEG,IAAED,EAAC,GAAE,cAAad,IAAE,UAASO,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASR,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,UAASG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,GAAEM,KAAE,KAAK,GAAEE,KAAEL;AAAE,iBAAOG,GAAE,QAAQ,QAAQH,EAAC,EAAE,WAASK,KAAEF,GAAE,QAAQ,sBAAqBA,GAAE,QAAQ,QAAQE,EAAC,EAAEH,EAAC,MAAIJ,MAAGK,GAAE,QAAQ,QAAQE,EAAC,EAAEH,EAAC,IAAEC,GAAE,QAAQ,QAAM,KAAK,SAAOJ,KAAE,KAAK,YAAU,IAAG,EAAC,cAAaD,KAAEC,KAAE,KAAK,UAAS,GAAED,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASD,IAAEC,IAAE;AAAC,mBAAQC,IAAEC,KAAE,KAAK,GAAEE,KAAE,GAAEA,KAAEF,GAAE,QAAQ,cAAc,QAAOE,MAAI;AAAC,gBAAIC,KAAEH,GAAE,QAAQ,cAAcE,EAAC;AAAE,YAAAC,GAAE,SAAOA,GAAE,MAAM,SAAO,KAAG,SAASA,GAAE,WAAU,EAAE,MAAI,SAASN,IAAE,EAAE,KAAG,WAASG,GAAE,QAAQ,cAAcE,EAAC,EAAE,MAAMJ,EAAC,MAAIC,KAAEC,GAAE,QAAQ,cAAcE,EAAC,EAAE,MAAMJ,EAAC,EAAE;AAAA,UAAE;AAAC,iBAAOC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA5uyQ,UAA8uyQ8E,MAAG,SAAS9E,IAAE;AAAC,QAAAY,GAAET,IAAE0E,GAAE;AAAE,YAAI5E,KAAEO,GAAEL,EAAC;AAAE,iBAASA,KAAG;AAAC,iBAAOD,GAAE,MAAKC,EAAC,GAAEF,GAAE,MAAM,MAAK,SAAS;AAAA,QAAC;AAAC,eAAOI,GAAEF,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,eAAK,WAAS,IAAImB,GAAE,KAAK,GAAG,GAAE,KAAK,MAAI,IAAIuD,IAAG,KAAK,KAAI,KAAK,QAAQ;AAAE,cAAIxE,KAAE,IAAIkB,GAAE,KAAK,KAAIpB,EAAC;AAAE,UAAAH,KAAEK,GAAE,aAAaL,EAAC,GAAE,KAAK,SAAOK,GAAE,cAAc,KAAK,MAAM,GAAE,KAAK,WAAW,cAAcL,EAAC,GAAE,WAASG,GAAE,OAAO,MAAM,cAAYH,KAAEG,GAAE,QAAQ,cAAYF,GAAE,IAAK,SAASD,IAAE;AAAC,mBAAOG,GAAE,QAAQ,cAAcH,EAAC;AAAA,UAAC,CAAE,IAAEG,GAAE,QAAQ,cAAc,MAAM,IAAG,KAAK,SAAOH,IAAE,KAAK,WAAW,0BAA0B,IAAI;AAAE,mBAAQM,KAAE,KAAK,SAAS,MAAM,EAAC,OAAM,+CAA8C,CAAC,GAAEE,KAAE,GAAEC,KAAE,GAAEE,KAAE,SAASN,IAAEM,IAAE;AAAC,gBAAIC,KAAE,QAAOF,KAAE,QAAOI,KAAE,QAAOD,KAAE,QAAOG,KAAEb,GAAE,QAAQ,cAAYF,GAAEI,EAAC,IAAEA,IAAEY,KAAEf,GAAE,WAAW,cAAcc,EAAC,GAAEZ,KAAEa,GAAE,YAAWC,KAAED,GAAE;AAAiB,YAAAf,GAAE,WAASA,GAAEC,GAAE,QAAQ,aAAaC,EAAC,CAAC;AAAE,gBAAIG,KAAE,CAAC,GAAEa,KAAE,CAAC,GAAEC,KAAE;AAAE,YAAAnB,GAAE,OAAO,SAAO,MAAIA,GAAE,aAAWC,GAAE,QAAQ,sBAAsBa,EAAC,EAAE,CAAC,GAAEK,KAAEL,KAAGd,GAAE,aAAWC,GAAE,OAAO,MAAMD,GAAE,UAAU,KAAGC,GAAE,OAAO,MAAMD,GAAE,UAAU,EAAE;AAAS,gBAAIoB,KAAEpB,GAAE,SAAS,MAAM,EAAC,OAAM,qBAAoB,YAAWiB,GAAE,aAAahB,GAAE,QAAQ,YAAYa,EAAC,CAAC,GAAE,KAAIX,KAAE,GAAE,kBAAiBW,GAAC,CAAC;AAAE,YAAAd,GAAE,IAAI,OAAO,0BAA0BoB,IAAEN,EAAC;AAAE,gBAAIO,KAAErB,GAAE,SAAS,MAAM,EAAC,OAAM,yBAAwB,kBAAiBc,GAAC,CAAC,GAAEQ,KAAEtB,GAAE,SAAS,MAAM,EAAC,OAAM,+BAA8B,CAAC,GAAEuB,KAAE,GAAEC,KAAE,GAAEC,KAAEzB,GAAE,iBAAiBM,IAAEC,IAAEG,IAAEF,IAAEI,IAAED,IAAEQ,EAAC;AAAE,YAAAZ,KAAEkB,GAAE,GAAEF,KAAEE,GAAE,WAAUjB,KAAEiB,GAAE,WAAUd,KAAEc,GAAE,OAAMnB,KAAEmB,GAAE,GAAED,KAAEC,GAAE,UAASf,KAAEe,GAAE,WAAUb,KAAEa,GAAE,OAAMxB,GAAE,QAAQ,YAAUsB,IAAEtB,GAAE,QAAQ,WAASuB,IAAExB,GAAE,WAAW,wBAAwBA,EAAC,GAAE,MAAIA,GAAE,SAAS,MAAM,UAAQA,GAAE,SAAS,MAAM,CAAC,EAAE,MAAO,SAASF,IAAE;AAAC,qBAAO,MAAMA,EAAC;AAAA,YAAC,CAAE,MAAIE,GAAE,SAAS,MAAM,CAAC,IAAEA,GAAE,SAAS,MAAM,CAAC,EAAE,IAAK,WAAU;AAAC,qBAAOY;AAAA,YAAC,CAAE,GAAEZ,GAAE,SAAS,OAAO,CAAC,IAAEA,GAAE,SAAS,OAAO,CAAC,EAAE,IAAK,WAAU;AAAC,qBAAO;AAAA,YAAC,CAAE;AAAG,qBAAQ0B,KAAE,GAAEA,KAAEzB,GAAE,QAAQ,YAAWyB,MAAI;AAAC,kBAAIC,KAAE3B,GAAE,WAAW,eAAeG,IAAEuB,IAAEZ,EAAC,GAAEc,KAAE,EAAC,SAAQ,EAAC,GAAEzB,IAAE,GAAEuB,IAAE,WAAUZ,IAAE,mBAAkBK,IAAE,IAAGV,GAAC,GAAE,aAAYkB,IAAE,GAAErB,IAAE,GAAEC,IAAE,UAASa,IAAE,kBAAiBJ,IAAE,aAAYf,GAAE,QAAQ,aAAaC,EAAC,EAAC,GAAE2B,KAAE;AAAK,cAAA7B,GAAE,gBAAc6B,KAAE7B,GAAE,oBAAoBa,GAAEA,GAAE,CAAC,GAAEe,EAAC,GAAE,CAAC,GAAE,EAAC,OAAMjB,IAAE,WAAUY,IAAE,WAAUf,GAAC,CAAC,CAAC,GAAEgB,KAAExB,GAAE,OAAOG,EAAC,EAAEuB,EAAC,IAAE1B,GAAE,mBAAiB6B,KAAE7B,GAAE,uBAAuBa,GAAEA,GAAE,CAAC,GAAEe,EAAC,GAAE,CAAC,GAAE,EAAC,WAAUlB,IAAE,UAASc,IAAE,OAAMZ,GAAC,CAAC,CAAC,GAAEW,KAAEvB,GAAE,OAAOG,EAAC,EAAEuB,EAAC,IAAE1B,GAAE,OAAOmB,EAAC;AAAG,kBAAIW,KAAE9B,GAAE,WAAW,aAAa,EAAC,cAAa6B,GAAE,cAAa,cAAaA,GAAE,cAAa,OAAMA,GAAE,OAAM,OAAMA,GAAE,OAAM,WAAUN,IAAE,UAASC,GAAC,CAAC;AAAE,cAAAM,MAAGR,GAAE,IAAIQ,EAAC,GAAEvB,KAAEsB,GAAE,GAAEvB,KAAEuB,GAAE,GAAExB,GAAE,KAAKC,EAAC,GAAEY,GAAE,KAAKX,EAAC;AAAE,kBAAIwB,KAAE/B,GAAE,WAAW,iBAAiBF,IAAEK,IAAEuB,IAAEZ,EAAC,GAAEkB,KAAE;AAAG,cAAA/B,GAAE,QAAQ,kBAAgB,aAAWD,GAAE,WAAW,gBAAgBc,EAAC,EAAEY,EAAC,KAAGzB,GAAE,QAAQ,OAAOa,EAAC,EAAEY,EAAC,IAAE,MAAIM,KAAE,uBAAqB,aAAWhC,GAAE,WAAW,gBAAgBc,EAAC,EAAEY,EAAC,KAAGzB,GAAE,QAAQ,OAAOa,EAAC,EAAEY,EAAC,IAAE,MAAIM,KAAE,sBAAqBZ,KAAEpB,GAAE,aAAa,EAAC,WAAUc,IAAE,UAASiB,IAAE,GAAEL,IAAE,GAAEvB,IAAE,kBAAiBa,IAAE,UAASa,GAAE,UAAS,QAAOA,GAAE,QAAO,aAAYF,IAAE,UAASP,IAAE,GAAEd,IAAE,GAAEC,IAAE,QAAOT,IAAE,WAAUyB,IAAE,UAASC,IAAE,kBAAiBH,IAAE,gBAAeC,IAAE,MAAK,OAAM,eAAcN,IAAE,SAAQgB,GAAC,CAAC;AAAA,YAAC;AAAC,YAAA/B,GAAE,QAAQ,cAAca,EAAC,IAAET,IAAEJ,GAAE,QAAQ,cAAca,EAAC,IAAEI,IAAElB,GAAE,SAAS,MAAM,KAAKA,GAAE,SAAS,KAAK,GAAEA,GAAE,SAAS,OAAO,KAAKA,GAAE,SAAS,MAAM,GAAEA,GAAE,SAAS,SAAS,KAAKA,GAAE,SAAS,QAAQ,GAAEA,GAAE,SAAS,MAAM,KAAKA,GAAE,SAAS,KAAK,GAAEA,GAAE,SAAS,OAAO,KAAKA,GAAE,SAAS,MAAM,GAAEA,GAAE,SAAS,SAAS,KAAKA,GAAE,SAAS,QAAQ,GAAEI,GAAE,IAAIgB,EAAC;AAAA,UAAC,GAAEV,KAAE,GAAEF,KAAE,GAAEE,KAAEZ,GAAE,QAAOY,MAAIF,KAAI,CAAAC,GAAEC,IAAEF,EAAC;AAAE,iBAAOJ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASN,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAEE,IAAE;AAAC,cAAIC,IAAEE,IAAEC,KAAE,KAAK;AAAE,cAAG,KAAK,cAAa;AAAC,YAAAT,KAAES,GAAE,QAAQ,aAAWA,GAAE,QAAQ;AAAW,gBAAIF,KAAEE,GAAE,OAAO,YAAY,IAAI;AAAU,YAAAH,KAAE,OAAK,OAAOC,EAAC,EAAE,QAAQ,GAAG,IAAE,SAASA,IAAE,EAAE,IAAEP,KAAE,SAASO,IAAE,EAAE,IAAE,KAAIJ,KAAEM,GAAE,QAAQ,iBAAe,KAAK,aAAWA,GAAE,QAAQ,YAAU,KAAK,oBAAkB,KAAK,oBAAmBX,MAAGE,KAAEM,MAAG;AAAA,UAAC,OAAK;AAAC,YAAAE,KAAET,KAAEU,GAAE,QAAQ,YAAUA,GAAE,QAAQ;AAAW,gBAAIE,KAAEF,GAAE,OAAO,YAAY,IAAI;AAAY,YAAAA,GAAE,QAAQ,cAAYA,GAAE,QAAQ,aAAW,IAAED,MAAGT,KAAEU,GAAE,QAAQ,WAAS,KAAK,UAAQ,SAAS,KAAK,WAAW,aAAY,EAAE,IAAE,MAAI,OAAK,OAAOE,EAAC,EAAE,QAAQ,GAAG,IAAEH,KAAE,SAASG,IAAE,EAAE,IAAEH,MAAG,SAASG,IAAE,EAAE,IAAE,KAAIT,KAAE,KAAK,aAAW,KAAK,UAAUG,EAAC,IAAEI,GAAE,QAAQ,aAAW,KAAK,UAAUJ,EAAC,GAAER,KAAEY,GAAE,QAAQ,iBAAeV,KAAES,MAAG;AAAA,UAAC;AAAC,cAAII,KAAEH,GAAE,QAAQ,UAAU,UAAQ;AAAE,iBAAM,EAAC,GAAEZ,IAAE,GAAEC,IAAE,WAAUE,IAAE,WAAUD,IAAE,WAAUO,KAAEM,IAAE,UAASJ,KAAEI,IAAE,OAAMV,IAAE,OAAMC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASN,IAAE;AAAC,mBAAQC,IAAEC,KAAEF,GAAE,SAAQG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,aAAYM,KAAEN,GAAE,OAAMQ,KAAER,GAAE,GAAES,KAAET,GAAE,GAAEW,KAAEX,GAAE,kBAAiBY,KAAEZ,GAAE,aAAYU,KAAEV,GAAE,WAAUc,KAAEd,GAAE,UAASe,KAAE,KAAK,GAAEF,KAAEJ,KAAEE,KAAER,IAAEa,KAAEd,GAAE,GAAEe,KAAEf,GAAE,GAAEE,KAAEF,GAAE,WAAUgB,KAAEhB,GAAE,mBAAkBK,KAAE,GAAEY,KAAE,GAAEA,KAAE,KAAK,SAAS,OAAO,QAAOA,KAAI,CAAAZ,MAAG,KAAK,SAAS,OAAOY,EAAC,EAAEF,EAAC;AAAE,cAAIG;AAAE,eAAIA,KAAER,GAAE,QAAQG,GAAE,OAAO,OAAOX,EAAC,EAAE,IAAI,KAAG,GAAE;AAAC,gBAAIiB,KAAEf;AAAE,iBAAK,SAAS,SAASc,KAAE,CAAC,EAAEH,EAAC,IAAE,IAAEI,KAAE,KAAK,OAAOL,EAAC,EAAEC,EAAC,KAAG,IAAE,KAAK,SAAS,MAAMG,KAAE,CAAC,EAAEH,EAAC,IAAEV,KAAE,KAAG,KAAK,aAAWA,KAAE,KAAG,KAAK,SAAS,MAAMa,KAAE,CAAC,EAAEH,EAAC,IAAE,KAAK,SAAS,SAASG,KAAE,CAAC,EAAEH,EAAC,KAAG,MAAII,KAAE,KAAK,OAAOL,EAAC,EAAEC,EAAC,KAAG,IAAE,KAAK,SAAS,MAAMG,KAAE,CAAC,EAAEH,EAAC,IAAE,KAAK,SAAS,MAAMG,KAAE,CAAC,EAAEH,EAAC,IAAEV,KAAE,KAAG,KAAK,aAAWA,KAAE,KAAIN,KAAEoB;AAAA,UAAC,MAAM,CAAApB,KAAEK;AAAE,UAAAE,KAAE,SAAO,KAAK,OAAOQ,EAAC,EAAEC,EAAC,IAAEhB,KAAEA,KAAE,KAAK,OAAOe,EAAC,EAAEC,EAAC,IAAE,KAAK,iBAAe,KAAG,KAAK,aAAW,KAAK,OAAOD,EAAC,EAAEC,EAAC,IAAE,KAAK,iBAAe;AAAG,cAAIK,KAAE,KAAK,WAAW,YAAY,EAAC,cAAaT,IAAE,WAAUV,IAAE,IAAGF,IAAE,IAAGO,IAAE,aAAYH,IAAE,YAAW,KAAK,YAAW,QAAO,KAAK,QAAO,WAAUH,GAAE,WAAU,aAAYU,IAAE,GAAEI,IAAE,GAAEC,IAAE,GAAEF,GAAC,CAAC;AAAE,iBAAO,KAAK,WAAW,cAAc,EAAC,GAAEE,IAAE,GAAED,IAAE,IAAGH,IAAE,IAAGV,IAAE,UAASW,GAAC,CAAC,GAAEL,MAAGC,IAAE,EAAC,QAAOY,GAAE,QAAO,UAASA,GAAE,UAAS,OAAM,KAAK,WAAW,cAAc,KAAIhB,IAAE,MAAKU,IAAEC,IAAEC,EAAC,GAAE,cAAajB,IAAE,cAAaY,IAAE,GAAEL,IAAE,GAAEC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAAST,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,WAAUM,KAAEN,GAAE,UAASQ,KAAER,GAAE,OAAMS,KAAET,GAAE,kBAAiBW,KAAEX,GAAE,aAAYY,KAAEZ,GAAE,UAASU,KAAE,KAAK,GAAEI,KAAEb,GAAE,GAAEc,KAAEd,GAAE,GAAEY,KAAEZ,GAAE,IAAGe,KAAEf,GAAE,WAAUgB,KAAEhB,GAAE;AAAkB,cAAGS,GAAE,QAAQ,YAAW;AAAC,gBAAIN,KAAEM,GAAE,QAAQ,QAAQM,EAAC,EAAED,EAAC;AAAE,YAAAX,OAAIA,KAAE,IAAGF,MAAGE,KAAEM,GAAE,QAAQ,QAAM,KAAK,SAAOJ,KAAE,IAAEI,GAAE,QAAQ,UAAU;AAAA,UAAM;AAAC,mBAAQQ,IAAEX,KAAEL,KAAEO,KAAEH,IAAEa,KAAE,GAAEC,KAAE,GAAEA,KAAE,KAAK,SAAS,OAAO,QAAOA,KAAI,CAAAD,MAAG,MAAM,KAAK,SAAS,OAAOC,EAAC,EAAEL,EAAC,CAAC,IAAE,IAAE,KAAK,SAAS,OAAOK,EAAC,EAAEL,EAAC;AAAE,cAAIM,KAAEP;AAAE,cAAGH,OAAIU,KAAEV,GAAE,QAAQD,GAAE,QAAQ,YAAYM,EAAC,CAAC,IAAGK,KAAE,KAAG,CAACX,GAAE,QAAQ,cAAYW,KAAE,KAAGX,GAAE,QAAQ,cAAYA,GAAE,QAAQ,QAAQM,KAAE,CAAC,EAAED,EAAC,MAAIL,GAAE,QAAQ,QAAQM,EAAC,EAAED,EAAC,GAAE;AAAC,gBAAIO,IAAEC,IAAEC,IAAEC,KAAE,KAAK,IAAI,KAAK,OAAO,SAAO,GAAET,KAAE,CAAC;AAAE,gBAAG,WAAS,KAAK,SAAS,MAAMK,KAAE,CAAC,KAAG,KAAK,SAAS,MAAMA,KAAE,CAAC,EAAE,OAAO,UAAQK,KAAE,GAAEA,KAAED,IAAEC,MAAI;AAAC,kBAAIC;AAAE,kBAAG,CAAC,MAAM,UAAQA,KAAE,KAAK,SAAS,MAAMN,KAAEK,EAAC,MAAI,WAASC,KAAE,SAAOA,GAAEZ,EAAC,CAAC,GAAE;AAAC,gBAAAS,KAAE,KAAK,SAAS,MAAMH,KAAEK,EAAC,EAAEX,EAAC;AAAE;AAAA,cAAK;AAAA,YAAC;AAAC,qBAAQa,KAAE,GAAEA,KAAEH,IAAEG,MAAI;AAAC,kBAAIC,IAAEC;AAAE,mBAAI,UAAQD,KAAE,KAAK,SAAS,SAASR,KAAEO,EAAC,MAAI,WAASC,KAAE,SAAOA,GAAEd,EAAC,KAAG,GAAE;AAAC,gBAAAQ,KAAE,KAAK,OAAOT,EAAC,EAAEC,EAAC,KAAG,IAAES,KAAEL,KAAE,KAAG,KAAK,aAAWA,KAAE,KAAGK;AAAE;AAAA,cAAK;AAAC,mBAAI,UAAQM,KAAE,KAAK,SAAS,SAAST,KAAEO,EAAC,MAAI,WAASE,KAAE,SAAOA,GAAEf,EAAC,MAAI,GAAE;AAAC,gBAAAQ,KAAE,KAAK,OAAOT,EAAC,EAAEC,EAAC,KAAG,IAAES,KAAEA,KAAEL,KAAE,KAAG,KAAK,aAAWA,KAAE;AAAG;AAAA,cAAK;AAAA,YAAC;AAAC,uBAASI,OAAIA,KAAEb,GAAE,QAAQ,aAAYQ,KAAE,UAAQI,KAAE,KAAK,SAAS,OAAO,CAAC,MAAI,WAASA,MAAGA,GAAE,MAAO,SAAStB,IAAE;AAAC,qBAAO,MAAIA;AAAA,YAAC,CAAE,KAAG,KAAK,SAAS,OAAO,MAAM,GAAEqB,EAAC,EAAE,MAAO,SAASrB,IAAE;AAAC,qBAAOA,GAAE,MAAO,SAASA,IAAE;AAAC,uBAAO,MAAMA,EAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE,IAAEQ,KAAEe;AAAA,UAAC,MAAM,CAAAL,KAAEV;AAAE,UAAAL,KAAE,KAAK,OAAOW,EAAC,EAAEC,EAAC,IAAEG,KAAE,KAAK,OAAOJ,EAAC,EAAEC,EAAC,IAAE,KAAK,OAAOE,EAAC,IAAE,KAAG,KAAK,aAAW,KAAK,OAAOH,EAAC,EAAEC,EAAC,IAAE,KAAK,OAAOE,EAAC,IAAE,KAAGC;AAAE,cAAIa,KAAE,KAAK,WAAW,eAAe,EAAC,cAAaxB,IAAE,UAASD,IAAE,IAAGY,IAAE,IAAGf,IAAE,QAAO,KAAK,OAAOc,EAAC,GAAE,aAAY,KAAK,aAAY,YAAW,KAAK,YAAW,QAAO,KAAK,QAAO,aAAYN,IAAE,WAAUV,GAAE,WAAU,GAAEa,IAAE,GAAEC,IAAE,GAAEL,GAAC,CAAC;AAAE,iBAAO,KAAK,WAAW,cAAc,EAAC,IAAGG,IAAE,GAAEE,IAAE,GAAED,IAAE,IAAGP,IAAE,IAAGD,IAAE,UAASM,GAAC,CAAC,GAAE,EAAC,QAAOmB,GAAE,QAAO,UAASA,GAAE,UAAS,OAAM,KAAK,WAAW,cAAc,KAAI,MAAKvB,IAAEM,IAAEC,EAAC,GAAE,cAAaR,IAAE,GAAEG,GAAE,QAAQ,aAAWR,KAAEA,KAAEG,IAAE,GAAEF,GAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAp6gR,UAAs6gR4E,MAAG,SAAS/E,IAAE;AAAC,QAAAY,GAAET,IAAE0E,GAAE;AAAE,YAAI5E,KAAEO,GAAEL,EAAC;AAAE,iBAASA,KAAG;AAAC,iBAAOD,GAAE,MAAKC,EAAC,GAAEF,GAAE,MAAM,MAAK,SAAS;AAAA,QAAC;AAAC,eAAOI,GAAEF,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASH,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKE,KAAE,KAAK,GAAEC,KAAE,IAAIgB,GAAE,KAAK,GAAG,GAAEd,KAAEH,GAAE,QAAQ,cAAYJ,KAAEI,GAAE,OAAO,MAAM,MAAKI,KAAE,IAAI+B,GAAE,KAAK,GAAG;AAAE,eAAK,qBAAmB,KAAK,EAAE,OAAO,YAAY,aAAY,KAAK,aAAW,KAAK,EAAE,OAAO,YAAY,SAAQ,KAAK,eAAanC,GAAE,OAAO,YAAY,IAAI;AAAW,cAAIM,KAAE,IAAIY,GAAE,KAAK,KAAIlB,EAAC;AAAE,UAAAL,KAAEW,GAAE,aAAaX,EAAC,GAAE,KAAK,SAAOA,IAAE,KAAK,SAAOW,GAAE,cAAc,KAAK,MAAM,GAAE,KAAK,WAAW,cAAcX,EAAC;AAAE,mBAAQY,KAAEN,GAAE,MAAM,EAAC,OAAM,cAAc,OAAOE,IAAE,gCAAgC,EAAC,CAAC,GAAEE,KAAE,SAAST,IAAE;AAAC,YAAAE,GAAE,YAAU,cAAYE,GAAE,OAAO,MAAM,QAAM,cAAYA,GAAE,OAAO,OAAOJ,EAAC,EAAE;AAAK,gBAAIO,IAAEG,IAAED,IAAEI,IAAED,KAAE,QAAOG,KAAE,QAAOC,KAAE,CAAC,GAAEb,KAAE,CAAC,GAAEc,KAAEb,GAAE,QAAQ,cAAYH,GAAED,EAAC,IAAEA,IAAEM,KAAEJ,GAAE,WAAW,cAAce,EAAC,EAAE,kBAAiBE,KAAEd,GAAE,MAAM,EAAC,OAAM,qBAAoB,YAAWa,GAAE,aAAad,GAAE,QAAQ,YAAYa,EAAC,CAAC,GAAE,KAAIjB,KAAE,GAAE,kBAAiBiB,GAAC,CAAC;AAAE,YAAAf,GAAE,IAAI,OAAO,0BAA0BiB,IAAEF,EAAC,GAAElB,GAAEC,EAAC,EAAE,SAAO,MAAIE,GAAE,WAASA,GAAE,WAAS;AAAG,gBAAIkB,IAAEC,IAAEC,KAAE;AAAE,YAAApB,GAAE,OAAO,SAAO,MAAIA,GAAE,aAAWE,GAAE,QAAQ,sBAAsBa,EAAC,EAAE,CAAC,GAAEK,KAAEL;AAAG,gBAAIM,KAAErB,GAAE,WAAW,iBAAiB;AAAE,YAAAa,KAAEQ,GAAE,GAAEH,KAAEG,GAAE,WAAUb,KAAEa,GAAE,WAAUV,KAAEU,GAAE,OAAMX,KAAEW,GAAE,GAAEF,KAAEE,GAAE,UAAShB,KAAEgB,GAAE,WAAUd,KAAEc,GAAE,OAAMpB,GAAE,KAAKS,KAAES,KAAE,CAAC;AAAE,qBAAQG,KAAEnB,GAAE,MAAM,EAAC,OAAM,yBAAwB,kBAAiBY,GAAC,CAAC,GAAEQ,KAAE,SAASxB,IAAE;AAAC,kBAAII,KAAEH,GAAE,WAAW,eAAeF,IAAEC,IAAEgB,EAAC,GAAEN,KAAE,MAAKO,KAAE,EAAC,SAAQ,EAAC,GAAElB,IAAE,GAAEC,IAAE,WAAUgB,IAAE,mBAAkBK,GAAC,GAAE,GAAEV,IAAE,GAAEG,IAAE,aAAYV,IAAE,UAASc,GAAC;AAAE,cAAAR,KAAET,GAAE,eAAaA,GAAE,uBAAuBY,GAAEA,GAAE,CAAC,GAAEI,EAAC,GAAE,CAAC,GAAE,EAAC,WAAUR,IAAE,WAAUU,IAAE,OAAMP,GAAC,CAAC,CAAC,IAAEX,GAAE,qBAAqBY,GAAEA,GAAE,CAAC,GAAEI,EAAC,GAAE,CAAC,GAAE,EAAC,WAAUX,IAAE,UAASc,IAAE,OAAMZ,GAAC,CAAC,CAAC,GAAEM,KAAEJ,GAAE,GAAEC,KAAED,GAAE,GAAEV,KAAE,KAAGE,GAAE,KAAKS,KAAES,KAAE,CAAC,GAAEL,GAAE,KAAKD,EAAC,GAAEJ,GAAE,OAAO,QAAS,SAASJ,IAAEG,IAAE;AAAC,oBAAID,KAAE,CAACP,GAAE,aAAWA,GAAE,mBAAmB,KAAK,eAAaS,GAAE,MAAMD,EAAC,IAAEN,GAAE,QAAQ,OAAO,OAAOJ,EAAC,GAAEa,KAAEL,GAAE,SAAS,EAAC,cAAaS,IAAE,gBAAehB,IAAE,OAAMU,GAAE,MAAMD,EAAC,GAAE,OAAMX,GAAEC,EAAC,EAAEC,EAAC,EAAC,CAAC;AAAE,gBAAAC,GAAE,aAAa,EAAC,WAAUe,IAAE,UAASJ,IAAE,UAASJ,IAAE,GAAER,IAAE,GAAED,IAAE,UAASW,GAAE,UAAS,QAAOJ,IAAE,aAAYF,IAAE,UAASc,IAAE,GAAEP,IAAE,GAAEG,IAAE,QAAOhB,IAAE,kBAAiBO,IAAE,WAAUc,IAAE,UAASC,IAAE,kBAAiBG,IAAE,eAActB,GAAE,UAAS,MAAKE,GAAE,OAAO,MAAM,KAAI,CAAC;AAAA,cAAC,CAAE;AAAA,YAAC,GAAEsB,KAAE,GAAEA,KAAEtB,GAAE,QAAQ,YAAWsB,KAAI,CAAAD,GAAEC,EAAC;AAAE,YAAAtB,GAAE,QAAQ,cAAca,EAAC,IAAEd,IAAEC,GAAE,QAAQ,cAAca,EAAC,IAAED,IAAEL,GAAE,IAAIQ,EAAC;AAAA,UAAC,GAAEN,KAAE,GAAEA,KAAEd,GAAE,QAAOc,KAAI,CAAAJ,GAAEI,EAAC;AAAE,iBAAOF;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASZ,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE;AAAE,UAAAA,GAAE;AAAE,cAAIG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,UAASM,KAAEN,GAAE,OAAMQ,KAAER,GAAE,aAAYS,KAAE,KAAK,GAAEE,KAAE,IAAIW,GAAE,KAAK,GAAG,GAAEV,KAAEX,GAAE,GAAES,KAAET,GAAE,GAAEa,KAAE,MAAGC,KAAEN,GAAE,OAAO,YAAY,YAAY,OAAO,QAAOI,KAAEJ,GAAE,OAAO,YAAY,YAAY,OAAO,UAASO,KAAE;AAAG,eAAK,cAAYA,KAAE,CAAC,KAAK,WAAW,OAAO,OAAM,KAAK,WAAW,OAAO,KAAK;AAAG,cAAIC,KAAE,KAAK,OAAOhB,GAAE,iBAAiB,GAAEG,KAAEH,GAAE,WAAUiB,KAAE,KAAK,aAAad,IAAEM,EAAC,GAAEH,KAAED,IAAEa,KAAEb;AAAE,UAAAY,GAAE,IAAEA,GAAE,MAAIJ,KAAE;AAAI,cAAIM,KAAE,KAAK,IAAIF,GAAE,GAAEA,GAAE,CAAC,GAAEG,KAAE,KAAK,IAAIH,GAAE,GAAEA,GAAE,CAAC,GAAEK,KAAEL,GAAE;AAAE,UAAAT,GAAE,QAAQ,eAAaP,MAAGO,GAAE,QAAQ,QAAQL,EAAC,EAAEM,EAAC,IAAED,GAAE,QAAQ,QAAM,KAAK,SAAOJ,KAAE;AAAG,cAAImB,KAAEtB,KAAEG,KAAE,KAAK;AAAS,qBAAS,KAAK,OAAOO,EAAC,EAAEF,EAAC,KAAG,SAAO,KAAK,OAAOE,EAAC,EAAEF,EAAC,KAAGU,KAAEd,IAAEe,KAAEf,OAAIc,KAAEd,KAAEc,KAAEH,IAAEI,KAAEf,KAAEe,KAAEJ,IAAEV,KAAED,KAAEY,GAAE,IAAED,IAAEE,KAAEb,KAAEY,GAAE,IAAED,IAAEM,KAAEjB,KAAEY,GAAE,IAAED;AAAG,cAAIQ,KAAEd,GAAE,KAAKa,IAAElB,EAAC,GAAEoB,KAAEf,GAAE,KAAKa,KAAEnB,KAAE,GAAEe,EAAC;AAAE,iBAAOX,GAAE,QAAQ,cAAc,SAAO,MAAIiB,KAAE,KAAK,gBAAgBtB,IAAEM,IAAE,IAAE,IAAGe,KAAE,KAAK,YAAU,CAACd,GAAE,KAAKa,IAAEJ,EAAC,IAAET,GAAE,KAAKa,KAAEnB,KAAE,GAAEe,EAAC,IAAET,GAAE,KAAKa,KAAEnB,KAAE,GAAEE,EAAC,IAAEI,GAAE,KAAKa,KAAEnB,KAAE,GAAEE,EAAC,IAAEI,GAAE,KAAKa,KAAEnB,KAAEA,KAAE,GAAEE,EAAC,IAAEI,GAAE,KAAKa,KAAEnB,KAAE,GAAEE,EAAC,IAAEI,GAAE,KAAKa,KAAEnB,KAAE,GAAEe,EAAC,IAAET,GAAE,KAAKa,KAAEnB,IAAEe,EAAC,IAAET,GAAE,KAAKa,KAAEnB,IAAEkB,EAAC,IAAEZ,GAAE,KAAKa,IAAED,EAAC,IAAEZ,GAAE,KAAKa,IAAEJ,KAAEZ,KAAE,CAAC,GAAEG,GAAE,KAAKa,IAAED,EAAC,IAAEZ,GAAE,KAAKa,KAAEnB,IAAEkB,EAAC,IAAEZ,GAAE,KAAKa,KAAEnB,IAAEgB,EAAC,IAAEV,GAAE,KAAKa,KAAEnB,KAAE,GAAEgB,EAAC,IAAEV,GAAE,KAAKa,KAAEnB,KAAE,GAAEc,EAAC,IAAER,GAAE,KAAKa,KAAEnB,KAAEA,KAAE,GAAEc,EAAC,IAAER,GAAE,KAAKa,KAAEnB,KAAE,GAAEc,EAAC,IAAER,GAAE,KAAKa,KAAEnB,KAAE,GAAEc,EAAC,IAAER,GAAE,KAAKa,KAAEnB,KAAE,GAAEgB,EAAC,IAAEV,GAAE,KAAKa,IAAEH,EAAC,IAAEV,GAAE,KAAKa,IAAED,EAAC,IAAE,GAAG,IAAE,CAACZ,GAAE,KAAKa,IAAEH,EAAC,IAAEV,GAAE,KAAKa,KAAEnB,KAAE,GAAEgB,EAAC,IAAEV,GAAE,KAAKa,KAAEnB,KAAE,GAAEE,EAAC,IAAEI,GAAE,KAAKa,KAAEnB,KAAE,GAAEgB,EAAC,IAAEV,GAAE,KAAKa,KAAEnB,IAAEgB,EAAC,IAAEV,GAAE,KAAKa,KAAEnB,IAAEe,EAAC,IAAET,GAAE,KAAKa,KAAEnB,KAAE,GAAEe,EAAC,IAAET,GAAE,KAAKa,KAAEnB,KAAE,GAAEc,EAAC,IAAER,GAAE,KAAKa,KAAEnB,KAAE,GAAEe,EAAC,IAAET,GAAE,KAAKa,IAAEJ,EAAC,IAAET,GAAE,KAAKa,IAAEH,KAAEb,KAAE,CAAC,CAAC,GAAEkB,MAAGf,GAAE,KAAKa,IAAEJ,EAAC,GAAEX,GAAE,QAAQ,eAAaP,MAAGC,KAAG,EAAC,QAAOsB,IAAE,UAASC,IAAE,GAAExB,IAAE,GAAEmB,IAAE,cAAaG,IAAE,OAAM,KAAK,YAAUR,KAAEF,KAAE,CAACC,EAAC,IAAE,CAACF,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASb,IAAE;AAAC,cAAIC,KAAED,GAAE;AAAQ,UAAAA,GAAE;AAAE,cAAIE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,WAAUM,KAAEN,GAAE,OAAMQ,KAAER,GAAE,aAAYS,KAAE,KAAK,GAAEE,KAAE,IAAIW,GAAE,KAAK,GAAG,GAAEV,KAAEX,GAAE,GAAES,KAAET,GAAE,GAAEa,KAAE,KAAK,WAAW,OAAO;AAAM,eAAK,cAAYA,KAAE,CAAC,KAAK,WAAW,OAAO,OAAM,KAAK,WAAW,OAAO,KAAK;AAAG,cAAIC,KAAE,KAAK,gBAAeF,KAAEZ,GAAE,WAAUe,KAAE,KAAK,aAAaH,IAAEH,EAAC,GAAEO,KAAEX,IAAEF,KAAEE,IAAEY,KAAE,KAAK,IAAIF,GAAE,GAAEA,GAAE,CAAC,GAAET,KAAE,KAAK,IAAIS,GAAE,GAAEA,GAAE,CAAC,GAAEG,KAAEH,GAAE;AAAE,UAAAP,GAAE,QAAQ,eAAaP,MAAGO,GAAE,QAAQ,QAAQI,EAAC,EAAEH,EAAC,IAAED,GAAE,QAAQ,QAAM,KAAK,iBAAeJ,KAAE;AAAG,cAAIe,KAAElB,KAAEG,KAAE,KAAK;AAAS,qBAAS,KAAK,OAAOO,EAAC,EAAEF,EAAC,KAAG,SAAO,KAAK,OAAOE,EAAC,EAAEF,EAAC,KAAGQ,KAAEZ,IAAEC,KAAED,OAAIY,KAAEZ,KAAEY,KAAEH,IAAER,KAAED,KAAEC,KAAEQ,IAAEE,KAAEX,KAAEU,GAAE,IAAED,IAAEX,KAAEE,KAAEU,GAAE,IAAED,IAAEI,KAAEb,KAAEU,GAAE,IAAED;AAAG,cAAIM,KAAEV,GAAE,KAAKL,IAAEc,EAAC,GAAEG,KAAEZ,GAAE,KAAKO,IAAEE,KAAEf,KAAE,CAAC;AAAE,iBAAOI,GAAE,QAAQ,cAAc,SAAO,MAAIc,KAAE,KAAK,gBAAgBV,IAAEH,IAAE,IAAE,IAAGW,KAAE,CAACV,GAAE,KAAKO,IAAEE,EAAC,IAAET,GAAE,KAAKO,IAAEE,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKM,IAAEG,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKM,IAAEG,KAAEf,KAAE,IAAEA,KAAE,CAAC,IAAEM,GAAE,KAAKM,IAAEG,KAAEf,KAAE,IAAEA,KAAE,CAAC,IAAEM,GAAE,KAAKM,IAAEG,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKO,IAAEE,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKO,IAAEE,KAAEf,EAAC,IAAEM,GAAE,KAAKQ,IAAEC,KAAEf,EAAC,IAAEM,GAAE,KAAKQ,IAAEC,EAAC,IAAET,GAAE,KAAKO,KAAEV,KAAE,GAAEY,EAAC,GAAET,GAAE,KAAKQ,IAAEC,EAAC,IAAET,GAAE,KAAKQ,IAAEC,KAAEf,EAAC,IAAEM,GAAE,KAAKJ,IAAEa,KAAEf,EAAC,IAAEM,GAAE,KAAKJ,IAAEa,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKP,IAAEgB,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKP,IAAEgB,KAAEf,KAAEA,KAAE,CAAC,IAAEM,GAAE,KAAKP,IAAEgB,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKP,IAAEgB,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKJ,IAAEa,KAAEf,KAAE,CAAC,IAAEM,GAAE,KAAKJ,IAAEa,EAAC,IAAET,GAAE,KAAKQ,IAAEC,EAAC,IAAE,GAAG,GAAEG,MAAGZ,GAAE,KAAKO,IAAEE,EAAC,GAAEX,GAAE,QAAQ,eAAaP,MAAGC,KAAG,EAAC,QAAOkB,IAAE,UAASE,IAAE,GAAEhB,IAAE,GAAEL,IAAE,cAAakB,IAAE,OAAMN,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASd,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAM,EAAC,GAAE,KAAK,YAAUA,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,IAAEC,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,GAAE,GAAE,KAAK,YAAUC,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,IAAEC,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,GAAE,GAAEC,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,GAAE,GAAE,KAAK,YAAUC,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,IAAEC,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,GAAE,GAAE,KAAK,YAAUC,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,IAAEC,GAAE,QAAQ,cAAcF,EAAC,EAAEC,EAAC,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,MAAC,EAAE;AAArorR,UAAuorR6E,MAAG,WAAU;AAAC,iBAAShF,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAE,OAAGC,KAAEF,GAAE,OAAO,YAAYA,GAAE,OAAO,MAAM,IAAI;AAAE,iBAAOE,GAAE,WAAW,OAAO,SAAO,KAAGA,GAAE,WAAW,OAAO,IAAK,SAASF,IAAEE,IAAE;AAAC,YAAAF,GAAE,QAAM,MAAIC,KAAE;AAAA,UAAG,CAAE,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK,GAAEC,KAAE,GAAEE,KAAEH,GAAE,OAAO,YAAYL,EAAC,EAAE,gBAAeS,KAAE,KAAK,eAAeT,IAAEC,IAAEC,EAAC;AAAE,UAAAG,GAAE,QAAQ,WAASF,KAAEG,KAAED,GAAE,OAAO,YAAYL,EAAC,EAAE,uBAAqBS,GAAE,UAAQ,IAAEA,GAAE,UAAQ,OAAK,OAAKD,OAAI,IAAEC,GAAE,UAAQ,QAAM,OAAKD,MAAGC,GAAE,WAAS,IAAE,KAAG,IAAEA,GAAE,UAAQ,OAAKD,MAAG,IAAEC,GAAE,UAAQ,OAAKD,MAAGF,KAAE,IAAEG,GAAE,UAAQ,KAAI,cAAYT,OAAIM,MAAG,IAAEG,GAAE,UAAQ,QAAM,OAAKD;AAAK,cAAIG,KAAEF,GAAE,OAAMG,KAAE,IAAIO;AAAE,cAAGd,GAAE,OAAO,YAAYL,EAAC,EAAE,aAAa,KAAG,WAAS,KAAK,EAAE,OAAO,MAAM,MAAK;AAAC,gBAAIU,KAAEE,GAAE,WAAW,KAAGN,IAAEG,GAAE,KAAK;AAAE,YAAAE,KAAEQ,GAAE,UAAUA,GAAE,WAAWT,EAAC,IAAEA,KAAES,GAAE,QAAQT,EAAC,GAAEL,GAAE,OAAO,KAAK,OAAO;AAAA,UAAC,OAAK;AAAC,gBAAIS,KAAEF,GAAE,WAAWN,IAAEG,GAAE,KAAK;AAAE,YAAAE,KAAEQ,GAAE,UAAUA,GAAE,WAAWL,EAAC,IAAEA,KAAEK,GAAE,QAAQL,EAAC,GAAET,GAAE,OAAO,KAAK,OAAO;AAAA,UAAC;AAAC,iBAAM,EAAC,OAAMM,IAAE,YAAWF,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAAST,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAEF,GAAE,QAAQ,OAAOF,EAAC,EAAEC,EAAC,GAAEI,KAAEH,GAAE,OAAO,YAAYH,EAAC,GAAEQ,KAAEF,GAAE,WAAW,UAAQJ,KAAED;AAAE,UAAAK,GAAE,eAAa,cAAYH,GAAE,OAAO,MAAM,SAAOK,KAAEN;AAAG,cAAIO,KAAEN,GAAE,QAAQ,OAAOK,EAAC,GAAEG,KAAE,MAAKC,KAAE,KAAK,IAAI,MAAM,MAAKK,GAAEd,GAAE,QAAQ,OAAOF,EAAC,CAAC,CAAC,GAAES,KAAE,KAAK,IAAI,MAAM,MAAKO,GAAEd,GAAE,QAAQ,OAAOF,EAAC,CAAC,CAAC;AAAE,UAAAK,GAAE,eAAa,cAAYN,OAAIY,KAAET,GAAE,QAAQ,MAAKO,KAAEP,GAAE,QAAQ,OAAM,WAASG,GAAE,WAAW,QAAMM,KAAEN,GAAE,WAAW,MAAIH,GAAE,QAAQ,OAAKG,GAAE,WAAW,MAAIH,GAAE,QAAQ,MAAKO,KAAEJ,GAAE,WAAW,MAAIH,GAAE,QAAQ,OAAKG,GAAE,WAAW,MAAIH,GAAE,QAAQ;AAAM,cAAIW,KAAE,KAAK,IAAIJ,EAAC,IAAE,KAAK,IAAIE,EAAC,GAAEG,KAAE,MAAIV,MAAG,MAAIS,KAAEA,KAAE,OAAKA;AAAG,UAAAR,GAAE,WAAW,OAAO,SAAO,KAAGA,GAAE,WAAW,OAAO,IAAK,SAASN,IAAEC,IAAE;AAAC,gBAAGI,MAAGL,GAAE,QAAMK,MAAGL,GAAE,IAAG;AAAC,cAAAS,KAAET,GAAE,OAAMW,KAAEX,GAAE,YAAUA,GAAE,YAAU,MAAKY,KAAEZ,GAAE,MAAKU,KAAEV,GAAE;AAAG,kBAAIE,KAAE,KAAK,IAAIQ,EAAC,IAAE,KAAK,IAAIE,EAAC;AAAE,cAAAG,KAAE,MAAIV,MAAG,MAAIH,KAAEA,KAAE,OAAKA;AAAA,YAAE;AAAA,UAAC,CAAE;AAAE,iBAAM,EAAC,OAAMO,IAAE,WAAUE,IAAE,SAAQI,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASf,IAAE;AAAC,cAAIC,KAAED,GAAE,MAAKE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,GAAEQ,KAAER,GAAE,YAAWS,KAAET,GAAE,UAASW,KAAE,KAAK,EAAE,OAAO,YAAWC,KAAE,IAAIU,GAAE,KAAK,GAAG,GAAEZ,KAAE,IAAIiC,GAAE,KAAK,GAAG,GAAE7B,KAAE;AAAK,cAAGH,GAAE,SAAQ;AAAC,YAAAG,KAAEF,GAAE,MAAM,EAAC,OAAM,yBAAwB,CAAC;AAAE,gBAAIG,KAAEJ,GAAE,SAAQE,KAAEF,GAAE,SAAQK,KAAEd,KAAEa,IAAEE,KAAEd,KAAE,WAAWQ,GAAE,MAAM,QAAQ,IAAE,IAAEE;AAAE,YAAAH,GAAE,mBAAmB,EAAC,GAAEM,IAAE,GAAEC,IAAE,MAAKhB,IAAE,GAAEI,IAAE,GAAEC,IAAE,OAAME,GAAE,WAAU,QAAOM,IAAE,UAASL,IAAE,kBAAiBE,GAAC,CAAC;AAAA,UAAC;AAAC,iBAAOG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASd,IAAE;AAAC,cAAIC,KAAE,IAAIqB,GAAE,KAAK,GAAG;AAAE,UAAAtB,GAAE,KAAK,iBAAiB,cAAaC,GAAE,eAAe,KAAK,MAAKD,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,cAAaC,GAAE,eAAe,KAAK,MAAKD,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,aAAYC,GAAE,cAAc,KAAK,MAAKD,EAAC,CAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAAzmwR,UAA2mwRiF,MAAG,WAAU;AAAC,iBAASjF,GAAEC,IAAEE,IAAE;AAAC,UAAAD,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,SAAOE,GAAE,QAAO,KAAK,SAAOA,GAAE,QAAO,KAAK,cAAY,KAAK,EAAE,OAAO,MAAM,WAAW,kBAAiB,KAAK,UAAQ,IAAI6E,IAAG/E,EAAC,GAAE,KAAK,aAAW,KAAK,EAAE,OAAO,YAAY,QAAQ,QAAO,KAAK,cAAY,KAAK,EAAE,OAAO,OAAO,OAAK,KAAK,EAAE,OAAO,OAAO,QAAM;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAED,GAAE,MAAM,EAAC,OAAM,qBAAoB,CAAC;AAAE,UAAAC,GAAE,KAAK,aAAY,oBAAoB,OAAOF,GAAE,QAAQ,MAAK,GAAG,CAAC;AAAE,cAAII,KAAEJ,GAAE,QAAQ,YAAUA,GAAE,QAAQ,YAAWK,KAAEL,GAAE,QAAQ,aAAWA,GAAE,QAAQ,OAAO,QAAOO,KAAE,GAAEC,KAAE;AAAG,eAAK,WAAS,KAAK,QAAQ,gBAAgB;AAAE,cAAIE,KAAEX,GAAE,MAAM;AAAE,UAAAC,GAAE,OAAO,MAAM,CAAC,EAAE,aAAWQ,KAAE,MAAGE,GAAE,QAAQ;AAAG,mBAAQC,KAAEH,KAAE,IAAEE,GAAE,SAAO,GAAEF,KAAEG,KAAED,GAAE,SAAOC,MAAG,GAAEH,KAAEG,OAAIA,MAAI;AAAC,gBAAIF,KAAER,GAAE,MAAM,EAAC,OAAM,+CAA8C,YAAWiB,GAAE,aAAalB,GAAE,QAAQ,YAAYW,EAAC,CAAC,GAAE,KAAIA,KAAE,GAAE,kBAAiBA,GAAC,CAAC;AAAE,gBAAG,KAAK,IAAI,OAAO,0BAA0BF,IAAEE,EAAC,GAAEX,GAAE,OAAO,MAAM,WAAW,SAAQ;AAAC,kBAAIa,KAAEb,GAAE,OAAO,MAAM;AAAW,kBAAIoB,GAAE,KAAK,GAAG,EAAE,WAAWX,IAAEI,IAAEF,EAAC;AAAA,YAAC;AAAC,qBAAQG,KAAE,GAAEF,KAAEZ,GAAE,OAAO,YAAY,QAAQ,gBAAee,KAAE,GAAEA,KAAEL,GAAEC,EAAC,EAAE,QAAOI,MAAI;AAAC,kBAAIC,KAAE,KAAK,QAAQ,cAAchB,GAAE,OAAO,MAAM,MAAKW,IAAEI,IAAE,KAAK,QAAQ,GAAEZ,KAAEa,GAAE,OAAMC,KAAED,GAAE;AAAW,kBAAG,YAAUhB,GAAE,OAAO,KAAK,KAAK,CAAAG,KAAE,IAAIoC,GAAE,KAAK,GAAG,EAAE,SAAS,EAAC,cAAa5B,IAAE,gBAAeI,IAAE,SAAQf,GAAE,QAAQ,UAAQiB,GAAE,UAAQ,IAAE,KAAG,IAAEA,GAAE,UAAQ,OAAKL,KAAEK,GAAE,UAAQ,MAAIA,GAAE,UAAQ,KAAI,WAAUC,GAAE,SAAS,GAAE,OAAMlB,GAAE,OAAO,KAAK,MAAM,QAAMA,GAAE,OAAO,KAAK,MAAM,QAAMI,IAAE,QAAOJ,GAAE,OAAO,KAAK,MAAM,SAAOA,GAAE,OAAO,KAAK,MAAM,SAAOK,GAAC,CAAC;AAAE,kBAAIC,KAAE,KAAK,YAAWa,KAAElB,GAAE,SAASa,IAAEP,IAAEH,IAAEC,IAAEC,EAAC;AAAE,kBAAGa,GAAE,KAAK,EAAC,IAAGL,IAAE,IAAGP,GAAC,CAAC,GAAEY,GAAE,KAAK,UAAU,IAAI,yBAAyB,GAAEV,GAAE,IAAIU,EAAC,GAAEA,GAAE,KAAK,EAAC,MAAKhB,IAAE,GAAEQ,IAAE,OAAMA,IAAE,GAAEI,IAAE,KAAIhB,GAAEY,EAAC,EAAEI,EAAC,GAAE,gBAAe,KAAK,aAAY,QAAOf,GAAE,OAAO,YAAY,QAAQ,uBAAqBG,KAAEH,GAAE,QAAQ,OAAO,OAAO,CAAC,GAAE,OAAMG,GAAC,CAAC,GAAE,KAAK,QAAQ,aAAagB,EAAC,GAAEnB,GAAE,OAAO,MAAM,WAAW,WAAS,CAACA,GAAE,QAAQ,aAAY;AAAC,oBAAIsB,KAAE;AAAE,gBAAAtB,GAAE,QAAQ,YAAUsB,KAAEtB,GAAE,OAAO,MAAM,WAAW,QAAO,KAAK,eAAemB,IAAEL,IAAEP,IAAEH,IAAEC,IAAEiB,EAAC;AAAA,cAAC;AAAC,kBAAGtB,GAAE,QAAQ,aAAY;AAAC,oBAAIuB,KAAE;AAAE,oBAAG,KAAK,YAAY,WAASvB,GAAE,QAAQ,eAAc;AAAC,kBAAAuB,KAAE,KAAK,YAAY;AAAM,sBAAIC,KAAExB,GAAE,QAAQ,cAAcW,EAAC,KAAGX,GAAE,QAAQ,cAAcW,EAAC,EAAEI,EAAC,KAAGf,GAAE,QAAQ,cAAcW,EAAC,EAAEI,EAAC,EAAE;AAAM,kBAAAS,OAAIA,KAAE,2BAA0B,KAAK,iBAAiBL,IAAED,GAAE,WAAWM,EAAC,IAAEA,KAAEN,GAAE,QAAQM,EAAC,GAAEN,GAAE,WAAWf,EAAC,IAAEA,KAAEe,GAAE,QAAQf,EAAC,GAAEoB,EAAC;AAAA,gBAAC;AAAA,cAAC;AAAC,kBAAIE,MAAG,GAAEzB,GAAE,OAAO,WAAW,WAAWA,GAAE,QAAQ,OAAOW,EAAC,EAAEI,EAAC,GAAE,EAAC,OAAMf,GAAE,QAAQ,OAAOW,EAAC,EAAEI,EAAC,GAAE,aAAYJ,IAAE,gBAAeI,IAAE,GAAEf,GAAC,CAAC,GAAE0B,KAAE,KAAK,QAAQ,oBAAoB,EAAC,MAAKD,IAAE,GAAEX,KAAEV,KAAE,GAAE,GAAEG,KAAEF,KAAE,GAAE,GAAEM,IAAE,GAAEI,IAAE,YAAWE,IAAE,QAAOP,GAAC,CAAC;AAAE,uBAAOgB,MAAGjB,GAAE,IAAIiB,EAAC,GAAEZ,MAAGV;AAAA,YAAC;AAAC,YAAAG,MAAGF,IAAEH,GAAE,IAAIO,EAAC;AAAA,UAAC;AAAC,cAAIkB,KAAE3B,GAAE,QAAQ,WAAW,CAAC,EAAE,OAAO,MAAM;AAAE,iBAAOA,GAAE,OAAO,MAAM,CAAC,EAAE,WAAS2B,GAAE,QAAQ,EAAE,IAAEA,GAAE,KAAK,EAAE,GAAE3B,GAAE,QAAQ,WAAW,CAAC,EAAE,SAAO2B,IAAEzB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASH,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,cAAIE,KAAE,IAAIY,GAAE,KAAK,GAAG;AAAE,UAAAZ,GAAE,YAAYR,IAAE,EAAC,GAAEC,KAAEE,KAAE,GAAE,GAAED,KAAEG,KAAE,GAAE,OAAM,GAAE,QAAO,EAAC,GAAE,EAAC,GAAEJ,IAAE,GAAEC,IAAE,OAAMC,IAAE,QAAOE,GAAC,GAAEC,IAAG,WAAU;AAAC,YAAAE,GAAE,mBAAmBR,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,UAAAH,GAAE,KAAK,EAAC,MAAKC,GAAC,CAAC,EAAE,QAAQE,EAAC,EAAE,KAAK,EAAC,MAAKD,GAAC,CAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAAln2R,UAAon2RkF,MAAG,WAAU;AAAC,iBAASlF,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,MAAM,CAAC,GAAEG,KAAEH,GAAE,QAAQ,iBAAiB,CAAC;AAAE,iBAAO,IAAIiB,GAAE,KAAK,GAAG,EAAE,SAAS,EAAC,GAAEtB,KAAEM,GAAE,OAAO,SAAQ,GAAEL,KAAEK,GAAE,OAAO,SAAQ,MAAKE,GAAEL,IAAED,EAAC,GAAE,YAAW,UAAS,UAASI,GAAE,OAAO,MAAM,UAAS,YAAWA,GAAE,OAAO,MAAM,YAAW,WAAU,MAAM,QAAQA,GAAE,OAAO,MAAM,MAAM,IAAEA,GAAE,OAAO,MAAM,OAAOJ,EAAC,IAAEI,GAAE,OAAO,MAAM,OAAM,CAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEN;AAAA,MAAC,EAAE;AAAnk3R,UAAqk3RmF,MAAG,WAAU;AAAC,iBAASnF,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAE,cAAIE,KAAE,KAAK;AAAE,eAAK,YAAU,KAAK,EAAE,OAAO,MAAM,MAAK,KAAK,cAAY,KAAK,EAAE,OAAO,MAAM,WAAW,SAAQ,KAAK,cAAY,KAAK,eAAa,KAAK,EAAE,OAAO,MAAM,WAAW,iBAAiB,SAAQ,KAAK,eAAa,CAAC,CAAC,GAAE,KAAK,UAAQ,GAAE,KAAK,kBAAgB,KAAK,EAAE,OAAO,YAAY,IAAI,MAAM,QAAO,KAAK,eAAa,WAASA,GAAE,QAAQ,OAAO,SAAOA,GAAE,QAAQ,OAAO,SAAOA,GAAE,QAAQ,QAAO,KAAK,cAAY,KAAK,IAAIA,GAAE,QAAQ,WAAUA,GAAE,QAAQ,UAAU,GAAE,KAAK,UAAQ,KAAK,cAAY,GAAE,KAAK,UAAQA,GAAE,QAAQ,YAAU,GAAE,gBAAcA,GAAE,OAAO,MAAM,OAAK,KAAK,YAAU,MAAI,KAAK,YAAU,KAAK,IAAIA,GAAE,OAAO,YAAY,IAAI,WAASA,GAAE,OAAO,YAAY,IAAI,UAAU,GAAE,KAAK,eAAaA,GAAE,OAAO,YAAY,IAAI,aAAW,KAAK,WAAUA,GAAE,QAAQ,aAAW,KAAK,cAAY,OAAKA,GAAE,OAAO,OAAO,SAAOA,GAAE,OAAO,MAAM,UAAU,UAAQ,IAAEA,GAAE,OAAO,MAAM,WAAW,OAAM,KAAK,YAAUA,GAAE,QAAQ,aAAW,SAASA,GAAE,OAAO,YAAY,IAAI,MAAM,MAAK,EAAE,IAAE;AAAI,cAAIE,KAAEF,GAAE,OAAO,YAAY,IAAI,aAAYG,KAAEH,GAAE,QAAQ,YAAU,GAAEK,KAAEL,GAAE,QAAQ,aAAW;AAAE,eAAK,aAAWG,KAAEA,KAAED,IAAE,KAAK,aAAWG,KAAEA,KAAEH,IAAE,KAAK,kBAAgB,IAAIiB,GAAE,KAAK,GAAG,EAAE,MAAM,EAAC,OAAM,+BAA8B,WAAU,aAAa,OAAO,KAAK,YAAW,IAAI,EAAE,OAAO,KAAK,YAAW,UAAU,EAAE,OAAOjB,IAAE,GAAG,EAAC,CAAC,GAAE,KAAK,OAAK,GAAE,KAAK,cAAY,CAAC,GAAE,KAAK,aAAW,CAAC,GAAE,KAAK,qBAAmB,CAAC;AAAA,QAAC;AAAC,eAAOA,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,IAAImB,GAAE,KAAK,GAAG,GAAEjB,KAAEF,GAAE,MAAM,EAAC,OAAM,iBAAgB,CAAC;AAAE,cAAGD,GAAE,QAAQ,OAAO,QAAOG;AAAE,mBAAQC,KAAE,GAAEE,KAAE,GAAEA,KAAER,GAAE,QAAOQ,KAAI,CAAAF,MAAGa,GAAE,UAAUnB,GAAEQ,EAAC,CAAC;AAAE,cAAIC,KAAE,CAAC,GAAEE,KAAER,GAAE,MAAM;AAAE,gBAAIG,OAAIA,KAAE,OAAMN,GAAE,QAAS,SAASA,IAAE;AAAC,YAAAC,GAAE,OAAK,KAAK,IAAIA,GAAE,MAAKD,EAAC;AAAA,UAAC,CAAE,GAAEE,GAAE,OAAO,MAAM,CAAC,EAAE,QAAM,KAAK,OAAKA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAK,WAASA,GAAE,OAAO,KAAK,YAAU,gBAAc,KAAK,aAAW,KAAK,kBAAkBG,EAAC;AAAE,mBAAQO,KAAE,GAAEA,KAAEZ,GAAE,QAAOY,MAAI;AAAC,gBAAIF,KAAE,KAAK,YAAUS,GAAE,UAAUnB,GAAEY,EAAC,CAAC,IAAEN;AAAE,YAAAG,GAAE,KAAKC,EAAC,GAAE,gBAAc,KAAK,aAAWD,GAAEG,EAAC,IAAE,KAAK,YAAUZ,GAAE,QAAO,KAAK,WAAW,KAAKE,GAAE,QAAQ,aAAWF,GAAEY,EAAC,IAAE,KAAK,IAAI,KAAG,KAAK,WAAW,KAAKV,GAAE,QAAQ,UAAU;AAAA,UAAC;AAAC,cAAGA,GAAE,QAAQ,aAAY;AAAC,qBAAQY,IAAEC,KAAE,GAAEF,KAAE,GAAEA,KAAEX,GAAE,QAAQ,cAAc,QAAOW,KAAI,CAAAE,MAAGI,GAAE,UAAUjB,GAAE,QAAQ,cAAcW,EAAC,CAAC;AAAE,qBAAQG,KAAE,GAAEA,KAAEd,GAAE,QAAQ,cAAc,QAAOc,KAAI,CAAAF,KAAE,KAAK,YAAUK,GAAE,UAAUjB,GAAE,QAAQ,cAAcc,EAAC,CAAC,IAAED,IAAE,KAAK,mBAAmB,KAAKD,EAAC;AAAA,UAAC;AAAC,cAAG,KAAK,YAAU,MAAI,KAAK,YAAU,IAAG,YAAU,KAAK,WAAU;AAAC,gBAAIG,KAAEd,GAAE,WAAW,KAAK,SAAS;AAAE,YAAAc,GAAE,KAAK,EAAC,IAAG,KAAK,SAAQ,IAAG,KAAK,SAAQ,MAAKf,GAAE,OAAO,YAAY,IAAI,MAAM,aAAWA,GAAE,OAAO,YAAY,IAAI,MAAM,aAAW,cAAa,CAAC,GAAES,GAAE,IAAIM,EAAC;AAAA,UAAC;AAAC,cAAIb,KAAE,KAAK,SAASK,IAAET,EAAC;AAAE,cAAG,KAAK,YAAY,QAAS,SAASA,IAAE;AAAC,YAAAI,GAAE,IAAIJ,EAAC;AAAA,UAAC,CAAE,GAAEW,GAAE,KAAK,EAAC,WAAU,aAAa,OAAO,KAAK,YAAW,IAAI,EAAE,OAAO,KAAK,YAAW,UAAU,EAAE,OAAOT,GAAE,OAAO,YAAY,IAAI,aAAY,GAAG,EAAC,CAAC,GAAES,GAAE,IAAIP,EAAC,GAAEC,GAAE,IAAIM,EAAC,GAAE,KAAK,gBAAgB,MAAK;AAAC,gBAAIO,KAAE,KAAK,sBAAsB,KAAK,iBAAgB,KAAK,iBAAgB,EAAC,YAAW,KAAK,WAAU,SAAQ,KAAK,SAAQ,SAAQ,KAAK,SAAQ,SAAQ,KAAK,gBAAgB,KAAI,CAAC;AAAE,YAAAb,GAAE,IAAIa,EAAC;AAAA,UAAC;AAAC,iBAAM,YAAUhB,GAAE,OAAO,KAAK,YAAU,gBAAc,KAAK,aAAW,KAAK,kBAAkBG,EAAC,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASL,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIkB,GAAE,KAAK,GAAG,GAAEhB,KAAE,IAAIiB,GAAE,KAAK,GAAG,GAAEhB,KAAE,IAAIkC,GAAE,KAAK,GAAG,GAAEhC,KAAEH,GAAE,MAAM,EAAC,OAAM,oBAAmB,CAAC,GAAEI,KAAE,KAAK,cAAaE,KAAE,KAAK,cAAaC,KAAE,KAAK,cAAaF,KAAE,KAAK;AAAa,eAAK,cAAYR,GAAE,OAAO,OAAO,OAAKA,GAAE,OAAO,OAAO,QAAM;AAAE,mBAAQY,KAAE,GAAEA,KAAEd,GAAE,QAAOc,MAAI;AAAC,gBAAIC,KAAEV,GAAE,MAAM,EAAC,OAAM,2CAA0C,YAAWc,GAAE,aAAajB,GAAE,QAAQ,YAAYY,EAAC,CAAC,GAAE,KAAIA,KAAE,GAAE,kBAAiBA,GAAC,CAAC;AAAE,YAAAN,GAAE,IAAIO,EAAC,GAAEJ,KAAED,IAAEE,MAAGH,KAAEG,MAAGZ,GAAEc,EAAC,GAAEJ,KAAEC,KAAE,KAAK,mBAAmBG,EAAC;AAAE,gBAAID,KAAED,KAAEH,KAAE,KAAK,YAAUG,KAAEH,KAAEG,KAAEH,IAAEO,KAAEV,GAAE,SAAS,EAAC,cAAaQ,IAAE,MAAK,KAAK,WAAWA,EAAC,GAAE,OAAMb,GAAEa,EAAC,EAAC,CAAC,GAAEG,KAAE,KAAK,eAAeN,IAAED,EAAC,GAAEN,KAAEC,GAAE,SAAS,EAAC,GAAEY,IAAE,QAAO,MAAM,QAAQ,KAAK,YAAY,IAAE,KAAK,aAAaH,EAAC,IAAE,KAAK,cAAa,aAAY,GAAE,MAAKE,IAAE,aAAYd,GAAE,OAAO,KAAK,SAAQ,SAAQ,kCAAkC,OAAO,KAAK,UAAU,YAAY,GAAE,SAAS,EAAE,OAAOY,EAAC,EAAC,CAAC;AAAE,gBAAGV,GAAE,KAAK,EAAC,OAAM,GAAE,GAAEU,GAAC,CAAC,GAAEX,GAAE,mBAAmBC,IAAE,GAAEU,EAAC,GAAEZ,GAAE,OAAO,MAAM,WAAW,SAAQ;AAAC,kBAAIgB,KAAEhB,GAAE,OAAO,MAAM;AAAW,cAAAC,GAAE,WAAWC,IAAEc,IAAEJ,EAAC;AAAA,YAAC;AAAC,iBAAK,aAAaV,IAAE,KAAK,eAAe,GAAEkB,GAAE,SAASlB,GAAE,MAAK,EAAC,cAAaS,IAAE,mBAAkBJ,IAAE,oBAAmB,KAAK,aAAY,cAAaR,GAAEa,EAAC,EAAC,CAAC;AAAE,gBAAIP,KAAE,EAAC,GAAE,GAAE,GAAE,EAAC;AAAE,sBAAQ,KAAK,aAAW,gBAAc,KAAK,YAAUA,KAAEY,GAAE,iBAAiB,KAAK,SAAQ,KAAK,SAAQjB,GAAE,QAAQ,aAAW,OAAKA,GAAE,OAAO,YAAY,IAAI,WAAW,SAAQO,KAAEI,KAAE,KAAG,KAAK,SAAS,IAAE,YAAU,KAAK,cAAYN,KAAEY,GAAE,iBAAiB,KAAK,SAAQ,KAAK,UAASjB,GAAE,QAAQ,aAAW,KAAK,aAAW,IAAEA,GAAE,OAAO,YAAY,IAAI,WAAW,SAAQO,KAAEI,KAAE,KAAG,KAAK,SAAS,IAAGE,GAAE,IAAIX,EAAC;AAAE,gBAAIgB,KAAE;AAAE,gBAAG,CAAC,KAAK,eAAalB,GAAE,QAAQ,WAASA,GAAE,QAAQ,cAAY,KAAK,aAAa,KAAK,CAAC,KAAG,OAAKkB,KAAEP,KAAE,KAAK,YAAUX,GAAE,OAAO,MAAM,WAAW,WAASkB,KAAE,IAAG,KAAK,UAAQA,KAAE,KAAK,SAAQ,KAAK,aAAa,KAAK,KAAK,OAAO,IAAG,KAAK,eAAalB,GAAE,QAAQ,cAAY,KAAK,aAAaE,IAAE,EAAC,MAAK,KAAK,WAAWU,EAAC,GAAE,UAASF,IAAE,YAAWH,IAAE,gBAAeE,IAAE,cAAaD,IAAE,oBAAmB,MAAG,GAAEI,IAAE,cAAa,KAAK,cAAa,oBAAmB,MAAG,KAAIZ,GAAE,OAAO,MAAM,WAAW,iBAAiB,MAAK,CAAC,IAAE,KAAK,aAAaE,IAAE,EAAC,MAAK,KAAK,WAAWU,EAAC,GAAE,UAASF,IAAE,YAAWH,IAAE,GAAEK,IAAE,YAAWd,GAAE,SAAO,GAAE,cAAa,KAAK,cAAa,KAAIoB,GAAC,CAAC,GAAElB,GAAE,OAAO,YAAY,IAAI,iBAAe,gBAAc,KAAK,aAAWE,GAAE,KAAK,iBAAiB,WAAU,KAAK,WAAW,KAAK,MAAKU,EAAC,CAAC,GAAE,WAASZ,GAAE,QAAQ,mBAAmB,CAAC,KAAGA,GAAE,QAAQ,mBAAmB,CAAC,EAAE,QAAQY,EAAC,IAAE,MAAI,KAAK,WAAWA,EAAC,GAAEZ,GAAE,OAAO,WAAW,SAAQ;AAAC,kBAAIqB,KAAEhB,GAAE,GAAEiB,KAAEjB,GAAE,GAAEkB,KAAE,MAAIZ,KAAE,KAAK,YAAU;AAAI,kBAAG,MAAIA,MAAGX,GAAE,OAAO,YAAY,IAAI,WAAW,sBAAoBF,GAAEc,EAAC,GAAE;AAAC,oBAAIY,KAAExB,GAAE,OAAO,WAAW;AAAU,2BAASwB,OAAID,KAAEC,GAAExB,GAAE,QAAQ,cAAcY,EAAC,EAAE,CAAC,GAAE,EAAC,aAAYA,IAAE,GAAEZ,GAAC,CAAC;AAAG,oBAAIyB,KAAEzB,GAAE,QAAQ,WAAW,MAAM,OAAOY,EAAC,GAAEc,KAAEvB,GAAE,MAAM,EAAC,OAAM,wBAAuB,CAAC,GAAEwB,KAAExB,GAAE,SAAS,EAAC,GAAEkB,IAAE,GAAEC,IAAE,MAAKC,IAAE,YAAW,UAAS,UAASvB,GAAE,OAAO,WAAW,MAAM,UAAS,YAAWA,GAAE,OAAO,WAAW,MAAM,YAAW,YAAWA,GAAE,OAAO,WAAW,MAAM,YAAW,WAAUyB,GAAC,CAAC;AAAE,oBAAGC,GAAE,IAAIC,EAAC,GAAE3B,GAAE,OAAO,WAAW,WAAW,SAAQ;AAAC,sBAAI4B,KAAE5B,GAAE,OAAO,WAAW;AAAW,kBAAAC,GAAE,WAAW0B,IAAEC,EAAC;AAAA,gBAAC;AAAC,gBAAAD,GAAE,KAAK,UAAU,IAAI,sBAAsB,GAAE3B,GAAE,OAAO,MAAM,WAAW,WAAS,UAAKA,GAAE,QAAQ,YAAU2B,GAAE,KAAK,UAAU,IAAI,4BAA4B,GAAEA,GAAE,KAAK,MAAM,iBAAe3B,GAAE,OAAO,MAAM,WAAW,QAAM,MAAI,MAAK,KAAK,YAAY,KAAK0B,EAAC;AAAA,cAAC;AAAA,YAAC;AAAA,UAAC;AAAC,iBAAOpB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASR,IAAEC,IAAE;AAAC,cAAIC,KAAE,IAAIoB,GAAE,KAAK,GAAG;AAAE,UAAAtB,GAAE,KAAK,iBAAiB,cAAaE,GAAE,eAAe,KAAK,MAAKF,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,cAAaE,GAAE,eAAe,KAAK,MAAKF,EAAC,CAAC,GAAEA,GAAE,KAAK,iBAAiB,cAAa,KAAK,sBAAsB,KAAK,MAAKA,GAAE,MAAKC,EAAC,CAAC,GAAED,GAAE,KAAK,iBAAiB,aAAYE,GAAE,cAAc,KAAK,MAAKF,EAAC,CAAC,GAAE,KAAK,gBAAgB,MAAM,eAAaA,GAAE,KAAK,iBAAiB,cAAa,KAAK,qBAAqB,KAAK,MAAKA,GAAE,MAAKC,EAAC,CAAC,GAAED,GAAE,KAAK,iBAAiB,aAAY,KAAK,qBAAqB,KAAK,MAAKA,GAAE,MAAKC,EAAC,CAAC;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEF,GAAE,WAASA,GAAE,aAAW,KAAK,YAAUA,GAAE,WAASA,GAAE,aAAWA,GAAE,WAASA,GAAE,YAAWI,KAAEF,IAAEG,KAAEL,GAAE,YAAWO,KAAEP,GAAE;AAAW,qBAASA,GAAE,kBAAgB,WAASA,GAAE,iBAAeK,KAAEL,GAAE,cAAaI,KAAEJ,GAAE,eAAaA,GAAE,iBAAe,KAAK,YAAUA,GAAE,eAAaA,GAAE,iBAAeA,GAAE,eAAaA,GAAE,iBAAgBA,GAAE,MAAIC,GAAE,OAAO,OAAO,SAAO,MAAIC,KAAEK,KAAE,KAAK,YAAUP,GAAE,WAASA,GAAE,YAAUE,KAAEK,MAAGL,KAAEK,KAAE,KAAK,cAAYP,GAAE,WAASA,GAAE,YAAU,KAAK,aAAWE,KAAEK,QAAML,OAAI,KAAK,cAAYA,KAAE,KAAK,YAAU,OAAK,KAAK,WAAWH,IAAEM,IAAEE,IAAEL,IAAEE,IAAEJ,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,cAAIE,IAAEC,KAAE,MAAKE,KAAE,KAAK,GAAEC,KAAE,IAAIQ,GAAE,KAAK,GAAG,GAAEV,KAAEJ,GAAE;AAAK,WAAC,MAAML,EAAC,KAAG,MAAMI,EAAC,OAAKJ,KAAEC,IAAEG,KAAEF,IAAEG,GAAE,MAAI;AAAG,cAAIQ,KAAEX,IAAEY,KAAEb,IAAEW,KAAEZ,KAAEC,KAAE,KAAK,YAAUD,KAAEC,KAAED,KAAEC;AAAE,UAAAS,GAAE,QAAQ,eAAaL,GAAE,sBAAoBA,GAAE,iBAAeE,KAAEC,GAAE,WAAW,EAAC,IAAGA,IAAE,YAAWH,GAAE,gBAAe,OAAMA,GAAE,eAAaA,GAAE,iBAAe,KAAK,YAAUA,GAAE,eAAaA,GAAE,iBAAeA,GAAE,eAAaA,GAAE,gBAAe,MAAKI,GAAC,CAAC,GAAEV,GAAE,KAAK,EAAC,GAAEQ,GAAC,CAAC,IAAG,MAAIF,GAAE,MAAIN,GAAE,QAAQM,GAAE,KAAIK,GAAE,QAAQ,QAAOL,GAAE,aAAaA,GAAE,CAAC,CAAC,EAAE,SAAU,WAAU;AAAC,sBAAQG,GAAE,aAAW,YAAUA,GAAE,aAAW,gBAAcA,GAAE,aAAW,KAAK,QAAQE,GAAE,OAAO,MAAM,WAAW,iBAAiB,KAAK,EAAE,KAAK,EAAC,gBAAeF,GAAE,YAAW,CAAC,GAAEH,GAAE,MAAIK,GAAE,OAAO,OAAO,SAAO,KAAGC,GAAE,mBAAmBZ,EAAC;AAAA,UAAC,CAAE,EAAE,OAAQ,SAASW,IAAE;AAAC,YAAAG,KAAED,MAAGV,KAAEU,MAAGF,IAAEL,GAAE,uBAAqBQ,KAAET,MAAGF,KAAEE,MAAGM,IAAEI,KAAEd,KAAEI,MAAGH,MAAGD,KAAEI,OAAIM,KAAGH,KAAEC,GAAE,WAAW,EAAC,IAAGA,IAAE,YAAWM,IAAE,OAAMD,IAAE,MAAKJ,GAAC,CAAC,GAAEV,GAAE,KAAK,aAAa,iBAAgBQ,EAAC,GAAER,GAAE,KAAK,EAAC,GAAEQ,GAAC,CAAC;AAAA,UAAC,CAAE,KAAGA,KAAEC,GAAE,WAAW,EAAC,IAAGA,IAAE,YAAWM,IAAE,OAAMZ,IAAE,MAAKO,GAAC,CAAC,GAAEJ,GAAE,YAAUK,GAAE,QAAQ,iBAAe,OAAIX,GAAE,KAAK,aAAa,iBAAgBQ,EAAC,GAAER,GAAE,KAAK,EAAC,GAAEQ,IAAE,gBAAeC,GAAE,YAAW,CAAC;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAAST,IAAE;AAAC,cAAIC,IAAEC,KAAE,KAAK,GAAEC,KAAE,MAAKE,KAAEF,GAAE,WAAWH,EAAC,KAAGE,GAAE,OAAO,YAAY,IAAI,gBAAc,IAAE,IAAGI,KAAEJ,GAAE,QAAQ,IAAI,MAAM,OAAO,eAAe,OAAOC,GAAE,UAAU,YAAY,GAAE,SAAS,EAAE,OAAOH,EAAC,CAAC,EAAE,QAAQ,CAAC;AAAE,cAAG,WAASM,GAAE,KAAK,iBAAiB,GAAE;AAAC,gBAAIE,KAAEN,GAAE,QAAQ,IAAI,OAAO,uBAAuB,qBAAqB;AAAE,kBAAM,UAAU,QAAQ,KAAKM,IAAG,SAASR,IAAE;AAAC,cAAAA,GAAE,aAAa,mBAAkB,OAAO;AAAE,kBAAIC,KAAED,GAAE,aAAa,eAAe;AAAE,cAAAC,MAAGD,GAAE,aAAa,KAAIC,EAAC;AAAA,YAAC,CAAE,GAAEC,GAAE,QAAQ,yBAAuBF,IAAEM,GAAE,KAAK,mBAAkB,MAAM;AAAE,gBAAIG,KAAE,SAASH,GAAE,KAAK,iBAAiB,GAAE,EAAE,GAAEK,KAAE,SAASL,GAAE,KAAK,YAAY,GAAE,EAAE;AAAE,YAAAL,KAAEE,GAAE,WAAW,EAAC,IAAGA,IAAE,YAAWM,IAAE,OAAME,IAAE,MAAKN,GAAC,CAAC,GAAE,QAAMM,MAAGL,GAAE,KAAKL,EAAC;AAAA,UAAC,OAAK;AAAC,YAAAK,GAAE,KAAK,EAAC,mBAAkB,QAAO,CAAC,GAAE,KAAK,sBAAsBA,GAAE,MAAK,KAAK,eAAe;AAAE,gBAAIM,KAAEN,GAAE,KAAK,eAAe;AAAE,YAAAA,GAAE,KAAK,EAAC,GAAEM,GAAC,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASZ,IAAEC,IAAE;AAAC,cAAIC,KAAE;AAAG,iBAAO,KAAK,eAAa,KAAK,EAAE,QAAQ,gBAAcA,KAAE,KAAK,WAAW,EAAC,IAAG,MAAK,YAAWF,IAAE,OAAMC,KAAED,IAAE,MAAK,KAAK,KAAI,CAAC,IAAGE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASF,IAAE;AAAC,cAAIC,IAAEC,KAAEF,GAAE,IAAGG,KAAEH,GAAE,YAAWK,KAAEL,GAAE,OAAMM,KAAEN,GAAE,MAAKQ,KAAE,IAAIc,GAAE,KAAK,GAAG,GAAEb,KAAEN,IAAEQ,KAAE,KAAK,MAAIF,KAAE,MAAI,KAAIG,KAAEP,KAAEF;AAAE,eAAK,KAAKS,EAAC,KAAG,KAAK,YAAU,KAAK,EAAE,OAAO,YAAY,IAAI,aAAW,KAAK,cAAYA,KAAE,KAAK,YAAU,KAAK,EAAE,OAAO,YAAY,IAAI,aAAW,KAAK,YAAU,OAAK,KAAK,KAAKA,EAAC,IAAE,KAAK,cAAYA,MAAG,KAAK;AAAW,cAAIF,KAAE,KAAK,MAAIE,KAAE,MAAI,KAAIE,KAAEZ,GAAE,UAAQI,KAAE,KAAK,IAAIK,EAAC,GAAEI,KAAEb,GAAE,UAAQI,KAAE,KAAK,IAAIK,EAAC,GAAEE,KAAEX,GAAE,UAAQI,KAAE,KAAK,IAAII,EAAC,GAAEM,KAAEd,GAAE,UAAQI,KAAE,KAAK,IAAII,EAAC,GAAEO,KAAEE,GAAE,iBAAiBjB,GAAE,SAAQA,GAAE,SAAQA,GAAE,WAAUU,EAAC,GAAER,KAAEe,GAAE,iBAAiBjB,GAAE,SAAQA,GAAE,SAAQA,GAAE,WAAUO,EAAC,GAAES,KAAEb,KAAE,MAAI,IAAE,GAAEE,KAAE,CAAC,KAAIO,IAAEC,IAAE,KAAIT,IAAEA,IAAE,GAAEY,IAAE,GAAEL,IAAEG,EAAC;AAAE,iBAAOf,KAAE,YAAUC,GAAE,YAAU,CAAC,EAAE,OAAOK,IAAE,CAAC,KAAIU,GAAE,GAAEA,GAAE,GAAE,KAAIf,GAAE,WAAUA,GAAE,WAAU,GAAEgB,IAAE,GAAEd,GAAE,GAAEA,GAAE,GAAE,KAAIU,IAAEC,IAAE,GAAG,CAAC,EAAE,KAAK,GAAG,IAAE,UAAQb,GAAE,aAAW,gBAAcA,GAAE,YAAU,CAAC,EAAE,OAAOK,IAAE,CAAC,KAAIL,GAAE,SAAQA,GAAE,SAAQ,KAAIY,IAAEC,EAAC,CAAC,EAAE,KAAK,GAAG,IAAE,CAAC,EAAE,OAAOR,EAAC,EAAE,KAAK,GAAG,GAAEC,GAAE,iBAAiBP,IAAE,IAAE,KAAK,WAAW;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAI+C,GAAE,KAAK,GAAG,GAAE9C,KAAE,IAAImB,GAAE,KAAK,GAAG,GAAEjB,KAAE,IAAI6E,IAAG,KAAK,GAAG,GAAE5E,KAAEH,GAAE,MAAM,GAAEK,KAAEL,GAAE,MAAM,GAAEM,KAAEP,GAAE,UAAU,GAAE,KAAK,KAAK,KAAK,IAAI,GAAE,CAAC,GAAES,KAAEF,GAAE,OAAO,QAAQ,GAAEG,KAAEH,GAAE,OAAO;AAAO,eAAK,OAAKA,GAAE;AAAQ,mBAAQC,KAAET,GAAE,QAAQ,YAAWa,KAAEJ,MAAGE,KAAE,IAAGG,KAAE,GAAEA,KAAEH,KAAE,GAAEG,MAAI;AAAC,gBAAIF,KAAEV,GAAE,WAAWO,EAAC;AAAE,gBAAGG,GAAE,KAAK,EAAC,IAAG,KAAK,SAAQ,IAAG,KAAK,SAAQ,MAAK,QAAO,gBAAeZ,GAAE,OAAO,YAAY,UAAU,MAAM,aAAY,QAAOA,GAAE,OAAO,YAAY,UAAU,MAAM,YAAW,CAAC,GAAEA,GAAE,OAAO,MAAM,CAAC,EAAE,MAAK;AAAC,kBAAIe,KAAEX,GAAE,eAAe,KAAK,SAAQ,KAAK,UAAQK,KAAE,SAAST,GAAE,OAAO,MAAM,CAAC,EAAE,OAAO,MAAM,UAAS,EAAE,IAAE,GAAEc,IAAEJ,GAAEI,EAAC,CAAC;AAAE,cAAAP,GAAE,IAAIQ,EAAC;AAAA,YAAC;AAAC,YAAAV,GAAE,IAAIO,EAAC,GAAEH,MAAGI;AAAA,UAAC;AAAC,eAAK,WAAWd,EAAC,GAAEA,GAAE,IAAIM,EAAC,GAAEN,GAAE,IAAIQ,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASR,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAE,IAAIiB,GAAE,KAAK,GAAG,GAAEhB,KAAEL,GAAE,MAAM;AAAK,UAAAD,GAAE,KAAK,YAAU,IAAGA,GAAE,KAAK,MAAM,UAAQE,GAAE;AAAQ,cAAIM,IAAEC,IAAEE,KAAET,GAAE,SAAQU,KAAE,KAAK,gBAAgB,MAAM,QAAMV,GAAE,UAAQA,GAAE,UAAQA,GAAE,UAAQ;AAAE,UAAAM,KAAE,WAASP,GAAE,KAAK,QAAME,GAAE,QAAQ,OAAO,CAAC,IAAEF,GAAE,KAAK;AAAM,cAAIS,KAAET,GAAE,KAAK,UAASa,KAAEb,GAAE,KAAK,YAAWc,KAAEd,GAAE,KAAK;AAAW,UAAAQ,KAAE,WAASR,GAAE,MAAM,QAAME,GAAE,OAAO,MAAM,YAAUF,GAAE,MAAM;AAAM,cAAIY,KAAEZ,GAAE,MAAM,WAAUe,KAAE,IAAGC,KAAE;AAAG,cAAGX,MAAGE,KAAEP,GAAE,MAAM,OAAMS,KAAET,GAAE,MAAM,UAASa,KAAEb,GAAE,MAAM,YAAWc,KAAEd,GAAE,MAAM,YAAWgB,KAAE,KAAK,gBAAgB,MAAM,QAAMhB,GAAE,MAAM,QAAM,IAAGe,KAAEf,GAAE,MAAM,UAAUE,EAAC,KAAG,MAAIA,GAAE,QAAQ,OAAO,WAASa,KAAEH,GAAEV,GAAE,QAAQ,OAAO,CAAC,GAAEA,EAAC,GAAEc,KAAEd,GAAE,QAAQ,YAAY,CAAC,IAAGc,OAAIA,KAAEhB,GAAE,KAAK,UAAUgB,IAAEhB,GAAE,MAAM,MAAKE,EAAC,IAAGF,GAAE,KAAK,MAAK;AAAC,gBAAIG,KAAEC,GAAE,SAAS,EAAC,GAAEM,IAAE,GAAEC,KAAE,WAAWX,GAAE,KAAK,OAAO,GAAE,MAAKgB,IAAE,YAAW,UAAS,WAAUT,IAAE,UAASE,IAAE,YAAWK,IAAE,YAAWD,GAAC,CAAC;AAAE,YAAAV,GAAE,KAAK,UAAU,IAAI,4BAA4B,GAAEJ,GAAE,IAAII,EAAC;AAAA,UAAC;AAAC,cAAGH,GAAE,MAAM,MAAK;AAAC,gBAAIiB,KAAEjB,GAAE,KAAK,OAAK,WAAWA,GAAE,MAAM,OAAO,IAAE,KAAGA,GAAE,MAAM,SAAQM,KAAEF,GAAE,SAAS,EAAC,GAAEM,IAAE,GAAEC,KAAEM,IAAE,MAAKF,IAAE,YAAW,UAAS,WAAUP,IAAE,YAAWR,GAAE,MAAM,YAAW,UAASA,GAAE,MAAM,UAAS,YAAWA,GAAE,MAAM,WAAU,CAAC;AAAE,YAAAM,GAAE,KAAK,UAAU,IAAI,4BAA4B,GAAEP,GAAE,IAAIO,EAAC;AAAA,UAAC;AAAC,iBAAOP;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,IAAEC,KAAE,KAAK;AAAE,UAAAH,KAAEE,KAAE,WAASL,GAAE,KAAK,QAAMM,GAAE,QAAQ,OAAO,SAASH,GAAE,WAAW,aAAa,KAAK,GAAE,EAAE,IAAE,CAAC,IAAEH,GAAE,KAAK,QAAMM,GAAE,QAAQ,OAAO,SAAO,KAAGN,GAAE,MAAM,SAAOK,KAAEL,GAAE,MAAM;AAAO,cAAIQ,KAAEF,GAAE,QAAQ,IAAI,OAAO,cAAc,6BAA6B,GAAEG,KAAEH,GAAE,QAAQ,IAAI,OAAO,cAAc,6BAA6B;AAAE,UAAAJ,MAAG,GAAEF,GAAE,MAAM,WAAWE,IAAEI,EAAC,GAAEH,MAAG,cAAY,OAAOH,GAAE,MAAM,cAAYE,KAAEF,GAAE,MAAM,UAAUM,EAAC;AAAG,cAAIK,KAAEV,OAAID,GAAE,MAAM;AAAM,UAAAC,KAAE,KAAK,gBAAgB,MAAM,QAAMD,GAAE,KAAK,UAAUC,IAAEU,IAAEL,EAAC,IAAE,IAAG,SAAOE,OAAIA,GAAE,cAAYP,KAAG,SAAOQ,OAAIA,GAAE,cAAYP,KAAG,SAAOM,OAAIA,GAAE,MAAM,OAAKH;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASL,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAEH,GAAE,aAAa,YAAY,GAAEK,KAAEH,GAAE,QAAQ,YAAY,SAASF,GAAE,WAAW,aAAa,KAAK,GAAE,EAAE,IAAE,CAAC;AAAE,UAAAE,GAAE,QAAQ,OAAO,SAAO,KAAG,KAAK,iBAAiBD,IAAEI,IAAEF,IAAEH,EAAC;AAAE,cAAIM,KAAEJ,GAAE,QAAQ,IAAI,OAAO,cAAc,8BAA8B;AAAE,mBAAOI,OAAIA,GAAE,MAAM,UAAQ;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,IAAImB,GAAE,KAAK,GAAG,GAAEjB,KAAEH,GAAE,OAAO,YAAY,UAAU;AAAO,cAAG,MAAIG,GAAE,aAAY;AAAC,qBAAQC,KAAE,CAAC,GAAEE,KAAE,MAAIN,GAAE,QAAQ,OAAO,QAAOO,KAAE,GAAEA,KAAEP,GAAE,QAAQ,OAAO,QAAOO,KAAI,CAAAH,GAAE,KAAKa,GAAE,iBAAiB,KAAK,SAAQ,KAAK,SAAQjB,GAAE,QAAQ,YAAWA,GAAE,OAAO,YAAY,IAAI,aAAWM,KAAEC,EAAC,CAAC;AAAE,YAAAH,GAAE,QAAS,SAASJ,IAAEI,IAAE;AAAC,kBAAIE,KAAEL,GAAE,SAASD,GAAE,GAAEA,GAAE,GAAED,GAAE,SAAQA,GAAE,SAAQ,MAAM,QAAQI,GAAE,eAAe,IAAEA,GAAE,gBAAgBC,EAAC,IAAED,GAAE,eAAe;AAAE,cAAAL,GAAE,IAAIQ,EAAC;AAAA,YAAC,CAAE;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,cAAIR,KAAE,KAAK;AAAE,cAAG,KAAK,gBAAgB,MAAK;AAAC,gBAAIC,KAAED,GAAE,QAAQ,IAAI,MAAM,OAAO,8BAA8B,EAAE,QAAQ,CAAC,GAAEE,KAAE,KAAK,sBAAsBD,IAAE,KAAK,iBAAgB,EAAC,YAAW,KAAK,WAAU,SAAQ,KAAK,SAAQ,SAAQ,KAAK,SAAQ,SAAQ,KAAK,gBAAgB,KAAI,CAAC;AAAE,YAAAD,GAAE,QAAQ,IAAI,MAAM,OAAO,wCAAwC,EAAE,QAAQ,CAAC,EAAE,IAAIE,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA/xzS,UAAiyzSoF,MAAG,WAAU;AAAC,iBAASpF,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,YAAU,KAAK,EAAE,OAAO,MAAM,MAAK,KAAK,cAAY,KAAK,EAAE,OAAO,MAAM,WAAW,SAAQ,KAAK,cAAY,KAAK,eAAa,KAAK,EAAE,OAAO,MAAM,WAAW,iBAAiB,SAAQ,KAAK,UAAQ;AAAE,cAAIE,KAAE,KAAK;AAAE,eAAK,WAAS,IAAImB,GAAE,KAAK,GAAG,GAAE,KAAK,eAAa,WAASnB,GAAE,QAAQ,OAAO,SAAOA,GAAE,QAAQ,OAAO,SAAOA,GAAE,QAAQ,QAAO,KAAK,cAAYA,GAAE,QAAQ,YAAUA,GAAE,QAAQ,WAASA,GAAE,QAAQ,aAAWA,GAAE,QAAQ,WAAU,KAAK,QAAMA,GAAE,OAAO,MAAM,CAAC,EAAE,aAAY,KAAK,UAAQA,GAAE,OAAO,MAAM,CAAC,EAAE,SAAQ,KAAK,YAAU,IAAIoB,GAAE,KAAK,GAAG,GAAE,KAAK,WAAS,KAAK,QAAM,KAAK,UAAU,UAAU,KAAK,SAAQpB,GAAE,QAAQ,MAAK,CAAC,IAAEA,GAAE,QAAQ,MAAK,KAAK,WAAS,KAAK,QAAM,KAAK,UAAU,UAAU,KAAK,SAAQ,KAAK,EAAE,QAAQ,MAAK,CAAC,IAAEA,GAAE,QAAQ,MAAK,KAAK,WAASA,GAAE,OAAO,YAAY,MAAM,UAAS,KAAK,cAAYA,GAAE,OAAO,OAAO,OAAKA,GAAE,OAAO,OAAO,QAAM,GAAE,KAAK,OAAK,KAAK,cAAY,MAAI,KAAK,cAAYA,GAAE,OAAO,MAAM,WAAW,MAAKA,GAAE,OAAO,MAAM,OAAO,SAAO,KAAK,OAAK,KAAK,OAAKA,GAAE,QAAQ,mBAAiB,OAAM,WAASA,GAAE,OAAO,YAAY,MAAM,SAAO,KAAK,OAAKA,GAAE,OAAO,YAAY,MAAM,OAAM,KAAK,sBAAoB,CAAC,GAAE,KAAK,aAAW,CAAC,GAAE,KAAK,WAAS,CAAC,GAAE,KAAK,sBAAoB,CAAC;AAAA,QAAC;AAAC,eAAOE,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,IAAIqC,GAAE,KAAK,GAAG,GAAEnC,KAAE,CAAC,GAAEC,KAAE,IAAIqC,GAAE,KAAK,GAAG;AAAE,UAAA3C,GAAE,WAAS,KAAK,gBAAcA,GAAEE,GAAE,QAAQ,mBAAmB,EAAE,SAAQ,KAAK,WAAS,IAAE,KAAK,KAAG,KAAK;AAAc,cAAIM,KAAEN,GAAE,QAAQ,YAAU,GAAEO,KAAEP,GAAE,QAAQ,aAAW,GAAES,KAAEH,KAAEN,GAAE,OAAO,YAAY,MAAM,SAAQU,KAAEH,KAAEP,GAAE,OAAO,YAAY,MAAM,SAAQQ,KAAE,KAAK,SAAS,MAAM,EAAC,OAAM,kDAAiD,WAAU,aAAa,OAAOC,MAAG,GAAE,IAAI,EAAE,OAAOC,MAAG,GAAE,GAAG,EAAC,CAAC,GAAEE,KAAE,CAAC,GAAED,KAAE,MAAKG,KAAE;AAAK,cAAG,KAAK,cAAY,KAAK,SAAS,MAAM,EAAC,OAAM,mBAAkB,CAAC,GAAEhB,GAAE,QAAS,SAASA,IAAEQ,IAAE;AAAC,gBAAIC,KAAET,GAAE,WAASE,GAAE,QAAQ,YAAWS,KAAEV,GAAE,SAAS,MAAM,EAAE,KAAK,EAAC,OAAM,qBAAoB,sBAAqBQ,IAAE,YAAWU,GAAE,aAAajB,GAAE,QAAQ,YAAYM,EAAC,CAAC,GAAE,KAAIA,KAAE,GAAE,kBAAiBA,GAAC,CAAC;AAAE,YAAAP,GAAE,oBAAoBO,EAAC,IAAE,CAAC,GAAEP,GAAE,WAAWO,EAAC,IAAE,CAAC,GAAEP,GAAE,SAASO,EAAC,IAAE,CAAC,GAAER,GAAE,QAAS,SAASA,IAAEE,IAAE;AAAC,kBAAIC,KAAE,KAAK,IAAIF,GAAE,WAASA,GAAE,QAAQ;AAAE,cAAAD,MAAGC,GAAE,UAASA,GAAE,UAAQD,KAAEC,GAAE,UAAU,UAAUA,GAAE,SAAQD,IAAE,CAAC,IAAGC,GAAE,oBAAoBO,EAAC,EAAEN,EAAC,IAAEF,KAAEG,IAAEF,GAAE,WAAWO,EAAC,EAAEN,EAAC,IAAED,GAAE,oBAAoBO,EAAC,EAAEN,EAAC,IAAED,GAAE,MAAKA,GAAE,SAASO,EAAC,EAAEN,EAAC,IAAEA,KAAED,GAAE;AAAA,YAAQ,CAAE,GAAEa,KAAEb,GAAE,iBAAiBA,GAAE,WAAWO,EAAC,GAAEP,GAAE,SAASO,EAAC,CAAC;AAAE,gBAAII,KAAEX,GAAE,YAAYa,IAAE,EAAC,GAAE,GAAE,GAAE,EAAC,CAAC;AAAE,YAAAD,KAAEZ,GAAE,SAAS,MAAM,EAAC,OAAM,2DAA0D,CAAC,GAAEe,KAAEf,GAAE,SAAS,MAAM,EAAC,OAAM,yBAAwB,kBAAiBO,GAAC,CAAC,GAAEN,GAAE,QAAQ,gBAAgB,KAAK,EAAC,IAAGW,GAAE,MAAK,OAAML,GAAC,CAAC;AAAE,gBAAIE,KAAE,EAAC,GAAEF,IAAE,WAAUA,IAAE,gBAAeA,IAAE,cAAaN,GAAE,OAAO,MAAM,WAAW,OAAM,iBAAgBA,GAAE,OAAO,MAAM,WAAW,iBAAiB,OAAM,WAAU,oBAAmB,kBAAiB,OAAG,mBAAkB,OAAG,QAAOA,GAAE,QAAQ,OAAO,OAAOM,EAAC,GAAE,eAAcN,GAAE,OAAO,OAAO,QAAO,GAAEe,KAAE;AAAK,YAAAf,GAAE,QAAQ,cAAc,SAAO,MAAIe,KAAEhB,GAAE,gBAAgBO,EAAC;AAAG,qBAAQJ,KAAE,GAAEA,KAAEQ,GAAE,YAAY,QAAOR,MAAI;AAAC,kBAAIc,KAAEjB,GAAE,SAAS,YAAYc,GAAEA,GAAE,CAAC,GAAEL,EAAC,GAAE,CAAC,GAAE,EAAC,UAAS,SAAOO,KAAEL,GAAE,cAAcR,EAAC,IAAEa,IAAE,QAAOL,GAAE,YAAYR,EAAC,GAAE,aAAY,MAAM,QAAQH,GAAE,WAAW,IAAEA,GAAE,YAAYO,EAAC,IAAEP,GAAE,aAAY,MAAK,QAAO,YAAW,MAAE,CAAC,CAAC;AAAE,cAAAU,GAAE,IAAIO,EAAC;AAAE,kBAAIX,KAAEJ,GAAE,SAAS,EAAC,cAAaK,GAAC,CAAC,GAAEY,KAAEnB,GAAE,SAAS,YAAYc,GAAEA,GAAE,CAAC,GAAEL,EAAC,GAAE,CAAC,GAAE,EAAC,UAAS,SAAOO,KAAEL,GAAE,cAAcR,EAAC,IAAEa,IAAE,QAAOL,GAAE,YAAYR,EAAC,GAAE,aAAY,GAAE,MAAKG,IAAE,YAAW,MAAE,CAAC,CAAC;AAAE,kBAAGL,GAAE,OAAO,MAAM,WAAW,SAAQ;AAAC,oBAAIoB,KAAE,IAAID,GAAEpB,GAAE,GAAG,GAAEsB,KAAErB,GAAE,OAAO,MAAM;AAAW,gBAAAoB,GAAE,WAAWF,IAAE,OAAO,OAAO,CAAC,GAAEG,IAAE,EAAC,kBAAiB,KAAE,CAAC,GAAEf,EAAC;AAAA,cAAC;AAAC,cAAAG,GAAE,IAAIS,EAAC;AAAA,YAAC;AAAC,YAAApB,GAAE,QAAS,SAASA,IAAEG,IAAE;AAAC,kBAAIE,KAAE,IAAIoC,GAAExC,GAAE,GAAG,EAAE,gBAAgB,EAAC,UAAS,qBAAoB,aAAYO,IAAE,gBAAeL,GAAC,CAAC,GAAEM,KAAER,GAAE,SAAS,WAAWa,GAAEX,EAAC,EAAE,GAAEW,GAAEX,EAAC,EAAE,GAAEE,EAAC;AAAE,cAAAI,GAAE,KAAK,OAAMN,EAAC,GAAEM,GAAE,KAAK,KAAIN,EAAC,GAAEM,GAAE,KAAK,SAAQD,EAAC,GAAEC,GAAE,KAAK,aAAa,uBAAsBJ,GAAE,KAAK;AAAE,kBAAIO,KAAEX,GAAE,SAAS,MAAM,EAAC,OAAM,4BAA2B,CAAC;AAAE,cAAAW,MAAGA,GAAE,IAAIH,EAAC,GAAEI,GAAE,IAAID,EAAC,GAAED,GAAE,IAAIE,EAAC;AAAE,kBAAIH,KAAER,GAAE,OAAO;AAAW,kBAAGQ,GAAE,SAAQ;AAAC,oBAAIO,KAAEP,GAAE,UAAUR,GAAE,QAAQ,OAAOM,EAAC,EAAEL,EAAC,GAAE,EAAC,aAAYK,IAAE,gBAAeL,IAAE,GAAED,GAAC,CAAC;AAAE,gBAAAI,GAAE,mBAAmB,EAAC,GAAEQ,GAAEX,EAAC,EAAE,GAAE,GAAEW,GAAEX,EAAC,EAAE,GAAE,MAAKc,IAAE,YAAW,UAAS,GAAET,IAAE,GAAEA,IAAE,QAAOQ,IAAE,kBAAiB,OAAG,kBAAiBD,GAAE,CAAC,GAAEL,EAAC,EAAC,CAAC;AAAA,cAAC;AAAC,cAAAC,GAAE,IAAIK,EAAC;AAAA,YAAC,CAAE,GAAEX,GAAE,KAAKM,EAAC;AAAA,UAAC,CAAE,GAAE,KAAK,aAAa,EAAC,QAAOD,GAAC,CAAC,GAAER,GAAE,OAAO,MAAM,OAAO,MAAK;AAAC,gBAAIe,KAAE,KAAK,eAAe;AAAE,YAAAP,GAAE,IAAIO,EAAC;AAAA,UAAC;AAAC,iBAAOZ,GAAE,QAAS,SAASL,IAAE;AAAC,YAAAU,GAAE,IAAIV,EAAC;AAAA,UAAC,CAAE,GAAEU,GAAE,IAAI,KAAK,WAAW,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASV,IAAE;AAAC,mBAAQC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAEH,GAAE,QAAOK,KAAE,IAAI6E,IAAG,KAAK,GAAG,GAAE5E,KAAEJ,GAAE,QAAQ,WAAW,CAAC,EAAE,OAAO,QAAQ,GAAEM,KAAEF,GAAE,QAAOG,KAAE,CAAC,GAAEE,KAAE,KAAK,QAAMH,KAAE,IAAGI,KAAE,GAAEA,KAAEJ,IAAEI,KAAI,CAAAH,GAAEG,EAAC,IAAED,KAAEC;AAAE,UAAAH,GAAE,QAAQ;AAAE,cAAIC,KAAE,CAAC,GAAEI,KAAE,CAAC;AAAE,UAAAL,GAAE,QAAS,SAAST,IAAEE,IAAE;AAAC,gBAAIC,KAAEgB,GAAE,cAAcnB,IAAEC,GAAE,aAAa,GAAEI,KAAE;AAAG,YAAAF,GAAE,QAAS,SAASH,IAAEG,IAAE;AAAC,kBAAG,MAAID,IAAE;AAAC,oBAAII,KAAEL,GAAE,SAAS,SAASD,GAAE,GAAEA,GAAE,GAAE,GAAE,GAAE,MAAM,QAAQC,GAAE,SAAS,eAAe,IAAEA,GAAE,SAAS,gBAAgBE,EAAC,IAAEF,GAAE,SAAS,eAAe;AAAE,gBAAAa,GAAE,KAAKR,EAAC;AAAA,cAAC;AAAC,oBAAIH,MAAGF,GAAE,oBAAoB,KAAK,EAAC,GAAED,GAAE,GAAE,GAAEA,GAAE,EAAC,CAAC,GAAEK,MAAGL,GAAE,IAAE,MAAIA,GAAE,IAAE;AAAA,YAAG,CAAE,GAAEU,GAAE,KAAKL,EAAC;AAAA,UAAC,CAAE,GAAEK,GAAE,QAAS,SAASV,IAAEK,IAAE;AAAC,gBAAIC,KAAEL,GAAE,SAAS,cAAaO,KAAEP,GAAE,SAAS,aAAYQ,KAAER,GAAE,SAAS,YAAYD,IAAE,MAAM,QAAQM,EAAC,IAAEA,GAAED,EAAC,IAAEC,IAAE,MAAM,QAAQE,EAAC,IAAEA,GAAEH,EAAC,IAAEG,IAAEN,GAAE,QAAQ,cAAc,KAAK,OAAOG,EAAC,CAAC;AAAE,YAAAF,GAAE,IAAIM,EAAC;AAAA,UAAC,CAAE,GAAEK,GAAE,QAAS,SAASd,IAAE;AAAC,YAAAG,GAAE,IAAIH,EAAC;AAAA,UAAC,CAAE,GAAEE,GAAE,OAAO,MAAM,CAAC,EAAE,QAAM,KAAK,oBAAoB,QAAS,SAASF,IAAEE,IAAE;AAAC,gBAAIC,KAAEE,GAAE,eAAeL,GAAE,GAAEA,GAAE,GAAEE,IAAEI,GAAEJ,EAAC,CAAC;AAAE,YAAAD,GAAE,YAAY,IAAIE,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,cAAIH,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,MAAM,QAAOE,KAAE,KAAK,SAAS,MAAM,EAAC,OAAM,mBAAkB,CAAC,GAAEE,KAAEc,GAAE,cAAc,KAAK,MAAK,KAAK,aAAa;AAAE,iBAAOlB,GAAE,QAAQ,OAAO,QAAS,SAASK,IAAEE,IAAE;AAAC,gBAAIC,KAAER,GAAE,OAAO,MAAM,OAAO,WAAUU,KAAE,IAAIgC,GAAE3C,GAAE,GAAG;AAAE,gBAAGK,GAAEG,EAAC,GAAE;AAAC,kBAAII,KAAEZ,GAAE,WAAWK,GAAEG,EAAC,GAAER,GAAE,IAAI,GAAEU,KAAED,GAAEH,IAAE,EAAC,aAAY,IAAG,gBAAeE,IAAE,GAAEP,GAAC,CAAC;AAAE,cAAAU,GAAE,mBAAmB,EAAC,GAAEC,GAAE,MAAK,GAAEA,GAAE,MAAK,MAAKF,IAAE,YAAWE,GAAE,YAAW,GAAEJ,IAAE,GAAEA,IAAE,QAAOL,IAAE,WAAU,0BAAyB,OAAM,MAAM,QAAQD,GAAE,MAAM,MAAM,KAAGA,GAAE,MAAM,OAAOM,EAAC,IAAEN,GAAE,MAAM,OAAOM,EAAC,IAAE,WAAU,kBAAiBO,GAAE,EAAC,YAAWH,GAAE,YAAW,YAAW,EAAC,SAAQ,MAAE,EAAC,GAAEV,EAAC,GAAE,kBAAiB,MAAE,CAAC,EAAE,GAAG,SAAS,SAASA,IAAE;AAAC,oBAAG,cAAY,OAAOD,GAAE,OAAO,MAAM,OAAO,iBAAgB;AAAC,sBAAIE,KAAE,OAAO,OAAO,CAAC,GAAEF,IAAE,EAAC,YAAWO,GAAC,CAAC;AAAE,kBAAAP,GAAE,OAAO,MAAM,OAAO,gBAAgBC,IAAEF,GAAE,KAAIG,EAAC;AAAA,gBAAC;AAAA,cAAC,CAAE;AAAA,YAAC;AAAA,UAAC,CAAE,GAAEA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,CAAC,GAAEE,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEE,KAAE,CAAC;AAAE,cAAGR,GAAE,QAAO;AAAC,YAAAK,KAAE,CAAC,KAAK,SAAS,KAAKJ,GAAE,GAAEA,GAAE,CAAC,CAAC,GAAEO,KAAE,CAAC,KAAK,SAAS,KAAKP,GAAE,GAAEA,GAAE,CAAC,CAAC;AAAE,gBAAIQ,KAAE,KAAK,SAAS,KAAKT,GAAE,CAAC,EAAE,GAAEA,GAAE,CAAC,EAAE,CAAC,GAAEW,KAAE,KAAK,SAAS,KAAKX,GAAE,CAAC,EAAE,GAAEA,GAAE,CAAC,EAAE,CAAC;AAAE,YAAAA,GAAE,QAAS,SAASC,IAAEE,IAAE;AAAC,cAAAM,MAAGP,GAAE,SAAS,KAAKD,GAAE,GAAEA,GAAE,CAAC,GAAEU,MAAGT,GAAE,SAAS,KAAKD,GAAE,GAAEA,GAAE,CAAC,GAAEE,OAAIH,GAAE,SAAO,MAAIS,MAAG,KAAIE,MAAG;AAAA,YAAI,CAAE,GAAER,GAAE,KAAKM,EAAC,GAAEH,GAAE,KAAKK,EAAC;AAAA,UAAC;AAAC,iBAAM,EAAC,eAAcN,IAAE,aAAYF,IAAE,eAAcK,IAAE,aAAYF,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASN,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAASC,KAAEH,GAAE,GAAEK,KAAEL,GAAE;AAAE,iBAAO,KAAK,IAAIA,GAAE,CAAC,KAAG,KAAGA,GAAE,IAAE,KAAGE,KAAE,SAAQC,MAAG,MAAIH,GAAE,IAAE,MAAIE,KAAE,OAAMC,MAAG,MAAID,KAAE,UAAS,KAAK,IAAIF,GAAE,CAAC,KAAGC,KAAE,OAAKD,GAAE,IAAE,IAAEK,MAAG,KAAGL,GAAE,IAAE,MAAIK,MAAG,MAAK,EAAC,YAAWH,IAAE,MAAKC,IAAE,MAAKE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASL,IAAE;AAAC,mBAAQC,KAAE,KAAK,GAAEC,KAAE,MAAKC,KAAE,GAAEA,KAAEF,GAAE,QAAQ,cAAc,QAAOE,MAAI;AAAC,gBAAIE,KAAEJ,GAAE,QAAQ,cAAcE,EAAC;AAAE,YAAAE,GAAE,MAAM,SAAO,KAAG,SAASA,GAAE,WAAU,EAAE,MAAI,SAASL,IAAE,EAAE,KAAG,WAASC,GAAE,QAAQ,cAAcE,EAAC,EAAE,MAAM,CAAC,MAAID,KAAED,GAAE,QAAQ,cAAcE,EAAC,EAAE,MAAM,CAAC,EAAE;AAAA,UAAE;AAAC,iBAAOD;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,KAAK;AAAc,UAAAF,KAAEA,MAAG,CAAC,GAAEC,KAAEA,MAAG,CAAC;AAAE,mBAAQE,KAAE,CAAC,GAAEE,KAAE,GAAEA,KAAEH,IAAEG,MAAI;AAAC,gBAAIC,KAAE,CAAC;AAAE,YAAAA,GAAE,IAAEN,GAAEK,EAAC,IAAE,KAAK,IAAIJ,GAAEI,EAAC,CAAC,GAAEC,GAAE,IAAE,CAACN,GAAEK,EAAC,IAAE,KAAK,IAAIJ,GAAEI,EAAC,CAAC,GAAEF,GAAE,KAAKG,EAAC;AAAA,UAAC;AAAC,iBAAOH;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEH;AAAA,MAAC,EAAE;AAAx/hT,UAA0/hTqF,MAAG,SAASrF,IAAE;AAAC,QAAAY,GAAEN,IAAE6E,GAAE;AAAE,YAAIhF,KAAEK,GAAEF,EAAC;AAAE,iBAASA,GAAEN,IAAE;AAAC,cAAIK;AAAE,UAAAH,GAAE,MAAKI,EAAC,IAAGD,KAAEF,GAAE,KAAK,MAAKH,EAAC,GAAG,MAAIA,IAAEK,GAAE,IAAEL,GAAE,GAAEK,GAAE,eAAa,CAAC,CAAC,GAAEA,GAAE,UAAQ;AAAE,cAAIG,KAAEH,GAAE;AAAE,iBAAOA,GAAE,aAAWG,GAAE,OAAO,YAAY,UAAU,YAAWH,GAAE,WAASG,GAAE,OAAO,YAAY,UAAU,UAASH,GAAE,aAAW,KAAK,IAAIG,GAAE,OAAO,YAAY,UAAU,WAASA,GAAE,OAAO,YAAY,UAAU,UAAU,GAAEH,GAAE,kBAAgBG,GAAE,OAAO,YAAY,UAAU,MAAM,YAAWH,GAAE,gBAAcG,GAAE,OAAO,YAAY,UAAU,MAAM,UAASH,GAAE,YAAUA,GAAE,EAAE,OAAO,YAAY,UAAU,WAAUA,GAAE,kBAAgBA,GAAE,EAAE,OAAO,YAAY,UAAU,YAAWA,GAAE,mBAAiBA,GAAE,iBAAgBA,GAAE,oBAAkBA,GAAE,kBAAgBA,GAAE,aAAYA,GAAE,kBAAgBA,GAAE,gBAAcA,GAAE,WAAU,QAAMA,GAAE,aAAWA,GAAE,WAAS,SAAQA,GAAE,SAAO,SAASG,GAAE,OAAO,YAAY,UAAU,MAAM,QAAO,EAAE,GAAEH,GAAE,kBAAgBA,GAAE,gBAAgB,KAAKJ,GAAEI,EAAC,CAAC,GAAEA;AAAA,QAAC;AAAC,eAAOA,GAAEC,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAED,GAAE,MAAM,EAAC,OAAM,uBAAsB,CAAC;AAAE,cAAGD,GAAE,QAAQ,OAAO,QAAOE;AAAE,cAAIE,KAAEH,GAAE,MAAM,GAAEI,KAAE,KAAK,cAAY,GAAEE,KAAEP,GAAE,QAAQ,YAAU,GAAEQ,KAAE,KAAK,cAAY;AAAK,UAAAR,GAAE,OAAO,MAAM,UAAU,YAAUQ,KAAEA,KAAER,GAAE,OAAO,OAAO,QAAMA,GAAE,OAAO,MAAM,WAAW;AAAM,cAAIU,KAAEV,GAAE,QAAQ,KAAK;AAAO,cAAGA,GAAE,OAAO,YAAY,UAAU,MAAM,MAAK;AAAC,gBAAIW,KAAE,KAAK,WAAW,EAAC,MAAKH,IAAE,SAAQD,IAAE,SAAQF,IAAE,UAASK,IAAE,QAAOX,GAAC,CAAC;AAAE,YAAAK,GAAE,IAAIO,EAAC;AAAA,UAAC;AAAC,cAAIF,KAAE,KAAK,SAAS,EAAC,MAAKD,IAAE,SAAQD,IAAE,SAAQF,IAAE,UAASK,IAAE,QAAOX,GAAC,CAAC,GAAEc,KAAE;AAAI,UAAAb,GAAE,OAAO,YAAY,UAAU,aAAW,MAAIa,KAAE,KAAK;AAAY,cAAIC,MAAG,MAAID,MAAG;AAAI,cAAGb,GAAE,QAAQ,aAAWQ,KAAEA,KAAEM,IAAE,KAAK,iBAAiB,MAAM,MAAK;AAAC,gBAAIF,KAAE,KAAK,IAAI,KAAK,iBAAiB,MAAM,SAAQ,KAAK,iBAAiB,KAAK,OAAO;AAAE,YAAAZ,GAAE,QAAQ,cAAYY,KAAEE;AAAA,UAAC;AAAC,iBAAOV,GAAE,IAAIK,GAAE,CAAC,GAAE,YAAUT,GAAE,OAAO,YAAY,UAAU,OAAO,aAAWS,GAAE,EAAE,IAAIA,GAAE,QAAQ,GAAEA,GAAE,cAAYA,GAAE,EAAE,IAAIA,GAAE,UAAU,IAAGP,GAAE,IAAIE,EAAC,GAAEF;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAED,GAAE,MAAM,EAAC,OAAM,oBAAmB,CAAC,GAAEG,KAAE,IAAIgB,GAAE,KAAK,GAAG,GAAEf,KAAE,IAAIkC,GAAE,KAAK,GAAG,GAAEhC,KAAE,KAAK,eAAeR,EAAC;AAAE,UAAAA,GAAE,OAAKA,GAAE,OAAKQ,KAAE;AAAE,mBAAQC,KAAE,GAAEA,KAAET,GAAE,OAAO,QAAOS,MAAI;AAAC,gBAAIE,KAAET,GAAE,MAAM,EAAC,OAAM,8CAA6C,CAAC;AAAE,YAAAC,GAAE,IAAIQ,EAAC,GAAEA,GAAE,KAAK,EAAC,KAAIF,KAAE,EAAC,CAAC,GAAET,GAAE,OAAKA,GAAE,OAAKQ,KAAE,KAAK;AAAO,gBAAII,KAAEX,GAAE,OAAO,YAAY,UAAU,OAAMS,KAAEJ,GAAE,SAAS,EAAC,cAAa,GAAE,MAAKN,GAAE,MAAK,YAAW,MAAM,QAAQY,GAAE,UAAU,IAAEA,GAAE,WAAWH,EAAC,IAAEG,GAAE,YAAW,OAAM,KAAE,CAAC,GAAEE,KAAE,KAAK,iBAAgBC,KAAE,KAAK;AAAc,iBAAK,IAAIA,EAAC,IAAE,KAAK,IAAID,EAAC,KAAG,QAAMC,KAAE,MAAI,KAAK,IAAI,KAAK,UAAU,IAAE;AAAI,gBAAIF,KAAEX,GAAE,SAAS,EAAC,GAAE,IAAG,QAAOQ,IAAE,aAAYF,KAAE,SAASI,GAAE,aAAY,EAAE,IAAE,KAAI,MAAK,QAAO,eAAcA,GAAE,SAAQ,SAAQ,4BAA2B,CAAC;AAAE,gBAAGA,GAAE,WAAW,SAAQ;AAAC,kBAAII,KAAEJ,GAAE;AAAW,cAAAP,GAAE,WAAWQ,IAAEG,EAAC;AAAA,YAAC;AAAC,YAAAL,GAAE,IAAIE,EAAC,GAAEA,GAAE,KAAK,MAAK,+BAA6BJ,EAAC,GAAE,KAAK,aAAaI,IAAE,EAAC,SAAQb,GAAE,SAAQ,SAAQA,GAAE,SAAQ,UAASe,IAAE,YAAWD,IAAE,MAAKd,GAAE,MAAK,GAAES,IAAE,YAAW,GAAE,cAAa,GAAE,KAAI,GAAE,SAAQ,MAAG,QAAOR,GAAE,QAAQ,OAAM,CAAC;AAAA,UAAC;AAAC,iBAAOE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAIoB,GAAE,KAAK,GAAG,GAAEnB,KAAE,IAAIqC,GAAE,KAAK,GAAG,GAAEnC,KAAE,IAAIgB,GAAE,KAAK,GAAG,GAAEf,KAAEJ,GAAE,MAAM,GAAEM,KAAE,KAAK,eAAeR,EAAC;AAAE,UAAAA,GAAE,OAAKA,GAAE,OAAKQ,KAAE;AAAE,cAAIC,KAAER,GAAE,OAAO,YAAY,UAAU,OAAO,YAAWU,KAAEX,GAAE,OAAKQ,KAAER,GAAE,OAAO,SAAO,KAAK,SAAOA,GAAE,OAAO,SAAOQ,KAAE,SAASP,GAAE,OAAO,YAAY,UAAU,MAAM,aAAY,EAAE,IAAE,MAAI,GAAEW,KAAED,KAAEV,GAAE,OAAO,YAAY,UAAU,OAAO;AAAO,qBAASA,GAAE,OAAO,YAAY,UAAU,OAAO,UAAQQ,KAAE,KAAK,gBAAgBT,IAAEM,IAAEK,IAAEF,EAAC;AAAG,cAAIC,KAAE,KAAK,WAAW,EAAC,MAAKE,IAAE,SAAQZ,GAAE,SAAQ,SAAQA,GAAE,SAAQ,MAAKS,MAAG,cAAa,CAAC;AAAE,cAAGR,GAAE,OAAO,YAAY,UAAU,OAAO,WAAW,SAAQ;AAAC,gBAAIa,KAAEb,GAAE,OAAO,YAAY,UAAU,OAAO;AAAW,YAAAI,GAAE,WAAWK,IAAEI,EAAC;AAAA,UAAC;AAAC,cAAIC,KAAE;AAAE,WAAC,KAAK,iBAAiB,MAAM,QAAMd,GAAE,QAAQ,OAAO,SAAO,MAAIc,KAAE;AAAG,cAAIF,KAAE;AAAK,cAAG,KAAK,iBAAiB,MAAK;AAAC,gBAAIG,KAAEf,GAAE,QAAQ,IAAI,MAAM,OAAO,8BAA8B,EAAE,QAAQ,CAAC;AAAE,YAAAY,KAAE,KAAK,sBAAsBG,IAAE,KAAK,kBAAiB,EAAC,YAAWL,IAAE,SAAQX,GAAE,SAAQ,SAAQA,GAAE,SAAQ,SAAQe,GAAC,CAAC;AAAA,UAAC;AAAC,qBAASd,GAAE,OAAO,YAAY,UAAU,OAAO,aAAWK,GAAE,IAAII,EAAC,GAAEG,MAAGP,GAAE,IAAIO,EAAC;AAAG,cAAII,KAAE;AAAG,UAAAhB,GAAE,OAAO,YAAY,UAAU,iBAAegB,KAAE;AAAI,mBAAQb,KAAEa,KAAEjB,GAAE,OAAO,SAAO,IAAE,GAAEiB,KAAEb,MAAG,IAAEA,KAAEJ,GAAE,OAAO,QAAOiB,KAAEb,OAAIA,MAAI;AAAC,gBAAIc,KAAEhB,GAAE,MAAM,EAAC,OAAM,8CAA6C,YAAWiB,GAAE,aAAalB,GAAE,QAAQ,YAAYG,EAAC,CAAC,EAAC,CAAC;AAAE,YAAAE,GAAE,IAAIY,EAAC,GAAEA,GAAE,KAAK,EAAC,KAAId,KAAE,GAAE,kBAAiBA,GAAC,CAAC,GAAE,KAAK,IAAI,OAAO,0BAA0Bc,IAAEd,EAAC,GAAEJ,GAAE,OAAKA,GAAE,OAAKQ,KAAE,KAAK;AAAO,gBAAID,KAAEJ,GAAE,SAAS,EAAC,cAAaC,IAAE,MAAKJ,GAAE,MAAK,OAAMA,GAAE,OAAOI,EAAC,EAAC,CAAC,GAAEgB,KAAE,KAAK,YAAWG,KAAE,QAAOC,KAAEL,GAAE,UAAUnB,GAAE,OAAOI,EAAC,IAAE,MAAI,MAAIJ,GAAE,OAAOI,EAAC,CAAC,IAAE,KAAIqB,KAAE,KAAK,MAAM,KAAK,aAAWD,EAAC,IAAE,KAAK,YAAWE,KAAE;AAAO,YAAAzB,GAAE,QAAQ,gBAAcsB,KAAE,KAAK,YAAWG,KAAE,KAAK,MAAM,KAAK,aAAWP,GAAE,UAAUlB,GAAE,QAAQ,cAAcG,EAAC,CAAC,IAAE,GAAG,IAAEmB,KAAG,KAAK,IAAIE,EAAC,IAAE,KAAK,IAAIL,EAAC,IAAE,QAAMK,MAAG,OAAK,KAAK,IAAIC,EAAC,IAAE,KAAK,IAAIH,EAAC,IAAE,QAAMG,MAAG;AAAK,gBAAIC,KAAEF,KAAEL,IAAEQ,KAAE,MAAM,QAAQ3B,GAAE,OAAO,OAAO,SAAS,IAAEA,GAAE,OAAO,OAAO,UAAUG,EAAC,IAAEH,GAAE,OAAO,OAAO,WAAU4B,KAAE3B,GAAE,SAAS,EAAC,GAAE,IAAG,QAAOK,IAAE,aAAYC,IAAE,MAAK,QAAO,aAAYP,GAAE,OAAO,KAAK,SAAQ,SAAQ,0DAAwDG,IAAE,iBAAgBwB,GAAC,CAAC;AAAE,gBAAGN,GAAE,SAASO,GAAE,MAAK,EAAC,cAAaF,IAAE,cAAa3B,GAAE,OAAOI,EAAC,EAAC,CAAC,GAAEH,GAAE,OAAO,MAAM,WAAW,SAAQ;AAAC,kBAAI6B,KAAE7B,GAAE,OAAO,MAAM;AAAW,cAAAI,GAAE,WAAWwB,IAAEC,IAAE1B,EAAC;AAAA,YAAC;AAAC,gBAAGC,GAAE,mBAAmBwB,IAAE,GAAEzB,EAAC,GAAE,KAAK,aAAayB,IAAE,KAAK,gBAAgB,GAAEX,GAAE,IAAIW,EAAC,GAAEA,GAAE,KAAK,EAAC,OAAM,GAAE,GAAEzB,GAAC,CAAC,GAAE,KAAK,UAAU,SAAQ;AAAC,kBAAI2B,KAAEZ,GAAE,iBAAiBnB,GAAE,SAAQA,GAAE,SAAQA,GAAE,MAAKoB,EAAC,GAAEY,KAAE,KAAK,UAAU,UAAU/B,GAAE,QAAQ,YAAYG,EAAC,GAAE,EAAC,aAAYA,IAAE,GAAEH,GAAC,CAAC,GAAEgC,KAAE,CAAC,4BAA4B;AAAE,mBAAK,UAAU,WAASA,GAAE,KAAK,qBAAqB;AAAE,kBAAIC,KAAE,KAAK,UAAU,kBAAgBjC,GAAE,QAAQ,OAAOG,EAAC,IAAEH,GAAE,OAAO,MAAM;AAAU,cAAAiC,OAAIA,KAAEjC,GAAE,OAAO,MAAM;AAAW,kBAAIkC,KAAEJ,GAAE,IAAE,KAAK,UAAU,SAAQK,KAAEL,GAAE,IAAE,KAAK,UAAU,SAAQM,KAAEnC,GAAE,SAAS,EAAC,GAAEiC,IAAE,GAAEC,IAAE,MAAKJ,IAAE,YAAW,OAAM,kBAAiB,UAAS,YAAW,KAAK,UAAU,YAAW,YAAW,KAAK,UAAU,YAAW,UAAS,KAAK,UAAU,UAAS,WAAUE,IAAE,UAASD,GAAE,KAAK,GAAG,EAAC,CAAC;AAAE,cAAAI,GAAE,GAAG,SAAQ,KAAK,eAAe,GAAEA,GAAE,KAAK,EAAC,KAAIjC,KAAE,EAAC,CAAC,GAAE,MAAIgB,MAAGiB,GAAE,KAAK,EAAC,oBAAmB,GAAG,OAAOF,IAAE,GAAG,EAAE,OAAOC,EAAC,GAAE,WAAU,UAAU,OAAOhB,IAAE,OAAO,EAAC,CAAC,GAAEF,GAAE,IAAImB,EAAC;AAAA,YAAC;AAAC,gBAAIC,KAAE;AAAE,aAAC,KAAK,eAAarC,GAAE,QAAQ,WAASA,GAAE,QAAQ,gBAAcqC,KAAErC,GAAE,OAAO,MAAM,WAAW,QAAOA,GAAE,QAAQ,gBAAcqC,KAAErC,GAAE,OAAO,MAAM,WAAW,iBAAiB,QAAO,KAAK,UAAQqC,MAAG,MAAItC,GAAE,OAAO,UAAQ,KAAK,SAAQ,KAAK,aAAa,KAAK,KAAK,OAAO,GAAE,KAAK,aAAa6B,IAAE,EAAC,SAAQ7B,GAAE,SAAQ,SAAQA,GAAE,SAAQ,UAASyB,IAAE,YAAWL,IAAE,cAAaM,IAAE,gBAAeH,IAAE,MAAKvB,GAAE,MAAK,GAAEI,IAAE,YAAW,GAAE,cAAa,KAAK,cAAa,KAAIkC,IAAE,oBAAmB,MAAG,QAAOrC,GAAE,QAAQ,OAAM,CAAC;AAAA,UAAC;AAAC,iBAAM,EAAC,GAAEK,IAAE,UAASI,IAAE,YAAWG,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASb,IAAE;AAAC,cAAIC,KAAE,IAAIqB,GAAE,KAAK,GAAG,EAAE,WAAW,IAAEtB,GAAE,IAAI;AAAE,iBAAOC,GAAE,KAAK,EAAC,OAAM,+BAA8B,IAAGD,GAAE,SAAQ,IAAGA,GAAE,SAAQ,GAAEA,GAAE,MAAK,MAAKA,GAAE,KAAI,CAAC,GAAEC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,KAAK,GAAEC,KAAE,IAAIkC,GAAE,KAAK,GAAG,GAAEhC,KAAEW,GAAE,SAAS,GAAEV,KAAEJ,GAAE,OAAO,YAAY,UAAU,OAAO;AAAM,cAAGA,GAAE,OAAO,YAAY,UAAU,OAAO,aAAa,CAAAC,GAAE,eAAe,EAAC,OAAMJ,IAAE,QAAOA,IAAE,OAAMO,IAAE,WAAU,UAAU,OAAOJ,GAAE,QAAQ,IAAI,EAAE,OAAOG,EAAC,EAAC,CAAC,GAAEL,KAAE,eAAe,OAAOE,GAAE,QAAQ,IAAI,EAAE,OAAOG,IAAE,GAAG;AAAA,eAAM;AAAC,gBAAIG,KAAEN,GAAE,OAAO,YAAY,UAAU,OAAO,YAAWO,KAAEP,GAAE,OAAO,YAAY,UAAU,OAAO;AAAY,gBAAG,WAASM,MAAG,WAASC,IAAE;AAAC,kBAAIF,KAAEL,GAAE,QAAQ,IAAI,MAAM,MAAMI,EAAC,EAAE,OAAQ,SAASR,IAAE;AAAC,qBAAK,KAAKD,GAAE,UAAQC,GAAE,QAAM,IAAEI,GAAE,OAAO,YAAY,UAAU,OAAO,cAAaL,GAAE,UAAQC,GAAE,SAAO,IAAEI,GAAE,OAAO,YAAY,UAAU,OAAO,YAAY;AAAA,cAAC,CAAE;AAAE,cAAAJ,GAAE,IAAIS,EAAC;AAAA,YAAC,OAAK;AAAC,kBAAII,KAAET,GAAE,QAAQ,IAAI,MAAM,MAAMI,EAAC,EAAE,OAAQ,SAASR,IAAE;AAAC,qBAAK,KAAKD,GAAE,UAAQW,KAAE,IAAEN,GAAE,OAAO,YAAY,UAAU,OAAO,cAAaL,GAAE,UAAQY,KAAE,IAAEP,GAAE,OAAO,YAAY,UAAU,OAAO,YAAY,GAAE,KAAK,KAAKM,IAAEC,EAAC;AAAA,cAAC,CAAE;AAAE,cAAAX,GAAE,IAAIa,EAAC;AAAA,YAAC;AAAA,UAAC;AAAC,iBAAOX;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAOD,GAAE,QAAM,MAAI,SAASC,GAAE,OAAO,YAAY,UAAU,OAAO,MAAK,EAAE,KAAG,OAAKD,GAAE,OAAO,SAAO,KAAG,KAAK;AAAA,QAAM,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,SAASD,GAAE,OAAO,aAAa,KAAK,GAAE,EAAE,IAAE,GAAEE,KAAE,KAAK,UAAU,SAAQC,KAAE,KAAK;AAAE,UAAAD,MAAGA,GAAEC,GAAE,QAAQ,YAAYF,EAAC,GAAE,EAAC,GAAEE,IAAE,aAAYF,GAAC,CAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEK;AAAA,MAAC,EAAE;AAAl6xT,UAAo6xTgF,MAAG,SAAStF,IAAE;AAAC,QAAAY,GAAET,IAAE0E,GAAE;AAAE,YAAI5E,KAAEO,GAAEL,EAAC;AAAE,iBAASA,KAAG;AAAC,iBAAOD,GAAE,MAAKC,EAAC,GAAEF,GAAE,MAAM,MAAK,SAAS;AAAA,QAAC;AAAC,eAAOI,GAAEF,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,IAAImB,GAAE,KAAK,GAAG;AAAE,eAAK,kBAAgB,KAAK,EAAE,OAAO,YAAY,UAAS,KAAK,SAAOtB,IAAE,KAAK,mBAAiBE,GAAE,QAAQ,kBAAiB,KAAK,iBAAeA,GAAE,QAAQ,gBAAe,KAAK,WAAW,cAAcF,EAAC;AAAE,mBAAQK,KAAEF,GAAE,MAAM,EAAC,OAAM,oDAAmD,CAAC,GAAEG,KAAE,GAAEA,KAAEN,GAAE,QAAOM,MAAI;AAAC,gBAAIE,IAAEC,IAAEE,IAAEC,IAAEF,KAAE,QAAOI,KAAE,QAAOD,KAAEX,GAAE,QAAQ,cAAYD,GAAEK,EAAC,IAAEA,IAAEU,KAAE,KAAK,WAAW,cAAcH,EAAC,EAAE,kBAAiBI,KAAEd,GAAE,MAAM,EAAC,OAAM,qBAAoB,YAAWgB,GAAE,aAAajB,GAAE,QAAQ,YAAYW,EAAC,CAAC,GAAE,KAAIP,KAAE,GAAE,kBAAiBO,GAAC,CAAC;AAAE,iBAAK,IAAI,OAAO,0BAA0BI,IAAEJ,EAAC,GAAEb,GAAEM,EAAC,EAAE,SAAO,MAAI,KAAK,WAAS,KAAK,WAAS;AAAG,gBAAIF,KAAE,GAAEc,KAAE,GAAEX,KAAE;AAAE,iBAAK,OAAO,SAAO,MAAI,KAAK,aAAWL,GAAE,QAAQ,sBAAsBW,EAAC,EAAE,CAAC,GAAEN,KAAEM;AAAG,gBAAIO,KAAE,KAAK,WAAW,iBAAiB;AAAE,YAAAN,KAAEM,GAAE,GAAER,KAAEQ,GAAE,OAAMV,KAAEU,GAAE,GAAEF,KAAEE,GAAE,UAAShB,KAAEgB,GAAE,WAAUZ,KAAEY,GAAE,WAAUX,KAAEW,GAAE,WAAUT,KAAES,GAAE;AAAM,qBAAQC,KAAElB,GAAE,MAAM,EAAC,OAAM,yBAAwB,kBAAiBU,GAAC,CAAC,GAAEU,KAAEpB,GAAE,MAAM,EAAC,OAAM,oCAAmC,CAAC,GAAEqB,KAAE,GAAEA,KAAEtB,GAAE,QAAQ,YAAWsB,MAAI;AAAC,kBAAIC,KAAE,KAAK,WAAW,eAAenB,IAAEkB,IAAEX,EAAC,GAAEa,KAAE,KAAK,iBAAiBpB,EAAC,EAAEkB,EAAC,GAAEG,KAAE,KAAK,eAAerB,EAAC,EAAEkB,EAAC,GAAEI,KAAE,MAAKC,KAAE,MAAKC,KAAE,MAAKC,KAAE,EAAC,GAAErB,IAAE,GAAEI,IAAE,aAAYW,IAAE,UAASR,GAAC,GAAEe,KAAE,KAAK;AAAU,kBAAG9B,GAAE,OAAO,YAAY,IAAI,sBAAoB8B,KAAE,IAAG,WAAS9B,GAAE,OAAO,OAAOI,EAAC,EAAE,KAAKkB,EAAC,EAAE;AAAM,kBAAG,KAAK,cAAa;AAAC,gBAAAM,KAAEhB,KAAEV,KAAE,KAAK;AAAS,oBAAI6B,MAAGxB,KAAEL,KAAE4B,MAAG;AAAE,oBAAG9B,GAAE,OAAO,OAAOI,EAAC,EAAE,KAAKkB,EAAC,EAAE,GAAE;AAAC,sBAAIU,KAAE,KAAK,sBAAsB,EAAC,GAAE5B,IAAE,GAAEkB,IAAE,cAAaM,IAAE,MAAKG,IAAE,WAAU7B,IAAE,WAAUK,IAAE,eAAcW,GAAC,CAAC;AAAE,kBAAAhB,KAAE8B,GAAE,WAAUJ,KAAEI,GAAE;AAAA,gBAAY;AAAC,gBAAAhB,MAAGU,KAAE,KAAK,kBAAkBb,GAAE,EAAC,SAAQ,EAAC,GAAET,IAAE,GAAEkB,IAAE,WAAUX,GAAC,GAAE,WAAUT,IAAE,cAAa0B,IAAE,OAAMlB,IAAE,WAAUH,IAAE,IAAGiB,IAAE,IAAGC,GAAC,GAAEI,EAAC,CAAC,GAAG;AAAA,cAAQ,OAAK;AAAC,gBAAA7B,GAAE,QAAQ,eAAaQ,MAAGR,GAAE,QAAQ,QAAQI,EAAC,EAAEkB,EAAC,IAAEtB,GAAE,QAAQ,QAAM,KAAK,SAAOgB,KAAE,IAAGW,KAAEnB,KAAEQ,KAAE,KAAK;AAAS,oBAAIiB,MAAG3B,KAAEU,KAAEc,MAAG;AAAE,oBAAG9B,GAAE,OAAO,OAAOI,EAAC,EAAE,KAAKkB,EAAC,EAAE,GAAE;AAAC,sBAAIY,KAAE,KAAK,sBAAsB,EAAC,GAAE9B,IAAE,GAAEkB,IAAE,cAAaK,IAAE,MAAKM,IAAE,UAASjB,IAAE,WAAUV,IAAE,eAAcY,GAAC,CAAC;AAAE,kBAAAF,KAAEkB,GAAE,UAASP,KAAEO,GAAE;AAAA,gBAAY;AAAC,gBAAAhC,MAAGwB,KAAE,KAAK,qBAAqBb,GAAE,EAAC,SAAQ,EAAC,GAAET,IAAE,GAAEkB,IAAE,WAAUX,IAAE,mBAAkBN,GAAC,GAAE,UAASW,IAAE,cAAaW,IAAE,OAAMlB,IAAE,WAAUH,GAAC,GAAEuB,EAAC,CAAC,GAAG;AAAA,cAAS;AAAC,kBAAIM,KAAE,KAAK,WAAW,aAAa,EAAC,cAAaT,GAAE,cAAa,cAAaE,IAAE,OAAMF,GAAE,OAAM,OAAMA,GAAE,OAAM,WAAUxB,IAAE,UAASc,GAAC,CAAC;AAAE,cAAAmB,MAAGd,GAAE,IAAIc,EAAC,GAAEvB,KAAEc,GAAE,GAAElB,KAAEkB,GAAE;AAAE,kBAAIU,KAAE,KAAK,WAAW,iBAAiBtC,IAAEM,IAAEkB,IAAEX,EAAC,GAAE0B,KAAErC,GAAE,QAAQ,OAAO,OAAOW,EAAC;AAAE,mBAAK,aAAa,EAAC,WAAUA,IAAE,UAASyB,IAAE,UAASC,IAAE,GAAEf,IAAE,GAAElB,IAAE,GAAEI,IAAE,GAAEI,IAAE,IAAGY,IAAE,IAAGC,IAAE,UAASC,GAAE,UAAS,QAAOA,GAAE,QAAO,aAAYH,IAAE,UAASR,IAAE,QAAOjB,IAAE,WAAUI,IAAE,UAASc,IAAE,cAAaW,IAAE,cAAaC,IAAE,kBAAiBd,IAAE,kBAAiBK,IAAE,gBAAeE,IAAE,eAAc,KAAK,UAAS,MAAK,WAAU,CAAC;AAAA,YAAC;AAAC,YAAAlB,GAAE,IAAIY,EAAC;AAAA,UAAC;AAAC,iBAAOZ;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,SAASL,IAAE;AAAC,cAAIC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,cAAaK,KAAEL,GAAE,cAAaM,KAAEN,GAAE,MAAKQ,KAAER,GAAE,MAAKS,KAAET,GAAE,WAAUW,KAAEX,GAAE,UAASY,KAAEZ,GAAE,WAAUU,KAAEV,GAAE,WAAUc,KAAEd,GAAE,eAAce,KAAE,KAAK,GAAEF,KAAE,CAAC,GAAEG,KAAED,GAAE,OAAO,OAAOd,EAAC,EAAE,KAAKC,EAAC,EAAE,WAAUe,KAAEF,GAAE,OAAO,OAAOd,EAAC,EAAE,KAAKC,EAAC,EAAE,GAAEE,KAAE,MAAM,QAAQa,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA,IAAEC,KAAEH,GAAE,QAAQ,OAAO,IAAK,SAASf,IAAE;AAAC,mBAAO,MAAM,QAAQA,EAAC,IAAEA,GAAE,KAAK,GAAG,IAAEA;AAAA,UAAC,CAAE,EAAE,QAAQI,EAAC,GAAEG,KAAEQ,GAAE,QAAQ,YAAYd,EAAC,EAAE,UAAW,SAASD,IAAE;AAAC,mBAAOA,GAAE,MAAII,MAAGJ,GAAE,SAAS,SAAO;AAAA,UAAC,CAAE;AAAE,iBAAO,KAAK,gBAAcG,KAAEY,GAAE,OAAO,YAAY,IAAI,oBAAkBT,KAAEM,KAAEM,KAAEZ,KAAEG,KAAE,KAAK,WAASG,KAAEM,IAAEX,KAAE,MAAI,CAACQ,GAAE,OAAO,YAAY,IAAI,oBAAkBF,KAAEE,GAAE,QAAQ,YAAYd,EAAC,EAAEM,EAAC,EAAE,UAAU,QAAQS,EAAC,IAAE,OAAKb,MAAGM,KAAEK,GAAE,YAAUD,GAAE,UAAQ,KAAK,WAASD,MAAG,MAAI,SAAS,KAAK,WAAW,WAAU,EAAE,KAAG,MAAI,IAAEH,MAAG,KAAK,WAASI,GAAE,QAAQG,EAAC,KAAGJ,KAAEM,QAAKA,KAAE,MAAI,CAACH,GAAE,QAAQ,gBAAgB,WAASV,KAAEU,GAAE,OAAO,YAAY,IAAI,oBAAkBP,KAAEE,KAAEQ,KAAEV,KAAEG,KAAE,KAAK,WAASD,KAAEQ,KAAGX,KAAE,MAAI,CAACQ,GAAE,OAAO,YAAY,IAAI,oBAAkBF,KAAEE,GAAE,QAAQ,YAAYd,EAAC,EAAEM,EAAC,EAAE,UAAU,QAAQS,EAAC,IAAE,OAAKX,MAAGM,KAAEG,GAAE,WAASD,GAAE,UAAQ,KAAK,WAASH,MAAG,MAAI,SAAS,KAAK,WAAW,UAAS,EAAE,KAAG,MAAI,IAAEC,MAAG,KAAK,WAASE,GAAE,QAAQG,EAAC,KAAGN,KAAEQ,MAAI,EAAC,cAAaf,IAAE,cAAaE,IAAE,WAAUI,IAAE,UAASE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASX,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,WAAUK,KAAEL,GAAE,UAASM,KAAEN,GAAE,cAAaQ,KAAER,GAAE,OAAMS,KAAE,KAAK,GAAEE,KAAEV,GAAE,GAAEW,KAAEX,GAAE,GAAES,KAAET,GAAE,WAAUa,KAAEb,GAAE,mBAAkBc,KAAE,KAAK,OAAOD,EAAC,GAAED,KAAE,KAAK,cAAcH,IAAEE,EAAC,GAAEI,KAAE,KAAK,IAAIH,GAAE,OAAMA,GAAE,GAAG,GAAEI,KAAE,KAAK,IAAIJ,GAAE,OAAMA,GAAE,GAAG;AAAE,qBAAS,KAAK,OAAOF,EAAC,EAAEC,EAAC,KAAG,SAAO,KAAK,OAAOD,EAAC,EAAEC,EAAC,IAAEI,KAAER,MAAGQ,KAAER,KAAEQ,KAAED,IAAEE,KAAET,KAAES,KAAEF;AAAG,cAAIX,KAAE,KAAK,IAAIa,KAAED,EAAC,GAAEE,KAAE,KAAK,WAAW,eAAe,EAAC,cAAaZ,IAAE,UAASD,IAAE,IAAGW,IAAE,IAAGC,IAAE,aAAY,KAAK,aAAY,QAAO,KAAK,gBAAe,WAAUP,IAAE,GAAEA,IAAE,GAAEE,IAAE,GAAEH,GAAC,CAAC;AAAE,cAAGA,GAAE,QAAQ,YAAW;AAAC,gBAAIF,KAAE,KAAK,uBAAuB,EAAC,GAAEL,IAAE,GAAEU,IAAE,WAAUF,IAAE,UAASL,GAAC,CAAC;AAAE,YAAAH,KAAEK,GAAE,GAAED,KAAEC,GAAE;AAAA,UAAY,MAAM,CAAAL,MAAGC;AAAE,iBAAM,EAAC,QAAOe,GAAE,QAAO,UAASA,GAAE,UAAS,WAAUd,IAAE,GAAEF,IAAE,GAAEW,GAAE,QAAM,KAAGA,GAAE,MAAI,IAAEG,KAAEC,IAAE,OAAM,KAAK,WAAW,cAAc,KAAI,MAAKT,IAAEG,IAAEC,IAAEE,EAAC,GAAE,cAAaR,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAOD,KAAE,MAAIA,KAAE,IAAGA,KAAEC,GAAE,QAAQ,cAAYD,KAAEC,GAAE,QAAQ,YAAWD;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE,GAAEG,KAAEH,GAAE,IAAGK,KAAEL,GAAE,IAAGM,KAAEN,GAAE,WAAUQ,KAAER,GAAE,WAAUS,KAAET,GAAE,cAAaW,KAAEX,GAAE,OAAMY,KAAE,KAAK,GAAEF,KAAET,GAAE,WAAUa,KAAEb,GAAE,GAAEc,KAAE,KAAK,mBAAmBJ,KAAER,KAAE,KAAK,cAAc,GAAEU,KAAE,KAAK,mBAAmBF,KAAEN,KAAE,KAAK,cAAc,GAAEW,KAAE,KAAK,cAAcN,IAAEI,EAAC,GAAEG,KAAE,KAAK,IAAIJ,KAAEE,EAAC,GAAEX,KAAE,KAAK,WAAW,YAAY,EAAC,cAAaK,IAAE,WAAUD,IAAE,IAAGO,IAAE,IAAGF,IAAE,aAAY,KAAK,aAAY,QAAO,KAAK,gBAAe,GAAEH,IAAE,WAAUA,IAAE,GAAEI,IAAE,GAAEF,GAAC,CAAC;AAAE,iBAAOA,GAAE,QAAQ,eAAaV,MAAGI,KAAG,EAAC,QAAOF,GAAE,QAAO,UAASA,GAAE,UAAS,UAASa,IAAE,GAAED,GAAE,QAAM,KAAGA,GAAE,MAAI,IAAED,KAAEF,IAAE,OAAM,KAAK,WAAW,cAAc,KAAIF,IAAE,MAAKD,IAAEI,EAAC,GAAE,GAAEZ,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,iBAAM,EAAC,OAAMA,GAAE,QAAQ,iBAAiBF,EAAC,EAAEC,EAAC,GAAE,KAAIC,GAAE,QAAQ,eAAeF,EAAC,EAAEC,EAAC,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEE;AAAA,MAAC,EAAE;AAA1/8T,UAA4/8ToF,MAAG,WAAU;AAAC,iBAASvF,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,IAAEC,GAAE,GAAE,KAAK,UAAQA;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,sBAAqB,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,eAAI,eAAaA,GAAE,OAAO,KAAK,QAAM,eAAaA,GAAE,OAAO,KAAK,KAAKF,EAAC,MAAI,IAAIuB,GAAE,KAAK,QAAQ,KAAIrB,EAAC,EAAE,qBAAqBF,EAAC,GAAE;AAAC,gBAAIG,KAAEF,GAAED,EAAC,EAAE,MAAM;AAAE,YAAAG,GAAEA,GAAE,SAAO,CAAC,IAAEA,GAAEA,GAAE,SAAO,CAAC,IAAE,MAAKF,GAAED,EAAC,IAAEG;AAAA,UAAC;AAAC,iBAAOF;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAED,GAAE,QAAOE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,GAAEQ,KAAER,GAAE,GAAES,KAAET,GAAE,OAAMW,KAAE,KAAK,GAAEC,KAAE,CAAC,GAAEF,KAAE,CAAC;AAAE,cAAG,MAAIF,IAAE;AAAC,gBAAIM,KAAE,KAAK,QAAQ,yBAAuBH,GAAE,OAAO,QAAQ;AAAQ,YAAAA,GAAE,QAAQ,eAAaG,MAAGH,GAAE,QAAQ,QAAQT,EAAC,EAAE,CAAC,IAAES,GAAE,QAAQ,QAAM,KAAK,QAAQ,SAAOA,GAAE,OAAO,QAAQ,UAASC,GAAE,KAAKE,EAAC,GAAEJ,GAAE,KAAKS,GAAE,SAASlB,GAAEK,EAAC,EAAE,CAAC,CAAC,IAAEG,KAAEE,GAAE,OAAO,QAAQ,UAAQ,IAAI,GAAEC,GAAE,KAAKT,KAAEQ,GAAE,OAAO,QAAQ,OAAO,GAAED,GAAE,KAAKS,GAAE,SAASlB,GAAEK,EAAC,EAAEE,KAAE,CAAC,CAAC,IAAEH,KAAEM,GAAE,OAAO,QAAQ,UAAQ,IAAI;AAAA,UAAC,MAAM,CAAAC,GAAE,KAAKT,KAAEQ,GAAE,OAAO,QAAQ,OAAO,GAAED,GAAE,KAAKS,GAAE,SAASlB,GAAEK,EAAC,EAAEE,KAAE,CAAC,CAAC,IAAEH,KAAEM,GAAE,OAAO,QAAQ,UAAQ,IAAI;AAAE,iBAAM,EAAC,GAAEC,IAAE,GAAEF,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASV,IAAE;AAAC,mBAAQC,KAAED,GAAE,cAAaE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,WAAUK,KAAE,KAAK,GAAEC,KAAE,GAAEA,KAAED,GAAE,QAAQ,cAAc,QAAOC,MAAI;AAAC,gBAAIE,KAAEH,GAAE,QAAQ,cAAcC,EAAC;AAAE,aAAC,WAASE,GAAE,QAAM,WAASA,GAAE,SAAOA,GAAE,MAAM,SAAO,KAAG,SAASA,GAAE,WAAU,EAAE,MAAI,SAASL,IAAE,EAAE,MAAI,WAASK,GAAE,QAAM,KAAK,QAAQ,iBAAe,OAAGP,KAAEI,GAAE,QAAQ,cAAcC,EAAC,EAAE,MAAM,CAAC,EAAE,KAAG,WAASE,GAAE,SAAO,KAAK,QAAQ,iBAAe,OAAGN,KAAEG,GAAE,QAAQ,cAAcC,EAAC,EAAE,MAAM,CAAC,EAAE,GAAED,GAAE,OAAO,OAAO,QAAMA,GAAE,QAAQ,cAAcC,EAAC,EAAE,MAAM,CAAC,MAAIL,KAAEI,GAAE,QAAQ,cAAcC,EAAC,EAAE,MAAM,CAAC,EAAE;AAAA,UAAI;AAAC,iBAAM,EAAC,cAAaL,IAAE,cAAaC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASF,IAAE;AAAC,cAAIC,IAAEC,IAAEC,IAAEE,KAAEL,GAAE,GAAEM,KAAEN,GAAE,WAAUQ,KAAER,GAAE,QAAOS,KAAET,GAAE,OAAMW,KAAEX,GAAE,eAAcY,KAAEZ,GAAE,mBAAkBU,KAAE,KAAK,GAAEI,KAAEJ,GAAE,OAAO,MAAM,WAAS,CAACA,GAAE,QAAQ,eAAaA,GAAE,OAAO,MAAM,WAASA,GAAE,QAAQ,gBAAc,CAAC,KAAK,EAAE,OAAO,MAAM,gBAAc,WAAS,UAAQT,KAAE,KAAK,EAAE,OAAO,OAAOK,EAAC,MAAI,WAASL,KAAE,SAAOA,GAAE,SAAO,cAAY,UAAQC,KAAE,KAAK,EAAE,OAAO,OAAOI,EAAC,MAAI,WAASJ,KAAE,SAAOA,GAAE;AAAO,cAAG,YAAU,UAAQC,KAAEK,GAAEH,EAAC,MAAI,WAASF,KAAE,SAAOA,GAAE,CAAC,GAAG,CAAAM,MAAGE,KAAEG,MAAGT,KAAE,IAAE,KAAK,QAAQ,YAAYA,KAAE,CAAC,EAAE,CAAC,IAAE,KAAK,QAAQ,SAAOG,GAAEH,EAAC,EAAE,CAAC,IAAE,KAAK,QAAQ,OAAOO,EAAC,IAAE,KAAG,KAAK,QAAQ,aAAWJ,GAAEH,EAAC,EAAE,CAAC,IAAE,KAAK,QAAQ,OAAOO,EAAC,IAAE;AAAA,mBAAWE,MAAGT,KAAE,KAAG,WAASG,GAAEH,EAAC,EAAE,CAAC;AAAE,qBAAQU,KAAEV,KAAE,GAAEU,MAAG,GAAEA,KAAI,KAAG,SAAOP,GAAEO,EAAC,EAAE,CAAC,KAAG,WAASP,GAAEO,EAAC,EAAE,CAAC,GAAE;AAAC,cAAAN,KAAEE,KAAE,KAAK,QAAQ,YAAYI,EAAC,EAAE,CAAC;AAAE;AAAA,YAAK;AAAA;AAAC,iBAAM,EAAC,OAAMN,IAAE,eAAcE,GAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEX;AAAA,MAAC,EAAE;AAAjyhU,UAAmyhUwF,MAAG,SAASxF,IAAE;AAAC,iBAAQC,IAAEC,IAAEC,IAAEE,IAAEC,KAAE,SAASN,IAAE;AAAC,mBAAQC,KAAE,CAAC,GAAEC,KAAEF,GAAE,CAAC,GAAEG,KAAEH,GAAE,CAAC,GAAEK,KAAEJ,GAAE,CAAC,IAAEwF,IAAGvF,IAAEC,EAAC,GAAEG,KAAE,GAAEE,KAAER,GAAE,SAAO,GAAEM,KAAEE,IAAEF,KAAI,CAAAJ,KAAEC,IAAEA,KAAEH,GAAEM,KAAE,CAAC,GAAEL,GAAEK,EAAC,IAAE,OAAID,MAAGA,KAAEoF,IAAGvF,IAAEC,EAAC;AAAI,iBAAOF,GAAEK,EAAC,IAAED,IAAEJ;AAAA,QAAC,EAAED,EAAC,GAAEQ,KAAER,GAAE,SAAO,GAAES,KAAE,CAAC,GAAEE,KAAE,GAAEA,KAAEH,IAAEG,KAAI,CAAAR,KAAEsF,IAAGzF,GAAEW,EAAC,GAAEX,GAAEW,KAAE,CAAC,CAAC,GAAE,KAAK,IAAIR,EAAC,IAAE,OAAKG,GAAEK,EAAC,IAAEL,GAAEK,KAAE,CAAC,IAAE,KAAGN,MAAGJ,KAAEK,GAAEK,EAAC,IAAER,MAAGF,MAAGC,KAAEI,GAAEK,KAAE,CAAC,IAAER,MAAGD,MAAG,MAAIG,KAAE,IAAEF,KAAE,KAAK,KAAKE,EAAC,GAAEC,GAAEK,EAAC,IAAEN,KAAEJ,IAAEK,GAAEK,KAAE,CAAC,IAAEN,KAAEH;AAAG,iBAAQU,KAAE,GAAEA,MAAGJ,IAAEI,KAAI,CAAAP,MAAGL,GAAE,KAAK,IAAIQ,IAAEI,KAAE,CAAC,CAAC,EAAE,CAAC,IAAEZ,GAAE,KAAK,IAAI,GAAEY,KAAE,CAAC,CAAC,EAAE,CAAC,MAAI,KAAG,IAAEN,GAAEM,EAAC,IAAEN,GAAEM,EAAC,KAAIH,GAAE,KAAK,CAACJ,MAAG,GAAEC,GAAEM,EAAC,IAAEP,MAAG,CAAC,CAAC;AAAE,eAAOI;AAAA,MAAC;AAA/tiU,UAAiuiUiF,MAAG,SAAS1F,IAAE;AAAC,YAAIC,KAAEuF,IAAGxF,EAAC,GAAEE,KAAEF,GAAE,CAAC,GAAEG,KAAEH,GAAE,CAAC,GAAEK,KAAE,CAAC,GAAEC,KAAEL,GAAE,CAAC,GAAEO,KAAEP,GAAE,CAAC;AAAE,QAAAI,GAAE,KAAKF,IAAE,CAACA,GAAE,CAAC,IAAEK,GAAE,CAAC,GAAEL,GAAE,CAAC,IAAEK,GAAE,CAAC,GAAEN,GAAE,CAAC,IAAEI,GAAE,CAAC,GAAEJ,GAAE,CAAC,IAAEI,GAAE,CAAC,GAAEJ,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,CAAC;AAAE,iBAAQO,KAAE,GAAEE,KAAEV,GAAE,QAAOQ,KAAEE,IAAEF,MAAI;AAAC,cAAIG,KAAEZ,GAAES,EAAC,GAAEC,KAAET,GAAEQ,EAAC;AAAE,UAAAJ,GAAE,KAAK,CAACO,GAAE,CAAC,IAAEF,GAAE,CAAC,GAAEE,GAAE,CAAC,IAAEF,GAAE,CAAC,GAAEE,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,CAAC;AAAA,QAAC;AAAC,eAAOP;AAAA,MAAC;AAA77iU,UAA+7iUsF,MAAG,SAAS3F,IAAEC,IAAEC,IAAE;AAAC,YAAIC,KAAEH,GAAE,MAAMC,IAAEC,EAAC;AAAE,YAAGD,IAAE;AAAC,cAAGC,KAAED,KAAE,KAAGE,GAAE,CAAC,EAAE,SAAO,GAAE;AAAC,gBAAIE,KAAEF,GAAE,CAAC,EAAE;AAAO,YAAAA,GAAE,CAAC,IAAE,CAAC,IAAEA,GAAE,CAAC,EAAEE,KAAE,CAAC,IAAEF,GAAE,CAAC,EAAEE,KAAE,CAAC,GAAE,IAAEF,GAAE,CAAC,EAAEE,KAAE,CAAC,IAAEF,GAAE,CAAC,EAAEE,KAAE,CAAC,CAAC,EAAE,OAAOF,GAAE,CAAC,CAAC;AAAA,UAAC;AAAC,UAAAA,GAAE,CAAC,IAAEA,GAAE,CAAC,EAAE,MAAM,EAAE;AAAA,QAAC;AAAC,eAAOA;AAAA,MAAC;AAAE,eAASsF,IAAGzF,IAAEC,IAAE;AAAC,gBAAOA,GAAE,CAAC,IAAED,GAAE,CAAC,MAAIC,GAAE,CAAC,IAAED,GAAE,CAAC;AAAA,MAAE;AAAC,UAAI4F,MAAG,WAAU;AAAC,iBAAS5F,GAAEC,IAAEE,IAAEE,IAAE;AAAC,UAAAH,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,WAASE,IAAE,KAAK,cAAY,EAAE,aAAW,KAAK,EAAE,OAAO,MAAM,QAAM,cAAY,KAAK,EAAE,OAAO,MAAM,SAAOE,IAAE,KAAK,UAAQ,IAAIqC,GAAE,KAAK,GAAG,GAAE,KAAK,cAAY,KAAK,EAAE,QAAQ,SAAO,OAAO,WAAU,KAAK,cAAY,IAAI6C,IAAG,IAAI,GAAE,KAAK,UAAQ,IAAI9C,GAAE,KAAK,GAAG,GAAE,KAAK,cAAY,CAAC,GAAE,KAAK,yBAAuB,GAAE,KAAK,aAAW;AAAA,QAAC;AAAC,eAAOpC,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,IAAEC,KAAE,KAAK,GAAEE,KAAE,IAAIc,GAAE,KAAK,GAAG,GAAEb,KAAEH,GAAE,QAAQ,cAAYL,KAAEK,GAAE,OAAO,MAAM,MAAKK,KAAEH,GAAE,MAAM,EAAC,OAAM,cAAc,OAAOC,IAAE,gCAAgC,EAAC,CAAC,GAAEG,KAAE,IAAIW,GAAE,KAAK,KAAIjB,EAAC;AAAE,eAAK,SAAO,KAAK,SAAS,QAAO,KAAK,SAAO,KAAK,SAAS,QAAO,KAAK,SAAO,KAAK,SAAS,QAAO,KAAK,YAAU,KAAK,SAAS,WAAUN,KAAEY,GAAE,aAAaZ,EAAC,GAAE,KAAK,SAAOY,GAAE,cAAc,KAAK,MAAM,GAAE,KAAK,cAAY,CAAC;AAAE,mBAAQF,KAAE,CAAC,GAAEI,KAAE,GAAEA,KAAEd,GAAE,QAAOc,MAAI;AAAC,YAAAd,KAAE,KAAK,YAAY,mBAAmBc,IAAEd,EAAC;AAAE,gBAAIa,KAAEP,GAAE,QAAQ,cAAYJ,GAAEY,EAAC,IAAEA,IAAEE,KAAE,KAAK,OAAO,SAAO,IAAEH,KAAE;AAAE,iBAAK,oBAAoBb,IAAEc,IAAED,EAAC;AAAE,gBAAII,KAAE,CAAC,GAAEb,KAAE,CAAC,GAAEc,KAAE,CAAC,GAAEX,KAAED,GAAE,QAAQ,gBAAc,KAAK;AAAuB,iBAAK,IAAI,OAAO,0BAA0B,KAAK,UAASO,EAAC,GAAEP,GAAE,QAAQ,cAAYA,GAAE,QAAQ,QAAQ,SAAO,MAAIC,MAAGD,GAAE,QAAQ,QAAQO,EAAC,EAAE,CAAC,IAAEP,GAAE,QAAQ,QAAM,KAAK,SAAQY,GAAE,KAAKX,EAAC;AAAE,gBAAIY,IAAEC,KAAEb,IAAEc,KAAE,QAAOG,KAAEJ,IAAEK,KAAE,KAAK,OAAMC,KAAE,KAAK;AAAM,YAAAD,KAAE,KAAK,YAAY,oBAAoB,EAAC,GAAEX,IAAE,WAAUD,IAAE,QAAOb,IAAE,OAAMyB,IAAE,eAAc,GAAE,mBAAkBT,GAAC,CAAC,EAAE,OAAM,oBAAkBV,GAAE,OAAO,OAAO,SAAO,SAAON,GAAEc,EAAC,EAAE,CAAC,IAAEG,GAAE,KAAK,IAAI,IAAEA,GAAE,KAAKQ,EAAC,GAAEN,KAAEM;AAAE,4BAAchB,OAAIY,KAAEK,KAAE,KAAK,YAAY,oBAAoB,EAAC,GAAEZ,IAAE,WAAUD,IAAE,QAAOV,IAAE,OAAMuB,IAAE,eAAc,GAAE,mBAAkBV,GAAC,CAAC,EAAE,OAAMZ,GAAE,KAAK,SAAOa,GAAE,CAAC,IAAES,KAAE,IAAI;AAAG,gBAAIC,KAAE,KAAK,oBAAoB,EAAC,MAAKlB,IAAE,QAAOT,IAAE,GAAEc,IAAE,WAAUD,IAAE,mBAAkBG,IAAE,OAAMQ,IAAE,OAAMC,IAAE,QAAOC,GAAC,CAAC,GAAEE,KAAE,CAACX,GAAE,CAAC,CAAC,GAAEY,KAAE,CAACzB,GAAE,CAAC,CAAC,GAAE0B,KAAE,EAAC,MAAKrB,IAAE,QAAOT,IAAE,WAAUa,IAAE,mBAAkBG,IAAE,GAAEF,IAAE,GAAEP,IAAE,GAAE,GAAE,IAAGa,IAAE,IAAGD,IAAE,WAAUQ,IAAE,WAAU,CAAC,GAAE,WAAU,CAAC,GAAE,aAAYzB,IAAE,eAAc,GAAE,OAAMgB,IAAE,OAAMD,IAAE,QAAOb,IAAE,gBAAeD,GAAC,GAAE4B,KAAE,KAAK,uBAAuBhB,GAAEA,GAAE,CAAC,GAAEe,EAAC,GAAE,CAAC,GAAE,EAAC,YAAW,gBAAcrB,KAAET,GAAEc,EAAC,EAAE,SAAO,IAAE,QAAO,cAAa,KAAE,CAAC,CAAC;AAAE,gBAAG,gBAAcL,IAAE;AAAC,uBAAQuB,KAAE,KAAK,oBAAoB,EAAC,QAAO7B,IAAE,GAAEW,IAAE,WAAUD,IAAE,OAAMW,IAAE,OAAME,GAAC,CAAC,GAAEO,KAAE,KAAK,uBAAuBlB,GAAEA,GAAE,CAAC,GAAEe,EAAC,GAAE,CAAC,GAAE,EAAC,QAAO3B,IAAE,OAAM,CAACI,EAAC,GAAE,OAAMqB,IAAE,QAAOC,IAAE,IAAGR,IAAE,WAAUU,GAAE,WAAU,WAAUC,IAAE,YAAW7B,GAAEW,EAAC,EAAE,SAAO,GAAE,cAAa,MAAE,CAAC,CAAC,GAAEoB,KAAEH,GAAE,UAAU,SAAO,GAAEI,KAAE,GAAEA,KAAED,IAAEC,KAAI,CAAAJ,GAAE,UAAUI,EAAC,IAAEF,GAAE,UAAUE,KAAED,EAAC,IAAEH,GAAE,UAAUI,EAAC;AAAE,cAAAJ,GAAE,UAAU,OAAOG,EAAC,GAAEH,GAAE,eAAaE,GAAE,eAAaF,GAAE;AAAA,YAAY,MAAM,CAAAA,GAAE,gBAAc;AAAI,iBAAK,aAAa,EAAC,MAAKtB,IAAE,WAAUI,IAAE,GAAEC,IAAE,OAAMiB,GAAC,CAAC,GAAE,KAAK,SAAS,IAAI,KAAK,YAAY,GAAE,KAAK,SAAS,IAAI,KAAK,gBAAgB,GAAErB,GAAE,KAAK,KAAK,QAAQ;AAAA,UAAC;AAAC,cAAG,YAAU,UAAQL,KAAEC,GAAE,OAAO,OAAO,CAAC,MAAI,WAASD,KAAE,SAAOA,GAAE,WAASK,GAAE,KAAM,SAASV,IAAEC,IAAE;AAAC,mBAAO,OAAOD,GAAE,KAAK,aAAa,QAAQ,CAAC,IAAE,OAAOC,GAAE,KAAK,aAAa,QAAQ,CAAC;AAAA,UAAC,CAAE,GAAEK,GAAE,OAAO,MAAM,QAAQ,UAAQ8B,KAAE1B,GAAE,SAAO,GAAE0B,MAAG,GAAEA,KAAI,CAAAzB,GAAE,IAAID,GAAE0B,EAAC,CAAC;AAAA,cAAO,UAAQC,KAAE,GAAEA,KAAE3B,GAAE,QAAO2B,KAAI,CAAA1B,GAAE,IAAID,GAAE2B,EAAC,CAAC;AAAE,iBAAO1B;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASX,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEE,KAAE,IAAIiB,GAAE,KAAK,GAAG;AAAE,eAAK,YAAUnB,GAAE,QAAQ,aAAWA,GAAE,QAAQ,cAAY,SAAOA,GAAE,OAAO,MAAM,gBAAc,IAAE,KAAI,KAAK,cAAY,MAAM,QAAQA,GAAE,OAAO,OAAO,KAAK,IAAEA,GAAE,OAAO,OAAO,MAAMD,EAAC,IAAEC,GAAE,OAAO,OAAO;AAAM,cAAIG,KAAE;AAAE,eAAK,OAAO,SAAO,MAAI,KAAK,aAAWH,GAAE,QAAQ,sBAAsBD,EAAC,GAAEI,KAAEJ,KAAG,KAAK,aAAWC,GAAE,OAAO,MAAM,KAAK,UAAU,KAAGA,GAAE,OAAO,MAAM,KAAK,UAAU,EAAE,UAAS,KAAK,QAAMA,GAAE,QAAQ,aAAW,KAAK,UAAUG,EAAC,KAAG,KAAK,aAAWH,GAAE,QAAQ,aAAW,MAAI,KAAK,aAAW,IAAE,KAAK,UAAUG,EAAC,IAAE,IAAG,KAAK,cAAY,KAAK,QAAO,KAAK,QAAMH,GAAE,QAAQ,cAAY,UAAQA,GAAE,OAAO,YAAY,KAAK,YAAU,KAAK,cAAYA,GAAE,QAAQ,aAAY,KAAK,yBAAuB,KAAK,YAAU,GAAE,KAAK,WAASE,GAAE,MAAM,EAAC,OAAM,qBAAoB,QAAO,WAASF,GAAE,OAAO,OAAOD,EAAC,EAAE,SAAOC,GAAE,OAAO,OAAOD,EAAC,EAAE,SAAOA,IAAE,YAAWiB,GAAE,aAAahB,GAAE,QAAQ,YAAYD,EAAC,CAAC,EAAC,CAAC,GAAE,KAAK,eAAaG,GAAE,MAAM,EAAC,OAAM,kCAAiC,kBAAiBH,GAAC,CAAC,GAAE,KAAK,mBAAiBG,GAAE,MAAM,EAAC,OAAM,yBAAwB,kBAAiBH,GAAC,CAAC;AAAE,cAAIM,KAAER,GAAEC,EAAC,EAAE,WAASE,GAAE,QAAQ;AAAW,eAAK,SAAS,KAAK,EAAC,sBAAqBK,IAAE,KAAIP,KAAE,GAAE,kBAAiBC,GAAC,CAAC,GAAE,KAAK,iBAAe;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASF,IAAE;AAAC,cAAIC,IAAEC,IAAEC,IAAEE,IAAEC,KAAEN,GAAE,MAAKQ,KAAER,GAAE,QAAOS,KAAET,GAAE,GAAEW,KAAEX,GAAE,WAAUY,KAAEZ,GAAE,mBAAkBU,KAAEV,GAAE,OAAMc,KAAEd,GAAE,OAAMe,KAAEf,GAAE,QAAOa,KAAE,KAAK,GAAEG,KAAE,IAAIM,GAAE,KAAK,GAAG;AAAE,cAAG,SAAOd,GAAEC,EAAC,EAAE,CAAC,GAAE;AAAC,qBAAQQ,KAAE,GAAEA,KAAET,GAAEC,EAAC,EAAE,QAAOQ,KAAI,KAAG,SAAOT,GAAEC,EAAC,EAAEQ,EAAC,GAAE;AAAC,cAAAP,KAAE,KAAK,YAAUO,IAAEH,KAAE,KAAK,QAAMN,GAAEC,EAAC,EAAEQ,EAAC,IAAE,KAAK,OAAOL,EAAC,GAAEX,KAAEe,GAAE,KAAKN,IAAEI,EAAC,GAAEZ,KAAEc,GAAE,KAAKN,IAAE,KAAK,WAAW;AAAE;AAAA,YAAK;AAAA,UAAC,MAAM,CAAAT,KAAEe,GAAE,KAAKN,IAAEI,EAAC,GAAE,gBAAcR,OAAIL,KAAEe,GAAE,KAAKN,IAAEK,EAAC,IAAEC,GAAE,KAAKN,IAAEI,EAAC,IAAGZ,KAAEc,GAAE,KAAKN,IAAE,KAAK,WAAW,IAAEM,GAAE,KAAKN,IAAEI,EAAC;AAAE,cAAGX,KAAEa,GAAE,KAAK,GAAE,KAAK,KAAK,IAAEA,GAAE,KAAK,GAAE,KAAK,KAAK,GAAEX,KAAEW,GAAE,KAAK,GAAE,KAAK,KAAK,IAAEA,GAAE,KAAK,GAAE,KAAK,KAAK,GAAEH,GAAE,QAAQ,cAAc,SAAO,GAAE;AAAC,gBAAIT,KAAE,KAAK,YAAY,mBAAmB,EAAC,cAAaD,IAAE,cAAaE,IAAE,WAAUM,GAAC,CAAC;AAAE,YAAAR,KAAEC,GAAE,cAAaC,KAAED,GAAE;AAAA,UAAY;AAAC,iBAAM,EAAC,OAAMM,IAAE,OAAMI,IAAE,UAASb,IAAE,UAASC,IAAE,cAAaC,IAAE,cAAaE,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASL,IAAE;AAAC,cAAIC,KAAED,GAAE,MAAKE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,GAAEK,KAAEL,GAAE,OAAMM,KAAE,KAAK,GAAEE,KAAE,IAAIc,GAAE,KAAK,GAAG,GAAEb,KAAE,IAAI+B,GAAE,KAAK,GAAG;AAAE,eAAK,YAAY,KAAKnC,GAAE,KAAK,GAAEC,GAAE,QAAQ,cAAcJ,EAAC,IAAEG,GAAE,OAAMC,GAAE,QAAQ,cAAcJ,EAAC,IAAEG,GAAE;AAAM,cAAIM,KAAEL,GAAE,OAAO;AAAmB,cAAGK,GAAE,QAAM,KAAG,gBAAcV,IAAE;AAAC,gBAAIW,KAAEN,GAAE,QAAQ,cAAcJ,EAAC,EAAEI,GAAE,QAAQ,cAAcJ,EAAC,EAAE,SAAOS,GAAE,QAAM,CAAC,GAAED,KAAEF,GAAE,SAASI,IAAE,GAAEN,GAAE,QAAQ,WAAUA,GAAE,QAAQ,YAAW,CAAC;AAAE,YAAAA,GAAE,QAAQ,IAAI,eAAe,YAAYI,GAAE,IAAI;AAAE,gBAAII,KAAEN,GAAE,SAAS,GAAE,GAAEI,IAAEN,GAAE,QAAQ,YAAW,CAAC;AAAE,YAAAA,GAAE,QAAQ,IAAI,kBAAkB,YAAYQ,GAAE,IAAI;AAAA,UAAC;AAAC,eAAK,eAAaR,GAAE,QAAQ,gBAAgB,KAAK,EAAC,IAAG,KAAK,aAAa,MAAK,OAAMJ,GAAC,CAAC;AAAE,cAAIW,KAAE,EAAC,GAAEV,IAAE,WAAUD,IAAE,gBAAeC,IAAE,cAAaG,GAAE,OAAO,MAAM,WAAW,OAAM,iBAAgBA,GAAE,OAAO,MAAM,WAAW,iBAAiB,OAAM,WAAU,cAAc,OAAOL,EAAC,EAAC;AAAE,cAAG,WAASA,GAAE,UAAQe,KAAEP,GAAE,SAAS,EAAC,cAAaP,GAAC,CAAC,GAAEe,KAAE,GAAEA,KAAEZ,GAAE,UAAU,QAAOY,MAAI;AAAC,gBAAIb,KAAEI,GAAE,YAAYO,GAAEA,GAAE,CAAC,GAAEF,EAAC,GAAE,CAAC,GAAE,EAAC,UAASR,GAAE,cAAa,QAAOA,GAAE,UAAUY,EAAC,GAAE,QAAO,QAAO,aAAY,GAAE,eAAc,MAAK,MAAKD,GAAC,CAAC,CAAC;AAAE,iBAAK,SAAS,IAAIZ,EAAC;AAAA,UAAC;AAAC,cAAGE,GAAE,OAAO,OAAO,QAAM,CAAC,KAAK,aAAY;AAAC,gBAAIY,KAAE;AAAK,gBAAG,WAASjB,GAAE,CAAAiB,KAAET,GAAE,SAAS,EAAC,cAAaP,IAAE,GAAEC,GAAC,CAAC;AAAA,qBAAU,YAAUG,GAAE,OAAO,OAAO,KAAK,KAAK,CAAAY,KAAEZ,GAAE,QAAQ,OAAO,OAAOJ,EAAC;AAAA,iBAAM;AAAC,kBAAIK,KAAED,GAAE,OAAO;AAAK,cAAAA,GAAE,OAAO,OAAKA,GAAE,OAAO,OAAO,MAAKY,KAAET,GAAE,SAAS,EAAC,cAAaP,IAAE,GAAEC,GAAC,CAAC,GAAEG,GAAE,OAAO,OAAKC;AAAA,YAAC;AAAC,qBAAQY,KAAE,GAAEA,KAAEd,GAAE,UAAU,QAAOc,MAAI;AAAC,kBAAIC,KAAEF;AAAE,8BAAcjB,OAAImB,KAAEX,GAAE,SAAS,EAAC,cAAaP,GAAC,CAAC;AAAG,kBAAImB,KAAEN,GAAEA,GAAE,CAAC,GAAEF,EAAC,GAAE,CAAC,GAAE,EAAC,UAASR,GAAE,cAAa,QAAOA,GAAE,UAAUc,EAAC,GAAE,QAAOD,IAAE,aAAY,KAAK,aAAY,eAAcZ,GAAE,OAAO,OAAO,SAAQ,MAAK,gBAAcL,KAAEmB,KAAE,OAAM,CAAC,GAAEG,KAAEf,GAAE,YAAYa,EAAC;AAAE,kBAAG,KAAK,SAAS,IAAIE,EAAC,GAAEA,GAAE,KAAK,aAAY,SAAS,GAAEZ,GAAE,QAAM,KAAG,gBAAcV,IAAE;AAAC,oBAAIuB,KAAEhB,GAAE,YAAYa,EAAC;AAAE,gBAAAG,GAAE,KAAK,aAAa,oBAAmBb,GAAE,SAAS,GAAEA,GAAE,eAAaa,GAAE,KAAK,aAAa,gBAAeb,GAAE,WAAW,GAAE,KAAK,SAAS,IAAIa,EAAC,GAAEA,GAAE,KAAK,aAAY,oBAAoB,OAAOlB,GAAE,QAAQ,MAAK,GAAG,CAAC,GAAEiB,GAAE,KAAK,aAAY,uBAAuB,OAAOjB,GAAE,QAAQ,MAAK,GAAG,CAAC;AAAA,cAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,SAASN,IAAE;AAAC,cAAIC,IAAEC,IAAEC,KAAE,MAAKE,KAAEL,GAAE,MAAKM,KAAEN,GAAE,QAAOQ,KAAER,GAAE,YAAWS,KAAET,GAAE,WAAUW,KAAEX,GAAE,mBAAkBY,KAAEZ,GAAE,GAAEU,KAAEV,GAAE,GAAEc,KAAEd,GAAE,GAAEe,KAAEf,GAAE,IAAGa,KAAEb,GAAE,IAAGgB,KAAEhB,GAAE,WAAUiB,KAAEjB,GAAE,WAAUI,KAAEJ,GAAE,WAAUkB,KAAElB,GAAE,aAAYO,KAAEP,GAAE,eAAcoB,KAAEpB,GAAE,OAAMqB,KAAErB,GAAE,OAAMuB,KAAEvB,GAAE,QAAOwB,KAAExB,GAAE,cAAayB,KAAEzB,GAAE,gBAAe0B,KAAE,KAAK,GAAEC,KAAE,IAAIL,GAAE,KAAK,GAAG,GAAEM,KAAE,KAAK,QAAOC,KAAEb,GAAE,OAAMc,KAAEd,GAAE,UAASe,KAAEf,GAAE,UAASgB,KAAEhB,GAAE,cAAaiB,KAAEjB,GAAE,cAAakB,KAAEf,GAAE,SAASO,GAAE,QAAQ,QAAQjB,EAAC,CAAC,IAAEiB,GAAE,QAAQ,QAAQjB,EAAC,IAAEiB,GAAE,QAAQ;AAAK,UAAAlB,OAAIA,KAAEkB,GAAE,QAAQ,aAAW,IAAEA,GAAE,QAAQ,aAAW,IAAEA,GAAE,QAAQ;AAAY,cAAIS,KAAE,SAASnC,IAAEC,IAAE;AAAC,mBAAOA,KAAED,KAAE4B,GAAEjB,EAAC,IAAE,KAAGR,GAAE,aAAWH,KAAE4B,GAAEjB,EAAC,IAAE;AAAA,UAAE,GAAEyB,KAAEtB,IAAEuB,KAAEX,GAAE,OAAO,MAAM,WAAS,CAACA,GAAE,QAAQ,eAAaA,GAAE,OAAO,MAAM,WAASA,GAAE,QAAQ,gBAAc,CAAC,KAAK,EAAE,OAAO,MAAM,gBAAc,WAAS,UAAQzB,KAAE,KAAK,EAAE,OAAO,OAAOQ,EAAC,MAAI,WAASR,KAAE,SAAOA,GAAE,SAAO,cAAY,UAAQC,KAAE,KAAK,EAAE,OAAO,OAAOO,EAAC,MAAI,WAASP,KAAE,SAAOA,GAAE,QAAOoC,KAAEZ,GAAE,OAAO,OAAO;AAAM,gBAAM,QAAQY,EAAC,MAAIA,KAAE,MAAM,QAAQpB,EAAC,IAAEoB,GAAEpB,GAAEN,EAAC,CAAC,IAAE0B,GAAE1B,EAAC;AAAG,mBAAQ2B,IAAEC,KAAE,GAAEC,KAAE,GAAEA,KAAEjC,IAAEiC,MAAI;AAAC,gBAAIC,KAAE,WAASpC,GAAEM,EAAC,EAAE6B,KAAE,CAAC,KAAG,SAAOnC,GAAEM,EAAC,EAAE6B,KAAE,CAAC;AAAE,gBAAGf,GAAE,QAAQ,YAAW;AAAC,kBAAIiB,KAAEjB,GAAE,QAAQ,QAAQjB,EAAC,EAAEgC,KAAE,CAAC;AAAE,yBAASf,GAAE,QAAQ,QAAQjB,EAAC,EAAEgC,KAAE,CAAC,MAAIE,KAAEjB,GAAE,QAAQ,QAAQjB,EAAC,EAAED,KAAE,CAAC,IAAGE,MAAGiC,KAAEjB,GAAE,QAAQ,QAAM,KAAK;AAAA,YAAM,MAAM,CAAAhB,MAAG,KAAK;AAAU,gBAAG2B,GAAE,KAAGzB,KAAE,KAAGc,GAAE,QAAQ,gBAAgB,SAAOA,GAAE,OAAO,OAAO,SAAO,GAAE;AAAC,cAAAnB,KAAE,KAAK,YAAY,SAASP,IAAE;AAAC,yBAAQC,KAAED,IAAEC,KAAE,GAAEA,MAAI;AAAC,sBAAG,EAAEyB,GAAE,QAAQ,uBAAuB,SAAS,QAAMR,KAAE,SAAOA,GAAEjB,EAAC,MAAIA,EAAC,IAAE,IAAI,QAAOA;AAAE,kBAAAA;AAAA,gBAAG;AAAC,uBAAO;AAAA,cAAC,EAAEW,KAAE,CAAC,CAAC,EAAE6B,KAAE,CAAC;AAAA,YAAC,MAAM,CAAAlC,KAAE,KAAK;AAAA,gBAAW,CAAAA,KAAE,KAAK;AAAM,YAAAmC,KAAE5B,KAAEqB,GAAED,IAAE3B,EAAC,KAAGO,KAAEqB,GAAE7B,GAAEM,EAAC,EAAE6B,KAAE,CAAC,GAAElC,EAAC,GAAE,gBAAcF,OAAI+B,KAAED,GAAEV,GAAEb,EAAC,EAAE6B,KAAE,CAAC,GAAElC,EAAC,KAAIa,GAAE,KAAKV,EAAC,GAAE,CAACgC,MAAG,aAAWhB,GAAE,OAAO,OAAO,SAAO,oBAAkBA,GAAE,OAAO,OAAO,SAAOL,GAAE,KAAKP,EAAC,GAAES,GAAE,KAAKa,EAAC,MAAIf,GAAE,KAAK,IAAI,GAAEE,GAAE,KAAK,IAAI;AAAG,gBAAIqB,KAAE,KAAK,YAAY,gBAAgB,EAAC,QAAOtC,IAAE,GAAEI,IAAE,GAAEI,IAAE,WAAUL,IAAE,GAAEG,IAAE,GAAE6B,IAAE,OAAMZ,GAAC,CAAC,GAAEgE,KAAE,KAAK,aAAa,EAAC,MAAKxF,IAAE,QAAOC,IAAE,GAAEM,IAAE,WAAUH,IAAE,GAAEgC,IAAE,GAAE/B,IAAE,GAAEI,IAAE,IAAGsB,IAAE,OAAMhB,IAAE,OAAMC,IAAE,QAAOE,IAAE,IAAGR,IAAE,IAAGF,IAAE,WAAU2B,IAAE,eAAcD,IAAE,UAAST,IAAE,UAASC,IAAE,WAAUd,IAAE,WAAUb,IAAE,OAAMkC,IAAE,cAAad,GAAC,CAAC;AAAE,YAAApB,KAAEyF,GAAE,WAAU5E,KAAE4E,GAAE,WAAU9E,KAAE8E,GAAE,IAAGhF,KAAEgF,GAAE,IAAGrD,KAAEqD,GAAE,WAAUtD,KAAEsD,GAAE,eAAc9D,KAAE8D,GAAE,UAAS/D,KAAE+D,GAAE,UAAS,CAAC,KAAK,kBAAgB,oBAAkBvD,MAAG,gBAAcjC,OAAI2B,MAAGL,GAAE,KAAKjB,IAAE,KAAK,KAAK,GAAEuB,MAAGN,GAAE,KAAKjB,IAAE,KAAK,KAAK,IAAG,KAAK,qBAAqBJ,IAAEsC,IAAEhC,IAAE6B,IAAEhC,EAAC,GAAE,KAAK,wBAAwB,EAAC,MAAKJ,IAAE,WAAUuC,IAAE,GAAEhC,IAAE,GAAE6B,IAAE,WAAUhC,IAAE,cAAae,GAAC,CAAC;AAAA,UAAC;AAAC,iBAAM,EAAC,OAAMH,IAAE,OAAMD,IAAE,cAAaa,IAAE,WAAU7B,IAAE,cAAa4B,IAAE,WAAUf,IAAE,UAASa,IAAE,UAASC,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAAS/B,IAAE;AAAC,cAAIC,KAAED,GAAE,MAAKE,KAAEF,GAAE,WAAUG,KAAEH,GAAE,cAAaK,KAAEL,GAAE,GAAEM,KAAEN,GAAE,GAAEQ,KAAER,GAAE,WAAUS,KAAE,KAAK,GAAEE,KAAE,IAAIgC,GAAE,KAAK,GAAG;AAAE,cAAG,KAAK,YAAY,MAAK,QAAQ,KAAK,KAAK,UAASrC,IAAE,EAAC,WAAUE,IAAE,WAAUN,IAAE,QAAO,KAAK,QAAO,UAAS,KAAK,aAAY,CAAC;AAAA,eAAM;AAAC,YAAAO,GAAE,QAAQ,OAAOJ,EAAC,EAAE,SAAO,KAAG,KAAK,aAAa,KAAK,UAAU,IAAI,2BAA2B;AAAE,gBAAIO,KAAE,KAAK,QAAQ,iBAAiBV,IAAEM,IAAEF,KAAE,CAAC;AAAE,qBAAOM,MAAG,KAAK,aAAa,IAAIA,EAAC;AAAA,UAAC;AAAC,cAAIF,KAAEC,GAAE,cAAc,EAAC,MAAKV,IAAE,cAAaE,IAAE,KAAID,IAAE,GAAEM,IAAE,GAAEF,KAAE,EAAC,CAAC;AAAE,mBAAOI,MAAG,KAAK,iBAAiB,IAAIA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASV,IAAE;AAAC,cAAIC,KAAED,GAAE,MAAKE,KAAEF,GAAE,QAAOG,KAAEH,GAAE;AAAE,UAAAA,GAAE;AAAU,cAAIK,IAAEC,KAAEN,GAAE,GAAEQ,KAAER,GAAE,GAAES,KAAET,GAAE,GAAEW,KAAEX,GAAE,OAAMY,KAAEZ,GAAE,OAAMU,KAAEV,GAAE,IAAGc,KAAEd,GAAE,QAAOe,KAAEf,GAAE,IAAGa,KAAEb,GAAE,IAAGgB,KAAEhB,GAAE,WAAUiB,KAAEjB,GAAE,eAAcI,KAAEJ,GAAE,UAASkB,KAAElB,GAAE,UAASO,KAAEP,GAAE,WAAUmB,KAAEnB,GAAE,WAAUoB,KAAEpB,GAAE,OAAMqB,KAAErB,GAAE,cAAauB,KAAE,IAAID,GAAE,KAAK,GAAG,GAAEE,KAAE,KAAK,aAAYC,KAAE,gBAAcxB,IAAEyB,KAAE,gBAAczB,MAAGoB;AAAE,kBAAOD,IAAE;AAAA,YAAC,KAAI;AAAgB,kBAAIO,KAAEN,KAAET,KAAEE;AAAE,sBAAOE,IAAE;AAAA,gBAAC,KAAK;AAAE,sBAAG,SAAOW,GAAErB,KAAE,CAAC,EAAE;AAAM,kBAAAU,KAAE;AAAA,gBAAE,KAAK;AAAE,sBAAG,EAAES,KAAEd,GAAE,WAAST,GAAEC,EAAC,EAAE,SAAOG,OAAIJ,GAAEC,EAAC,EAAE,SAAO,GAAG;AAAA,gBAAM,KAAK;AAAE,sBAAIyB,KAAEP,KAAEV,KAAEA,GAAE,MAAM,EAAE,QAAQ,GAAEkB,KAAER,KAAEM,KAAEA,GAAE,MAAM,EAAE,QAAQ,GAAEG,MAAGzB,KAAEwB,IAAED,GAAE,IAAK,SAAS5B,IAAEC,IAAE;AAAC,2BAAM,CAACD,IAAEK,GAAEJ,EAAC,CAAC;AAAA,kBAAC,CAAE,EAAE,OAAQ,SAASD,IAAE;AAAC,2BAAO,SAAOA,GAAE,CAAC;AAAA,kBAAC,CAAE,IAAG+B,KAAED,GAAE,SAAO,IAAE4D,IAAG5D,EAAC,IAAEA,IAAEE,KAAE,CAAC;AAAE,kBAAAP,OAAIC,KAAEP,KAAEW,KAAEE,KAAEb,GAAE,QAAQ;AAAG,sBAAIc,KAAE,GAAEC,KAAE;AAAE,sBAAG,SAASlC,IAAEC,IAAE;AAAC,6BAAQC,KAAE,SAASF,IAAE;AAAC,0BAAIC,KAAE,CAAC,GAAEC,KAAE;AAAE,6BAAOF,GAAE,QAAS,SAASA,IAAE;AAAC,iCAAOA,KAAEE,OAAIA,KAAE,MAAID,GAAE,KAAKC,EAAC,GAAEA,KAAE;AAAA,sBAAE,CAAE,GAAEA,KAAE,KAAGD,GAAE,KAAKC,EAAC,GAAED;AAAA,oBAAC,EAAED,EAAC,GAAEG,KAAE,CAAC,GAAEE,KAAE,GAAEC,KAAE,GAAED,KAAEH,GAAE,QAAOI,MAAGJ,GAAEG,IAAG,EAAE,CAAAF,GAAEE,EAAC,IAAEsF,IAAG1F,IAAEK,IAAEA,KAAEJ,GAAEG,EAAC,CAAC;AAAE,2BAAOF;AAAA,kBAAC,EAAE0B,IAAEE,EAAC,EAAE,QAAS,SAAS/B,IAAE;AAAC,oBAAAiC;AAAI,wBAAIhC,KAAE,SAASD,IAAE;AAAC,+BAAQC,KAAE,IAAGC,KAAE,GAAEA,KAAEF,GAAE,QAAOE,MAAI;AAAC,4BAAIC,KAAEH,GAAEE,EAAC,GAAEG,KAAEF,GAAE;AAAO,wBAAAE,KAAE,KAAGJ,MAAG,IAAI,OAAOE,GAAE,CAAC,GAAE,IAAI,EAAE,OAAOA,GAAE,CAAC,CAAC,GAAEF,MAAG,KAAK,OAAOE,GAAE,CAAC,GAAE,IAAI,EAAE,OAAOA,GAAE,CAAC,CAAC,GAAEF,MAAG,KAAK,OAAOE,GAAE,CAAC,GAAE,IAAI,EAAE,OAAOA,GAAE,CAAC,CAAC,KAAGE,KAAE,MAAIJ,MAAG,IAAI,OAAOE,GAAE,CAAC,GAAE,IAAI,EAAE,OAAOA,GAAE,CAAC,CAAC,GAAEF,MAAG,KAAK,OAAOE,GAAE,CAAC,GAAE,IAAI,EAAE,OAAOA,GAAE,CAAC,CAAC;AAAA,sBAAE;AAAC,6BAAOF;AAAA,oBAAC,EAAED,EAAC,GAAEE,KAAEgC,IAAE/B,MAAG+B,MAAGlC,GAAE,UAAQ;AAAE,oBAAA0B,KAAEtB,KAAEmB,GAAE,KAAKO,GAAE5B,EAAC,EAAE,CAAC,GAAE4B,GAAE5B,EAAC,EAAE,CAAC,CAAC,IAAED,KAAEwB,KAAErB,KAAEmB,GAAE,KAAKS,GAAE9B,EAAC,EAAE,CAAC,GAAE8B,GAAE9B,EAAC,EAAE,CAAC,CAAC,IAAEqB,GAAE,KAAKO,GAAE5B,EAAC,EAAE,CAAC,GAAE4B,GAAE5B,EAAC,EAAE,CAAC,CAAC,IAAED,KAAEsB,GAAE,KAAKS,GAAE7B,EAAC,EAAE,CAAC,GAAE6B,GAAE7B,EAAC,EAAE,CAAC,CAAC,KAAGC,KAAEmB,GAAE,KAAKO,GAAE5B,EAAC,EAAE,CAAC,GAAE4B,GAAE5B,EAAC,EAAE,CAAC,CAAC,IAAED,IAAEiB,KAAEd,KAAEmB,GAAE,KAAKO,GAAE3B,EAAC,EAAE,CAAC,GAAEqB,EAAC,IAAED,GAAE,KAAKO,GAAE5B,EAAC,EAAE,CAAC,GAAEsB,EAAC,IAAE,KAAIL,GAAE,KAAKD,EAAC,IAAGX,GAAE,KAAKH,EAAC;AAAA,kBAAC,CAAE,GAAEqB,MAAGQ,KAAE,KAAG,CAACP,IAAE;AAAC,wBAAIS,KAAE5B,GAAE,MAAM0B,EAAC,EAAE,QAAQ;AAAE,oBAAA1B,GAAE,OAAO0B,EAAC,GAAEE,GAAE,QAAS,SAASnC,IAAE;AAAC,6BAAOO,GAAE,KAAKP,EAAC;AAAA,oBAAC,CAAE;AAAA,kBAAC;AAAC,kBAAAgB,KAAE;AAAA,cAAC;AAAC;AAAA,YAAM,KAAI;AAAS,kBAAIoB,KAAE,QAAK5B,KAAEO;AAAG,kBAAG,SAAOb,GAAEC,EAAC,EAAEG,EAAC,EAAE,CAAAU,KAAE;AAAA,kBAAO,SAAOA,IAAE;AAAA,gBAAC,KAAK;AAAE,sBAAGC,KAAEF,IAAEX,KAAEsB,KAAEH,GAAE,KAAKR,IAAED,GAAER,EAAC,CAAC,IAAEiB,GAAE,KAAKR,IAAEF,EAAC,IAAEU,GAAE,KAAKR,IAAEF,EAAC,GAAEK,KAAEK,GAAE,KAAKR,IAAEF,EAAC,GAAE,SAAOX,GAAEC,EAAC,EAAEG,KAAE,CAAC,GAAE;AAAC,oBAAAC,GAAE,KAAKH,EAAC,GAAEe,GAAE,KAAKD,EAAC;AAAE;AAAA,kBAAK;AAAC,sBAAGF,KAAE,GAAEV,KAAEJ,GAAEC,EAAC,EAAE,SAAO,GAAE;AAAC,wBAAIkC,KAAEd,GAAE,MAAMR,KAAEqB,IAAEvB,IAAEL,KAAE4B,IAAE3B,IAAED,IAAEC,EAAC;AAAE,oBAAAL,MAAGiC,IAAEnB,MAAGmB;AAAE;AAAA,kBAAK;AAAA,gBAAC,KAAK;AAAE,sBAAG,SAAOnC,GAAEC,EAAC,EAAEG,KAAE,CAAC,EAAE,CAAAF,MAAGsB,KAAEH,GAAE,KAAKR,IAAEL,EAAC,IAAEa,GAAE,KAAKR,IAAEF,EAAC,GAAEK,MAAGK,GAAE,KAAKR,IAAES,EAAC,IAAED,GAAE,KAAKN,IAAEO,EAAC,IAAE,KAAIjB,GAAE,KAAKH,EAAC,GAAEe,GAAE,KAAKD,EAAC,GAAEF,KAAE;AAAA,uBAAO;AAAC,wBAAIsB,KAAEf,GAAE,MAAMR,KAAEqB,IAAEvB,IAAEL,KAAE4B,IAAE3B,IAAED,IAAEC,EAAC;AAAE,oBAAAL,MAAGkC,IAAEpB,MAAGoB,IAAEhC,MAAGJ,GAAEC,EAAC,EAAE,SAAO,MAAIuB,OAAItB,MAAGmB,GAAE,MAAMf,IAAEC,IAAED,IAAEC,IAAED,IAAEE,EAAC,IAAEa,GAAE,KAAKf,IAAEE,EAAC,IAAGQ,MAAGK,GAAE,MAAMf,IAAEC,IAAED,IAAEC,IAAED,IAAEgB,EAAC,IAAED,GAAE,KAAKN,IAAEO,EAAC,IAAE,KAAIjB,GAAE,KAAKH,EAAC,GAAEe,GAAE,KAAKD,EAAC,GAAEF,KAAE;AAAA,kBAAG;AAAA,cAAC;AAAC,cAAAD,KAAEP,IAAEK,KAAEJ;AAAE;AAAA,YAAM;AAAQ,kBAAI8B,KAAE,SAASvC,IAAEC,IAAEC,IAAE;AAAC,oBAAIC,KAAE,CAAC;AAAE,wBAAOH,IAAE;AAAA,kBAAC,KAAI;AAAW,oBAAAG,KAAEoB,GAAE,KAAKtB,IAAE,MAAK,GAAG,IAAEsB,GAAE,KAAK,MAAKrB,IAAE,GAAG;AAAE;AAAA,kBAAM,KAAI;AAAW,oBAAAC,KAAEoB,GAAE,KAAK,MAAKrB,IAAE,GAAG,IAAEqB,GAAE,KAAKtB,IAAE,MAAK,GAAG;AAAE;AAAA,kBAAM,KAAI;AAAW,oBAAAE,KAAEoB,GAAE,KAAKtB,IAAEC,EAAC;AAAA,gBAAC;AAAC,uBAAOC;AAAA,cAAC;AAAE,kBAAG,SAAOD,GAAEC,EAAC,EAAEG,EAAC,EAAE,CAAAU,KAAE;AAAA,kBAAO,SAAOA,IAAE;AAAA,gBAAC,KAAK;AAAE,sBAAGC,KAAEF,IAAEX,KAAEsB,KAAEH,GAAE,KAAKR,IAAED,GAAER,EAAC,CAAC,IAAEiB,GAAE,KAAKR,IAAEF,EAAC,IAAEU,GAAE,KAAKR,IAAEF,EAAC,GAAEK,KAAEK,GAAE,KAAKR,IAAEF,EAAC,GAAE,SAAOX,GAAEC,EAAC,EAAEG,KAAE,CAAC,GAAE;AAAC,oBAAAC,GAAE,KAAKH,EAAC,GAAEe,GAAE,KAAKD,EAAC;AAAE;AAAA,kBAAK;AAAC,sBAAGF,KAAE,GAAEV,KAAEJ,GAAEC,EAAC,EAAE,SAAO,GAAE;AAAC,wBAAIqC,KAAED,GAAEnB,IAAEZ,IAAEC,EAAC;AAAE,oBAAAL,MAAGoC,IAAEtB,MAAGsB;AAAE;AAAA,kBAAK;AAAA,gBAAC,KAAK;AAAE,sBAAG,SAAOtC,GAAEC,EAAC,EAAEG,KAAE,CAAC,EAAE,CAAAF,MAAGsB,KAAEH,GAAE,KAAKR,IAAEL,EAAC,IAAEa,GAAE,KAAKR,IAAEF,EAAC,GAAEK,MAAGK,GAAE,KAAKR,IAAES,EAAC,IAAED,GAAE,KAAKN,IAAEO,EAAC,IAAE,KAAIjB,GAAE,KAAKH,EAAC,GAAEe,GAAE,KAAKD,EAAC,GAAEF,KAAE;AAAA,uBAAO;AAAC,wBAAIyB,KAAEF,GAAEnB,IAAEZ,IAAEC,EAAC;AAAE,oBAAAL,MAAGqC,IAAEvB,MAAGuB,IAAEnC,MAAGJ,GAAEC,EAAC,EAAE,SAAO,MAAIuB,OAAItB,MAAGmB,GAAE,KAAKf,IAAEE,EAAC,IAAGQ,MAAGK,GAAE,KAAKf,IAAEgB,EAAC,IAAED,GAAE,KAAKN,IAAEO,EAAC,IAAE,KAAIjB,GAAE,KAAKH,EAAC,GAAEe,GAAE,KAAKD,EAAC,GAAEF,KAAE;AAAA,kBAAG;AAAA,cAAC;AAAC,cAAAD,KAAEP,IAAEK,KAAEJ;AAAA,UAAC;AAAC,iBAAM,EAAC,WAAUF,IAAE,WAAUY,IAAE,IAAGJ,IAAE,IAAGF,IAAE,WAAUG,IAAE,eAAcC,IAAE,UAASb,IAAE,UAASc,GAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASlB,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAG,SAAON,GAAEE,EAAC,EAAEC,EAAC,KAAGG,GAAE,OAAO,QAAQ,sBAAoB,MAAIN,GAAEE,EAAC,EAAE,QAAO;AAAC,gBAAIM,KAAE,KAAK,cAAYF,GAAE,OAAO,QAAQ,cAAY;AAAE,YAAAE,KAAE,MAAIA,KAAE;AAAG,gBAAIC,KAAE,KAAK,QAAQ,iBAAiBR,IAAEI,IAAEF,KAAE,GAAEK,IAAE,IAAE;AAAE,qBAAOC,MAAG,KAAK,aAAa,IAAIA,EAAC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAET;AAAA,MAAC,EAAE;AAAE,aAAO,iBAAe,CAAC,GAAE,OAAO,eAAe,WAAS,2BAAU;AAAC,iBAASA,GAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,eAAK,UAAQJ,IAAE,KAAK,UAAQC,IAAE,KAAK,SAAOG,IAAE,KAAK,QAAMF,IAAE,KAAK,eAAa,WAAU;AAAC,mBAAO,KAAK,IAAI,KAAK,QAAO,KAAK,KAAK;AAAA,UAAC,GAAE,KAAK,iBAAe,SAASH,IAAE;AAAC,gBAAIC,IAAEC,KAAE,CAAC,GAAEC,KAAE,KAAK,SAAQE,KAAE,KAAK,SAAQG,KAAEF,GAAEN,EAAC,IAAE,KAAK,QAAOS,KAAEH,GAAEN,EAAC,IAAE,KAAK;AAAM,gBAAG,KAAK,SAAO,KAAK,OAAO,MAAIC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,GAAE,KAAK,CAACC,IAAEE,IAAEF,KAAEK,IAAEH,KAAEL,GAAEC,EAAC,IAAEO,EAAC,CAAC,GAAEH,MAAGL,GAAEC,EAAC,IAAEO;AAAA,gBAAO,MAAIP,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,GAAE,KAAK,CAACC,IAAEE,IAAEF,KAAEH,GAAEC,EAAC,IAAEQ,IAAEJ,KAAEI,EAAC,CAAC,GAAEN,MAAGH,GAAEC,EAAC,IAAEQ;AAAE,mBAAOP;AAAA,UAAC,GAAE,KAAK,UAAQ,SAASD,IAAE;AAAC,gBAAIC;AAAE,gBAAG,KAAK,SAAO,KAAK,QAAO;AAAC,kBAAIC,KAAEF,KAAE,KAAK,QAAOI,KAAE,KAAK,QAAMF;AAAE,cAAAD,KAAE,IAAIF,GAAE,KAAK,UAAQG,IAAE,KAAK,SAAQE,IAAE,KAAK,MAAM;AAAA,YAAC,OAAK;AAAC,kBAAIC,KAAEL,KAAE,KAAK,OAAMO,KAAE,KAAK,SAAOF;AAAE,cAAAJ,KAAE,IAAIF,GAAE,KAAK,SAAQ,KAAK,UAAQM,IAAE,KAAK,OAAME,EAAC;AAAA,YAAC;AAAC,mBAAON;AAAA,UAAC;AAAA,QAAC;AAAC,iBAASD,GAAEA,IAAEE,IAAEE,IAAEG,IAAEC,IAAE;AAAC,UAAAD,KAAE,WAASA,KAAE,IAAEA,IAAEC,KAAE,WAASA,KAAE,IAAEA;AAAE,cAAIE,KAAET,GAAE,SAASF,IAAEC,IAAE;AAAC,gBAAIC,IAAEC,KAAE,CAAC,GAAEE,KAAEJ,KAAEK,GAAEN,EAAC;AAAE,iBAAIE,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,CAAAC,GAAED,EAAC,IAAEF,GAAEE,EAAC,IAAEG;AAAE,mBAAOF;AAAA,UAAC,EAAEF,IAAEE,KAAEE,EAAC,GAAE,CAAC,GAAE,IAAIL,GAAEQ,IAAEC,IAAEN,IAAEE,EAAC,GAAE,CAAC,CAAC;AAAE,iBAAO,SAASL,IAAE;AAAC,gBAAIC,IAAEC,IAAEC,KAAE,CAAC;AAAE,iBAAIF,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,MAAIC,KAAE,GAAEA,KAAEF,GAAEC,EAAC,EAAE,QAAOC,KAAI,CAAAC,GAAE,KAAKH,GAAEC,EAAC,EAAEC,EAAC,CAAC;AAAE,mBAAOC;AAAA,UAAC,EAAEQ,EAAC;AAAA,QAAC;AAAC,iBAAST,GAAEF,IAAEC,IAAEI,IAAEG,IAAE;AAAC,cAAIC,IAAEE,IAAEC;AAAE,cAAG,MAAIZ,GAAE,OAAO,QAAOS,KAAEJ,GAAE,aAAa,GAAE,SAASL,IAAEC,IAAEC,IAAE;AAAC,gBAAIG;AAAE,gBAAG,MAAIL,GAAE,OAAO,QAAM;AAAG,aAACK,KAAEL,GAAE,MAAM,GAAG,KAAKC,EAAC;AAAE,gBAAIK,KAAEH,GAAEH,IAAEE,EAAC,GAAEM,KAAEL,GAAEE,IAAEH,EAAC;AAAE,mBAAOI,MAAGE;AAAA,UAAC,EAAEP,IAAEU,KAAEX,GAAE,CAAC,GAAES,EAAC,KAAGR,GAAE,KAAKU,EAAC,GAAET,GAAEF,GAAE,MAAM,CAAC,GAAEC,IAAEI,IAAEG,EAAC,MAAII,KAAEP,GAAE,QAAQC,GAAEL,EAAC,GAAEO,EAAC,GAAEA,GAAE,KAAKH,GAAE,eAAeJ,EAAC,CAAC,GAAEC,GAAEF,IAAE,CAAC,GAAEY,IAAEJ,EAAC,IAAGA;AAAE,UAAAA,GAAE,KAAKH,GAAE,eAAeJ,EAAC,CAAC;AAAA,QAAC;AAAC,iBAASE,GAAEH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,IAAI,MAAM,MAAKF,EAAC,GAAEG,KAAE,KAAK,IAAI,MAAM,MAAKH,EAAC,GAAEK,KAAEC,GAAEN,EAAC;AAAE,iBAAO,KAAK,IAAI,KAAK,IAAIC,IAAE,CAAC,IAAEE,KAAE,KAAK,IAAIE,IAAE,CAAC,GAAE,KAAK,IAAIA,IAAE,CAAC,KAAG,KAAK,IAAIJ,IAAE,CAAC,IAAEC,GAAE;AAAA,QAAC;AAAC,iBAASG,GAAEL,IAAE;AAAC,iBAAOA,MAAGA,GAAE,gBAAc;AAAA,QAAK;AAAC,iBAASM,GAAEN,IAAE;AAAC,cAAIC,IAAEC,KAAE;AAAE,eAAID,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,MAAGF,GAAEC,EAAC;AAAE,iBAAOC;AAAA,QAAC;AAAC,iBAASM,GAAER,IAAE;AAAC,cAAIC,IAAEC,KAAE;AAAE,cAAGG,GAAEL,GAAE,CAAC,CAAC,EAAE,MAAIC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,MAAGM,GAAER,GAAEC,EAAC,CAAC;AAAA,cAAO,CAAAC,KAAEI,GAAEN,EAAC;AAAE,iBAAOE;AAAA,QAAC;AAAC,eAAO,SAASF,GAAEE,IAAEC,IAAEG,IAAEG,IAAEE,IAAE;AAAC,UAAAF,KAAE,WAASA,KAAE,IAAEA,IAAEE,KAAE,WAASA,KAAE,IAAEA;AAAE,cAAIC,IAAEF,IAAEI,KAAE,CAAC,GAAEC,KAAE,CAAC;AAAE,cAAGV,GAAEH,GAAE,CAAC,CAAC,GAAE;AAAC,iBAAIQ,KAAE,GAAEA,KAAER,GAAE,QAAOQ,KAAI,CAAAI,GAAEJ,EAAC,IAAEF,GAAEN,GAAEQ,EAAC,CAAC;AAAE,iBAAIE,KAAEX,GAAEa,IAAEX,IAAEG,IAAEG,IAAEE,EAAC,GAAED,KAAE,GAAEA,KAAER,GAAE,QAAOQ,KAAI,CAAAK,GAAE,KAAKf,GAAEE,GAAEQ,EAAC,GAAEE,GAAEF,EAAC,EAAE,CAAC,IAAEE,GAAEF,EAAC,EAAE,CAAC,GAAEE,GAAEF,EAAC,EAAE,CAAC,IAAEE,GAAEF,EAAC,EAAE,CAAC,GAAEE,GAAEF,EAAC,EAAE,CAAC,GAAEE,GAAEF,EAAC,EAAE,CAAC,CAAC,CAAC;AAAA,UAAC,MAAM,CAAAK,KAAEd,GAAEC,IAAEC,IAAEG,IAAEG,IAAEE,EAAC;AAAE,iBAAOI;AAAA,QAAC;AAAA,MAAC,EAAE;AAAE,UAAI+E;AAAJ,UAAOC;AAAP,UAAUC,MAAG,WAAU;AAAC,iBAAShG,GAAEC,IAAEE,IAAE;AAAC,UAAAD,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,cAAY,KAAK,EAAE,OAAO,OAAO,OAAM,KAAK,UAAQ,IAAI+E,IAAG/E,EAAC,GAAE,KAAK,cAAY,KAAK,EAAE,OAAO,MAAM,WAAW,kBAAiB,KAAK,SAAO,CAAC;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,QAAO,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAE,IAAImB,GAAE,KAAK,GAAG,GAAEjB,KAAE,IAAImC,GAAE,KAAK,GAAG,GAAElC,KAAEH,GAAE,MAAM,EAAC,OAAM,qBAAoB,CAAC;AAAE,cAAGD,GAAE,QAAQ,OAAO,QAAOI;AAAE,cAAIE,KAAE,CAAC;AAAE,iBAAOR,GAAE,QAAS,SAASA,IAAE;AAAC,gBAAIC,KAAED,GAAE,IAAK,SAASA,IAAE;AAAC,qBAAO,KAAK,IAAIA,EAAC;AAAA,YAAC,CAAE;AAAE,YAAAQ,GAAE,KAAKP,EAAC;AAAA,UAAC,CAAE,GAAE,KAAK,WAAS,KAAK,QAAQ,gBAAgB,GAAEC,GAAE,OAAO,OAAO,QAAS,SAASF,IAAEE,IAAE;AAAC,YAAAF,GAAE,KAAK,QAAS,SAASA,IAAE;AAAC,oBAAM,QAAQC,GAAE,OAAOC,EAAC,CAAC,MAAID,GAAE,OAAOC,EAAC,IAAE,CAAC,IAAGD,GAAE,OAAOC,EAAC,EAAE,KAAKF,GAAE,CAAC;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE,GAAE,OAAO,eAAe,SAASQ,IAAEN,GAAE,QAAQ,WAAUA,GAAE,QAAQ,UAAU,EAAE,QAAS,SAASM,IAAEC,IAAE;AAAC,gBAAIE,KAAER,GAAE,MAAM,EAAC,OAAM,+CAA8C,YAAWgB,GAAE,aAAajB,GAAE,QAAQ,YAAYO,EAAC,CAAC,GAAE,KAAIA,KAAE,GAAE,kBAAiBA,GAAC,CAAC;AAAE,gBAAGP,GAAE,OAAO,MAAM,WAAW,SAAQ;AAAC,kBAAIU,KAAEV,GAAE,OAAO,MAAM;AAAW,kBAAImB,GAAEpB,GAAE,GAAG,EAAE,WAAWK,IAAEM,IAAEH,EAAC;AAAA,YAAC;AAAC,gBAAIC,KAAEP,GAAE,MAAM,EAAC,OAAM,yBAAwB,CAAC;AAAE,YAAAK,GAAE,QAAS,SAASF,IAAEE,IAAE;AAAC,kBAAII,KAAEN,GAAE,CAAC,GAAEI,KAAEJ,GAAE,CAAC,GAAEQ,KAAER,GAAE,CAAC,GAAES,KAAET,GAAE,CAAC,GAAEO,KAAEV,GAAE,SAASS,IAAEF,IAAEI,KAAEF,IAAEG,KAAEL,IAAER,GAAE,OAAO,YAAY,QAAQ,cAAa,QAAO,GAAED,GAAE,aAAYC,GAAE,OAAO,YAAY,QAAQ,uBAAqBe,KAAEf,GAAE,QAAQ,OAAO,OAAOO,EAAC,CAAC;AAAE,cAAAI,GAAE,KAAK,EAAC,IAAGD,IAAE,IAAGF,IAAE,OAAMD,IAAE,GAAEA,IAAE,GAAED,IAAE,OAAMM,KAAEF,IAAE,QAAOG,KAAEL,GAAC,CAAC;AAAE,kBAAIM,KAAEf,GAAE,QAAQ,cAAcC,GAAE,OAAO,MAAM,MAAKO,IAAED,IAAEP,GAAE,QAAQ,GAAEgB,KAAED,GAAE;AAAM,yBAASd,GAAE,OAAO,OAAOO,EAAC,EAAE,KAAKD,EAAC,KAAGN,GAAE,OAAO,OAAOO,EAAC,EAAE,KAAKD,EAAC,EAAE,cAAYS,KAAEf,GAAE,OAAO,OAAOO,EAAC,EAAE,KAAKD,EAAC,EAAE;AAAW,kBAAIJ,KAAEC,GAAE,SAAS,EAAC,OAAMY,IAAE,cAAaR,IAAE,gBAAeD,GAAC,CAAC;AAAE,cAAAK,GAAE,KAAK,UAAU,IAAI,yBAAyB,GAAEA,GAAE,KAAK,EAAC,MAAKT,GAAC,CAAC,GAAEH,GAAE,QAAQ,aAAaY,EAAC;AAAE,kBAAIK,KAAE,EAAC,GAAEN,MAAGE,KAAEF,MAAG,GAAE,GAAEF,MAAGK,KAAEL,MAAG,GAAE,OAAM,GAAE,QAAO,EAAC,GAAEH,KAAE,EAAC,GAAEK,IAAE,GAAEF,IAAE,OAAMI,KAAEF,IAAE,QAAOG,KAAEL,GAAC;AAAE,kBAAGR,GAAE,OAAO,MAAM,WAAW,WAAS,CAACA,GAAE,QAAQ,aAAY;AAAC,oBAAIiB,KAAE;AAAE,gBAAAjB,GAAE,QAAQ,YAAUiB,KAAEjB,GAAE,OAAO,MAAM,WAAW,QAAOD,GAAE,eAAeY,IAAEK,IAAEX,IAAEY,EAAC;AAAA,cAAC;AAAC,kBAAGjB,GAAE,QAAQ,aAAY;AAAC,oBAAIkB,KAAE;AAAE,gBAAAnB,GAAE,YAAY,WAASC,GAAE,QAAQ,kBAAgBkB,KAAEnB,GAAE,YAAY,OAAMC,GAAE,QAAQ,cAAcO,EAAC,KAAGP,GAAE,QAAQ,cAAcO,EAAC,EAAED,EAAC,KAAGN,GAAE,QAAQ,cAAcO,EAAC,EAAED,EAAC,EAAE,SAAOU,KAAEhB,GAAE,QAAQ,cAAcO,EAAC,EAAED,EAAC,EAAE,OAAMP,GAAE,eAAeY,IAAEK,IAAEX,IAAEa,EAAC;AAAA,cAAE;AAAC,kBAAIC,KAAEpB,GAAE,YAAYK,EAAC,GAAEgB,KAAEpB,GAAE,OAAO,WAAW,UAAUD,GAAE,OAAOQ,EAAC,EAAED,EAAC,GAAE,EAAC,OAAMN,GAAE,QAAQ,OAAOO,EAAC,EAAED,EAAC,GAAE,aAAYC,IAAE,gBAAeD,IAAE,GAAEN,GAAC,CAAC;AAAE,6BAAaA,GAAE,OAAO,YAAY,QAAQ,WAAW,WAASmB,KAAE,SAASnB,GAAE,OAAO,WAAW,MAAM,UAAS,EAAE,GAAEoB,KAAErB,GAAE,eAAeqB,IAAED,IAAET,IAAEF,IAAEI,IAAEC,EAAC;AAAG,kBAAIQ,KAAE;AAAK,cAAArB,GAAE,QAAQ,OAAOO,EAAC,EAAED,EAAC,MAAIe,KAAEtB,GAAE,QAAQ,oBAAoB,EAAC,MAAKqB,IAAE,IAAGV,KAAEE,MAAG,GAAE,IAAGJ,KAAEK,MAAG,IAAEd,GAAE,cAAY,IAAEoB,KAAE,GAAE,GAAEZ,IAAE,GAAED,IAAE,YAAWQ,IAAE,UAASK,IAAE,QAAOrB,GAAC,CAAC,IAAGE,GAAE,OAAO,WAAW,WAASqB,MAAGtB,GAAE,iBAAiBsB,IAAEF,IAAEC,IAAEV,IAAEF,IAAEI,IAAEC,EAAC,GAAEJ,GAAE,IAAIE,EAAC,GAAE,SAAOU,MAAGZ,GAAE,IAAIY,EAAC;AAAA,YAAC,CAAE,GAAEZ,GAAE,IAAID,EAAC,GAAEJ,GAAE,IAAIK,EAAC;AAAA,UAAC,CAAE,GAAEL;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASN,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAIC,IAAEC,IAAEE,IAAEC,IAAEE,KAAE,SAASR,GAAEC,IAAE;AAAC,gBAAIC,IAAEC,KAAE;AAAE,gBAAG,MAAM,QAAQF,GAAE,CAAC,CAAC,EAAE,MAAIC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,MAAGH,GAAEC,GAAEC,EAAC,CAAC;AAAA,gBAAO,MAAIA,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,MAAGF,GAAEC,EAAC,EAAE;AAAO,mBAAOC;AAAA,UAAC,EAAE,KAAK,MAAM,IAAE,SAASH,GAAEC,IAAE;AAAC,gBAAIC,IAAEC,KAAE;AAAE,gBAAG,MAAM,QAAQF,GAAE,CAAC,CAAC,EAAE,MAAIC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,MAAGH,GAAEC,GAAEC,EAAC,CAAC;AAAA,gBAAO,MAAIA,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAC,MAAG;AAAE,mBAAOA;AAAA,UAAC,EAAE,KAAK,MAAM;AAAE,iBAAOD,KAAEF,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEG,KAAEH,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEK,KAAEH,KAAEC,IAAEG,KAAE,KAAK,IAAID,IAAE,GAAE,GAAE,KAAK,IAAIC,KAAEE,IAAE,SAASP,GAAE,OAAO,WAAW,MAAM,UAAS,EAAE,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASD,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAEE,IAAE;AAAC,cAAIC,KAAE,IAAIa,GAAE,KAAK,GAAG,GAAEX,KAAEF,GAAE,aAAaP,IAAED,EAAC;AAAE,cAAGU,GAAE,QAAM,KAAK,EAAE,OAAO,OAAO,QAAM,IAAEL,KAAEH,MAAGQ,GAAE,SAAOH,KAAEH,IAAE;AAAC,gBAAIO,KAAEH,GAAE,mBAAmBT,GAAE,IAAI;AAAE,YAAAA,GAAE,KAAK,aAAa,aAAY,cAAc,OAAOY,GAAE,GAAE,GAAG,EAAE,OAAOA,GAAE,GAAE,cAAc,EAAE,OAAOD,GAAE,SAAO,GAAE,GAAG,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASX,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,cAAIE,KAAE,IAAIc,GAAE,KAAK,GAAG,GAAEb,KAAED,GAAE,aAAaR,IAAEC,EAAC,EAAE,QAAM,KAAK,EAAE,OAAO,OAAO,QAAM,IAAEI,KAAEH,MAAGI,KAAEH,KAAEE,KAAEH,KAAEI,KAAEH,KAAEE,KAAEH,IAAES,KAAEH,GAAE,uBAAuB,EAAC,MAAKR,IAAE,UAASS,IAAE,UAASR,GAAC,CAAC;AAAE,iBAAOD,GAAE,WAASW,GAAE,UAAQF,KAAER,KAAE,IAAE,KAAGU;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASX,IAAEC,IAAEC,IAAEC,IAAE;AAAC,cAAIE,KAAE,IAAIe,GAAE,KAAK,GAAG;AAAE,UAAAf,GAAE,YAAYL,IAAE,EAAC,GAAEC,GAAE,GAAE,GAAEA,GAAE,GAAE,OAAMA,GAAE,OAAM,QAAOA,GAAE,OAAM,GAAE,EAAC,GAAEC,GAAE,GAAE,GAAEA,GAAE,GAAE,OAAMA,GAAE,OAAM,QAAOA,GAAE,OAAM,GAAEC,IAAG,WAAU;AAAC,YAAAE,GAAE,mBAAmBL,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEA;AAAA,MAAC,EAAE;AAA/5H,UAAi6HiG,MAAG;AAAp6H,UAA06HC,MAAG,KAAGD;AAAh7H,UAAm7HE,MAAG,WAAU;AAAC,iBAASnG,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,iBAAe,CAAC,GAAE,KAAK,MAAI,KAAK,EAAE,OAAO,MAAM,OAAO;AAAA,QAAW;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,2BAA0B,OAAM,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,cAAGA,GAAE,QAAQ,mBAAmB,QAAOA,GAAE,QAAQ,SAAO,CAAC,GAAEA,GAAE,QAAQ,kBAAgB,CAAC,GAAE,CAAC;AAAE,cAAIE,KAAE,IAAIqB,GAAE,KAAK,GAAG,GAAEpB,MAAGL,KAAED,MAAG;AAAM,eAAK,kBAAkBM,EAAC,GAAEH,GAAE,QAAQ,gBAAc,OAAGA,GAAE,QAAQ,iBAAe,OAAGG,KAAE4F,MAAG/F,GAAE,QAAQ,gBAAc,OAAGG,KAAE,QAAMH,GAAE,QAAQ,iBAAe;AAAI,cAAIK,KAAEH,GAAE,0BAA0BL,IAAEC,IAAE,KAAK,GAAG,GAAEQ,KAAEN,GAAE,QAAQ,YAAUG,IAAEK,KAAEF,KAAE,IAAGG,KAAED,KAAE,IAAGD,KAAEE,KAAE,IAAGE,KAAE,KAAK,MAAM,KAAGR,EAAC,GAAEO,KAAE,KAAK,MAAM,OAAKP,EAAC,GAAEU,KAAE,KAAK,MAAMV,KAAE2F,GAAE,GAAEhF,KAAE,KAAK,MAAMX,EAAC,GAAEF,KAAE,KAAK,MAAME,KAAE,EAAE,GAAEY,KAAE,KAAK,MAAMZ,KAAE,GAAG,GAAEC,KAAE,EAAC,gBAAeC,GAAE,gBAAe,WAAUA,GAAE,WAAU,WAAUA,GAAE,WAAU,SAAQA,GAAE,SAAQ,SAAQA,GAAE,SAAQ,UAASA,GAAE,UAAS,SAAQA,GAAE,QAAO,GAAEW,KAAE,EAAC,UAASZ,IAAE,oBAAmBA,GAAE,gBAAe,eAAcA,GAAE,WAAU,eAAcA,GAAE,WAAU,aAAYA,GAAE,SAAQ,kBAAiBA,GAAE,SAAQ,aAAYA,GAAE,SAAQ,cAAaA,GAAE,UAAS,aAAYA,GAAE,SAAQ,kBAAiBE,IAAE,mBAAkBE,IAAE,qBAAoBC,IAAE,qBAAoBF,IAAE,iBAAgBM,IAAE,iBAAgBH,IAAE,eAAcC,IAAE,cAAaG,IAAE,gBAAeb,IAAE,eAAcc,GAAC;AAAE,kBAAO,KAAK,cAAa;AAAA,YAAC,KAAI;AAAQ,mBAAK,kBAAkBC,EAAC;AAAE;AAAA,YAAM,KAAI;AAAA,YAAS,KAAI;AAAY,mBAAK,mBAAmBA,EAAC;AAAE;AAAA,YAAM,KAAI;AAAA,YAAc,KAAI;AAAA,YAAmB,KAAI;AAAA,YAAO,KAAI;AAAY,mBAAK,iBAAiBA,EAAC;AAAE;AAAA,YAAM,KAAI;AAAQ,mBAAK,kBAAkBA,EAAC;AAAE;AAAA,YAAM,KAAI;AAAA,YAAgB,KAAI;AAAU,mBAAK,oBAAoBA,EAAC;AAAE;AAAA,YAAM,KAAI;AAAA,YAAe,KAAI;AAAA,YAAgB,KAAI;AAAU,mBAAK,oBAAoBA,EAAC;AAAA,UAAC;AAAC,cAAIC,KAAE,KAAK,eAAe,IAAK,SAASpB,IAAE;AAAC,gBAAIC,KAAE,EAAC,UAASD,GAAE,UAAS,MAAKA,GAAE,MAAK,MAAKA,GAAE,MAAK,KAAIA,GAAE,MAAIA,GAAE,MAAI,GAAE,MAAKA,GAAE,OAAKA,GAAE,OAAK,GAAE,OAAMA,GAAE,QAAM,EAAC;AAAE,mBAAM,YAAUA,GAAE,OAAKe,GAAEA,GAAE,CAAC,GAAEd,EAAC,GAAE,CAAC,GAAE,EAAC,KAAI,GAAE,OAAMD,GAAE,QAAM,EAAC,CAAC,IAAE,UAAQA,GAAE,QAAM,WAASA,GAAE,OAAKe,GAAEA,GAAE,CAAC,GAAEd,EAAC,GAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK,CAAC,IAAE,aAAWA,GAAE,OAAKe,GAAEA,GAAE,CAAC,GAAEd,EAAC,GAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,OAAM,QAAOA,GAAE,MAAK,CAAC,IAAE,aAAWA,GAAE,OAAKe,GAAEA,GAAE,CAAC,GAAEd,EAAC,GAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,OAAM,QAAOA,GAAE,QAAO,QAAOA,GAAE,OAAM,CAAC,IAAEA;AAAA,UAAC,CAAE;AAAE,iBAAOoB,GAAE,OAAQ,SAASpB,IAAE;AAAC,gBAAIC,KAAE,GAAEI,KAAE,KAAK,KAAKF,GAAE,QAAQ,YAAU,GAAG,GAAEG,KAAEN,GAAE;AAAM,uBAASG,GAAE,OAAO,MAAM,eAAaE,KAAEF,GAAE,OAAO,MAAM,aAAYiB,GAAE,SAAOf,OAAIJ,KAAE,KAAK,MAAMmB,GAAE,SAAOf,EAAC;AAAG,gBAAIG,KAAE,OAAGC,KAAE;AAAG,oBAAOP,GAAE,cAAa;AAAA,cAAC,KAAI;AAAQ,2BAASF,GAAE,SAAOQ,KAAE;AAAI;AAAA,cAAM,KAAI;AAAY,gBAAAP,KAAE,GAAE,WAASD,GAAE,SAAOQ,KAAE;AAAI;AAAA,cAAM,KAAI;AAAS,gBAAAP,KAAE,GAAE,WAASD,GAAE,SAAOQ,KAAE;AAAI;AAAA,cAAM,KAAI;AAAmB,gBAAAP,KAAE,IAAG,WAASD,GAAE,QAAM,YAAUA,GAAE,SAAOQ,KAAE,OAAI,OAAKF,OAAIG,KAAE;AAAI;AAAA,cAAM,KAAI;AAAc,gBAAAR,KAAE,IAAG,YAAUD,GAAE,SAAOQ,KAAE,OAAI,OAAKF,OAAIG,KAAE;AAAI;AAAA,cAAM,KAAI;AAAY,gBAAAR,KAAE,GAAE,YAAUD,GAAE,SAAOQ,KAAE;AAAI;AAAA,cAAM,KAAI;AAAO,gBAAAP,KAAE,GAAE,YAAUD,GAAE,SAAOQ,KAAE;AAAI;AAAA,cAAM,KAAI;AAAQ,0BAAQR,GAAE,SAAOQ,KAAE;AAAI;AAAA,cAAM,KAAI;AAAA,cAAgB,KAAI;AAAgB,gBAAAF,KAAE,KAAG,MAAIG,KAAE;AAAI;AAAA,cAAM,KAAI;AAAe,gBAAAH,KAAE,MAAI,MAAIG,KAAE;AAAA,YAAG;AAAC,gBAAG,YAAUP,GAAE,gBAAc,oBAAkBA,GAAE,gBAAc,mBAAiBA,GAAE,gBAAc,oBAAkBA,GAAE,cAAa;AAAC,kBAAG,CAACO,GAAE,QAAM;AAAA,YAAE,YAAUH,KAAEL,MAAG,KAAGO,OAAI,CAACC,GAAE,QAAM;AAAA,UAAE,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iCAAgC,OAAM,SAAST,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK,YAAYH,EAAC,GAAEK,KAAE,KAAK,oBAAoBF,EAAC;AAAE,UAAAD,GAAE,QAAQ,kBAAgBG,GAAE,MAAM,GAAE,IAAI0D,IAAG,KAAK,GAAG,EAAE,WAAW;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAAS/D,IAAE;AAAC,cAAIC,KAAE,KAAGD,IAAEE,KAAE,KAAGD;AAAE,kBAAO,MAAG;AAAA,YAAC,KAAKD,KAAE,MAAI;AAAE,mBAAK,eAAa;AAAQ;AAAA,YAAM,KAAKA,KAAE;AAAI,mBAAK,eAAa;AAAY;AAAA,YAAM,KAAKA,KAAE;AAAI,mBAAK,eAAa;AAAS;AAAA,YAAM,KAAKA,KAAE;AAAG,mBAAK,eAAa;AAAmB;AAAA,YAAM,KAAKA,KAAE;AAAG,mBAAK,eAAa;AAAc;AAAA,YAAM,KAAKA,KAAE;AAAG,mBAAK,eAAa;AAAY;AAAA,YAAM,KAAKA,KAAE;AAAE,mBAAK,eAAa;AAAO;AAAA,YAAM,KAAKC,KAAE;AAAI,mBAAK,eAAa;AAAQ;AAAA,YAAM,KAAKC,KAAE;AAAG,mBAAK,eAAa;AAAgB;AAAA,YAAM,KAAKA,KAAE;AAAE,mBAAK,eAAa;AAAU;AAAA,YAAM,KAAKA,KAAE;AAAE,mBAAK,eAAa;AAAe;AAAA,YAAM,KAAK,KAAGA,KAAE;AAAG,mBAAK,eAAa;AAAgB;AAAA,YAAM;AAAQ,mBAAK,eAAa;AAAA,UAAS;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAED,GAAE,UAASE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,aAAYK,KAAEL,GAAE,kBAAiBM,KAAEN,GAAE,eAAcQ,KAAEP,GAAE,SAAQQ,KAAE,GAAEE,KAAE,IAAIe,GAAE,KAAK,GAAG,GAAEd,KAAE;AAAO,cAAGX,GAAE,UAAQ,KAAGA,GAAE,WAAS,GAAE;AAAC,gBAAIS,KAAEC,GAAE,6BAA6BV,GAAE,SAAQA,GAAE,UAASA,GAAE,OAAO;AAAE,YAAAQ,MAAGE,GAAE,oBAAoBV,GAAE,OAAO,IAAES,KAAE,KAAGL,IAAEG,KAAEP,GAAE,UAAQ,GAAE,KAAK,eAAe,KAAK,EAAC,UAASQ,IAAE,OAAMD,IAAE,MAAKI,IAAE,MAAKJ,IAAE,OAAMW,GAAE,SAASjB,KAAE,CAAC,EAAC,CAAC;AAAA,UAAC,MAAM,OAAID,GAAE,WAAS,MAAIA,GAAE,YAAU,KAAK,eAAe,KAAK,EAAC,UAASQ,IAAE,OAAMD,IAAE,MAAKI,IAAE,MAAKT,IAAE,OAAMgB,GAAE,SAASjB,KAAE,CAAC,EAAC,CAAC;AAAE,mBAAQY,KAAEN,IAAEO,KAAEN,IAAEI,KAAE,GAAEA,KAAEP,IAAEO,KAAI,CAAAC,MAAIC,KAAEJ,GAAE,oBAAoBG,KAAE,CAAC,IAAET,KAAEU,IAAE,KAAK,eAAe,KAAK,EAAC,UAASA,IAAE,OAAMD,IAAE,MAAKF,IAAE,MAAKE,IAAE,OAAM,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASd,IAAE;AAAC,cAAIC,KAAED,GAAE,UAASE,KAAEF,GAAE,kBAAiBG,KAAEH,GAAE,cAAaK,KAAEL,GAAE,aAAYM,KAAEN,GAAE,kBAAiBQ,KAAER,GAAE,gBAAeS,KAAEN,IAAEQ,KAAE,GAAEC,KAAE,IAAIc,GAAE,KAAK,GAAG,GAAEhB,KAAE,SAAQI,KAAE;AAAE,cAAGb,GAAE,UAAQ,GAAE;AAAC,YAAAU,MAAGC,GAAE,sBAAsBT,KAAE,GAAEF,GAAE,OAAO,IAAEC,KAAE,KAAGI,IAAEG,KAAEU,GAAE,SAAShB,KAAE,CAAC;AAAE,gBAAIY,KAAEV,KAAES,IAAED,KAAEM,GAAE,SAASV,EAAC,GAAEO,KAAEP;AAAE,kBAAIA,OAAIC,KAAE,QAAOM,KAAED,IAAEF,KAAE,GAAEE,MAAGD,MAAG,IAAG,KAAK,eAAe,KAAK,EAAC,UAASH,IAAE,OAAMK,IAAE,MAAKN,IAAE,MAAKK,IAAE,OAAMF,GAAC,CAAC;AAAA,UAAC,MAAM,MAAK,eAAe,KAAK,EAAC,UAASF,IAAE,OAAMF,IAAE,MAAKC,IAAE,MAAKL,IAAE,OAAMc,GAAE,SAAShB,EAAC,EAAC,CAAC;AAAE,mBAAQc,KAAER,KAAE,GAAEL,KAAEO,IAAEO,KAAE,GAAEX,KAAE,GAAEW,KAAEV,IAAEU,MAAIX,MAAI;AAAC,mBAAKU,KAAEE,GAAE,SAASF,EAAC,MAAIP,KAAE,QAAOI,MAAG,KAAGJ,KAAE;AAAQ,gBAAIU,KAAE,KAAK,SAASf,IAAEY,IAAEH,EAAC;AAAE,YAAAV,KAAEQ,GAAE,sBAAsBK,IAAEG,EAAC,IAAEd,KAAEF;AAAE,gBAAIiB,KAAE,MAAIJ,KAAEG,KAAEH;AAAE,iBAAK,eAAe,KAAK,EAAC,UAASb,IAAE,OAAMiB,IAAE,MAAKX,IAAE,MAAKU,IAAE,OAAM,MAAIH,KAAE,IAAEA,GAAC,CAAC,GAAEA;AAAA,UAAG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASjB,IAAE;AAAC,cAAIC,KAAED,GAAE,UAASE,KAAEF,GAAE,cAAaG,KAAEH,GAAE,aAAYK,KAAEL,GAAE,mBAAkBM,KAAEN,GAAE,cAAaQ,KAAE,IAAIkB,GAAE,KAAK,GAAG,GAAEjB,KAAE,OAAME,KAAEV,GAAE,UAAQ,GAAEW,KAAED,IAAED,KAAE,SAASV,IAAEC,IAAEC,IAAE;AAAC,mBAAOF,KAAEQ,GAAE,sBAAsBP,KAAE,GAAEC,EAAC,KAAGU,KAAE,GAAEH,KAAE,SAAQM,KAAEd,MAAG,GAAEA,MAAGA;AAAA,UAAC,GAAEa,MAAG,KAAGb,GAAE,WAASI,IAAEU,KAAEJ,IAAEE,KAAEH,GAAEE,IAAEV,IAAEC,EAAC;AAAE,gBAAIF,GAAE,WAAS,MAAIA,GAAE,WAASa,KAAE,GAAEC,KAAEI,GAAE,SAASlB,GAAE,QAAQ,GAAEQ,KAAE,SAAQG,KAAEX,GAAE,WAAS,MAAIA,GAAE,WAAS,MAAIA,GAAE,WAAS,MAAIA,GAAE,cAAYa,KAAE,GAAEH,KAAEV,GAAE,SAAQc,KAAEJ,IAAEE,KAAEH,GAAEE,KAAED,IAAET,IAAEC,EAAC,IAAG,KAAK,eAAe,KAAK,EAAC,UAASW,IAAE,OAAMC,IAAE,MAAKN,IAAE,MAAK,KAAK,SAASN,IAAEU,IAAE,CAAC,GAAE,OAAMM,GAAE,SAASN,EAAC,GAAE,KAAID,GAAC,CAAC;AAAE,mBAAQI,KAAEF,IAAEG,KAAE,GAAEA,KAAEX,IAAEW,MAAI;AAAC,YAAAR,KAAE,OAAMI,KAAEH,GAAEE,MAAG,GAAEC,IAAE,KAAK,SAASV,IAAEU,IAAE,CAAC,CAAC;AAAE,gBAAIT,KAAE,KAAK,SAASD,IAAEU,IAAE,CAAC;AAAE,YAAAG,KAAE,KAAGX,KAAEW;AAAE,gBAAIE,KAAE,MAAIN,KAAEO,GAAE,SAASN,EAAC,IAAED;AAAE,iBAAK,eAAe,KAAK,EAAC,UAASI,IAAE,OAAME,IAAE,MAAKT,IAAE,MAAKL,IAAE,OAAMe,GAAE,SAASN,EAAC,GAAE,KAAIK,GAAC,CAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASlB,IAAE;AAAC,cAAIC,KAAED,GAAE,UAASE,KAAEF,GAAE,aAAYG,KAAEH,GAAE,cAAaK,KAAEL,GAAE,aAAYM,KAAEN,GAAE,qBAAoBQ,KAAER,GAAE,eAAcS,KAAE,IAAIiB,GAAE,KAAK,GAAG,GAAEf,KAAE,QAAOC,KAAE,SAASZ,IAAEC,IAAE;AAAC,mBAAOD,KAAES,GAAE,sBAAsBR,KAAE,GAAEI,EAAC,MAAIY,KAAE,GAAEhB,MAAG,IAAG,EAAC,OAAMA,IAAE,MAAKgB,GAAC;AAAA,UAAC,GAAEP,KAAE,SAASV,IAAEC,IAAE;AAAC,mBAAOD,KAAES,GAAE,sBAAsBR,KAAE,GAAEI,EAAC,IAAEJ,MAAG,IAAEA;AAAA,UAAC,GAAEa,KAAE,MAAIb,GAAE,YAAUA,GAAE,YAAU,KAAIc,KAAED,KAAER,IAAEO,KAAEZ,GAAE,UAAQ,GAAEe,KAAEH;AAAE,iBAAKC,OAAIC,KAAE,GAAEC,KAAEH,KAAEZ,GAAE;AAAS,cAAIgB,KAAEf;AAAE,UAAAc,MAAG,OAAKA,KAAE,GAAEC,MAAG,GAAEN,KAAE;AAAO,cAAIP,KAAEQ,GAAEK,IAAEd,EAAC,EAAE;AAAM,UAAAC,KAAEM,GAAEO,IAAEb,EAAC,GAAE,KAAK,eAAe,KAAK,EAAC,UAASW,IAAE,OAAMF,IAAE,MAAKF,IAAE,KAAIM,IAAE,MAAKD,IAAE,MAAKX,IAAE,OAAMc,GAAE,SAASf,EAAC,EAAC,CAAC,GAAEY;AAAI,mBAAQE,KAAEH,IAAER,KAAE,GAAEA,KAAEC,IAAED,MAAI;AAAC,gBAAGI,KAAE,QAAOK,MAAG,GAAG,CAAAA,KAAE,GAAEL,KAAE,OAAMP,KAAEQ,GAAEK,MAAG,GAAEb,EAAC,EAAE,OAAMA,KAAEM,GAAEO,IAAEb,EAAC;AAAE,gBAAIgB,KAAE,KAAK,SAASf,IAAED,IAAE,CAAC;AAAE,YAAAc,KAAE,KAAGZ,KAAEY;AAAE,gBAAIG,KAAE,MAAIL,KAAEC,KAAED;AAAE,iBAAK,eAAe,KAAK,EAAC,UAASE,IAAE,OAAMG,IAAE,MAAKV,IAAE,MAAKK,IAAE,KAAIC,IAAE,MAAKG,IAAE,OAAMD,GAAE,SAASf,EAAC,EAAC,CAAC,GAAEY;AAAA,UAAG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAAShB,IAAE;AAAC,mBAAQC,KAAED,GAAE,oBAAmBE,KAAEF,GAAE,eAAcG,KAAEH,GAAE,eAAcK,KAAEL,GAAE,aAAYM,KAAEN,GAAE,aAAYQ,KAAER,GAAE,cAAaS,KAAET,GAAE,aAAYW,KAAEX,GAAE,qBAAoBY,KAAEZ,GAAE,qBAAoBU,KAAEV,GAAE,iBAAgBc,KAAEX,KAAE,GAAEY,KAAET,IAAEO,KAAEL,IAAEQ,KAAEP,IAAEQ,KAAEZ,IAAED,MAAG,KAAGF,KAAED,KAAE,OAAKW,IAAEM,KAAE,GAAEA,KAAER,IAAEQ,KAAI,CAAAJ,MAAG,OAAKA,KAAE,GAAE,QAAMG,MAAG,OAAKA,KAAE,KAAI,KAAK,eAAe,KAAK,EAAC,UAASb,IAAE,OAAMU,IAAE,MAAK,UAAS,MAAKG,IAAE,QAAOH,IAAE,KAAIC,IAAE,MAAK,KAAK,SAASC,IAAEH,IAAE,CAAC,GAAE,OAAMM,GAAE,SAASN,EAAC,EAAC,CAAC,GAAET,MAAGO,IAAEG;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASd,IAAE;AAAC,mBAAQC,KAAED,GAAE,oBAAmBE,KAAEF,GAAE,eAAcG,KAAEH,GAAE,eAAcK,KAAEL,GAAE,aAAYM,KAAEN,GAAE,aAAYQ,KAAER,GAAE,cAAaS,KAAET,GAAE,aAAYW,KAAEX,GAAE,qBAAoBY,KAAEZ,GAAE,iBAAgBU,KAAER,KAAE,GAAEY,KAAEX,IAAEY,KAAET,IAAEO,KAAEL,IAAEQ,KAAEP,IAAEQ,KAAEZ,IAAED,MAAG,MAAIH,MAAG,MAAIU,IAAEO,KAAE,GAAEA,KAAEN,IAAEM,KAAI,CAAAR,MAAG,OAAKA,KAAE,GAAE,EAAEI,MAAG,OAAKA,KAAE,GAAE,OAAK,EAAEG,OAAIA,KAAE,MAAK,KAAK,eAAe,KAAK,EAAC,UAASb,IAAE,OAAMM,IAAE,MAAK,UAAS,MAAKO,IAAE,QAAOH,IAAE,QAAOJ,IAAE,KAAIK,IAAE,MAAK,KAAK,SAASC,IAAEH,IAAE,CAAC,GAAE,OAAMM,GAAE,SAASN,EAAC,EAAC,CAAC,GAAET,MAAGO,IAAED;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASV,IAAEC,IAAE;AAAC,cAAIC,KAAEF,GAAE;AAAK,iBAAO,MAAIA,GAAE,UAAQA,GAAE,QAAM,IAAGE,MAAG,OAAK,MAAIF,GAAE,MAAM,SAAS,GAAG,MAAM,EAAE,GAAE,UAAQA,GAAE,OAAKE,MAAG,UAAQF,GAAE,OAAK,OAAK,MAAIC,IAAG,MAAM,EAAE,IAAE,QAAMC,MAAG,OAAK,OAAKF,GAAE,MAAIA,GAAE,MAAI,MAAM,MAAM,EAAE,GAAE,WAASA,GAAE,OAAKE,MAAG,WAASF,GAAE,OAAK,OAAK,MAAIC,IAAG,MAAM,EAAE,IAAE,QAAMC,MAAG,OAAK,OAAKF,GAAE,OAAKA,GAAE,OAAK,MAAM,MAAM,EAAE,GAAE,aAAWA,GAAE,OAAKE,MAAG,OAAK,MAAID,IAAG,MAAM,EAAE,IAAEC,MAAG,OAAKF,GAAE,UAAQ,MAAIA,GAAE,QAAQ,MAAM,EAAE,IAAE,OAAM,aAAWA,GAAE,OAAKE,MAAG,OAAK,MAAID,IAAG,MAAM,EAAE,IAAEC,MAAG,OAAM,KAAK,QAAMA,MAAG,UAASA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,iBAAOF,GAAE,IAAK,SAASA,IAAE;AAAC,gBAAIG,KAAEH,GAAE,MAAM,SAAS,GAAEK,KAAE,IAAIqB,GAAEzB,GAAE,GAAG,GAAEK,KAAEL,GAAE,oBAAoBD,IAAEG,EAAC,GAAEK,KAAEH,GAAE,QAAQA,GAAE,UAAUC,EAAC,CAAC;AAAE,gBAAGL,GAAE,QAAMO,KAAEH,GAAE,QAAQA,GAAE,sBAAsBC,EAAC,CAAC,IAAG,WAASJ,GAAE,OAAO,MAAM,OAAO,QAAO;AAAC,kBAAIO,KAAE,UAASE,KAAET,GAAE,OAAO,MAAM,OAAO;AAAkB,yBAASF,GAAE,SAAOS,KAAEE,GAAE,OAAM,YAAUX,GAAE,SAAOS,KAAEE,GAAE,QAAO,UAAQX,GAAE,SAAOS,KAAEE,GAAE,MAAK,WAASX,GAAE,SAAOS,KAAEE,GAAE,OAAM,aAAWX,GAAE,SAAOS,KAAEE,GAAE,SAAQ,aAAWX,GAAE,SAAOS,KAAEE,GAAE,SAAQR,KAAEE,GAAE,WAAWG,IAAEC,EAAC;AAAA,YAAC,MAAM,CAAAN,KAAEE,GAAE,WAAWG,IAAEN,GAAE,OAAO,MAAM,OAAO,MAAM;AAAE,mBAAM,EAAC,YAAWI,IAAE,UAASN,GAAE,UAAS,OAAMG,IAAE,MAAKH,GAAE,MAAK,MAAKA,GAAE,MAAK,OAAMA,GAAE,MAAK;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASA,IAAE;AAAC,cAAIC,IAAEC,KAAE,MAAKC,KAAE,IAAImB,GAAE,KAAK,GAAG,GAAEjB,KAAE;AAAG,UAAAL,GAAE,SAAO,KAAGA,GAAE,CAAC,EAAE,SAAOA,GAAE,MAAO,SAASC,IAAE;AAAC,mBAAOA,GAAE,MAAM,WAASD,GAAE,CAAC,EAAE,MAAM;AAAA,UAAM,CAAE,MAAIK,KAAE,MAAGJ,KAAEE,GAAE,aAAaH,GAAE,CAAC,EAAE,KAAK,EAAE;AAAO,cAAIM,KAAE,GAAEE,KAAER,GAAE,IAAK,SAASQ,IAAEC,IAAE;AAAC,gBAAGA,KAAE,KAAGP,GAAE,EAAE,OAAO,MAAM,OAAO,uBAAsB;AAAC,kBAAIS,KAAEN,KAAEJ,KAAEE,GAAE,aAAaH,GAAEM,EAAC,EAAE,KAAK,EAAE,OAAMM,KAAEZ,GAAEM,EAAC,EAAE;AAAS,qBAAOE,GAAE,WAASI,KAAED,KAAE,MAAIL,KAAEG,IAAED,MAAG;AAAA,YAAI;AAAC,mBAAOA;AAAA,UAAC,CAAE;AAAE,iBAAOA,KAAEA,GAAE,OAAQ,SAASR,IAAE;AAAC,mBAAO,SAAOA;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,YAAW,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,iBAAOF,KAAE,KAAK,MAAMC,KAAE,EAAE,IAAEC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEF;AAAA,MAAC,EAAE;AAA7wa,UAA+waoG,MAAG,WAAU;AAAC,iBAASpG,GAAEC,IAAEE,IAAE;AAAC,UAAAD,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIG,IAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,KAAGF;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE,QAAOG,KAAED,GAAE,MAAM;AAAK,UAAAD,GAAE,aAAW,CAAC,QAAO,QAAO,OAAM,YAAW,aAAY,eAAc,WAAU,WAAU,UAAS,SAAQ,WAAU,SAAS,EAAE,SAASE,EAAC,GAAEF,GAAE,WAAS,CAAC,QAAO,QAAO,OAAM,YAAW,aAAY,eAAc,WAAU,WAAU,QAAQ,EAAE,SAASE,EAAC,GAAEF,GAAE,kBAAgB,CAAC,OAAM,YAAW,SAAS,EAAE,SAASE,EAAC,KAAGD,GAAE,YAAY,IAAI,YAAWD,GAAE,aAAW,cAAc,OAAOA,GAAE,OAAO,GAAEA,GAAE,IAAI,SAAO,KAAK,IAAGA,GAAE,IAAI,SAAO,SAAS,cAAc,KAAK,GAAEqB,GAAE,SAASrB,GAAE,IAAI,QAAO,EAAC,IAAGA,GAAE,WAAW,UAAU,CAAC,GAAE,OAAM,qBAAqB,OAAOA,GAAE,WAAW,UAAU,CAAC,CAAC,EAAC,CAAC,GAAE,KAAK,GAAG,YAAYA,GAAE,IAAI,MAAM,GAAEA,GAAE,IAAI,QAAM,IAAI,OAAO,IAAI,IAAIA,GAAE,IAAI,MAAM,GAAEA,GAAE,IAAI,MAAM,KAAK,EAAC,OAAM,kBAAiB,cAAa,gBAAe,WAAU,aAAa,OAAOC,GAAE,MAAM,SAAQ,IAAI,EAAE,OAAOA,GAAE,MAAM,SAAQ,GAAG,EAAC,CAAC,GAAED,GAAE,IAAI,MAAM,KAAK,MAAM,aAAW,WAASC,GAAE,MAAM,QAAMA,GAAE,MAAM,aAAW,YAAUA,GAAE,MAAM,QAAMA,GAAE,MAAM,aAAWA,GAAE,MAAM,aAAW,SAAO,WAAU,KAAK,iBAAiB,GAAED,GAAE,IAAI,kBAAgB,SAAS,gBAAgBA,GAAE,OAAM,eAAe,GAAEqB,GAAE,SAASrB,GAAE,IAAI,iBAAgB,EAAC,GAAE,GAAE,GAAE,GAAE,OAAMA,GAAE,UAAS,QAAOA,GAAE,UAAS,CAAC,GAAEA,GAAE,IAAI,eAAa,SAAS,cAAc,KAAK,GAAEA,GAAE,IAAI,aAAa,UAAU,IAAI,mBAAmB,GAAEA,GAAE,IAAI,aAAa,aAAa,SAAQ,8BAA8B,GAAEA,GAAE,IAAI,gBAAgB,YAAYA,GAAE,IAAI,YAAY,GAAEA,GAAE,IAAI,MAAM,KAAK,YAAYA,GAAE,IAAI,eAAe,GAAEA,GAAE,IAAI,cAAYA,GAAE,IAAI,MAAM,MAAM,EAAE,KAAK,EAAC,OAAM,wCAAuC,CAAC,GAAEA,GAAE,IAAI,SAAOA,GAAE,IAAI,MAAM,KAAK,GAAEA,GAAE,IAAI,MAAM,IAAIA,GAAE,IAAI,WAAW,GAAEA,GAAE,IAAI,YAAY,IAAIA,GAAE,IAAI,MAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,KAAK,KAAIE,KAAEH,GAAE,QAAOI,KAAEJ,GAAE,SAAQM,KAAE,EAAC,MAAK,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,MAAK,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,SAAQ,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,QAAO,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,QAAO,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,aAAY,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,SAAQ,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,UAAS,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,WAAU,EAAC,QAAO,CAAC,GAAE,gBAAe,CAAC,GAAE,GAAE,CAAC,EAAC,EAAC,GAAEC,KAAEJ,GAAE,MAAM,QAAM,QAAOM,KAAE,MAAKC,KAAE;AAAE,UAAAN,GAAE,OAAO,QAAS,SAASL,IAAEE,IAAE;AAAC,gBAAIE,KAAEL,GAAEG,EAAC,EAAE,QAAMM;AAAE,YAAAD,GAAEH,EAAC,KAAG,gBAAcA,MAAGG,GAAEH,EAAC,EAAE,OAAO,KAAKC,GAAE,iBAAiBH,EAAC,CAAC,GAAEK,GAAEH,EAAC,EAAE,eAAe,KAAKC,GAAE,eAAeH,EAAC,CAAC,KAAGK,GAAEH,EAAC,EAAE,OAAO,KAAKJ,EAAC,GAAEO,GAAEH,EAAC,EAAE,EAAE,KAAKF,EAAC,GAAE,aAAWE,MAAG,UAAQA,OAAIH,GAAE,QAAQ,eAAaM,GAAE,WAAS,CAAC,WAAU,WAAU,OAAM,SAAQ,aAAY,aAAY,OAAO,EAAE,SAASH,EAAC,IAAEM,KAAEN,KAAE,UAAQA,MAAGG,GAAE,OAAO,OAAO,KAAKP,EAAC,GAAEO,GAAE,OAAO,EAAE,KAAKL,EAAC,KAAG,QAAQ,KAAK,mDAAmD,OAAOE,IAAE,IAAI,CAAC,GAAEI,OAAIJ,MAAG,cAAYA,MAAGO;AAAA,UAAG,CAAE,GAAEA,KAAE,MAAID,MAAG,QAAQ,KAAK,wBAAwB,OAAOA,IAAE,kDAAkD,CAAC,GAAEH,GAAE,OAAO,OAAO,SAAO,KAAGH,GAAE,YAAY,IAAI,eAAaO,MAAGJ,GAAE,OAAO,OAAO,QAAOA,GAAE,SAAO,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAEN,GAAE,QAAQ,eAAa,EAAC,QAAO,CAAC,GAAE,GAAE,CAAC,EAAC,GAAE,QAAQ,KAAK,wGAAwG,KAAII,GAAE,gBAAcA,GAAE,cAAYM,KAAE;AAAG,cAAIF,KAAE,IAAIkF,IAAGzF,IAAEF,EAAC,GAAEa,KAAE,IAAIiE,IAAG5E,IAAEF,EAAC;AAAE,UAAAE,GAAE,MAAI,IAAIgF,IAAGhF,EAAC;AAAE,cAAIY,KAAE,IAAIsE,IAAGlF,EAAC;AAAE,UAAAA,GAAE,WAAS,IAAImF,IAAGnF,IAAEF,EAAC;AAAE,cAAIY,KAAE,IAAIuE,IAAGjF,EAAC,GAAEa,KAAE,CAAC;AAAE,cAAGV,GAAE,aAAY;AAAC,gBAAIF,IAAEc,IAAEX,KAAE,IAAIgB,GAAEpB,EAAC;AAAE,gBAAGK,GAAE,KAAK,OAAO,SAAO,EAAE,EAACJ,KAAEY,IAAG,KAAK,MAAMZ,IAAEa,GAAEV,GAAE,kBAAkBC,GAAE,MAAKF,GAAE,YAAW,QAAOI,EAAC,CAAC,CAAC;AAAE,gBAAGF,GAAE,OAAO,OAAO,SAAO,EAAE,KAAGH,GAAE,MAAM,SAAQ;AAAC,kBAAIc,KAAE,IAAI2D,IAAG3E,IAAEF,EAAC;AAAE,cAAAe,GAAE,KAAKG,GAAE,KAAKX,GAAE,OAAO,QAAOA,GAAE,OAAO,CAAC,CAAC;AAAA,YAAC,MAAM,CAAAL,GAAE,MAAI,IAAI0E,IAAG1E,IAAEF,EAAC,GAAEe,GAAE,KAAKb,GAAE,IAAI,KAAKK,GAAE,OAAO,QAAOA,GAAE,OAAO,CAAC,CAAC;AAAE,gBAAGA,GAAE,UAAU,OAAO,SAAO,KAAGQ,GAAE,KAAKN,GAAE,KAAKF,GAAE,UAAU,QAAO,aAAYA,GAAE,UAAU,GAAEA,GAAE,UAAU,cAAc,CAAC,GAAEA,GAAE,KAAK,OAAO,SAAO,EAAE,EAACU,KAAEF,IAAG,KAAK,MAAME,IAAED,GAAEV,GAAE,kBAAkBC,GAAE,MAAKF,GAAE,YAAW,QAAOI,EAAC,CAAC,CAAC;AAAE,gBAAGF,GAAE,YAAY,OAAO,SAAO,KAAGQ,GAAE,KAAKF,GAAE,KAAKN,GAAE,YAAY,QAAO,eAAcA,GAAE,YAAY,CAAC,CAAC,GAAEA,GAAE,QAAQ,OAAO,SAAO,KAAGQ,GAAE,KAAKF,GAAE,KAAKN,GAAE,QAAQ,QAAO,WAAUA,GAAE,QAAQ,CAAC,CAAC,GAAEA,GAAE,SAAS,OAAO,SAAO,KAAGQ,GAAE,KAAKb,GAAE,SAAS,KAAKK,GAAE,SAAS,QAAOA,GAAE,SAAS,CAAC,CAAC,GAAEA,GAAE,QAAQ,OAAO,SAAO,GAAE;AAAC,kBAAIY,KAAE,IAAIwE,IAAGzF,IAAEF,IAAE,IAAE;AAAE,cAAAe,GAAE,KAAKI,GAAE,KAAKZ,GAAE,QAAQ,QAAO,WAAUA,GAAE,QAAQ,CAAC,CAAC;AAAA,YAAC;AAAC,gBAAGA,GAAE,OAAO,OAAO,SAAO,GAAE;AAAC,kBAAIa,KAAE,IAAIuE,IAAGzF,IAAEF,IAAE,IAAE;AAAE,cAAAe,GAAE,KAAKK,GAAE,KAAKb,GAAE,OAAO,QAAO,UAASA,GAAE,OAAO,CAAC,CAAC;AAAA,YAAC;AAAA,UAAC,MAAM,SAAOH,GAAE,MAAM,MAAK;AAAA,YAAC,KAAI;AAAO,cAAAW,KAAEN,GAAE,KAAKJ,GAAE,QAAO,MAAM;AAAE;AAAA,YAAM,KAAI;AAAO,cAAAU,KAAEN,GAAE,KAAKJ,GAAE,QAAO,MAAM;AAAE;AAAA,YAAM,KAAI;AAAM,kBAAGD,GAAE,MAAM,QAAQ,CAAAW,KAAE,IAAI8D,IAAG3E,IAAEF,EAAC,EAAE,KAAKK,GAAE,MAAM;AAAA,kBAAO,CAAAH,GAAE,MAAI,IAAI0E,IAAG1E,IAAEF,EAAC,GAAEe,KAAEb,GAAE,IAAI,KAAKG,GAAE,MAAM;AAAE;AAAA,YAAM,KAAI;AAAc,cAAAU,KAAE,IAAI+D,IAAG5E,IAAEF,EAAC,EAAE,KAAKK,GAAE,QAAO,aAAa;AAAE;AAAA,YAAM,KAAI;AAAU,cAAAU,KAAE,IAAI+D,IAAG5E,IAAEF,EAAC,EAAE,KAAKK,GAAE,QAAOD,GAAE,MAAM,IAAI;AAAE;AAAA,YAAM,KAAI;AAAW,cAAAW,KAAEb,GAAE,SAAS,KAAKG,GAAE,MAAM;AAAE;AAAA,YAAM,KAAI;AAAY,cAAAU,KAAEN,GAAE,KAAKJ,GAAE,kBAAiB,aAAY,QAAOA,GAAE,cAAc;AAAE;AAAA,YAAM,KAAI;AAAU,cAAAU,KAAE,IAAIiE,IAAG9E,IAAEF,EAAC,EAAE,KAAKK,GAAE,MAAM;AAAE;AAAA,YAAM,KAAI;AAAU,cAAAU,KAAE,IAAIgF,IAAG7F,IAAEF,EAAC,EAAE,KAAKK,GAAE,MAAM;AAAE;AAAA,YAAM,KAAI;AAAA,YAAM,KAAI;AAAA,YAAQ,KAAI;AAAY,cAAAU,KAAEb,GAAE,IAAI,KAAKG,GAAE,MAAM;AAAE;AAAA,YAAM,KAAI;AAAY,cAAAU,KAAED,GAAE,KAAKT,GAAE,MAAM;AAAE;AAAA,YAAM,KAAI;AAAQ,cAAAU,KAAEH,GAAE,KAAKP,GAAE,MAAM;AAAE;AAAA,YAAM;AAAQ,cAAAU,KAAEN,GAAE,KAAKJ,GAAE,MAAM;AAAA,UAAC;AAAC,iBAAOU;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAIhB,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAEF,GAAE;AAAO,UAAAE,GAAE,MAAM,QAAMA,GAAE,MAAM,SAAO,QAAOA,GAAE,MAAM,SAAOA,GAAE,MAAM,UAAQ,QAAOD,GAAE,WAASC,GAAE,MAAM,OAAMD,GAAE,YAAUC,GAAE,MAAM;AAAO,cAAIC,KAAEgB,GAAE,cAAc,KAAK,EAAE,GAAEd,KAAEH,GAAE,MAAM,MAAM,SAAS,EAAE,MAAM,SAAS,EAAE,IAAI;AAAE,kBAAMG,KAAEc,GAAE,SAAShB,GAAE,CAAC,CAAC,MAAI,MAAIA,GAAE,CAAC,EAAE,UAAQA,KAAEgB,GAAE,cAAc,KAAK,GAAG,UAAU,IAAGlB,GAAE,WAASE,GAAE,CAAC,IAAE,SAASD,GAAE,MAAM,OAAM,EAAE,IAAE,OAAK,SAAOG,MAAG,OAAKA,OAAIJ,GAAE,WAAS,SAASC,GAAE,MAAM,OAAM,EAAE;AAAG,cAAII,KAAE,OAAOJ,GAAE,MAAM,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,EAAE,IAAI;AAAE,cAAG,WAASD,GAAE,aAAW,OAAKA,GAAE,UAAU,KAAG,QAAMK,IAAE;AAAC,gBAAIE,KAAEW,GAAE,cAAc,KAAK,GAAG,UAAU;AAAE,YAAAlB,GAAE,YAAUO,GAAE,CAAC,IAAE,SAASN,GAAE,MAAM,QAAO,EAAE,IAAE;AAAA,UAAG,MAAM,CAAAD,GAAE,YAAU,SAASC,GAAE,MAAM,QAAO,EAAE;AAAA,cAAO,CAAAD,GAAE,YAAUA,GAAE,aAAWA,GAAE,WAAS,OAAKA,GAAE,WAAS;AAAI,cAAGA,GAAE,WAAS,KAAK,IAAIA,GAAE,UAAS,CAAC,GAAEA,GAAE,YAAU,KAAK,IAAIA,GAAE,WAAU,CAAC,GAAEqB,GAAE,SAASrB,GAAE,IAAI,MAAM,MAAK,EAAC,OAAMA,GAAE,UAAS,QAAOA,GAAE,UAAS,CAAC,GAAE,QAAMK,IAAE;AAAC,gBAAIG,KAAEP,GAAE,MAAM,UAAU,UAAQ,IAAED,GAAE,aAAWC,GAAE,MAAM,qBAAmB;AAAE,YAAAD,GAAE,IAAI,MAAM,KAAK,WAAW,WAAW,MAAM,YAAU,GAAG,OAAOA,GAAE,YAAUQ,IAAE,IAAI;AAAA,UAAC;AAAC,UAAAR,GAAE,IAAI,OAAO,MAAM,QAAM,GAAG,OAAOA,GAAE,UAAS,IAAI,GAAEA,GAAE,IAAI,OAAO,MAAM,SAAO,GAAG,OAAOA,GAAE,WAAU,IAAI;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK,EAAE,SAAQC,KAAED,GAAE,YAAWE,KAAEF,GAAE;AAAW,UAAAsB,GAAE,SAAStB,GAAE,IAAI,YAAY,MAAK,EAAC,WAAU,aAAa,OAAOE,IAAE,IAAI,EAAE,OAAOD,IAAE,GAAG,EAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK,GAAEC,KAAED,GAAE,SAAQE,KAAE,GAAEC,KAAEH,GAAE,OAAO,MAAM,UAAU,UAAQ,IAAE;AAAG,UAAAG,MAAGH,GAAE,OAAO,KAAK,QAAQ,QAAO,CAAC,OAAM,QAAQ,EAAE,SAASA,GAAE,OAAO,OAAO,QAAQ,KAAGA,GAAE,OAAO,OAAO,QAAM,CAACA,GAAE,OAAO,OAAO,aAAWE,KAAE,IAAI+D,IAAG,KAAK,GAAG,EAAE,cAAc,oBAAoB,EAAE,OAAK;AAAG,cAAI5D,KAAEL,GAAE,QAAQ,IAAI,OAAO,cAAc,wCAAwC,GAAEM,KAAE,OAAKN,GAAE,QAAQ;AAAW,cAAGK,MAAG,CAACL,GAAE,OAAO,MAAM,UAAU,WAAS,MAAIA,GAAE,OAAO,YAAY,UAAU,YAAW;AAAC,gBAAIQ,KAAEW,GAAE,sBAAsBd,EAAC;AAAE,YAAAC,KAAEE,GAAE;AAAO,gBAAIC,KAAED,GAAE,SAAOA,GAAE;AAAI,YAAAF,KAAE,KAAK,IAAI,OAAKN,GAAE,QAAQ,YAAWS,EAAC;AAAA,UAAC;AAAC,cAAIE,KAAE,KAAK,KAAKL,KAAEL,GAAE,aAAWC,KAAEC,EAAC;AAAE,UAAAF,GAAE,IAAI,mBAAiBA,GAAE,IAAI,gBAAgB,aAAa,UAASU,EAAC,GAAEX,GAAE,OAAO,MAAM,UAAQ,OAAOA,GAAE,OAAO,MAAM,MAAM,EAAE,SAAS,GAAG,MAAIC,GAAE,IAAI,OAAO,MAAM,SAAO,GAAG,OAAOU,IAAE,IAAI,GAAEW,GAAE,SAASrB,GAAE,IAAI,MAAM,MAAK,EAAC,QAAOU,GAAC,CAAC,GAAEV,GAAE,IAAI,MAAM,KAAK,WAAW,WAAW,MAAM,YAAU,GAAG,OAAOU,IAAE,IAAI;AAAA,QAAE,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAIuC,GAAE,KAAK,GAAG,EAAE,KAAK;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIlD,KAAE,MAAKC,KAAE,WAAU;AAAC,mBAAOD,GAAE,EAAE,OAAO,OAAO,IAAK,WAAU;AAAC,qBAAM,CAAC;AAAA,YAAC,CAAE;AAAA,UAAC,GAAEE,KAAE,IAAIoC,MAAEnC,KAAE,KAAK,EAAE;AAAQ,UAAAD,GAAE,eAAeC,EAAC,GAAEA,GAAE,gBAAcF,GAAE,GAAEE,GAAE,gBAAcF,GAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,iBAAM,CAAC,EAAE,MAAM,QAAQ,KAAK,EAAE,OAAO,KAAK,KAAG,KAAK,EAAE,OAAO,MAAM,SAAO,OAAK,KAAK,EAAE,QAAQ,kBAAgB,MAAG;AAAA,QAAG,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,cAAID,KAAE,KAAK,GAAEC,KAAE;AAAK,cAAGD,GAAE,QAAQ,YAAW;AAAC,gBAAG,WAASA,GAAE,OAAO,MAAM,WAAW,YAAU,IAAIuD,IAAG,KAAK,GAAG,EAAE,gBAAgB,GAAE,WAASvD,GAAE,OAAO,MAAM,CAAC,EAAE,WAAW,YAAU,IAAIuD,IAAG,KAAK,GAAG,EAAE,gBAAgB,GAAE,eAAavD,GAAE,OAAO,MAAM,QAAM,WAASA,GAAE,OAAO,MAAM,OAAO,WAAU;AAAC,mBAAK,IAAI,YAAU,IAAImG,IAAG,KAAK,GAAG;AAAE,kBAAIjG,KAAE,CAAC;AAAE,uBAASF,GAAE,QAAQ,IAAI,KAAG,SAASA,GAAE,QAAQ,IAAI,KAAG,CAACA,GAAE,QAAQ,kBAAgBE,KAAE,KAAK,IAAI,UAAU,wBAAwBF,GAAE,QAAQ,MAAKA,GAAE,QAAQ,IAAI,IAAEA,GAAE,QAAQ,oBAAkBE,KAAE,KAAK,IAAI,UAAU,wBAAwBF,GAAE,QAAQ,MAAKA,GAAE,QAAQ,IAAI,IAAG,KAAK,IAAI,UAAU,8BAA8BE,EAAC;AAAA,YAAC;AAAC,YAAAD,KAAE,IAAIsB,GAAE,KAAK,GAAG,EAAE,oBAAoB;AAAA,UAAC;AAAC,iBAAOtB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,SAASD,IAAE;AAAC,eAAK,IAAI,EAAE,QAAQ,YAAU,QAAO,KAAK,IAAI,cAAc,eAAe,EAAC,OAAM,EAAC,WAAU,EAAC,OAAM,EAAC,KAAIA,GAAE,EAAE,QAAQ,MAAK,KAAIA,GAAE,EAAE,QAAQ,KAAI,EAAC,EAAC,EAAC,GAAE,OAAG,KAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,qBAAoB,OAAM,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK;AAAE,cAAGA,GAAE,OAAO,MAAM,MAAM,WAAS,cAAY,OAAOA,GAAE,OAAO,MAAM,OAAO,WAAU;AAAC,gBAAIC,KAAE,MAAM,QAAQD,GAAE,OAAO,MAAM,MAAM,OAAO,IAAEA,GAAE,OAAO,MAAM,MAAM,UAAQ,CAACA,GAAE,OAAO,MAAM,MAAM,MAAM;AAAE,YAAAC,GAAE,QAAS,SAASD,IAAE;AAAC,kBAAIC,KAAE,WAAW,aAAaD,EAAC;AAAE,cAAAC,GAAE,EAAE,QAAQ,cAAYF,GAAE,KAAI,cAAY,OAAOE,GAAE,EAAE,OAAO,MAAM,OAAO,WAASA,GAAE,EAAE,OAAO,MAAM,OAAO,SAAO,WAAU;AAAC,uBAAOF,GAAE,kBAAkBE,EAAC;AAAA,cAAC,IAAG,cAAY,OAAOA,GAAE,EAAE,OAAO,MAAM,OAAO,aAAWA,GAAE,EAAE,OAAO,MAAM,OAAO,WAAS,WAAU;AAAC,uBAAOF,GAAE,kBAAkBE,EAAC;AAAA,cAAC;AAAA,YAAE,CAAE,GAAED,GAAE,OAAO,MAAM,OAAO,YAAU,SAASD,IAAEC,IAAE;AAAC,cAAAC,GAAE,QAAS,SAASF,IAAE;AAAC,2BAAW,aAAaA,EAAC,EAAE,IAAI,cAAc,eAAe,EAAC,OAAM,EAAC,KAAIC,GAAE,MAAM,KAAI,KAAIA,GAAE,MAAM,IAAG,EAAC,GAAE,OAAG,OAAG,OAAG,KAAE;AAAA,cAAC,CAAE;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAr+sB,UAAu+sBqG,MAAG,WAAU;AAAC,iBAASrG,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEE,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC;AAAE,iBAAO,IAAI,QAAS,SAASE,IAAE;AAAC,gBAAIC,KAAE,CAACR,GAAE,GAAG;AAAE,YAAAI,OAAII,KAAER,GAAE,IAAI,gBAAgB,IAAGA,GAAE,IAAI,EAAE,QAAQ,iBAAeQ,KAAE,CAACR,GAAE,GAAG,GAAEA,GAAE,IAAI,EAAE,QAAQ,eAAa,QAAIQ,GAAE,QAAS,SAASJ,IAAEM,IAAE;AAAC,kBAAIC,KAAEP,GAAE;AAAE,kBAAGO,GAAE,QAAQ,gBAAcT,IAAED,OAAIU,GAAE,QAAQ,UAAQ,MAAGA,GAAE,QAAQ,cAAY,MAAGT,MAAGE,GAAE,OAAO,iBAAiB,IAAGL,MAAG,aAAWkB,GAAElB,EAAC,MAAIK,GAAE,SAAO,IAAIgC,GAAErC,EAAC,GAAEA,KAAEuB,GAAE,iBAAiBlB,GAAE,QAAOL,IAAEY,EAAC,GAAEP,GAAE,EAAE,QAAQ,YAAUJ,GAAE,IAAI,EAAE,QAAQ,WAAS,OAAOD,GAAE,QAAOY,GAAE,SAAOO,GAAE,OAAOP,GAAE,QAAOZ,EAAC,GAAEM,OAAIM,GAAE,QAAQ,YAAUZ,GAAE,QAAMmB,GAAE,MAAMnB,GAAE,KAAK,IAAE,CAAC,GAAEY,GAAE,QAAQ,YAAUZ,GAAE,QAAMmB,GAAE,MAAMnB,GAAE,KAAK,IAAE,CAAC,GAAEY,GAAE,QAAQ,gBAAcO,GAAE,OAAO,CAAC,GAAEP,GAAE,MAAM,GAAEA,GAAE,QAAQ,gBAAcO,GAAE,MAAMP,GAAE,OAAO,MAAM,GAAEZ,GAAE,UAAS;AAAC,yBAAQU,KAAE,GAAEA,KAAEE,GAAE,QAAQ,uBAAuB,QAAOF,MAAI;AAAC,sBAAII,KAAEF,GAAE,OAAO,OAAOA,GAAE,QAAQ,uBAAuBF,EAAC,CAAC;AAAE,kBAAAE,GAAE,QAAQ,gBAAgBF,EAAC,EAAE,OAAKE,GAAE,QAAQ,aAAWE,GAAE,KAAK,MAAM,IAAEA;AAAA,gBAAC;AAAC,yBAAQC,KAAE,GAAEA,KAAEH,GAAE,QAAQ,gCAAgC,QAAOG,MAAI;AAAC,sBAAIF,KAAED,GAAE,OAAO,OAAOA,GAAE,QAAQ,gCAAgCG,EAAC,CAAC;AAAE,kBAAAH,GAAE,QAAQ,yBAAyBG,EAAC,EAAE,OAAKH,GAAE,QAAQ,aAAWC,GAAE,KAAK,MAAM,IAAEA;AAAA,gBAAC;AAAC,gBAAAR,GAAE,OAAO,qBAAqBO,GAAE,OAAO,MAAM;AAAA,cAAC;AAAC,qBAAOP,GAAE,OAAOL,EAAC,EAAE,KAAM,WAAU;AAAC,gBAAAW,OAAIF,GAAE,SAAO,KAAGD,GAAEH,EAAC;AAAA,cAAC,CAAE;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASL,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC;AAAE,iBAAO,IAAI,QAAS,SAASE,IAAE;AAAC,gBAAIC,IAAEE,KAAEN,GAAE;AAAE,mBAAOM,GAAE,QAAQ,gBAAcP,IAAEO,GAAE,QAAQ,cAAY,MAAGP,MAAGC,GAAE,IAAI,OAAO,iBAAiB,GAAEM,GAAE,QAAQ,cAAY,OAAKF,KAAEN,GAAE,IAAK,SAASA,IAAEC,IAAE;AAAC,qBAAOC,GAAE,cAAcF,IAAEC,EAAC;AAAA,YAAC,CAAE,GAAG,WAASK,KAAE,CAAC,EAAC,MAAK,CAAC,EAAC,CAAC,IAAGE,GAAE,OAAO,SAAOF,MAAGE,GAAE,OAAO,SAAOR,GAAE,MAAM,GAAEG,OAAIK,GAAE,QAAQ,cAAc,SAAOW,GAAE,MAAMX,GAAE,OAAO,MAAM,GAAEA,GAAE,QAAQ,gBAAcW,GAAE,MAAMX,GAAE,OAAO,MAAM,IAAGN,GAAE,IAAI,OAAO,EAAE,KAAM,WAAU;AAAC,cAAAG,GAAEH,GAAE,GAAG;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAED,GAAE,OAAO,OAAOD,EAAC;AAAE,iBAAOc,GAAEA,GAAE,CAAC,GAAEb,GAAE,OAAO,OAAOD,EAAC,CAAC,GAAE,CAAC,GAAE,EAAC,MAAKD,GAAE,OAAKA,GAAE,OAAK,QAAMG,KAAE,SAAOA,GAAE,MAAK,OAAMH,GAAE,QAAMA,GAAE,QAAM,QAAMG,KAAE,SAAOA,GAAE,OAAM,MAAKH,GAAE,OAAKA,GAAE,OAAK,QAAMG,KAAE,SAAOA,GAAE,MAAK,OAAMH,GAAE,QAAMA,GAAE,QAAM,QAAMG,KAAE,SAAOA,GAAE,OAAM,QAAO,WAASH,GAAE,SAAOA,GAAE,SAAO,QAAMG,KAAE,SAAOA,GAAE,QAAO,MAAKH,GAAE,OAAKA,GAAE,OAAK,QAAMG,KAAE,SAAOA,GAAE,MAAK,QAAO,WAASH,GAAE,SAAOA,GAAE,SAAOC,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAEC,KAAE,MAAKE,KAAE,wCAAwC,OAAOL,IAAE,IAAI;AAAE,iBAAOE,GAAE,QAAQ,aAAWC,KAAED,GAAE,QAAQ,IAAI,MAAM,OAAO,GAAG,OAAOG,IAAE,WAAW,EAAE,OAAOJ,IAAE,MAAM,EAAE,OAAOI,IAAE,aAAa,EAAE,OAAOJ,IAAE,MAAM,EAAE,OAAOI,IAAE,WAAW,EAAE,OAAOJ,IAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,IAAE,WAASA,OAAIE,KAAED,GAAE,QAAQ,IAAI,MAAM,OAAO,GAAG,OAAOG,IAAE,WAAW,EAAE,OAAOL,IAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAE,UAAQE,GAAE,OAAO,MAAM,QAAM,gBAAcA,GAAE,OAAO,MAAM,QAAM,YAAUA,GAAE,OAAO,MAAM,QAAM,KAAK,IAAI,IAAI,WAAWF,EAAC,IAAGG,MAAG,IAAImB,GAAE,KAAK,GAAG,EAAE,cAAcnB,IAAE,IAAI,GAAEA,GAAE,OAAKA,GAAE,OAAK,SAAO,QAAQ,KAAK,6CAA6C,GAAE;AAAA,QAAK,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAE,cAAG,CAAC,OAAM,KAAK,EAAE,QAAS,SAASC,IAAE;AAAC,uBAASF,GAAE,MAAME,EAAC,MAAID,GAAE,OAAO,MAAMC,EAAC,IAAEF,GAAE,MAAME,EAAC,GAAED,GAAE,QAAQ,UAAUC,EAAC,IAAEF,GAAE,MAAME,EAAC;AAAA,UAAE,CAAE,GAAEF,GAAE,MAAM,cAAYA,GAAE,MAAM,WAAW,WAASC,GAAE,OAAO,MAAM,aAAWD,GAAE,MAAM,aAAYC,GAAE,OAAO,MAAM,uBAAsB;AAAC,gBAAIC,KAAE,IAAIkC,GAAEpC,EAAC;AAAE,YAAAA,KAAEE,GAAE,yBAAyBF,IAAE,KAAK,GAAG;AAAA,UAAC;AAAC,iBAAOA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAE;AAAC,iBAAOA,GAAE,SAAOA,GAAE,MAAM,WAAS,WAASA,GAAE,MAAM,cAAY,MAAM,QAAQA,GAAE,KAAK,IAAEA,GAAE,MAAM,QAAS,SAASC,IAAEC,IAAE;AAAC,YAAAF,GAAE,MAAME,EAAC,EAAE,MAAI,GAAEF,GAAE,MAAME,EAAC,EAAE,MAAI;AAAA,UAAG,CAAE,KAAGF,GAAE,MAAM,MAAI,GAAEA,GAAE,MAAM,MAAI,OAAMA;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAEC,KAAED,GAAE,QAAQ,WAAUG,KAAEH,GAAE,QAAQ;AAAU,UAAAF,MAAGA,GAAE,UAAQG,KAAEH,GAAE,QAAOA,MAAGA,GAAE,UAAQK,KAAEL,GAAE,QAAOE,GAAE,OAAO,MAAM,MAAIC,GAAE,KAAID,GAAE,OAAO,MAAM,MAAIC,GAAE;AAAI,cAAIG,KAAE,SAASN,IAAE;AAAC,uBAASK,GAAEL,EAAC,MAAIE,GAAE,OAAO,MAAMF,EAAC,EAAE,MAAIK,GAAEL,EAAC,EAAE,KAAIE,GAAE,OAAO,MAAMF,EAAC,EAAE,MAAIK,GAAEL,EAAC,EAAE;AAAA,UAAI;AAAE,UAAAE,GAAE,OAAO,MAAM,IAAK,SAASF,IAAEG,IAAE;AAAC,YAAAD,GAAE,QAAQ,UAAQ,WAASG,GAAEF,EAAC,IAAEG,GAAEH,EAAC,IAAE,WAASF,GAAE,IAAI,KAAK,MAAME,EAAC,MAAIH,GAAE,MAAIC,GAAE,IAAI,KAAK,MAAME,EAAC,EAAE,KAAIH,GAAE,MAAIC,GAAE,IAAI,KAAK,MAAME,EAAC,EAAE;AAAA,UAAI,CAAE;AAAA,QAAC,EAAC,CAAC,CAAC,GAAEH;AAAA,MAAC,EAAE;AAAE,MAAA8F,MAAG,eAAa,OAAO,SAAO,SAAO,QAAOC,MAAG,SAAS/F,IAAEC,IAAE;AAAC,YAAIC,MAAG,WAAS,OAAK,OAAKF,IAAG,MAAI,SAASA,IAAE;AAAC,cAAGE,GAAE,UAAU,QAAOF,KAAE,IAAIE,GAAE,IAAIF,EAAC,GAAEE,GAAE,OAAO,QAAMA,GAAE,QAAQ,GAAEF;AAAA,QAAC;AAAE,YAAGE,GAAE,KAAG,8BAA6BA,GAAE,QAAM,iCAAgCA,GAAE,QAAM,gCAA+BA,GAAE,QAAM,oBAAmBA,GAAE,YAAU,MAAG,CAACA,GAAE,UAAU,QAAM;AAAG,QAAAA,GAAE,MAAI,KAAIA,GAAE,MAAI,SAASF,IAAE;AAAC,iBAAM,UAAQU,GAAEV,EAAC,IAAEE,GAAE;AAAA,QAAK,GAAEA,GAAE,SAAO,SAASF,IAAE;AAAC,cAAIE,KAAED,GAAE,gBAAgB,KAAK,IAAGD,EAAC;AAAE,iBAAOE,GAAE,aAAa,MAAK,KAAK,IAAIF,EAAC,CAAC,GAAEE;AAAA,QAAC,GAAEA,GAAE,SAAO,WAAU;AAAC,cAAIF,IAAEC;AAAE,UAAAA,MAAGD,KAAE,CAAC,EAAE,MAAM,KAAK,SAAS,GAAG,IAAI;AAAE,mBAAQG,KAAEH,GAAE,SAAO,GAAEG,MAAG,GAAEA,KAAI,KAAGH,GAAEG,EAAC,EAAE,UAAQE,MAAKJ,GAAE,CAAAD,GAAEG,EAAC,EAAE,UAAUE,EAAC,IAAEJ,GAAEI,EAAC;AAAE,UAAAH,GAAE,OAAKA,GAAE,IAAI,WAASA,GAAE,IAAI,QAAQ;AAAA,QAAC,GAAEA,GAAE,SAAO,SAASF,IAAE;AAAC,cAAIC,KAAE,cAAY,OAAOD,GAAE,SAAOA,GAAE,SAAO,WAAU;AAAC,iBAAK,YAAY,KAAK,MAAKE,GAAE,OAAOF,GAAE,MAAM,CAAC;AAAA,UAAC;AAAE,iBAAOA,GAAE,YAAUC,GAAE,YAAU,IAAID,GAAE,YAASA,GAAE,UAAQE,GAAE,OAAOD,IAAED,GAAE,MAAM,GAAEA,GAAE,aAAWE,GAAE,OAAOF,GAAE,UAAQE,GAAE,WAAUF,GAAE,SAAS,GAAEC;AAAA,QAAC,GAAEC,GAAE,QAAM,SAASD,IAAE;AAAC,iBAAOA,KAAEA,GAAE,WAASA,GAAE,aAAWE,KAAE,SAAOF,GAAE,WAASA,GAAE,sBAAsBD,GAAE,aAAW,IAAIE,GAAE,WAAO,IAAIA,GAAE,QAAI,oBAAkBD,GAAE,WAAS,IAAIC,GAAE,SAAS,QAAQ,IAAE,oBAAkBD,GAAE,WAAS,IAAIC,GAAE,SAAS,QAAQ,IAAEA,GAAEQ,GAAET,GAAE,QAAQ,CAAC,IAAE,IAAIC,GAAEQ,GAAET,GAAE,QAAQ,CAAC,MAAG,IAAIC,GAAE,QAAQD,EAAC,GAAG,OAAKA,GAAE,UAASE,GAAE,OAAKF,IAAEA,GAAE,WAASE,IAAEA,cAAaD,GAAE,OAAKC,GAAE,UAAU,EAAE,KAAK,GAAEA,GAAE,QAAQ,KAAK,MAAMF,GAAE,aAAa,YAAY,CAAC,KAAG,CAAC,CAAC,GAAEE,MAAG;AAAK,cAAIA;AAAA,QAAC,GAAED,GAAE,UAAQ,WAAU;AAAC,cAAIF,KAAEC,GAAE,qBAAqB,MAAM,EAAE,CAAC,GAAEE,MAAGH,KAAE,IAAIE,GAAE,IAAIF,EAAC,IAAEE,GAAE,MAAMD,GAAE,eAAe,EAAE,OAAO,GAAG,KAAK,GAAE,CAAC;AAAE,UAAAC,GAAE,SAAO,EAAC,MAAKF,MAAGC,GAAE,iBAAgB,MAAKE,GAAE,MAAM,kEAAkE,EAAE,MAAK,MAAKA,GAAE,SAAS,EAAE,MAAK,MAAKA,GAAE,KAAK,EAAE,MAAK,QAAOD,GAAE,OAAO,KAAK,EAAC;AAAA,QAAC,GAAEA,GAAE,SAAO,EAAC,QAAOA,GAAE,OAAO,KAAK,EAAC,GAAED,GAAE,iBAAiB,oBAAoB,WAAU;AAAC,UAAAC,GAAE,OAAO,QAAMA,GAAE,QAAQ;AAAA,QAAC,GAAG,KAAE,GAAEA,GAAE,QAAM,EAAC,eAAc,sDAAqD,KAAI,6CAA4C,KAAI,4BAA2B,WAAU,oBAAmB,YAAW,cAAa,YAAW,OAAM,OAAM,qBAAoB,OAAM,UAAS,OAAM,iBAAgB,SAAQ,YAAW,UAAS,2CAA0C,WAAU,gBAAe,SAAQ,yCAAwC,WAAU,UAAS,QAAO,cAAa,aAAY,kBAAiB,cAAa,iBAAgB,iBAAgB,2DAA0D,MAAK,MAAK,GAAEA,GAAE,QAAM,EAAC,KAAI,SAASF,IAAEC,IAAE;AAAC,mBAAQC,KAAEF,GAAE,QAAOG,KAAE,CAAC,GAAEE,KAAE,GAAEA,KAAEH,IAAEG,KAAI,CAAAF,GAAE,KAAKF,GAAED,GAAEK,EAAC,CAAC,CAAC;AAAE,iBAAOF;AAAA,QAAC,GAAE,QAAO,SAASH,IAAEC,IAAE;AAAC,mBAAQC,KAAEF,GAAE,QAAOG,KAAE,CAAC,GAAEE,KAAE,GAAEA,KAAEH,IAAEG,KAAI,CAAAJ,GAAED,GAAEK,EAAC,CAAC,KAAGF,GAAE,KAAKH,GAAEK,EAAC,CAAC;AAAE,iBAAOF;AAAA,QAAC,GAAE,mBAAkB,SAASF,IAAE;AAAC,iBAAO,KAAK,OAAOA,IAAG,SAASA,IAAE;AAAC,mBAAOA,cAAaD,GAAE;AAAA,UAAU,CAAE;AAAA,QAAC,EAAC,GAAEE,GAAE,WAAS,EAAC,OAAM,EAAC,gBAAe,GAAE,kBAAiB,GAAE,gBAAe,GAAE,mBAAkB,SAAQ,kBAAiB,QAAO,MAAK,WAAU,QAAO,WAAU,SAAQ,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,OAAM,GAAE,QAAO,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,QAAO,GAAE,gBAAe,GAAE,cAAa,WAAU,aAAY,IAAG,eAAc,gCAA+B,eAAc,QAAO,EAAC,GAAEA,GAAE,QAAM,SAASF,IAAE;AAAC,cAAIC,IAAEE;AAAE,eAAK,IAAE,GAAE,KAAK,IAAE,GAAE,KAAK,IAAE,GAAEH,OAAI,YAAU,OAAOA,KAAEE,GAAE,MAAM,MAAM,KAAKF,EAAC,KAAGC,KAAEC,GAAE,MAAM,IAAI,KAAKF,GAAE,QAAQE,GAAE,MAAM,YAAW,EAAE,CAAC,GAAE,KAAK,IAAE,SAASD,GAAE,CAAC,CAAC,GAAE,KAAK,IAAE,SAASA,GAAE,CAAC,CAAC,GAAE,KAAK,IAAE,SAASA,GAAE,CAAC,CAAC,KAAGC,GAAE,MAAM,MAAM,KAAKF,EAAC,MAAIC,KAAEC,GAAE,MAAM,IAAI,KAAK,MAAIC,KAAEH,IAAG,SAAO,CAAC,KAAIG,GAAE,UAAU,GAAE,CAAC,GAAEA,GAAE,UAAU,GAAE,CAAC,GAAEA,GAAE,UAAU,GAAE,CAAC,GAAEA,GAAE,UAAU,GAAE,CAAC,GAAEA,GAAE,UAAU,GAAE,CAAC,GAAEA,GAAE,UAAU,GAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAEA,EAAC,GAAE,KAAK,IAAE,SAASF,GAAE,CAAC,GAAE,EAAE,GAAE,KAAK,IAAE,SAASA,GAAE,CAAC,GAAE,EAAE,GAAE,KAAK,IAAE,SAASA,GAAE,CAAC,GAAE,EAAE,KAAG,aAAWiB,GAAElB,EAAC,MAAI,KAAK,IAAEA,GAAE,GAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,IAAEA,GAAE;AAAA,QAAG,GAAEE,GAAE,OAAOA,GAAE,OAAM,EAAC,UAAS,WAAU;AAAC,iBAAO,KAAK,MAAM;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAM,MAAIY,GAAE,KAAK,CAAC,IAAEA,GAAE,KAAK,CAAC,IAAEA,GAAE,KAAK,CAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAM,SAAO,CAAC,KAAK,GAAE,KAAK,GAAE,KAAK,CAAC,EAAE,KAAK,IAAE;AAAA,QAAG,GAAE,YAAW,WAAU;AAAC,iBAAO,KAAK,IAAE,MAAI,MAAG,KAAK,IAAE,MAAI,OAAI,KAAK,IAAE,MAAI;AAAA,QAAG,GAAE,OAAM,SAASd,IAAE;AAAC,iBAAO,KAAK,cAAY,IAAIE,GAAE,MAAMF,EAAC,GAAE;AAAA,QAAI,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,KAAK,eAAaA,KAAEA,KAAE,IAAE,IAAEA,KAAE,IAAE,IAAEA,IAAE,IAAIE,GAAE,MAAM,EAAC,GAAE,CAAC,EAAE,KAAK,KAAG,KAAK,YAAY,IAAE,KAAK,KAAGF,KAAG,GAAE,CAAC,EAAE,KAAK,KAAG,KAAK,YAAY,IAAE,KAAK,KAAGA,KAAG,GAAE,CAAC,EAAE,KAAK,KAAG,KAAK,YAAY,IAAE,KAAK,KAAGA,IAAE,CAAC,KAAG;AAAA,QAAI,EAAC,CAAC,GAAEE,GAAE,MAAM,OAAK,SAASF,IAAE;AAAC,iBAAOA,MAAG,IAAGE,GAAE,MAAM,MAAM,KAAKF,EAAC,KAAGE,GAAE,MAAM,MAAM,KAAKF,EAAC;AAAA,QAAC,GAAEE,GAAE,MAAM,QAAM,SAASF,IAAE;AAAC,iBAAOA,MAAG,YAAU,OAAOA,GAAE,KAAG,YAAU,OAAOA,GAAE,KAAG,YAAU,OAAOA,GAAE;AAAA,QAAC,GAAEE,GAAE,MAAM,UAAQ,SAASF,IAAE;AAAC,iBAAOE,GAAE,MAAM,MAAMF,EAAC,KAAGE,GAAE,MAAM,KAAKF,EAAC;AAAA,QAAC,GAAEE,GAAE,QAAM,SAASF,IAAEC,IAAE;AAAC,gBAAID,MAAGA,MAAG,CAAC,GAAG,QAAQ,GAAG,UAAQC,OAAID,KAAEC,GAAE,QAAQ,IAAG,KAAK,QAAM,KAAK,MAAMD,EAAC;AAAA,QAAC,GAAEE,GAAE,OAAOA,GAAE,OAAM,EAAC,UAAS,WAAU;AAAC,iBAAO,KAAK,MAAM,KAAK,GAAG;AAAA,QAAC,GAAE,SAAQ,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAK,GAAE,OAAM,SAASF,IAAE;AAAC,iBAAOA,KAAEA,GAAE,QAAQ,GAAE,MAAM,QAAQA,EAAC,IAAEA,KAAE,KAAK,MAAMA,EAAC;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,aAAW,SAASF,IAAEC,IAAE;AAAC,UAAAC,GAAE,MAAM,KAAK,MAAKF,IAAEC,MAAG,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC;AAAA,QAAC,GAAEC,GAAE,WAAW,YAAU,IAAIA,GAAE,SAAMA,GAAE,WAAW,UAAU,cAAYA,GAAE;AAAW,iBAAQC,KAAE,EAAC,GAAE,SAASH,IAAEC,IAAEC,IAAE;AAAC,iBAAOD,GAAE,IAAEC,GAAE,IAAEF,GAAE,CAAC,GAAEC,GAAE,IAAEC,GAAE,IAAEF,GAAE,CAAC,GAAE,CAAC,KAAIC,GAAE,GAAEA,GAAE,CAAC;AAAA,QAAC,GAAE,GAAE,SAASD,IAAEC,IAAE;AAAC,iBAAOA,GAAE,IAAED,GAAE,CAAC,GAAEC,GAAE,IAAED,GAAE,CAAC,GAAE,CAAC,KAAIA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAEC,IAAE;AAAC,iBAAOA,GAAE,IAAED,GAAE,CAAC,GAAE,CAAC,KAAIA,GAAE,CAAC,CAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAEC,IAAE;AAAC,iBAAOA,GAAE,IAAED,GAAE,CAAC,GAAE,CAAC,KAAIA,GAAE,CAAC,CAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAEC,IAAE;AAAC,iBAAOA,GAAE,IAAED,GAAE,CAAC,GAAEC,GAAE,IAAED,GAAE,CAAC,GAAE,CAAC,KAAIA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAEC,IAAE;AAAC,iBAAOA,GAAE,IAAED,GAAE,CAAC,GAAEC,GAAE,IAAED,GAAE,CAAC,GAAE,CAAC,KAAIA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAEC,IAAE;AAAC,iBAAOA,GAAE,IAAED,GAAE,CAAC,GAAEC,GAAE,IAAED,GAAE,CAAC,GAAE,CAAC,KAAIA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAEC,IAAEC,IAAE;AAAC,iBAAOD,GAAE,IAAEC,GAAE,GAAED,GAAE,IAAEC,GAAE,GAAE,CAAC,GAAG;AAAA,QAAC,EAAC,GAAEG,KAAE,aAAa,MAAM,EAAE,GAAEC,KAAE,GAAEE,KAAEH,GAAE,QAAOC,KAAEE,IAAE,EAAEF,GAAE,CAAAH,GAAEE,GAAEC,EAAC,CAAC,IAAE,yBAASN,IAAE;AAAC,iBAAO,SAASC,IAAEC,IAAEG,IAAE;AAAC,gBAAG,OAAKL,GAAE,CAAAC,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAEC,GAAE;AAAA,qBAAU,OAAKF,GAAE,CAAAC,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAEC,GAAE;AAAA,qBAAU,OAAKF,GAAE,CAAAC,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAEC,GAAE,GAAED,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAEC,GAAE;AAAA,gBAAO,UAAQI,KAAE,GAAEE,KAAEP,GAAE,QAAOK,KAAEE,IAAE,EAAEF,GAAE,CAAAL,GAAEK,EAAC,IAAEL,GAAEK,EAAC,KAAGA,KAAE,IAAEJ,GAAE,IAAEA,GAAE;AAAG,gBAAGC,MAAG,cAAY,OAAOA,GAAEH,EAAC,EAAE,QAAOG,GAAEH,EAAC,EAAEC,IAAEC,IAAEG,EAAC;AAAA,UAAC;AAAA,QAAC,EAAEA,GAAEC,EAAC,EAAE,YAAY,CAAC;AAAE,QAAAJ,GAAE,YAAU,SAASF,IAAEC,IAAE;AAAC,UAAAC,GAAE,MAAM,KAAK,MAAKF,IAAEC,MAAG,CAAC,CAAC,KAAI,GAAE,CAAC,CAAC,CAAC;AAAA,QAAC,GAAEC,GAAE,UAAU,YAAU,IAAIA,GAAE,SAAMA,GAAE,UAAU,UAAU,cAAYA,GAAE,WAAUA,GAAE,OAAOA,GAAE,WAAU,EAAC,UAAS,WAAU;AAAC,iBAAO,SAASF,IAAE;AAAC,qBAAQC,KAAE,GAAEC,KAAEF,GAAE,QAAOG,KAAE,IAAGF,KAAEC,IAAED,KAAI,CAAAE,MAAGH,GAAEC,EAAC,EAAE,CAAC,GAAE,QAAMD,GAAEC,EAAC,EAAE,CAAC,MAAIE,MAAGH,GAAEC,EAAC,EAAE,CAAC,GAAE,QAAMD,GAAEC,EAAC,EAAE,CAAC,MAAIE,MAAG,KAAIA,MAAGH,GAAEC,EAAC,EAAE,CAAC,GAAE,QAAMD,GAAEC,EAAC,EAAE,CAAC,MAAIE,MAAG,KAAIA,MAAGH,GAAEC,EAAC,EAAE,CAAC,GAAEE,MAAG,KAAIA,MAAGH,GAAEC,EAAC,EAAE,CAAC,GAAE,QAAMD,GAAEC,EAAC,EAAE,CAAC,MAAIE,MAAG,KAAIA,MAAGH,GAAEC,EAAC,EAAE,CAAC,GAAEE,MAAG,KAAIA,MAAGH,GAAEC,EAAC,EAAE,CAAC,GAAE,QAAMD,GAAEC,EAAC,EAAE,CAAC,MAAIE,MAAG,KAAIA,MAAGH,GAAEC,EAAC,EAAE,CAAC;AAAO,mBAAOE,KAAE;AAAA,UAAG,EAAE,KAAK,KAAK;AAAA,QAAC,GAAE,MAAK,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,KAAK;AAAE,iBAAOA,GAAE,GAAEA,GAAE,GAAE;AAAA,QAAI,GAAE,IAAG,SAASF,IAAE;AAAC,cAAG,CAAC,KAAK,YAAY,QAAO;AAAK,mBAAQC,KAAE,KAAK,OAAME,KAAE,KAAK,YAAY,OAAME,KAAE,CAAC,GAAEC,KAAE,IAAIJ,GAAE,aAAUM,KAAE,GAAEC,KAAER,GAAE,QAAOO,KAAEC,IAAED,MAAI;AAAC,YAAAH,GAAEG,EAAC,IAAE,CAACP,GAAEO,EAAC,EAAE,CAAC,CAAC;AAAE,qBAAQG,KAAE,GAAEC,KAAEX,GAAEO,EAAC,EAAE,QAAOG,KAAEC,IAAED,KAAI,CAAAN,GAAEG,EAAC,EAAEG,EAAC,IAAEV,GAAEO,EAAC,EAAEG,EAAC,KAAGR,GAAEK,EAAC,EAAEG,EAAC,IAAEV,GAAEO,EAAC,EAAEG,EAAC,KAAGX;AAAE,oBAAMK,GAAEG,EAAC,EAAE,CAAC,MAAIH,GAAEG,EAAC,EAAE,CAAC,IAAE,EAAE,KAAGH,GAAEG,EAAC,EAAE,CAAC,IAAGH,GAAEG,EAAC,EAAE,CAAC,IAAE,EAAE,KAAGH,GAAEG,EAAC,EAAE,CAAC;AAAA,UAAG;AAAC,iBAAOF,GAAE,QAAMD,IAAEC;AAAA,QAAC,GAAE,OAAM,SAASN,IAAE;AAAC,cAAGA,cAAaE,GAAE,UAAU,QAAOF,GAAE,QAAQ;AAAE,cAAIC,IAAEI,KAAE,EAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,EAAC;AAAE,UAAAL,KAAE,YAAU,OAAOA,KAAEA,GAAE,QAAQE,GAAE,MAAM,iBAAgBS,EAAC,EAAE,QAAQT,GAAE,MAAM,aAAY,MAAM,EAAE,QAAQA,GAAE,MAAM,QAAO,MAAM,EAAE,KAAK,EAAE,MAAMA,GAAE,MAAM,SAAS,IAAEF,GAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,mBAAM,CAAC,EAAE,OAAO,KAAKD,IAAEC,EAAC;AAAA,UAAC,GAAG,CAAC,CAAC;AAAE,cAAIK,KAAE,CAAC,GAAEE,KAAE,IAAIN,GAAE,SAAMO,KAAE,IAAIP,GAAE,SAAMU,KAAE,GAAEF,KAAEV,GAAE;AAAO,aAAE;AAAC,YAAAE,GAAE,MAAM,aAAa,KAAKF,GAAEY,EAAC,CAAC,KAAGX,KAAED,GAAEY,EAAC,GAAE,EAAEA,MAAG,OAAKX,KAAEA,KAAE,MAAI,OAAKA,OAAIA,KAAE,MAAKK,GAAE,KAAKH,GAAEF,EAAC,EAAE,KAAK,MAAKD,GAAE,MAAMY,IAAEA,MAAGP,GAAEJ,GAAE,YAAY,CAAC,CAAC,EAAE,IAAI,UAAU,GAAEO,IAAEC,EAAC,CAAC;AAAA,UAAC,SAAOC,KAAEE;AAAG,iBAAON;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,iBAAOJ,GAAE,OAAO,QAAMA,GAAE,QAAQ,GAAEA,GAAE,OAAO,KAAK,aAAa,KAAI,KAAK,SAAS,CAAC,GAAEA,GAAE,OAAO,KAAK,QAAQ;AAAA,QAAC,EAAC,CAAC,GAAEA,GAAE,SAAOA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAEC,IAAE;AAAC,eAAK,QAAM,GAAE,KAAK,OAAKA,MAAG,IAAG,YAAU,OAAOD,KAAE,KAAK,QAAM,MAAMA,EAAC,IAAE,IAAE,SAASA,EAAC,IAAEA,KAAEA,KAAE,IAAE,SAAO,QAAM,YAAU,OAAOA,MAAGC,KAAED,GAAE,MAAME,GAAE,MAAM,aAAa,OAAK,KAAK,QAAM,WAAWD,GAAE,CAAC,CAAC,GAAE,OAAKA,GAAE,CAAC,IAAE,KAAK,SAAO,MAAI,OAAKA,GAAE,CAAC,MAAI,KAAK,SAAO,MAAK,KAAK,OAAKA,GAAE,CAAC,KAAGD,cAAaE,GAAE,WAAS,KAAK,QAAMF,GAAE,QAAQ,GAAE,KAAK,OAAKA,GAAE;AAAA,QAAK,GAAE,QAAO,EAAC,UAAS,WAAU;AAAC,kBAAO,OAAK,KAAK,OAAK,CAAC,EAAE,MAAI,KAAK,SAAO,MAAI,OAAK,KAAK,OAAK,KAAK,QAAM,MAAI,KAAK,SAAO,KAAK;AAAA,QAAI,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK,SAAS;AAAA,QAAC,GAAE,SAAQ,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAK,GAAE,MAAK,SAASA,IAAE;AAAC,iBAAOA,KAAE,IAAIE,GAAE,OAAOF,EAAC,GAAE,IAAIE,GAAE,OAAO,OAAKF,IAAE,KAAK,QAAMA,GAAE,IAAI;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAOA,KAAE,IAAIE,GAAE,OAAOF,EAAC,GAAE,IAAIE,GAAE,OAAO,OAAKF,IAAE,KAAK,QAAMA,GAAE,IAAI;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAOA,KAAE,IAAIE,GAAE,OAAOF,EAAC,GAAE,IAAIE,GAAE,OAAO,OAAKF,IAAE,KAAK,QAAMA,GAAE,IAAI;AAAA,QAAC,GAAE,QAAO,SAASA,IAAE;AAAC,iBAAOA,KAAE,IAAIE,GAAE,OAAOF,EAAC,GAAE,IAAIE,GAAE,OAAO,OAAKF,IAAE,KAAK,QAAMA,GAAE,IAAI;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,cAAIC,KAAE,IAAIC,GAAE,OAAO,IAAI;AAAE,iBAAM,YAAU,OAAOF,OAAIC,GAAE,OAAKD,KAAGC;AAAA,QAAC,GAAE,OAAM,SAASD,IAAE;AAAC,iBAAO,KAAK,cAAY,IAAIE,GAAE,OAAOF,EAAC,GAAEA,GAAE,aAAW,KAAK,YAAY,SAAO,KAAK,QAAO;AAAA,QAAI,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,KAAK,cAAY,IAAIE,GAAE,OAAO,KAAK,WAAW,EAAE,MAAM,IAAI,EAAE,MAAMF,EAAC,EAAE,KAAK,IAAI,IAAE;AAAA,QAAI,EAAC,EAAC,CAAC,GAAEE,GAAE,UAAQA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,eAAK,UAAQE,GAAE,SAAS,MAAM,QAAO,KAAK,SAAO,MAAK,KAAK,MAAI,CAAC,IAAG,KAAK,OAAKF,QAAK,KAAK,OAAKA,GAAE,UAAS,KAAK,KAAK,WAAS,MAAK,KAAK,UAAQA,GAAE,aAAa,QAAQ,KAAG,KAAK;AAAA,QAAQ,GAAE,QAAO,EAAC,GAAE,SAASA,IAAE;AAAC,iBAAO,KAAK,KAAK,KAAIA,EAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAE;AAAC,iBAAO,KAAK,KAAK,KAAIA,EAAC;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,EAAE,IAAE,KAAK,MAAM,IAAE,IAAE,KAAK,EAAEA,KAAE,KAAK,MAAM,IAAE,CAAC;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,EAAE,IAAE,KAAK,OAAO,IAAE,IAAE,KAAK,EAAEA,KAAE,KAAK,OAAO,IAAE,CAAC;AAAA,QAAC,GAAE,MAAK,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,EAAED,EAAC,EAAE,EAAEC,EAAC;AAAA,QAAC,GAAE,QAAO,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,GAAGD,EAAC,EAAE,GAAGC,EAAC;AAAA,QAAC,GAAE,OAAM,SAASD,IAAE;AAAC,iBAAO,KAAK,KAAK,SAAQA,EAAC;AAAA,QAAC,GAAE,QAAO,SAASA,IAAE;AAAC,iBAAO,KAAK,KAAK,UAASA,EAAC;AAAA,QAAC,GAAE,MAAK,SAASA,IAAEC,IAAE;AAAC,cAAIE,KAAEY,GAAE,MAAKf,IAAEC,EAAC;AAAE,iBAAO,KAAK,MAAM,IAAIC,GAAE,OAAOC,GAAE,KAAK,CAAC,EAAE,OAAO,IAAID,GAAE,OAAOC,GAAE,MAAM,CAAC;AAAA,QAAC,GAAE,OAAM,SAASH,IAAE;AAAC,eAAK,eAAe;AAAE,cAAIC,KAAEgB,GAAE,KAAK,KAAK,UAAU,IAAE,CAAC;AAAE,iBAAOjB,KAAEA,GAAE,IAAIC,EAAC,IAAE,KAAK,MAAMA,EAAC,GAAEA;AAAA,QAAC,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,cAAc,IAAI,GAAE;AAAA,QAAI,GAAE,SAAQ,SAASD,IAAE;AAAC,iBAAO,KAAK,MAAMA,EAAC,EAAE,OAAO,GAAEA;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAOA,GAAE,IAAI,IAAI;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAOA,GAAE,IAAI,IAAI;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,iBAAO,KAAK,MAAM,WAAU,EAAE;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,iBAAO,KAAK,MAAM,WAAU,MAAM;AAAA,QAAC,GAAE,SAAQ,WAAU;AAAC,iBAAM,UAAQ,KAAK,MAAM,SAAS;AAAA,QAAC,GAAE,UAAS,WAAU;AAAC,iBAAO,KAAK,KAAK,IAAI;AAAA,QAAC,GAAE,SAAQ,WAAU;AAAC,cAAIA,KAAE,KAAK,KAAK,OAAO;AAAE,iBAAO,QAAMA,KAAE,CAAC,IAAEA,GAAE,KAAK,EAAE,MAAME,GAAE,MAAM,SAAS;AAAA,QAAC,GAAE,UAAS,SAASF,IAAE;AAAC,iBAAM,MAAI,KAAK,QAAQ,EAAE,QAAQA,EAAC;AAAA,QAAC,GAAE,UAAS,SAASA,IAAE;AAAC,cAAG,CAAC,KAAK,SAASA,EAAC,GAAE;AAAC,gBAAIC,KAAE,KAAK,QAAQ;AAAE,YAAAA,GAAE,KAAKD,EAAC,GAAE,KAAK,KAAK,SAAQC,GAAE,KAAK,GAAG,CAAC;AAAA,UAAC;AAAC,iBAAO;AAAA,QAAI,GAAE,aAAY,SAASD,IAAE;AAAC,iBAAO,KAAK,SAASA,EAAC,KAAG,KAAK,KAAK,SAAQ,KAAK,QAAQ,EAAE,OAAQ,SAASC,IAAE;AAAC,mBAAOA,MAAGD;AAAA,UAAC,CAAE,EAAE,KAAK,GAAG,CAAC,GAAE;AAAA,QAAI,GAAE,aAAY,SAASA,IAAE;AAAC,iBAAO,KAAK,SAASA,EAAC,IAAE,KAAK,YAAYA,EAAC,IAAE,KAAK,SAASA,EAAC;AAAA,QAAC,GAAE,WAAU,SAASA,IAAE;AAAC,iBAAOE,GAAE,IAAI,KAAK,KAAKF,EAAC,CAAC;AAAA,QAAC,GAAE,QAAO,SAASC,IAAE;AAAC,cAAIE,KAAE;AAAK,cAAG,CAACA,GAAE,KAAK,WAAW,QAAO;AAAK,cAAGA,KAAED,GAAE,MAAMC,GAAE,KAAK,UAAU,GAAE,CAACF,GAAE,QAAOE;AAAE,iBAAKA,MAAGA,GAAE,gBAAgBH,GAAE,cAAY;AAAC,gBAAG,YAAU,OAAOC,KAAEE,GAAE,QAAQF,EAAC,IAAEE,cAAaF,GAAE,QAAOE;AAAE,gBAAG,CAACA,GAAE,KAAK,cAAY,eAAaA,GAAE,KAAK,WAAW,SAAS,QAAO;AAAK,YAAAA,KAAED,GAAE,MAAMC,GAAE,KAAK,UAAU;AAAA,UAAC;AAAA,QAAC,GAAE,KAAI,WAAU;AAAC,iBAAO,gBAAgBD,GAAE,MAAI,OAAK,KAAK,OAAOA,GAAE,GAAG;AAAA,QAAC,GAAE,SAAQ,SAASF,IAAE;AAAC,cAAIC,KAAE,CAAC,GAAEC,KAAE;AAAK,aAAE;AAAC,gBAAG,EAAEA,KAAEA,GAAE,OAAOF,EAAC,MAAI,CAACE,GAAE,KAAK;AAAM,YAAAD,GAAE,KAAKC,EAAC;AAAA,UAAC,SAAOA,GAAE;AAAQ,iBAAOD;AAAA,QAAC,GAAE,SAAQ,SAASD,IAAE;AAAC,iBAAO,SAASA,IAAEC,IAAE;AAAC,oBAAOD,GAAE,WAASA,GAAE,mBAAiBA,GAAE,qBAAmBA,GAAE,sBAAoBA,GAAE,yBAAuBA,GAAE,kBAAkB,KAAKA,IAAEC,EAAC;AAAA,UAAC,EAAE,KAAK,MAAKD,EAAC;AAAA,QAAC,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAI,GAAE,KAAI,SAASA,IAAE;AAAC,cAAIG,KAAEF,GAAE,gBAAgB,8BAA6B,KAAK;AAAE,cAAG,EAAED,MAAG,gBAAgBE,GAAE,QAAQ,QAAOC,GAAE,YAAYH,KAAEC,GAAE,gBAAgB,8BAA6B,KAAK,CAAC,GAAE,KAAK,eAAe,GAAED,GAAE,YAAY,KAAK,KAAK,UAAU,IAAE,CAAC,GAAEG,GAAE,UAAU,QAAQ,UAAS,EAAE,EAAE,QAAQ,YAAW,EAAE;AAAE,UAAAA,GAAE,YAAU,UAAQH,GAAE,QAAQ,MAAK,EAAE,EAAE,QAAQ,0BAAyB,aAAa,IAAE;AAAS,mBAAQK,KAAE,GAAEC,KAAEH,GAAE,WAAW,WAAW,QAAOE,KAAEC,IAAED,KAAI,MAAK,KAAK,YAAYF,GAAE,WAAW,UAAU;AAAE,iBAAO;AAAA,QAAI,GAAE,gBAAe,WAAU;AAAC,kBAAO,KAAK,QAAM,KAAK,WAAS,KAAK,OAAK,OAAK,KAAK,MAAM,GAAG,KAAM,WAAU;AAAC,iBAAK,eAAe;AAAA,UAAC,CAAE,GAAE,KAAK,KAAK,gBAAgB,YAAY,GAAE,OAAO,KAAK,KAAK,GAAG,EAAE,UAAQ,KAAK,KAAK,aAAa,cAAa,KAAK,UAAU,KAAK,GAAG,CAAC,GAAE;AAAA,QAAI,GAAE,SAAQ,SAASH,IAAE;AAAC,iBAAO,KAAK,MAAIA,IAAE;AAAA,QAAI,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,SAASA,IAAEC,IAAE;AAAC,mBAAOD,cAAaC;AAAA,UAAC,EAAE,MAAKD,EAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEE,GAAE,SAAO,EAAC,KAAI,SAASF,IAAE;AAAC,iBAAOA;AAAA,QAAC,GAAE,MAAK,SAASA,IAAE;AAAC,iBAAM,CAAC,KAAK,IAAIA,KAAE,KAAK,EAAE,IAAE,IAAE;AAAA,QAAE,GAAE,KAAI,SAASA,IAAE;AAAC,iBAAO,KAAK,IAAIA,KAAE,KAAK,KAAG,CAAC;AAAA,QAAC,GAAE,KAAI,SAASA,IAAE;AAAC,iBAAO,IAAE,KAAK,IAAIA,KAAE,KAAK,KAAG,CAAC;AAAA,QAAC,EAAC,GAAEE,GAAE,QAAM,SAASF,IAAE;AAAC,iBAAO,SAASC,IAAEE,IAAE;AAAC,mBAAO,IAAID,GAAE,SAASD,IAAEE,EAAC,EAAE,GAAGH,EAAC;AAAA,UAAC;AAAA,QAAC,GAAEE,GAAE,YAAUA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,eAAK,OAAK,OAAG,KAAK,WAAS,OAAG,KAAK,YAAU,OAAG,KAAK,WAAS,IAAIE,GAAE,OAAOF,GAAE,QAAQ,EAAE,QAAQ,GAAE,KAAK,QAAM,IAAIE,GAAE,OAAOF,GAAE,KAAK,EAAE,QAAQ,GAAE,KAAK,QAAM,CAAC,oBAAI,SAAK,KAAK,OAAM,KAAK,SAAO,KAAK,QAAM,KAAK,UAAS,KAAK,OAAKA,GAAE,MAAK,KAAK,OAAK,GAAE,KAAK,QAAM,OAAG,KAAK,aAAW,CAAC,GAAE,KAAK,QAAM,CAAC,GAAE,KAAK,SAAO,CAAC,GAAE,KAAK,aAAW,CAAC,GAAE,KAAK,OAAK,CAAC;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,KAAGA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,eAAK,UAAQA,IAAE,KAAK,aAAW,CAAC,GAAE,KAAK,SAAO,OAAG,KAAK,YAAU,MAAK,KAAK,SAAO,OAAG,KAAK,UAAQ,GAAE,KAAK,MAAI,GAAE,KAAK,SAAO,GAAE,KAAK,SAAO;AAAA,QAAC,GAAE,QAAO,EAAC,SAAQ,SAASA,IAAEC,IAAEE,IAAE;AAAC,uBAAWe,GAAElB,EAAC,MAAIC,KAAED,GAAE,MAAKG,KAAEH,GAAE,OAAMA,KAAEA,GAAE;AAAU,cAAIK,KAAE,IAAIH,GAAE,UAAU,EAAC,UAASF,MAAG,KAAI,OAAMG,MAAG,GAAE,MAAKD,GAAE,OAAOD,MAAG,GAAG,KAAGA,GAAC,CAAC;AAAE,iBAAO,KAAK,MAAMI,EAAC,GAAE;AAAA,QAAI,GAAE,QAAO,SAASL,IAAE;AAAC,iBAAOA,MAAGA,cAAaE,GAAE,WAAS,KAAK,UAAQF,IAAE,QAAM,KAAK;AAAA,QAAO,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAOA,KAAE,KAAK,UAAU,UAAQ,KAAK,UAAU,WAAS,KAAK;AAAA,QAAO,GAAE,cAAa,SAASA,IAAE;AAAC,iBAAO,KAAK,UAAU,WAAS,KAAK,SAAOA,KAAE,KAAK,UAAU;AAAA,QAAK,GAAE,gBAAe,WAAU;AAAC,eAAK,cAAc,GAAE,KAAK,iBAAeA,GAAE,sBAAsB,WAAU;AAAC,iBAAK,KAAK;AAAA,UAAC,EAAE,KAAK,IAAI,CAAC;AAAA,QAAC,GAAE,eAAc,WAAU;AAAC,UAAAA,GAAE,qBAAqB,KAAK,cAAc;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAM,CAAC,KAAK,UAAQ,KAAK,cAAY,KAAK,SAAO,MAAG,KAAK,aAAa,IAAG;AAAA,QAAI,GAAE,cAAa,WAAU;AAAC,iBAAO,KAAK,UAAU,QAAM,CAAC,oBAAI,SAAK,KAAK,UAAU,QAAM,KAAK,QAAO,KAAK,UAAU,SAAO,KAAK,UAAU,QAAM,KAAK,UAAU,WAAS,KAAK,QAAO,KAAK,eAAe,EAAE,KAAK;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,kBAAO,cAAY,OAAOA,MAAGA,cAAaE,GAAE,cAAY,KAAK,WAAW,KAAKF,EAAC,GAAE,KAAK,cAAY,KAAK,YAAU,KAAK,WAAW,MAAM,IAAG;AAAA,QAAI,GAAE,SAAQ,WAAU;AAAC,iBAAO,KAAK,KAAK,GAAE,KAAK,YAAU,KAAK,WAAW,MAAM,GAAE,KAAK,cAAY,KAAK,qBAAqBE,GAAE,YAAU,KAAK,MAAM,IAAE,KAAK,UAAU,KAAK,IAAI,IAAG;AAAA,QAAI,GAAE,gBAAe,WAAU;AAAC,cAAIF,IAAEC,KAAE,KAAK;AAAU,cAAGA,GAAE,KAAK,QAAO;AAAK,mBAAQE,MAAKF,GAAE,YAAW;AAAC,YAAAD,KAAE,KAAK,OAAO,EAAEG,EAAC,EAAE,GAAE,MAAM,QAAQH,EAAC,MAAIA,KAAE,CAACA,EAAC,IAAG,MAAM,QAAQC,GAAE,WAAWE,EAAC,CAAC,MAAIF,GAAE,WAAWE,EAAC,IAAE,CAACF,GAAE,WAAWE,EAAC,CAAC;AAAG,qBAAQE,KAAEL,GAAE,QAAOK,OAAK,CAAAJ,GAAE,WAAWE,EAAC,EAAEE,EAAC,aAAYH,GAAE,WAASF,GAAEK,EAAC,IAAE,IAAIH,GAAE,OAAOF,GAAEK,EAAC,CAAC,IAAGJ,GAAE,WAAWE,EAAC,EAAEE,EAAC,IAAEL,GAAEK,EAAC,EAAE,MAAMJ,GAAE,WAAWE,EAAC,EAAEE,EAAC,CAAC;AAAA,UAAC;AAAC,mBAAQF,MAAKF,GAAE,MAAM,CAAAA,GAAE,MAAME,EAAC,IAAE,IAAID,GAAE,SAAS,KAAK,OAAO,EAAE,KAAKC,EAAC,GAAEF,GAAE,MAAME,EAAC,CAAC;AAAE,mBAAQA,MAAKF,GAAE,OAAO,CAAAA,GAAE,OAAOE,EAAC,IAAE,IAAID,GAAE,SAAS,KAAK,OAAO,EAAE,MAAMC,EAAC,GAAEF,GAAE,OAAOE,EAAC,CAAC;AAAE,iBAAOF,GAAE,wBAAsB,KAAK,OAAO,EAAE,UAAU,GAAEA,GAAE,OAAK,MAAG;AAAA,QAAI,GAAE,YAAW,WAAU;AAAC,iBAAO,KAAK,aAAW,CAAC,GAAE;AAAA,QAAI,GAAE,cAAa,WAAU;AAAC,iBAAO,KAAK,YAAU,MAAK;AAAA,QAAI,GAAE,MAAK,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK;AAAO,iBAAO,KAAK,SAAO,OAAGD,MAAG,KAAK,WAAW,GAAED,MAAG,KAAK,cAAY,CAACE,MAAG,KAAK,aAAa,GAAE,KAAK,MAAM,IAAG,KAAK,cAAc,GAAE,KAAK,aAAa;AAAA,QAAC,GAAE,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,KAAK,KAAK;AAAE,iBAAO,KAAK,OAAO,EAAE,GAAG,eAAe,SAASC,GAAEC,IAAE;AAAC,YAAAA,GAAE,OAAO,aAAWF,OAAID,GAAE,KAAK,MAAKC,EAAC,GAAE,KAAK,IAAI,eAAcC,EAAC;AAAA,UAAE,CAAE,GAAE,KAAK,WAAW;AAAA,QAAC,GAAE,QAAO,SAASF,IAAE;AAAC,cAAIC,KAAE,KAAK,KAAK,GAAEE,KAAE,SAASA,IAAE;AAAC,YAAAA,GAAE,OAAO,aAAWF,MAAGD,GAAE,KAAK,MAAKG,GAAE,OAAO,KAAID,GAAE,MAAMC,GAAE,OAAO,GAAG,GAAEA,GAAE,OAAO,OAAMF,EAAC;AAAA,UAAC;AAAE,iBAAO,KAAK,OAAO,EAAE,IAAI,aAAYE,EAAC,EAAE,GAAG,aAAYA,EAAC,GAAE,KAAK,MAAO,WAAU;AAAC,iBAAK,IAAI,aAAYA,EAAC;AAAA,UAAC,CAAE,GAAE,KAAK,WAAW;AAAA,QAAC,GAAE,UAAS,SAASH,IAAE;AAAC,cAAIC,KAAE,SAASA,GAAEC,IAAE;AAAC,YAAAF,GAAE,KAAK,IAAI,GAAE,KAAK,IAAI,kBAAiBC,EAAC;AAAA,UAAC;AAAE,iBAAO,KAAK,OAAO,EAAE,IAAI,kBAAiBA,EAAC,EAAE,GAAG,kBAAiBA,EAAC,GAAE,KAAK,WAAW;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,iBAAO,KAAK,WAAW,SAAO,KAAK,WAAW,KAAK,WAAW,SAAO,CAAC,IAAE,KAAK;AAAA,QAAS,GAAE,KAAI,SAASD,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,KAAK,EAAEA,MAAG,YAAY,EAAEF,EAAC,IAAEC,IAAE,KAAK,WAAW;AAAA,QAAC,GAAE,MAAK,SAASD,IAAE;AAAC,cAAIC,IAAEC,IAAEC;AAAE,UAAAH,OAAI,KAAK,SAAO,KAAK,aAAa,CAAC,oBAAI,MAAI,IAAG,UAAK,KAAK,UAAU,SAAOC,KAAE,KAAK,IAAI,KAAK,QAAO,CAAC,GAAEC,KAAE,KAAK,MAAMD,EAAC,GAAE,SAAK,KAAK,UAAU,SAAOC,KAAE,KAAK,UAAU,SAAO,KAAK,MAAID,KAAEC,IAAEC,KAAE,KAAK,UAAU,MAAK,KAAK,UAAU,OAAKD,OAAI,KAAK,SAAO,KAAK,UAAU,OAAM,KAAK,MAAI,GAAEC,KAAE,KAAK,UAAU,OAAK,GAAE,KAAK,UAAU,OAAK,KAAK,UAAU,QAAO,KAAK,UAAU,cAAY,KAAK,UAAU,WAAS,KAAK,UAAU,YAAU,SAAS,KAAK,UAAU,OAAKA,MAAG,CAAC,OAAK,KAAK,SAAO,KAAK,IAAI,KAAK,QAAO,CAAC,GAAE,KAAK,MAAI,KAAK,SAAQ,KAAK,MAAI,MAAI,KAAK,MAAI,IAAG,KAAK,UAAU,aAAW,KAAK,MAAI,IAAE,KAAK;AAAK,cAAIE,KAAE,KAAK,UAAU,KAAK,KAAK,GAAG;AAAE,mBAAQC,MAAK,KAAK,UAAU,KAAK,CAAAA,KAAE,KAAK,WAASA,MAAGD,OAAI,KAAK,UAAU,KAAKC,EAAC,EAAE,KAAK,KAAK,OAAO,GAAE,KAAK,KAAID,EAAC,GAAE,OAAO,KAAK,UAAU,KAAKC,EAAC;AAAG,iBAAO,KAAK,UAAQ,KAAK,OAAO,EAAE,KAAK,UAAS,EAAC,KAAI,KAAK,KAAI,OAAMD,IAAE,IAAG,MAAK,WAAU,KAAK,UAAS,CAAC,GAAE,KAAK,aAAW,KAAK,OAAO,GAAE,KAAG,KAAK,OAAK,CAAC,KAAK,UAAU,YAAU,KAAK,UAAU,YAAU,KAAG,KAAK,OAAK,KAAK,cAAc,GAAE,KAAK,OAAO,EAAE,KAAK,YAAW,EAAC,IAAG,MAAK,WAAU,KAAK,UAAS,CAAC,GAAE,KAAK,WAAW,WAAS,KAAK,OAAO,EAAE,KAAK,aAAa,GAAE,KAAK,WAAW,WAAS,KAAK,OAAO,EAAE,IAAI,KAAK,GAAE,KAAK,SAAO,SAAK,KAAK,SAAO,KAAK,QAAQ,IAAE,KAAK,aAAa,KAAG,CAAC,KAAK,UAAQ,KAAK,UAAQ,KAAK,eAAe,GAAE,KAAK,UAAQA,IAAE,QAAM;AAAA,QAAI,GAAE,QAAO,WAAU;AAAC,cAAIL,IAAEC,KAAE,MAAKE,KAAE,KAAK,OAAO,GAAEE,KAAE,KAAK;AAAU,mBAAQC,MAAKD,GAAE,WAAW,CAAAL,KAAE,CAAC,EAAE,OAAOK,GAAE,WAAWC,EAAC,CAAC,EAAE,IAAK,SAASN,IAAE;AAAC,mBAAM,YAAU,OAAOA,MAAGA,GAAE,KAAGA,GAAE,GAAGK,GAAE,KAAKJ,GAAE,GAAG,GAAEA,GAAE,GAAG,IAAED;AAAA,UAAC,CAAE,GAAEG,GAAEG,EAAC,EAAE,MAAMH,IAAEH,EAAC;AAAE,mBAAQM,MAAKD,GAAE,MAAM,CAAAL,KAAE,CAACM,EAAC,EAAE,OAAOD,GAAE,MAAMC,EAAC,CAAC,EAAE,IAAK,SAASN,IAAE;AAAC,mBAAM,YAAU,OAAOA,MAAGA,GAAE,KAAGA,GAAE,GAAGK,GAAE,KAAKJ,GAAE,GAAG,GAAEA,GAAE,GAAG,IAAED;AAAA,UAAC,CAAE,GAAEG,GAAE,KAAK,MAAMA,IAAEH,EAAC;AAAE,mBAAQM,MAAKD,GAAE,OAAO,CAAAL,KAAE,CAACM,EAAC,EAAE,OAAOD,GAAE,OAAOC,EAAC,CAAC,EAAE,IAAK,SAASN,IAAE;AAAC,mBAAM,YAAU,OAAOA,MAAGA,GAAE,KAAGA,GAAE,GAAGK,GAAE,KAAKJ,GAAE,GAAG,GAAEA,GAAE,GAAG,IAAED;AAAA,UAAC,CAAE,GAAEG,GAAE,MAAM,MAAMA,IAAEH,EAAC;AAAE,cAAGK,GAAE,WAAW,QAAO;AAAC,YAAAL,KAAEK,GAAE,uBAAsBC,KAAE;AAAE,qBAAQE,KAAEH,GAAE,WAAW,QAAOC,KAAEE,IAAEF,MAAI;AAAC,kBAAIG,KAAEJ,GAAE,WAAWC,EAAC;AAAE,cAAAG,cAAaP,GAAE,SAAOF,KAAES,GAAE,WAAST,GAAE,SAAU,IAAIE,GAAE,SAAQ,MAAMO,EAAC,EAAE,GAAGJ,GAAE,KAAK,KAAK,GAAG,CAAC,CAAC,IAAEL,GAAE,MAAMS,EAAC,EAAE,GAAGJ,GAAE,KAAK,KAAK,GAAG,CAAC,KAAGI,GAAE,YAAUA,GAAE,KAAKT,GAAE,QAAQ,CAAC,GAAEA,KAAEA,GAAE,SAASS,GAAE,GAAGJ,GAAE,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,YAAE;AAAC,YAAAF,GAAE,OAAOH,EAAC;AAAA,UAAC;AAAC,iBAAO;AAAA,QAAI,GAAE,MAAK,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,KAAK;AAAE,iBAAOD,OAAIF,KAAEG,GAAE,KAAKH,EAAC,IAAGG,GAAE,KAAKH,EAAC,IAAEC,IAAE;AAAA,QAAI,GAAE,YAAW,WAAU;AAAC,iBAAO,WAAW,WAAU;AAAC,iBAAK,MAAM;AAAA,UAAC,EAAE,KAAK,IAAI,GAAE,CAAC,GAAE;AAAA,QAAI,EAAC,GAAE,QAAOC,GAAE,SAAQ,WAAU,EAAC,SAAQ,SAASF,IAAEC,IAAEE,IAAE;AAAC,kBAAO,KAAK,OAAK,KAAK,KAAG,IAAID,GAAE,GAAG,IAAI,IAAI,QAAQF,IAAEC,IAAEE,EAAC;AAAA,QAAC,GAAE,OAAM,SAASH,IAAE;AAAC,kBAAO,KAAK,OAAK,KAAK,KAAG,IAAIE,GAAE,GAAG,IAAI,IAAI,MAAMF,EAAC;AAAA,QAAC,GAAE,MAAK,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,MAAI,KAAK,GAAG,KAAKD,IAAEC,EAAC,GAAE;AAAA,QAAI,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK,MAAI,KAAK,GAAG,OAAO,GAAE;AAAA,QAAI,EAAC,EAAC,CAAC,GAAEC,GAAE,WAASA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAEC,IAAE;AAAC,iBAAOC,GAAE,MAAM,QAAQD,EAAC,IAAE,IAAIC,GAAE,MAAMF,EAAC,EAAE,MAAMC,EAAC,IAAEC,GAAE,MAAM,UAAU,KAAKF,EAAC,IAAEE,GAAE,MAAM,YAAY,KAAKF,EAAC,IAAE,IAAIE,GAAE,UAAUF,EAAC,EAAE,MAAMC,EAAC,IAAE,IAAIC,GAAE,MAAMF,EAAC,EAAE,MAAMC,EAAC,IAAEC,GAAE,MAAM,cAAc,KAAKD,EAAC,IAAE,IAAIC,GAAE,OAAOF,EAAC,EAAE,MAAMC,EAAC,KAAG,KAAK,QAAMD,IAAE,MAAK,KAAK,cAAYC;AAAA,QAAG,GAAE,QAAO,EAAC,IAAG,SAASD,IAAEC,IAAE;AAAC,iBAAOA,KAAE,IAAE,KAAK,QAAM,KAAK;AAAA,QAAW,GAAE,SAAQ,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAK,EAAC,EAAC,CAAC,GAAEC,GAAE,OAAOA,GAAE,IAAG,EAAC,MAAK,SAASF,IAAEC,IAAEC,IAAE;AAAC,cAAG,aAAWgB,GAAElB,EAAC,EAAE,UAAQG,MAAKH,GAAE,MAAK,KAAKG,IAAEH,GAAEG,EAAC,CAAC;AAAA,cAAO,MAAK,IAAIH,IAAEC,IAAE,OAAO;AAAE,iBAAO;AAAA,QAAI,GAAE,MAAK,SAASD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAG,UAAU,SAAO,KAAK,KAAK,CAACH,IAAEC,IAAEC,IAAEC,EAAC,CAAC,IAAE,KAAK,IAAI,QAAO,KAAI,KAAK,OAAO,GAAE,WAAYH,EAAC,CAAC;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,MAAIA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAEC,IAAEE,IAAEE,IAAE;AAAC,cAAG,EAAE,aAAWa,GAAElB,EAAC,KAAGA,cAAaE,GAAE,SAAS,QAAOA,GAAE,IAAI,KAAK,MAAK,QAAMF,GAAE,OAAKA,GAAE,OAAKA,GAAE,GAAE,QAAMA,GAAE,MAAIA,GAAE,MAAIA,GAAE,GAAEA,GAAE,OAAMA,GAAE,MAAM;AAAE,cAAIM;AAAE,eAAG,UAAU,WAAS,KAAK,IAAEN,IAAE,KAAK,IAAEC,IAAE,KAAK,QAAME,IAAE,KAAK,SAAOE,KAAG,SAAOC,KAAE,MAAM,MAAIA,GAAE,IAAE,GAAEA,GAAE,IAAE,GAAEA,GAAE,QAAM,GAAEA,GAAE,SAAO,IAAGA,GAAE,IAAEA,GAAE,OAAMA,GAAE,IAAEA,GAAE,QAAOA,GAAE,KAAGA,GAAE,IAAEA,GAAE,OAAMA,GAAE,KAAGA,GAAE,IAAEA,GAAE,QAAOA,GAAE,KAAGA,GAAE,IAAEA,GAAE,QAAM,GAAEA,GAAE,KAAGA,GAAE,IAAEA,GAAE,SAAO;AAAA,QAAC,EAAC,CAAC,GAAEJ,GAAE,OAAKA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,cAAGE,GAAE,IAAI,MAAM,MAAK,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,GAAEF,cAAaE,GAAE,SAAQ;AAAC,gBAAIC;AAAE,gBAAG;AAAC,kBAAG,CAACF,GAAE,gBAAgB,UAAS;AAAC,yBAAQI,KAAEL,GAAE,MAAKK,GAAE,aAAY,CAAAA,KAAEA,GAAE;AAAW,oBAAGA,MAAGJ,GAAE,OAAM,IAAI,MAAM,wBAAwB;AAAA,cAAC;AAAC,cAAAE,KAAEH,GAAE,KAAK,QAAQ;AAAA,YAAC,SAAOC,IAAE;AAAC,kBAAGD,cAAaE,GAAE,OAAM;AAAC,gBAAAA,GAAE,OAAO,QAAMA,GAAE,QAAQ;AAAE,oBAAII,KAAEN,GAAE,MAAME,GAAE,OAAO,KAAK,QAAQ,EAAE,KAAK;AAAE,gBAAAI,MAAGA,GAAE,QAAM,cAAY,OAAOA,GAAE,KAAK,YAAUH,KAAEG,GAAE,KAAK,QAAQ,IAAGA,MAAG,cAAY,OAAOA,GAAE,UAAQA,GAAE,OAAO;AAAA,cAAC,MAAM,CAAAH,KAAE,EAAC,GAAEH,GAAE,KAAK,YAAW,GAAEA,GAAE,KAAK,WAAU,OAAMA,GAAE,KAAK,aAAY,QAAOA,GAAE,KAAK,aAAY;AAAA,YAAC;AAAC,YAAAE,GAAE,IAAI,KAAK,MAAKC,EAAC;AAAA,UAAC;AAAA,QAAC,GAAE,SAAQD,GAAE,KAAI,QAAOA,GAAE,SAAQ,WAAU,EAAC,MAAK,WAAU;AAAC,iBAAO,IAAIA,GAAE,KAAK,IAAI;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,KAAK,UAAU,cAAYA,GAAE,MAAKA,GAAE,SAAOA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,cAAIC,KAAEe,GAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,CAAC;AAAE,UAAAhB,KAAE,SAAOA,KAAEC,KAAED,cAAaE,GAAE,UAAQF,GAAE,UAAU,IAAE,YAAU,OAAOA,KAAEgB,GAAEhB,GAAE,MAAME,GAAE,MAAM,SAAS,EAAE,IAAI,UAAU,CAAC,IAAE,KAAG,UAAU,SAAOc,GAAE,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,IAAE,MAAM,QAAQhB,EAAC,IAAEgB,GAAEhB,EAAC,IAAEA,MAAG,aAAWkB,GAAElB,EAAC,IAAEA,KAAEC;AAAE,mBAAQE,KAAEI,GAAE,SAAO,GAAEJ,MAAG,GAAE,EAAEA,GAAE,MAAKI,GAAEJ,EAAC,CAAC,IAAE,QAAMH,GAAEO,GAAEJ,EAAC,CAAC,IAAEH,GAAEO,GAAEJ,EAAC,CAAC,IAAEF,GAAEM,GAAEJ,EAAC,CAAC;AAAA,QAAC,GAAE,QAAO,EAAC,SAAQ,WAAU;AAAC,cAAIH,KAAEa,GAAE,MAAK,GAAE,CAAC;AAAE,UAAAA,GAAE,MAAK,GAAE,CAAC;AAAE,cAAIZ,KAAE,MAAI,KAAK,KAAG,KAAK,MAAMD,GAAE,GAAEA,GAAE,CAAC,IAAE;AAAG,iBAAM,EAAC,GAAE,KAAK,GAAE,GAAE,KAAK,GAAE,eAAc,KAAK,IAAE,KAAK,IAAIC,KAAE,KAAK,KAAG,GAAG,IAAE,KAAK,IAAE,KAAK,IAAIA,KAAE,KAAK,KAAG,GAAG,KAAG,KAAK,KAAK,KAAK,IAAE,KAAK,IAAE,KAAK,IAAE,KAAK,CAAC,GAAE,eAAc,KAAK,IAAE,KAAK,IAAIA,KAAE,KAAK,KAAG,GAAG,IAAE,KAAK,IAAE,KAAK,IAAI,CAACA,KAAE,KAAK,KAAG,GAAG,KAAG,KAAK,KAAK,KAAK,IAAE,KAAK,IAAE,KAAK,IAAE,KAAK,CAAC,GAAE,UAASA,IAAE,GAAE,KAAK,GAAE,GAAE,KAAK,GAAE,GAAE,KAAK,GAAE,GAAE,KAAK,GAAE,GAAE,KAAK,GAAE,GAAE,KAAK,GAAE,QAAO,IAAIC,GAAE,OAAO,IAAI,EAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAO,IAAIA,GAAE,OAAO,IAAI;AAAA,QAAC,GAAE,OAAM,SAASF,IAAE;AAAC,iBAAO,KAAK,cAAY,IAAIE,GAAE,OAAOF,EAAC,GAAE;AAAA,QAAI,GAAE,UAAS,SAASA,IAAE;AAAC,iBAAO,IAAIE,GAAE,OAAO,KAAK,OAAO,EAAE,SAAS,SAASF,IAAE;AAAC,mBAAOA,cAAaE,GAAE,WAASF,KAAE,IAAIE,GAAE,OAAOF,EAAC,IAAGA;AAAA,UAAC,EAAEA,EAAC,EAAE,OAAO,CAAC,CAAC;AAAA,QAAC,GAAE,SAAQ,WAAU;AAAC,iBAAO,IAAIE,GAAE,OAAO,KAAK,OAAO,EAAE,QAAQ,CAAC;AAAA,QAAC,GAAE,WAAU,SAASF,IAAEC,IAAE;AAAC,iBAAO,IAAIC,GAAE,OAAO,KAAK,OAAO,EAAE,UAAUF,MAAG,GAAEC,MAAG,CAAC,CAAC;AAAA,QAAC,GAAE,QAAO,WAAU;AAAC,mBAAQD,KAAEE,GAAE,OAAO,OAAO,gBAAgB,GAAED,KAAEM,GAAE,SAAO,GAAEN,MAAG,GAAEA,KAAI,CAAAD,GAAEO,GAAEN,EAAC,CAAC,IAAE,KAAKM,GAAEN,EAAC,CAAC;AAAE,iBAAOD;AAAA,QAAC,GAAE,UAAS,WAAU;AAAC,iBAAM,YAAUI,GAAE,KAAK,CAAC,IAAE,MAAIA,GAAE,KAAK,CAAC,IAAE,MAAIA,GAAE,KAAK,CAAC,IAAE,MAAIA,GAAE,KAAK,CAAC,IAAE,MAAIA,GAAE,KAAK,CAAC,IAAE,MAAIA,GAAE,KAAK,CAAC,IAAE;AAAA,QAAG,EAAC,GAAE,QAAOF,GAAE,SAAQ,WAAU,EAAC,KAAI,WAAU;AAAC,iBAAO,IAAIA,GAAE,OAAO,KAAK,KAAK,OAAO,CAAC;AAAA,QAAC,GAAE,WAAU,WAAU;AAAC,cAAG,gBAAgBA,GAAE,QAAO;AAAC,gBAAIF,KAAE,KAAK,KAAK,GAAE,CAAC,GAAEC,KAAED,GAAE,KAAK,aAAa;AAAE,mBAAOA,GAAE,OAAO,GAAE,IAAIE,GAAE,OAAOD,EAAC;AAAA,UAAC;AAAC,iBAAO,IAAIC,GAAE,OAAO,KAAK,KAAK,aAAa,CAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,QAAMA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAEC,IAAE;AAAC,cAAIC;AAAE,UAAAA,KAAE,MAAM,QAAQF,EAAC,IAAE,EAAC,GAAEA,GAAE,CAAC,GAAE,GAAEA,GAAE,CAAC,EAAC,IAAE,aAAWkB,GAAElB,EAAC,IAAE,EAAC,GAAEA,GAAE,GAAE,GAAEA,GAAE,EAAC,IAAE,QAAMA,KAAE,EAAC,GAAEA,IAAE,GAAE,QAAMC,KAAEA,KAAED,GAAC,IAAE,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,KAAK,IAAEE,GAAE,GAAE,KAAK,IAAEA,GAAE;AAAA,QAAC,GAAE,QAAO,EAAC,OAAM,WAAU;AAAC,iBAAO,IAAIA,GAAE,MAAM,IAAI;AAAA,QAAC,GAAE,OAAM,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,cAAY,IAAIC,GAAE,MAAMF,IAAEC,EAAC,GAAE;AAAA,QAAI,EAAC,EAAC,CAAC,GAAEC,GAAE,OAAOA,GAAE,SAAQ,EAAC,OAAM,SAASF,IAAEC,IAAE;AAAC,iBAAO,IAAIC,GAAE,MAAMF,IAAEC,EAAC,EAAE,UAAU,KAAK,UAAU,EAAE,QAAQ,CAAC;AAAA,QAAC,EAAC,CAAC,GAAEC,GAAE,OAAOA,GAAE,SAAQ,EAAC,MAAK,SAASF,IAAEC,IAAEE,IAAE;AAAC,cAAG,QAAMH,IAAE;AAAC,iBAAIA,KAAE,CAAC,GAAEG,MAAGF,KAAE,KAAK,KAAK,YAAY,SAAO,GAAEE,MAAG,GAAEA,KAAI,CAAAH,GAAEC,GAAEE,EAAC,EAAE,QAAQ,IAAED,GAAE,MAAM,SAAS,KAAKD,GAAEE,EAAC,EAAE,SAAS,IAAE,WAAWF,GAAEE,EAAC,EAAE,SAAS,IAAEF,GAAEE,EAAC,EAAE;AAAU,mBAAOH;AAAA,UAAC;AAAC,cAAG,aAAWkB,GAAElB,EAAC,EAAE,UAAQK,MAAKL,GAAE,MAAK,KAAKK,IAAEL,GAAEK,EAAC,CAAC;AAAA,mBAAU,SAAOJ,GAAE,MAAK,KAAK,gBAAgBD,EAAC;AAAA,eAAM;AAAC,gBAAG,QAAMC,GAAE,QAAO,SAAOA,KAAE,KAAK,KAAK,aAAaD,EAAC,KAAGE,GAAE,SAAS,MAAMF,EAAC,IAAEE,GAAE,MAAM,SAAS,KAAKD,EAAC,IAAE,WAAWA,EAAC,IAAEA;AAAE,8BAAgBD,KAAE,KAAK,KAAK,UAAS,WAAWC,EAAC,IAAE,IAAE,KAAK,UAAQ,IAAI,IAAE,YAAUD,OAAI,KAAK,UAAQC,KAAG,UAAQD,MAAG,YAAUA,OAAIE,GAAE,MAAM,QAAQ,KAAKD,EAAC,MAAIA,KAAE,KAAK,IAAI,EAAE,KAAK,EAAE,MAAMA,IAAE,GAAE,CAAC,IAAGA,cAAaC,GAAE,UAAQD,KAAE,KAAK,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAE,GAAG,WAAU;AAAC,mBAAK,IAAIA,EAAC;AAAA,YAAC,CAAE,KAAI,YAAU,OAAOA,KAAEA,KAAE,IAAIC,GAAE,OAAOD,EAAC,IAAEC,GAAE,MAAM,QAAQD,EAAC,IAAEA,KAAE,IAAIC,GAAE,MAAMD,EAAC,IAAE,MAAM,QAAQA,EAAC,MAAIA,KAAE,IAAIC,GAAE,MAAMD,EAAC,IAAG,aAAWD,KAAE,KAAK,WAAS,KAAK,QAAQC,EAAC,IAAE,YAAU,OAAOE,KAAE,KAAK,KAAK,eAAeA,IAAEH,IAAEC,GAAE,SAAS,CAAC,IAAE,KAAK,KAAK,aAAaD,IAAEC,GAAE,SAAS,CAAC,GAAE,CAAC,KAAK,WAAS,eAAaD,MAAG,OAAKA,MAAG,KAAK,QAAQA,IAAEC,EAAC;AAAA,UAAC;AAAC,iBAAO;AAAA,QAAI,EAAC,CAAC,GAAEC,GAAE,OAAOA,GAAE,SAAQ,EAAC,WAAU,SAASF,IAAEC,IAAE;AAAC,cAAIE;AAAE,iBAAM,aAAWe,GAAElB,EAAC,KAAGG,KAAE,IAAID,GAAE,OAAO,IAAI,EAAE,QAAQ,GAAE,YAAU,OAAOF,KAAEG,GAAEH,EAAC,IAAEG,OAAIA,KAAE,IAAID,GAAE,OAAO,IAAI,GAAED,KAAE,CAAC,CAACA,MAAG,CAAC,CAACD,GAAE,UAAS,QAAMA,GAAE,MAAIG,KAAEF,KAAEE,GAAE,SAAS,IAAID,GAAE,OAAOF,EAAC,CAAC,IAAE,IAAIE,GAAE,OAAOF,EAAC,IAAG,KAAK,KAAK,aAAYG,EAAC;AAAA,QAAE,EAAC,CAAC,GAAED,GAAE,OAAOA,GAAE,SAAQ,EAAC,aAAY,WAAU;AAAC,iBAAO,KAAK,KAAK,aAAY,IAAI;AAAA,QAAC,GAAE,WAAU,WAAU;AAAC,kBAAO,KAAK,KAAK,WAAW,KAAG,IAAI,MAAMA,GAAE,MAAM,UAAU,EAAE,MAAM,GAAE,EAAE,EAAE,IAAK,SAASF,IAAE;AAAC,gBAAIC,KAAED,GAAE,KAAK,EAAE,MAAM,GAAG;AAAE,mBAAM,CAACC,GAAE,CAAC,GAAEA,GAAE,CAAC,EAAE,MAAMC,GAAE,MAAM,SAAS,EAAE,IAAK,SAASF,IAAE;AAAC,qBAAO,WAAWA,EAAC;AAAA,YAAC,CAAE,CAAC;AAAA,UAAC,CAAE,EAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,mBAAM,YAAUA,GAAE,CAAC,IAAED,GAAE,SAASgB,GAAEf,GAAE,CAAC,CAAC,CAAC,IAAED,GAAEC,GAAE,CAAC,CAAC,EAAE,MAAMD,IAAEC,GAAE,CAAC,CAAC;AAAA,UAAC,GAAG,IAAIC,GAAE,QAAM;AAAA,QAAC,GAAE,UAAS,SAASF,IAAE;AAAC,cAAG,QAAMA,GAAE,QAAO;AAAK,cAAIC,KAAE,KAAK,UAAU,GAAEC,KAAEF,GAAE,UAAU,EAAE,QAAQ;AAAE,iBAAO,KAAK,MAAMA,EAAC,EAAE,YAAY,EAAE,UAAUE,GAAE,SAASD,EAAC,CAAC,GAAE;AAAA,QAAI,GAAE,OAAM,WAAU;AAAC,iBAAO,KAAK,SAAS,KAAK,IAAI,CAAC;AAAA,QAAC,EAAC,CAAC,GAAEC,GAAE,iBAAeA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAEC,IAAE;AAAC,cAAG,UAAU,SAAO,KAAG,aAAW,OAAOA,GAAE,QAAO,KAAK,YAAY,KAAK,MAAK,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC;AAAE,cAAG,MAAM,QAAQD,EAAC,EAAE,UAAQE,KAAE,GAAEC,KAAE,KAAK,UAAU,QAAOD,KAAEC,IAAE,EAAED,GAAE,MAAK,KAAK,UAAUA,EAAC,CAAC,IAAEF,GAAEE,EAAC;AAAA,mBAAUF,MAAG,aAAWkB,GAAElB,EAAC,EAAE,MAAIE,KAAE,GAAEC,KAAE,KAAK,UAAU,QAAOD,KAAEC,IAAE,EAAED,GAAE,MAAK,KAAK,UAAUA,EAAC,CAAC,IAAEF,GAAE,KAAK,UAAUE,EAAC,CAAC;AAAE,eAAK,WAAS,OAAG,SAAKD,OAAI,KAAK,WAAS;AAAA,QAAG,EAAC,CAAC,GAAEC,GAAE,YAAUA,GAAE,OAAO,EAAC,QAAOA,GAAE,QAAO,SAAQA,GAAE,gBAAe,QAAO,SAASF,IAAEC,IAAE;AAAC,eAAK,YAAY,MAAM,MAAK,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC;AAAA,QAAC,GAAE,QAAO,EAAC,WAAU,CAAC,gBAAe,cAAc,GAAE,QAAO,YAAW,EAAC,CAAC,GAAEC,GAAE,OAAOA,GAAE,SAAQ,EAAC,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAG,KAAG,UAAU,OAAO,QAAO,KAAK,KAAK,MAAM,WAAS;AAAG,cAAG,UAAU,SAAO,EAAE,KAAG,aAAWiB,GAAElB,EAAC,EAAE,UAAQG,MAAKH,GAAE,MAAK,MAAMG,IAAEH,GAAEG,EAAC,CAAC;AAAA,eAAM;AAAC,gBAAG,CAACD,GAAE,MAAM,MAAM,KAAKF,EAAC,EAAE,QAAO,KAAK,KAAK,MAAMY,GAAEZ,EAAC,CAAC;AAAE,iBAAIA,KAAEA,GAAE,MAAM,SAAS,EAAE,OAAQ,SAASA,IAAE;AAAC,qBAAM,CAAC,CAACA;AAAA,YAAC,CAAE,EAAE,IAAK,SAASA,IAAE;AAAC,qBAAOA,GAAE,MAAM,SAAS;AAAA,YAAC,CAAE,GAAEC,KAAED,GAAE,IAAI,IAAG,MAAK,MAAMC,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAA,UAAC;AAAA,cAAM,MAAK,KAAK,MAAMW,GAAEZ,EAAC,CAAC,IAAE,SAAOC,MAAGC,GAAE,MAAM,QAAQ,KAAKD,EAAC,IAAE,KAAGA;AAAE,iBAAO;AAAA,QAAI,EAAC,CAAC,GAAEC,GAAE,SAAOA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,eAAK,YAAY,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,SAAQE,GAAE,SAAQ,QAAO,EAAC,UAAS,WAAU;AAAC,iBAAOA,GAAE,MAAM,IAAIA,GAAE,MAAM,kBAAkB,KAAK,KAAK,UAAU,GAAG,SAASF,IAAE;AAAC,mBAAOE,GAAE,MAAMF,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,GAAE,KAAI,SAASA,IAAEC,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,YAAYD,GAAE,IAAI,IAAEA,GAAE,QAAM,KAAK,KAAK,WAAWC,EAAC,KAAG,KAAK,KAAK,aAAaD,GAAE,MAAK,KAAK,KAAK,WAAWC,EAAC,CAAC,GAAE;AAAA,QAAI,GAAE,KAAI,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAID,IAAEC,EAAC,GAAED;AAAA,QAAC,GAAE,KAAI,SAASA,IAAE;AAAC,iBAAO,KAAK,MAAMA,EAAC,KAAG;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAM,CAAC,EAAE,MAAM,KAAK,KAAK,KAAK,UAAU,EAAE,QAAQA,GAAE,IAAI;AAAA,QAAC,GAAE,KAAI,SAASA,IAAE;AAAC,iBAAOE,GAAE,MAAM,KAAK,KAAK,WAAWF,EAAC,CAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAO,KAAK,IAAI,CAAC;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,iBAAO,KAAK,IAAI,KAAK,KAAK,WAAW,SAAO,CAAC;AAAA,QAAC,GAAE,MAAK,SAASA,IAAEC,IAAE;AAAC,mBAAQE,KAAE,KAAK,SAAS,GAAEE,KAAE,GAAEC,KAAEH,GAAE,QAAOE,KAAEC,IAAED,KAAI,CAAAF,GAAEE,EAAC,aAAYH,GAAE,WAASF,GAAE,MAAMG,GAAEE,EAAC,GAAE,CAACA,IAAEF,EAAC,CAAC,GAAEF,MAAGE,GAAEE,EAAC,aAAYH,GAAE,aAAWC,GAAEE,EAAC,EAAE,KAAKL,IAAEC,EAAC;AAAE,iBAAO;AAAA,QAAI,GAAE,eAAc,SAASD,IAAE;AAAC,iBAAO,KAAK,KAAK,YAAYA,GAAE,IAAI,GAAE;AAAA,QAAI,GAAE,OAAM,WAAU;AAAC,iBAAK,KAAK,KAAK,cAAc,IAAG,MAAK,KAAK,YAAY,KAAK,KAAK,SAAS;AAAE,iBAAO,OAAO,KAAK,OAAM;AAAA,QAAI,GAAE,MAAK,WAAU;AAAC,iBAAO,KAAK,IAAI,EAAE,KAAK;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEE,GAAE,OAAOA,GAAE,QAAO,EAAC,SAAQ,SAASF,IAAEC,IAAE;AAAC,iBAAO,MAAIA,MAAG,gBAAgBC,GAAE,QAAM,KAAK,QAAMA,GAAE,OAAO,SAAOF,KAAEA,OAAI,gBAAgBE,GAAE,MAAI,OAAK,KAAK,OAAOA,GAAE,MAAM,IAAGD,KAAEA,MAAG,IAAE,GAAE,KAAK,KAAM,WAAU;AAAC,mBAAO,gBAAgBC,GAAE,OAAK,OAAK,gBAAgBA,GAAE,SAAO,KAAK,QAAQF,IAAEC,KAAE,CAAC,IAAE,KAAK,SAASD,EAAC;AAAA,UAAC,CAAE,GAAE,KAAK,KAAK,cAAY,KAAK,OAAO,IAAG;AAAA,QAAI,GAAE,SAAQ,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,QAAQD,IAAEC,EAAC;AAAA,QAAC,EAAC,CAAC,GAAEC,GAAE,YAAUA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,eAAK,YAAY,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,SAAQE,GAAE,OAAM,CAAC,GAAEA,GAAE,UAAQA,GAAE,OAAO,EAAC,QAAOA,GAAE,WAAU,WAAU,CAAC,EAAC,CAAC,GAAE,CAAC,SAAQ,YAAW,aAAY,WAAU,aAAY,YAAW,aAAY,cAAa,aAAY,cAAa,YAAW,aAAa,EAAE,QAAS,SAASF,IAAE;AAAC,UAAAE,GAAE,QAAQ,UAAUF,EAAC,IAAE,SAASC,IAAE;AAAC,mBAAOC,GAAE,GAAG,KAAK,MAAKF,IAAEC,EAAC,GAAE;AAAA,UAAI;AAAA,QAAC,CAAE,GAAEC,GAAE,YAAU,CAAC,GAAEA,GAAE,aAAW,CAAC,GAAEA,GAAE,aAAW,GAAEA,GAAE,KAAG,SAASF,IAAEC,IAAEE,IAAEE,IAAEC,IAAE;AAAC,cAAIE,KAAEL,GAAE,KAAKE,MAAGL,GAAE,YAAUA,EAAC,GAAES,MAAGP,GAAE,WAAW,QAAQF,EAAC,IAAE,KAAGE,GAAE,WAAW,KAAKF,EAAC,KAAG,GAAEW,KAAEV,GAAE,MAAM,GAAG,EAAE,CAAC,GAAEW,KAAEX,GAAE,MAAM,GAAG,EAAE,CAAC,KAAG;AAAI,UAAAC,GAAE,UAAUO,EAAC,IAAEP,GAAE,UAAUO,EAAC,KAAG,CAAC,GAAEP,GAAE,UAAUO,EAAC,EAAEE,EAAC,IAAET,GAAE,UAAUO,EAAC,EAAEE,EAAC,KAAG,CAAC,GAAET,GAAE,UAAUO,EAAC,EAAEE,EAAC,EAAEC,EAAC,IAAEV,GAAE,UAAUO,EAAC,EAAEE,EAAC,EAAEC,EAAC,KAAG,CAAC,GAAET,GAAE,qBAAmBA,GAAE,mBAAiB,EAAED,GAAE,aAAYA,GAAE,UAAUO,EAAC,EAAEE,EAAC,EAAEC,EAAC,EAAET,GAAE,gBAAgB,IAAEK,IAAER,GAAE,iBAAiBW,IAAEH,IAAEF,MAAG,EAAC,SAAQ,MAAE,CAAC;AAAA,QAAC,GAAEJ,GAAE,MAAI,SAASF,IAAEC,IAAEE,IAAE;AAAC,cAAIE,KAAEH,GAAE,WAAW,QAAQF,EAAC,GAAEM,KAAEL,MAAGA,GAAE,MAAM,GAAG,EAAE,CAAC,GAAEO,KAAEP,MAAGA,GAAE,MAAM,GAAG,EAAE,CAAC,GAAEQ,KAAE;AAAG,cAAG,MAAIJ,GAAE,KAAGF,IAAE;AAAC,gBAAG,cAAY,OAAOA,OAAIA,KAAEA,GAAE,mBAAkB,CAACA,GAAE;AAAO,YAAAD,GAAE,UAAUG,EAAC,EAAEC,EAAC,KAAGJ,GAAE,UAAUG,EAAC,EAAEC,EAAC,EAAEE,MAAG,GAAG,MAAIR,GAAE,oBAAoBM,IAAEJ,GAAE,UAAUG,EAAC,EAAEC,EAAC,EAAEE,MAAG,GAAG,EAAEL,EAAC,GAAE,KAAE,GAAE,OAAOD,GAAE,UAAUG,EAAC,EAAEC,EAAC,EAAEE,MAAG,GAAG,EAAEL,EAAC;AAAA,UAAE,WAASK,MAAGF,IAAE;AAAC,gBAAGJ,GAAE,UAAUG,EAAC,EAAEC,EAAC,KAAGJ,GAAE,UAAUG,EAAC,EAAEC,EAAC,EAAEE,EAAC,GAAE;AAAC,uBAAQG,MAAKT,GAAE,UAAUG,EAAC,EAAEC,EAAC,EAAEE,EAAC,EAAE,CAAAN,GAAE,IAAIF,IAAE,CAACM,IAAEE,EAAC,EAAE,KAAK,GAAG,GAAEG,EAAC;AAAE,qBAAOT,GAAE,UAAUG,EAAC,EAAEC,EAAC,EAAEE,EAAC;AAAA,YAAC;AAAA,UAAC,WAASA,GAAE,UAAQI,MAAKV,GAAE,UAAUG,EAAC,EAAE,UAAQI,MAAKP,GAAE,UAAUG,EAAC,EAAEO,EAAC,EAAE,CAAAJ,OAAIC,MAAGP,GAAE,IAAIF,IAAE,CAACY,IAAEJ,EAAC,EAAE,KAAK,GAAG,CAAC;AAAA,mBAAUF,IAAE;AAAC,gBAAGJ,GAAE,UAAUG,EAAC,EAAEC,EAAC,GAAE;AAAC,uBAAQG,MAAKP,GAAE,UAAUG,EAAC,EAAEC,EAAC,EAAE,CAAAJ,GAAE,IAAIF,IAAE,CAACM,IAAEG,EAAC,EAAE,KAAK,GAAG,CAAC;AAAE,qBAAOP,GAAE,UAAUG,EAAC,EAAEC,EAAC;AAAA,YAAC;AAAA,UAAC,OAAK;AAAC,qBAAQM,MAAKV,GAAE,UAAUG,EAAC,EAAE,CAAAH,GAAE,IAAIF,IAAEY,EAAC;AAAE,mBAAOV,GAAE,UAAUG,EAAC,GAAE,OAAOH,GAAE,WAAWG,EAAC;AAAA,UAAC;AAAA,QAAC,GAAEH,GAAE,OAAOA,GAAE,SAAQ,EAAC,IAAG,SAASF,IAAEC,IAAEE,IAAEE,IAAE;AAAC,iBAAOH,GAAE,GAAG,KAAK,MAAKF,IAAEC,IAAEE,IAAEE,EAAC,GAAE;AAAA,QAAI,GAAE,KAAI,SAASL,IAAEC,IAAE;AAAC,iBAAOC,GAAE,IAAI,KAAK,MAAKF,IAAEC,EAAC,GAAE;AAAA,QAAI,GAAE,MAAK,SAASA,IAAEE,IAAE;AAAC,iBAAOF,cAAaD,GAAE,QAAM,KAAK,KAAK,cAAcC,EAAC,IAAE,KAAK,KAAK,cAAcA,KAAE,IAAIC,GAAE,YAAYD,IAAE,EAAC,QAAOE,IAAE,YAAW,KAAE,CAAC,CAAC,GAAE,KAAK,SAAOF,IAAE;AAAA,QAAI,GAAE,OAAM,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAM,EAAC,CAAC,GAAEC,GAAE,OAAKA,GAAE,OAAO,EAAC,QAAO,QAAO,SAAQA,GAAE,UAAS,CAAC,GAAEA,GAAE,IAAEA,GAAE,OAAO,EAAC,QAAO,KAAI,SAAQA,GAAE,WAAU,QAAO,EAAC,GAAE,SAASF,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,UAAU,GAAG,IAAE,KAAK,UAAU,EAAC,GAAEA,KAAE,KAAK,EAAE,EAAC,GAAE,IAAE;AAAA,QAAC,EAAC,GAAE,WAAU,EAAC,OAAM,WAAU;AAAC,iBAAO,KAAK,IAAI,IAAIE,GAAE,GAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,MAAIA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,UAAAA,OAAI,UAAQA,KAAE,YAAU,OAAOA,KAAEC,GAAE,eAAeD,EAAC,IAAEA,IAAG,WAAS,KAAK,YAAY,KAAK,MAAKA,EAAC,KAAG,KAAK,YAAY,KAAK,MAAKE,GAAE,OAAO,KAAK,CAAC,GAAEF,GAAE,YAAY,KAAK,IAAI,GAAE,KAAK,KAAK,QAAO,MAAM,IAAG,KAAK,UAAU,EAAE,KAAK;AAAA,QAAE,GAAE,SAAQE,GAAE,WAAU,QAAO,EAAC,WAAU,WAAU;AAAC,iBAAO,KAAK,KAAK,EAAC,OAAMA,GAAE,IAAG,SAAQ,MAAK,CAAC,EAAE,KAAK,eAAcA,GAAE,OAAMA,GAAE,KAAK,EAAE,KAAK,eAAcA,GAAE,OAAMA,GAAE,KAAK;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,cAAIF;AAAE,iBAAO,KAAK,WAASA,KAAE,KAAK,KAAK,qBAAqB,MAAM,EAAE,CAAC,KAAG,KAAK,QAAME,GAAE,MAAMF,EAAC,IAAE,KAAK,QAAM,IAAIE,GAAE,QAAK,KAAK,KAAK,YAAY,KAAK,MAAM,IAAI,IAAG,KAAK;AAAA,QAAK,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK,KAAK,cAAY,eAAa,KAAK,KAAK,WAAW,WAAS,KAAK,KAAK,aAAW;AAAA,QAAI,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,YAAY,KAAK,IAAI,GAAE;AAAA,QAAI,GAAE,OAAM,WAAU;AAAC,iBAAK,KAAK,KAAK,cAAc,IAAG,MAAK,KAAK,YAAY,KAAK,KAAK,SAAS;AAAE,iBAAO,OAAO,KAAK,OAAMA,GAAE,OAAO,QAAM,CAACA,GAAE,OAAO,KAAK,cAAY,KAAK,KAAK,YAAYA,GAAE,OAAO,IAAI,GAAE;AAAA,QAAI,GAAE,OAAM,SAASF,IAAE;AAAC,eAAK,eAAe;AAAE,cAAIC,KAAE,KAAK,MAAKC,KAAEe,GAAEhB,GAAE,UAAU,IAAE,CAAC;AAAE,iBAAOD,MAAGA,GAAE,QAAMA,IAAG,YAAYE,GAAE,IAAI,IAAED,GAAE,WAAW,aAAaC,GAAE,MAAKD,GAAE,WAAW,GAAEC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,OAAOA,GAAE,SAAQ,CAAC,CAAC,GAAEA,GAAE,WAASA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,eAAK,YAAY,KAAK,MAAKE,GAAE,OAAOF,KAAE,UAAU,CAAC,GAAE,KAAK,OAAKA;AAAA,QAAC,GAAE,SAAQE,GAAE,WAAU,QAAO,EAAC,IAAG,SAASF,IAAEC,IAAEE,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAID,GAAE,MAAI,EAAE,OAAOF,IAAEC,IAAEE,EAAC;AAAA,QAAC,GAAE,QAAO,SAASH,IAAE;AAAC,iBAAO,KAAK,MAAM,GAAE,cAAY,OAAOA,MAAGA,GAAE,KAAK,MAAK,IAAI,GAAE;AAAA,QAAI,GAAE,MAAK,WAAU;AAAC,iBAAM,UAAQ,KAAK,GAAG,IAAE;AAAA,QAAG,GAAE,UAAS,WAAU;AAAC,iBAAO,KAAK,KAAK;AAAA,QAAC,GAAE,MAAK,SAASA,IAAEC,IAAEE,IAAE;AAAC,iBAAM,eAAaH,OAAIA,KAAE,sBAAqBE,GAAE,UAAU,UAAU,KAAK,KAAK,MAAKF,IAAEC,IAAEE,EAAC;AAAA,QAAC,EAAC,GAAE,WAAU,EAAC,UAAS,SAASH,IAAEC,IAAE;AAAC,iBAAO,KAAK,KAAK,EAAE,SAASD,IAAEC,EAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEC,GAAE,OAAOA,GAAE,UAASA,GAAE,IAAG,EAAC,MAAK,SAASF,IAAEC,IAAE;AAAC,iBAAM,aAAW,KAAK,WAAS,MAAM,OAAK,KAAK,KAAK,EAAC,IAAG,IAAIC,GAAE,OAAOF,EAAC,GAAE,IAAG,IAAIE,GAAE,OAAOD,EAAC,EAAC,CAAC,IAAE,KAAK,KAAK,EAAC,IAAG,IAAIC,GAAE,OAAOF,EAAC,GAAE,IAAG,IAAIE,GAAE,OAAOD,EAAC,EAAC,CAAC;AAAA,QAAC,GAAE,IAAG,SAASD,IAAEC,IAAE;AAAC,iBAAM,aAAW,KAAK,WAAS,MAAM,OAAK,KAAK,KAAK,EAAC,IAAG,IAAIC,GAAE,OAAOF,EAAC,GAAE,IAAG,IAAIE,GAAE,OAAOD,EAAC,EAAC,CAAC,IAAE,KAAK,KAAK,EAAC,IAAG,IAAIC,GAAE,OAAOF,EAAC,GAAE,IAAG,IAAIE,GAAE,OAAOD,EAAC,EAAC,CAAC;AAAA,QAAC,EAAC,CAAC,GAAEC,GAAE,OAAOA,GAAE,MAAK,EAAC,UAAS,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIC,GAAE,SAASF,EAAC,CAAC,EAAE,OAAOC,EAAC;AAAA,QAAC,EAAC,CAAC,GAAEC,GAAE,OAAKA,GAAE,OAAO,EAAC,QAAO,QAAO,SAAQA,GAAE,SAAQ,QAAO,EAAC,QAAO,SAASF,IAAE;AAAC,kBAAO,YAAU,OAAOA,MAAGA,cAAaE,GAAE,YAAUF,KAAE,EAAC,QAAO,UAAU,CAAC,GAAE,OAAM,UAAU,CAAC,GAAE,SAAQ,UAAU,CAAC,EAAC,IAAG,QAAMA,GAAE,WAAS,KAAK,KAAK,gBAAeA,GAAE,OAAO,GAAE,QAAMA,GAAE,SAAO,KAAK,KAAK,cAAaA,GAAE,KAAK,GAAE,QAAMA,GAAE,UAAQ,KAAK,KAAK,UAAS,IAAIE,GAAE,OAAOF,GAAE,MAAM,CAAC,GAAE;AAAA,QAAI,EAAC,EAAC,CAAC,GAAEE,GAAE,UAAQA,GAAE,OAAO,EAAC,QAAO,WAAU,SAAQA,GAAE,WAAU,QAAO,EAAC,MAAK,WAAU;AAAC,iBAAM,UAAQ,KAAK,GAAG,IAAE;AAAA,QAAG,GAAE,QAAO,SAASF,IAAE;AAAC,iBAAO,KAAK,MAAM,GAAE,cAAY,OAAOA,MAAGA,GAAE,KAAK,MAAK,IAAI,GAAE;AAAA,QAAI,GAAE,UAAS,WAAU;AAAC,iBAAO,KAAK,KAAK;AAAA,QAAC,GAAE,MAAK,SAASA,IAAEC,IAAEE,IAAE;AAAC,iBAAM,eAAaH,OAAIA,KAAE,qBAAoBE,GAAE,UAAU,UAAU,KAAK,KAAK,MAAKF,IAAEC,IAAEE,EAAC;AAAA,QAAC,EAAC,GAAE,WAAU,EAAC,SAAQ,SAASH,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,KAAK,EAAE,QAAQF,IAAEC,IAAEC,EAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,OAAOA,GAAE,MAAK,EAAC,SAAQ,SAASF,IAAEC,IAAEE,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAID,GAAE,SAAO,EAAE,OAAOC,EAAC,EAAE,KAAK,EAAC,GAAE,GAAE,GAAE,GAAE,OAAMH,IAAE,QAAOC,IAAE,cAAa,iBAAgB,CAAC;AAAA,QAAC,EAAC,CAAC,GAAEC,GAAE,QAAMA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,eAAK,YAAY,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,SAAQE,GAAE,QAAO,CAAC,GAAEA,GAAE,SAAOA,GAAE,OAAO,EAAC,QAAO,UAAS,SAAQA,GAAE,WAAU,WAAU,EAAC,QAAO,WAAU;AAAC,iBAAO,KAAK,IAAI,IAAIA,GAAE,QAAM;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,MAAIA,GAAE,OAAO,EAAC,QAAO,OAAM,SAAQA,GAAE,OAAM,QAAO,EAAC,SAAQ,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,KAAK,SAAQA,MAAG,MAAI,MAAID,IAAEE,GAAE,KAAK;AAAA,QAAC,EAAC,GAAE,WAAU,EAAC,KAAI,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIC,GAAE,KAAG,EAAE,QAAQF,IAAEC,EAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEC,GAAE,OAAKA,GAAE,OAAO,EAAC,QAAO,QAAO,SAAQA,GAAE,OAAM,WAAU,EAAC,MAAK,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIC,GAAE,MAAI,EAAE,KAAKF,IAAEC,EAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEC,GAAE,SAAOA,GAAE,OAAO,EAAC,QAAO,UAAS,SAAQA,GAAE,OAAM,WAAU,EAAC,QAAO,SAASF,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIE,GAAE,QAAM,EAAE,GAAG,IAAIA,GAAE,OAAOF,EAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,GAAE,CAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEE,GAAE,OAAOA,GAAE,QAAOA,GAAE,IAAG,EAAC,IAAG,SAASF,IAAE;AAAC,iBAAO,KAAK,KAAK,KAAIA,EAAC;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,KAAK,GAAGA,EAAC;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,UAAQA,GAAE,OAAO,EAAC,QAAO,WAAU,SAAQA,GAAE,OAAM,WAAU,EAAC,SAAQ,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIC,GAAE,SAAO,EAAE,KAAKF,IAAEC,EAAC,EAAE,KAAK,GAAE,CAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEC,GAAE,OAAOA,GAAE,SAAQA,GAAE,MAAKA,GAAE,IAAG,EAAC,IAAG,SAASF,IAAE;AAAC,iBAAO,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,OAAOA,GAAE,QAAOA,GAAE,SAAQ,EAAC,GAAE,SAASF,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,GAAG,IAAE,KAAK,GAAG,IAAE,KAAK,GAAGA,KAAE,KAAK,GAAG,CAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,GAAG,IAAE,KAAK,GAAG,IAAE,KAAK,GAAGA,KAAE,KAAK,GAAG,CAAC;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,IAAI,IAAE,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,IAAI,IAAE,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,IAAE,KAAK,GAAG,IAAE,KAAK,GAAG,IAAIE,GAAE,OAAOF,EAAC,EAAE,OAAO,CAAC,CAAC;AAAA,QAAC,GAAE,QAAO,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,IAAE,KAAK,GAAG,IAAE,KAAK,GAAG,IAAIE,GAAE,OAAOF,EAAC,EAAE,OAAO,CAAC,CAAC;AAAA,QAAC,GAAE,MAAK,SAASA,IAAEC,IAAE;AAAC,cAAIE,KAAEY,GAAE,MAAKf,IAAEC,EAAC;AAAE,iBAAO,KAAK,GAAG,IAAIC,GAAE,OAAOC,GAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,IAAID,GAAE,OAAOC,GAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAAA,QAAC,EAAC,CAAC,GAAED,GAAE,OAAKA,GAAE,OAAO,EAAC,QAAO,QAAO,SAAQA,GAAE,OAAM,QAAO,EAAC,OAAM,WAAU;AAAC,iBAAO,IAAIA,GAAE,WAAW,CAAC,CAAC,KAAK,KAAK,IAAI,GAAE,KAAK,KAAK,IAAI,CAAC,GAAE,CAAC,KAAK,KAAK,IAAI,GAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,QAAC,GAAE,MAAK,SAASF,IAAEC,IAAEE,IAAEE,IAAE;AAAC,iBAAO,QAAML,KAAE,KAAK,MAAM,KAAGA,KAAE,WAASC,KAAE,EAAC,IAAGD,IAAE,IAAGC,IAAE,IAAGE,IAAE,IAAGE,GAAC,IAAE,IAAIH,GAAE,WAAWF,EAAC,EAAE,OAAO,GAAE,KAAK,KAAKA,EAAC;AAAA,QAAE,GAAE,MAAK,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,KAAK,KAAK,MAAM,EAAE,KAAKD,IAAEC,EAAC,EAAE,OAAO,CAAC;AAAA,QAAC,GAAE,MAAK,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAEa,GAAE,MAAKf,IAAEC,EAAC;AAAE,iBAAO,KAAK,KAAK,KAAK,MAAM,EAAE,KAAKC,GAAE,OAAMA,GAAE,MAAM,EAAE,OAAO,CAAC;AAAA,QAAC,EAAC,GAAE,WAAU,EAAC,MAAK,SAASF,IAAEC,IAAEE,IAAEE,IAAE;AAAC,iBAAOH,GAAE,KAAK,UAAU,KAAK,MAAM,KAAK,IAAI,IAAIA,GAAE,MAAI,GAAE,QAAMF,KAAE,CAACA,IAAEC,IAAEE,IAAEE,EAAC,IAAE,CAAC,GAAE,GAAE,GAAE,CAAC,CAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEH,GAAE,WAASA,GAAE,OAAO,EAAC,QAAO,YAAW,SAAQA,GAAE,OAAM,WAAU,EAAC,UAAS,SAASF,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIE,GAAE,UAAQ,EAAE,KAAKF,MAAG,IAAIE,GAAE,YAAU;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,UAAQA,GAAE,OAAO,EAAC,QAAO,WAAU,SAAQA,GAAE,OAAM,WAAU,EAAC,SAAQ,SAASF,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIE,GAAE,SAAO,EAAE,KAAKF,MAAG,IAAIE,GAAE,YAAU;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,OAAOA,GAAE,UAASA,GAAE,SAAQ,EAAC,OAAM,WAAU;AAAC,iBAAO,KAAK,WAAS,KAAK,SAAO,IAAIA,GAAE,WAAW,KAAK,KAAK,QAAQ,CAAC;AAAA,QAAE,GAAE,MAAK,SAASF,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,MAAM,IAAE,KAAK,MAAM,EAAE,KAAK,UAAS,YAAU,OAAOA,KAAEA,KAAE,KAAK,SAAO,IAAIE,GAAE,WAAWF,EAAC,CAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAO,OAAO,KAAK,QAAO;AAAA,QAAI,GAAE,MAAK,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,KAAK,UAAS,KAAK,MAAM,EAAE,KAAKD,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,MAAK,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAEa,GAAE,MAAKf,IAAEC,EAAC;AAAE,iBAAO,KAAK,KAAK,UAAS,KAAK,MAAM,EAAE,KAAKC,GAAE,OAAMA,GAAE,MAAM,CAAC;AAAA,QAAC,EAAC,CAAC,GAAEA,GAAE,OAAOA,GAAE,MAAKA,GAAE,UAASA,GAAE,SAAQ,EAAC,YAAWA,GAAE,YAAW,GAAE,SAASF,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,EAAE,IAAE,KAAK,KAAKA,IAAE,KAAK,KAAK,EAAE,CAAC;AAAA,QAAC,GAAE,GAAE,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,EAAE,IAAE,KAAK,KAAK,KAAK,KAAK,EAAE,GAAEA,EAAC;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,KAAK;AAAE,iBAAO,QAAMD,KAAEC,GAAE,QAAM,KAAK,KAAKD,IAAEC,GAAE,MAAM;AAAA,QAAC,GAAE,QAAO,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,KAAK;AAAE,iBAAO,QAAMD,KAAEC,GAAE,SAAO,KAAK,KAAKA,GAAE,OAAMD,EAAC;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,OAAKA,GAAE,OAAO,EAAC,QAAO,QAAO,SAAQA,GAAE,OAAM,QAAO,EAAC,YAAWA,GAAE,WAAU,OAAM,WAAU;AAAC,iBAAO,KAAK,WAAS,KAAK,SAAO,IAAIA,GAAE,UAAU,KAAK,KAAK,GAAG,CAAC;AAAA,QAAE,GAAE,MAAK,SAASF,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,MAAM,IAAE,KAAK,MAAM,EAAE,KAAK,KAAI,YAAU,OAAOA,KAAEA,KAAE,KAAK,SAAO,IAAIE,GAAE,UAAUF,EAAC,CAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAO,OAAO,KAAK,QAAO;AAAA,QAAI,EAAC,GAAE,WAAU,EAAC,MAAK,SAASA,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIE,GAAE,MAAI,EAAE,KAAKF,MAAG,IAAIE,GAAE,WAAS;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,QAAMA,GAAE,OAAO,EAAC,QAAO,SAAQ,SAAQA,GAAE,OAAM,QAAO,EAAC,MAAK,SAASD,IAAE;AAAC,cAAG,CAACA,GAAE,QAAO;AAAK,cAAIE,KAAE,MAAKE,KAAE,IAAIL,GAAE;AAAM,iBAAOE,GAAE,GAAGG,IAAE,QAAQ,WAAU;AAAC,YAAAH,GAAE,IAAIG,EAAC;AAAE,gBAAIL,KAAEG,GAAE,OAAOD,GAAE,OAAO;AAAE,qBAAOF,OAAI,KAAGG,GAAE,MAAM,KAAG,KAAGA,GAAE,OAAO,KAAGA,GAAE,KAAKE,GAAE,OAAMA,GAAE,MAAM,GAAEL,MAAG,KAAGA,GAAE,MAAM,KAAG,KAAGA,GAAE,OAAO,KAAGA,GAAE,KAAKG,GAAE,MAAM,GAAEA,GAAE,OAAO,CAAC,GAAE,cAAY,OAAOA,GAAE,WAASA,GAAE,QAAQ,KAAKA,IAAE,EAAC,OAAME,GAAE,OAAM,QAAOA,GAAE,QAAO,OAAMA,GAAE,QAAMA,GAAE,QAAO,KAAIJ,GAAC,CAAC;AAAA,UAAE,CAAE,GAAEC,GAAE,GAAGG,IAAE,SAAS,SAASL,IAAE;AAAC,YAAAE,GAAE,IAAIG,EAAC,GAAE,cAAY,OAAOF,GAAE,UAAQA,GAAE,OAAO,KAAKA,IAAEH,EAAC;AAAA,UAAC,CAAE,GAAE,KAAK,KAAK,QAAOK,GAAE,MAAI,KAAK,MAAIJ,IAAEC,GAAE,KAAK;AAAA,QAAC,GAAE,QAAO,SAASF,IAAE;AAAC,iBAAO,KAAK,UAAQA,IAAE;AAAA,QAAI,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,SAAOA,IAAE;AAAA,QAAI,EAAC,GAAE,WAAU,EAAC,OAAM,SAASA,IAAEC,IAAEE,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAID,GAAE,OAAK,EAAE,KAAKF,EAAC,EAAE,KAAKC,MAAG,GAAEE,MAAGF,MAAG,CAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEC,GAAE,OAAKA,GAAE,OAAO,EAAC,QAAO,WAAU;AAAC,eAAK,YAAY,KAAK,MAAKA,GAAE,OAAO,MAAM,CAAC,GAAE,KAAK,IAAI,UAAQ,IAAIA,GAAE,OAAO,GAAG,GAAE,KAAK,WAAS,MAAG,KAAK,SAAO,OAAG,KAAK,KAAK,eAAcA,GAAE,SAAS,MAAM,aAAa,CAAC;AAAA,QAAC,GAAE,SAAQA,GAAE,OAAM,QAAO,EAAC,GAAE,SAASF,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,GAAG,IAAE,KAAK,KAAK,KAAIA,EAAC;AAAA,QAAC,GAAE,MAAK,SAASA,IAAE;AAAC,cAAG,WAASA,IAAE;AAAC,YAAAA,KAAE;AAAG,qBAAQC,KAAE,KAAK,KAAK,YAAWE,KAAE,GAAEE,KAAEJ,GAAE,QAAOE,KAAEE,IAAE,EAAEF,GAAE,MAAGA,MAAG,KAAGF,GAAEE,EAAC,EAAE,YAAU,KAAGD,GAAE,MAAMD,GAAEE,EAAC,CAAC,EAAE,IAAI,aAAWH,MAAG,OAAMA,MAAGC,GAAEE,EAAC,EAAE;AAAY,mBAAOH;AAAA,UAAC;AAAC,cAAG,KAAK,MAAM,EAAE,MAAM,IAAE,GAAE,cAAY,OAAOA,GAAE,CAAAA,GAAE,KAAK,MAAK,IAAI;AAAA,eAAM;AAAC,YAAAG,KAAE;AAAE,qBAAQG,MAAGN,KAAEA,GAAE,MAAM,IAAI,GAAG,QAAOG,KAAEG,IAAEH,KAAI,MAAK,MAAMH,GAAEG,EAAC,CAAC,EAAE,QAAQ;AAAA,UAAC;AAAC,iBAAO,KAAK,MAAM,KAAE,EAAE,QAAQ;AAAA,QAAC,GAAE,MAAK,SAASH,IAAE;AAAC,iBAAO,KAAK,KAAK,aAAYA,EAAC,EAAE,QAAQ;AAAA,QAAC,GAAE,SAAQ,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,IAAI,WAAS,KAAK,IAAI,UAAQ,IAAIE,GAAE,OAAOF,EAAC,GAAE,KAAK,QAAQ;AAAA,QAAE,GAAE,OAAM,WAAU;AAAC,cAAIA,MAAG,KAAK,YAAU,KAAK,SAAS,KAAG,MAAM,MAAKC,KAAEC,GAAE,MAAM,IAAIA,GAAE,MAAM,kBAAkBF,GAAE,UAAU,GAAG,SAASA,IAAE;AAAC,mBAAOE,GAAE,MAAMF,EAAC;AAAA,UAAC,CAAE;AAAE,iBAAO,IAAIE,GAAE,IAAID,EAAC;AAAA,QAAC,GAAE,SAAQ,SAASD,IAAE;AAAC,cAAG,aAAW,OAAOA,OAAI,KAAK,WAASA,KAAG,KAAK,UAAS;AAAC,gBAAIC,KAAE,MAAKE,KAAE,GAAEE,KAAE,KAAK,IAAI,UAAQ,IAAIH,GAAE,OAAO,KAAK,KAAK,WAAW,CAAC;AAAE,iBAAK,MAAM,EAAE,KAAM,WAAU;AAAC,mBAAK,IAAI,aAAWD,GAAE,SAAS,KAAG,KAAK,KAAK,KAAIA,GAAE,KAAK,GAAG,CAAC,GAAE,QAAM,KAAK,KAAK,IAAEE,MAAGE,MAAG,KAAK,KAAK,MAAKA,KAAEF,EAAC,GAAEA,KAAE;AAAA,YAAG,CAAE,GAAE,KAAK,KAAK,SAAS;AAAA,UAAC;AAAC,iBAAO;AAAA,QAAI,GAAE,OAAM,SAASH,IAAE;AAAC,iBAAO,KAAK,SAAO,CAAC,CAACA,IAAE;AAAA,QAAI,GAAE,SAAQ,SAASA,IAAE;AAAC,iBAAO,KAAK,MAAIA,IAAE,KAAK,IAAI,UAAQ,IAAIE,GAAE,OAAOF,GAAE,WAAS,GAAG,GAAE;AAAA,QAAI,EAAC,GAAE,WAAU,EAAC,MAAK,SAASA,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIE,GAAE,MAAI,EAAE,KAAKF,EAAC;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAIE,GAAE,MAAI,EAAE,MAAMF,EAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEE,GAAE,QAAMA,GAAE,OAAO,EAAC,QAAO,SAAQ,SAAQA,GAAE,OAAM,QAAO,EAAC,MAAK,SAASF,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,eAAa,KAAK,IAAI,WAAS,OAAK,OAAK,cAAY,OAAOA,KAAEA,GAAE,KAAK,MAAK,IAAI,IAAE,KAAK,MAAMA,EAAC,GAAE;AAAA,QAAK,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,SAAQ,WAAU;AAAC,cAAIA,KAAE,KAAK,OAAOE,GAAE,IAAI;AAAE,iBAAO,KAAK,IAAI,WAAS,MAAG,KAAK,GAAGF,GAAE,IAAI,UAAQA,GAAE,KAAK,WAAW,CAAC,EAAE,KAAK,KAAIA,GAAE,EAAE,CAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEE,GAAE,OAAOA,GAAE,MAAKA,GAAE,OAAM,EAAC,OAAM,SAASF,IAAE;AAAC,iBAAM,UAAK,KAAK,UAAQ,KAAK,MAAM,GAAE,KAAK,KAAK,YAAYC,GAAE,eAAeD,EAAC,CAAC,GAAE;AAAA,QAAI,GAAE,OAAM,SAASA,IAAE;AAAC,cAAIC,MAAG,KAAK,YAAU,KAAK,SAAS,KAAG,MAAM,MAAKE,KAAE,IAAID,GAAE;AAAM,iBAAM,UAAK,KAAK,UAAQ,KAAK,MAAM,GAAED,GAAE,YAAYE,GAAE,IAAI,GAAEA,GAAE,KAAKH,EAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,mBAAQA,MAAG,KAAK,YAAU,KAAK,SAAS,KAAG,MAAM,MAAKA,GAAE,cAAc,IAAG,CAAAA,GAAE,YAAYA,GAAE,SAAS;AAAE,iBAAO;AAAA,QAAI,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK,KAAK,sBAAsB;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,WAASA,GAAE,OAAO,EAAC,QAAO,YAAW,SAAQA,GAAE,QAAO,QAAOA,GAAE,MAAK,WAAU,EAAC,YAAWA,GAAE,WAAU,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,MAAM;AAAE,iBAAOA,KAAEA,GAAE,MAAM,IAAE;AAAA,QAAI,GAAE,MAAK,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,MAAM,GAAEC,KAAE;AAAK,iBAAOD,OAAIC,KAAED,GAAE,KAAKD,EAAC,IAAG,QAAMA,KAAEE,KAAE;AAAA,QAAI,GAAE,OAAM,WAAU;AAAC,cAAIF,KAAE,KAAK,SAAS;AAAE,cAAGA,GAAE,QAAOA,GAAE,UAAU,MAAM;AAAA,QAAC,GAAE,UAAS,WAAU;AAAC,cAAG,KAAK,KAAK,cAAY,cAAY,KAAK,KAAK,WAAW,SAAS,QAAOE,GAAE,MAAM,KAAK,KAAK,UAAU;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEA,GAAE,SAAOA,GAAE,OAAO,EAAC,QAAO,WAAU;AAAC,eAAK,YAAY,KAAK,MAAKA,GAAE,OAAO,KAAK,CAAC,GAAE,KAAK,MAAM,YAAW,SAAS;AAAA,QAAC,GAAE,SAAQA,GAAE,WAAU,WAAU,EAAC,QAAO,WAAU;AAAC,iBAAO,KAAK,IAAI,IAAIA,GAAE,QAAM;AAAA,QAAC,EAAC,EAAC,CAAC;AAAE,YAAIO,KAAE,EAAC,QAAO,CAAC,SAAQ,SAAQ,WAAU,WAAU,YAAW,cAAa,aAAY,YAAY,GAAE,MAAK,CAAC,SAAQ,WAAU,MAAM,GAAE,QAAO,SAAST,IAAEC,IAAE;AAAC,iBAAM,WAASA,KAAED,KAAEA,KAAE,MAAIC;AAAA,QAAC,EAAC;AAAE,iBAASU,GAAEX,IAAEC,IAAEE,IAAEE,IAAE;AAAC,iBAAOF,KAAEE,GAAE,QAAQH,GAAE,MAAM,MAAK,IAAI;AAAA,QAAC;AAAC,iBAASU,GAAEZ,IAAE;AAAC,iBAAOA,GAAE,YAAY,EAAE,QAAQ,SAAS,SAASA,IAAEC,IAAE;AAAC,mBAAOA,GAAE,YAAY;AAAA,UAAC,CAAE;AAAA,QAAC;AAAC,iBAASS,GAAEV,IAAE;AAAC,iBAAOA,GAAE,OAAO,CAAC,EAAE,YAAY,IAAEA,GAAE,MAAM,CAAC;AAAA,QAAC;AAAC,iBAASc,GAAEd,IAAE;AAAC,cAAIC,KAAED,GAAE,SAAS,EAAE;AAAE,iBAAO,KAAGC,GAAE,SAAO,MAAIA,KAAEA;AAAA,QAAC;AAAC,iBAASc,GAAEf,IAAEC,IAAEC,IAAE;AAAC,cAAG,QAAMD,MAAG,QAAMC,IAAE;AAAC,gBAAIC,KAAEH,GAAE,KAAK;AAAE,oBAAMC,KAAEA,KAAEE,GAAE,QAAMA,GAAE,SAAOD,KAAE,QAAMA,OAAIA,KAAEC,GAAE,SAAOA,GAAE,QAAMF;AAAA,UAAE;AAAC,iBAAM,EAAC,OAAMA,IAAE,QAAOC,GAAC;AAAA,QAAC;AAAC,iBAASW,GAAEb,IAAEC,IAAEC,IAAE;AAAC,iBAAM,EAAC,GAAED,KAAED,GAAE,IAAEE,KAAEF,GAAE,IAAE,GAAE,GAAEC,KAAED,GAAE,IAAEE,KAAEF,GAAE,IAAE,EAAC;AAAA,QAAC;AAAC,iBAASgB,GAAEhB,IAAE;AAAC,iBAAM,EAAC,GAAEA,GAAE,CAAC,GAAE,GAAEA,GAAE,CAAC,GAAE,GAAEA,GAAE,CAAC,GAAE,GAAEA,GAAE,CAAC,GAAE,GAAEA,GAAE,CAAC,GAAE,GAAEA,GAAE,CAAC,EAAC;AAAA,QAAC;AAAC,iBAASiB,GAAEhB,IAAE;AAAC,mBAAQE,KAAEF,GAAE,WAAW,SAAO,GAAEE,MAAG,GAAEA,KAAI,CAAAF,GAAE,WAAWE,EAAC,aAAYH,GAAE,cAAYiB,GAAEhB,GAAE,WAAWE,EAAC,CAAC;AAAE,iBAAOD,GAAE,MAAMD,EAAC,EAAE,GAAGC,GAAE,IAAID,GAAE,QAAQ,CAAC;AAAA,QAAC;AAAC,iBAASG,GAAEJ,IAAE;AAAC,iBAAO,KAAK,IAAIA,EAAC,IAAE,QAAMA,KAAE;AAAA,QAAC;AAAC,SAAC,QAAO,QAAQ,EAAE,QAAS,SAASA,IAAE;AAAC,cAAIC,KAAE,CAAC;AAAE,UAAAA,GAAED,EAAC,IAAE,SAASC,IAAE;AAAC,gBAAG,WAASA,GAAE,QAAO;AAAK,gBAAG,YAAU,OAAOA,MAAGC,GAAE,MAAM,MAAMD,EAAC,KAAGA,MAAG,cAAY,OAAOA,GAAE,KAAK,MAAK,KAAKD,IAAEC,EAAC;AAAA,gBAAO,UAAQE,KAAEM,GAAET,EAAC,EAAE,SAAO,GAAEG,MAAG,GAAEA,KAAI,SAAMF,GAAEQ,GAAET,EAAC,EAAEG,EAAC,CAAC,KAAG,KAAK,KAAKM,GAAE,OAAOT,IAAES,GAAET,EAAC,EAAEG,EAAC,CAAC,GAAEF,GAAEQ,GAAET,EAAC,EAAEG,EAAC,CAAC,CAAC;AAAE,mBAAO;AAAA,UAAI,GAAED,GAAE,OAAOA,GAAE,SAAQA,GAAE,IAAGD,EAAC;AAAA,QAAC,CAAE,GAAEC,GAAE,OAAOA,GAAE,SAAQA,GAAE,IAAG,EAAC,WAAU,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,UAAU,EAAC,GAAED,IAAE,GAAEC,GAAC,CAAC;AAAA,QAAC,GAAE,QAAO,SAASD,IAAE;AAAC,iBAAO,KAAK,KAAK,aAAY,IAAIE,GAAE,OAAO,KAAG,UAAU,SAAO,CAAC,EAAE,MAAM,KAAK,SAAS,IAAEF,EAAC,CAAC;AAAA,QAAC,GAAE,SAAQ,SAASA,IAAE;AAAC,iBAAO,KAAK,KAAK,WAAUA,EAAC;AAAA,QAAC,GAAE,IAAG,SAASA,IAAE;AAAC,iBAAO,KAAK,EAAE,IAAIE,GAAE,OAAOF,EAAC,EAAE,KAAK,gBAAgBE,GAAE,KAAG,IAAE,KAAK,EAAE,CAAC,GAAE,IAAE;AAAA,QAAC,GAAE,IAAG,SAASF,IAAE;AAAC,iBAAO,KAAK,EAAE,IAAIE,GAAE,OAAOF,EAAC,EAAE,KAAK,gBAAgBE,GAAE,KAAG,IAAE,KAAK,EAAE,CAAC,GAAE,IAAE;AAAA,QAAC,EAAC,CAAC,GAAEA,GAAE,OAAOA,GAAE,MAAK,EAAC,QAAO,WAAU;AAAC,iBAAO,KAAK,KAAK,eAAe;AAAA,QAAC,GAAE,SAAQ,SAASF,IAAE;AAAC,iBAAO,KAAK,KAAK,iBAAiBA,EAAC;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,MAAIA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,gBAAM,QAAQA,EAAC,IAAE,KAAK,UAAQA,KAAE,KAAK,MAAM;AAAA,QAAC,GAAE,QAAO,EAAC,KAAI,WAAU;AAAC,mBAAQA,KAAE,CAAC,EAAE,MAAM,KAAK,SAAS,GAAEC,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED,KAAI,MAAK,QAAQ,KAAKD,GAAEC,EAAC,CAAC;AAAE,iBAAO;AAAA,QAAI,GAAE,QAAO,SAASD,IAAE;AAAC,cAAIC,KAAE,KAAK,MAAMD,EAAC;AAAE,iBAAOC,KAAE,MAAI,KAAK,QAAQ,OAAOA,IAAE,CAAC,GAAE;AAAA,QAAI,GAAE,MAAK,SAASD,IAAE;AAAC,mBAAQC,KAAE,GAAEC,KAAE,KAAK,QAAQ,QAAOD,KAAEC,IAAED,KAAI,CAAAD,GAAE,MAAM,KAAK,QAAQC,EAAC,GAAE,CAACA,IAAE,KAAK,OAAO,CAAC;AAAE,iBAAO;AAAA,QAAI,GAAE,OAAM,WAAU;AAAC,iBAAO,KAAK,UAAQ,CAAC,GAAE;AAAA,QAAI,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK,QAAQ;AAAA,QAAM,GAAE,KAAI,SAASD,IAAE;AAAC,iBAAO,KAAK,MAAMA,EAAC,KAAG;AAAA,QAAC,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,QAAQ,QAAQA,EAAC;AAAA,QAAC,GAAE,KAAI,SAASA,IAAE;AAAC,iBAAO,KAAK,QAAQA,EAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAO,KAAK,IAAI,CAAC;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,iBAAO,KAAK,IAAI,KAAK,QAAQ,SAAO,CAAC;AAAA,QAAC,GAAE,SAAQ,WAAU;AAAC,iBAAO,KAAK;AAAA,QAAO,EAAC,GAAE,WAAU,EAAC,KAAI,SAASA,IAAE;AAAC,iBAAO,IAAIE,GAAE,IAAIF,EAAC;AAAA,QAAC,EAAC,EAAC,CAAC,GAAEE,GAAE,GAAG,MAAIA,GAAE,OAAO,EAAC,QAAO,SAASF,IAAE;AAAC,eAAK,MAAIA;AAAA,QAAC,EAAC,CAAC,GAAEE,GAAE,IAAI,UAAQ,WAAU;AAAC,cAAIF,KAAE,CAAC;AAAE,mBAAQC,MAAKC,GAAE,MAAM,UAAU,eAAY,OAAOA,GAAE,MAAM,UAAUD,EAAC,KAAG,cAAY,OAAOC,GAAE,IAAI,UAAUD,EAAC,KAAGD,GAAE,KAAKC,EAAC;AAAE,mBAAQA,MAAKD,GAAE,QAAS,SAASA,IAAE;AAAC,YAAAE,GAAE,IAAI,UAAUF,EAAC,IAAE,WAAU;AAAC,uBAAQC,KAAE,GAAEE,KAAE,KAAK,QAAQ,QAAOF,KAAEE,IAAEF,KAAI,MAAK,QAAQA,EAAC,KAAG,cAAY,OAAO,KAAK,QAAQA,EAAC,EAAED,EAAC,KAAG,KAAK,QAAQC,EAAC,EAAED,EAAC,EAAE,MAAM,KAAK,QAAQC,EAAC,GAAE,SAAS;AAAE,qBAAM,aAAWD,KAAE,KAAK,OAAK,KAAK,KAAG,IAAIE,GAAE,GAAG,IAAI,IAAI,KAAG;AAAA,YAAI;AAAA,UAAC,CAAE,GAAEF,KAAE,CAAC,GAAEE,GAAE,GAAG,UAAU,eAAY,OAAOA,GAAE,GAAG,UAAUD,EAAC,KAAG,cAAY,OAAOC,GAAE,GAAG,IAAI,UAAUD,EAAC,KAAGD,GAAE,KAAKC,EAAC;AAAE,UAAAD,GAAE,QAAS,SAASA,IAAE;AAAC,YAAAE,GAAE,GAAG,IAAI,UAAUF,EAAC,IAAE,WAAU;AAAC,uBAAQC,KAAE,GAAEC,KAAE,KAAK,IAAI,QAAQ,QAAOD,KAAEC,IAAED,KAAI,MAAK,IAAI,QAAQA,EAAC,EAAE,GAAGD,EAAC,EAAE,MAAM,KAAK,IAAI,QAAQC,EAAC,EAAE,IAAG,SAAS;AAAE,qBAAO;AAAA,YAAI;AAAA,UAAC,CAAE;AAAA,QAAC,GAAEC,GAAE,OAAOA,GAAE,SAAQ,CAAC,CAAC,GAAEA,GAAE,OAAOA,GAAE,SAAQ,EAAC,UAAS,SAASF,IAAEC,IAAE;AAAC,cAAG,aAAWiB,GAAE,UAAU,CAAC,CAAC,EAAE,UAAQhB,MAAKF,GAAE,MAAK,SAASE,IAAEF,GAAEE,EAAC,CAAC;AAAA,eAAM;AAAC,gBAAG,KAAG,UAAU,OAAO,QAAO,KAAK,OAAO,EAAEF,EAAC;AAAE,iBAAK,OAAO,EAAEA,EAAC,IAAEC;AAAA,UAAC;AAAC,iBAAO;AAAA,QAAI,GAAE,QAAO,WAAU;AAAC,cAAG,KAAG,UAAU,OAAO,MAAK,UAAQ,CAAC;AAAA,cAAO,UAAQD,KAAE,UAAU,SAAO,GAAEA,MAAG,GAAEA,KAAI,QAAO,KAAK,OAAO,EAAE,UAAUA,EAAC,CAAC;AAAE,iBAAO;AAAA,QAAI,GAAE,QAAO,WAAU;AAAC,iBAAO,KAAK,YAAU,KAAK,UAAQ,CAAC;AAAA,QAAE,EAAC,CAAC,GAAEE,GAAE,MAAI,SAASF,IAAE;AAAC,cAAIG,KAAEF,GAAE,eAAe,SAASD,IAAE;AAAC,gBAAIC,MAAGD,MAAG,IAAI,SAAS,EAAE,MAAME,GAAE,MAAM,SAAS;AAAE,gBAAGD,GAAE,QAAOA,GAAE,CAAC;AAAA,UAAC,EAAED,EAAC,KAAGA,EAAC;AAAE,iBAAOE,GAAE,MAAMC,EAAC;AAAA,QAAC,GAAED,GAAE,SAAO,SAASF,IAAEG,IAAE;AAAC,iBAAO,IAAID,GAAE,IAAIA,GAAE,MAAM,KAAKC,MAAGF,IAAG,iBAAiBD,EAAC,GAAG,SAASA,IAAE;AAAC,mBAAOE,GAAE,MAAMF,EAAC;AAAA,UAAC,CAAE,CAAC;AAAA,QAAC,GAAEE,GAAE,OAAOA,GAAE,QAAO,EAAC,QAAO,SAASF,IAAE;AAAC,iBAAOE,GAAE,OAAOF,IAAE,KAAK,IAAI;AAAA,QAAC,EAAC,CAAC;AAAE,YAAIO,KAAE,SAAS,MAAM,EAAE;AAAE,YAAG,cAAY,OAAOP,GAAE,aAAY;AAAC,cAAImB,KAAE,SAASnB,IAAEE,IAAE;AAAC,YAAAA,KAAEA,MAAG,EAAC,SAAQ,OAAG,YAAW,OAAG,QAAO,OAAM;AAAE,gBAAIC,KAAEF,GAAE,YAAY,aAAa;AAAE,mBAAOE,GAAE,gBAAgBH,IAAEE,GAAE,SAAQA,GAAE,YAAWA,GAAE,MAAM,GAAEC;AAAA,UAAC;AAAE,UAAAgB,GAAE,YAAUnB,GAAE,MAAM,WAAUE,GAAE,cAAYiB;AAAA,QAAC,MAAM,CAAAjB,GAAE,cAAYF,GAAE;AAAY,eAAOE;AAAA,MAAC,GAAE,cAAY,OAAO,UAAQ,OAAO,MAAI,OAAQ,WAAU;AAAC,eAAO6F,IAAGD,KAAGA,IAAG,QAAQ;AAAA,MAAC,CAAE,IAAE,cAAY,eAAa,OAAO,UAAQ,cAAY5E,GAAE,OAAO,MAAI,eAAa,OAAO,SAAO,OAAO,UAAQ4E,IAAG,WAASC,IAAGD,KAAGA,IAAG,QAAQ,IAAE,SAAS9F,IAAE;AAAC,eAAO+F,IAAG/F,IAAEA,GAAE,QAAQ;AAAA,MAAC,IAAE8F,IAAG,MAAIC,IAAGD,KAAGA,IAAG,QAAQ;AAAA;AAAA;AAAA,MAI9gld,WAAU;AAAC,YAAI,SAAO,IAAI,OAAO,EAAC,QAAO,UAAS,SAAQ,IAAI,QAAO,QAAO,EAAC,QAAO,iBAAgB,aAAY,eAAc,YAAW,mBAAkB,iBAAgB,mBAAkB,MAAK,aAAY,QAAO,eAAc,WAAU,MAAG,KAAI,SAAS9F,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAID,IAAEC,EAAC,GAAE,CAACD,GAAE,KAAK,IAAI,KAAG,KAAK,aAAWA,GAAE,KAAK,MAAK,KAAK,MAAM,GAAEA,GAAE,KAAK,QAAQ,KAAGA,GAAE,KAAK,UAASA,EAAC,GAAEA;AAAA,QAAC,GAAE,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,YAAYF,IAAEC,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,aAAY,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,kBAAkBD,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,gBAAe,SAASD,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,qBAAqBA,EAAC,CAAC;AAAA,QAAC,GAAE,mBAAkB,SAASA,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,wBAAwBA,EAAC,CAAC;AAAA,QAAC,GAAE,WAAU,SAASA,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,gBAAgBF,IAAEC,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,OAAM,SAASF,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,YAAYD,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,QAAO,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,aAAaD,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,OAAM,SAASD,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,YAAYA,EAAC,CAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,cAAIA,KAAE,CAAC,MAAM;AAAE,mBAAQC,MAAK,UAAU,CAAAD,GAAE,KAAK,UAAUC,EAAC,CAAC;AAAE,iBAAO,KAAK,IAAI,KAAI,IAAI,YAAY,KAAK,MAAM,IAAI,aAAYD,EAAC,IAAE;AAAA,QAAC,GAAE,cAAa,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,mBAAmBD,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,YAAW,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,iBAAiBD,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,iBAAgB,SAASD,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,sBAAsBF,IAAEC,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,iBAAgB,SAASF,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,sBAAsBL,IAAEC,IAAEC,IAAEC,IAAEE,EAAC,CAAC;AAAA,QAAC,GAAE,kBAAiB,SAASL,IAAEC,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,uBAAuBH,IAAEC,IAAEC,IAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,YAAU;AAAA,QAAC,GAAE,YAAW,SAASH,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,iBAAO,KAAK,IAAI,IAAI,IAAI,iBAAiBL,IAAEC,IAAEC,IAAEC,IAAEE,EAAC,CAAC;AAAA,QAAC,GAAE,UAAS,WAAU;AAAC,iBAAM,UAAQ,KAAK,KAAK,IAAI,IAAE;AAAA,QAAG,EAAC,EAAC,CAAC,GAAE,IAAI,OAAO,IAAI,MAAK,EAAC,QAAO,SAASL,IAAE;AAAC,cAAIC,KAAE,KAAK,IAAI,IAAI,IAAI,QAAM;AAAE,iBAAM,cAAY,OAAOD,MAAGA,GAAE,KAAKC,IAAEA,EAAC,GAAEA;AAAA,QAAC,EAAC,CAAC,GAAE,IAAI,OAAO,IAAI,WAAU,EAAC,QAAO,SAASD,IAAE;AAAC,iBAAO,KAAK,KAAK,EAAE,OAAOA,EAAC;AAAA,QAAC,EAAC,CAAC,GAAE,IAAI,OAAO,IAAI,SAAQ,IAAI,GAAE,IAAI,QAAO,EAAC,QAAO,SAASA,IAAE;AAAC,iBAAO,KAAK,WAASA,cAAa,IAAI,UAAQA,KAAE,KAAK,IAAI,EAAE,OAAOA,EAAC,GAAE,KAAK,IAAI,KAAG,KAAK,SAAS,IAAI,MAAI,KAAK,IAAI,KAAG,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,QAAQ,GAAE,KAAK,KAAK,UAAS,KAAK,QAAQ,GAAE,KAAK;AAAA,QAAQ,GAAE,UAAS,SAASA,IAAE;AAAC,iBAAO,KAAK,YAAU,SAAKA,MAAG,KAAK,SAAS,OAAO,GAAE,OAAO,KAAK,UAAS,KAAK,KAAK,UAAS,IAAI;AAAA,QAAC,EAAC,CAAC,GAAE,IAAI,SAAO,IAAI,OAAO,EAAC,QAAO,WAAU;AAAC,eAAK,YAAY,KAAK,IAAI;AAAA,QAAC,GAAE,SAAQ,IAAI,SAAQ,QAAO,EAAC,IAAG,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,OAAO,cAAY,KAAK,KAAK,IAAI,IAAE,IAAI,EAAE,IAAI,CAAC,KAAG,KAAK,KAAK,IAAI,IAAE,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,QAAO,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,QAAQ,IAAE,KAAK,KAAK,UAASA,EAAC;AAAA,QAAC,GAAE,UAAS,WAAU;AAAC,iBAAO,KAAK,OAAO;AAAA,QAAC,EAAC,EAAC,CAAC,GAAE,IAAI,eAAa,IAAI,OAAO,EAAC,QAAO,WAAU;AAAC,eAAK,YAAY,KAAK,IAAI;AAAA,QAAC,GAAE,SAAQ,IAAI,QAAO,QAAO,EAAC,IAAG,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,OAAO,cAAY,KAAK,KAAK,IAAI,IAAE,IAAI,EAAE,IAAI,CAAC,KAAG,KAAK,KAAK,IAAI,IAAE,KAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,GAAE,QAAO,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,KAAK,QAAQ,IAAE,KAAK,KAAK,UAASA,EAAC;AAAA,QAAC,GAAE,UAAS,WAAU;AAAC,iBAAO,KAAK,OAAO;AAAA,QAAC,EAAC,EAAC,CAAC;AAAE,YAAIA,KAAE,EAAC,OAAM,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,MAAM,MAAKD,IAAEC,EAAC;AAAA,QAAC,GAAE,aAAY,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,YAAYD,IAAEC,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,gBAAe,SAASD,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,eAAeA,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,mBAAkB,SAASA,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,kBAAkBA,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,WAAU,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,UAAU,MAAKD,IAAEC,EAAC;AAAA,QAAC,GAAE,OAAM,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,MAAMD,IAAEC,EAAC;AAAA,QAAC,GAAE,QAAO,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,OAAOD,IAAEC,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,OAAM,SAASD,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,MAAMA,EAAC;AAAA,QAAC,GAAE,OAAM,WAAU;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,MAAM,MAAM,KAAK,OAAO,GAAE,CAAC,IAAI,EAAE,OAAO,SAAS,CAAC;AAAA,QAAC,GAAE,cAAa,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,aAAaD,IAAEC,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,YAAW,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,WAAWD,IAAEC,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,iBAAgB,SAASD,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,gBAAgBF,IAAEC,IAAEC,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,iBAAgB,SAASF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,gBAAgB,MAAKH,IAAEC,IAAEC,IAAEC,EAAC;AAAA,QAAC,GAAE,kBAAiB,SAASH,IAAEC,IAAEC,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,iBAAiBH,IAAEC,IAAEC,IAAEC,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,MAAK,WAAU;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI;AAAA,QAAC,GAAE,YAAW,SAASH,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,WAAWL,IAAEC,IAAEC,IAAEC,IAAEE,EAAC,EAAE,GAAG,IAAI;AAAA,QAAC,EAAC;AAAE,YAAI,OAAO,IAAI,QAAOL,EAAC,GAAE,IAAI,OAAO,IAAI,cAAaA,EAAC,GAAE,IAAI,cAAY,IAAI,OAAO,EAAC,QAAO,WAAU;AAAC,eAAK,YAAY,KAAK,IAAI;AAAA,QAAC,GAAE,SAAQ,IAAI,SAAQ,QAAO,EAAC,IAAG,SAASA,IAAE;AAAC,eAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,EAAC,EAAC,CAAC;AAAE,YAAIC,KAAE,EAAC,OAAM,SAASD,IAAEC,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,IAAGF,IAAE,KAAIC,IAAE,MAAKC,MAAG,SAAQ,CAAC;AAAA,QAAC,GAAE,aAAY,SAASF,IAAEC,IAAE;AAAC,sBAAUD,OAAIC,KAAEI,GAAEJ,EAAC,IAAG,KAAK,KAAK,EAAC,MAAKD,IAAE,QAAO,WAASC,KAAE,OAAKA,GAAC,CAAC;AAAA,QAAC,GAAE,gBAAe,SAASD,IAAE;AAAC,UAAAA,KAAEK,GAAEL,EAAC,GAAE,KAAK,KAAK,EAAC,OAAM,KAAK,KAAKA,GAAE,MAAM,GAAG,EAAE,MAAM,GAAE,cAAaA,GAAC,CAAC;AAAA,QAAC,GAAE,WAAU,SAASA,IAAEC,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,IAAGF,IAAE,KAAIC,IAAE,UAASC,GAAC,CAAC;AAAA,QAAC,GAAE,OAAM,SAASF,IAAEC,IAAE;AAAC,eAAK,KAAK,eAAcD,EAAC,GAAE,QAAMC,MAAG,KAAK,KAAK,iBAAgBA,EAAC;AAAA,QAAC,GAAE,QAAO,SAASD,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,IAAGD,IAAE,IAAGC,GAAC,CAAC;AAAA,QAAC,GAAE,OAAM,SAASD,IAAE;AAAC,eAAK,KAAK,QAAOA,IAAE,IAAI,KAAK;AAAA,QAAC,GAAE,iBAAgB,SAASA,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,eAAK,KAAK,EAAC,IAAGL,IAAE,KAAIC,IAAE,OAAMC,IAAE,kBAAiBC,IAAE,kBAAiBE,GAAC,CAAC;AAAA,QAAC,GAAE,cAAa,SAASL,IAAEC,IAAE;AAAC,kBAAMD,MAAG,QAAMC,KAAE,KAAK,KAAK,gBAAe,SAASD,IAAE;AAAC,gBAAG,CAAC,MAAM,QAAQA,EAAC,EAAE,QAAOA;AAAE,qBAAQC,KAAE,GAAEC,KAAEF,GAAE,QAAOG,KAAE,CAAC,GAAEF,KAAEC,IAAED,KAAI,CAAAE,GAAE,KAAKH,GAAEC,EAAC,CAAC;AAAE,mBAAOE,GAAE,KAAK,GAAG;AAAA,UAAC,EAAE,MAAM,UAAU,MAAM,KAAK,SAAS,CAAC,CAAC,IAAE,KAAK,KAAK,gBAAe,KAAK;AAAA,QAAC,GAAE,YAAW,SAASH,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,UAASD,IAAE,QAAOC,GAAC,CAAC;AAAA,QAAC,GAAE,MAAK,WAAU;AAAA,QAAC,GAAE,YAAW,SAASD,IAAEC,IAAEC,IAAEC,IAAEE,IAAE;AAAC,eAAK,KAAK,EAAC,YAAWJ,IAAE,MAAKC,IAAE,aAAYC,IAAE,eAAcH,IAAE,MAAKK,GAAC,CAAC;AAAA,QAAC,EAAC,GAAEH,KAAE,EAAC,OAAM,WAAU;AAAC,cAAIF;AAAE,cAAG,UAAU,CAAC,aAAY,IAAI,KAAI;AAAC,gBAAIC,KAAE;AAAK,sBAAU,CAAC,EAAE,KAAM,SAASD,IAAE;AAAC,8BAAgB,IAAI,YAAUC,GAAE,IAAI,IAAI,KAAG,gBAAgB,IAAI,UAAQ,gBAAgB,IAAI,iBAAeA,GAAE,IAAI,IAAI,IAAI,UAAU,IAAI,CAAC;AAAA,YAAC,CAAE;AAAA,UAAC,OAAK;AAAC,YAAAD,KAAE,MAAM,QAAQ,UAAU,CAAC,CAAC,IAAE,UAAU,CAAC,IAAE;AAAU,qBAAQE,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,CAAAF,GAAEE,EAAC,aAAY,IAAI,YAAU,KAAK,IAAIF,GAAEE,EAAC,CAAC,IAAE,KAAK,IAAI,IAAI,IAAI,UAAUF,GAAEE,EAAC,CAAC,CAAC;AAAA,UAAC;AAAA,QAAC,GAAE,mBAAkB,SAASF,IAAE;AAAC,cAAG,KAAK,MAAI,IAAI,IAAI,OAAI,CAAC,KAAI,KAAI,KAAI,GAAG,EAAE,QAAQ,SAASA,IAAE;AAAC,iBAAKA,EAAC,IAAE,IAAI,IAAI,SAAOA,GAAE,YAAY,CAAC,EAAG,UAAU,GAAE,KAAK,IAAI,IAAI,KAAKA,EAAC,CAAC,GAAE,KAAK,KAAK,YAAY,KAAKA,EAAC,EAAE,IAAI;AAAA,UAAC,EAAE,KAAK,IAAI,CAAC,GAAEA,GAAE,UAAQC,MAAKD,GAAE,QAAM,CAAC,KAAI,KAAI,GAAG,EAAE,QAAQ,SAASC,IAAE;AAAC,iBAAKA,EAAC,EAAE,KAAKD,GAAE,GAAG;AAAA,UAAC,EAAE,KAAK,IAAI,CAAC,GAAE,OAAOA,GAAE,MAAKA,GAAE,MAAKC,EAAC,EAAE,KAAKD,GAAEC,EAAC,CAAC;AAAA,QAAC,GAAE,iBAAgB,SAASD,IAAEC,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,cAAaF,IAAE,iBAAgBC,IAAE,kBAAiBC,GAAC,CAAC;AAAA,QAAC,GAAE,kBAAiB,SAASF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,cAAaH,IAAE,iBAAgBC,IAAE,kBAAiBC,IAAE,kBAAiBC,GAAC,CAAC;AAAA,QAAC,EAAC,GAAEA,KAAE,EAAC,cAAa,SAASH,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,SAAQD,IAAE,WAAUC,GAAC,CAAC;AAAA,QAAC,GAAE,YAAW,SAASD,IAAEC,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,GAAEF,IAAE,GAAEC,IAAE,GAAEC,GAAC,CAAC;AAAA,QAAC,GAAE,WAAU,SAASF,IAAEC,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,eAAK,KAAK,EAAC,GAAEN,IAAE,GAAEC,IAAE,GAAEC,IAAE,WAAUC,IAAE,WAAUE,IAAE,WAAUC,GAAC,CAAC;AAAA,QAAC,GAAE,WAAU,SAASN,IAAE;AAAC,eAAK,KAAK,MAAKA,EAAC;AAAA,QAAC,EAAC;AAAE,iBAASK,GAAEL,IAAE;AAAC,iBAAO,MAAM,QAAQA,EAAC,MAAIA,KAAE,IAAI,IAAI,MAAMA,EAAC,IAAGA,GAAE,SAAS,EAAE,QAAQ,QAAO,EAAE,EAAE,QAAQ,QAAO,EAAE,EAAE,QAAQ,QAAO,GAAG;AAAA,QAAC;AAAC,iBAASM,KAAG;AAAC,cAAIN,KAAE,WAAU;AAAA,UAAC;AAAE,mBAAQC,MAAI,cAAY,OAAO,UAAU,UAAU,SAAO,CAAC,MAAID,KAAE,UAAU,UAAU,SAAO,CAAC,GAAE,MAAM,UAAU,OAAO,KAAK,WAAU,UAAU,SAAO,GAAE,CAAC,IAAG,UAAU,UAAQE,MAAK,UAAUD,EAAC,EAAE,CAAAD,GAAE,UAAUC,EAAC,EAAEC,EAAC,GAAEA,IAAE,UAAUD,EAAC,CAAC;AAAA,QAAC;AAAC,SAAC,KAAI,KAAI,KAAI,GAAG,EAAE,QAAS,SAASD,IAAE;AAAC,UAAAG,GAAE,SAAOH,GAAE,YAAY,CAAC,IAAE,SAASA,IAAE;AAAC,oBAAO,KAAK,KAAK,QAAOA,EAAC,GAAEA,IAAE;AAAA,cAAC,KAAI;AAAQ,qBAAK,KAAK,eAAc,UAAU,CAAC,CAAC;AAAE;AAAA,cAAM,KAAI;AAAS,qBAAK,KAAK,SAAQ,UAAU,CAAC,CAAC,GAAE,KAAK,KAAK,aAAY,UAAU,CAAC,CAAC;AAAE;AAAA,cAAM,KAAI;AAAQ,qBAAK,KAAK,aAAY,UAAU,CAAC,CAAC,GAAE,KAAK,KAAK,YAAW,UAAU,CAAC,CAAC,GAAE,KAAK,KAAK,UAAS,UAAU,CAAC,CAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,CAAE,GAAEM,GAAEL,IAAG,SAASD,IAAEC,IAAE;AAAC,cAAIC,KAAED,GAAE,OAAO,CAAC,EAAE,YAAY,IAAEA,GAAE,MAAM,CAAC;AAAE,cAAIC,KAAE,QAAQ,IAAE,IAAI,OAAO,EAAC,QAAO,WAAU;AAAC,iBAAK,YAAY,KAAK,MAAK,IAAI,OAAO,OAAKA,EAAC,CAAC,GAAEF,GAAE,MAAM,MAAK,SAAS,GAAE,KAAK,OAAO,KAAK,KAAK,IAAI,IAAE,KAAK;AAAA,UAAC,GAAE,SAAQ,IAAI,QAAO,QAAO,CAAC,EAAC,CAAC;AAAA,QAAC,CAAE,GAAEM,GAAEJ,IAAG,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAED,GAAE,OAAO,CAAC,EAAE,YAAY,IAAEA,GAAE,MAAM,CAAC;AAAE,cAAIC,KAAE,QAAQ,IAAE,IAAI,OAAO,EAAC,QAAO,WAAU;AAAC,iBAAK,YAAY,KAAK,MAAK,IAAI,OAAO,OAAKA,EAAC,CAAC,GAAEF,GAAE,MAAM,MAAK,SAAS,GAAE,KAAK,OAAO,KAAK,KAAK,IAAI,IAAE,KAAK;AAAA,UAAC,GAAE,SAAQ,IAAI,cAAa,QAAO,CAAC,EAAC,CAAC;AAAA,QAAC,CAAE,GAAEM,GAAEH,IAAG,SAASH,IAAEC,IAAE;AAAC,cAAIC,KAAED,GAAE,OAAO,CAAC,EAAE,YAAY,IAAEA,GAAE,MAAM,CAAC;AAAE,cAAIC,EAAC,IAAE,IAAI,OAAO,EAAC,QAAO,WAAU;AAAC,iBAAK,YAAY,KAAK,MAAK,IAAI,OAAO,OAAKA,EAAC,CAAC,GAAEF,GAAE,MAAM,MAAK,SAAS;AAAA,UAAC,GAAE,SAAQ,IAAI,aAAY,QAAO,CAAC,EAAC,CAAC;AAAA,QAAC,CAAE,GAAE,IAAI,OAAO,IAAI,aAAY,EAAC,IAAG,SAASA,IAAE;AAAC,iBAAOA,cAAa,IAAI,YAAU,KAAK,IAAIA,IAAE,CAAC,IAAE,KAAK,IAAI,IAAI,IAAI,UAAUA,EAAC,GAAE,CAAC,GAAE;AAAA,QAAI,EAAC,CAAC,GAAE,IAAI,OAAO,IAAI,iBAAgB,IAAI,aAAY,IAAI,uBAAsB,EAAC,KAAI,SAASA,IAAE;AAAC,iBAAO,QAAMA,KAAE,KAAK,OAAO,KAAG,KAAK,OAAO,EAAE,OAAO,cAAY,KAAK,KAAK,KAAK,IAAE,IAAI,EAAE,IAAI,CAAC,KAAG,KAAK,KAAK,KAAK,IAAE,KAAK,KAAK,OAAMA,EAAC;AAAA,QAAC,EAAC,CAAC,GAAE,IAAI,SAAO,EAAC,WAAU,CAAC,OAAK,OAAK,OAAK,GAAE,GAAE,OAAK,OAAK,MAAI,GAAE,GAAE,OAAK,OAAK,OAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,EAAC;AAAA,MAAC,EAAE,KAAK,MAAM,GAAE,WAAU;AAAC,iBAASA,GAAEA,IAAEK,IAAEC,IAAEE,IAAEC,IAAEE,IAAEC,IAAE;AAAC,mBAAQF,KAAEV,GAAE,MAAMK,IAAEC,MAAGM,EAAC,GAAEE,KAAEN,GAAE,MAAMC,IAAEE,MAAGC,EAAC,GAAEG,KAAE,GAAEF,KAAE,EAAC,KAAI,CAAC,GAAE,CAAC,GAAE,OAAM,CAAC,GAAE,CAAC,EAAC,GAAEG,KAAE,EAAC,KAAI,CAAC,GAAE,CAAC,GAAE,OAAM,CAAC,GAAE,CAAC,EAAC,OAAI;AAAC,gBAAGN,GAAEK,EAAC,IAAEd,GAAE,KAAKY,IAAEH,GAAEK,EAAC,CAAC,GAAED,GAAEC,EAAC,IAAEd,GAAE,KAAKe,IAAEF,GAAEC,EAAC,CAAC,GAAEL,GAAEK,EAAC,EAAE,CAAC,KAAGD,GAAEC,EAAC,EAAE,CAAC,KAAG,OAAKL,GAAEK,EAAC,EAAE,CAAC,KAAG,OAAKL,GAAEK,EAAC,EAAE,CAAC,MAAIL,GAAEK,EAAC,EAAE,CAAC,KAAGD,GAAEC,EAAC,EAAE,CAAC,KAAGL,GAAEK,EAAC,EAAE,CAAC,KAAGD,GAAEC,EAAC,EAAE,CAAC,MAAI,MAAM,UAAU,OAAO,MAAML,IAAE,CAACK,IAAE,CAAC,EAAE,OAAOZ,GAAE,KAAKU,IAAEH,GAAEK,EAAC,CAAC,CAAC,CAAC,GAAE,MAAM,UAAU,OAAO,MAAMD,IAAE,CAACC,IAAE,CAAC,EAAE,OAAOZ,GAAE,KAAKa,IAAEF,GAAEC,EAAC,CAAC,CAAC,CAAC,MAAIL,GAAEK,EAAC,IAAEb,GAAE,KAAKW,IAAEH,GAAEK,EAAC,CAAC,GAAED,GAAEC,EAAC,IAAEb,GAAE,KAAKc,IAAEF,GAAEC,EAAC,CAAC,IAAG,EAAEA,MAAGL,GAAE,UAAQK,MAAGD,GAAE,OAAO;AAAM,YAAAC,MAAGL,GAAE,UAAQA,GAAE,KAAK,CAAC,KAAIG,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,CAAC,CAAC,GAAEE,MAAGD,GAAE,UAAQA,GAAE,KAAK,CAAC,KAAIE,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,GAAEA,GAAE,IAAI,CAAC,CAAC,CAAC;AAAA,UAAC;AAAC,iBAAM,EAAC,OAAMN,IAAE,MAAKI,GAAC;AAAA,QAAC;AAAC,iBAASb,GAAED,IAAE;AAAC,kBAAOA,GAAE,CAAC,GAAE;AAAA,YAAC,KAAI;AAAA,YAAI,KAAI;AAAI,cAAAA,GAAE,CAAC,IAAE,KAAIA,GAAE,CAAC,IAAE,KAAK,MAAM,CAAC,GAAEA,GAAE,CAAC,IAAE,KAAK,MAAM,CAAC;AAAE;AAAA,YAAM,KAAI;AAAI,cAAAA,GAAE,CAAC,IAAE,KAAIA,GAAE,CAAC,IAAE,KAAK,IAAI,CAAC;AAAE;AAAA,YAAM,KAAI;AAAI,cAAAA,GAAE,CAAC,IAAE,KAAIA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAE,KAAK,IAAI,CAAC;AAAE;AAAA,YAAM,KAAI;AAAI,cAAAA,GAAE,CAAC,IAAE,KAAIA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAE,KAAK,WAAW,CAAC,GAAEA,GAAE,CAAC,IAAE,KAAK,WAAW,CAAC;AAAE;AAAA,YAAM,KAAI;AAAI,cAAAA,GAAE,CAAC,IAAE,KAAIA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAE,KAAK,WAAW,CAAC,GAAEA,GAAE,CAAC,IAAE,KAAK,WAAW,CAAC;AAAA,UAAC;AAAC,iBAAOA;AAAA,QAAC;AAAC,iBAASE,GAAEF,IAAE;AAAC,cAAIC,KAAED,GAAE;AAAO,iBAAO,KAAK,MAAI,CAACA,GAAEC,KAAE,CAAC,GAAED,GAAEC,KAAE,CAAC,CAAC,GAAE,MAAI,OAAO,QAAQD,GAAE,CAAC,CAAC,MAAI,KAAK,aAAW,CAAC,IAAE,KAAK,IAAI,CAAC,IAAEA,GAAEC,KAAE,CAAC,GAAE,IAAE,KAAK,IAAI,CAAC,IAAED,GAAEC,KAAE,CAAC,CAAC,IAAGD;AAAA,QAAC;AAAC,iBAASG,GAAEH,IAAE;AAAC,cAAIC,KAAE,CAACD,EAAC;AAAE,kBAAOA,GAAE,CAAC,GAAE;AAAA,YAAC,KAAI;AAAI,qBAAO,KAAK,MAAI,KAAK,QAAM,CAACA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,GAAEC;AAAA,YAAE,KAAI;AAAI,cAAAD,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAE,KAAK,IAAI,CAAC,GAAEA,GAAE,CAAC,IAAE,KAAK,IAAI,CAAC;AAAE;AAAA,YAAM,KAAI;AAAI,cAAAA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,IAAE,IAAEA,GAAE,CAAC,IAAE,IAAE,IAAEA,GAAE,CAAC,IAAE,GAAEA,GAAE,CAAC,IAAE,IAAEA,GAAE,CAAC,IAAE,IAAE,IAAEA,GAAE,CAAC,IAAE,GAAEA,GAAE,CAAC,IAAE,IAAE,KAAK,IAAI,CAAC,IAAE,IAAE,IAAEA,GAAE,CAAC,IAAE,GAAEA,GAAE,CAAC,IAAE,IAAE,KAAK,IAAI,CAAC,IAAE,IAAE,IAAEA,GAAE,CAAC,IAAE;AAAE;AAAA,YAAM,KAAI;AAAI,cAAAC,KAAE,SAASD,IAAEC,IAAE;AAAC,oBAAIC,IAAEC,IAAEE,IAAEC,IAAEE,IAAEC,IAAEE,IAAEC,IAAEF,IAAEI,IAAEC,IAAEF,IAAEG,IAAEC,IAAEb,IAAEc,IAAEX,IAAEY,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,KAAK,IAAI3B,GAAE,CAAC,CAAC,GAAE4B,KAAE,KAAK,IAAI5B,GAAE,CAAC,CAAC,GAAE6B,KAAE7B,GAAE,CAAC,IAAE,KAAI8B,KAAE9B,GAAE,CAAC,GAAE+B,KAAE/B,GAAE,CAAC,GAAEgC,KAAEhC,GAAE,CAAC,GAAEiC,KAAEjC,GAAE,CAAC,GAAEkC,KAAE,IAAI,IAAI,MAAMnC,EAAC,GAAEoC,KAAE,IAAI,IAAI,MAAMH,IAAEC,EAAC,GAAEG,KAAE,CAAC;AAAE,oBAAG,MAAIT,MAAG,MAAIC,MAAGM,GAAE,MAAIC,GAAE,KAAGD,GAAE,MAAIC,GAAE,EAAE,QAAM,CAAC,CAAC,KAAID,GAAE,GAAEA,GAAE,GAAEC,GAAE,GAAEA,GAAE,GAAEA,GAAE,GAAEA,GAAE,CAAC,CAAC;AAAE,gBAAAlC,KAAE,IAAI,IAAI,OAAOiC,GAAE,IAAEC,GAAE,KAAG,IAAGD,GAAE,IAAEC,GAAE,KAAG,CAAC,EAAE,UAAW,IAAI,IAAI,SAAQ,OAAON,EAAC,CAAC,IAAG3B,KAAED,GAAE,IAAEA,GAAE,KAAG0B,KAAEA,MAAG1B,GAAE,IAAEA,GAAE,KAAG2B,KAAEA,OAAI,MAAID,MAAGzB,KAAE,KAAK,KAAKA,EAAC,GAAE0B,MAAG1B;AAAG,gBAAAE,KAAG,IAAI,IAAI,SAAQ,OAAOyB,EAAC,EAAE,MAAM,IAAEF,IAAE,IAAEC,EAAC,EAAE,OAAO,CAACC,EAAC,GAAEK,KAAEA,GAAE,UAAU9B,EAAC,GAAE+B,KAAEA,GAAE,UAAU/B,EAAC,GAAEC,KAAE,CAAC8B,GAAE,IAAED,GAAE,GAAEC,GAAE,IAAED,GAAE,CAAC,GAAE1B,KAAEH,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAEE,KAAE,KAAK,KAAKC,EAAC,GAAEH,GAAE,CAAC,KAAGE,IAAEF,GAAE,CAAC,KAAGE,IAAEG,KAAEF,KAAE,IAAE,KAAK,KAAK,IAAEA,KAAE,CAAC,IAAE,GAAEsB,OAAIC,OAAIrB,MAAG;AAAI,gBAAAC,KAAE,IAAI,IAAI,OAAOwB,GAAE,IAAED,GAAE,KAAG,IAAExB,KAAE,CAACL,GAAE,CAAC,IAAG8B,GAAE,IAAED,GAAE,KAAG,IAAExB,KAAEL,GAAE,CAAC,CAAC,GAAEI,KAAE,IAAI,IAAI,MAAMyB,GAAE,IAAEvB,GAAE,GAAEuB,GAAE,IAAEvB,GAAE,CAAC,GAAEE,KAAE,IAAI,IAAI,MAAMsB,GAAE,IAAExB,GAAE,GAAEwB,GAAE,IAAExB,GAAE,CAAC,GAAEG,KAAE,KAAK,KAAKL,GAAE,IAAE,KAAK,KAAKA,GAAE,IAAEA,GAAE,IAAEA,GAAE,IAAEA,GAAE,CAAC,CAAC,GAAEA,GAAE,IAAE,MAAIK,MAAG;AAAI,gBAAAF,KAAE,KAAK,KAAKC,GAAE,IAAE,KAAK,KAAKA,GAAE,IAAEA,GAAE,IAAEA,GAAE,IAAEA,GAAE,CAAC,CAAC,GAAEA,GAAE,IAAE,MAAID,MAAG;AAAI,gBAAAmB,MAAGjB,KAAEF,OAAIA,MAAG,IAAE,KAAK;AAAI,iBAACmB,MAAGjB,KAAEF,OAAIA,MAAG,IAAE,KAAK;AAAI,qBAAII,KAAE,KAAK,KAAK,IAAE,KAAK,IAAIF,KAAEF,EAAC,IAAE,KAAK,EAAE,GAAEK,KAAE,CAAC,GAAEX,KAAEQ,IAAEC,MAAGH,KAAEE,MAAGE,IAAEb,KAAE,IAAE,KAAK,IAAIY,KAAE,CAAC,IAAE,GAAEM,KAAE,GAAEA,MAAGL,IAAEK,KAAI,CAAAF,KAAE,KAAK,IAAIb,EAAC,GAAEY,KAAE,KAAK,IAAIZ,EAAC,GAAEc,KAAE,IAAI,IAAI,MAAMT,GAAE,IAAEQ,IAAER,GAAE,IAAEO,EAAC,GAAED,GAAEI,EAAC,IAAE,CAAC,IAAI,IAAI,MAAMD,GAAE,IAAEjB,KAAEe,IAAEE,GAAE,IAAEjB,KAAEgB,EAAC,GAAEC,IAAE,IAAI,IAAI,MAAMA,GAAE,IAAEjB,KAAEe,IAAEE,GAAE,IAAEjB,KAAEgB,EAAC,CAAC,GAAEb,MAAGS;AAAE,qBAAIE,GAAE,CAAC,EAAE,CAAC,IAAEA,GAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAEA,GAAEA,GAAE,SAAO,CAAC,EAAE,CAAC,IAAEA,GAAEA,GAAE,SAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAEb,KAAG,IAAI,IAAI,SAAQ,OAAOyB,EAAC,EAAE,MAAMF,IAAEC,EAAC,EAAE,OAAO,CAACC,EAAC,GAAER,KAAE,GAAEC,KAAEL,GAAE,QAAOI,KAAEC,IAAED,KAAI,CAAAJ,GAAEI,EAAC,EAAE,CAAC,IAAEJ,GAAEI,EAAC,EAAE,CAAC,EAAE,UAAUjB,EAAC,GAAEa,GAAEI,EAAC,EAAE,CAAC,IAAEJ,GAAEI,EAAC,EAAE,CAAC,EAAE,UAAUjB,EAAC,GAAEa,GAAEI,EAAC,EAAE,CAAC,IAAEJ,GAAEI,EAAC,EAAE,CAAC,EAAE,UAAUjB,EAAC;AAAE,qBAAIiB,KAAE,GAAEC,KAAEL,GAAE,QAAOI,KAAEC,IAAED,KAAI,CAAAE,MAAGH,KAAEH,GAAEI,KAAE,CAAC,EAAE,CAAC,GAAG,GAAEG,KAAEJ,GAAE,GAAEK,MAAGL,KAAEH,GAAEI,EAAC,EAAE,CAAC,GAAG,GAAEK,KAAEN,GAAE,GAAEY,MAAGZ,KAAEH,GAAEI,EAAC,EAAE,CAAC,GAAG,GAAEY,KAAEb,GAAE,GAAEgB,GAAE,KAAK,CAAC,KAAIb,IAAEC,IAAEC,IAAEC,IAAEM,IAAEC,EAAC,CAAC;AAAE,uBAAOG;AAAA,cAAC,EAAE,KAAK,KAAIrC,EAAC,GAAEA,KAAEC,GAAE,CAAC;AAAA,UAAC;AAAC,iBAAOD,GAAE,CAAC,IAAE,KAAI,KAAK,MAAI,CAACA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,GAAE,KAAK,aAAW,CAAC,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,GAAE,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,CAAC,GAAEC;AAAA,QAAC;AAAC,iBAASI,GAAEL,IAAEC,IAAE;AAAC,cAAG,UAAKA,GAAE,QAAM;AAAG,mBAAQC,KAAED,IAAEE,KAAEH,GAAE,QAAOE,KAAEC,IAAE,EAAED,GAAE,KAAG,OAAKF,GAAEE,EAAC,EAAE,CAAC,EAAE,QAAOA;AAAE,iBAAM;AAAA,QAAE;AAAC,YAAI,OAAO,IAAI,WAAU,EAAC,OAAM,SAASD,IAAE;AAAC,mBAAQC,KAAE,KAAK,OAAMC,KAAE,KAAK,MAAMF,EAAC,GAAEK,KAAE,GAAEE,KAAE,GAAEC,KAAE,OAAGE,KAAE,OAAG,UAAKL,MAAG,UAAKE,MAAG;AAAC,gBAAII;AAAE,YAAAH,KAAEJ,GAAEH,IAAE,UAAKI,MAAGA,KAAE,CAAC,GAAEK,KAAEN,GAAEF,IAAE,UAAKK,MAAGA,KAAE,CAAC,GAAE,UAAKF,OAAIA,KAAE,MAAIM,KAAE,IAAI,IAAI,UAAUF,GAAE,KAAK,EAAE,KAAK,GAAG,UAAQ,KAAGE,GAAE,QAAMV,GAAE,KAAKA,GAAE,CAAC,CAAC,IAAE,IAAEA,GAAE,KAAK,CAAC,KAAIU,GAAE,IAAEA,GAAE,QAAM,GAAEA,GAAE,IAAEA,GAAE,SAAO,CAAC,CAAC,IAAE,IAAG,UAAKJ,OAAIA,KAAE,MAAII,KAAE,IAAI,IAAI,UAAUF,GAAE,IAAI,EAAE,KAAK,GAAG,UAAQ,KAAGE,GAAE,QAAMT,GAAE,KAAKA,GAAE,CAAC,CAAC,IAAE,IAAEA,GAAE,KAAK,CAAC,KAAIS,GAAE,IAAEA,GAAE,QAAM,GAAEA,GAAE,IAAEA,GAAE,SAAO,CAAC,CAAC,IAAE;AAAG,gBAAIF,KAAEV,GAAEE,IAAEI,IAAEG,IAAEN,IAAEK,IAAEG,EAAC;AAAE,YAAAT,KAAEA,GAAE,MAAM,GAAEI,EAAC,EAAE,OAAOI,GAAE,OAAM,UAAKD,KAAE,CAAC,IAAEP,GAAE,MAAMO,EAAC,CAAC,GAAEN,KAAEA,GAAE,MAAM,GAAEK,EAAC,EAAE,OAAOE,GAAE,MAAK,UAAKC,KAAE,CAAC,IAAER,GAAE,MAAMQ,EAAC,CAAC,GAAEL,KAAE,UAAKG,MAAGH,KAAEI,GAAE,MAAM,QAAOF,KAAE,UAAKG,MAAGH,KAAEE,GAAE,KAAK;AAAA,UAAM;AAAC,iBAAO,KAAK,QAAMR,IAAE,KAAK,cAAY,IAAI,IAAI,aAAU,KAAK,YAAY,QAAMC,IAAE;AAAA,QAAI,EAAC,CAAC;AAAA,MAAC,EAAE;AAAA;AAAA;AAAA,MAI55Y,WAAU;AAAC,iBAASH,GAAEA,IAAE;AAAC,UAAAA,GAAE,SAAS,cAAa,IAAI,GAAE,KAAK,KAAGA;AAAA,QAAC;AAAC,QAAAA,GAAE,UAAU,OAAK,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE;AAAK,eAAK,aAAWF,IAAE,KAAK,QAAMC,IAAE,KAAK,GAAG,GAAG,kBAAkB,SAASD,IAAE;AAAC,YAAAE,GAAE,MAAMF,EAAC;AAAA,UAAC,CAAE,GAAE,KAAK,GAAG,GAAG,mBAAmB,SAASA,IAAE;AAAC,YAAAE,GAAE,MAAMF,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,GAAEA,GAAE,UAAU,iBAAe,SAASA,IAAEC,IAAE;AAAC,cAAIC,MAAGF,KAAEA,MAAG,OAAO,OAAO,kBAAgBA,GAAE,eAAe,CAAC,KAAGA;AAAE,iBAAO,KAAK,EAAE,IAAEE,GAAE,WAASD,MAAG,IAAG,KAAK,EAAE,IAAEC,GAAE,SAAQ,KAAK,EAAE,gBAAgB,KAAK,CAAC;AAAA,QAAC,GAAEF,GAAE,UAAU,UAAQ,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAG,KAAK;AAAE,iBAAO,KAAK,cAAc,IAAI,WAASA,KAAE,KAAK,GAAG,KAAK,KAAI,KAAK,cAAc,IAAI,KAAG,KAAK,cAAc,IAAI,OAAK,KAAK,cAAc,IAAI,YAAUA,GAAE,IAAE,KAAK,GAAG,EAAE,GAAEA,GAAE,IAAE,KAAK,GAAG,EAAE,IAAGA;AAAA,QAAC,GAAEA,GAAE,UAAU,QAAM,SAASA,IAAE;AAAC,cAAG,WAASA,GAAE,QAAM,eAAaA,GAAE,QAAM,eAAaA,GAAE,QAAM,MAAIA,GAAE,SAAOA,GAAE,UAAS;AAAC,gBAAIC,KAAE;AAAK,gBAAG,KAAK,GAAG,KAAK,cAAa,EAAC,OAAMD,IAAE,SAAQ,KAAI,CAAC,GAAE,CAAC,KAAK,GAAG,MAAM,EAAE,kBAAiB;AAAC,cAAAA,GAAE,eAAe,GAAEA,GAAE,gBAAgB,GAAE,KAAK,SAAO,KAAK,UAAQ,KAAK,GAAG,OAAO,IAAI,MAAM,KAAG,KAAK,GAAG,OAAO,IAAI,GAAG,GAAE,KAAK,IAAE,KAAK,OAAO,KAAK,eAAe,GAAE,KAAK,IAAE,KAAK,GAAG,KAAK,aAAa,EAAE,QAAQ;AAAE,kBAAIE,IAAEC,KAAE,KAAK,QAAQ;AAAE,kBAAG,KAAK,cAAc,IAAI,KAAK,SAAOD,KAAE,KAAK,GAAG,KAAK,sBAAsB,GAAE,KAAK,GAAG,KAAK,aAAa,GAAE;AAAA,gBAAC,KAAI;AAAS,kBAAAA,MAAG;AAAE;AAAA,gBAAM,KAAI;AAAQ,kBAAAA,KAAE;AAAA,cAAC;AAAC,mBAAK,cAAY,EAAC,OAAM,KAAK,eAAeF,IAAEE,EAAC,GAAE,KAAIC,IAAE,WAAU,KAAK,GAAG,UAAU,EAAC,GAAE,IAAI,GAAG,QAAO,kBAAkB,SAASH,IAAE;AAAC,gBAAAC,GAAE,KAAKD,EAAC;AAAA,cAAC,CAAE,GAAE,IAAI,GAAG,QAAO,kBAAkB,SAASA,IAAE;AAAC,gBAAAC,GAAE,KAAKD,EAAC;AAAA,cAAC,CAAE,GAAE,IAAI,GAAG,QAAO,gBAAgB,SAASA,IAAE;AAAC,gBAAAC,GAAE,IAAID,EAAC;AAAA,cAAC,CAAE,GAAE,IAAI,GAAG,QAAO,iBAAiB,SAASA,IAAE;AAAC,gBAAAC,GAAE,IAAID,EAAC;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,KAAK,aAAY,EAAC,OAAMA,IAAE,GAAE,KAAK,YAAY,OAAM,GAAE,KAAK,GAAE,SAAQ,KAAI,CAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,GAAEA,GAAE,UAAU,OAAK,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,QAAQ,GAAEC,KAAE,KAAK,eAAeF,EAAC,GAAEG,KAAE,KAAK,YAAY,IAAI,IAAED,GAAE,IAAE,KAAK,YAAY,MAAM,GAAEG,KAAE,KAAK,YAAY,IAAI,IAAEH,GAAE,IAAE,KAAK,YAAY,MAAM,GAAEI,KAAE,KAAK,YAAWE,KAAEN,GAAE,IAAE,KAAK,YAAY,MAAM,GAAEO,KAAEP,GAAE,IAAE,KAAK,YAAY,MAAM;AAAE,cAAG,KAAK,GAAG,KAAK,YAAW,EAAC,OAAMF,IAAE,GAAEE,IAAE,GAAE,KAAK,GAAE,SAAQ,KAAI,CAAC,GAAE,KAAK,GAAG,MAAM,EAAE,iBAAiB,QAAOA;AAAE,cAAG,cAAY,OAAOI,IAAE;AAAC,gBAAIK,KAAEL,GAAE,KAAK,KAAK,IAAGH,IAAEE,IAAE,KAAK,CAAC;AAAE,yBAAW,OAAOM,OAAIA,KAAE,EAAC,GAAEA,IAAE,GAAEA,GAAC,IAAG,SAAKA,GAAE,IAAE,KAAK,GAAG,EAAER,EAAC,IAAE,UAAKQ,GAAE,KAAG,KAAK,GAAG,EAAEA,GAAE,CAAC,GAAE,SAAKA,GAAE,IAAE,KAAK,GAAG,EAAEN,EAAC,IAAE,UAAKM,GAAE,KAAG,KAAK,GAAG,EAAEA,GAAE,CAAC;AAAA,UAAC,MAAK,aAAU,OAAOL,OAAI,QAAMA,GAAE,QAAMH,KAAEG,GAAE,OAAKE,MAAGL,KAAEG,GAAE,QAAM,KAAK,YAAY,IAAI,IAAE,QAAMA,GAAE,QAAMH,KAAEG,GAAE,OAAKL,GAAE,UAAQO,MAAGL,KAAEG,GAAE,OAAKL,GAAE,SAAO,KAAK,YAAY,IAAI,IAAG,QAAMK,GAAE,QAAMD,KAAEC,GAAE,OAAKG,MAAGJ,KAAEC,GAAE,QAAM,KAAK,YAAY,IAAI,IAAE,QAAMA,GAAE,QAAMD,KAAEC,GAAE,OAAKL,GAAE,WAASQ,MAAGJ,KAAEC,GAAE,OAAKL,GAAE,UAAQ,KAAK,YAAY,IAAI,IAAG,QAAMK,GAAE,eAAaH,MAAGA,KAAEG,GAAE,YAAWD,MAAGA,KAAEC,GAAE,YAAWE,MAAGA,KAAEF,GAAE,YAAWG,MAAGA,KAAEH,GAAE,aAAY,KAAK,cAAc,IAAI,IAAE,KAAK,GAAG,OAAO,KAAK,YAAY,SAAS,EAAE,UAAU,EAAC,GAAEE,IAAE,GAAEC,GAAC,GAAE,IAAE,IAAE,KAAK,GAAG,KAAKN,IAAEE,EAAC;AAAG,iBAAOH;AAAA,QAAC,GAAEF,GAAE,UAAU,MAAI,SAASA,IAAE;AAAC,cAAIC,KAAE,KAAK,KAAKD,EAAC;AAAE,eAAK,GAAG,KAAK,WAAU,EAAC,OAAMA,IAAE,GAAEC,IAAE,GAAE,KAAK,GAAE,SAAQ,KAAI,CAAC,GAAE,IAAI,IAAI,QAAO,gBAAgB,GAAE,IAAI,IAAI,QAAO,gBAAgB,GAAE,IAAI,IAAI,QAAO,cAAc,GAAE,IAAI,IAAI,QAAO,eAAe;AAAA,QAAC,GAAE,IAAI,OAAO,IAAI,SAAQ,EAAC,WAAU,SAASA,IAAEC,IAAE;AAAC,wBAAY,OAAOD,MAAG,YAAU,OAAOA,OAAIC,KAAED,IAAEA,KAAE;AAAI,cAAIE,KAAE,KAAK,SAAS,YAAY,KAAG,IAAIH,GAAE,IAAI;AAAE,kBAAOC,KAAE,WAASA,MAAGA,MAAGE,GAAE,KAAKD,MAAG,CAAC,GAAED,EAAC,KAAG,KAAK,IAAI,gBAAgB,GAAE,KAAK,IAAI,iBAAiB,IAAG;AAAA,QAAI,EAAC,CAAC;AAAA,MAAC,EAAE,KAAK,MAAM,GAAE,WAAU;AAAC,iBAASD,GAAEA,IAAE;AAAC,eAAK,KAAGA,IAAEA,GAAE,SAAS,kBAAiB,IAAI,GAAE,KAAK,iBAAe,EAAC,YAAW,MAAE,GAAE,KAAK,gBAAc,EAAC,YAAW,MAAE,GAAE,KAAK,aAAW,EAAC,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,SAAQ,CAAC,GAAE,IAAG,CAAC,SAAQ,QAAQ,GAAE,IAAG,CAAC,GAAE,QAAQ,GAAE,GAAE,CAAC,SAAQ,CAAC,GAAE,GAAE,CAAC,SAAQ,QAAQ,GAAE,GAAE,CAAC,SAAQ,QAAQ,GAAE,GAAE,CAAC,GAAE,QAAQ,EAAC,GAAE,KAAK,aAAW,SAASA,IAAEC,IAAEC,IAAE;AAAC,gBAAIC,KAAE,YAAU,OAAOH,KAAEA,KAAEC,GAAED,EAAC;AAAE,mBAAOE,KAAEC,KAAE,IAAEA;AAAA,UAAC,GAAE,KAAK,cAAY,SAASH,IAAEC,IAAE;AAAC,gBAAIC,KAAE,KAAK,WAAWF,EAAC;AAAE,mBAAM,EAAC,GAAE,KAAK,WAAWE,GAAE,CAAC,GAAED,IAAE,QAAMD,MAAG,QAAMA,EAAC,GAAE,GAAE,KAAK,WAAWE,GAAE,CAAC,GAAED,IAAE,QAAMD,MAAG,QAAMA,EAAC,EAAC;AAAA,UAAC;AAAA,QAAC;AAAC,QAAAA,GAAE,UAAU,OAAK,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,GAAG,KAAK;AAAE,eAAK,UAAQ,CAAC;AAAE,cAAIC,KAAE,KAAK,GAAG,UAAU,SAAS;AAAO,mBAAQE,MAAK,KAAK,GAAG,UAAU,SAAS,MAAK,QAAQA,EAAC,IAAE,KAAK,GAAG,UAAU,SAASA,EAAC,GAAE,WAASJ,GAAEI,EAAC,MAAI,KAAK,QAAQA,EAAC,IAAEJ,GAAEI,EAAC;AAAG,cAAIC,KAAE,CAAC,UAAS,eAAe;AAAE,mBAAQD,MAAKC,IAAE;AAAC,gBAAIE,KAAE,KAAK,QAAQF,GAAED,EAAC,CAAC;AAAE,wBAAU,OAAOG,KAAEA,KAAEA,GAAE,SAAO,IAAEA,GAAE,MAAM,UAAU,IAAE,CAAC,IAAE,aAAW,OAAOA,MAAG,aAAWF,GAAED,EAAC,MAAIG,KAAEA,KAAEL,KAAE,CAAC,IAAG,KAAK,QAAQG,GAAED,EAAC,CAAC,IAAEG;AAAA,UAAC;AAAC,eAAK,QAAQ,SAAO,CAACL,IAAE,KAAK,QAAQ,MAAM,EAAE,OAAQ,SAASH,IAAEC,IAAE;AAAC,mBAAOD,GAAE,OAAQ,SAASA,IAAE;AAAC,qBAAOC,GAAE,QAAQD,EAAC,IAAE;AAAA,YAAE,CAAE;AAAA,UAAC,CAAE,GAAE,KAAK,QAAQ,SAAO,CAAC,KAAK,QAAQ,QAAO,KAAK,QAAQ,aAAa,EAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,mBAAOD,GAAE,OAAQ,SAASA,IAAE;AAAC,qBAAOC,GAAE,QAAQD,EAAC,IAAE;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE,GAAE,KAAK,SAAO,KAAK,GAAG,OAAO,GAAE,KAAK,SAAO,KAAK,UAAQ,KAAK,OAAO,MAAM,GAAE,KAAK,OAAO,OAAO,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,UAAUE,GAAE,GAAEA,GAAE,CAAC,CAAC,GAAE,KAAK,QAAQ,cAAY,OAAK,CAAC,QAAO,YAAW,SAAS,EAAE,QAAQ,KAAK,GAAG,IAAI,IAAE,KAAK,aAAaF,EAAC,IAAE,KAAK,WAAWA,EAAC,GAAE,KAAK,QAAQ,GAAE,KAAK,QAAQ;AAAA,QAAC,GAAEA,GAAE,UAAU,eAAa,SAASA,IAAE;AAAC,iBAAO,KAAK,eAAe,aAAWA,IAAE,KAAK,eAAe,QAAM,KAAK,eAAe,MAAI,KAAK,OAAO,IAAI,GAAE,KAAK,WAAW,IAAG;AAAA,QAAI,GAAEA,GAAE,UAAU,gBAAc,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAG,KAAK;AAAE,iBAAO,KAAK,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAK,SAASC,IAAE;AAAC,mBAAM,CAACA,GAAE,CAAC,IAAED,GAAE,GAAEC,GAAE,CAAC,IAAED,GAAE,CAAC;AAAA,UAAC,CAAE;AAAA,QAAC,GAAEA,GAAE,UAAU,aAAW,WAAU;AAAC,mBAAQA,KAAE,MAAKC,KAAE,KAAK,cAAc,GAAEC,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAE,EAAED,IAAE;AAAC,gBAAIG,KAAE,yBAASJ,IAAE;AAAC,qBAAO,SAASC,IAAE;AAAC,iBAACA,KAAEA,MAAG,OAAO,OAAO,iBAAeA,GAAE,eAAe,IAAEA,GAAE,cAAY,OAAGA,GAAE,gBAAgB;AAAE,oBAAIC,KAAED,GAAE,SAAOA,GAAE,QAAQ,CAAC,EAAE,OAAMG,KAAEH,GAAE,SAAOA,GAAE,QAAQ,CAAC,EAAE;AAAM,gBAAAF,GAAE,GAAG,KAAK,SAAQ,EAAC,GAAEG,IAAE,GAAEE,IAAE,GAAEJ,IAAE,OAAMC,GAAC,CAAC;AAAA,cAAC;AAAA,YAAC,EAAEA,EAAC,GAAEI,KAAE,KAAK,UAAUL,GAAEC,EAAC,EAAE,CAAC,GAAED,GAAEC,EAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,QAAQ,WAAW,EAAE,SAAS,KAAK,QAAQ,cAAY,QAAQ,EAAE,GAAG,cAAaG,EAAC,EAAE,GAAG,aAAYA,EAAC;AAAE,iBAAK,eAAe,IAAI,IAAIC,EAAC;AAAA,UAAC;AAAA,QAAC,GAAEN,GAAE,UAAU,YAAU,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,QAAQ;AAAU,kBAAOA,IAAE;AAAA,YAAC,KAAI;AAAS,qBAAO,KAAK,WAAWF,IAAEC,EAAC;AAAA,YAAE,KAAI;AAAO,qBAAO,KAAK,SAASD,IAAEC,EAAC;AAAA,YAAE;AAAQ,kBAAG,cAAY,OAAOC,GAAE,QAAOA,GAAE,KAAK,MAAKF,IAAEC,EAAC;AAAE,oBAAM,IAAI,MAAM,aAAWC,KAAE,cAAc;AAAA,UAAC;AAAA,QAAC,GAAEF,GAAE,UAAU,aAAW,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,OAAO,KAAK,QAAQ,SAAS,EAAE,OAAOD,IAAEC,EAAC;AAAA,QAAC,GAAED,GAAE,UAAU,WAAS,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,KAAK,KAAK,QAAQ,WAAU,KAAK,QAAQ,SAAS,EAAE,OAAOD,IAAEC,EAAC;AAAA,QAAC,GAAED,GAAE,UAAU,uBAAqB,WAAU;AAAC,cAAIA,KAAE,KAAK,cAAc;AAAE,eAAK,eAAe,IAAI,KAAM,SAASC,IAAE;AAAC,iBAAK,GAAG,MAAID,GAAEC,EAAC,EAAE,CAAC,KAAG,KAAK,GAAG,MAAID,GAAEC,EAAC,EAAE,CAAC,KAAG,KAAK,OAAOD,GAAEC,EAAC,EAAE,CAAC,GAAED,GAAEC,EAAC,EAAE,CAAC,CAAC;AAAA,UAAC,CAAE;AAAA,QAAC,GAAED,GAAE,UAAU,sBAAoB,WAAU;AAAC,cAAIA,KAAE,MAAKC,KAAE,KAAK,GAAG,KAAK;AAAE,cAAG,KAAK,cAAc,IAAI,IAAI,CAAC,EAAE,KAAK,EAAC,OAAMA,GAAE,OAAM,QAAOA,GAAE,OAAM,CAAC,GAAE,KAAK,QAAQ,OAAO,UAAQ,KAAK,QAAQ,OAAO,IAAK,SAASC,IAAEC,IAAE;AAAC,gBAAIE,KAAEL,GAAE,YAAYE,IAAED,EAAC;AAAE,YAAAD,GAAE,cAAc,IAAI,IAAIG,KAAE,CAAC,EAAE,OAAOE,GAAE,GAAEA,GAAE,CAAC;AAAA,UAAC,CAAE,GAAE,KAAK,QAAQ,eAAc;AAAC,gBAAIH,KAAE,KAAK,cAAc,IAAI,OAAO;AAAE,iBAAK,cAAc,IAAI,IAAIA,KAAE,CAAC,EAAE,OAAOD,GAAE,QAAM,GAAE,EAAE;AAAA,UAAC;AAAA,QAAC,GAAED,GAAE,UAAU,aAAW,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK,GAAG,KAAK;AAAE,mBAASC,GAAEH,IAAE;AAAC,mBAAO,SAASE,IAAE;AAAC,eAACA,KAAEA,MAAG,OAAO,OAAO,iBAAeA,GAAE,eAAe,IAAEA,GAAE,cAAY,OAAGA,GAAE,gBAAgB;AAAE,kBAAIC,KAAED,GAAE,SAAOA,GAAE,QAAQ,CAAC,EAAE,OAAMG,KAAEH,GAAE,SAAOA,GAAE,QAAQ,CAAC,EAAE;AAAM,cAAAD,GAAE,GAAG,KAAKD,IAAE,EAAC,GAAEG,IAAE,GAAEE,IAAE,OAAMH,GAAC,CAAC;AAAA,YAAC;AAAA,UAAC;AAAC,cAAG,KAAK,cAAc,aAAWF,IAAE,KAAK,cAAc,MAAI,KAAK,cAAc,OAAK,KAAK,OAAO,IAAI,GAAE,KAAK,cAAc,IAAI,IAAI,CAAC,KAAG,KAAK,cAAc,IAAI,IAAI,KAAK,OAAO,KAAKE,GAAE,OAAMA,GAAE,MAAM,EAAE,SAAS,KAAK,QAAQ,SAAS,CAAC,GAAE,KAAK,QAAQ,OAAO,UAAQ,KAAK,cAAc,IAAI,OAAO,IAAE,GAAE;AAAC,iBAAK,QAAQ,OAAO,IAAK,SAASF,IAAEK,IAAE;AAAC,kBAAIC,KAAEL,GAAE,YAAYD,IAAEE,EAAC,GAAEM,KAAEP,GAAE,UAAUK,GAAE,GAAEA,GAAE,CAAC,EAAE,KAAK,SAAQL,GAAE,QAAQ,cAAY,MAAID,EAAC,EAAE,GAAG,aAAYG,GAAEH,EAAC,CAAC,EAAE,GAAG,cAAaG,GAAEH,EAAC,CAAC;AAAE,cAAAC,GAAE,cAAc,IAAI,IAAIO,EAAC;AAAA,YAAC,CAAE,GAAE,KAAK,cAAc,IAAI,KAAM,WAAU;AAAC,mBAAK,SAASP,GAAE,QAAQ,WAAW;AAAA,YAAC,CAAE;AAAA,UAAC;AAAC,cAAG,KAAK,QAAQ,kBAAgB,KAAK,QAAQ,UAAQ,CAAC,KAAK,cAAc,IAAI,IAAI,CAAC,KAAG,CAAC,KAAK,QAAQ,UAAQ,CAAC,KAAK,cAAc,IAAI,IAAI,CAAC,IAAG;AAAC,gBAAII,KAAE,SAASL,IAAE;AAAC,eAACA,KAAEA,MAAG,OAAO,OAAO,iBAAeA,GAAE,eAAe,IAAEA,GAAE,cAAY,OAAGA,GAAE,gBAAgB;AAAE,kBAAIE,KAAEF,GAAE,SAAOA,GAAE,QAAQ,CAAC,EAAE,OAAMG,KAAEH,GAAE,SAAOA,GAAE,QAAQ,CAAC,EAAE;AAAM,cAAAC,GAAE,GAAG,KAAK,OAAM,EAAC,GAAEC,IAAE,GAAEC,IAAE,OAAMH,GAAC,CAAC;AAAA,YAAC,GAAEM,KAAE,KAAK,UAAUJ,GAAE,QAAM,GAAE,EAAE,EAAE,KAAK,SAAQ,KAAK,QAAQ,cAAY,MAAM,EAAE,GAAG,cAAaG,EAAC,EAAE,GAAG,aAAYA,EAAC;AAAE,iBAAK,cAAc,IAAI,IAAIC,EAAC;AAAA,UAAC;AAAA,QAAC,GAAEN,GAAE,UAAU,UAAQ,WAAU;AAAC,cAAIA,KAAE,KAAK,GAAG,KAAK;AAAE,eAAK,OAAO,OAAO,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,UAAUA,GAAE,GAAEA,GAAE,CAAC,CAAC,GAAE,KAAK,cAAc,cAAY,KAAK,oBAAoB,GAAE,KAAK,eAAe,cAAY,KAAK,qBAAqB;AAAA,QAAC,GAAEA,GAAE,UAAU,UAAQ,WAAU;AAAC,cAAIA,KAAE;AAAK,cAAG,iBAAiB,KAAG,KAAK,cAAc,cAAY,KAAK,eAAe,WAAW,MAAK,eAAa,KAAK,gBAAc,IAAI,iBAAkB,WAAU;AAAC,YAAAA,GAAE,QAAQ;AAAA,UAAC,CAAE,GAAE,KAAK,aAAa,QAAQ,KAAK,GAAG,MAAK,EAAC,YAAW,KAAE,CAAC;AAAA,cAAO,KAAG;AAAC,iBAAK,aAAa,WAAW,GAAE,OAAO,KAAK;AAAA,UAAY,SAAOA,IAAE;AAAA,UAAC;AAAA,cAAM,MAAK,GAAG,IAAI,wBAAwB,IAAG,KAAK,cAAc,cAAY,KAAK,eAAe,eAAa,KAAK,GAAG,GAAG,0BAA0B,WAAU;AAAC,YAAAA,GAAE,QAAQ;AAAA,UAAC,CAAE;AAAA,QAAC,GAAEA,GAAE,UAAU,UAAQ,WAAU;AAAC,WAAC,KAAK,cAAc,cAAY,KAAK,cAAc,QAAM,KAAK,cAAc,IAAI,KAAM,WAAU;AAAC,iBAAK,OAAO;AAAA,UAAC,CAAE,GAAE,KAAK,cAAc,IAAI,MAAM,GAAE,OAAO,KAAK,cAAc,MAAK,CAAC,KAAK,eAAe,cAAY,KAAK,eAAe,QAAM,KAAK,eAAe,IAAI,KAAM,WAAU;AAAC,iBAAK,OAAO;AAAA,UAAC,CAAE,GAAE,KAAK,eAAe,IAAI,MAAM,GAAE,OAAO,KAAK,eAAe,MAAK,KAAK,eAAe,cAAY,KAAK,cAAc,eAAa,KAAK,OAAO,OAAO,GAAE,OAAO,KAAK;AAAA,QAAO,GAAE,IAAI,OAAO,IAAI,SAAQ,EAAC,WAAU,SAASC,IAAEC,IAAE;AAAC,iBAAM,YAAU,OAAOD,OAAIC,KAAED,IAAEA,KAAE,QAAK,KAAK,SAAS,gBAAgB,KAAG,IAAID,GAAE,IAAI,GAAG,KAAK,WAASC,MAAGA,IAAEC,MAAG,CAAC,CAAC,GAAE;AAAA,QAAI,EAAC,CAAC,GAAE,IAAI,QAAQ,UAAU,UAAU,WAAS,EAAC,QAAO,CAAC,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,GAAG,GAAE,eAAc,CAAC,GAAE,WAAU,2BAA0B,aAAY,qBAAoB,WAAU,GAAE,eAAc,MAAG,YAAW,OAAG,WAAU,SAAQ;AAAA,MAAC,EAAE,GAAE,WAAU;AAAC,SAAC,WAAU;AAAC,mBAASF,GAAEA,IAAE;AAAC,YAAAA,GAAE,SAAS,kBAAiB,IAAI,GAAE,KAAK,KAAGA,IAAE,KAAK,aAAW,CAAC,GAAE,KAAK,iBAAe,MAAK,KAAK,IAAEA,GAAE,IAAI,EAAE,KAAK,eAAe;AAAA,UAAC;AAAC,UAAAA,GAAE,UAAU,iBAAe,SAASA,IAAEC,IAAEC,IAAE;AAAC,mBAAO,KAAK,EAAE,IAAEF,MAAG,KAAK,OAAO,IAAE,OAAO,cAAa,KAAK,EAAE,IAAEC,MAAG,KAAK,OAAO,IAAE,OAAO,cAAa,KAAK,EAAE,gBAAgBC,MAAG,KAAK,CAAC;AAAA,UAAC,GAAEF,GAAE,UAAU,mBAAiB,SAASA,IAAE;AAAC,mBAAM,EAAC,GAAE,QAAMA,GAAE,UAAQA,GAAE,UAAQA,GAAE,QAAQ,CAAC,EAAE,SAAQ,GAAE,QAAMA,GAAE,UAAQA,GAAE,UAAQA,GAAE,QAAQ,CAAC,EAAE,QAAO;AAAA,UAAC,GAAEA,GAAE,UAAU,OAAK,SAASA,IAAE;AAAC,gBAAIC,KAAE;AAAK,gBAAG,KAAK,KAAK,GAAE,WAASD,IAAE;AAAC,uBAAQE,MAAK,KAAK,UAAQ,CAAC,GAAE,KAAK,GAAG,OAAO,SAAS,MAAK,QAAQA,EAAC,IAAE,KAAK,GAAG,OAAO,SAASA,EAAC,GAAE,WAASF,GAAEE,EAAC,MAAI,KAAK,QAAQA,EAAC,IAAEF,GAAEE,EAAC;AAAG,mBAAK,GAAG,GAAG,aAAa,SAASF,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,aAAa,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,aAAa,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,aAAa,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,YAAY,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,YAAY,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,YAAY,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,YAAY,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,cAAc,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,GAAG,GAAG,gBAAgB,SAASA,IAAE;AAAC,gBAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,cAAC,CAAE,GAAE,KAAK,OAAO;AAAA,YAAC;AAAA,UAAC,GAAEA,GAAE,UAAU,OAAK,WAAU;AAAC,mBAAO,KAAK,GAAG,IAAI,WAAW,GAAE,KAAK,GAAG,IAAI,WAAW,GAAE,KAAK,GAAG,IAAI,WAAW,GAAE,KAAK,GAAG,IAAI,WAAW,GAAE,KAAK,GAAG,IAAI,UAAU,GAAE,KAAK,GAAG,IAAI,UAAU,GAAE,KAAK,GAAG,IAAI,UAAU,GAAE,KAAK,GAAG,IAAI,UAAU,GAAE,KAAK,GAAG,IAAI,YAAY,GAAE,KAAK,GAAG,IAAI,cAAc,GAAE;AAAA,UAAI,GAAEA,GAAE,UAAU,SAAO,SAASA,IAAE;AAAC,gBAAIC,KAAE;AAAK,iBAAK,IAAE,KAAK,GAAG,KAAK,aAAa,EAAE,QAAQ,GAAE,KAAK,SAAO,EAAC,GAAE,OAAO,aAAY,GAAE,OAAO,YAAW;AAAE,gBAAIC,KAAE,KAAK,iBAAiBF,GAAE,OAAO,KAAK;AAAE,gBAAG,KAAK,aAAW,EAAC,MAAK,KAAK,GAAG,MAAK,GAAE,KAAK,eAAeE,GAAE,GAAEA,GAAE,CAAC,GAAE,GAAEF,GAAE,OAAO,GAAE,GAAEA,GAAE,OAAO,GAAE,KAAI,KAAK,GAAG,KAAK,GAAE,UAAS,KAAK,GAAG,UAAU,EAAE,SAAQ,GAAE,WAAS,KAAK,GAAG,SAAO,KAAK,WAAW,WAAS,KAAK,GAAG,KAAK,EAAE,WAAW,IAAG,WAASA,GAAE,OAAO,GAAE;AAAC,kBAAIG,KAAE,KAAK,GAAG,MAAM,EAAE,QAAQ;AAAE,mBAAK,WAAW,IAAEH,GAAE,OAAO,GAAE,KAAK,WAAW,cAAY,CAACG,GAAEH,GAAE,OAAO,CAAC,EAAE,CAAC,GAAEG,GAAEH,GAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAAA,YAAC;AAAC,oBAAOA,GAAE,MAAK;AAAA,cAAC,KAAI;AAAK,qBAAK,OAAK,SAASA,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,EAAC;AAAE,sBAAG,KAAK,WAAW,IAAI,QAAMC,GAAE,CAAC,IAAE,KAAG,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,IAAE,GAAE;AAAC,wBAAG,WAAS,KAAK,WAAW,KAAK,QAAO,KAAK,GAAG,KAAK,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,CAAC,GAAE,KAAK,KAAK,GAAG,KAAK,aAAY,KAAK,WAAW,WAASA,GAAE,CAAC,CAAC;AAAE,oBAAAA,KAAE,KAAK,iBAAiBA,EAAC,GAAE,KAAK,GAAG,KAAK,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,CAAC,EAAE,KAAK,KAAK,WAAW,IAAI,QAAMA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAK,qBAAK,OAAK,SAASF,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,IAAE,CAAC;AAAE,sBAAG,KAAK,WAAW,IAAI,QAAMC,GAAE,CAAC,IAAE,KAAG,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,IAAE,GAAE;AAAC,wBAAG,WAAS,KAAK,WAAW,KAAK,QAAO,KAAK,GAAG,KAAK,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,CAAC,GAAE,KAAK,KAAK,GAAG,KAAK,aAAY,KAAK,WAAW,WAASA,GAAE,CAAC,CAAC;AAAE,oBAAAA,KAAE,KAAK,iBAAiBA,IAAE,IAAE,GAAE,KAAK,GAAG,KAAK,KAAK,WAAW,IAAI,GAAE,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,CAAC,EAAE,KAAK,KAAK,WAAW,IAAI,QAAMA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAK,qBAAK,OAAK,SAASF,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,IAAE,CAAC;AAAE,sBAAG,KAAK,WAAW,IAAI,QAAMC,GAAE,CAAC,IAAE,KAAG,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,IAAE,GAAE;AAAC,wBAAG,WAAS,KAAK,WAAW,KAAK,QAAO,KAAK,GAAG,KAAK,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,CAAC,GAAE,KAAK,KAAK,GAAG,KAAK,aAAY,KAAK,WAAW,WAASA,GAAE,CAAC,CAAC;AAAE,oBAAAA,KAAE,KAAK,iBAAiBA,EAAC,GAAE,KAAK,GAAG,KAAK,KAAK,WAAW,IAAI,GAAE,KAAK,WAAW,IAAI,CAAC,EAAE,KAAK,KAAK,WAAW,IAAI,QAAMA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAK,qBAAK,OAAK,SAASF,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,IAAE,CAAC;AAAE,sBAAG,KAAK,WAAW,IAAI,QAAMC,GAAE,CAAC,IAAE,KAAG,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,IAAE,GAAE;AAAC,wBAAG,WAAS,KAAK,WAAW,KAAK,QAAO,KAAK,GAAG,KAAK,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,CAAC,GAAE,KAAK,KAAK,GAAG,KAAK,aAAY,KAAK,WAAW,WAASA,GAAE,CAAC,CAAC;AAAE,oBAAAA,KAAE,KAAK,iBAAiBA,IAAE,IAAE,GAAE,KAAK,GAAG,KAAK,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,CAAC,EAAE,KAAK,KAAK,WAAW,IAAI,QAAMA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAI,qBAAK,OAAK,SAASF,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,IAAE,CAAC;AAAE,sBAAG,KAAK,WAAW,IAAI,SAAOC,GAAE,CAAC,IAAE,GAAE;AAAC,wBAAG,WAAS,KAAK,WAAW,KAAK;AAAO,yBAAK,GAAG,KAAK,KAAK,WAAW,IAAI,GAAE,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,CAAC,EAAE,OAAO,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAI,qBAAK,OAAK,SAASF,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,IAAE,CAAC;AAAE,sBAAG,KAAK,WAAW,IAAI,QAAMC,GAAE,CAAC,IAAE,GAAE;AAAC,wBAAG,WAAS,KAAK,WAAW,KAAK;AAAO,yBAAK,GAAG,KAAK,KAAK,WAAW,IAAI,GAAE,KAAK,WAAW,IAAI,CAAC,EAAE,MAAM,KAAK,WAAW,IAAI,QAAMA,GAAE,CAAC,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAI,qBAAK,OAAK,SAASF,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,IAAE,CAAC;AAAE,sBAAG,KAAK,WAAW,IAAI,SAAOC,GAAE,CAAC,IAAE,GAAE;AAAC,wBAAG,WAAS,KAAK,WAAW,KAAK;AAAO,yBAAK,GAAG,KAAK,KAAK,WAAW,IAAI,GAAE,KAAK,WAAW,IAAI,CAAC,EAAE,OAAO,KAAK,WAAW,IAAI,SAAOA,GAAE,CAAC,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAI,qBAAK,OAAK,SAASF,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,IAAE,CAAC;AAAE,sBAAG,KAAK,WAAW,IAAI,QAAMC,GAAE,CAAC,IAAE,GAAE;AAAC,wBAAG,WAAS,KAAK,WAAW,KAAK;AAAO,yBAAK,GAAG,KAAK,KAAK,WAAW,IAAI,IAAEA,GAAE,CAAC,GAAE,KAAK,WAAW,IAAI,CAAC,EAAE,MAAM,KAAK,WAAW,IAAI,QAAMA,GAAE,CAAC,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAM,qBAAK,OAAK,SAASF,IAAEC,IAAE;AAAC,sBAAIC,KAAEF,KAAE,KAAK,WAAW,EAAE,GAAEG,KAAEF,KAAE,KAAK,WAAW,EAAE,GAAEI,KAAE,KAAK,MAAM,KAAK,WAAW,EAAE,IAAE,KAAK,WAAW,IAAI,IAAE,KAAK,WAAW,IAAI,SAAO,GAAE,KAAK,WAAW,EAAE,IAAE,KAAK,WAAW,IAAI,IAAE,KAAK,WAAW,IAAI,QAAM,CAAC,GAAEC,KAAE,KAAK,MAAMH,KAAE,KAAK,WAAW,IAAI,IAAE,KAAK,WAAW,IAAI,SAAO,GAAED,KAAE,KAAK,WAAW,IAAI,IAAE,KAAK,WAAW,IAAI,QAAM,CAAC,GAAEM,KAAE,KAAK,WAAW,WAAS,OAAKF,KAAED,MAAG,KAAK,KAAG,KAAK,QAAQ,cAAY;AAAE,uBAAK,GAAG,OAAO,KAAK,WAAW,IAAI,IAAG,KAAK,WAAW,IAAI,EAAE,EAAE,OAAOG,KAAEA,KAAE,KAAK,QAAQ,aAAY,KAAK,WAAW,IAAI,IAAG,KAAK,WAAW,IAAI,EAAE;AAAA,gBAAC;AAAE;AAAA,cAAM,KAAI;AAAQ,qBAAK,OAAK,SAASR,IAAEC,IAAE;AAAC,sBAAIC,KAAE,KAAK,WAAWF,IAAEC,IAAE,KAAK,WAAW,YAAY,CAAC,GAAE,KAAK,WAAW,YAAY,CAAC,CAAC,GAAEE,KAAE,KAAK,GAAG,MAAM,EAAE,QAAQ;AAAE,kBAAAA,GAAE,KAAK,WAAW,CAAC,EAAE,CAAC,IAAE,KAAK,WAAW,YAAY,CAAC,IAAED,GAAE,CAAC,GAAEC,GAAE,KAAK,WAAW,CAAC,EAAE,CAAC,IAAE,KAAK,WAAW,YAAY,CAAC,IAAED,GAAE,CAAC,GAAE,KAAK,GAAG,KAAKC,EAAC;AAAA,gBAAC;AAAA,YAAC;AAAC,iBAAK,GAAG,KAAK,eAAc,EAAC,IAAG,KAAK,WAAW,GAAE,IAAG,KAAK,WAAW,GAAE,OAAMH,GAAC,CAAC,GAAE,IAAI,GAAG,QAAO,oBAAoB,SAASA,IAAE;AAAC,cAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,YAAC,CAAE,GAAE,IAAI,GAAG,QAAO,mBAAmB,WAAU;AAAC,cAAAC,GAAE,KAAK;AAAA,YAAC,CAAE,GAAE,IAAI,GAAG,QAAO,oBAAoB,SAASD,IAAE;AAAC,cAAAC,GAAE,OAAOD,MAAG,OAAO,KAAK;AAAA,YAAC,CAAE,GAAE,IAAI,GAAG,QAAO,kBAAkB,WAAU;AAAC,cAAAC,GAAE,KAAK;AAAA,YAAC,CAAE;AAAA,UAAC,GAAED,GAAE,UAAU,SAAO,SAASA,IAAE;AAAC,gBAAGA,IAAE;AAAC,kBAAIC,KAAE,KAAK,iBAAiBD,EAAC,GAAEE,KAAE,KAAK,eAAeD,GAAE,GAAEA,GAAE,CAAC,GAAEE,KAAED,GAAE,IAAE,KAAK,WAAW,EAAE,GAAEG,KAAEH,GAAE,IAAE,KAAK,WAAW,EAAE;AAAE,mBAAK,iBAAe,CAACC,IAAEE,EAAC,GAAE,KAAK,KAAKF,IAAEE,EAAC,GAAE,KAAK,GAAG,KAAK,YAAW,EAAC,IAAGF,IAAE,IAAGE,IAAE,OAAML,GAAC,CAAC;AAAA,YAAC,MAAM,MAAK,kBAAgB,KAAK,KAAK,KAAK,eAAe,CAAC,GAAE,KAAK,eAAe,CAAC,CAAC;AAAA,UAAC,GAAEA,GAAE,UAAU,OAAK,WAAU;AAAC,iBAAK,iBAAe,MAAK,IAAI,IAAI,QAAO,kBAAkB,GAAE,IAAI,IAAI,QAAO,gBAAgB,GAAE,IAAI,IAAI,QAAO,kBAAkB,GAAE,IAAI,IAAI,QAAO,iBAAiB,GAAE,KAAK,GAAG,KAAK,YAAY;AAAA,UAAC,GAAEA,GAAE,UAAU,aAAW,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,gBAAIE;AAAE,mBAAO,WAASF,KAAEE,KAAE,EAAEH,KAAEF,MAAG,KAAK,QAAQ,aAAYG,KAAEF,MAAG,KAAK,QAAQ,UAAU,KAAGC,KAAE,QAAMA,KAAE,IAAEA,IAAEG,KAAE,EAAE,KAAK,WAAW,IAAI,IAAEL,MAAG,IAAEE,KAAE,IAAE,KAAK,WAAW,IAAI,UAAQ,KAAK,QAAQ,aAAY,KAAK,WAAW,IAAI,IAAED,MAAG,IAAEC,KAAE,IAAE,KAAK,WAAW,IAAI,WAAS,KAAK,QAAQ,UAAU,IAAGF,KAAE,MAAIK,GAAE,CAAC,KAAG,KAAK,QAAQ,aAAYJ,KAAE,MAAII,GAAE,CAAC,KAAG,KAAK,QAAQ,aAAYL,MAAG,KAAK,IAAIK,GAAE,CAAC,CAAC,IAAE,KAAK,QAAQ,aAAW,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,KAAGL,KAAE,IAAE,CAAC,KAAK,QAAQ,aAAW,KAAK,QAAQ,aAAYC,MAAG,KAAK,IAAII,GAAE,CAAC,CAAC,IAAE,KAAK,QAAQ,aAAW,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,KAAGJ,KAAE,IAAE,CAAC,KAAK,QAAQ,aAAW,KAAK,QAAQ,aAAY,KAAK,gBAAgBD,IAAEC,IAAEC,IAAEC,EAAC;AAAA,UAAC,GAAEH,GAAE,UAAU,kBAAgB,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,gBAAIE,IAAEC,IAAEE,KAAE,KAAK,QAAQ,cAAY,CAAC;AAAE,mBAAO,WAASL,MAAGE,KAAEH,IAAEI,KAAEH,OAAIE,KAAE,KAAK,WAAW,IAAI,KAAG,IAAEH,KAAE,IAAE,KAAK,WAAW,IAAI,QAAOI,KAAE,KAAK,WAAW,IAAI,KAAG,IAAEJ,KAAE,IAAE,KAAK,WAAW,IAAI,UAAS,WAASM,GAAE,QAAMH,KAAEL,KAAEQ,GAAE,SAAOR,KAAEQ,GAAE,OAAKH,KAAG,WAASG,GAAE,QAAMH,KAAEL,KAAEQ,GAAE,SAAOR,KAAEQ,GAAE,OAAKH,KAAG,WAASG,GAAE,QAAMF,KAAEL,KAAEO,GAAE,SAAOP,KAAEO,GAAE,OAAKF,KAAG,WAASE,GAAE,QAAMF,KAAEL,KAAEO,GAAE,SAAOP,KAAEO,GAAE,OAAKF,KAAG,CAACN,IAAEC,EAAC;AAAA,UAAC,GAAED,GAAE,UAAU,mBAAiB,SAASA,IAAEC,IAAE;AAAC,gBAAG,CAAC,KAAK,QAAQ,gBAAgB,QAAOD;AAAE,gBAAIE,KAAEF,GAAE,MAAM,GAAEG,KAAE,KAAK,WAAW,IAAI,QAAM,KAAK,WAAW,IAAI,QAAOE,KAAE,KAAK,WAAW,IAAI,QAAML,GAAE,CAAC,GAAEM,KAAE,KAAK,WAAW,IAAI,SAAON,GAAE,CAAC,GAAEQ,KAAEH,KAAEC;AAAE,mBAAOE,KAAEL,MAAGD,GAAE,CAAC,IAAEG,KAAEF,KAAE,KAAK,WAAW,IAAI,QAAOF,OAAIC,GAAE,CAAC,IAAE,CAACA,GAAE,CAAC,MAAIM,KAAEL,OAAID,GAAE,CAAC,IAAE,KAAK,WAAW,IAAI,QAAMI,KAAEH,IAAEF,OAAIC,GAAE,CAAC,IAAE,CAACA,GAAE,CAAC,KAAIA;AAAA,UAAC,GAAE,IAAI,OAAO,IAAI,SAAQ,EAAC,QAAO,SAASD,IAAE;AAAC,oBAAO,KAAK,SAAS,gBAAgB,KAAG,IAAID,GAAE,IAAI,GAAG,KAAKC,MAAG,CAAC,CAAC,GAAE;AAAA,UAAI,EAAC,CAAC,GAAE,IAAI,QAAQ,UAAU,OAAO,WAAS,EAAC,aAAY,KAAG,YAAW,GAAE,YAAW,CAAC,GAAE,iBAAgB,MAAE;AAAA,QAAC,GAAG,KAAK,IAAI;AAAA,MAAC,EAAE,GAAE,WAAS,OAAO,SAAO,OAAO,OAAK,CAAC;AAAG,UAAIqG,MAAG,WAAU;AAAC,iBAAStG,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,eAAK,IAAI,gBAAc,CAAC,iBAAgB,gBAAe,cAAa,gBAAe,kBAAiB,mBAAkB,gBAAe,cAAa,cAAa,aAAY,eAAc,SAAQ,4BAA2B,WAAU,eAAc,sBAAqB,sBAAqB,sBAAqB,oBAAmB,oBAAmB,SAAQ,SAAS,GAAE,KAAK,IAAI,YAAU,CAAC,SAAQ,aAAY,aAAY,cAAa,cAAa,aAAY,cAAa,WAAU,UAAU,GAAE,KAAK,IAAI,aAAW,IAAIoB,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,OAAK,IAAIkC,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,OAAK,IAAI8C,IAAG,KAAK,IAAI,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,SAAO,IAAI/D,GAAE,CAAC,CAAC,GAAE,KAAK,IAAI,OAAK,IAAIQ,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,OAAK,IAAIG,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,WAAS,IAAI1B,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,YAAU,IAAIC,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,aAAW,IAAIgC,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,SAAO,IAAIH,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,UAAQ,IAAIN,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,OAAK,IAAIN,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,eAAa,IAAIa,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,UAAQ,IAAIrB,MAAE,KAAK,IAAI,aAAW,IAAIwB,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,SAAO,IAAIZ,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,QAAM,IAAIa,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,aAAW,IAAI9B,GAAE,KAAK,GAAG,GAAE,KAAK,IAAI,gBAAc,IAAI+B,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,SAAO,IAAIO,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,UAAQ,IAAIC,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,UAAQ,IAAIQ,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,aAAW,IAAIX,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,gBAAc,IAAIsC,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,mBAAiB,IAAIlC,IAAG,KAAK,GAAG,GAAE,KAAK,IAAI,EAAE,QAAQ,UAAQ,IAAIO,IAAG,KAAK,GAAG;AAAA,QAAC,EAAC,CAAC,CAAC,GAAE1E;AAAA,MAAC,EAAE;AAAr+C,UAAu+CuG,MAAG,WAAU;AAAC,iBAASvG,GAAEC,IAAE;AAAC,UAAAC,GAAE,MAAKF,EAAC,GAAE,KAAK,MAAIC,IAAE,KAAK,IAAEA,GAAE;AAAA,QAAC;AAAC,eAAOI,GAAEL,IAAE,CAAC,EAAC,KAAI,SAAQ,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAED,GAAE;AAAW,eAAK,IAAI,oBAAkB,KAAK,IAAI,iBAAiB,QAAQ,GAAE,KAAK,IAAI,WAAS,KAAK,IAAI,QAAQ,QAAQ,GAAE,KAAK,IAAI,aAAW,MAAK,KAAK,IAAI,OAAK,MAAK,KAAK,IAAI,cAAY,MAAK,KAAK,IAAI,OAAK,MAAK,KAAK,IAAI,OAAK,MAAK,KAAK,IAAI,OAAK,MAAK,KAAK,IAAI,SAAO,MAAK,KAAK,IAAI,aAAW,MAAK,KAAK,IAAI,QAAM,MAAK,KAAK,IAAI,aAAW,MAAK,KAAK,IAAI,gBAAc,MAAK,KAAK,IAAI,SAAO,MAAK,KAAK,IAAI,aAAW,MAAK,KAAK,IAAI,UAAQ,MAAK,KAAK,IAAI,aAAW,MAAK,KAAK,IAAI,mBAAiB,MAAK,KAAK,IAAI,gBAAc,MAAK,KAAK,IAAI,UAAQ,MAAK,KAAK,IAAI,eAAa,MAAK,KAAK,IAAI,EAAE,QAAQ,UAAQ,MAAK,KAAK,iBAAiB,EAAC,YAAWC,GAAC,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASD,IAAE;AAAC,UAAAA,GAAE,KAAM,WAAU;AAAC,iBAAK,YAAY,GAAG,GAAE,KAAK,IAAI,GAAE,KAAK,KAAK;AAAA,UAAC,GAAG,IAAE,GAAEA,GAAE,QAAQ,GAAEA,GAAE,MAAM;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAEF,GAAE,YAAWG,KAAE,KAAK,EAAE,QAAQ,IAAI,MAAM;AAAK,UAAAA,GAAE,cAAYA,GAAE,WAAW,cAAY,CAACD,OAAIC,GAAE,WAAW,WAAW,MAAM,YAAU;AAAS,cAAIE,KAAE,KAAK,EAAE,QAAQ,IAAI;AAAO,UAAAA,MAAG,KAAK,IAAI,UAAU,QAAS,SAASL,IAAE;AAAC,YAAAK,GAAE,oBAAoBL,IAAEC,GAAE,IAAI,OAAO,aAAa;AAAA,UAAC,CAAE;AAAE,cAAIK,KAAE,KAAK,EAAE,QAAQ;AAAI,cAAG,SAAO,KAAK,IAAI,GAAG,QAAK,KAAK,IAAI,GAAG,aAAY,MAAK,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,UAAU;AAAE,eAAK,QAAQA,GAAE,KAAK,GAAEA,GAAE,MAAM,OAAO,GAAEA,GAAE,SAAO,MAAKA,GAAE,cAAY,MAAKA,GAAE,eAAa,MAAKA,GAAE,kBAAgB,MAAKA,GAAE,SAAO,MAAKA,GAAE,aAAW,MAAKA,GAAE,iBAAe,MAAKA,GAAE,oBAAkB,MAAKA,GAAE,uBAAqB,MAAKA,GAAE,iBAAe,MAAKA,GAAE,oBAAkB,MAAKA,GAAE,SAAO;AAAA,QAAI,EAAC,CAAC,CAAC,GAAEN;AAAA,MAAC,EAAE;AAApjG,UAAsjGwG,MAAG,oBAAI;AAAQ,UAAIC,MAAG,WAAU;AAAC,iBAASzG,GAAEC,IAAEE,IAAE;AAAC,UAAAD,GAAE,MAAKF,EAAC,GAAE,KAAK,OAAKG,IAAE,KAAK,MAAI,MAAK,KAAK,IAAE,IAAIoC,GAAEpC,EAAC,EAAE,KAAK,GAAE,KAAK,KAAGF,IAAE,KAAK,EAAE,QAAQ,OAAKkB,GAAE,SAAS,GAAE,KAAK,EAAE,QAAQ,UAAQ,KAAK,EAAE,OAAO,MAAM,KAAGA,GAAE,aAAa,KAAK,EAAE,OAAO,MAAM,EAAE,IAAE,KAAK,EAAE,QAAQ,MAAK,IAAImF,IAAG,IAAI,EAAE,YAAY,GAAE,KAAK,SAAOnF,GAAE,KAAK,KAAK,QAAO,IAAI,GAAE,KAAK,sBAAoB,KAAK,qBAAqB,KAAK,IAAI,GAAE,KAAK,sBAAoB,KAAK,sBAAsB,KAAK,IAAI;AAAA,QAAC;AAAC,eAAOd,GAAEL,IAAE,CAAC,EAAC,KAAI,UAAS,OAAM,WAAU;AAAC,cAAIA,KAAE;AAAK,iBAAO,IAAI,QAAS,SAASC,IAAEC,IAAE;AAAC,gBAAG,SAAOF,GAAE,IAAG;AAAC,yBAAS,KAAK,oBAAkB,KAAK,kBAAgB,CAAC,IAAGA,GAAE,EAAE,OAAO,MAAM,MAAI,KAAK,gBAAgB,KAAK,EAAC,IAAGA,GAAE,EAAE,QAAQ,SAAQ,OAAMA,GAAE,EAAE,OAAO,MAAM,OAAM,OAAMA,GAAC,CAAC,GAAEA,GAAE,UAAUA,GAAE,EAAE,OAAO,MAAM,aAAa;AAAE,kBAAIG,KAAEH,GAAE,EAAE,OAAO,MAAM,OAAO;AAAY,4BAAY,OAAOG,MAAGA,GAAEH,IAAEA,GAAE,CAAC,GAAEA,GAAE,OAAO,UAAU,eAAc,CAACA,IAAEA,GAAE,CAAC,CAAC,GAAE,OAAO,iBAAiB,UAASA,GAAE,mBAAmB,GAAE,SAASA,IAAEC,IAAE;AAAC,oBAAIC,KAAE;AAAG,oBAAGF,GAAE,aAAW,KAAK,wBAAuB;AAAC,sBAAIG,KAAEH,GAAE,sBAAsB;AAAE,6BAASA,GAAE,MAAM,WAAS,MAAIG,GAAE,UAAQD,KAAE;AAAA,gBAAG;AAAC,oBAAIG,KAAE,IAAI,eAAgB,SAASF,IAAE;AAAC,kBAAAD,MAAGD,GAAE,KAAKD,IAAEG,EAAC,GAAED,KAAE;AAAA,gBAAE,CAAE;AAAE,gBAAAF,GAAE,aAAW,KAAK,yBAAuB,MAAM,KAAKA,GAAE,QAAQ,EAAE,QAAS,SAASA,IAAE;AAAC,yBAAOK,GAAE,QAAQL,EAAC;AAAA,gBAAC,CAAE,IAAEK,GAAE,QAAQL,EAAC,GAAEwG,IAAG,IAAIvG,IAAEI,EAAC;AAAA,cAAC,EAAEL,GAAE,GAAG,YAAWA,GAAE,mBAAmB;AAAE,kBAAIK,KAAEL,GAAE,GAAG,eAAaA,GAAE,GAAG,YAAY,GAAEM,KAAEa,GAAE,GAAG,cAAad,EAAC,GAAEG,KAAER,GAAE,GAAG,eAAcS,KAAEH,KAAED,GAAE,eAAe,gBAAgB,IAAEG,GAAE,eAAe,gBAAgB;AAAE,kBAAG,CAACC,IAAE;AAAC,oBAAIE;AAAE,iBAACF,KAAE,SAAS,cAAc,OAAO,GAAG,KAAG,kBAAiBA,GAAE,cAAY;AAAmxb,oBAAIG,MAAG,UAAQD,KAAEX,GAAE,KAAK,UAAQ,WAASW,KAAE,SAAOA,GAAE,UAAQX,GAAE,EAAE,OAAO,MAAM;AAAM,gBAAAY,MAAGH,GAAE,aAAa,SAAQG,EAAC,GAAEN,KAAED,GAAE,QAAQI,EAAC,IAAED,GAAE,KAAK,YAAYC,EAAC;AAAA,cAAC;AAAC,kBAAIC,KAAEV,GAAE,OAAOA,GAAE,EAAE,OAAO,QAAO,CAAC,CAAC;AAAE,kBAAG,CAACU,GAAE,QAAOT,GAAED,EAAC;AAAE,cAAAA,GAAE,MAAMU,EAAC,EAAE,KAAM,WAAU;AAAC,8BAAY,OAAOV,GAAE,EAAE,OAAO,MAAM,OAAO,WAASA,GAAE,EAAE,OAAO,MAAM,OAAO,QAAQA,IAAEA,GAAE,CAAC,GAAEA,GAAE,OAAO,UAAU,WAAU,CAACA,IAAEA,GAAE,CAAC,CAAC,GAAEC,GAAES,EAAC;AAAA,cAAC,CAAE,EAAE,MAAO,SAASV,IAAE;AAAC,gBAAAE,GAAEF,EAAC;AAAA,cAAC,CAAE;AAAA,YAAC,MAAM,CAAAE,GAAE,IAAI,MAAM,mBAAmB,CAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,KAAK;AAAE,cAAImG,IAAG,IAAI,EAAE,YAAY;AAAE,cAAIjG,KAAE,KAAK,EAAE;AAAQ,WAACA,GAAE,SAAO,OAAGA,GAAE,iBAAe,OAAG,KAAK,WAAW,sBAAsBJ,EAAC,GAAEE,GAAE,OAAO,MAAM,0BAAwB,IAAIiC,GAAEjC,GAAE,MAAM,EAAE,yBAAyBA,GAAE,QAAO,KAAK,GAAG;AAAE,cAAG,SAAO,KAAK,GAAG,QAAOE,GAAE,iBAAe,MAAG;AAAK,cAAG,KAAK,KAAK,cAAc,GAAE,cAAYF,GAAE,OAAO,MAAM,SAAOA,GAAE,OAAO,KAAK,OAAK,OAAGA,GAAE,OAAO,MAAM,CAAC,EAAE,OAAK,QAAI,MAAIE,GAAE,SAAS,QAAOA,GAAE,iBAAe,MAAG;AAAK,cAAIC,KAAEN;AAAE,UAAAA,GAAE,QAAS,SAASA,IAAEC,IAAE;AAAC,YAAAD,GAAE,WAASM,KAAEJ,GAAE,OAAO,cAAc,yBAAyB,EAAC,WAAUD,GAAC,CAAC;AAAA,UAAE,CAAE;AAAE,cAAIO,KAAEe,GAAE,iBAAiBjB,IAAEH,GAAE,OAAO,MAAM,IAAI;AAAE,UAAAE,GAAE,cAAYG,GAAE,aAAYH,GAAE,gBAAcG,GAAE;AAAc,cAAIC,KAAEH,GAAE,MAAO,SAASN,IAAE;AAAC,mBAAOA,GAAE,QAAM,MAAIA,GAAE,KAAK;AAAA,UAAM,CAAE;AAAE,WAAC,MAAIM,GAAE,UAAQG,MAAGJ,GAAE,gBAAgB,SAAO,MAAI,KAAK,OAAO,aAAa,GAAE,KAAK,OAAO,mBAAmB,GAAE,KAAK,KAAK,UAAUC,EAAC,GAAE,KAAK,MAAM,KAAK,GAAE,IAAImC,GAAE,IAAI,EAAE,oBAAoB,GAAE,KAAK,WAAW,mBAAmB,GAAE,KAAK,cAAc,KAAK,GAAEpC,GAAE,UAAQA,GAAE,gBAAgB,WAASA,GAAE,OAAO,UAAQ,CAACF,GAAE,OAAO,OAAO,uBAAqB,KAAK,OAAO,KAAK,GAAE,KAAK,OAAO,mBAAmB,GAAEE,GAAE,eAAa,KAAK,KAAK,iBAAiB,GAAE,eAAaF,GAAE,OAAO,MAAM,QAAM,KAAK,WAAW,mBAAmB,GAAE,KAAK,IAAI,QAAQ,OAAKA,GAAE,QAAQ,MAAK,KAAK,IAAI,QAAQ,OAAKA,GAAE,QAAQ,OAAM,KAAK,WAAW,uBAAuB,GAAE,IAAIoB,GAAE,IAAI,EAAE,qBAAqB,GAAE,KAAK,WAAW,WAAW;AAAE,cAAIZ,KAAE,KAAK,KAAK,WAAW;AAAE,eAAK,KAAK,eAAe;AAAE,cAAIC,KAAE,KAAK,KAAK,cAAcN,IAAEK,EAAC,GAAED,KAAE,IAAIiC,GAAE,IAAI;AAAE,iBAAOjC,GAAE,aAAa,GAAEP,GAAE,OAAO,WAAW,WAAW,WAASO,GAAE,qBAAqB,GAAE,KAAK,KAAK,mBAAmB,GAAE,EAAC,SAAQE,IAAE,UAASD,IAAE,YAAW,EAAC,MAAK,EAAC,MAAKR,GAAE,QAAQ,YAAW,KAAIA,GAAE,QAAQ,YAAW,OAAMA,GAAE,QAAQ,WAAU,QAAOA,GAAE,QAAQ,WAAU,EAAC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,cAAIH,KAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,MAAKC,KAAE,MAAKC,KAAED,GAAE;AAAE,iBAAO,IAAI,QAAS,SAASG,IAAEC,IAAE;AAAC,gBAAG,SAAOJ,GAAE,GAAG,QAAOI,GAAE,IAAI,MAAM,wDAAwD,CAAC;AAAE,aAAC,SAAOL,MAAGE,GAAE,QAAQ,uBAAqBD,GAAE,OAAO,aAAa,GAAEA,GAAE,OAAK,IAAI8C,GAAE9C,EAAC;AAAE,gBAAIM,IAAEC,IAAEE,KAAET,GAAE,KAAK,SAAS;AAAE,aAACA,GAAE,cAAY,IAAI+B,GAAE/B,EAAC,GAAEA,GAAE,YAAY,eAAe,GAAEA,GAAE,YAAY,cAAc,GAAE,WAASC,GAAE,OAAO,KAAK,cAAYQ,MAAGR,GAAE,QAAQ,IAAI,YAAY,IAAIQ,GAAE,EAAE,GAAE,QAAMA,MAAG,UAAQH,KAAEG,GAAE,kBAAgB,WAASH,MAAGA,GAAE,QAAML,GAAE,QAAQ,IAAI,YAAY,IAAIQ,GAAE,aAAa;AAAG,gBAAG,MAAM,QAAQV,GAAE,OAAO,EAAE,UAAQW,KAAE,GAAEA,KAAEX,GAAE,QAAQ,QAAOW,KAAI,CAAAT,GAAE,QAAQ,IAAI,YAAY,IAAIF,GAAE,QAAQW,EAAC,CAAC;AAAA,gBAAO,CAAAT,GAAE,QAAQ,IAAI,YAAY,IAAIF,GAAE,OAAO;AAAE,wBAAUE,GAAE,OAAO,KAAK,aAAWQ,MAAGR,GAAE,QAAQ,IAAI,YAAY,IAAIQ,GAAE,EAAE,GAAE,QAAMA,MAAG,UAAQF,KAAEE,GAAE,kBAAgB,WAASF,MAAGA,GAAE,QAAMN,GAAE,QAAQ,IAAI,YAAY,IAAIQ,GAAE,aAAa;AAAG,wBAAUR,GAAE,OAAO,MAAM,WAAW,YAAUD,GAAE,WAAW,gBAAgB,GAAE,YAAUC,GAAE,OAAO,MAAM,CAAC,EAAE,WAAW,YAAUD,GAAE,WAAW,gBAAgB,GAAE,cAAYC,GAAE,OAAO,MAAM,QAAMD,GAAE,KAAK,SAASC,GAAE,OAAO,MAAM,MAAKQ,EAAC;AAAE,gBAAID,KAAE,IAAIqC,GAAE/C,GAAE,KAAIW,EAAC,GAAEG,KAAE,IAAIqC,GAAEnD,GAAE,KAAIW,EAAC;AAAE,gBAAG,SAAOA,OAAID,GAAE,sBAAsBC,GAAE,cAAc,GAAEG,GAAE,uBAAuB,GAAEX,GAAE,OAAO,MAAM,IAAK,SAASH,IAAEC,IAAE;AAAC,qBAAKE,GAAE,QAAQ,mBAAmB,QAAQF,EAAC,KAAGa,GAAE,iBAAiBb,IAAED,GAAE,QAAQ;AAAA,YAAC,CAAE,IAAGE,GAAE,YAAY,oBAAoB,GAAE,CAACC,GAAE,QAAQ,QAAO;AAAC,kBAAGA,GAAE,OAAO,QAAQ,WAAS,CAACA,GAAE,QAAQ,UAAQD,GAAE,EAAE,QAAQ,QAAQ,YAAYD,GAAE,QAAQ,GAAEE,GAAE,QAAQ,eAAaA,GAAE,QAAQ,cAAYA,GAAE,OAAO,MAAM,yBAAuBA,GAAE,QAAQ,YAAY,EAACA,GAAE,OAAO,MAAM,KAAK,WAASA,GAAE,OAAO,MAAM,aAAWA,GAAE,OAAO,MAAM,UAAU,WAASA,GAAE,OAAO,MAAM,OAAKA,GAAE,OAAO,MAAM,IAAI,YAAUD,GAAE,iBAAiB,KAAK,EAAC,UAASD,GAAE,SAAQ,CAAC;AAAA,mBAAM;AAAC,oBAAIc,KAAEZ,GAAE,OAAO,MAAM,QAAQ;AAAM,iBAAC,QAAO,UAAS,WAAU,aAAY,OAAM,OAAO,EAAE,QAAS,SAASH,IAAE;AAAC,kBAAAe,GAAEf,EAAC,IAAE;AAAA,gBAAE,CAAE;AAAA,cAAC;AAAC,cAAAG,GAAE,OAAO,MAAM,QAAQ,QAAM,CAACA,GAAE,QAAQ,sBAAoBD,GAAE,QAAQ,cAAc;AAAA,YAAC;AAAC,YAAAC,GAAE,QAAQ,OAAO,cAAc,SAAO,KAAGA,GAAE,QAAQ,OAAO,cAAc,QAAS,SAASH,IAAE;AAAC,cAAAA,GAAE,OAAOA,GAAE,QAAO,OAAGA,GAAE,OAAO;AAAA,YAAC,CAAE,GAAEG,GAAE,QAAQ,cAAYA,GAAE,QAAQ,UAAQD,GAAE,KAAK,oBAAoB,GAAEG,GAAEH,EAAC;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,WAAU;AAAC,cAAIF,IAAEC;AAAE,iBAAO,oBAAoB,UAAS,KAAK,mBAAmB,GAAE,KAAK,GAAG,YAAWD,KAAE,KAAK,sBAAqBC,KAAEuG,IAAG,IAAIxG,EAAC,OAAKC,GAAE,WAAW,GAAEuG,IAAG,OAAOxG,EAAC;AAAG,cAAIE,KAAE,KAAK,EAAE,OAAO,MAAM;AAAG,UAAAA,MAAG,KAAK,gBAAgB,QAAS,SAASF,IAAEC,IAAE;AAAC,YAAAD,GAAE,OAAKmB,GAAE,aAAajB,EAAC,KAAG,KAAK,gBAAgB,OAAOD,IAAE,CAAC;AAAA,UAAC,CAAE,GAAE,IAAIsG,IAAG,KAAK,GAAG,EAAE,MAAM,EAAC,YAAW,MAAE,CAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,SAASvG,IAAE;AAAC,cAAIC,KAAE,MAAKC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,KAAG,UAAU,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEE,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEE,KAAE,KAAK;AAAE,iBAAOA,GAAE,QAAQ,YAAU,QAAOR,GAAE,WAAS,KAAK,OAAO,YAAY,OAAG,MAAG,KAAE,GAAEA,GAAE,OAAO,UAAQA,GAAE,OAAO,CAAC,EAAE,SAAOA,GAAE,SAAOA,GAAE,OAAO,IAAK,SAASA,IAAEE,IAAE;AAAC,mBAAOD,GAAE,cAAc,cAAcD,IAAEE,EAAC;AAAA,UAAC,CAAE,IAAG,KAAK,cAAc,wBAAwB,IAAGF,GAAE,UAAQA,KAAE,KAAK,cAAc,iBAAiBA,EAAC,IAAGA,GAAE,UAAQA,KAAE,KAAK,cAAc,iBAAiBA,EAAC,IAAGQ,GAAE,QAAQ,uBAAuB,SAAO,KAAG,KAAK,OAAO,mBAAmB,GAAER,GAAE,UAAQA,KAAE,KAAK,MAAM,mBAAmBA,EAAC,IAAG,KAAK,cAAc,eAAeA,IAAEE,IAAEC,IAAEE,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,cAAIN,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC;AAAE,iBAAO,KAAK,OAAO,YAAY,KAAE,GAAE,KAAK,cAAc,wBAAwB,GAAE,KAAK,cAAc,cAAcF,IAAEC,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,KAAK,EAAE,OAAO,OAAO,MAAM;AAAE,iBAAOA,GAAE,KAAKH,EAAC,GAAE,KAAK,OAAO,YAAY,KAAE,GAAE,KAAK,cAAc,wBAAwB,GAAE,KAAK,cAAc,cAAcG,IAAEF,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE;AAAK,UAAAA,GAAE,EAAE,QAAQ,cAAY,MAAGA,GAAE,OAAO,iBAAiB;AAAE,mBAAQC,KAAED,GAAE,EAAE,OAAO,OAAO,MAAM,GAAEG,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,KAAG,SAAOL,GAAEK,EAAC,KAAG,WAASL,GAAEK,EAAC,EAAE,UAAQC,KAAE,GAAEA,KAAEN,GAAEK,EAAC,EAAE,KAAK,QAAOC,KAAI,CAAAH,GAAEE,EAAC,EAAE,KAAK,KAAKL,GAAEK,EAAC,EAAE,KAAKC,EAAC,CAAC;AAAE,iBAAOJ,GAAE,EAAE,OAAO,SAAOC,IAAEF,OAAIC,GAAE,EAAE,QAAQ,gBAAciB,GAAE,MAAMjB,GAAE,EAAE,OAAO,MAAM,IAAG,KAAK,OAAO;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,UAAS,OAAM,SAASF,IAAE;AAAC,cAAIC,KAAE;AAAK,iBAAO,IAAI,QAAS,SAASC,IAAEC,IAAE;AAAC,gBAAIoG,IAAGtG,GAAE,GAAG,EAAE,MAAM,EAAC,YAAW,KAAE,CAAC;AAAE,gBAAII,KAAEJ,GAAE,OAAOA,GAAE,EAAE,OAAO,QAAOD,EAAC;AAAE,gBAAG,CAACK,GAAE,QAAOH,GAAED,EAAC;AAAE,YAAAA,GAAE,MAAMI,EAAC,EAAE,KAAM,WAAU;AAAC,4BAAY,OAAOJ,GAAE,EAAE,OAAO,MAAM,OAAO,WAASA,GAAE,EAAE,OAAO,MAAM,OAAO,QAAQA,IAAEA,GAAE,CAAC,GAAEA,GAAE,OAAO,UAAU,WAAU,CAACA,IAAEA,GAAE,CAAC,CAAC,GAAEA,GAAE,EAAE,QAAQ,UAAQ,MAAGC,GAAED,EAAC;AAAA,YAAC,CAAE,EAAE,MAAO,SAASD,IAAE;AAAC,cAAAG,GAAEH,EAAC;AAAA,YAAC,CAAE;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,iBAAiB,GAAEC,KAAE,CAAC,IAAI;AAAE,iBAAOD,GAAE,WAASC,KAAE,CAAC,GAAED,GAAE,QAAS,SAASA,IAAE;AAAC,YAAAC,GAAE,KAAKD,EAAC;AAAA,UAAC,CAAE,IAAGC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAID,KAAE;AAAK,iBAAO,KAAK,gBAAgB,OAAQ,SAASA,IAAE;AAAC,gBAAGA,GAAE,MAAM,QAAM;AAAA,UAAE,CAAE,EAAE,IAAK,SAASC,IAAE;AAAC,mBAAOD,GAAE,EAAE,OAAO,MAAM,UAAQC,GAAE,QAAMA,GAAE,QAAMD;AAAA,UAAC,CAAE;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,SAASA,IAAE;AAAC,iBAAO,KAAK,OAAO,aAAaA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gCAA+B,OAAM,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,OAAO,oBAAoBD,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASD,IAAE;AAAC,eAAK,OAAO,WAAWA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,SAASA,IAAE;AAAC,eAAK,OAAO,WAAWA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,mBAAkB,OAAM,SAASA,IAAE;AAAC,eAAK,OAAO,gBAAgBA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,SAASA,IAAE;AAAC,eAAK,OAAO,eAAeA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAIA,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC;AAAE,eAAK,OAAO,YAAYD,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASD,IAAEC,IAAE;AAAC,eAAK,OAAO,iBAAiBD,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,uBAAsB,OAAM,SAASD,IAAEC,IAAE;AAAC,eAAK,OAAO,oBAAoBD,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,QAAOC,KAAE;AAAK,UAAAD,OAAIC,KAAED,KAAGC,GAAE,YAAY,2BAA2BH,IAAEC,IAAEE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,QAAOC,KAAE;AAAK,UAAAD,OAAIC,KAAED,KAAGC,GAAE,YAAY,2BAA2BH,IAAEC,IAAEE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,sBAAqB,OAAM,SAASH,IAAE;AAAC,cAAIC,KAAE,EAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,MAAI,UAAU,CAAC,GAAEC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,QAAOC,KAAE;AAAK,UAAAD,OAAIC,KAAED,KAAGC,GAAE,YAAY,2BAA2BH,IAAEC,IAAEE,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,WAAU;AAAC,cAAIH,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,QAAOC,KAAE;AAAK,UAAAD,OAAIC,KAAED,KAAGC,GAAE,YAAY,iBAAiBA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,oBAAmB,OAAM,SAASD,IAAE;AAAC,cAAIC,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,QAAOC,KAAE;AAAK,UAAAD,OAAIC,KAAED,KAAGC,GAAE,YAAY,iBAAiBA,IAAEF,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,gBAAe,OAAM,WAAU;AAAC,iBAAO,KAAK,EAAE,QAAQ,IAAI,OAAO,cAAc,mBAAmB;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,UAAU,sBAAsBD,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,2BAA0B,OAAM,WAAU;AAAC,cAAID,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAE,iBAAO,IAAIkD,GAAE,KAAK,GAAG,EAAE,YAAYlD,EAAC,EAAE;AAAA,QAAQ,EAAC,GAAE,EAAC,KAAI,0BAAyB,OAAM,WAAU;AAAC,cAAIA,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE;AAAE,iBAAO,IAAIkD,GAAE,KAAK,GAAG,EAAE,YAAYlD,EAAC,EAAE;AAAA,QAAO,EAAC,GAAE,EAAC,KAAI,kBAAiB,OAAM,WAAU;AAAC,iBAAO,KAAK,EAAE,QAAQ;AAAA,QAAY,EAAC,GAAE,EAAC,KAAI,4BAA2B,OAAM,SAASA,IAAEC,IAAE;AAAC,iBAAO,KAAK,cAAc,yBAAyBD,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASD,IAAEC,IAAE;AAAC,eAAK,IAAI,QAAQ,kBAAkBD,IAAEC,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,aAAY,OAAM,SAASD,IAAE;AAAC,eAAK,aAAa,uBAAuBA,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,WAAU,OAAM,SAASA,IAAE;AAAC,iBAAO,IAAI8C,GAAE,KAAK,GAAG,EAAE,QAAQ9C,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,eAAc,OAAM,WAAU;AAAC,cAAIA,KAAE,UAAU,SAAO,KAAG,WAAS,UAAU,CAAC,IAAE,UAAU,CAAC,IAAE,CAAC;AAAE,iBAAO,IAAI8C,GAAE,KAAK,GAAG,EAAE,YAAY9C,EAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,WAAU;AAAC,iBAAO,KAAK,EAAE,QAAQ,IAAI;AAAA,QAAK,EAAC,GAAE,EAAC,KAAI,yBAAwB,OAAM,WAAU;AAAC,eAAK,EAAE,QAAQ,kBAAgB,KAAK,EAAE,OAAO,MAAM,wBAAsB,KAAK,cAAc;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,iBAAgB,OAAM,WAAU;AAAC,cAAIA,KAAE;AAAK,uBAAa,KAAK,EAAE,QAAQ,WAAW,GAAE,KAAK,EAAE,QAAQ,cAAY,OAAO,WAAY,WAAU;AAAC,YAAAA,GAAE,EAAE,QAAQ,UAAQ,MAAGA,GAAE,EAAE,QAAQ,cAAY,OAAGA,GAAE,IAAI,OAAO;AAAA,UAAC,GAAG,GAAG;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,wBAAuB,OAAM,WAAU;AAAC,cAAIA,KAAE,KAAK,EAAE,OAAO,MAAM;AAAqB,wBAAY,OAAOA,OAAIA,KAAEA,GAAE,IAAGA,MAAG,KAAK,cAAc;AAAA,QAAC,EAAC,CAAC,GAAE,CAAC,EAAC,KAAI,gBAAe,OAAM,SAASA,IAAE;AAAC,cAAIC,KAAEkB,GAAE,aAAanB,EAAC;AAAE,cAAG,KAAK,iBAAgB;AAAC,gBAAIE,KAAE,KAAK,gBAAgB,OAAQ,SAASF,IAAE;AAAC,qBAAOA,GAAE,OAAKC;AAAA,YAAC,CAAE,EAAE,CAAC;AAAE,mBAAOC,MAAGA,GAAE;AAAA,UAAK;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,cAAa,OAAM,WAAU;AAAC,mBAAQD,KAAE,SAAS,iBAAiB,mBAAmB,GAAEC,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,gBAAIF,GAAEC,GAAEC,EAAC,GAAE,KAAK,MAAMD,GAAEC,EAAC,EAAE,aAAa,cAAc,CAAC,CAAC,EAAE,OAAO;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,QAAO,OAAM,SAASF,IAAEC,IAAE;AAAC,cAAIC,KAAE,KAAK,aAAaF,EAAC;AAAE,cAAGE,IAAE;AAAC,YAAAA,GAAE,EAAE,QAAQ,eAAa;AAAG,gBAAIC,KAAE;AAAK,gBAAG,OAAKD,GAAE,cAAc,QAAQD,EAAC,GAAE;AAAC,uBAAQI,KAAE,UAAU,QAAOC,KAAE,IAAI,MAAMD,KAAE,IAAEA,KAAE,IAAE,CAAC,GAAEG,KAAE,GAAEA,KAAEH,IAAEG,KAAI,CAAAF,GAAEE,KAAE,CAAC,IAAE,UAAUA,EAAC;AAAE,cAAAL,KAAED,GAAED,EAAC,EAAE,MAAMC,IAAEI,EAAC;AAAA,YAAC;AAAC,mBAAOH;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,EAAC,KAAI,SAAQ,OAAM,SAASH,IAAEC,IAAE;AAAC,iBAAOkB,GAAE,OAAOnB,IAAEC,EAAC;AAAA,QAAC,EAAC,CAAC,CAAC,GAAED;AAAA,MAAC,EAAE;AAAE,aAAO,UAAQyG;AAAA;AAAA;;;ACRzg/C,sBAAO;AACP,uBAAO;;;ACNP,yBAAsB;;;ACMtB,WAAS,MAAMC,IAAG;AAChB,WAAOA,KAAI,MAAM;AAAA,EACnB;AACA,MAAM,MAAM,CAACA,IAAGC,IAAGC,OAAM,KAAK,IAAI,KAAK,IAAIF,IAAGE,EAAC,GAAGD,EAAC;AACnD,WAAS,IAAID,IAAG;AACd,WAAO,IAAI,MAAMA,KAAI,IAAI,GAAG,GAAG,GAAG;AAAA,EACpC;AAIA,WAAS,IAAIG,IAAG;AACd,WAAO,IAAI,MAAMA,KAAI,GAAG,GAAG,GAAG,GAAG;AAAA,EACnC;AACA,WAAS,IAAIA,IAAG;AACd,WAAO,IAAI,MAAMA,KAAI,IAAI,IAAI,KAAK,GAAG,CAAC;AAAA,EACxC;AACA,WAAS,IAAIA,IAAG;AACd,WAAO,IAAI,MAAMA,KAAI,GAAG,GAAG,GAAG,GAAG;AAAA,EACnC;AAEA,MAAM,QAAQ,EAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAE;AAC7J,MAAM,MAAM,CAAC,GAAG,kBAAkB;AAClC,MAAM,KAAK,CAAAC,OAAK,IAAIA,KAAI,EAAG;AAC3B,MAAM,KAAK,CAAAA,OAAK,KAAKA,KAAI,QAAS,CAAC,IAAI,IAAIA,KAAI,EAAG;AAClD,MAAM,KAAK,CAAAA,QAAOA,KAAI,QAAS,OAAQA,KAAI;AAC3C,MAAM,UAAU,CAAAD,OAAK,GAAGA,GAAE,CAAC,KAAK,GAAGA,GAAE,CAAC,KAAK,GAAGA,GAAE,CAAC,KAAK,GAAGA,GAAE,CAAC;AAC5D,WAAS,SAAS,KAAK;AACrB,QAAI,MAAM,IAAI;AACd,QAAI;AACJ,QAAI,IAAI,CAAC,MAAM,KAAK;AAClB,UAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,cAAM;AAAA,UACJ,GAAG,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;AAAA,UACzB,GAAG,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;AAAA,UACzB,GAAG,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;AAAA,UACzB,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK;AAAA,QACtC;AAAA,MACF,WAAW,QAAQ,KAAK,QAAQ,GAAG;AACjC,cAAM;AAAA,UACJ,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC;AAAA,UACpC,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC;AAAA,UACpC,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC;AAAA,UACpC,GAAG,QAAQ,IAAK,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAK;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,MAAM,QAAQ,CAACE,IAAGC,OAAMD,KAAI,MAAMC,GAAED,EAAC,IAAI;AACzC,WAAS,UAAUF,IAAG;AACpB,QAAIG,KAAI,QAAQH,EAAC,IAAI,KAAK;AAC1B,WAAOA,KACH,MAAMG,GAAEH,GAAE,CAAC,IAAIG,GAAEH,GAAE,CAAC,IAAIG,GAAEH,GAAE,CAAC,IAAI,MAAMA,GAAE,GAAGG,EAAC,IAC7C;AAAA,EACN;AAEA,MAAM,SAAS;AACf,WAAS,SAASC,IAAGC,IAAGC,IAAG;AACzB,UAAMJ,KAAIG,KAAI,KAAK,IAAIC,IAAG,IAAIA,EAAC;AAC/B,UAAMH,KAAI,CAACI,IAAGC,MAAKD,KAAIH,KAAI,MAAM,OAAOE,KAAIJ,KAAI,KAAK,IAAI,KAAK,IAAIM,KAAI,GAAG,IAAIA,IAAG,CAAC,GAAG,EAAE;AACtF,WAAO,CAACL,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,EAC1B;AACA,WAAS,SAASC,IAAGC,IAAGL,IAAG;AACzB,UAAMG,KAAI,CAACI,IAAGC,MAAKD,KAAIH,KAAI,MAAM,MAAMJ,KAAIA,KAAIK,KAAI,KAAK,IAAI,KAAK,IAAIG,IAAG,IAAIA,IAAG,CAAC,GAAG,CAAC;AACpF,WAAO,CAACL,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AAAA,EAC1B;AACA,WAAS,SAASC,IAAGK,IAAGR,IAAG;AACzB,UAAM,MAAM,SAASG,IAAG,GAAG,GAAG;AAC9B,QAAIM;AACJ,QAAID,KAAIR,KAAI,GAAG;AACb,MAAAS,KAAI,KAAKD,KAAIR;AACb,MAAAQ,MAAKC;AACL,MAAAT,MAAKS;AAAA,IACP;AACA,SAAKA,KAAI,GAAGA,KAAI,GAAGA,MAAK;AACtB,UAAIA,EAAC,KAAK,IAAID,KAAIR;AAClB,UAAIS,EAAC,KAAKD;AAAA,IACZ;AACA,WAAO;AAAA,EACT;AACA,WAAS,SAASE,IAAGC,IAAGX,IAAGY,IAAG,KAAK;AACjC,QAAIF,OAAM,KAAK;AACb,cAASC,KAAIX,MAAKY,MAAMD,KAAIX,KAAI,IAAI;AAAA,IACtC;AACA,QAAIW,OAAM,KAAK;AACb,cAAQX,KAAIU,MAAKE,KAAI;AAAA,IACvB;AACA,YAAQF,KAAIC,MAAKC,KAAI;AAAA,EACvB;AACA,WAAS,QAAQb,IAAG;AAClB,UAAM,QAAQ;AACd,UAAMW,KAAIX,GAAE,IAAI;AAChB,UAAMY,KAAIZ,GAAE,IAAI;AAChB,UAAMC,KAAID,GAAE,IAAI;AAChB,UAAM,MAAM,KAAK,IAAIW,IAAGC,IAAGX,EAAC;AAC5B,UAAM,MAAM,KAAK,IAAIU,IAAGC,IAAGX,EAAC;AAC5B,UAAMK,MAAK,MAAM,OAAO;AACxB,QAAIF,IAAGC,IAAGQ;AACV,QAAI,QAAQ,KAAK;AACf,MAAAA,KAAI,MAAM;AACV,MAAAR,KAAIC,KAAI,MAAMO,MAAK,IAAI,MAAM,OAAOA,MAAK,MAAM;AAC/C,MAAAT,KAAI,SAASO,IAAGC,IAAGX,IAAGY,IAAG,GAAG;AAC5B,MAAAT,KAAIA,KAAI,KAAK;AAAA,IACf;AACA,WAAO,CAACA,KAAI,GAAGC,MAAK,GAAGC,EAAC;AAAA,EAC1B;AACA,WAAS,MAAMH,IAAGD,IAAGD,IAAGa,IAAG;AACzB,YACE,MAAM,QAAQZ,EAAC,IACXC,GAAED,GAAE,CAAC,GAAGA,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC,IAClBC,GAAED,IAAGD,IAAGa,EAAC,GACb,IAAI,GAAG;AAAA,EACX;AACA,WAAS,QAAQV,IAAGC,IAAGC,IAAG;AACxB,WAAO,MAAM,UAAUF,IAAGC,IAAGC,EAAC;AAAA,EAChC;AACA,WAAS,QAAQF,IAAGK,IAAGR,IAAG;AACxB,WAAO,MAAM,UAAUG,IAAGK,IAAGR,EAAC;AAAA,EAChC;AACA,WAAS,QAAQG,IAAGC,IAAGL,IAAG;AACxB,WAAO,MAAM,UAAUI,IAAGC,IAAGL,EAAC;AAAA,EAChC;AACA,WAAS,IAAII,IAAG;AACd,YAAQA,KAAI,MAAM,OAAO;AAAA,EAC3B;AACA,WAAS,SAAS,KAAK;AACrB,UAAMW,KAAI,OAAO,KAAK,GAAG;AACzB,QAAIb,KAAI;AACR,QAAIF;AACJ,QAAI,CAACe,IAAG;AACN;AAAA,IACF;AACA,QAAIA,GAAE,CAAC,MAAMf,IAAG;AACd,MAAAE,KAAIa,GAAE,CAAC,IAAI,IAAI,CAACA,GAAE,CAAC,CAAC,IAAI,IAAI,CAACA,GAAE,CAAC,CAAC;AAAA,IACnC;AACA,UAAMX,KAAI,IAAI,CAACW,GAAE,CAAC,CAAC;AACnB,UAAM,KAAK,CAACA,GAAE,CAAC,IAAI;AACnB,UAAM,KAAK,CAACA,GAAE,CAAC,IAAI;AACnB,QAAIA,GAAE,CAAC,MAAM,OAAO;AAClB,MAAAf,KAAI,QAAQI,IAAG,IAAI,EAAE;AAAA,IACvB,WAAWW,GAAE,CAAC,MAAM,OAAO;AACzB,MAAAf,KAAI,QAAQI,IAAG,IAAI,EAAE;AAAA,IACvB,OAAO;AACL,MAAAJ,KAAI,QAAQI,IAAG,IAAI,EAAE;AAAA,IACvB;AACA,WAAO;AAAA,MACL,GAAGJ,GAAE,CAAC;AAAA,MACN,GAAGA,GAAE,CAAC;AAAA,MACN,GAAGA,GAAE,CAAC;AAAA,MACN,GAAGE;AAAA,IACL;AAAA,EACF;AACA,WAAS,OAAOF,IAAG,KAAK;AACtB,QAAII,KAAI,QAAQJ,EAAC;AACjB,IAAAI,GAAE,CAAC,IAAI,IAAIA,GAAE,CAAC,IAAI,GAAG;AACrB,IAAAA,KAAI,QAAQA,EAAC;AACb,IAAAJ,GAAE,IAAII,GAAE,CAAC;AACT,IAAAJ,GAAE,IAAII,GAAE,CAAC;AACT,IAAAJ,GAAE,IAAII,GAAE,CAAC;AAAA,EACX;AACA,WAAS,UAAUJ,IAAG;AACpB,QAAI,CAACA,IAAG;AACN;AAAA,IACF;AACA,UAAME,KAAI,QAAQF,EAAC;AACnB,UAAMI,KAAIF,GAAE,CAAC;AACb,UAAMG,KAAI,IAAIH,GAAE,CAAC,CAAC;AAClB,UAAMI,KAAI,IAAIJ,GAAE,CAAC,CAAC;AAClB,WAAOF,GAAE,IAAI,MACT,QAAQI,EAAC,KAAKC,EAAC,MAAMC,EAAC,MAAM,IAAIN,GAAE,CAAC,CAAC,MACpC,OAAOI,EAAC,KAAKC,EAAC,MAAMC,EAAC;AAAA,EAC3B;AAEA,MAAM,MAAM;AAAA,IACX,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AACA,MAAM,UAAU;AAAA,IACf,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,IACN,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,cAAc;AAAA,IACd,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,MAAM;AAAA,IACN,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,KAAK;AAAA,IACL,aAAa;AAAA,IACb,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,WAAW;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,KAAK;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,KAAK;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,aAAa;AAAA,IACb,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,WAAW;AAAA,IACX,IAAI;AAAA,IACJ,OAAO;AAAA,EACR;AACA,WAAS,SAAS;AAChB,UAAM,WAAW,CAAC;AAClB,UAAM,OAAO,OAAO,KAAK,OAAO;AAChC,UAAM,QAAQ,OAAO,KAAK,GAAG;AAC7B,QAAII,IAAGM,IAAGR,IAAG,IAAI;AACjB,SAAKE,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAChC,WAAK,KAAK,KAAKA,EAAC;AAChB,WAAKM,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACjC,QAAAR,KAAI,MAAMQ,EAAC;AACX,aAAK,GAAG,QAAQR,IAAG,IAAIA,EAAC,CAAC;AAAA,MAC3B;AACA,MAAAA,KAAI,SAAS,QAAQ,EAAE,GAAG,EAAE;AAC5B,eAAS,EAAE,IAAI,CAACA,MAAK,KAAK,KAAMA,MAAK,IAAI,KAAMA,KAAI,GAAI;AAAA,IACzD;AACA,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,WAAS,UAAU,KAAK;AACtB,QAAI,CAAC,OAAO;AACV,cAAQ,OAAO;AACf,YAAM,cAAc,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACjC;AACA,UAAMN,KAAI,MAAM,IAAI,YAAY,CAAC;AACjC,WAAOA,MAAK;AAAA,MACV,GAAGA,GAAE,CAAC;AAAA,MACN,GAAGA,GAAE,CAAC;AAAA,MACN,GAAGA,GAAE,CAAC;AAAA,MACN,GAAGA,GAAE,WAAW,IAAIA,GAAE,CAAC,IAAI;AAAA,IAC7B;AAAA,EACF;AAEA,MAAM,SAAS;AACf,WAAS,SAAS,KAAK;AACrB,UAAMa,KAAI,OAAO,KAAK,GAAG;AACzB,QAAIb,KAAI;AACR,QAAIS,IAAGC,IAAGX;AACV,QAAI,CAACc,IAAG;AACN;AAAA,IACF;AACA,QAAIA,GAAE,CAAC,MAAMJ,IAAG;AACd,YAAMX,KAAI,CAACe,GAAE,CAAC;AACd,MAAAb,KAAIa,GAAE,CAAC,IAAI,IAAIf,EAAC,IAAI,IAAIA,KAAI,KAAK,GAAG,GAAG;AAAA,IACzC;AACA,IAAAW,KAAI,CAACI,GAAE,CAAC;AACR,IAAAH,KAAI,CAACG,GAAE,CAAC;AACR,IAAAd,KAAI,CAACc,GAAE,CAAC;AACR,IAAAJ,KAAI,OAAOI,GAAE,CAAC,IAAI,IAAIJ,EAAC,IAAI,IAAIA,IAAG,GAAG,GAAG;AACxC,IAAAC,KAAI,OAAOG,GAAE,CAAC,IAAI,IAAIH,EAAC,IAAI,IAAIA,IAAG,GAAG,GAAG;AACxC,IAAAX,KAAI,OAAOc,GAAE,CAAC,IAAI,IAAId,EAAC,IAAI,IAAIA,IAAG,GAAG,GAAG;AACxC,WAAO;AAAA,MACL,GAAGU;AAAA,MACH,GAAGC;AAAA,MACH,GAAGX;AAAA,MACH,GAAGC;AAAA,IACL;AAAA,EACF;AACA,WAAS,UAAUF,IAAG;AACpB,WAAOA,OACLA,GAAE,IAAI,MACF,QAAQA,GAAE,CAAC,KAAKA,GAAE,CAAC,KAAKA,GAAE,CAAC,KAAK,IAAIA,GAAE,CAAC,CAAC,MACxC,OAAOA,GAAE,CAAC,KAAKA,GAAE,CAAC,KAAKA,GAAE,CAAC;AAAA,EAElC;AAEA,MAAM,KAAK,CAAAA,OAAKA,MAAK,WAAYA,KAAI,QAAQ,KAAK,IAAIA,IAAG,IAAM,GAAG,IAAI,QAAQ;AAC9E,MAAM,OAAO,CAAAA,OAAKA,MAAK,UAAUA,KAAI,QAAQ,KAAK,KAAKA,KAAI,SAAS,OAAO,GAAG;AAC9E,WAAS,YAAY,MAAM,MAAMiB,IAAG;AAClC,UAAMN,KAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,UAAMC,KAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,UAAMX,KAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AAC1B,WAAO;AAAA,MACL,GAAG,IAAI,GAAGU,KAAIM,MAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAIN,GAAE,CAAC;AAAA,MAC1C,GAAG,IAAI,GAAGC,KAAIK,MAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAIL,GAAE,CAAC;AAAA,MAC1C,GAAG,IAAI,GAAGX,KAAIgB,MAAK,KAAK,IAAI,KAAK,CAAC,CAAC,IAAIhB,GAAE,CAAC;AAAA,MAC1C,GAAG,KAAK,IAAIgB,MAAK,KAAK,IAAI,KAAK;AAAA,IACjC;AAAA,EACF;AAEA,WAAS,OAAOjB,IAAGU,IAAG,OAAO;AAC3B,QAAIV,IAAG;AACL,UAAI,MAAM,QAAQA,EAAC;AACnB,UAAIU,EAAC,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIA,EAAC,IAAI,IAAIA,EAAC,IAAI,OAAOA,OAAM,IAAI,MAAM,CAAC,CAAC;AACzE,YAAM,QAAQ,GAAG;AACjB,MAAAV,GAAE,IAAI,IAAI,CAAC;AACX,MAAAA,GAAE,IAAI,IAAI,CAAC;AACX,MAAAA,GAAE,IAAI,IAAI,CAAC;AAAA,IACb;AAAA,EACF;AACA,WAAS,MAAMA,IAAG,OAAO;AACvB,WAAOA,KAAI,OAAO,OAAO,SAAS,CAAC,GAAGA,EAAC,IAAIA;AAAA,EAC7C;AACA,WAAS,WAAW,OAAO;AACzB,QAAIA,KAAI,EAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAG;AACjC,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,UAAI,MAAM,UAAU,GAAG;AACrB,QAAAA,KAAI,EAAC,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAG;AAClD,YAAI,MAAM,SAAS,GAAG;AACpB,UAAAA,GAAE,IAAI,IAAI,MAAM,CAAC,CAAC;AAAA,QACpB;AAAA,MACF;AAAA,IACF,OAAO;AACL,MAAAA,KAAI,MAAM,OAAO,EAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAC,CAAC;AACzC,MAAAA,GAAE,IAAI,IAAIA,GAAE,CAAC;AAAA,IACf;AACA,WAAOA;AAAA,EACT;AACA,WAAS,cAAc,KAAK;AAC1B,QAAI,IAAI,OAAO,CAAC,MAAM,KAAK;AACzB,aAAO,SAAS,GAAG;AAAA,IACrB;AACA,WAAO,SAAS,GAAG;AAAA,EACrB;AACA,MAAM,QAAN,MAAM,OAAM;AAAA,IACV,YAAY,OAAO;AACjB,UAAI,iBAAiB,QAAO;AAC1B,eAAO;AAAA,MACT;AACA,YAAM,OAAO,OAAO;AACpB,UAAIA;AACJ,UAAI,SAAS,UAAU;AACrB,QAAAA,KAAI,WAAW,KAAK;AAAA,MACtB,WAAW,SAAS,UAAU;AAC5B,QAAAA,KAAI,SAAS,KAAK,KAAK,UAAU,KAAK,KAAK,cAAc,KAAK;AAAA,MAChE;AACA,WAAK,OAAOA;AACZ,WAAK,SAAS,CAAC,CAACA;AAAA,IAClB;AAAA,IACA,IAAI,QAAQ;AACV,aAAO,KAAK;AAAA,IACd;AAAA,IACA,IAAI,MAAM;AACR,UAAIA,KAAI,MAAM,KAAK,IAAI;AACvB,UAAIA,IAAG;AACL,QAAAA,GAAE,IAAI,IAAIA,GAAE,CAAC;AAAA,MACf;AACA,aAAOA;AAAA,IACT;AAAA,IACA,IAAI,IAAI,KAAK;AACX,WAAK,OAAO,WAAW,GAAG;AAAA,IAC5B;AAAA,IACA,YAAY;AACV,aAAO,KAAK,SAAS,UAAU,KAAK,IAAI,IAAI;AAAA,IAC9C;AAAA,IACA,YAAY;AACV,aAAO,KAAK,SAAS,UAAU,KAAK,IAAI,IAAI;AAAA,IAC9C;AAAA,IACA,YAAY;AACV,aAAO,KAAK,SAAS,UAAU,KAAK,IAAI,IAAI;AAAA,IAC9C;AAAA,IACA,IAAIkB,QAAO,QAAQ;AACjB,UAAIA,QAAO;AACT,cAAM,KAAK,KAAK;AAChB,cAAM,KAAKA,OAAM;AACjB,YAAI;AACJ,cAAMC,KAAI,WAAW,KAAK,MAAM;AAChC,cAAMV,KAAI,IAAIU,KAAI;AAClB,cAAMjB,KAAI,GAAG,IAAI,GAAG;AACpB,cAAM,OAAOO,KAAIP,OAAM,KAAKO,MAAKA,KAAIP,OAAM,IAAIO,KAAIP,OAAM,KAAK;AAC9D,aAAK,IAAI;AACT,WAAG,IAAI,MAAO,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI;AACtC,WAAG,IAAI,MAAO,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI;AACtC,WAAG,IAAI,MAAO,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI;AACtC,WAAG,IAAIiB,KAAI,GAAG,KAAK,IAAIA,MAAK,GAAG;AAC/B,aAAK,MAAM;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAAA,IACA,YAAYD,QAAOD,IAAG;AACpB,UAAIC,QAAO;AACT,aAAK,OAAO,YAAY,KAAK,MAAMA,OAAM,MAAMD,EAAC;AAAA,MAClD;AACA,aAAO;AAAA,IACT;AAAA,IACA,QAAQ;AACN,aAAO,IAAI,OAAM,KAAK,GAAG;AAAA,IAC3B;AAAA,IACA,MAAMf,IAAG;AACP,WAAK,KAAK,IAAI,IAAIA,EAAC;AACnB,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,OAAO;AACb,YAAM,MAAM,KAAK;AACjB,UAAI,KAAK,IAAI;AACb,aAAO;AAAA,IACT;AAAA,IACA,YAAY;AACV,YAAM,MAAM,KAAK;AACjB,YAAM,MAAM,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI;AAC3D,UAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACxB,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,OAAO;AACb,YAAM,MAAM,KAAK;AACjB,UAAI,KAAK,IAAI;AACb,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,YAAMF,KAAI,KAAK;AACf,MAAAA,GAAE,IAAI,MAAMA,GAAE;AACd,MAAAA,GAAE,IAAI,MAAMA,GAAE;AACd,MAAAA,GAAE,IAAI,MAAMA,GAAE;AACd,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,OAAO;AACb,aAAO,KAAK,MAAM,GAAG,KAAK;AAC1B,aAAO;AAAA,IACT;AAAA,IACA,OAAO,OAAO;AACZ,aAAO,KAAK,MAAM,GAAG,CAAC,KAAK;AAC3B,aAAO;AAAA,IACT;AAAA,IACA,SAAS,OAAO;AACd,aAAO,KAAK,MAAM,GAAG,KAAK;AAC1B,aAAO;AAAA,IACT;AAAA,IACA,WAAW,OAAO;AAChB,aAAO,KAAK,MAAM,GAAG,CAAC,KAAK;AAC3B,aAAO;AAAA,IACT;AAAA,IACA,OAAO,KAAK;AACV,aAAO,KAAK,MAAM,GAAG;AACrB,aAAO;AAAA,IACT;AAAA,EACF;;;AC5jBO,WAASoB,OAAO;EACrB;AAMK,MAAMC,MAAO,uBAAM;AACxB,QAAIC,MAAK;AACT,WAAO,MAAMA;EACf,GAAA;AAOO,WAASC,cAAcC,OAA2C;AACvE,WAAOA,UAAU,QAAQ,OAAOA,UAAU;EAC5C;AAOO,WAASC,QAAqBD,OAA8B;AACjE,QAAIE,MAAMD,WAAWC,MAAMD,QAAQD,KAAQ,GAAA;AACzC,aAAO;;AAET,UAAMG,OAAOC,OAAOC,UAAUC,SAASC,KAAKP,KAAAA;AAC5C,QAAIG,KAAKK,MAAM,GAAG,CAAA,MAAO,aAAaL,KAAKK,MAAM,EAAC,MAAO,UAAU;AACjE,aAAO;;AAET,WAAO;EACT;AAOO,WAASC,SAAST,OAAoC;AAC3D,WAAOA,UAAU,QAAQI,OAAOC,UAAUC,SAASC,KAAKP,KAAW,MAAA;EACrE;AAMA,WAASU,eAAeV,OAAiC;AACvD,YAAQ,OAAOA,UAAU,YAAYA,iBAAiBW,WAAWC,SAAS,CAACZ,KAAAA;EAC7E;AAUO,WAASa,gBAAgBb,OAAgBc,cAAsB;AACpE,WAAOJ,eAAeV,KAASA,IAAAA,QAAQc;EACzC;AAOO,WAASC,eAAkBf,OAAsBc,cAAiB;AACvE,WAAO,OAAOd,UAAU,cAAcc,eAAed;EACvD;MAEagB,eAAe,CAAChB,OAAwBiB,cACnD,OAAOjB,UAAU,YAAYA,MAAMkB,SAAS,GAAA,IAC1CC,WAAWnB,KAAAA,IAAS,MAClB,CAACA,QAAQiB;MAEFG,cAAc,CAACpB,OAAwBiB,cAClD,OAAOjB,UAAU,YAAYA,MAAMkB,SAAS,GAAA,IAC1CC,WAAWnB,KAAAA,IAAS,MAAMiB,YACxB,CAACjB;AASA,WAASqB,SACdC,KACAC,MACAC,SACe;AACf,QAAIF,OAAM,OAAOA,IAAGf,SAAS,YAAY;AACvC,aAAOe,IAAGG,MAAMD,SAASD,IAAAA;;EAE7B;AAuBO,WAASG,KACdC,UACAL,KACAE,SACAI,SACA;AACA,QAAIC,IAAWC,KAAaC;AAC5B,QAAI9B,QAAQ0B,QAAW,GAAA;AACrBG,YAAMH,SAASK;AACf,UAAIJ,SAAS;AACX,aAAKC,KAAIC,MAAM,GAAGD,MAAK,GAAGA,MAAK;AAC7BP,UAAAA,IAAGf,KAAKiB,SAASG,SAASE,EAAAA,GAAIA,EAAAA;QAChC;aACK;AACL,aAAKA,KAAI,GAAGA,KAAIC,KAAKD,MAAK;AACxBP,UAAAA,IAAGf,KAAKiB,SAASG,SAASE,EAAAA,GAAIA,EAAAA;QAChC;;eAEOpB,SAASkB,QAAW,GAAA;AAC7BI,aAAO3B,OAAO2B,KAAKJ,QAAAA;AACnBG,YAAMC,KAAKC;AACX,WAAKH,KAAI,GAAGA,KAAIC,KAAKD,MAAK;AACxBP,QAAAA,IAAGf,KAAKiB,SAASG,SAASI,KAAKF,EAAAA,CAAE,GAAGE,KAAKF,EAAE,CAAA;MAC7C;;EAEJ;AAQO,WAASI,eAAeC,IAAuBC,IAAuB;AAC3E,QAAIN,IAAWO,MAAcC,IAAqBC;AAElD,QAAI,CAACJ,MAAM,CAACC,MAAMD,GAAGF,WAAWG,GAAGH,QAAQ;AACzC,aAAO;;AAGT,SAAKH,KAAI,GAAGO,OAAOF,GAAGF,QAAQH,KAAIO,MAAM,EAAEP,IAAG;AAC3CQ,WAAKH,GAAGL,EAAE;AACVS,WAAKH,GAAGN,EAAE;AAEV,UAAIQ,GAAGE,iBAAiBD,GAAGC,gBAAgBF,GAAGG,UAAUF,GAAGE,OAAO;AAChE,eAAO;;IAEX;AAEA,WAAO;EACT;AAMO,WAASC,OAASC,QAAc;AACrC,QAAIzC,QAAQyC,MAAS,GAAA;AACnB,aAAOA,OAAOC,IAAIF,MAAAA;;AAGpB,QAAIhC,SAASiC,MAAS,GAAA;AACpB,YAAME,SAASxC,uBAAOyC,OAAO,IAAI;AACjC,YAAMd,OAAO3B,OAAO2B,KAAKW,MAAAA;AACzB,YAAMI,OAAOf,KAAKC;AAClB,UAAIe,KAAI;AAER,aAAOA,KAAID,MAAM,EAAEC,IAAG;AACpBH,eAAOb,KAAKgB,EAAAA,CAAE,IAAIN,OAAMC,OAAOX,KAAKgB,EAAAA,CAAE,CAAC;MACzC;AAEA,aAAOH;;AAGT,WAAOF;EACT;AAEA,WAASM,WAAWC,KAAa;AAC/B,WAAO;MAAC;MAAa;MAAa;MAAeC,QAAQD,GAAAA,MAAS;EACpE;AAOO,WAASE,QAAQF,KAAaL,QAAmBF,QAAmBU,SAAoB;AAC7F,QAAI,CAACJ,WAAWC,GAAM,GAAA;AACpB;;AAGF,UAAMI,OAAOT,OAAOK,GAAI;AACxB,UAAMK,OAAOZ,OAAOO,GAAI;AAExB,QAAIxC,SAAS4C,IAAS5C,KAAAA,SAAS6C,IAAO,GAAA;AAEpCC,YAAMF,MAAMC,MAAMF,OAAAA;WACb;AACLR,aAAOK,GAAI,IAAGR,OAAMa,IAAAA;;EAExB;AA0BO,WAASC,MAASX,QAAWF,QAAqBU,SAAmC;AAC1F,UAAMI,UAAUvD,QAAQyC,MAAAA,IAAUA,SAAS;MAACA;IAAO;AACnD,UAAMN,OAAOoB,QAAQxB;AAErB,QAAI,CAACvB,SAASmC,MAAS,GAAA;AACrB,aAAOA;;AAGTQ,cAAUA,WAAW,CAAA;AACrB,UAAMK,SAASL,QAAQK,UAAUN;AACjC,QAAIO;AAEJ,aAAS7B,KAAI,GAAGA,KAAIO,MAAM,EAAEP,IAAG;AAC7B6B,gBAAUF,QAAQ3B,EAAE;AACpB,UAAI,CAACpB,SAASiD,OAAU,GAAA;AACtB;;AAGF,YAAM3B,OAAO3B,OAAO2B,KAAK2B,OAAAA;AACzB,eAASX,KAAI,GAAGD,OAAOf,KAAKC,QAAQe,KAAID,MAAM,EAAEC,IAAG;AACjDU,eAAO1B,KAAKgB,EAAE,GAAEH,QAAQc,SAASN,OAAAA;MACnC;IACF;AAEA,WAAOR;EACT;AAgBO,WAASe,QAAWf,QAAWF,QAAgC;AAEpE,WAAOa,MAASX,QAAQF,QAAQ;MAACe,QAAQG;IAAS,CAAA;EACpD;AAMO,WAASA,UAAUX,KAAaL,QAAmBF,QAAmB;AAC3E,QAAI,CAACM,WAAWC,GAAM,GAAA;AACpB;;AAGF,UAAMI,OAAOT,OAAOK,GAAI;AACxB,UAAMK,OAAOZ,OAAOO,GAAI;AAExB,QAAIxC,SAAS4C,IAAS5C,KAAAA,SAAS6C,IAAO,GAAA;AACpCK,cAAQN,MAAMC,IAAAA;eACL,CAAClD,OAAOC,UAAUwD,eAAetD,KAAKqC,QAAQK,GAAM,GAAA;AAC7DL,aAAOK,GAAI,IAAGR,OAAMa,IAAAA;;EAExB;AAaA,MAAMQ,eAAe;;IAEnB,IAAIC,CAAAA,OAAKA;;IAETC,GAAGC,CAAAA,OAAKA,GAAED;IACVE,GAAGD,CAAAA,OAAKA,GAAEC;EACZ;AAKO,WAASC,UAAUC,KAAa;AACrC,UAAMC,QAAQD,IAAIE,MAAM,GAAA;AACxB,UAAMC,OAAiB,CAAA;AACvB,QAAIC,MAAM;AACV,eAAWC,QAAQJ,OAAO;AACxBG,aAAOC;AACP,UAAID,IAAIE,SAAS,IAAO,GAAA;AACtBF,cAAMA,IAAIG,MAAM,GAAG,EAAM,IAAA;aACpB;AACLJ,aAAKK,KAAKJ,GAAAA;AACVA,cAAM;;IAEV;AACA,WAAOD;EACT;AAEA,WAASM,gBAAgBT,KAAa;AACpC,UAAMG,OAAOJ,UAAUC,GAAAA;AACvB,WAAOU,CAAAA,QAAO;AACZ,iBAAWC,MAAKR,MAAM;AACpB,YAAIQ,OAAM,IAAI;AAGZ;;AAEFD,cAAMA,OAAOA,IAAIC,EAAE;MACrB;AACA,aAAOD;IACT;EACF;AAEO,WAASE,iBAAiBF,KAAgBV,KAAkB;AACjE,UAAMa,WAAWnB,aAAaM,GAAI,MAAKN,aAAaM,GAAAA,IAAOS,gBAAgBT,GAAG;AAC9E,WAAOa,SAASH,GAAAA;EAClB;AAKO,WAASI,YAAYC,KAAa;AACvC,WAAOA,IAAIC,OAAO,CAAA,EAAGC,YAAW,IAAKF,IAAIR,MAAM,CAAA;EACjD;MAGaW,UAAU,CAACC,UAAmB,OAAOA,UAAU;MAE/CC,aAAa,CAACD,UAAqD,OAAOA,UAAU;AAGpFE,MAAAA,YAAY,CAAIC,IAAWC,OAAc;AACpD,QAAID,GAAEE,SAASD,GAAEC,MAAM;AACrB,aAAO;;AAGT,eAAWC,QAAQH,IAAG;AACpB,UAAI,CAACC,GAAEG,IAAID,IAAO,GAAA;AAChB,eAAO;;IAEX;AAEA,WAAO;EACT;AAMO,WAASE,cAAcC,IAAe;AAC3C,WAAOA,GAAEC,SAAS,aAAaD,GAAEC,SAAS,WAAWD,GAAEC,SAAS;EAClE;ACvZO,MAAMC,KAAKC,KAAKD;AAChB,MAAME,MAAM,IAAIF;AAChB,MAAMG,QAAQD,MAAMF;AACdI,MAAAA,WAAWC,OAAOC;AACxB,MAAMC,cAAcP,KAAK;AACzB,MAAMQ,UAAUR,KAAK;AACrB,MAAMS,aAAaT,KAAK;AAClBU,MAAAA,gBAAgBV,KAAK,IAAI;AAEzBW,MAAAA,QAAQV,KAAKU;AACbC,MAAAA,OAAOX,KAAKW;AAElB,WAASC,aAAa/C,IAAWE,IAAW8C,SAAiB;AAClE,WAAOb,KAAKc,IAAIjD,KAAIE,EAAK8C,IAAAA;EAC3B;AAKO,WAASE,QAAQC,OAAe;AACrC,UAAMC,eAAejB,KAAKkB,MAAMF,KAAAA;AAChCA,YAAQJ,aAAaI,OAAOC,cAAcD,QAAQ,GAAA,IAAQC,eAAeD;AACzE,UAAMG,YAAYnB,KAAKoB,IAAI,IAAIpB,KAAKqB,MAAMX,MAAMM,KAAAA,CAAAA,CAAAA;AAChD,UAAMM,WAAWN,QAAQG;AACzB,UAAMI,eAAeD,YAAY,IAAI,IAAIA,YAAY,IAAI,IAAIA,YAAY,IAAI,IAAI;AACjF,WAAOC,eAAeJ;EACxB;AAMO,WAASK,WAAWpC,OAAe;AACxC,UAAMqC,SAAmB,CAAA;AACzB,UAAMC,OAAO1B,KAAK0B,KAAKtC,KAAAA;AACvB,QAAIuC;AAEJ,SAAKA,KAAI,GAAGA,KAAID,MAAMC,MAAK;AACzB,UAAIvC,QAAQuC,OAAM,GAAG;AACnBF,eAAOhD,KAAKkD,EAAAA;AACZF,eAAOhD,KAAKW,QAAQuC,EAAAA;;IAExB;AACA,QAAID,UAAUA,OAAO,IAAI;AACvBD,aAAOhD,KAAKiD,IAAAA;;AAGdD,WAAOG,KAAK,CAACrC,IAAGC,OAAMD,KAAIC,EAAAA,EAAGqC,IAAG;AAChC,WAAOJ;EACT;AAEO,WAASK,SAASC,IAAyB;AAChD,WAAO,CAACC,MAAMC,WAAWF,EAAAA,CAAAA,KAAiBG,SAASH,EAAAA;EACrD;AAEO,WAASI,YAAYtE,IAAWgD,SAAiB;AACtD,UAAMuB,UAAUpC,KAAKkB,MAAMrD,EAAAA;AAC3B,WAAO,UAAYgD,WAAYhD,MAAQuE,UAAUvB,WAAYhD;EAC/D;AAKO,WAASwE,mBACdC,OACAC,QACAC,UACA;AACA,QAAIb,IAAWc,MAAcrD;AAE7B,SAAKuC,KAAI,GAAGc,OAAOH,MAAMI,QAAQf,KAAIc,MAAMd,MAAK;AAC9CvC,cAAQkD,MAAMX,EAAE,EAACa,QAAS;AAC1B,UAAI,CAACR,MAAM5C,KAAQ,GAAA;AACjBmD,eAAOI,MAAM3C,KAAK2C,IAAIJ,OAAOI,KAAKvD,KAAAA;AAClCmD,eAAOK,MAAM5C,KAAK4C,IAAIL,OAAOK,KAAKxD,KAAAA;;IAEtC;EACF;AAEO,WAASyD,UAAUC,SAAiB;AACzC,WAAOA,WAAW/C,KAAK;EACzB;AAEO,WAASgD,UAAUC,SAAiB;AACzC,WAAOA,WAAW,MAAMjD;EAC1B;AASO,WAASkD,eAAepF,IAAW;AACxC,QAAI,CAACqF,eAAerF,EAAI,GAAA;AACtB;;AAEF,QAAIgC,KAAI;AACR,QAAIsD,KAAI;AACR,WAAOnD,KAAKkB,MAAMrD,KAAIgC,EAAAA,IAAKA,OAAMhC,IAAG;AAClCgC,MAAAA,MAAK;AACLsD,MAAAA;IACF;AACA,WAAOA;EACT;AAGO,WAASC,kBACdC,aACAC,YACA;AACA,UAAMC,sBAAsBD,WAAWzF,IAAIwF,YAAYxF;AACvD,UAAM2F,sBAAsBF,WAAWvF,IAAIsF,YAAYtF;AACvD,UAAM0F,2BAA2BzD,KAAK0B,KAAK6B,sBAAsBA,sBAAsBC,sBAAsBA,mBAAAA;AAE7G,QAAIE,QAAQ1D,KAAK2D,MAAMH,qBAAqBD,mBAAAA;AAE5C,QAAIG,QAAS,OAAO3D,IAAK;AACvB2D,eAASzD;;AAGX,WAAO;MACLyD;MACAE,UAAUH;IACZ;EACF;AAEO,WAASI,sBAAsBC,KAAYC,KAAY;AAC5D,WAAO/D,KAAK0B,KAAK1B,KAAKoB,IAAI2C,IAAIlG,IAAIiG,IAAIjG,GAAG,CAAA,IAAKmC,KAAKoB,IAAI2C,IAAIhG,IAAI+F,IAAI/F,GAAG,CAAA,CAAA;EACxE;AAMO,WAASiG,WAAWzE,IAAWC,IAAW;AAC/C,YAAQD,KAAIC,KAAIU,SAASD,MAAMF;EACjC;AAMO,WAASkE,gBAAgB1E,IAAW;AACzC,YAAQA,KAAIU,MAAMA,OAAOA;EAC3B;AAKO,WAASiE,cAAcR,OAAeS,QAAeC,KAAaC,uBAAiC;AACxG,UAAM9E,KAAI0E,gBAAgBP,KAAAA;AAC1B,UAAMY,KAAIL,gBAAgBE,MAAAA;AAC1B,UAAMtE,KAAIoE,gBAAgBG,GAAAA;AAC1B,UAAMG,eAAeN,gBAAgBK,KAAI/E,EAAAA;AACzC,UAAMiF,aAAaP,gBAAgBpE,KAAIN,EAAAA;AACvC,UAAMkF,eAAeR,gBAAgB1E,KAAI+E,EAAAA;AACzC,UAAMI,aAAaT,gBAAgB1E,KAAIM,EAAAA;AACvC,WAAON,OAAM+E,MAAK/E,OAAMM,MAAMwE,yBAAyBC,OAAMzE,MACvD0E,eAAeC,cAAcC,eAAeC;EACpD;AASO,WAASC,YAAYvF,OAAeuD,KAAaC,KAAa;AACnE,WAAO5C,KAAK4C,IAAID,KAAK3C,KAAK2C,IAAIC,KAAKxD,KAAAA,CAAAA;EACrC;AAMO,WAASwF,YAAYxF,OAAe;AACzC,WAAOuF,YAAYvF,OAAO,QAAQ,KAAA;EACpC;AASO,WAASyF,WAAWzF,OAAe+E,QAAeC,KAAavD,UAAU,MAAM;AACpF,WAAOzB,SAASY,KAAK2C,IAAIwB,QAAOC,GAAAA,IAAOvD,WAAWzB,SAASY,KAAK4C,IAAIuB,QAAOC,GAAOvD,IAAAA;EACpF;ACpLO,WAASiE,QACdC,OACA3F,OACA4F,KACA;AACAA,UAAMA,QAAQ,CAACC,WAAUF,MAAME,MAAAA,IAAS7F;AACxC,QAAI8F,MAAKH,MAAMrC,SAAS;AACxB,QAAIyC,KAAK;AACT,QAAIC;AAEJ,WAAOF,MAAKC,KAAK,GAAG;AAClBC,YAAOD,KAAKD,OAAO;AACnB,UAAIF,IAAII,GAAM,GAAA;AACZD,aAAKC;aACA;AACLF,QAAAA,MAAKE;;IAET;AAEA,WAAO;MAACD;MAAID,IAAAA;IAAE;EAChB;AAUO,MAAMG,eAAe,CAC1BN,OACA9G,KACAmB,OACAkG,SAEAR,QAAQC,OAAO3F,OAAOkG,OAClBL,CAAAA,WAAS;AACT,UAAMM,MAAKR,MAAME,MAAAA,EAAOhH,GAAI;AAC5B,WAAOsH,MAAKnG,SAASmG,QAAOnG,SAAS2F,MAAME,SAAQ,CAAA,EAAGhH,GAAAA,MAASmB;MAE/D6F,CAAAA,WAASF,MAAME,MAAAA,EAAOhH,GAAAA,IAAOmB,KAAK;AAS3BoG,MAAAA,gBAAgB,CAC3BT,OACA9G,KACAmB,UAEA0F,QAAQC,OAAO3F,OAAO6F,CAAAA,WAASF,MAAME,MAAAA,EAAOhH,GAAAA,KAAQmB,KAAO;AAStD,WAASqG,eAAeC,QAAkB/C,KAAaC,KAAa;AACzE,QAAIuB,SAAQ;AACZ,QAAIC,MAAMsB,OAAOhD;AAEjB,WAAOyB,SAAQC,OAAOsB,OAAOvB,MAAAA,IAASxB,KAAK;AACzCwB,MAAAA;IACF;AACA,WAAOC,MAAMD,UAASuB,OAAOtB,MAAM,CAAA,IAAKxB,KAAK;AAC3CwB;IACF;AAEA,WAAOD,SAAQ,KAAKC,MAAMsB,OAAOhD,SAC7BgD,OAAOlH,MAAM2F,QAAOC,GAAAA,IACpBsB;EACN;AAEA,MAAMC,cAAc;IAAC;IAAQ;IAAO;IAAS;IAAU;EAAU;AAgB1D,WAASC,kBAAkBtD,OAAOuD,UAAU;AACjD,QAAIvD,MAAMwD,UAAU;AAClBxD,YAAMwD,SAASC,UAAUtH,KAAKoH,QAAAA;AAC9B;;AAGFG,WAAOC,eAAe3D,OAAO,YAAY;MACvC4D,cAAc;MACdC,YAAY;MACZ/G,OAAO;QACL2G,WAAW;UAACF;QAAS;MACvB;IACF,CAAA;AAEAF,gBAAYS,QAAQ,CAACnI,QAAQ;AAC3B,YAAMoI,SAAS,YAAYtH,YAAYd,GAAAA;AACvC,YAAMqI,OAAOhE,MAAMrE,GAAI;AAEvB+H,aAAOC,eAAe3D,OAAOrE,KAAK;QAChCiI,cAAc;QACdC,YAAY;QACZ/G,SAASmH,MAAM;AACb,gBAAMC,MAAMF,KAAKG,MAAM,MAAMF,IAAAA;AAE7BjE,gBAAMwD,SAASC,UAAUK,QAAQ,CAACM,WAAW;AAC3C,gBAAI,OAAOA,OAAOL,MAAAA,MAAY,YAAY;AACxCK,qBAAOL,MAAAA,EAAWE,GAAAA,IAAAA;;UAEtB,CAAA;AAEA,iBAAOC;QACT;MACF,CAAA;IACF,CAAA;EACF;AAQO,WAASG,oBAAoBrE,OAAOuD,UAAU;AACnD,UAAMe,OAAOtE,MAAMwD;AACnB,QAAI,CAACc,MAAM;AACT;;AAGF,UAAMb,YAAYa,KAAKb;AACvB,UAAMd,SAAQc,UAAUc,QAAQhB,QAAAA;AAChC,QAAIZ,WAAU,IAAI;AAChBc,gBAAUe,OAAO7B,QAAO,CAAA;;AAG1B,QAAIc,UAAUrD,SAAS,GAAG;AACxB;;AAGFiD,gBAAYS,QAAQ,CAACnI,QAAQ;AAC3B,aAAOqE,MAAMrE,GAAI;IACnB,CAAA;AAEA,WAAOqE,MAAMwD;EACf;AAKO,WAASiB,aAAgBC,OAAY;AAC1C,UAAMC,OAAM,IAAIC,IAAOF,KAAAA;AAEvB,QAAIC,KAAIxH,SAASuH,MAAMtE,QAAQ;AAC7B,aAAOsE;;AAGT,WAAOG,MAAMC,KAAKH,IAAAA;EACpB;ACnLaI,MAAAA,mBAAoB,WAAW;AAC1C,QAAI,OAAOC,WAAW,aAAa;AACjC,aAAO,SAASC,WAAU;AACxB,eAAOA,UAAAA;MACT;;AAEF,WAAOD,OAAOE;EAChB,EAAK;AAME,WAASC,UACdC,KACAC,SACA;AACA,QAAIC,YAAY,CAAA;AAChB,QAAIC,UAAU;AAEd,WAAO,YAAYC,MAAa;AAE9BF,kBAAYE;AACZ,UAAI,CAACD,SAAS;AACZA,kBAAU;AACVR,yBAAiBU,KAAKT,QAAQ,MAAM;AAClCO,oBAAU;AACVH,UAAAA,IAAGM,MAAML,SAASC,SAAAA;QACpB,CAAA;;IAEJ;EACF;AAKO,WAASK,SAAmCP,KAA8BQ,OAAe;AAC9F,QAAIC;AACJ,WAAO,YAAYL,MAAa;AAC9B,UAAII,OAAO;AACTE,qBAAaD,OAAAA;AACbA,kBAAUE,WAAWX,KAAIQ,OAAOJ,IAAAA;aAC3B;AACLJ,QAAAA,IAAGM,MAAM,MAAMF,IAAAA;;AAEjB,aAAOI;IACT;EACF;AAMO,MAAMI,qBAAqB,CAACC,UAAsCA,UAAU,UAAU,SAASA,UAAU,QAAQ,UAAU;AAMrHC,MAAAA,iBAAiB,CAACD,OAAmCE,QAAeC,QAAgBH,UAAU,UAAUE,SAAQF,UAAU,QAAQG,OAAOD,SAAQC,OAAO;AAMxJC,MAAAA,SAAS,CAACJ,OAAoCK,MAAcC,OAAeC,QAAiB;AACvG,UAAMC,QAAQD,MAAM,SAAS;AAC7B,WAAOP,UAAUQ,QAAQF,QAAQN,UAAU,YAAYK,OAAOC,SAAS,IAAID;EAC7E;AAMO,WAASI,iCAAiCC,MAAqCC,QAAwBC,oBAA6B;AACzI,UAAMC,aAAaF,OAAOG;AAE1B,QAAIZ,SAAQ;AACZ,QAAIa,QAAQF;AAEZ,QAAIH,KAAKM,SAAS;AAChB,YAAM,EAACC,QAAQC,QAAAA,IAAWR;AAC1B,YAAMS,OAAOF,OAAOE;AACpB,YAAM,EAACC,KAAKC,KAAKC,YAAYC,WAAU,IAAIN,OAAOO,cAAa;AAE/D,UAAIF,YAAY;AACdpB,QAAAA,SAAQuB,YAAYC,KAAKN;;UAEvBO,aAAaT,SAASC,MAAMC,GAAKQ,EAAAA;;UAEjChB,qBAAqBC,aAAac,aAAahB,QAAQQ,MAAMF,OAAOY,iBAAiBT,GAAMQ,CAAAA,EAAAA;QAAE,GAC/F,GAAGf,aAAa,CAAA;;AAElB,UAAIU,YAAY;AACdR,gBAAQU,YAAYC,KAAKL;;UAEvBM,aAAaT,SAASD,OAAOE,MAAME,KAAK,IAAI,EAAES,KAAK;;UAEnDlB,qBAAqB,IAAIe,aAAahB,QAAQQ,MAAMF,OAAOY,iBAAiBR,GAAM,GAAA,IAAI,EAAES,KAAK;QAAC,GAChG5B,QAAOW,UAAcX,IAAAA;aAChB;AACLa,gBAAQF,aAAaX;;;AAIzB,WAAO;MAACA,OAAAA;MAAOa;IAAK;EACtB;AAQO,WAASgB,oBAAoBrB,MAAM;AACxC,UAAM,EAACsB,QAAQC,QAAQC,aAAAA,IAAgBxB;AACvC,UAAMyB,YAAY;MAChBC,MAAMJ,OAAOZ;MACbiB,MAAML,OAAOX;MACbiB,MAAML,OAAOb;MACbmB,MAAMN,OAAOZ;IACf;AACA,QAAI,CAACa,cAAc;AACjBxB,WAAKwB,eAAeC;AACpB,aAAO;;AAET,UAAMK,UAAUN,aAAaE,SAASJ,OAAOZ,OAC1Cc,aAAaG,SAASL,OAAOX,OAC7Ba,aAAaI,SAASL,OAAOb,OAC7Bc,aAAaK,SAASN,OAAOZ;AAEhCoB,WAAOC,OAAOR,cAAcC,SAAAA;AAC5B,WAAOK;EACT;AC/IA,MAAMG,SAAS,CAACC,OAAcA,OAAM,KAAKA,OAAM;AAC/C,MAAMC,YAAY,CAACD,IAAWE,IAAWC,OAAc,EAAErB,KAAKsB,IAAI,GAAG,MAAMJ,MAAK,EAAMlB,IAAAA,KAAKuB,KAAKL,KAAIE,MAAKI,MAAMH,EAAC;AAChH,MAAMI,aAAa,CAACP,IAAWE,IAAWC,OAAcrB,KAAKsB,IAAI,GAAG,MAAMJ,EAAKlB,IAAAA,KAAKuB,KAAKL,KAAIE,MAAKI,MAAMH,EAAK,IAAA;AAM5G,MACKK,UAAU;IACdC,QAAQ,CAACT,OAAcA;IAEvBU,YAAY,CAACV,OAAcA,KAAIA;IAE/BW,aAAa,CAACX,OAAc,CAACA,MAAKA,KAAI;IAEtCY,eAAe,CAACZ,QAAgBA,MAAK,OAAO,IACxC,MAAMA,KAAIA,KACV,QAAS,EAAEA,MAAMA,KAAI,KAAK;IAE9Ba,aAAa,CAACb,OAAcA,KAAIA,KAAIA;IAEpCc,cAAc,CAACd,QAAeA,MAAK,KAAKA,KAAIA,KAAI;IAEhDe,gBAAgB,CAACf,QAAgBA,MAAK,OAAO,IACzC,MAAMA,KAAIA,KAAIA,KACd,QAAQA,MAAK,KAAKA,KAAIA,KAAI;IAE9BgB,aAAa,CAAChB,OAAcA,KAAIA,KAAIA,KAAIA;IAExCiB,cAAc,CAACjB,OAAc,GAAGA,MAAK,KAAKA,KAAIA,KAAIA,KAAI;IAEtDkB,gBAAgB,CAAClB,QAAgBA,MAAK,OAAO,IACzC,MAAMA,KAAIA,KAAIA,KAAIA,KAClB,SAASA,MAAK,KAAKA,KAAIA,KAAIA,KAAI;IAEnCmB,aAAa,CAACnB,OAAcA,KAAIA,KAAIA,KAAIA,KAAIA;IAE5CoB,cAAc,CAACpB,QAAeA,MAAK,KAAKA,KAAIA,KAAIA,KAAIA,KAAI;IAExDqB,gBAAgB,CAACrB,QAAgBA,MAAK,OAAO,IACzC,MAAMA,KAAIA,KAAIA,KAAIA,KAAIA,KACtB,QAAQA,MAAK,KAAKA,KAAIA,KAAIA,KAAIA,KAAI;IAEtCsB,YAAY,CAACtB,OAAc,CAAClB,KAAKyC,IAAIvB,KAAIwB,OAAW,IAAA;IAEpDC,aAAa,CAACzB,OAAclB,KAAKuB,IAAIL,KAAIwB,OAAAA;IAEzCE,eAAe,CAAC1B,OAAc,QAAQlB,KAAKyC,IAAII,KAAK3B,EAAAA,IAAK;IAEzD4B,YAAY,CAAC5B,OAAcA,OAAO,IAAK,IAAIlB,KAAKsB,IAAI,GAAG,MAAMJ,KAAI,EAAG;IAEpE6B,aAAa,CAAC7B,OAAcA,OAAO,IAAK,IAAI,CAAClB,KAAKsB,IAAI,GAAG,MAAMJ,EAAAA,IAAK;IAEpE8B,eAAe,CAAC9B,OAAcD,OAAOC,EAAAA,IAAKA,KAAIA,KAAI,MAC9C,MAAMlB,KAAKsB,IAAI,GAAG,MAAMJ,KAAI,IAAI,EAAA,IAChC,OAAO,CAAClB,KAAKsB,IAAI,GAAG,OAAOJ,KAAI,IAAI,EAAA,IAAM;IAE7C+B,YAAY,CAAC/B,OAAcA,MAAM,IAAKA,KAAI,EAAElB,KAAKkD,KAAK,IAAIhC,KAAIA,EAAAA,IAAK;IAEnEiC,aAAa,CAACjC,OAAclB,KAAKkD,KAAK,KAAKhC,MAAK,KAAKA,EAAAA;IAErDkC,eAAe,CAAClC,QAAgBA,MAAK,OAAO,IACxC,QAAQlB,KAAKkD,KAAK,IAAIhC,KAAIA,EAAAA,IAAK,KAC/B,OAAOlB,KAAKkD,KAAK,KAAKhC,MAAK,KAAKA,EAAAA,IAAK;IAEzCmC,eAAe,CAACnC,OAAcD,OAAOC,EAAAA,IAAKA,KAAIC,UAAUD,IAAG,OAAO,GAAI;IAEtEoC,gBAAgB,CAACpC,OAAcD,OAAOC,EAAAA,IAAKA,KAAIO,WAAWP,IAAG,OAAO,GAAI;IAExEqC,iBAAiBrC,IAAW;AAC1B,YAAME,KAAI;AACV,YAAMC,KAAI;AACV,aAAOJ,OAAOC,EAAKA,IAAAA,KACjBA,KAAI,MACA,MAAMC,UAAUD,KAAI,GAAGE,IAAGC,EAAAA,IAC1B,MAAM,MAAMI,WAAWP,KAAI,IAAI,GAAGE,IAAGC,EAAE;IAC/C;IAEAmC,WAAWtC,IAAW;AACpB,YAAME,KAAI;AACV,aAAOF,KAAIA,OAAME,KAAI,KAAKF,KAAIE;IAChC;IAEAqC,YAAYvC,IAAW;AACrB,YAAME,KAAI;AACV,cAAQF,MAAK,KAAKA,OAAME,KAAI,KAAKF,KAAIE,MAAK;IAC5C;IAEAsC,cAAcxC,IAAW;AACvB,UAAIE,KAAI;AACR,WAAKF,MAAK,OAAO,GAAG;AAClB,eAAO,OAAOA,KAAIA,QAAOE,MAAM,SAAU,KAAKF,KAAIE;;AAEpD,aAAO,QAAQF,MAAK,KAAKA,QAAOE,MAAM,SAAU,KAAKF,KAAIE,MAAK;IAChE;IAEAuC,cAAc,CAACzC,OAAc,IAAIQ,QAAQkC,cAAc,IAAI1C,EAAAA;IAE3D0C,cAAc1C,IAAW;AACvB,YAAM2C,KAAI;AACV,YAAMC,KAAI;AACV,UAAI5C,KAAK,IAAI4C,IAAI;AACf,eAAOD,KAAI3C,KAAIA;;AAEjB,UAAIA,KAAK,IAAI4C,IAAI;AACf,eAAOD,MAAK3C,MAAM,MAAM4C,MAAM5C,KAAI;;AAEpC,UAAIA,KAAK,MAAM4C,IAAI;AACjB,eAAOD,MAAK3C,MAAM,OAAO4C,MAAM5C,KAAI;;AAErC,aAAO2C,MAAK3C,MAAM,QAAQ4C,MAAM5C,KAAI;IACtC;IAEA6C,iBAAiB,CAAC7C,OAAeA,KAAI,MACjCQ,QAAQiC,aAAazC,KAAI,CAAK,IAAA,MAC9BQ,QAAQkC,cAAc1C,KAAI,IAAI,CAAA,IAAK,MAAM;EAC/C;ACrHO,WAAS8C,oBAAoBC,OAAyD;AAC3F,QAAIA,SAAS,OAAOA,UAAU,UAAU;AACtC,YAAMC,OAAOD,MAAME,SAAQ;AAC3B,aAAOD,SAAS,4BAA4BA,SAAS;;AAGvD,WAAO;EACT;AAWO,WAASE,MAAMH,OAAO;AAC3B,WAAOD,oBAAoBC,KAAAA,IAASA,QAAQ,IAAII,MAAMJ,KAAM;EAC9D;AAKO,WAASK,cAAcL,OAAO;AACnC,WAAOD,oBAAoBC,KAAAA,IACvBA,QACA,IAAII,MAAMJ,KAAAA,EAAOM,SAAS,GAAKC,EAAAA,OAAO,GAAA,EAAKC,UAAS;EAC1D;AC/BA,MAAMC,UAAU;IAAC;IAAK;IAAK;IAAe;IAAU;EAAU;AAC9D,MAAMC,SAAS;IAAC;IAAS;IAAe;EAAkB;AAEnD,WAASC,wBAAwBC,WAAU;AAChDA,IAAAA,UAASC,IAAI,aAAa;MACxB7G,OAAO8G;MACPC,UAAU;MACVC,QAAQ;MACRxH,IAAIsH;MACJG,MAAMH;MACNI,MAAMJ;MACNK,IAAIL;MACJb,MAAMa;IACR,CAAA;AAEAF,IAAAA,UAASQ,SAAS,aAAa;MAC7BC,WAAW;MACXC,YAAY;MACZC,aAAa,CAACC,SAASA,SAAS,gBAAgBA,SAAS,gBAAgBA,SAAS;IACpF,CAAA;AAEAZ,IAAAA,UAASC,IAAI,cAAc;MACzBH,QAAQ;QACNT,MAAM;QACNwB,YAAYf;MACd;MACAD,SAAS;QACPR,MAAM;QACNwB,YAAYhB;MACd;IACF,CAAA;AAEAG,IAAAA,UAASQ,SAAS,cAAc;MAC9BC,WAAW;IACb,CAAA;AAEAT,IAAAA,UAASC,IAAI,eAAe;MAC1Ba,QAAQ;QACNC,WAAW;UACTZ,UAAU;QACZ;MACF;MACAa,QAAQ;QACND,WAAW;UACTZ,UAAU;QACZ;MACF;MACAc,MAAM;QACJC,YAAY;UACVpB,QAAQ;YACNO,MAAM;UACR;UACAc,SAAS;YACP9B,MAAM;YACNc,UAAU;UACZ;QACF;MACF;MACAiB,MAAM;QACJF,YAAY;UACVpB,QAAQ;YACNS,IAAI;UACN;UACAY,SAAS;YACP9B,MAAM;YACNe,QAAQ;YACRxH,IAAIyI,CAAAA,OAAKA,KAAI;UACf;QACF;MACF;IACF,CAAA;EACF;ACvEO,WAASC,qBAAqBtB,WAAU;AAC7CA,IAAAA,UAASC,IAAI,UAAU;MACrBsB,aAAa;MACbC,SAAS;QACPC,KAAK;QACL1H,OAAO;QACP2H,QAAQ;QACR5H,MAAM;MACR;IACF,CAAA;EACF;ACTA,MAAM6H,YAAY,oBAAIC,IAAAA;AAEtB,WAASC,gBAAgBC,QAAgBC,SAAoC;AAC3EA,cAAUA,WAAW,CAAA;AACrB,UAAMC,WAAWF,SAASG,KAAKC,UAAUH,OAAAA;AACzC,QAAII,YAAYR,UAAUS,IAAIJ,QAAAA;AAC9B,QAAI,CAACG,WAAW;AACdA,kBAAY,IAAIE,KAAKC,aAAaR,QAAQC,OAAAA;AAC1CJ,gBAAU1B,IAAI+B,UAAUG,SAAAA;;AAE1B,WAAOA;EACT;AAEO,WAASI,aAAaC,KAAaV,QAAgBC,SAAoC;AAC5F,WAAOF,gBAAgBC,QAAQC,OAASU,EAAAA,OAAOD,GAAAA;EACjD;ACRA,MAAME,aAAa;IAOjBC,OAAOvD,OAAO;AACZ,aAAOwD,QAAQxD,KAAS,IAAyBA,QAAS,KAAKA;IACjE;IAUAyD,QAAQC,WAAWC,QAAOC,OAAO;AAC/B,UAAIF,cAAc,GAAG;AACnB,eAAO;;AAGT,YAAMhB,SAAS,KAAKmB,MAAMlB,QAAQD;AAClC,UAAIoB;AACJ,UAAIC,QAAQL;AAEZ,UAAIE,MAAMzI,SAAS,GAAG;AAEpB,cAAM6I,UAAUjI,KAAKL,IAAIK,KAAKkI,IAAIL,MAAM,CAAE,EAAC5D,KAAK,GAAGjE,KAAKkI,IAAIL,MAAMA,MAAMzI,SAAS,CAAE,EAAC6E,KAAK,CAAA;AACzF,YAAIgE,UAAU,QAAQA,UAAU,MAAO;AACrCF,qBAAW;;AAGbC,gBAAQG,eAAeR,WAAWE,KAAAA;;AAGpC,YAAMO,WAAWC,MAAMrI,KAAKkI,IAAIF,KAAAA,CAAAA;AAOhC,YAAMM,aAAaC,MAAMH,QAAAA,IAAY,IAAIpI,KAAKL,IAAIK,KAAKN,IAAI,KAAKM,KAAKwI,MAAMJ,QAAAA,GAAW,EAAA,GAAK,CAAE;AAE7F,YAAMxB,UAAU;QAACmB;QAAUU,uBAAuBH;QAAYI,uBAAuBJ;MAAU;AAC/FvH,aAAOC,OAAO4F,SAAS,KAAKA,QAAQiB,MAAMP,MAAM;AAEhD,aAAOF,aAAaO,WAAWhB,QAAQC,OAAAA;IACzC;IAWA+B,YAAYhB,WAAWC,QAAOC,OAAO;AACnC,UAAIF,cAAc,GAAG;AACnB,eAAO;;AAET,YAAMiB,SAASf,MAAMD,MAAAA,EAAOiB,eAAgBlB,YAAa3H,KAAKsB,IAAI,IAAItB,KAAKwI,MAAMH,MAAMV,SAAAA,CAAAA,CAAAA;AACvF,UAAI;QAAC;QAAG;QAAG;QAAG;QAAG;QAAI;MAAG,EAACmB,SAASF,MAAAA,KAAWhB,SAAQ,MAAMC,MAAMzI,QAAQ;AACvE,eAAOmI,WAAWG,QAAQ5J,KAAK,MAAM6J,WAAWC,QAAOC,KAAAA;;AAEzD,aAAO;IACT;EAEF;AAGA,WAASM,eAAeR,WAAWE,OAAO;AAGxC,QAAIG,QAAQH,MAAMzI,SAAS,IAAIyI,MAAM,CAAE,EAAC5D,QAAQ4D,MAAM,CAAE,EAAC5D,QAAQ4D,MAAM,CAAE,EAAC5D,QAAQ4D,MAAM,CAAE,EAAC5D;AAG3F,QAAIjE,KAAKkI,IAAIF,KAAAA,KAAU,KAAKL,cAAc3H,KAAKwI,MAAMb,SAAY,GAAA;AAE/DK,cAAQL,YAAY3H,KAAKwI,MAAMb,SAAAA;;AAEjC,WAAOK;EACT;AAMA,MAAA,QAAe;IAACT;EAAU;ACnGnB,WAASwB,mBAAmBlE,WAAU;AAC3CA,IAAAA,UAASC,IAAI,SAAS;MACpBkE,SAAS;MACTC,QAAQ;MACRC,SAAS;MACTC,aAAa;MASbC,QAAQ;MAERC,MAAM;MAMNC,OAAO;MAGPC,MAAM;QACJP,SAAS;QACTQ,WAAW;QACXC,iBAAiB;QACjBC,WAAW;QACXC,YAAY;QACZC,WAAW,CAACC,MAAMjD,YAAYA,QAAQ4C;QACtCM,WAAW,CAACD,MAAMjD,YAAYA,QAAQxC;QACtC6E,QAAQ;MACV;MAEAc,QAAQ;QACNf,SAAS;QACTgB,MAAM,CAAA;QACNC,YAAY;QACZC,OAAO;MACT;MAGAC,OAAO;QAELnB,SAAS;QAGToB,MAAM;QAGN/D,SAAS;UACPC,KAAK;UACLC,QAAQ;QACV;MACF;MAGAsB,OAAO;QACLwC,aAAa;QACbC,aAAa;QACbC,QAAQ;QACRC,iBAAiB;QACjBC,iBAAiB;QACjBpE,SAAS;QACT2C,SAAS;QACT0B,UAAU;QACVC,iBAAiB;QACjBC,aAAa;QAEbtN,UAAUuN,MAAMtD,WAAWC;QAC3BsD,OAAO,CAAA;QACPC,OAAO,CAAA;QACPzM,OAAO;QACP0M,YAAY;QAEZC,mBAAmB;QACnBC,eAAe;QACfC,iBAAiB;MACnB;IACF,CAAA;AAEAtG,IAAAA,UAASuG,MAAM,eAAe,SAAS,IAAI,OAAA;AAC3CvG,IAAAA,UAASuG,MAAM,cAAc,SAAS,IAAI,aAAA;AAC1CvG,IAAAA,UAASuG,MAAM,gBAAgB,SAAS,IAAI,aAAA;AAC5CvG,IAAAA,UAASuG,MAAM,eAAe,SAAS,IAAI,OAAA;AAE3CvG,IAAAA,UAASQ,SAAS,SAAS;MACzBC,WAAW;MACXE,aAAa,CAACC,SAAS,CAACA,KAAK4F,WAAW,QAAA,KAAa,CAAC5F,KAAK4F,WAAW,OAAY5F,KAAAA,SAAS,cAAcA,SAAS;MAClHF,YAAY,CAACE,SAASA,SAAS,gBAAgBA,SAAS,oBAAoBA,SAAS;IACvF,CAAA;AAEAZ,IAAAA,UAASQ,SAAS,UAAU;MAC1BC,WAAW;IACb,CAAA;AAEAT,IAAAA,UAASQ,SAAS,eAAe;MAC/BG,aAAa,CAACC,SAASA,SAAS,qBAAqBA,SAAS;MAC9DF,YAAY,CAACE,SAASA,SAAS;IACjC,CAAA;EACF;MClGa6F,YAAYvK,uBAAOwK,OAAO,IAAI;MAC9BC,cAAczK,uBAAOwK,OAAO,IAAI;AAO7C,WAASE,WAASC,MAAMC,KAAK;AAC3B,QAAI,CAACA,KAAK;AACR,aAAOD;;AAET,UAAME,OAAOD,IAAIE,MAAM,GAAA;AACvB,aAASC,KAAI,GAAGC,KAAIH,KAAKxM,QAAQ0M,KAAIC,IAAG,EAAED,IAAG;AAC3C,YAAME,KAAIJ,KAAKE,EAAE;AACjBJ,aAAOA,KAAKM,EAAE,MAAKN,KAAKM,EAAAA,IAAKjL,uBAAOwK,OAAO,IAAI;IACjD;AACA,WAAOG;EACT;AAEA,WAAS5G,IAAImH,MAAMC,OAAO1E,QAAQ;AAChC,QAAI,OAAO0E,UAAU,UAAU;AAC7B,aAAOC,MAAMV,WAASQ,MAAMC,KAAQ1E,GAAAA,MAAAA;;AAEtC,WAAO2E,MAAMV,WAASQ,MAAM,EAAKC,GAAAA,KAAAA;EACnC;AAMO,MAAME,WAAN,MAAMA;IACXC,YAAYC,eAAcC,WAAW;AACnC,WAAK3G,YAAYb;AACjB,WAAKyH,kBAAkB;AACvB,WAAKC,cAAc;AACnB,WAAKrI,QAAQ;AACb,WAAKsI,WAAW,CAAA;AAChB,WAAKC,mBAAmB,CAACC,YAAYA,QAAQ9E,MAAM+E,SAASC,oBAAmB;AAC/E,WAAKC,WAAW,CAAA;AAChB,WAAKC,SAAS;QACZ;QACA;QACA;QACA;QACA;MACD;AACD,WAAKC,OAAO;QACVC,QAAQ;QACRC,MAAM;QACNC,OAAO;QACPC,YAAY;QACZC,QAAQ;MACV;AACA,WAAKC,QAAQ,CAAA;AACb,WAAKC,uBAAuB,CAACC,KAAK7G,YAAYtC,cAAcsC,QAAQ4F,eAAe;AACnF,WAAKkB,mBAAmB,CAACD,KAAK7G,YAAYtC,cAAcsC,QAAQ6F,WAAW;AAC3E,WAAKkB,aAAa,CAACF,KAAK7G,YAAYtC,cAAcsC,QAAQxC,KAAK;AAC/D,WAAKwJ,YAAY;AACjB,WAAKC,cAAc;QACjBC,MAAM;QACNC,WAAW;QACXC,kBAAkB;MACpB;AACA,WAAKC,sBAAsB;AAC3B,WAAKC,UAAU;AACf,WAAKC,UAAU;AACf,WAAKC,UAAU;AACf,WAAKC,UAAU,CAAA;AACf,WAAKC,aAAa;AAClB,WAAKC,QAAQxJ;AACb,WAAKyJ,SAAS,CAAA;AACd,WAAKC,WAAW;AAChB,WAAKC,0BAA0B;AAE/B,WAAKrJ,SAASiH,aAAAA;AACd,WAAKvO,MAAMwO,SAAAA;IACb;IAMAzH,IAAIoH,OAAO1E,QAAQ;AACjB,aAAO1C,IAAI,MAAMoH,OAAO1E,MAAAA;IAC1B;IAKAP,IAAIiF,OAAO;AACT,aAAOT,WAAS,MAAMS,KAAAA;IACxB;IAMA7G,SAAS6G,OAAO1E,QAAQ;AACtB,aAAO1C,IAAI0G,aAAaU,OAAO1E,MAAAA;IACjC;IAEAmH,SAASzC,OAAO1E,QAAQ;AACtB,aAAO1C,IAAIwG,WAAWY,OAAO1E,MAAAA;IAC/B;IAmBA4D,MAAMc,OAAOzG,MAAMmJ,aAAaC,YAAY;AAC1C,YAAMC,cAAcrD,WAAS,MAAMS,KAAAA;AACnC,YAAM6C,oBAAoBtD,WAAS,MAAMmD,WAAAA;AACzC,YAAMI,cAAc,MAAMvJ;AAE1B1E,aAAOkO,iBAAiBH,aAAa;QAEnC,CAACE,WAAAA,GAAc;UACb/K,OAAO6K,YAAYrJ,IAAK;UACxByJ,UAAU;QACZ;QAEA,CAACzJ,IAAAA,GAAO;UACN0J,YAAY;UACZlI,MAAM;AACJ,kBAAMmI,QAAQ,KAAKJ,WAAY;AAC/B,kBAAMK,SAASN,kBAAkBF,UAAW;AAC5C,gBAAIS,SAASF,KAAQ,GAAA;AACnB,qBAAOrO,OAAOC,OAAO,CAAA,GAAIqO,QAAQD,KAAAA;;AAEnC,mBAAOG,eAAeH,OAAOC,MAAAA;UAC/B;UACAvK,IAAIb,OAAO;AACT,iBAAK+K,WAAAA,IAAe/K;UACtB;QACF;MACF,CAAA;IACF;IAEAlG,MAAMyR,UAAU;AACdA,eAASC,QAAQ,CAAC1R,UAAUA,MAAM,IAAI,CAAA;IACxC;EACF;AAGA,MAAA,WAA+B,oBAAIqO,SAAS;IAC1C5G,aAAa,CAACC,SAAS,CAACA,KAAK4F,WAAW,IAAA;IACxC9F,YAAY,CAACE,SAASA,SAAS;IAC/B8H,OAAO;MACLjI,WAAW;IACb;IACAuI,aAAa;MACXrI,aAAa;MACbD,YAAY;IACd;EACF,GAAG;IAACX;IAAyBuB;IAAsB4C;GAAmB;ACtJ/D,WAAS2G,aAAazC,MAAgB;AAC3C,QAAI,CAACA,QAAQ0C,cAAc1C,KAAKE,IAAI,KAAKwC,cAAc1C,KAAKC,MAAM,GAAG;AACnE,aAAO;;AAGT,YAAQD,KAAKG,QAAQH,KAAKG,QAAQ,MAAM,OACrCH,KAAKK,SAASL,KAAKK,SAAS,MAAM,MACnCL,KAAKE,OAAO,QACZF,KAAKC;EACT;AAKO,WAAS0C,aACdnC,KACAoC,MACAC,IACAC,SACAC,QACA;AACA,QAAIC,YAAYJ,KAAKG,MAAO;AAC5B,QAAI,CAACC,WAAW;AACdA,kBAAYJ,KAAKG,MAAO,IAAGvC,IAAIyC,YAAYF,MAAAA,EAAQ9F;AACnD4F,SAAGK,KAAKH,MAAAA;;AAEV,QAAIC,YAAYF,SAAS;AACvBA,gBAAUE;;AAEZ,WAAOF;EACT;AASO,WAASK,aACd3C,KACAR,MACAoD,eACAC,QACA;AACAA,IAAAA,SAAQA,UAAS,CAAA;AACjB,QAAIT,OAAOS,OAAMT,OAAOS,OAAMT,QAAQ,CAAA;AACtC,QAAIC,KAAKQ,OAAMC,iBAAiBD,OAAMC,kBAAkB,CAAA;AAExD,QAAID,OAAMrD,SAASA,MAAM;AACvB4C,aAAOS,OAAMT,OAAO,CAAA;AACpBC,WAAKQ,OAAMC,iBAAiB,CAAA;AAC5BD,MAAAA,OAAMrD,OAAOA;;AAGfQ,QAAI+C,KAAI;AAER/C,QAAIR,OAAOA;AACX,QAAI8C,UAAU;AACd,UAAMU,OAAOJ,cAAcjR;AAC3B,QAAI0M,IAAW4E,IAAWC,MAAcC,OAAwBC;AAChE,SAAK/E,KAAI,GAAGA,KAAI2E,MAAM3E,MAAK;AACzB8E,cAAQP,cAAcvE,EAAE;AAGxB,UAAI8E,UAAU7L,UAAa6L,UAAU,QAAQ,CAACnJ,QAAQmJ,KAAQ,GAAA;AAC5Db,kBAAUH,aAAanC,KAAKoC,MAAMC,IAAIC,SAASa,KAAAA;iBACtCnJ,QAAQmJ,KAAQ,GAAA;AAGzB,aAAKF,KAAI,GAAGC,OAAOC,MAAMxR,QAAQsR,KAAIC,MAAMD,MAAK;AAC9CG,wBAAcD,MAAMF,EAAE;AAEtB,cAAIG,gBAAgB9L,UAAa8L,gBAAgB,QAAQ,CAACpJ,QAAQoJ,WAAc,GAAA;AAC9Ed,sBAAUH,aAAanC,KAAKoC,MAAMC,IAAIC,SAASc,WAAAA;;QAEnD;;IAEJ;AAEApD,QAAIqD,QAAO;AAEX,UAAMC,QAAQjB,GAAG1Q,SAAS;AAC1B,QAAI2R,QAAQV,cAAcjR,QAAQ;AAChC,WAAK0M,KAAI,GAAGA,KAAIiF,OAAOjF,MAAK;AAC1B,eAAO+D,KAAKC,GAAGhE,EAAAA,CAAE;MACnB;AACAgE,SAAGkB,OAAO,GAAGD,KAAAA;;AAEf,WAAOhB;EACT;AAUO,WAASkB,YAAYnJ,OAAcoJ,OAAehH,OAAe;AACtE,UAAMyC,mBAAmB7E,MAAMqJ;AAC/B,UAAMC,YAAYlH,UAAU,IAAIlK,KAAKL,IAAIuK,QAAQ,GAAG,GAAA,IAAO;AAC3D,WAAOlK,KAAKqR,OAAOH,QAAQE,aAAazE,gBAAAA,IAAoBA,mBAAmByE;EACjF;AAKO,WAASE,YAAYC,QAA2B9D,KAAgC;AACrFA,UAAMA,OAAO8D,OAAOC,WAAW,IAAA;AAE/B/D,QAAI+C,KAAI;AAGR/C,QAAIgE,eAAc;AAClBhE,QAAIiE,UAAU,GAAG,GAAGH,OAAOrH,OAAOqH,OAAOI,MAAM;AAC/ClE,QAAIqD,QAAO;EACb;AASO,WAASc,UACdnE,KACA7G,SACAiL,IACAC,IACA;AAEAC,oBAAgBtE,KAAK7G,SAASiL,IAAGC,IAAG,IAAI;EAC1C;AAGO,WAASC,gBACdtE,KACA7G,SACAiL,IACAC,IACAE,IACA;AACA,QAAI9N,MAAc+N,SAAiBC,SAAiB/E,MAAcgF,cAAsBjI,OAAekI,UAAkBC;AACzH,UAAMjF,QAAQxG,QAAQ0L;AACtB,UAAMC,WAAW3L,QAAQ2L;AACzB,UAAMC,SAAS5L,QAAQ4L;AACvB,QAAIC,OAAOF,YAAY,KAAKG;AAE5B,QAAItF,SAAS,OAAOA,UAAU,UAAU;AACtClJ,aAAOkJ,MAAMjJ,SAAQ;AACrB,UAAID,SAAS,+BAA+BA,SAAS,8BAA8B;AACjFuJ,YAAI+C,KAAI;AACR/C,YAAIkF,UAAUd,IAAGC,EAAAA;AACjBrE,YAAImF,OAAOH,GAAAA;AACXhF,YAAIoF,UAAUzF,OAAO,CAACA,MAAMlD,QAAQ,GAAG,CAACkD,MAAMuE,SAAS,GAAGvE,MAAMlD,OAAOkD,MAAMuE,MAAM;AACnFlE,YAAIqD,QAAO;AACX;;;AAIJ,QAAIvI,MAAMiK,MAAWA,KAAAA,UAAU,GAAG;AAChC;;AAGF/E,QAAIqF,UAAS;AAEb,YAAQ1F,OAAAA;;MAEN;AACE,YAAI4E,IAAG;AACLvE,cAAIsF,QAAQlB,IAAGC,IAAGE,KAAI,GAAGQ,QAAQ,GAAG,GAAGhR,GAAAA;eAClC;AACLiM,cAAIuF,IAAInB,IAAGC,IAAGU,QAAQ,GAAGhR,GAAAA;;AAE3BiM,YAAIwF,UAAS;AACb;MACF,KAAK;AACH/I,gBAAQ8H,KAAIA,KAAI,IAAIQ;AACpB/E,YAAIyF,OAAOrB,KAAI7R,KAAKuB,IAAIkR,GAAOvI,IAAAA,OAAO4H,KAAI9R,KAAKyC,IAAIgQ,GAAOD,IAAAA,MAAAA;AAC1DC,eAAOU;AACP1F,YAAI2F,OAAOvB,KAAI7R,KAAKuB,IAAIkR,GAAOvI,IAAAA,OAAO4H,KAAI9R,KAAKyC,IAAIgQ,GAAOD,IAAAA,MAAAA;AAC1DC,eAAOU;AACP1F,YAAI2F,OAAOvB,KAAI7R,KAAKuB,IAAIkR,GAAOvI,IAAAA,OAAO4H,KAAI9R,KAAKyC,IAAIgQ,GAAOD,IAAAA,MAAAA;AAC1D/E,YAAIwF,UAAS;AACb;MACF,KAAK;AAQHd,uBAAeK,SAAS;AACxBrF,eAAOqF,SAASL;AAChBF,kBAAUjS,KAAKyC,IAAIgQ,MAAMY,UAAclG,IAAAA;AACvCiF,mBAAWpS,KAAKyC,IAAIgQ,MAAMY,UAAAA,KAAerB,KAAIA,KAAI,IAAIG,eAAehF;AACpE+E,kBAAUlS,KAAKuB,IAAIkR,MAAMY,UAAclG,IAAAA;AACvCkF,mBAAWrS,KAAKuB,IAAIkR,MAAMY,UAAAA,KAAerB,KAAIA,KAAI,IAAIG,eAAehF;AACpEM,YAAIuF,IAAInB,KAAIO,UAAUN,KAAII,SAASC,cAAcM,MAAM5P,IAAI4P,MAAM/P,OAAAA;AACjE+K,YAAIuF,IAAInB,KAAIQ,UAAUP,KAAIG,SAASE,cAAcM,MAAM/P,SAAS+P,GAAAA;AAChEhF,YAAIuF,IAAInB,KAAIO,UAAUN,KAAII,SAASC,cAAcM,KAAKA,MAAM/P,OAAAA;AAC5D+K,YAAIuF,IAAInB,KAAIQ,UAAUP,KAAIG,SAASE,cAAcM,MAAM/P,SAAS+P,MAAM5P,EAAAA;AACtE4K,YAAIwF,UAAS;AACb;MACF,KAAK;AACH,YAAI,CAACV,UAAU;AACbpF,iBAAOnN,KAAKsT,UAAUd;AACtBtI,kBAAQ8H,KAAIA,KAAI,IAAI7E;AACpBM,cAAI8F,KAAK1B,KAAI3H,OAAO4H,KAAI3E,MAAM,IAAIjD,OAAO,IAAIiD,IAAAA;AAC7C;;AAEFsF,eAAOY;;MAET,KAAK;AACHjB,mBAAWpS,KAAKyC,IAAIgQ,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxCP,kBAAUjS,KAAKyC,IAAIgQ,GAAOD,IAAAA;AAC1BN,kBAAUlS,KAAKuB,IAAIkR,GAAOD,IAAAA;AAC1BH,mBAAWrS,KAAKuB,IAAIkR,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxC/E,YAAIyF,OAAOrB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BzE,YAAI2F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BxE,YAAI2F,OAAOvB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BzE,YAAI2F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BxE,YAAIwF,UAAS;AACb;MACF,KAAK;AACHR,eAAOY;;MAET,KAAK;AACHjB,mBAAWpS,KAAKyC,IAAIgQ,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxCP,kBAAUjS,KAAKyC,IAAIgQ,GAAOD,IAAAA;AAC1BN,kBAAUlS,KAAKuB,IAAIkR,GAAOD,IAAAA;AAC1BH,mBAAWrS,KAAKuB,IAAIkR,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxC/E,YAAIyF,OAAOrB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BzE,YAAI2F,OAAOvB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BzE,YAAIyF,OAAOrB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BxE,YAAI2F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7B;MACF,KAAK;AACHG,mBAAWpS,KAAKyC,IAAIgQ,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxCP,kBAAUjS,KAAKyC,IAAIgQ,GAAOD,IAAAA;AAC1BN,kBAAUlS,KAAKuB,IAAIkR,GAAOD,IAAAA;AAC1BH,mBAAWrS,KAAKuB,IAAIkR,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxC/E,YAAIyF,OAAOrB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BzE,YAAI2F,OAAOvB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BzE,YAAIyF,OAAOrB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BxE,YAAI2F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BQ,eAAOY;AACPjB,mBAAWpS,KAAKyC,IAAIgQ,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxCP,kBAAUjS,KAAKyC,IAAIgQ,GAAOD,IAAAA;AAC1BN,kBAAUlS,KAAKuB,IAAIkR,GAAOD,IAAAA;AAC1BH,mBAAWrS,KAAKuB,IAAIkR,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ;AACxC/E,YAAIyF,OAAOrB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BzE,YAAI2F,OAAOvB,KAAIO,UAAUN,KAAII,OAAAA;AAC7BzE,YAAIyF,OAAOrB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7BxE,YAAI2F,OAAOvB,KAAIQ,UAAUP,KAAIG,OAAAA;AAC7B;MACF,KAAK;AACHA,kBAAUD,KAAIA,KAAI,IAAIhS,KAAKyC,IAAIgQ,GAAAA,IAAOD;AACtCN,kBAAUlS,KAAKuB,IAAIkR,GAAOD,IAAAA;AAC1B/E,YAAIyF,OAAOrB,KAAII,SAASH,KAAII,OAAAA;AAC5BzE,YAAI2F,OAAOvB,KAAII,SAASH,KAAII,OAAAA;AAC5B;MACF,KAAK;AACHzE,YAAIyF,OAAOrB,IAAGC,EAAAA;AACdrE,YAAI2F,OAAOvB,KAAI7R,KAAKyC,IAAIgQ,GAAAA,KAAQT,KAAIA,KAAI,IAAIQ,SAASV,KAAI9R,KAAKuB,IAAIkR,GAAOD,IAAAA,MAAAA;AACzE;MACF,KAAK;AACH/E,YAAIwF,UAAS;AACb;IACJ;AAEAxF,QAAI+F,KAAI;AACR,QAAI5M,QAAQ6M,cAAc,GAAG;AAC3BhG,UAAIiG,OAAM;;EAEd;AASO,WAASC,eACdC,OACAC,MACAC,QACA;AACAA,aAASA,UAAU;AAEnB,WAAO,CAACD,QAASD,SAASA,MAAM/B,IAAIgC,KAAKlV,OAAOmV,UAAUF,MAAM/B,IAAIgC,KAAKjV,QAAQkV,UACjFF,MAAM9B,IAAI+B,KAAKvN,MAAMwN,UAAUF,MAAM9B,IAAI+B,KAAKtN,SAASuN;EACzD;AAEO,WAASC,SAAStG,KAA+BoG,MAAY;AAClEpG,QAAI+C,KAAI;AACR/C,QAAIqF,UAAS;AACbrF,QAAI8F,KAAKM,KAAKlV,MAAMkV,KAAKvN,KAAKuN,KAAKjV,QAAQiV,KAAKlV,MAAMkV,KAAKtN,SAASsN,KAAKvN,GAAG;AAC5EmH,QAAIpE,KAAI;EACV;AAEO,WAAS2K,WAAWvG,KAA+B;AACxDA,QAAIqD,QAAO;EACb;AAKO,WAASmD,eACdxG,KACAyG,UACA7E,QACA8E,MACArG,MACA;AACA,QAAI,CAACoG,UAAU;AACb,aAAOzG,IAAI2F,OAAO/D,OAAOwC,GAAGxC,OAAOyC,CAAC;;AAEtC,QAAIhE,SAAS,UAAU;AACrB,YAAMsG,YAAYF,SAASrC,IAAIxC,OAAOwC,KAAK;AAC3CpE,UAAI2F,OAAOgB,UAAUF,SAASpC,CAAC;AAC/BrE,UAAI2F,OAAOgB,UAAU/E,OAAOyC,CAAC;IAC/B,WAAWhE,SAAS,YAAY,CAAC,CAACqG,MAAM;AACtC1G,UAAI2F,OAAOc,SAASrC,GAAGxC,OAAOyC,CAAC;WAC1B;AACLrE,UAAI2F,OAAO/D,OAAOwC,GAAGqC,SAASpC,CAAC;;AAEjCrE,QAAI2F,OAAO/D,OAAOwC,GAAGxC,OAAOyC,CAAC;EAC/B;AAKO,WAASuC,eACd5G,KACAyG,UACA7E,QACA8E,MACA;AACA,QAAI,CAACD,UAAU;AACb,aAAOzG,IAAI2F,OAAO/D,OAAOwC,GAAGxC,OAAOyC,CAAC;;AAEtCrE,QAAI6G,cACFH,OAAOD,SAASK,OAAOL,SAASM,MAChCL,OAAOD,SAASO,OAAOP,SAASQ,MAChCP,OAAO9E,OAAOmF,OAAOnF,OAAOkF,MAC5BJ,OAAO9E,OAAOqF,OAAOrF,OAAOoF,MAC5BpF,OAAOwC,GACPxC,OAAOyC,CAAC;EACZ;AAEA,WAAS6C,cAAclH,KAA+BmH,MAAsB;AAC1E,QAAIA,KAAKC,aAAa;AACpBpH,UAAIkF,UAAUiC,KAAKC,YAAY,CAAA,GAAID,KAAKC,YAAY,CAAE,CAAA;;AAGxD,QAAI,CAAClF,cAAciF,KAAKrC,QAAQ,GAAG;AACjC9E,UAAImF,OAAOgC,KAAKrC,QAAQ;;AAG1B,QAAIqC,KAAKxQ,OAAO;AACdqJ,UAAIqH,YAAYF,KAAKxQ;;AAGvB,QAAIwQ,KAAKG,WAAW;AAClBtH,UAAIsH,YAAYH,KAAKG;;AAGvB,QAAIH,KAAKI,cAAc;AACrBvH,UAAIuH,eAAeJ,KAAKI;;EAE5B;AAEA,WAASC,aACPxH,KACAoE,IACAC,IACAoD,MACAN,MACA;AACA,QAAIA,KAAKO,iBAAiBP,KAAKQ,WAAW;AAQxC,YAAMC,UAAU5H,IAAIyC,YAAYgF,IAAAA;AAChC,YAAMvW,OAAOkT,KAAIwD,QAAQC;AACzB,YAAM1W,QAAQiT,KAAIwD,QAAQE;AAC1B,YAAMjP,MAAMwL,KAAIuD,QAAQG;AACxB,YAAMjP,SAASuL,KAAIuD,QAAQI;AAC3B,YAAMC,cAAcd,KAAKO,iBAAiB7O,MAAMC,UAAU,IAAIA;AAE9DkH,UAAIkI,cAAclI,IAAIqH;AACtBrH,UAAIqF,UAAS;AACbrF,UAAIjE,YAAYoL,KAAKgB,mBAAmB;AACxCnI,UAAIyF,OAAOvU,MAAM+W,WAAAA;AACjBjI,UAAI2F,OAAOxU,OAAO8W,WAAAA;AAClBjI,UAAIiG,OAAM;;EAEd;AAEA,WAASmC,aAAapI,KAA+BmH,MAAuB;AAC1E,UAAMkB,WAAWrI,IAAIqH;AAErBrH,QAAIqH,YAAYF,KAAKxQ;AACrBqJ,QAAIsI,SAASnB,KAAKjW,MAAMiW,KAAKtO,KAAKsO,KAAK1K,OAAO0K,KAAKjD,MAAM;AACzDlE,QAAIqH,YAAYgB;EAClB;AAKO,WAASE,WACdvI,KACArD,MACAyH,IACAC,IACA7E,MACA2H,OAAuB,CAAA,GACvB;AACA,UAAMqB,QAAQxO,QAAQ2C,IAAAA,IAAQA,OAAO;MAACA;IAAK;AAC3C,UAAMsJ,SAASkB,KAAKsB,cAAc,KAAKtB,KAAKuB,gBAAgB;AAC5D,QAAIrK,IAAWoJ;AAEfzH,QAAI+C,KAAI;AACR/C,QAAIR,OAAOA,KAAK+C;AAChB2E,kBAAclH,KAAKmH,IAAAA;AAEnB,SAAK9I,KAAI,GAAGA,KAAImK,MAAM7W,QAAQ,EAAE0M,IAAG;AACjCoJ,aAAOe,MAAMnK,EAAE;AAEf,UAAI8I,KAAKwB,UAAU;AACjBP,qBAAapI,KAAKmH,KAAKwB,QAAQ;;AAGjC,UAAI1C,QAAQ;AACV,YAAIkB,KAAKuB,aAAa;AACpB1I,cAAIkI,cAAcf,KAAKuB;;AAGzB,YAAI,CAACxG,cAAciF,KAAKsB,WAAW,GAAG;AACpCzI,cAAIjE,YAAYoL,KAAKsB;;AAGvBzI,YAAI4I,WAAWnB,MAAMrD,IAAGC,IAAG8C,KAAK0B,QAAQ;;AAG1C7I,UAAI8I,SAASrB,MAAMrD,IAAGC,IAAG8C,KAAK0B,QAAQ;AACtCrB,mBAAaxH,KAAKoE,IAAGC,IAAGoD,MAAMN,IAAAA;AAE9B9C,MAAAA,MAAK0E,OAAOvJ,KAAKI,UAAU;IAC7B;AAEAI,QAAIqD,QAAO;EACb;AAOO,WAAS2F,mBACdhJ,KACA8F,MACA;AACA,UAAM,EAAC1B,GAAAA,IAAGC,GAAAA,IAAGE,GAAAA,IAAG0E,GAAAA,IAAGlE,OAAM,IAAIe;AAG7B9F,QAAIuF,IAAInB,KAAIW,OAAOmE,SAAS7E,KAAIU,OAAOmE,SAASnE,OAAOmE,SAAS,MAAM9T,IAAIA,IAAI,IAAI;AAGlF4K,QAAI2F,OAAOvB,IAAGC,KAAI4E,KAAIlE,OAAOoE,UAAU;AAGvCnJ,QAAIuF,IAAInB,KAAIW,OAAOoE,YAAY9E,KAAI4E,KAAIlE,OAAOoE,YAAYpE,OAAOoE,YAAY/T,IAAIH,SAAS,IAAI;AAG9F+K,QAAI2F,OAAOvB,KAAIG,KAAIQ,OAAOqE,aAAa/E,KAAI4E,EAAAA;AAG3CjJ,QAAIuF,IAAInB,KAAIG,KAAIQ,OAAOqE,aAAa/E,KAAI4E,KAAIlE,OAAOqE,aAAarE,OAAOqE,aAAanU,SAAS,GAAG,IAAI;AAGpG+K,QAAI2F,OAAOvB,KAAIG,IAAGF,KAAIU,OAAOsE,QAAQ;AAGrCrJ,QAAIuF,IAAInB,KAAIG,KAAIQ,OAAOsE,UAAUhF,KAAIU,OAAOsE,UAAUtE,OAAOsE,UAAU,GAAG,CAACpU,SAAS,IAAI;AAGxF+K,QAAI2F,OAAOvB,KAAIW,OAAOmE,SAAS7E,EAAAA;EACjC;ACpgBA,MAAMiF,cAAc;AACpB,MAAMC,aAAa;AAcZ,WAASC,aAAahT,OAAwBkJ,MAAsB;AACzE,UAAM+J,YAAW,KAAKjT,OAAOkT,MAAMJ,WAAAA;AACnC,QAAI,CAACG,YAAWA,SAAQ,CAAA,MAAO,UAAU;AACvC,aAAO/J,OAAO;;AAGhBlJ,YAAQ,CAACiT,SAAQ,CAAE;AAEnB,YAAQA,SAAQ,CAAE,GAAA;MAChB,KAAK;AACH,eAAOjT;MACT,KAAK;AACHA,iBAAS;AACT;IAGJ;AAEA,WAAOkJ,OAAOlJ;EAChB;AAEA,MAAMmT,eAAe,CAAClR,OAAe,CAACA,MAAK;AAQpC,WAASmR,kBAAkBpT,OAAwCqT,OAA0C;AAClH,UAAMC,MAAM,CAAA;AACZ,UAAMC,WAAWlI,SAASgI,KAAAA;AAC1B,UAAM1L,OAAO4L,WAAWzW,OAAO6K,KAAK0L,KAAAA,IAASA;AAC7C,UAAMG,OAAOnI,SAASrL,KAAAA,IAClBuT,WACEE,CAAAA,SAAQnI,eAAetL,MAAMyT,IAAAA,GAAOzT,MAAMqT,MAAMI,IAAK,CAAA,CAAC,IACtDA,CAAAA,SAAQzT,MAAMyT,IAAAA,IAChB,MAAMzT;AAEV,eAAWyT,QAAQ9L,MAAM;AACvB2L,UAAIG,IAAAA,IAAQN,aAAaK,KAAKC,IAAAA,CAAAA;IAChC;AACA,WAAOH;EACT;AAUO,WAASI,OAAO1T,OAA8B;AACnD,WAAOoT,kBAAkBpT,OAAO;MAACqC,KAAK;MAAK1H,OAAO;MAAK2H,QAAQ;MAAK5H,MAAM;IAAG,CAAA;EAC/E;AASO,WAASiZ,cAAc3T,OAA6B;AACzD,WAAOoT,kBAAkBpT,OAAO;MAAC;MAAW;MAAY;MAAc;IAAc,CAAA;EACtF;AAUO,WAAS4T,UAAU5T,OAAkC;AAC1D,UAAM6T,MAAMH,OAAO1T,KAAAA;AAEnB6T,QAAI5N,QAAQ4N,IAAInZ,OAAOmZ,IAAIlZ;AAC3BkZ,QAAInG,SAASmG,IAAIxR,MAAMwR,IAAIvR;AAE3B,WAAOuR;EACT;AAUO,WAASC,OAAOnR,SAA4BoR,UAA8B;AAC/EpR,cAAUA,WAAW,CAAA;AACrBoR,eAAWA,YAAYnT,SAASoI;AAEhC,QAAIE,OAAOoC,eAAe3I,QAAQuG,MAAM6K,SAAS7K,IAAI;AAErD,QAAI,OAAOA,SAAS,UAAU;AAC5BA,aAAO8K,SAAS9K,MAAM,EAAA;;AAExB,QAAIC,QAAQmC,eAAe3I,QAAQwG,OAAO4K,SAAS5K,KAAK;AACxD,QAAIA,SAAS,EAAE,KAAKA,OAAO+J,MAAMH,UAAa,GAAA;AAC5CkB,cAAQC,KAAK,oCAAoC/K,QAAQ,GAAA;AACzDA,cAAQrI;;AAGV,UAAMkI,OAAO;MACXC,QAAQqC,eAAe3I,QAAQsG,QAAQ8K,SAAS9K,MAAM;MACtDG,YAAY4J,aAAa1H,eAAe3I,QAAQyG,YAAY2K,SAAS3K,UAAU,GAAGF,IAAAA;MAClFA;MACAC;MACAE,QAAQiC,eAAe3I,QAAQ0G,QAAQ0K,SAAS1K,MAAM;MACtD0C,QAAQ;IACV;AAEA/C,SAAK+C,SAASN,aAAazC,IAAAA;AAC3B,WAAOA;EACT;AAaO,WAASmL,QAAQC,QAAwBzL,SAAkBhF,QAAgB0Q,MAA+B;AAC/G,QAAIC,YAAY;AAChB,QAAIzM,IAAW2E,MAAcxM;AAE7B,SAAK6H,KAAI,GAAG2E,OAAO4H,OAAOjZ,QAAQ0M,KAAI2E,MAAM,EAAE3E,IAAG;AAC/C7H,cAAQoU,OAAOvM,EAAE;AACjB,UAAI7H,UAAUc,QAAW;AACvB;;AAEF,UAAI6H,YAAY7H,UAAa,OAAOd,UAAU,YAAY;AACxDA,gBAAQA,MAAM2I,OAAAA;AACd2L,oBAAY;;AAEd,UAAI3Q,WAAU7C,UAAa0C,QAAQxD,KAAQ,GAAA;AACzCA,gBAAQA,MAAM2D,SAAQ3D,MAAM7E,MAAM;AAClCmZ,oBAAY;;AAEd,UAAItU,UAAUc,QAAW;AACvB,YAAIuT,QAAQ,CAACC,WAAW;AACtBD,eAAKC,YAAY;;AAEnB,eAAOtU;;IAEX;EACF;AAQO,WAASuU,UAAUC,QAAuCnP,OAAwBH,aAAsB;AAC7G,UAAM,EAACzJ,KAAKC,IAAAA,IAAO8Y;AACnB,UAAMC,SAASC,YAAYrP,QAAQ3J,MAAMD,OAAO,CAAA;AAChD,UAAMkZ,WAAW,CAAC3U,OAAe4U,SAAgB1P,eAAelF,UAAU,IAAI,IAAIA,QAAQ4U;AAC1F,WAAO;MACLnZ,KAAKkZ,SAASlZ,KAAK,CAACM,KAAKkI,IAAIwQ,MAAAA,CAAAA;MAC7B/Y,KAAKiZ,SAASjZ,KAAK+Y,MAAAA;IACrB;EACF;AAUO,WAASI,cAAcC,eAAuBnM,SAAiB;AACpE,WAAO7L,OAAOC,OAAOD,OAAOwK,OAAOwN,aAAgBnM,GAAAA,OAAAA;EACrD;ACnLO,WAASoM,gBAIdC,QACAC,WAAW;IAAC;KACZC,YACAnB,UACAoB,YAAY,MAAMH,OAAO,CAAA,GACzB;AACA,UAAMI,kBAAkBF,cAAcF;AACtC,QAAI,OAAOjB,aAAa,aAAa;AACnCA,iBAAWsB,SAAS,aAAaL,MAAAA;;AAEnC,UAAM3I,SAA6B;MACjC,CAACiJ,OAAOC,WAAW,GAAG;MACtBC,YAAY;MACZC,SAAST;MACTU,aAAaN;MACb/T,WAAW0S;MACX4B,YAAYR;MACZzK,UAAU,CAACzC,UAAqB8M,gBAAgB;QAAC9M;QAAU+M,GAAAA;MAAO,GAAEC,UAAUG,iBAAiBrB,QAAAA;IACjG;AACA,WAAO,IAAI6B,MAAMvJ,QAAO;;;;MAItBwJ,eAAezK,QAAQqI,MAAc;AACnC,eAAOrI,OAAOqI,IAAK;AACnB,eAAOrI,OAAO0K;AACd,eAAOd,OAAO,CAAA,EAAGvB,IAAAA;AACjB,eAAO;MACT;;;;MAKAzQ,IAAIoI,QAAQqI,MAAc;AACxB,eAAOsC,QAAQ3K,QAAQqI,MACrB,MAAMuC,qBAAqBvC,MAAMwB,UAAUD,QAAQ5J,MAAAA,CAAAA;MACvD;;;;;MAMA6K,yBAAyB7K,QAAQqI,MAAM;AACrC,eAAOyC,QAAQD,yBAAyB7K,OAAOqK,QAAQ,CAAA,GAAIhC,IAAAA;MAC7D;;;;MAKA0C,iBAAiB;AACf,eAAOD,QAAQC,eAAenB,OAAO,CAAE,CAAA;MACzC;;;;MAKAoB,IAAIhL,QAAQqI,MAAc;AACxB,eAAO4C,qBAAqBjL,MAAQvG,EAAAA,SAAS4O,IAAAA;MAC/C;;;;MAKA6C,QAAQlL,QAAQ;AACd,eAAOiL,qBAAqBjL,MAAAA;MAC9B;;;;MAKAvK,IAAIuK,QAAQqI,MAAczT,OAAO;AAC/B,cAAMuW,UAAUnL,OAAOoL,aAAapL,OAAOoL,WAAWrB,UAAU;AAChE/J,eAAOqI,IAAAA,IAAQ8C,QAAQ9C,IAAK,IAAGzT;AAC/B,eAAOoL,OAAO0K;AACd,eAAO;MACT;IACF,CAAA;EACF;AAUO,WAASW,eAIdC,OACA/N,SACAgO,UACAC,oBACA;AACA,UAAMvK,SAA4B;MAChCmJ,YAAY;MACZqB,QAAQH;MACRI,UAAUnO;MACVoO,WAAWJ;MACXK,QAAQ,oBAAIC,IAAAA;MACZ5O,cAAcA,aAAaqO,OAAOE,kBAAAA;MAClCM,YAAY,CAAC1N,QAAmBiN,eAAeC,OAAOlN,KAAKmN,UAAUC,kBAAAA;MACrElM,UAAU,CAACzC,UAAqBwO,eAAeC,MAAMhM,SAASzC,KAAAA,GAAQU,SAASgO,UAAUC,kBAAAA;IAC3F;AACA,WAAO,IAAIhB,MAAMvJ,QAAO;;;;MAItBwJ,eAAezK,QAAQqI,MAAM;AAC3B,eAAOrI,OAAOqI,IAAK;AACnB,eAAOiD,MAAMjD,IAAK;AAClB,eAAO;MACT;;;;MAKAzQ,IAAIoI,QAAQqI,MAAc0D,UAAU;AAClC,eAAOpB,QAAQ3K,QAAQqI,MACrB,MAAM2D,oBAAoBhM,QAAQqI,MAAM0D,QAAAA,CAAAA;MAC5C;;;;;MAMAlB,yBAAyB7K,QAAQqI,MAAM;AACrC,eAAOrI,OAAO/C,aAAagP,UACvBnB,QAAQE,IAAIM,OAAOjD,IAAQ,IAAA;UAACvI,YAAY;UAAMoM,cAAc;QAAI,IAAIxW,SACpEoV,QAAQD,yBAAyBS,OAAOjD,IAAK;MACnD;;;;MAKA0C,iBAAiB;AACf,eAAOD,QAAQC,eAAeO,KAAAA;MAChC;;;;MAKAN,IAAIhL,QAAQqI,MAAM;AAChB,eAAOyC,QAAQE,IAAIM,OAAOjD,IAAAA;MAC5B;;;;MAKA6C,UAAU;AACR,eAAOJ,QAAQI,QAAQI,KAAAA;MACzB;;;;MAKA7V,IAAIuK,QAAQqI,MAAMzT,OAAO;AACvB0W,cAAMjD,IAAAA,IAAQzT;AACd,eAAOoL,OAAOqI,IAAK;AACnB,eAAO;MACT;IACF,CAAA;EACF;AAKO,WAASpL,aACdqO,OACA9V,YAA+B;IAAC2W,YAAY;IAAMC,WAAW;EAAI,GACrD;AACZ,UAAM,EAACjW,cAAcX,UAAS2W,YAAYjW,aAAaV,UAAS4W,WAAWC,WAAW7W,UAASyW,QAAO,IAAIX;AAC1G,WAAO;MACLW,SAASI;MACTF,YAAYhW;MACZiW,WAAWlW;MACXoW,cAAcC,WAAWpW,WAAAA,IAAeA,cAAc,MAAMA;MAC5DqW,aAAaD,WAAWrW,UAAAA,IAAcA,aAAa,MAAMA;IAC3D;EACF;AAEA,MAAMuW,UAAU,CAACC,QAAgBtW,SAAiBsW,SAASA,SAASC,YAAYvW,IAAAA,IAAQA;AACxF,MAAMwW,mBAAmB,CAACvE,MAAczT,UAAmBqL,SAASrL,KAAAA,KAAUyT,SAAS,eACpF3W,OAAOqZ,eAAenW,KAAW,MAAA,QAAQA,MAAMoI,gBAAgBtL;AAElE,WAASiZ,QACP3K,QACAqI,MACAU,UACA;AACA,QAAIrX,OAAOmb,UAAUC,eAAere,KAAKuR,QAAQqI,IAAO,GAAA;AACtD,aAAOrI,OAAOqI,IAAK;;AAGrB,UAAMzT,QAAQmU,SAAAA;AAEd/I,WAAOqI,IAAAA,IAAQzT;AACf,WAAOA;EACT;AAEA,WAASoX,oBACPhM,QACAqI,MACA0D,UACA;AACA,UAAM,EAACN,QAAQC,UAAUC,WAAW1O,cAAcd,aAAW,IAAI6D;AACjE,QAAIpL,QAAQ6W,OAAOpD,IAAAA;AAGnB,QAAIkE,WAAW3X,KAAAA,KAAUuH,aAAYmQ,aAAajE,IAAO,GAAA;AACvDzT,cAAQmY,mBAAmB1E,MAAMzT,OAAOoL,QAAQ+L,QAAAA;;AAElD,QAAI3T,QAAQxD,KAAAA,KAAUA,MAAM7E,QAAQ;AAClC6E,cAAQoY,cAAc3E,MAAMzT,OAAOoL,QAAQ7D,aAAYqQ,WAAW;;AAEpE,QAAII,iBAAiBvE,MAAMzT,KAAQ,GAAA;AAEjCA,cAAQyW,eAAezW,OAAO8W,UAAUC,aAAaA,UAAUtD,IAAAA,GAAOlM,YAAAA;;AAExE,WAAOvH;EACT;AAEA,WAASmY,mBACP1E,MACA4E,UACAjN,QACA+L,UACA;AACA,UAAM,EAACN,QAAQC,UAAUC,WAAWC,OAAM,IAAI5L;AAC9C,QAAI4L,OAAOZ,IAAI3C,IAAO,GAAA;AACpB,YAAM,IAAI6E,MAAM,yBAAyBC,MAAMtX,KAAK+V,MAAAA,EAAQwB,KAAK,IAAQ,IAAA,OAAO/E,IAAM;;AAExFuD,WAAOpC,IAAInB,IAAAA;AACX,QAAIzT,QAAQqY,SAASvB,UAAUC,aAAaI,QAAAA;AAC5CH,WAAOyB,OAAOhF,IAAAA;AACd,QAAIuE,iBAAiBvE,MAAMzT,KAAQ,GAAA;AAEjCA,cAAQ0Y,kBAAkB7B,OAAOpB,SAASoB,QAAQpD,MAAMzT,KAAAA;;AAE1D,WAAOA;EACT;AAEA,WAASoY,cACP3E,MACAzT,OACAoL,QACAwM,aACA;AACA,UAAM,EAACf,QAAQC,UAAUC,WAAW1O,cAAcd,aAAW,IAAI6D;AAEjE,QAAI,OAAO0L,SAASnT,UAAU,eAAeiU,YAAYnE,IAAO,GAAA;AAC9D,aAAOzT,MAAM8W,SAASnT,QAAQ3D,MAAM7E,MAAM;IAC5C,WAAWkQ,SAASrL,MAAM,CAAA,CAAE,GAAG;AAE7B,YAAM2Y,MAAM3Y;AACZ,YAAMgV,SAAS6B,OAAOpB,QAAQmD,OAAOzb,CAAAA,OAAKA,OAAMwb,GAAAA;AAChD3Y,cAAQ,CAAA;AACR,iBAAW6Y,QAAQF,KAAK;AACtB,cAAMG,WAAWJ,kBAAkB1D,QAAQ6B,QAAQpD,MAAMoF,IAAAA;AACzD7Y,cAAMkM,KAAKuK,eAAeqC,UAAUhC,UAAUC,aAAaA,UAAUtD,IAAAA,GAAOlM,YAAAA,CAAAA;MAC9E;;AAEF,WAAOvH;EACT;AAEA,WAAS+Y,gBACPhF,UACAN,MACAzT,OACA;AACA,WAAO2X,WAAW5D,QAAAA,IAAYA,SAASN,MAAMzT,KAAAA,IAAS+T;EACxD;AAEA,MAAMvM,WAAW,CAACE,KAAwBsR,WAAsBtR,QAAQ,OAAOsR,SAC3E,OAAOtR,QAAQ,WAAWuR,iBAAiBD,QAAQtR,GAAAA,IAAO5G;AAE9D,WAASoY,UACPrY,MACAsY,cACAzR,KACA0R,gBACApZ,OACA;AACA,eAAWgZ,UAAUG,cAAc;AACjC,YAAMlR,QAAQT,SAASE,KAAKsR,MAAAA;AAC5B,UAAI/Q,OAAO;AACTpH,QAAAA,KAAI+T,IAAI3M,KAAAA;AACR,cAAM8L,WAAWgF,gBAAgB9Q,MAAM5G,WAAWqG,KAAK1H,KAAAA;AACvD,YAAI,OAAO+T,aAAa,eAAeA,aAAarM,OAAOqM,aAAaqF,gBAAgB;AAGtF,iBAAOrF;;iBAEA9L,UAAU,SAAS,OAAOmR,mBAAmB,eAAe1R,QAAQ0R,gBAAgB;AAG7F,eAAO;;IAEX;AACA,WAAO;EACT;AAEA,WAASV,kBACPS,cACAL,UACArF,MACAzT,OACA;AACA,UAAMkV,aAAa4D,SAASpD;AAC5B,UAAM3B,WAAWgF,gBAAgBD,SAASzX,WAAWoS,MAAMzT,KAAAA;AAC3D,UAAMqZ,YAAY;MAAIF,GAAAA;MAAiBjE,GAAAA;IAAW;AAClD,UAAMrU,OAAM,oBAAIoW,IAAAA;AAChBpW,IAAAA,KAAI+T,IAAI5U,KAAAA;AACR,QAAI0H,MAAM4R,iBAAiBzY,MAAKwY,WAAW5F,MAAMM,YAAYN,MAAMzT,KAAAA;AACnE,QAAI0H,QAAQ,MAAM;AAChB,aAAO;;AAET,QAAI,OAAOqM,aAAa,eAAeA,aAAaN,MAAM;AACxD/L,YAAM4R,iBAAiBzY,MAAKwY,WAAWtF,UAAUrM,KAAK1H,KAAAA;AACtD,UAAI0H,QAAQ,MAAM;AAChB,eAAO;;;AAGX,WAAOqN,gBAAgBwD,MAAMtX,KAAKJ,IAAM,GAAA;MAAC;IAAG,GAAEqU,YAAYnB,UACxD,MAAMwF,aAAaT,UAAUrF,MAAgBzT,KAAAA,CAAAA;EACjD;AAEA,WAASsZ,iBACPzY,MACAwY,WACA3R,KACAqM,UACA8E,MACA;AACA,WAAOnR,KAAK;AACVA,YAAMwR,UAAUrY,MAAKwY,WAAW3R,KAAKqM,UAAU8E,IAAAA;IACjD;AACA,WAAOnR;EACT;AAEA,WAAS6R,aACPT,UACArF,MACAzT,OACA;AACA,UAAMgZ,SAASF,SAASnD,WAAU;AAClC,QAAI,EAAElC,QAAQuF,SAAS;AACrBA,aAAOvF,IAAK,IAAG,CAAA;;AAEjB,UAAMrI,SAAS4N,OAAOvF,IAAK;AAC3B,QAAIjQ,QAAQ4H,MAAWC,KAAAA,SAASrL,KAAQ,GAAA;AAEtC,aAAOA;;AAET,WAAOoL,UAAU,CAAA;EACnB;AAEA,WAAS4K,qBACPvC,MACAwB,UACAD,QACA0B,OACA;AACA,QAAI1W;AACJ,eAAW8X,UAAU7C,UAAU;AAC7BjV,cAAQqV,SAASwC,QAAQC,QAAQrE,IAAOuB,GAAAA,MAAAA;AACxC,UAAI,OAAOhV,UAAU,aAAa;AAChC,eAAOgY,iBAAiBvE,MAAMzT,KAC1B0Y,IAAAA,kBAAkB1D,QAAQ0B,OAAOjD,MAAMzT,KAAAA,IACvCA;;IAER;EACF;AAEA,WAASqV,SAAS3N,KAAasN,QAAqB;AAClD,eAAW/M,SAAS+M,QAAQ;AAC1B,UAAI,CAAC/M,OAAO;AACV;;AAEF,YAAMjI,QAAQiI,MAAMP,GAAI;AACxB,UAAI,OAAO1H,UAAU,aAAa;AAChC,eAAOA;;IAEX;EACF;AAEA,WAASqW,qBAAqBjL,QAAuB;AACnD,QAAIzD,OAAOyD,OAAO0K;AAClB,QAAI,CAACnO,MAAM;AACTA,aAAOyD,OAAO0K,QAAQ0D,yBAAyBpO,OAAOqK,OAAO;;AAE/D,WAAO9N;EACT;AAEA,WAAS6R,yBAAyBxE,QAAqB;AACrD,UAAMnU,OAAM,oBAAIoW,IAAAA;AAChB,eAAWhP,SAAS+M,QAAQ;AAC1B,iBAAWtN,OAAO5K,OAAO6K,KAAKM,KAAO2Q,EAAAA,OAAO7Q,CAAAA,OAAK,CAACA,GAAEX,WAAW,GAAO,CAAA,GAAA;AACpEvG,QAAAA,KAAI+T,IAAIlN,GAAAA;MACV;IACF;AACA,WAAO6Q,MAAMtX,KAAKJ,IAAAA;EACpB;AAEO,WAAS4Y,4BACd1e,MACA6Q,MACArR,QACAa,OACA;AACA,UAAM,EAACE,OAAM,IAAIP;AACjB,UAAM,EAAC2M,MAAM,IAAA,IAAO,KAAKgS;AACzB,UAAMC,SAAS,IAAIpB,MAAoBnd,KAAAA;AACvC,QAAIyM,IAAW2E,MAAc7I,QAAekV;AAE5C,SAAKhR,KAAI,GAAG2E,OAAOpR,OAAOyM,KAAI2E,MAAM,EAAE3E,IAAG;AACvClE,MAAAA,SAAQkE,KAAItN;AACZse,aAAOjN,KAAKjI,MAAM;AAClBgW,aAAO9R,EAAAA,IAAK;QACV+R,GAAGte,OAAOue,MAAMZ,iBAAiBJ,MAAMnR,GAAM/D,GAAAA,MAAAA;MAC/C;IACF;AACA,WAAOgW;EACT;AClcA,MAAMG,UAAUvH,OAAOuH,WAAW;AAGlC,MAAMC,WAAW,CAAC/e,QAAuB6M,OAAmCA,KAAI7M,OAAOG,UAAU,CAACH,OAAO6M,EAAE,EAACmS,QAAQhf,OAAO6M,EAAE;AAC7H,MAAMoS,eAAe,CAACtQ,cAAyBA,cAAc,MAAM,MAAM;AAElE,WAASuQ,YACdC,YACAC,aACAC,YACApd,IAIE;AAMF,UAAMgT,WAAWkK,WAAWH,OAAOI,cAAcD;AACjD,UAAMG,UAAUF;AAChB,UAAMG,OAAOF,WAAWL,OAAOI,cAAcC;AAC7C,UAAMG,MAAMC,sBAAsBH,SAASrK,QAAAA;AAC3C,UAAMyK,MAAMD,sBAAsBF,MAAMD,OAAAA;AAExC,QAAIK,MAAMH,OAAOA,MAAME;AACvB,QAAIE,MAAMF,OAAOF,MAAME;AAGvBC,UAAMrW,MAAMqW,GAAO,IAAA,IAAIA;AACvBC,UAAMtW,MAAMsW,GAAO,IAAA,IAAIA;AAEvB,UAAMC,KAAK5d,KAAI0d;AACf,UAAMG,KAAK7d,KAAI2d;AAEf,WAAO;MACL3K,UAAU;QACRrC,GAAG0M,QAAQ1M,IAAIiN,MAAMN,KAAK3M,IAAIqC,SAASrC;QACvCC,GAAGyM,QAAQzM,IAAIgN,MAAMN,KAAK1M,IAAIoC,SAASpC;MACzC;MACA0M,MAAM;QACJ3M,GAAG0M,QAAQ1M,IAAIkN,MAAMP,KAAK3M,IAAIqC,SAASrC;QACvCC,GAAGyM,QAAQzM,IAAIiN,MAAMP,KAAK1M,IAAIoC,SAASpC;MACzC;IACF;EACF;AAKA,WAASkN,eAAe/f,QAAuBggB,QAAkBC,IAAc;AAC7E,UAAMC,YAAYlgB,OAAOG;AAEzB,QAAIggB,QAAgBC,OAAeC,MAAcC,kBAA0BC;AAC3E,QAAIC,aAAazB,SAAS/e,QAAQ,CAAA;AAClC,aAAS6M,KAAI,GAAGA,KAAIqT,YAAY,GAAG,EAAErT,IAAG;AACtC0T,qBAAeC;AACfA,mBAAazB,SAAS/e,QAAQ6M,KAAI,CAAA;AAClC,UAAI,CAAC0T,gBAAgB,CAACC,YAAY;AAChC;;AAGF,UAAIC,aAAaT,OAAOnT,EAAE,GAAE,GAAGiS,OAAU,GAAA;AACvCmB,WAAGpT,EAAE,IAAGoT,GAAGpT,KAAI,CAAA,IAAK;AACpB;;AAGFsT,eAASF,GAAGpT,EAAAA,IAAKmT,OAAOnT,EAAE;AAC1BuT,cAAQH,GAAGpT,KAAI,CAAA,IAAKmT,OAAOnT,EAAE;AAC7ByT,yBAAmBvf,KAAKsB,IAAI8d,QAAQ,CAAA,IAAKpf,KAAKsB,IAAI+d,OAAO,CAAA;AACzD,UAAIE,oBAAoB,GAAG;AACzB;;AAGFD,aAAO,IAAItf,KAAKkD,KAAKqc,gBAAAA;AACrBL,SAAGpT,EAAE,IAAGsT,SAASE,OAAOL,OAAOnT,EAAE;AACjCoT,SAAGpT,KAAI,CAAE,IAAGuT,QAAQC,OAAOL,OAAOnT,EAAE;IACtC;EACF;AAEA,WAAS6T,gBAAgB1gB,QAAuBigB,IAActR,YAAuB,KAAK;AACxF,UAAMgS,YAAY1B,aAAatQ,SAAAA;AAC/B,UAAMuR,YAAYlgB,OAAOG;AACzB,QAAI4I,OAAe6X,aAAkCL;AACrD,QAAIC,aAAazB,SAAS/e,QAAQ,CAAA;AAElC,aAAS6M,KAAI,GAAGA,KAAIqT,WAAW,EAAErT,IAAG;AAClC+T,oBAAcL;AACdA,qBAAeC;AACfA,mBAAazB,SAAS/e,QAAQ6M,KAAI,CAAA;AAClC,UAAI,CAAC0T,cAAc;AACjB;;AAGF,YAAMM,SAASN,aAAa5R,SAAU;AACtC,YAAMmS,SAASP,aAAaI,SAAU;AACtC,UAAIC,aAAa;AACf7X,iBAAS8X,SAASD,YAAYjS,SAAAA,KAAc;AAC5C4R,qBAAa,MAAM5R,SAAAA,EAAW,IAAIkS,SAAS9X;AAC3CwX,qBAAa,MAAMI,SAAU,EAAC,IAAIG,SAAS/X,QAAQkX,GAAGpT,EAAE;;AAE1D,UAAI2T,YAAY;AACdzX,iBAASyX,WAAW7R,SAAU,IAAGkS,UAAU;AAC3CN,qBAAa,MAAM5R,SAAAA,EAAW,IAAIkS,SAAS9X;AAC3CwX,qBAAa,MAAMI,SAAU,EAAC,IAAIG,SAAS/X,QAAQkX,GAAGpT,EAAE;;IAE5D;EACF;AAQO,WAASkU,oBAAoB/gB,QAAuB2O,YAAuB,KAAK;AACrF,UAAMgS,YAAY1B,aAAatQ,SAAAA;AAC/B,UAAMuR,YAAYlgB,OAAOG;AACzB,UAAM6f,SAAmBzC,MAAM2C,SAAW3L,EAAAA,KAAK,CAAA;AAC/C,UAAM0L,KAAe1C,MAAM2C,SAAAA;AAG3B,QAAIrT,IAAG+T,aAAkCL;AACzC,QAAIC,aAAazB,SAAS/e,QAAQ,CAAA;AAElC,SAAK6M,KAAI,GAAGA,KAAIqT,WAAW,EAAErT,IAAG;AAC9B+T,oBAAcL;AACdA,qBAAeC;AACfA,mBAAazB,SAAS/e,QAAQ6M,KAAI,CAAA;AAClC,UAAI,CAAC0T,cAAc;AACjB;;AAGF,UAAIC,YAAY;AACd,cAAMQ,aAAaR,WAAW7R,SAAAA,IAAa4R,aAAa5R,SAAU;AAGlEqR,eAAOnT,EAAE,IAAGmU,eAAe,KAAKR,WAAWG,SAAAA,IAAaJ,aAAaI,SAAAA,KAAcK,aAAa;;AAElGf,SAAGpT,EAAE,IAAG,CAAC+T,cAAcZ,OAAOnT,EAAE,IAC5B,CAAC2T,aAAaR,OAAOnT,KAAI,CAAA,IACtBoU,KAAKjB,OAAOnT,KAAI,CAAA,CAAE,MAAMoU,KAAKjB,OAAOnT,EAAE,CAAA,IAAK,KACzCmT,OAAOnT,KAAI,CAAA,IAAKmT,OAAOnT,EAAE,KAAI;IACxC;AAEAkT,mBAAe/f,QAAQggB,QAAQC,EAAAA;AAE/BS,oBAAgB1gB,QAAQigB,IAAItR,SAAAA;EAC9B;AAEA,WAASuS,gBAAgBC,KAAY1gB,KAAaC,KAAa;AAC7D,WAAOK,KAAKL,IAAIK,KAAKN,IAAI0gB,KAAIzgB,GAAMD,GAAAA,GAAAA;EACrC;AAEA,WAAS2gB,gBAAgBphB,QAAuB4U,MAAiB;AAC/D,QAAI/H,IAAG2E,MAAMmD,OAAO0M,QAAQC;AAC5B,QAAIC,aAAa7M,eAAe1U,OAAO,CAAA,GAAI4U,IAAAA;AAC3C,SAAK/H,KAAI,GAAG2E,OAAOxR,OAAOG,QAAQ0M,KAAI2E,MAAM,EAAE3E,IAAG;AAC/CyU,mBAAaD;AACbA,eAASE;AACTA,mBAAa1U,KAAI2E,OAAO,KAAKkD,eAAe1U,OAAO6M,KAAI,CAAA,GAAI+H,IAAAA;AAC3D,UAAI,CAACyM,QAAQ;AACX;;AAEF1M,cAAQ3U,OAAO6M,EAAE;AACjB,UAAIyU,YAAY;AACd3M,cAAMW,OAAO4L,gBAAgBvM,MAAMW,MAAMV,KAAKlV,MAAMkV,KAAKjV,KAAK;AAC9DgV,cAAMa,OAAO0L,gBAAgBvM,MAAMa,MAAMZ,KAAKvN,KAAKuN,KAAKtN,MAAM;;AAEhE,UAAIia,YAAY;AACd5M,cAAMY,OAAO2L,gBAAgBvM,MAAMY,MAAMX,KAAKlV,MAAMkV,KAAKjV,KAAK;AAC9DgV,cAAMc,OAAOyL,gBAAgBvM,MAAMc,MAAMb,KAAKvN,KAAKuN,KAAKtN,MAAM;;IAElE;EACF;AAKO,WAASka,2BACdxhB,QACA2H,SACAiN,MACA1O,OACAyI,WACA;AACA,QAAI9B,IAAW2E,MAAcmD,OAAoB8M;AAGjD,QAAI9Z,QAAQ+Z,UAAU;AACpB1hB,eAASA,OAAO4d,OAAO,CAACuD,QAAO,CAACA,IAAGnC,IAAI;;AAGzC,QAAIrX,QAAQga,2BAA2B,YAAY;AACjDZ,0BAAoB/gB,QAAQ2O,SAAAA;WACvB;AACL,UAAIiT,OAAO1b,QAAOlG,OAAOA,OAAOG,SAAS,CAAE,IAAGH,OAAO,CAAE;AACvD,WAAK6M,KAAI,GAAG2E,OAAOxR,OAAOG,QAAQ0M,KAAI2E,MAAM,EAAE3E,IAAG;AAC/C8H,gBAAQ3U,OAAO6M,EAAE;AACjB4U,wBAAgBvC,YACd0C,MACAjN,OACA3U,OAAOe,KAAKN,IAAIoM,KAAI,GAAG2E,QAAQtL,QAAO,IAAI,EAAA,IAAMsL,IAAK,GACrD7J,QAAQka,OAAO;AAEjBlN,cAAMW,OAAOmM,cAAcxM,SAASrC;AACpC+B,cAAMa,OAAOiM,cAAcxM,SAASpC;AACpC8B,cAAMY,OAAOkM,cAAclC,KAAK3M;AAChC+B,cAAMc,OAAOgM,cAAclC,KAAK1M;AAChC+O,eAAOjN;MACT;;AAGF,QAAIhN,QAAQyZ,iBAAiB;AAC3BA,sBAAgBphB,QAAQ4U,IAAAA;;EAE5B;AC9MO,WAASkN,kBAA2B;AACzC,WAAO,OAAO1jB,WAAW,eAAe,OAAO2jB,aAAa;EAC9D;AAKO,WAASC,eAAeC,SAA+C;AAC5E,QAAIjE,SAASiE,QAAQC;AACrB,QAAIlE,UAAUA,OAAO9Y,SAAQ,MAAO,uBAAuB;AACzD8Y,eAAUA,OAAsBmE;;AAElC,WAAOnE;EACT;AAOA,WAASoE,cAAcC,YAA6B5V,MAAmB6V,gBAAwB;AAC7F,QAAIC;AACJ,QAAI,OAAOF,eAAe,UAAU;AAClCE,sBAAgBvJ,SAASqJ,YAAY,EAAA;AAErC,UAAIA,WAAWG,QAAQ,GAAA,MAAS,IAAI;AAElCD,wBAAgB,gBAAiB,MAAO9V,KAAKyV,WAAWI,cAAe;;WAEpE;AACLC,sBAAgBF;;AAGlB,WAAOE;EACT;AAEA,MAAME,oBAAmB,CAACC,YACxBA,QAAQC,cAAcC,YAAYH,iBAAiBC,SAAS,IAAI;AAE3D,WAASG,SAASC,IAAiBC,UAA0B;AAClE,WAAON,kBAAiBK,EAAIE,EAAAA,iBAAiBD,QAAAA;EAC/C;AAEA,MAAME,YAAY;IAAC;IAAO;IAAS;IAAU;EAAO;AACpD,WAASC,mBAAmBC,QAA6BhV,OAAeiV,QAA4B;AAClG,UAAMC,SAAS,CAAA;AACfD,aAASA,SAAS,MAAMA,SAAS;AACjC,aAASvW,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1B,YAAMyW,MAAML,UAAUpW,EAAE;AACxBwW,aAAOC,GAAI,IAAGC,WAAWJ,OAAOhV,QAAQ,MAAMmV,MAAMF,MAAAA,CAAO,KAAK;IAClE;AACAC,WAAOpY,QAAQoY,OAAO3jB,OAAO2jB,OAAO1jB;AACpC0jB,WAAO3Q,SAAS2Q,OAAOhc,MAAMgc,OAAO/b;AACpC,WAAO+b;EACT;AAEA,MAAMG,eAAe,CAAC5Q,IAAWC,IAAWzC,YACzCwC,KAAI,KAAKC,KAAI,OAAO,CAACzC,UAAU,CAAC,OAAwBqT;AAO3D,WAASC,kBACPC,IACArR,QAKE;AACF,UAAMsR,UAAUD,GAAkBC;AAClC,UAAMC,SAAUD,WAAWA,QAAQzjB,SAASyjB,QAAQ,CAAE,IAAGD;AACzD,UAAM,EAACG,SAASC,QAAAA,IAAWF;AAC3B,QAAIG,MAAM;AACV,QAAIpR,IAAGC;AACP,QAAI2Q,aAAaM,SAASC,SAASJ,GAAEvT,MAAM,GAAG;AAC5CwC,MAAAA,KAAIkR;AACJjR,MAAAA,KAAIkR;WACC;AACL,YAAMzP,OAAOhC,OAAO2R,sBAAqB;AACzCrR,MAAAA,KAAIiR,OAAOK,UAAU5P,KAAK5U;AAC1BmT,MAAAA,KAAIgR,OAAOM,UAAU7P,KAAKjN;AAC1B2c,YAAM;;AAER,WAAO;MAACpR,GAAAA;MAAGC,GAAAA;MAAGmR;IAAG;EACnB;AASO,WAASI,oBACdC,QACAxb,OAC0B;AAC1B,QAAI,YAAYwb,QAAO;AACrB,aAAOA;;AAGT,UAAM,EAAC/R,QAAQJ,wBAAAA,IAA2BrJ;AAC1C,UAAMsF,QAAQsU,kBAAiBnQ,MAAAA;AAC/B,UAAMgS,YAAYnW,MAAMoW,cAAc;AACtC,UAAMC,WAAWtB,mBAAmB/U,OAAO,SAAA;AAC3C,UAAMsW,UAAUvB,mBAAmB/U,OAAO,UAAU,OAAA;AACpD,UAAM,EAACyE,GAAAA,IAAGC,GAAAA,IAAGmR,IAAG,IAAIN,kBAAkBW,QAAO/R,MAAAA;AAC7C,UAAMU,UAAUwR,SAAS9kB,QAAQskB,OAAOS,QAAQ/kB;AAChD,UAAMuT,UAAUuR,SAASnd,OAAO2c,OAAOS,QAAQpd;AAE/C,QAAI,EAAC4D,OAAOyH,OAAAA,IAAU7J;AACtB,QAAIyb,WAAW;AACbrZ,eAASuZ,SAASvZ,QAAQwZ,QAAQxZ;AAClCyH,gBAAU8R,SAAS9R,SAAS+R,QAAQ/R;;AAEtC,WAAO;MACLE,GAAG7R,KAAKqR,OAAOQ,KAAII,WAAW/H,QAAQqH,OAAOrH,QAAQiH,uBAAAA;MACrDW,GAAG9R,KAAKqR,OAAOS,KAAII,WAAWP,SAASJ,OAAOI,SAASR,uBAAAA;IACzD;EACF;AAEA,WAASwS,iBAAiBpS,QAA2BrH,OAAeyH,QAAgC;AAClG,QAAI2E,UAAkBsN;AAEtB,QAAI1Z,UAAUnF,UAAa4M,WAAW5M,QAAW;AAC/C,YAAM8e,YAAY5C,eAAe1P,MAAAA;AACjC,UAAI,CAACsS,WAAW;AACd3Z,gBAAQqH,OAAOuS;AACfnS,iBAASJ,OAAOwS;aACX;AACL,cAAMxQ,OAAOsQ,UAAUX,sBAAqB;AAC5C,cAAMc,iBAAiBtC,kBAAiBmC,SAAAA;AACxC,cAAMI,kBAAkB9B,mBAAmB6B,gBAAgB,UAAU,OAAA;AACrE,cAAME,mBAAmB/B,mBAAmB6B,gBAAgB,SAAA;AAC5D9Z,gBAAQqJ,KAAKrJ,QAAQga,iBAAiBha,QAAQ+Z,gBAAgB/Z;AAC9DyH,iBAAS4B,KAAK5B,SAASuS,iBAAiBvS,SAASsS,gBAAgBtS;AACjE2E,mBAAW+K,cAAc2C,eAAe1N,UAAUuN,WAAW,aAAA;AAC7DD,oBAAYvC,cAAc2C,eAAeJ,WAAWC,WAAW,cAAA;;;AAGnE,WAAO;MACL3Z;MACAyH;MACA2E,UAAUA,YAAY6N;MACtBP,WAAWA,aAAaO;IAC1B;EACF;AAEA,MAAMC,SAAS,CAACle,OAAclG,KAAKqR,MAAMnL,KAAI,EAAM,IAAA;AAG5C,WAASme,eACd9S,QACA+S,SACAC,UACAC,aACmC;AACnC,UAAMpX,QAAQsU,kBAAiBnQ,MAAAA;AAC/B,UAAMkT,UAAUtC,mBAAmB/U,OAAO,QAAA;AAC1C,UAAMkJ,WAAW+K,cAAcjU,MAAMkJ,UAAU/E,QAAQ,aAAkB4S,KAAAA;AACzE,UAAMP,YAAYvC,cAAcjU,MAAMwW,WAAWrS,QAAQ,cAAmB4S,KAAAA;AAC5E,UAAMO,gBAAgBf,iBAAiBpS,QAAQ+S,SAASC,QAAAA;AACxD,QAAI,EAACra,OAAOyH,OAAAA,IAAU+S;AAEtB,QAAItX,MAAMoW,cAAc,eAAe;AACrC,YAAME,UAAUvB,mBAAmB/U,OAAO,UAAU,OAAA;AACpD,YAAMqW,WAAWtB,mBAAmB/U,OAAO,SAAA;AAC3ClD,eAASuZ,SAASvZ,QAAQwZ,QAAQxZ;AAClCyH,gBAAU8R,SAAS9R,SAAS+R,QAAQ/R;;AAEtCzH,YAAQlK,KAAKL,IAAI,GAAGuK,QAAQua,QAAQva,KAAK;AACzCyH,aAAS3R,KAAKL,IAAI,GAAG6kB,cAActa,QAAQsa,cAAc7S,SAAS8S,QAAQ9S,MAAM;AAChFzH,YAAQka,OAAOpkB,KAAKN,IAAIwK,OAAOoM,UAAUoO,cAAcpO,QAAQ,CAAA;AAC/D3E,aAASyS,OAAOpkB,KAAKN,IAAIiS,QAAQiS,WAAWc,cAAcd,SAAS,CAAA;AACnE,QAAI1Z,SAAS,CAACyH,QAAQ;AAGpBA,eAASyS,OAAOla,QAAQ,CAAA;;AAG1B,UAAMya,iBAAiBL,YAAYvf,UAAawf,aAAaxf;AAE7D,QAAI4f,kBAAkBH,eAAeE,cAAc/S,UAAUA,SAAS+S,cAAc/S,QAAQ;AAC1FA,eAAS+S,cAAc/S;AACvBzH,cAAQka,OAAOpkB,KAAKwI,MAAMmJ,SAAS6S,WAAAA,CAAAA;;AAGrC,WAAO;MAACta;MAAOyH;IAAM;EACvB;AAQO,WAASiT,YACd9c,OACA+c,YACAC,YACgB;AAChB,UAAMC,aAAaF,cAAc;AACjC,UAAMG,eAAehlB,KAAKwI,MAAMV,MAAM6J,SAASoT,UAAAA;AAC/C,UAAME,cAAcjlB,KAAKwI,MAAMV,MAAMoC,QAAQ6a,UAAAA;AAE7Cjd,UAAM6J,SAAS3R,KAAKwI,MAAMV,MAAM6J,MAAM;AACtC7J,UAAMoC,QAAQlK,KAAKwI,MAAMV,MAAMoC,KAAK;AAEpC,UAAMqH,SAASzJ,MAAMyJ;AAKrB,QAAIA,OAAOnE,UAAU0X,cAAe,CAACvT,OAAOnE,MAAMuE,UAAU,CAACJ,OAAOnE,MAAMlD,QAAS;AACjFqH,aAAOnE,MAAMuE,SAAS,GAAG7J,MAAM6J,MAAM;AACrCJ,aAAOnE,MAAMlD,QAAQ,GAAGpC,MAAMoC,KAAK;;AAGrC,QAAIpC,MAAMqJ,4BAA4B4T,cAC/BxT,OAAOI,WAAWqT,gBAClBzT,OAAOrH,UAAU+a,aAAa;AACnCnd,YAAMqJ,0BAA0B4T;AAChCxT,aAAOI,SAASqT;AAChBzT,aAAOrH,QAAQ+a;AACfnd,YAAM2F,IAAIyX,aAAaH,YAAY,GAAG,GAAGA,YAAY,GAAG,CAAA;AACxD,aAAO;;AAET,WAAO;EACT;AAOaI,MAAAA,+BAAgC,WAAW;AACtD,QAAIC,mBAAmB;AACvB,QAAI;AACF,YAAMxe,UAAU;QACd,IAAIye,UAAU;AACZD,6BAAmB;AACnB,iBAAO;QACT;MACF;AAEA,UAAIrE,gBAAmB,GAAA;AACrB1jB,eAAOioB,iBAAiB,QAAQ,MAAM1e,OAAAA;AACtCvJ,eAAOkoB,oBAAoB,QAAQ,MAAM3e,OAAAA;;IAE7C,SAASgc,IAAG;IAEZ;AACA,WAAOwC;EACT,EAAK;AAYE,WAASI,aACd7D,SACAK,UACoB;AACpB,UAAM/d,QAAQ6d,SAASH,SAASK,QAAAA;AAChC,UAAM9K,WAAUjT,SAASA,MAAMkT,MAAM,mBAAA;AACrC,WAAOD,WAAU,CAACA,SAAQ,CAAA,IAAKnS;EACjC;AC9RO,WAAS0gB,aAAaC,IAAWC,IAAWzkB,IAAW4M,MAAO;AACnE,WAAO;MACL+D,GAAG6T,GAAG7T,IAAI3Q,MAAKykB,GAAG9T,IAAI6T,GAAG7T;MACzBC,GAAG4T,GAAG5T,IAAI5Q,MAAKykB,GAAG7T,IAAI4T,GAAG5T;IAC3B;EACF;AAKO,WAAS8T,sBACdF,IACAC,IACAzkB,IAAW4M,MACX;AACA,WAAO;MACL+D,GAAG6T,GAAG7T,IAAI3Q,MAAKykB,GAAG9T,IAAI6T,GAAG7T;MACzBC,GAAGhE,SAAS,WAAW5M,KAAI,MAAMwkB,GAAG5T,IAAI6T,GAAG7T,IACvChE,SAAS,UAAU5M,KAAI,IAAIwkB,GAAG5T,IAAI6T,GAAG7T,IACnC5Q,KAAI,IAAIykB,GAAG7T,IAAI4T,GAAG5T;IAC1B;EACF;AAKO,WAAS+T,qBAAqBH,IAAiBC,IAAiBzkB,IAAW4M,MAAO;AACvF,UAAMgY,MAAM;MAACjU,GAAG6T,GAAGlR;MAAM1C,GAAG4T,GAAGhR;IAAI;AACnC,UAAMqR,MAAM;MAAClU,GAAG8T,GAAGpR;MAAMzC,GAAG6T,GAAGlR;IAAI;AACnC,UAAMuR,KAAIP,aAAaC,IAAII,KAAK5kB,EAAAA;AAChC,UAAM+kB,KAAIR,aAAaK,KAAKC,KAAK7kB,EAAAA;AACjC,UAAMglB,KAAIT,aAAaM,KAAKJ,IAAIzkB,EAAAA;AAChC,UAAM4C,KAAI2hB,aAAaO,IAAGC,IAAG/kB,EAAAA;AAC7B,UAAM0hB,KAAI6C,aAAaQ,IAAGC,IAAGhlB,EAAAA;AAC7B,WAAOukB,aAAa3hB,IAAG8e,IAAG1hB,EAAAA;EAC5B;AChCA,MAAMilB,wBAAwB,SAASC,OAAelc,OAA2B;AAC/E,WAAO;MACL2H,EAAEA,IAAG;AACH,eAAOuU,QAAQA,QAAQlc,QAAQ2H;MACjC;MACAwU,SAASrU,IAAG;AACV9H,gBAAQ8H;MACV;MACA+C,UAAUzW,OAAO;AACf,YAAIA,UAAU,UAAU;AACtB,iBAAOA;;AAET,eAAOA,UAAU,UAAU,SAAS;MACtC;MACAgoB,MAAMzU,IAAG5N,OAAO;AACd,eAAO4N,KAAI5N;MACb;MACAsiB,WAAW1U,IAAG2U,WAAW;AACvB,eAAO3U,KAAI2U;MACb;IACF;EACF;AAEA,MAAMC,wBAAwB,WAAuB;AACnD,WAAO;MACL5U,EAAEA,IAAG;AACH,eAAOA;MACT;MACAwU,SAASrU,IAAG;MAAA;MAEZ+C,UAAUzW,OAAO;AACf,eAAOA;MACT;MACAgoB,MAAMzU,IAAG5N,OAAO;AACd,eAAO4N,KAAI5N;MACb;MACAsiB,WAAW1U,IAAG6U,YAAY;AACxB,eAAO7U;MACT;IACF;EACF;AAEO,WAAS8U,cAAc9nB,KAAcunB,OAAelc,OAAe;AACxE,WAAOrL,MAAMsnB,sBAAsBC,OAAOlc,KAAAA,IAASuc,sBAAuB;EAC5E;AAEO,WAASG,sBAAsBnZ,KAA+BoZ,WAA0B;AAC7F,QAAIzZ,OAA4B0Z;AAChC,QAAID,cAAc,SAASA,cAAc,OAAO;AAC9CzZ,cAAQK,IAAI8D,OAAOnE;AACnB0Z,iBAAW;QACT1Z,MAAM6U,iBAAiB,WAAA;QACvB7U,MAAM2Z,oBAAoB,WAAA;MAC3B;AAED3Z,YAAM4Z,YAAY,aAAaH,WAAW,WAAA;AACzCpZ,UAAiDwZ,oBAAoBH;;EAE1E;AAEO,WAASI,qBAAqBzZ,KAA+BqZ,UAA6B;AAC/F,QAAIA,aAAa/hB,QAAW;AAC1B,aAAQ0I,IAAiDwZ;AACzDxZ,UAAI8D,OAAOnE,MAAM4Z,YAAY,aAAaF,SAAS,CAAA,GAAIA,SAAS,CAAE,CAAA;;EAEtE;AC/DA,WAASK,WAAWnF,UAAU;AAC5B,QAAIA,aAAa,SAAS;AACxB,aAAO;QACLoF,SAASC;QACTC,SAASC;QACTC,WAAWC;MACb;;AAEF,WAAO;MACLL,SAASM;MACTJ,SAAS,CAACtB,IAAGC,OAAMD,KAAIC;MACvBuB,WAAW3V,CAAAA,OAAKA;IAClB;EACF;AAEA,WAAS8V,iBAAiB,EAACnpB,OAAAA,QAAOC,KAAKY,OAAO8F,MAAAA,OAAMiI,MAAK,GAAG;AAC1D,WAAO;MACL5O,OAAOA,SAAQa;MACfZ,KAAKA,MAAMY;MACX8F,MAAMA,UAAS1G,MAAMD,SAAQ,KAAKa,UAAU;MAC5C+N;IACF;EACF;AAEA,WAASwa,WAAWC,SAAS5oB,QAAQmK,QAAQ;AAC3C,UAAM,EAAC4Y,UAAUxjB,OAAOspB,YAAYrpB,KAAKspB,SAAQ,IAAI3e;AACrD,UAAM,EAACge,SAASI,UAAS,IAAIL,WAAWnF,QAAAA;AACxC,UAAM3iB,QAAQJ,OAAOG;AAErB,QAAI,EAACZ,OAAAA,QAAOC,KAAK0G,MAAAA,MAAAA,IAAQ0iB;AACzB,QAAI/b,IAAG2E;AAEP,QAAItL,OAAM;AACR3G,MAAAA,UAASa;AACTZ,aAAOY;AACP,WAAKyM,KAAI,GAAG2E,OAAOpR,OAAOyM,KAAI2E,MAAM,EAAE3E,IAAG;AACvC,YAAI,CAACsb,QAAQI,UAAUvoB,OAAOT,SAAQa,KAAAA,EAAO2iB,QAAAA,CAAS,GAAG8F,YAAYC,QAAW,GAAA;AAC9E;;AAEFvpB,QAAAA;AACAC;MACF;AACAD,MAAAA,UAASa;AACTZ,aAAOY;;AAGT,QAAIZ,MAAMD,QAAO;AACfC,aAAOY;;AAET,WAAO;MAACb,OAAAA;MAAOC;MAAK0G,MAAAA;MAAMiI,OAAOya,QAAQza;IAAK;EAChD;AAgBO,WAAS4a,cAAcH,SAAS5oB,QAAQmK,QAAQ;AACrD,QAAI,CAACA,QAAQ;AACX,aAAO;QAACye;MAAQ;;AAGlB,UAAM,EAAC7F,UAAUxjB,OAAOspB,YAAYrpB,KAAKspB,SAAQ,IAAI3e;AACrD,UAAM/J,QAAQJ,OAAOG;AACrB,UAAM,EAACkoB,SAASF,SAASI,UAAS,IAAIL,WAAWnF,QAAAA;AACjD,UAAM,EAACxjB,OAAAA,QAAOC,KAAK0G,MAAAA,OAAMiI,MAAAA,IAASwa,WAAWC,SAAS5oB,QAAQmK,MAAAA;AAE9D,UAAMkZ,SAAS,CAAA;AACf,QAAI2F,SAAS;AACb,QAAIC,WAAW;AACf,QAAIjkB,OAAO2P,OAAOuU;AAElB,UAAMC,gBAAgB,MAAMhB,QAAQU,YAAYK,WAAWlkB,KAAUqjB,KAAAA,QAAQQ,YAAYK,SAAe,MAAA;AACxG,UAAME,cAAc,MAAMf,QAAQS,UAAU9jB,KAAAA,MAAW,KAAKmjB,QAAQW,UAAUI,WAAWlkB,KAAAA;AACzF,UAAMqkB,cAAc,MAAML,UAAUG,cAAAA;AACpC,UAAMG,aAAa,MAAM,CAACN,UAAUI,YAAAA;AAEpC,aAASvc,KAAItN,QAAOqiB,OAAOriB,QAAOsN,MAAKrN,KAAK,EAAEqN,IAAG;AAC/C8H,cAAQ3U,OAAO6M,KAAIzM,KAAM;AAEzB,UAAIuU,MAAMqK,MAAM;AACd;;AAGFha,cAAQujB,UAAU5T,MAAMoO,QAAS,CAAA;AAEjC,UAAI/d,UAAUkkB,WAAW;AACvB;;AAGFF,eAASb,QAAQnjB,OAAO6jB,YAAYC,QAAAA;AAEpC,UAAIG,aAAa,QAAQI,YAAe,GAAA;AACtCJ,mBAAWZ,QAAQrjB,OAAO6jB,UAAgB,MAAA,IAAIhc,KAAI+U;;AAGpD,UAAIqH,aAAa,QAAQK,WAAc,GAAA;AACrCjG,eAAOnS,KAAKwX,iBAAiB;UAACnpB,OAAO0pB;UAAUzpB,KAAKqN;UAAG3G,MAAAA;UAAM9F;UAAO+N;QAAK,CAAA,CAAA;AACzE8a,mBAAW;;AAEbrH,aAAO/U;AACPqc,kBAAYlkB;IACd;AAEA,QAAIikB,aAAa,MAAM;AACrB5F,aAAOnS,KAAKwX,iBAAiB;QAACnpB,OAAO0pB;QAAUzpB;QAAK0G,MAAAA;QAAM9F;QAAO+N;MAAK,CAAA,CAAA;;AAGxE,WAAOkV;EACT;AAYO,WAASkG,eAAetT,MAAM9L,QAAQ;AAC3C,UAAMkZ,SAAS,CAAA;AACf,UAAMmG,WAAWvT,KAAKuT;AAEtB,aAAS3c,KAAI,GAAGA,KAAI2c,SAASrpB,QAAQ0M,MAAK;AACxC,YAAM4c,MAAMV,cAAcS,SAAS3c,EAAAA,GAAIoJ,KAAKjW,QAAQmK,MAAAA;AACpD,UAAIsf,IAAItpB,QAAQ;AACdkjB,eAAOnS,KAAQuY,GAAAA,GAAAA;;IAEnB;AACA,WAAOpG;EACT;AAKA,WAASqG,gBAAgB1pB,QAAQI,OAAO8F,OAAMwb,UAAU;AACtD,QAAIniB,SAAQ;AACZ,QAAIC,MAAMY,QAAQ;AAElB,QAAI8F,SAAQ,CAACwb,UAAU;AAErB,aAAOniB,SAAQa,SAAS,CAACJ,OAAOT,MAAM,EAACyf,MAAM;AAC3Czf,QAAAA;MACF;;AAIF,WAAOA,SAAQa,SAASJ,OAAOT,MAAM,EAACyf,MAAM;AAC1Czf,MAAAA;IACF;AAGAA,IAAAA,UAASa;AAET,QAAI8F,OAAM;AAER1G,aAAOD;;AAGT,WAAOC,MAAMD,UAASS,OAAOR,MAAMY,KAAM,EAAC4e,MAAM;AAC9Cxf;IACF;AAGAA,WAAOY;AAEP,WAAO;MAACb,OAAAA;MAAOC;IAAG;EACpB;AASA,WAASmqB,cAAc3pB,QAAQT,QAAOmB,KAAKwF,OAAM;AAC/C,UAAM9F,QAAQJ,OAAOG;AACrB,UAAMkjB,SAAS,CAAA;AACf,QAAIuG,OAAOrqB;AACX,QAAIqiB,OAAO5hB,OAAOT,MAAM;AACxB,QAAIC;AAEJ,SAAKA,MAAMD,SAAQ,GAAGC,OAAOkB,KAAK,EAAElB,KAAK;AACvC,YAAMqqB,MAAM7pB,OAAOR,MAAMY,KAAM;AAC/B,UAAIypB,IAAI7K,QAAQ6K,IAAIC,MAAM;AACxB,YAAI,CAAClI,KAAK5C,MAAM;AACd9Y,UAAAA,QAAO;AACPmd,iBAAOnS,KAAK;YAAC3R,OAAOA,SAAQa;YAAOZ,MAAMA,MAAM,KAAKY;YAAO8F,MAAAA;UAAI,CAAA;AAE/D3G,UAAAA,SAAQqqB,OAAOC,IAAIC,OAAOtqB,MAAM;;aAE7B;AACLoqB,eAAOpqB;AACP,YAAIoiB,KAAK5C,MAAM;AACbzf,UAAAA,SAAQC;;;AAGZoiB,aAAOiI;IACT;AAEA,QAAID,SAAS,MAAM;AACjBvG,aAAOnS,KAAK;QAAC3R,OAAOA,SAAQa;QAAOZ,KAAKoqB,OAAOxpB;QAAO8F,MAAAA;MAAI,CAAA;;AAG5D,WAAOmd;EACT;AAUO,WAAS0G,iBAAiB9T,MAAM+T,gBAAgB;AACrD,UAAMhqB,SAASiW,KAAKjW;AACpB,UAAM0hB,WAAWzL,KAAKtO,QAAQ+Z;AAC9B,UAAMthB,QAAQJ,OAAOG;AAErB,QAAI,CAACC,OAAO;AACV,aAAO,CAAA;;AAGT,UAAM8F,QAAO,CAAC,CAAC+P,KAAKgU;AACpB,UAAM,EAAC1qB,OAAAA,QAAOC,IAAAA,IAAOkqB,gBAAgB1pB,QAAQI,OAAO8F,OAAMwb,QAAAA;AAE1D,QAAIA,aAAa,MAAM;AACrB,aAAOwI,cAAcjU,MAAM;QAAC;UAAC1W,OAAAA;UAAOC;UAAK0G,MAAAA;QAAI;MAAE,GAAElG,QAAQgqB,cAAAA;;AAG3D,UAAMtpB,MAAMlB,MAAMD,SAAQC,MAAMY,QAAQZ;AACxC,UAAM2qB,eAAe,CAAC,CAAClU,KAAKmU,aAAa7qB,WAAU,KAAKC,QAAQY,QAAQ;AACxE,WAAO8pB,cAAcjU,MAAM0T,cAAc3pB,QAAQT,QAAOmB,KAAKypB,YAAAA,GAAenqB,QAAQgqB,cAAAA;EACtF;AAQA,WAASE,cAAcjU,MAAMuT,UAAUxpB,QAAQgqB,gBAAgB;AAC7D,QAAI,CAACA,kBAAkB,CAACA,eAAe9N,cAAc,CAAClc,QAAQ;AAC5D,aAAOwpB;;AAET,WAAOa,gBAAgBpU,MAAMuT,UAAUxpB,QAAQgqB,cAAAA;EACjD;AASA,WAASK,gBAAgBpU,MAAMuT,UAAUxpB,QAAQgqB,gBAAgB;AAC/D,UAAMM,eAAerU,KAAKsU,OAAOhY,WAAU;AAC3C,UAAMiY,YAAYC,UAAUxU,KAAKtO,OAAO;AACxC,UAAM,EAAC+iB,eAAeC,cAAchjB,SAAS,EAAC+Z,SAAQ,EAAC,IAAIzL;AAC3D,UAAM7V,QAAQJ,OAAOG;AACrB,UAAMkjB,SAAS,CAAA;AACf,QAAIuH,YAAYJ;AAChB,QAAIjrB,SAAQiqB,SAAS,CAAA,EAAGjqB;AACxB,QAAIsN,KAAItN;AAER,aAASsrB,SAAS1oB,IAAGwhB,IAAGmH,IAAGC,KAAI;AAC7B,YAAMC,MAAMtJ,WAAW,KAAK;AAC5B,UAAIvf,OAAMwhB,IAAG;AACX;;AAGFxhB,MAAAA,MAAK/B;AACL,aAAOJ,OAAOmC,KAAI/B,KAAM,EAAC4e,MAAM;AAC7B7c,QAAAA,MAAK6oB;MACP;AACA,aAAOhrB,OAAO2jB,KAAIvjB,KAAM,EAAC4e,MAAM;AAC7B2E,QAAAA,MAAKqH;MACP;AACA,UAAI7oB,KAAI/B,UAAUujB,KAAIvjB,OAAO;AAC3BijB,eAAOnS,KAAK;UAAC3R,OAAO4C,KAAI/B;UAAOZ,KAAKmkB,KAAIvjB;UAAO8F,MAAM4kB;UAAG3c,OAAO4c;QAAE,CAAA;AACjEH,oBAAYG;AACZxrB,QAAAA,SAAQokB,KAAIvjB;;IAEhB;AAEA,eAAWwoB,WAAWY,UAAU;AAC9BjqB,MAAAA,SAAQmiB,WAAWniB,SAAQqpB,QAAQrpB;AACnC,UAAIqiB,OAAO5hB,OAAOT,SAAQa,KAAM;AAChC,UAAI+N;AACJ,WAAKtB,KAAItN,SAAQ,GAAGsN,MAAK+b,QAAQppB,KAAKqN,MAAK;AACzC,cAAMsU,MAAKnhB,OAAO6M,KAAIzM,KAAM;AAC5B+N,gBAAQsc,UAAUT,eAAe9N,WAAWrC,cAAcyQ,cAAc;UACtErlB,MAAM;UACNgmB,IAAIrJ;UACJ6E,IAAItF;UACJ+J,cAAcre,KAAI,KAAKzM;UACvB+qB,aAAate,KAAIzM;UACjBuqB;QACF,CAAA,CAAA,CAAA;AACA,YAAIS,aAAajd,OAAOyc,SAAY,GAAA;AAClCC,mBAAStrB,QAAOsN,KAAI,GAAG+b,QAAQ1iB,MAAM0kB,SAAAA;;AAEvChJ,eAAOT;AACPyJ,oBAAYzc;MACd;AACA,UAAI5O,SAAQsN,KAAI,GAAG;AACjBge,iBAAStrB,QAAOsN,KAAI,GAAG+b,QAAQ1iB,MAAM0kB,SAAAA;;IAEzC;AAEA,WAAOvH;EACT;AAEA,WAASoH,UAAU9iB,SAAS;AAC1B,WAAO;MACL4F,iBAAiB5F,QAAQ4F;MACzB8d,gBAAgB1jB,QAAQ0jB;MACxBC,YAAY3jB,QAAQ2jB;MACpBC,kBAAkB5jB,QAAQ4jB;MAC1BC,iBAAiB7jB,QAAQ6jB;MACzBhX,aAAa7M,QAAQ6M;MACrBhH,aAAa7F,QAAQ6F;IACvB;EACF;AAEA,WAAS4d,aAAajd,OAAOyc,WAAW;AACtC,QAAI,CAACA,WAAW;AACd,aAAO;;AAET,UAAMvZ,SAAQ,CAAA;AACd,UAAMoa,WAAW,SAAS/e,KAAK1H,OAAO;AACpC,UAAI,CAACD,oBAAoBC,KAAQ,GAAA;AAC/B,eAAOA;;AAET,UAAI,CAACqM,OAAMxH,SAAS7E,KAAQ,GAAA;AAC1BqM,QAAAA,OAAMH,KAAKlM,KAAAA;;AAEb,aAAOqM,OAAMmR,QAAQxd,KAAAA;IACvB;AACA,WAAO6C,KAAKC,UAAUqG,OAAOsd,QAAAA,MAAc5jB,KAAKC,UAAU8iB,WAAWa,QAAAA;EACvE;;;AChWO,MAAMC,WAAN,MAAMA;IACXC,cAAc;AACZ,WAAKC,WAAW;AAChB,WAAKC,UAAU,oBAAIC,IAAAA;AACnB,WAAKC,WAAW;AAChB,WAAKC,YAAYC;IACnB;IAKAC,QAAQC,OAAOC,OAAOC,MAAMC,MAAM;AAChC,YAAMC,YAAYH,MAAMI,UAAUF,IAAK;AACvC,YAAMG,WAAWL,MAAMM;AAEvBH,gBAAUI,QAAQC,CAAAA,QAAMA,IAAG;QACzBT;QACAU,SAAST,MAAMS;QACfJ;QACAK,aAAaC,KAAKC,IAAIX,OAAOD,MAAMa,OAAOR,QAAAA;MAC5C,CAAA,CAAA;IACF;IAKAS,WAAW;AACT,UAAI,KAAKtB,UAAU;AACjB;;AAEF,WAAKG,WAAW;AAEhB,WAAKH,WAAWuB,iBAAiBC,KAAKC,QAAQ,MAAM;AAClD,aAAKC,QAAO;AACZ,aAAK1B,WAAW;AAEhB,YAAI,KAAKG,UAAU;AACjB,eAAKmB,SAAQ;;MAEjB,CAAA;IACF;IAKAI,QAAQjB,OAAOkB,KAAKC,IAAG,GAAI;AACzB,UAAIC,YAAY;AAEhB,WAAK5B,QAAQc,QAAQ,CAACP,OAAOD,UAAU;AACrC,YAAI,CAACC,MAAMsB,WAAW,CAACtB,MAAMuB,MAAMC,QAAQ;AACzC;;AAEF,cAAMD,QAAQvB,MAAMuB;AACpB,YAAIE,KAAIF,MAAMC,SAAS;AACvB,YAAIE,QAAO;AACX,YAAIC;AAEJ,eAAOF,MAAK,GAAG,EAAEA,IAAG;AAClBE,iBAAOJ,MAAME,EAAE;AAEf,cAAIE,KAAKC,SAAS;AAChB,gBAAID,KAAKE,SAAS7B,MAAMM,UAAU;AAGhCN,oBAAMM,WAAWqB,KAAKE;;AAExBF,iBAAKG,KAAK7B,IAAAA;AACVyB,YAAAA,QAAO;iBACF;AAGLH,kBAAME,EAAAA,IAAKF,MAAMA,MAAMC,SAAS,CAAE;AAClCD,kBAAMQ,IAAG;;QAEb;AAEA,YAAIL,OAAM;AACR3B,gBAAM2B,KAAI;AACV,eAAK5B,QAAQC,OAAOC,OAAOC,MAAM,UAAA;;AAGnC,YAAI,CAACsB,MAAMC,QAAQ;AACjBxB,gBAAMsB,UAAU;AAChB,eAAKxB,QAAQC,OAAOC,OAAOC,MAAM,UAAA;AACjCD,gBAAMS,UAAU;;AAGlBY,qBAAaE,MAAMC;MACrB,CAAA;AAEA,WAAK5B,YAAYK;AAEjB,UAAIoB,cAAc,GAAG;AACnB,aAAK1B,WAAW;;IAEpB;IAKAqC,UAAUjC,OAAO;AACf,YAAMkC,SAAS,KAAKxC;AACpB,UAAIO,QAAQiC,OAAOC,IAAInC,KAAAA;AACvB,UAAI,CAACC,OAAO;AACVA,gBAAQ;UACNsB,SAAS;UACTb,SAAS;UACTc,OAAO,CAAA;UACPnB,WAAW;YACT+B,UAAU,CAAA;YACVC,UAAU,CAAA;UACZ;QACF;AACAH,eAAOI,IAAItC,OAAOC,KAAAA;;AAEpB,aAAOA;IACT;IAOAsC,OAAOvC,OAAOwC,QAAOC,IAAI;AACvB,WAAKR,UAAUjC,KAAAA,EAAOK,UAAUmC,MAAAA,EAAOE,KAAKD,EAAAA;IAC9C;IAOAE,IAAI3C,OAAOwB,OAAO;AAChB,UAAI,CAACA,SAAS,CAACA,MAAMC,QAAQ;AAC3B;;AAEF,WAAKQ,UAAUjC,KAAAA,EAAOwB,MAAMkB,KAAQlB,GAAAA,KAAAA;IACtC;IAMAoB,IAAI5C,OAAO;AACT,aAAO,KAAKiC,UAAUjC,KAAAA,EAAOwB,MAAMC,SAAS;IAC9C;IAMAX,MAAMd,OAAO;AACX,YAAMC,QAAQ,KAAKP,QAAQyC,IAAInC,KAAAA;AAC/B,UAAI,CAACC,OAAO;AACV;;AAEFA,YAAMsB,UAAU;AAChBtB,YAAMa,QAAQM,KAAKC,IAAG;AACtBpB,YAAMM,WAAWN,MAAMuB,MAAMqB,OAAO,CAACC,KAAKC,QAAQnC,KAAKoC,IAAIF,KAAKC,IAAIE,SAAS,GAAG,CAAA;AAChF,WAAKlC,SAAQ;IACf;IAEAQ,QAAQvB,OAAO;AACb,UAAI,CAAC,KAAKJ,UAAU;AAClB,eAAO;;AAET,YAAMK,QAAQ,KAAKP,QAAQyC,IAAInC,KAAAA;AAC/B,UAAI,CAACC,SAAS,CAACA,MAAMsB,WAAW,CAACtB,MAAMuB,MAAMC,QAAQ;AACnD,eAAO;;AAET,aAAO;IACT;IAMAyB,KAAKlD,OAAO;AACV,YAAMC,QAAQ,KAAKP,QAAQyC,IAAInC,KAAAA;AAC/B,UAAI,CAACC,SAAS,CAACA,MAAMuB,MAAMC,QAAQ;AACjC;;AAEF,YAAMD,QAAQvB,MAAMuB;AACpB,UAAIE,KAAIF,MAAMC,SAAS;AAEvB,aAAOC,MAAK,GAAG,EAAEA,IAAG;AAClBF,cAAME,EAAE,EAACyB,OAAM;MACjB;AACAlD,YAAMuB,QAAQ,CAAA;AACd,WAAKzB,QAAQC,OAAOC,OAAOmB,KAAKC,IAAG,GAAI,UAAA;IACzC;IAMA+B,OAAOpD,OAAO;AACZ,aAAO,KAAKN,QAAQ2D,OAAOrD,KAAAA;IAC7B;EACF;AAGA,MAAA,WAA+B,oBAAIT,SAAW;ACjN9C,MAAM+D,cAAc;AACpB,MAAMC,gBAAgB;IACpBC,QAAQC,OAAMC,KAAIC,QAAQ;AACxB,aAAOA,SAAS,MAAMD,MAAKD;IAC7B;IAMAG,MAAMH,OAAMC,KAAIC,QAAQ;AACtB,YAAME,KAAKC,MAAaL,SAAQH,WAAAA;AAChC,YAAMS,KAAKF,GAAGG,SAASF,MAAaJ,OAAMJ,WAAAA;AAC1C,aAAOS,MAAMA,GAAGC,QACZD,GAAGE,IAAIJ,IAAIF,MAAAA,EAAQO,UAAS,IAC5BR;IACN;IACAS,OAAOV,OAAMC,KAAIC,QAAQ;AACvB,aAAOF,SAAQC,MAAKD,SAAQE;IAC9B;EACF;AAEe,MAAMS,YAAN,MAAMA;IACnB5E,YAAY6E,KAAKC,QAAQC,MAAMb,KAAI;AACjC,YAAMc,eAAeF,OAAOC,IAAK;AAEjCb,MAAAA,MAAKe,QAAQ;QAACJ,IAAIX;QAAIA;QAAIc;QAAcH,IAAIZ;MAAK,CAAA;AACjD,YAAMA,QAAOgB,QAAQ;QAACJ,IAAIZ;QAAMe;QAAcd;MAAG,CAAA;AAEjD,WAAK7B,UAAU;AACf,WAAK6C,MAAML,IAAI5D,MAAM8C,cAAcc,IAAIlE,QAAQ,OAAOsD,KAAK;AAC3D,WAAKkB,UAAUC,QAAQP,IAAIQ,MAAM,KAAKD,QAAQE;AAC9C,WAAKC,SAASnE,KAAKoE,MAAM5D,KAAKC,IAAG,KAAMgD,IAAIY,SAAS,EAAA;AACpD,WAAKhC,YAAY,KAAKnB,SAASlB,KAAKoE,MAAMX,IAAI9D,QAAQ;AACtD,WAAK2E,QAAQ,CAAC,CAACb,IAAIc;AACnB,WAAKC,UAAUd;AACf,WAAKe,QAAQd;AACb,WAAKe,QAAQ7B;AACb,WAAK8B,MAAM7B;AACX,WAAK8B,YAAY1F;IACnB;IAEA2F,SAAS;AACP,aAAO,KAAK5D;IACd;IAEA6D,OAAOrB,KAAKX,KAAIxD,MAAM;AACpB,UAAI,KAAK2B,SAAS;AAChB,aAAK9B,QAAQ,KAAK;AAElB,cAAMyE,eAAe,KAAKY,QAAQ,KAAKC,KAAK;AAC5C,cAAMM,UAAUzF,OAAO,KAAK6E;AAC5B,cAAMa,SAAS,KAAK3C,YAAY0C;AAChC,aAAKZ,SAAS7E;AACd,aAAK+C,YAAYrC,KAAKoE,MAAMpE,KAAKoC,IAAI4C,QAAQvB,IAAI9D,QAAQ,CAAA;AACzD,aAAKuB,UAAU6D;AACf,aAAKT,QAAQ,CAAC,CAACb,IAAIc;AACnB,aAAKI,MAAMd,QAAQ;UAACJ,IAAIX;UAAIA;UAAIc;UAAcH,IAAIZ;QAAK,CAAA;AACvD,aAAK6B,QAAQb,QAAQ;UAACJ,IAAIZ;UAAMe;UAAcd;QAAG,CAAA;;IAErD;IAEAP,SAAS;AACP,UAAI,KAAKtB,SAAS;AAEhB,aAAKE,KAAKX,KAAKC,IAAG,CAAA;AAClB,aAAKQ,UAAU;AACf,aAAK9B,QAAQ,KAAK;;IAEtB;IAEAgC,KAAK7B,MAAM;AACT,YAAMyF,UAAUzF,OAAO,KAAK6E;AAC5B,YAAMxE,YAAW,KAAK0C;AACtB,YAAMsB,OAAO,KAAKc;AAClB,YAAM5B,QAAO,KAAK6B;AAClB,YAAMH,QAAO,KAAKD;AAClB,YAAMxB,MAAK,KAAK6B;AAChB,UAAI5B;AAEJ,WAAK9B,UAAU4B,UAASC,QAAOyB,SAASQ,UAAUpF;AAElD,UAAI,CAAC,KAAKsB,SAAS;AACjB,aAAKuD,QAAQb,IAAAA,IAAQb;AACrB,aAAK3D,QAAQ,IAAI;AACjB;;AAGF,UAAI4F,UAAU,GAAG;AACf,aAAKP,QAAQb,IAAAA,IAAQd;AACrB;;AAGFE,eAAUgC,UAAUpF,YAAY;AAChCoD,eAASwB,SAAQxB,SAAS,IAAI,IAAIA,SAASA;AAC3CA,eAAS,KAAKgB,QAAQ/D,KAAKC,IAAI,GAAGD,KAAKoC,IAAI,GAAGW,MAAAA,CAAAA,CAAAA;AAE9C,WAAKyB,QAAQb,IAAK,IAAG,KAAKG,IAAIjB,OAAMC,KAAIC,MAAAA;IAC1C;IAEAkC,OAAO;AACL,YAAMC,WAAW,KAAKN,cAAc,KAAKA,YAAY,CAAA;AACrD,aAAO,IAAIO,QAAQ,CAACC,KAAKC,QAAQ;AAC/BH,iBAASpD,KAAK;UAACsD;UAAKC;QAAG,CAAA;MACzB,CAAA;IACF;IAEAlG,QAAQmG,UAAU;AAChB,YAAMC,SAASD,WAAW,QAAQ;AAClC,YAAMJ,WAAW,KAAKN,aAAa,CAAA;AACnC,eAAS9D,KAAI,GAAGA,KAAIoE,SAASrE,QAAQC,MAAK;AACxCoE,iBAASpE,EAAE,EAACyE,MAAO,EAAA;MACrB;IACF;EACF;ACjHe,MAAMC,aAAN,MAAMA;IACnB5G,YAAYQ,OAAOqG,QAAQ;AACzB,WAAKC,SAAStG;AACd,WAAKuG,cAAc,oBAAI5G,IAAAA;AACvB,WAAK6G,UAAUH,MAAAA;IACjB;IAEAG,UAAUH,QAAQ;AAChB,UAAI,CAACI,SAASJ,MAAS,GAAA;AACrB;;AAGF,YAAMK,mBAAmBC,OAAOC,KAAKC,SAASC,SAAS;AACvD,YAAMC,gBAAgB,KAAKR;AAE3BI,aAAOK,oBAAoBX,MAAAA,EAAQ7F,QAAQyG,CAAAA,QAAO;AAChD,cAAM5C,MAAMgC,OAAOY,GAAI;AACvB,YAAI,CAACR,SAASpC,GAAM,GAAA;AAClB;;AAEF,cAAM6B,WAAW,CAAA;AACjB,mBAAWgB,WAAUR,kBAAkB;AACrCR,mBAASgB,OAAAA,IAAU7C,IAAI6C,OAAO;QAChC;AAECC,SAAAA,QAAQ9C,IAAI+C,UAAU,KAAK/C,IAAI+C,cAAc;UAACH;QAAI,GAAEzG,QAAQ,CAAC+D,SAAS;AACrE,cAAIA,SAAS0C,OAAO,CAACF,cAAcnE,IAAI2B,IAAO,GAAA;AAC5CwC,0BAAczE,IAAIiC,MAAM2B,QAAAA;;QAE5B,CAAA;MACF,CAAA;IACF;IAMAmB,gBAAgB/C,QAAQgD,QAAQ;AAC9B,YAAMC,aAAaD,OAAOE;AAC1B,YAAMA,UAAUC,qBAAqBnD,QAAQiD,UAAAA;AAC7C,UAAI,CAACC,SAAS;AACZ,eAAO,CAAA;;AAGT,YAAME,aAAa,KAAKC,kBAAkBH,SAASD,UAAAA;AACnD,UAAIA,WAAWK,SAAS;AAItBC,iBAASvD,OAAOkD,QAAQM,aAAaP,UAAYQ,EAAAA,KAAK,MAAM;AAC1DzD,iBAAOkD,UAAUD;QACnB,GAAG,MAAM;QAET,CAAA;;AAGF,aAAOG;IACT;IAKAC,kBAAkBrD,QAAQgD,QAAQ;AAChC,YAAMP,gBAAgB,KAAKR;AAC3B,YAAMmB,aAAa,CAAA;AACnB,YAAMnG,UAAU+C,OAAOwD,gBAAgBxD,OAAOwD,cAAc,CAAA;AAC5D,YAAME,QAAQrB,OAAOC,KAAKU,MAAAA;AAC1B,YAAMpH,OAAOkB,KAAKC,IAAG;AACrB,UAAIK;AAEJ,WAAKA,KAAIsG,MAAMvG,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AACtC,cAAM6C,OAAOyD,MAAMtG,EAAE;AACrB,YAAI6C,KAAK0D,OAAO,CAAA,MAAO,KAAK;AAC1B;;AAGF,YAAI1D,SAAS,WAAW;AACtBmD,qBAAWhF,KAAQ,GAAA,KAAK2E,gBAAgB/C,QAAQgD,MAAAA,CAAAA;AAChD;;AAEF,cAAMY,QAAQZ,OAAO/C,IAAK;AAC1B,YAAIuC,YAAYvF,QAAQgD,IAAK;AAC7B,cAAMF,MAAM0C,cAAc5E,IAAIoC,IAAAA;AAE9B,YAAIuC,WAAW;AACb,cAAIzC,OAAOyC,UAAUrB,OAAM,GAAI;AAE7BqB,sBAAUpB,OAAOrB,KAAK6D,OAAOhI,IAAAA;AAC7B;iBACK;AACL4G,sBAAU3D,OAAM;;;AAGpB,YAAI,CAACkB,OAAO,CAACA,IAAI9D,UAAU;AAEzB+D,iBAAOC,IAAAA,IAAQ2D;AACf;;AAGF3G,gBAAQgD,IAAAA,IAAQuC,YAAY,IAAI1C,UAAUC,KAAKC,QAAQC,MAAM2D,KAAAA;AAC7DR,mBAAWhF,KAAKoE,SAAAA;MAClB;AACA,aAAOY;IACT;IASAhC,OAAOpB,QAAQgD,QAAQ;AACrB,UAAI,KAAKf,YAAY4B,SAAS,GAAG;AAE/BxB,eAAOyB,OAAO9D,QAAQgD,MAAAA;AACtB;;AAGF,YAAMI,aAAa,KAAKC,kBAAkBrD,QAAQgD,MAAAA;AAElD,UAAII,WAAWjG,QAAQ;AACrB4G,iBAAS1F,IAAI,KAAK2D,QAAQoB,UAAAA;AAC1B,eAAO;;IAEX;EACF;AAEA,WAASG,SAASH,YAAYN,YAAY;AACxC,UAAM7F,UAAU,CAAA;AAChB,UAAMqF,OAAOD,OAAOC,KAAKQ,UAAAA;AACzB,aAAS1F,KAAI,GAAGA,KAAIkF,KAAKnF,QAAQC,MAAK;AACpC,YAAM4G,OAAOZ,WAAWd,KAAKlF,EAAAA,CAAE;AAC/B,UAAI4G,QAAQA,KAAK7C,OAAM,GAAI;AACzBlE,gBAAQmB,KAAK4F,KAAKzC,KAAI,CAAA;;IAE1B;AAEA,WAAOE,QAAQwC,IAAIhH,OAAAA;EACrB;AAEA,WAASkG,qBAAqBnD,QAAQiD,YAAY;AAChD,QAAI,CAACA,YAAY;AACf;;AAEF,QAAIC,UAAUlD,OAAOkD;AACrB,QAAI,CAACA,SAAS;AACZlD,aAAOkD,UAAUD;AACjB;;AAEF,QAAIC,QAAQI,SAAS;AAGnBtD,aAAOkD,UAAUA,UAAUb,OAAOyB,OAAO,CAAA,GAAIZ,SAAS;QAACI,SAAS;QAAOE,aAAa,CAAA;MAAE,CAAA;;AAExF,WAAON;EACT;ACtJA,WAASgB,UAAUC,OAAOC,iBAAiB;AACzC,UAAMC,OAAOF,SAASA,MAAMjB,WAAW,CAAA;AACvC,UAAMoB,UAAUD,KAAKC;AACrB,UAAM/H,MAAM8H,KAAK9H,QAAQf,SAAY4I,kBAAkB;AACvD,UAAM1F,MAAM2F,KAAK3F,QAAQlD,SAAY4I,kBAAkB;AACvD,WAAO;MACL5H,OAAO8H,UAAU5F,MAAMnC;MACvBgI,KAAKD,UAAU/H,MAAMmC;IACvB;EACF;AAEA,WAAS8F,YAAYC,QAAQC,QAAQN,iBAAiB;AACpD,QAAIA,oBAAoB,OAAO;AAC7B,aAAO;;AAET,UAAMO,KAAIT,UAAUO,QAAQL,eAAAA;AAC5B,UAAMQ,KAAIV,UAAUQ,QAAQN,eAAAA;AAE5B,WAAO;MACLS,KAAKD,GAAEL;MACPO,OAAOH,GAAEJ;MACTQ,QAAQH,GAAEpI;MACVwI,MAAML,GAAEnI;IACV;EACF;AAEA,WAASyI,OAAOrB,OAAO;AACrB,QAAIsB,IAAGC,IAAGC,IAAGC;AAEb,QAAIlD,SAASyB,KAAQ,GAAA;AACnBsB,MAAAA,KAAItB,MAAMiB;AACVM,MAAAA,KAAIvB,MAAMkB;AACVM,MAAAA,KAAIxB,MAAMmB;AACVM,MAAAA,KAAIzB,MAAMoB;WACL;AACLE,MAAAA,KAAIC,KAAIC,KAAIC,KAAIzB;;AAGlB,WAAO;MACLiB,KAAKK;MACLJ,OAAOK;MACPJ,QAAQK;MACRJ,MAAMK;MACNC,UAAU1B,UAAU;IACtB;EACF;AAEA,WAAS2B,wBAAwB7J,OAAO8J,eAAe;AACrD,UAAMlD,OAAO,CAAA;AACb,UAAMmD,WAAW/J,MAAMgK,uBAAuBF,aAAAA;AAC9C,QAAIpI,IAAGuI;AAEP,SAAKvI,KAAI,GAAGuI,OAAOF,SAAStI,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjDkF,WAAKlE,KAAKqH,SAASrI,EAAAA,EAAGwI,KAAK;IAC7B;AACA,WAAOtD;EACT;AAEA,WAASuD,WAAWC,OAAOlC,OAAOmC,SAAS7C,UAAU,CAAA,GAAI;AACvD,UAAMZ,OAAOwD,MAAMxD;AACnB,UAAM0D,aAAa9C,QAAQ+C,SAAS;AACpC,QAAI7I,IAAGuI,MAAMO,cAAcC;AAE3B,QAAIvC,UAAU,MAAM;AAClB;;AAGF,SAAKxG,KAAI,GAAGuI,OAAOrD,KAAKnF,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7C8I,qBAAe,CAAC5D,KAAKlF,EAAE;AACvB,UAAI8I,iBAAiBH,SAAS;AAC5B,YAAI7C,QAAQe,KAAK;AACf;;AAEF;;AAEFkC,mBAAaL,MAAM9C,OAAOkD,YAAa;AACvC,UAAIE,eAASD,UAAgBH,MAAAA,cAAepC,UAAU,KAAKyC,KAAKzC,KAAAA,MAAWyC,KAAKF,UAAAA,IAAe;AAC7FvC,iBAASuC;;IAEb;AACA,WAAOvC;EACT;AAEA,WAAS0C,yBAAyBC,MAAM;AACtC,UAAMjE,OAAOD,OAAOC,KAAKiE,IAAAA;AACzB,UAAMC,QAAQ,IAAIC,MAAMnE,KAAKnF,MAAM;AACnC,QAAIC,IAAGuI,MAAMhD;AACb,SAAKvF,KAAI,GAAGuI,OAAOrD,KAAKnF,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7CuF,YAAML,KAAKlF,EAAE;AACboJ,YAAMpJ,EAAAA,IAAK;QACTuH,GAAGhC;QACHiC,GAAG2B,KAAK5D,GAAI;MACd;IACF;AACA,WAAO6D;EACT;AAEA,WAASE,UAAUvC,OAAOwC,MAAM;AAC9B,UAAMC,UAAUzC,SAASA,MAAMjB,QAAQ0D;AACvC,WAAOA,WAAYA,YAAYpL,UAAamL,KAAKb,UAAUtK;EAC7D;AAEA,WAASqL,YAAYC,YAAYC,YAAYJ,MAAM;AACjD,WAAO,GAAGG,WAAWE,EAAE,IAAID,WAAWC,EAAE,IAAIL,KAAKb,SAASa,KAAK9K,IAAI;EACrE;AAEA,WAASoL,cAAc9C,OAAO;AAC5B,UAAM,EAAC5H,KAAKmC,KAAKwI,YAAYC,WAAU,IAAIhD,MAAM8C,cAAa;AAC9D,WAAO;MACL1K,KAAK2K,aAAa3K,MAAM6K,OAAOC;MAC/B3I,KAAKyI,aAAazI,MAAM0I,OAAOE;IACjC;EACF;AAEA,WAASC,iBAAiBC,QAAQC,UAAUC,YAAY;AACtD,UAAMC,WAAWH,OAAOC,QAAS,MAAKD,OAAOC,QAAAA,IAAY,CAAA;AACzD,WAAOE,SAASD,UAAAA,MAAgBC,SAASD,UAAAA,IAAc,CAAA;EACzD;AAEA,WAASE,oBAAoB9B,OAAO+B,QAAQC,UAAUjM,MAAM;AAC1D,eAAW8K,QAAQkB,OAAOE,wBAAwBlM,IAAAA,EAAMyI,QAAO,GAAI;AACjE,YAAMV,QAAQkC,MAAMa,KAAKf,KAAK;AAC9B,UAAI,YAAahC,QAAQ,KAAO,CAACkE,YAAYlE,QAAQ,GAAI;AACvD,eAAO+C,KAAKf;;IAEhB;AAEA,WAAO;EACT;AAEA,WAASoC,aAAaC,YAAYC,QAAQ;AACxC,UAAM,EAACxM,OAAOyM,aAAaxB,KAAAA,IAAQsB;AACnC,UAAMT,SAAS9L,MAAM0M,YAAY1M,MAAM0M,UAAU,CAAA;AACjD,UAAM,EAACC,QAAQR,QAAQjC,OAAOM,aAAAA,IAAgBS;AAC9C,UAAM2B,QAAQD,OAAOE;AACrB,UAAMC,QAAQX,OAAOU;AACrB,UAAM5F,MAAMkE,YAAYwB,QAAQR,QAAQlB,IAAAA;AACxC,UAAMhB,OAAOuC,OAAO/K;AACpB,QAAI2I;AAEJ,aAAS1I,KAAI,GAAGA,KAAIuI,MAAM,EAAEvI,IAAG;AAC7B,YAAME,OAAO4K,OAAO9K,EAAE;AACtB,YAAM,EAAC,CAACkL,KAAAA,GAAQ1C,QAAO,CAAC4C,KAAM,GAAE5E,MAAK,IAAItG;AACzC,YAAMmL,aAAanL,KAAK8K,YAAY9K,KAAK8K,UAAU,CAAA;AACnDtC,cAAQ2C,WAAWD,KAAAA,IAASjB,iBAAiBC,QAAQ7E,KAAKiD,MAAAA;AAC1DE,YAAMI,YAAAA,IAAgBtC;AAEtBkC,YAAM4C,OAAOd,oBAAoB9B,OAAO+B,QAAQ,MAAMlB,KAAK9K,IAAI;AAC/DiK,YAAM6C,UAAUf,oBAAoB9B,OAAO+B,QAAQ,OAAOlB,KAAK9K,IAAI;AAEnE,YAAM+M,eAAe9C,MAAM+C,kBAAkB/C,MAAM+C,gBAAgB,CAAA;AACnED,mBAAa1C,YAAAA,IAAgBtC;IAC/B;EACF;AAEA,WAASkF,gBAAgBpN,OAAO6M,MAAM;AACpC,UAAMQ,UAASrN,MAAMqN;AACrB,WAAO1G,OAAOC,KAAKyG,OAAAA,EAAQC,OAAOrG,CAAAA,QAAOoG,QAAOpG,GAAI,EAAC4F,SAASA,IAAAA,EAAMU,MAAK;EAC3E;AAEA,WAASC,qBAAqBC,QAAQvD,QAAO;AAC3C,WAAOwD,cAAcD,QACnB;MACEhI,QAAQ;MACRkI,SAAS7N;MACT0K,cAAcN;MACdA,OAAAA;MACAK,MAAM;MACNpK,MAAM;IACR,CAAA;EAEJ;AAEA,WAASyN,kBAAkBH,QAAQvD,QAAO2D,SAAS;AACjD,WAAOH,cAAcD,QAAQ;MAC3BhI,QAAQ;MACRqI,WAAW5D;MACXsC,QAAQ1M;MACRiO,KAAKjO;MACL+N;MACA3D,OAAAA;MACAK,MAAM;MACNpK,MAAM;IACR,CAAA;EACF;AAEA,WAAS6N,YAAY/C,MAAMzJ,OAAO;AAEhC,UAAMgJ,eAAeS,KAAKsB,WAAWrC;AACrC,UAAM2C,OAAO5B,KAAKkB,UAAUlB,KAAKkB,OAAOU;AACxC,QAAI,CAACA,MAAM;AACT;;AAGFrL,YAAQA,SAASyJ,KAAKgD;AACtB,eAAWzB,UAAUhL,OAAO;AAC1B,YAAMsK,SAASU,OAAOE;AACtB,UAAI,CAACZ,UAAUA,OAAOe,IAAK,MAAK/M,UAAagM,OAAOe,IAAAA,EAAMrC,YAAAA,MAAkB1K,QAAW;AACrF;;AAEF,aAAOgM,OAAOe,IAAK,EAACrC,YAAa;AACjC,UAAIsB,OAAOe,IAAK,EAACM,kBAAkBrN,UAAagM,OAAOe,IAAAA,EAAMM,cAAc3C,YAAAA,MAAkB1K,QAAW;AACtG,eAAOgM,OAAOe,IAAAA,EAAMM,cAAc3C,YAAa;;IAEnD;EACF;AAEA,MAAM0D,qBAAqB,CAAC3D,SAASA,SAAS,WAAWA,SAAS;AAClE,MAAM4D,mBAAmB,CAACC,QAAQC,WAAWA,SAASD,SAASzH,OAAOyB,OAAO,CAAA,GAAIgG,MAAO;AACxF,MAAME,cAAc,CAACC,UAAUtD,MAAMjL,UAAUuO,YAAY,CAACtD,KAAKuD,UAAUvD,KAAKwD,YAC3E;IAAC7H,MAAMiD,wBAAwB7J,OAAO,IAAI;IAAGsH,QAAQ;EAAI;AAE/C,MAAMoH,oBAAN,MAAMA;IAKnB,OAAO7H,WAAW,CAAA;IAKlB,OAAO8H,qBAAqB;IAK5B,OAAOC,kBAAkB;IAMzBpP,YAAYQ,OAAOwK,cAAc;AAC/B,WAAKxK,QAAQA;AACb,WAAK6O,OAAO7O,MAAM8O;AAClB,WAAK5E,QAAQM;AACb,WAAKuE,kBAAkB,CAAA;AACvB,WAAKtC,cAAc,KAAKuC,QAAO;AAC/B,WAAKC,QAAQ,KAAKxC,YAAYtM;AAC9B,WAAKqH,UAAU1H;AAEf,WAAKoP,WAAW;AAChB,WAAKC,QAAQrP;AACb,WAAKsP,cAActP;AACnB,WAAKuP,iBAAiBvP;AACtB,WAAKwP,aAAaxP;AAClB,WAAKyP,aAAazP;AAClB,WAAK0P,sBAAsB;AAC3B,WAAKC,qBAAqB;AAC1B,WAAKC,WAAW5P;AAChB,WAAK6P,YAAY,CAAA;AACjB,WAAKhB,qBAAqB,WAAWA;AACrC,WAAKC,kBAAkB,WAAWA;AAElC,WAAKgB,WAAU;IACjB;IAEAA,aAAa;AACX,YAAM3E,OAAO,KAAKwB;AAClB,WAAKjG,UAAS;AACd,WAAKqJ,WAAU;AACf5E,WAAKwD,WAAWzD,UAAUC,KAAKkB,QAAQlB,IAAAA;AACvC,WAAK6E,YAAW;AAEhB,UAAI,KAAKtI,QAAQuI,QAAQ,CAAC,KAAK/P,MAAMgQ,gBAAgB,QAAW,GAAA;AAC9DC,gBAAQC,KAAK,oKAAA;;IAEjB;IAEAC,YAAY3F,cAAc;AACxB,UAAI,KAAKN,UAAUM,cAAc;AAC/BwD,oBAAY,KAAKvB,WAAW;;AAE9B,WAAKvC,QAAQM;IACf;IAEAqF,aAAa;AACX,YAAM7P,QAAQ,KAAKA;AACnB,YAAMiL,OAAO,KAAKwB;AAClB,YAAMkB,UAAU,KAAKyC,WAAU;AAE/B,YAAMC,WAAW,CAACxD,MAAM5D,IAAGC,IAAGO,OAAMoD,SAAS,MAAM5D,KAAI4D,SAAS,MAAMpD,KAAIP;AAE1E,YAAMoH,MAAMrF,KAAKsF,UAAUC,eAAe7C,QAAQ4C,SAASnD,gBAAgBpN,OAAO,GAAA,CAAA;AAClF,YAAMyQ,MAAMxF,KAAKyF,UAAUF,eAAe7C,QAAQ+C,SAAStD,gBAAgBpN,OAAO,GAAA,CAAA;AAClF,YAAM2Q,MAAM1F,KAAK2F,UAAUJ,eAAe7C,QAAQiD,SAASxD,gBAAgBpN,OAAO,GAAA,CAAA;AAClF,YAAM6Q,YAAY5F,KAAK4F;AACvB,YAAMC,MAAM7F,KAAK8F,UAAUV,SAASQ,WAAWP,KAAKG,KAAKE,GAAAA;AACzD,YAAMK,MAAM/F,KAAKgG,UAAUZ,SAASQ,WAAWJ,KAAKH,KAAKK,GAAAA;AACzD1F,WAAKlC,SAAS,KAAKmI,cAAcZ,GAAAA;AACjCrF,WAAKjC,SAAS,KAAKkI,cAAcT,GAAAA;AACjCxF,WAAKkG,SAAS,KAAKD,cAAcP,GAAAA;AACjC1F,WAAK0B,SAAS,KAAKuE,cAAcJ,GAAAA;AACjC7F,WAAKkB,SAAS,KAAK+E,cAAcF,GAAAA;IACnC;IAEAZ,aAAa;AACX,aAAO,KAAKpQ,MAAM6K,KAAKuG,SAAS,KAAKlH,KAAK;IAC5C;IAEA8E,UAAU;AACR,aAAO,KAAKhP,MAAMqR,eAAe,KAAKnH,KAAK;IAC7C;IAMAgH,cAAcI,SAAS;AACrB,aAAO,KAAKtR,MAAMqN,OAAOiE,OAAQ;IACnC;IAKAC,eAAe9I,OAAO;AACpB,YAAMwC,OAAO,KAAKwB;AAClB,aAAOhE,UAAUwC,KAAK0B,SAClB1B,KAAKkB,SACLlB,KAAK0B;IACX;IAEA6E,QAAQ;AACN,WAAKrQ,QAAQ,OAAA;IACf;IAKAsQ,WAAW;AACT,YAAMxG,OAAO,KAAKwB;AAClB,UAAI,KAAK0C,OAAO;AACduC,4BAAoB,KAAKvC,OAAO,IAAI;;AAEtC,UAAIlE,KAAKwD,UAAU;AACjBT,oBAAY/C,IAAAA;;IAEhB;IAKA0G,aAAa;AACX,YAAMhE,UAAU,KAAKyC,WAAU;AAC/B,YAAMvF,OAAO8C,QAAQ9C,SAAS8C,QAAQ9C,OAAO,CAAA;AAC7C,YAAMsE,QAAQ,KAAKA;AAMnB,UAAI1I,SAASoE,IAAO,GAAA;AAClB,aAAKsE,QAAQvE,yBAAyBC,IAAAA;iBAC7BsE,UAAUtE,MAAM;AACzB,YAAIsE,OAAO;AAETuC,8BAAoBvC,OAAO,IAAI;AAE/B,gBAAMlE,OAAO,KAAKwB;AAClBuB,sBAAY/C,IAAAA;AACZA,eAAKgD,UAAU,CAAA;;AAEjB,YAAIpD,QAAQlE,OAAOiL,aAAa/G,IAAO,GAAA;AACrCgH,4BAAkBhH,MAAM,IAAI;;AAE9B,aAAK8E,YAAY,CAAA;AACjB,aAAKR,QAAQtE;;IAEjB;IAEAiF,cAAc;AACZ,YAAM7E,OAAO,KAAKwB;AAElB,WAAKkF,WAAU;AAEf,UAAI,KAAKhD,oBAAoB;AAC3B1D,aAAK0C,UAAU,IAAI,KAAKgB,mBAAkB;;IAE9C;IAEAmD,sBAAsBC,kBAAkB;AACtC,YAAM9G,OAAO,KAAKwB;AAClB,YAAMkB,UAAU,KAAKyC,WAAU;AAC/B,UAAI4B,eAAe;AAEnB,WAAKL,WAAU;AAGf,YAAMM,aAAahH,KAAKwD;AACxBxD,WAAKwD,WAAWzD,UAAUC,KAAKkB,QAAQlB,IAAAA;AAGvC,UAAIA,KAAKb,UAAUuD,QAAQvD,OAAO;AAChC4H,uBAAe;AAEfhE,oBAAY/C,IAAAA;AACZA,aAAKb,QAAQuD,QAAQvD;;AAKvB,WAAK8H,gBAAgBH,gBAAAA;AAGrB,UAAIC,gBAAgBC,eAAehH,KAAKwD,UAAU;AAChDnC,qBAAa,MAAMrB,KAAKgD,OAAO;;IAEnC;IAMAzH,YAAY;AACV,YAAMH,SAAS,KAAKrG,MAAMqG;AAC1B,YAAM8L,YAAY9L,OAAO+L,iBAAiB,KAAKnD,KAAK;AACpD,YAAMoD,SAAShM,OAAOiM,gBAAgB,KAAKlC,WAAU,GAAI+B,WAAW,IAAI;AACxE,WAAK3K,UAAUnB,OAAOkM,eAAeF,QAAQ,KAAKG,WAAU,CAAA;AAC5D,WAAKtD,WAAW,KAAK1H,QAAQiL;AAC7B,WAAK1D,kBAAkB,CAAA;IACzB;IAMA2D,MAAM5R,QAAO6R,OAAO;AAClB,YAAM,EAAClG,aAAaxB,MAAMkE,OAAOtE,KAAI,IAAI;AACzC,YAAM,EAAC8B,QAAQ8B,SAAAA,IAAYxD;AAC3B,YAAM2B,QAAQD,OAAOE;AAErB,UAAI+F,SAAS9R,WAAU,KAAK6R,UAAU9H,KAAKpJ,SAAS,OAAOwJ,KAAK4H;AAChE,UAAIC,OAAOhS,SAAQ,KAAKmK,KAAKgD,QAAQnN,SAAQ,CAAE;AAC/C,UAAIY,IAAGqB,KAAKyJ;AAEZ,UAAI,KAAK0C,aAAa,OAAO;AAC3BjE,aAAKgD,UAAUpD;AACfI,aAAK4H,UAAU;AACfrG,iBAAS3B;aACJ;AACL,YAAI1D,QAAQ0D,KAAK/J,MAAAA,CAAM,GAAG;AACxB0L,mBAAS,KAAKuG,eAAe9H,MAAMJ,MAAM/J,QAAO6R,KAAAA;QAClD,WAAWlM,SAASoE,KAAK/J,MAAAA,CAAM,GAAG;AAChC0L,mBAAS,KAAKwG,gBAAgB/H,MAAMJ,MAAM/J,QAAO6R,KAAAA;eAC5C;AACLnG,mBAAS,KAAKyG,mBAAmBhI,MAAMJ,MAAM/J,QAAO6R,KAAAA;;AAGtD,cAAMO,6BAA6B,MAAMnQ,IAAI6J,KAAAA,MAAW,QAASkG,QAAQ/P,IAAI6J,KAAAA,IAASkG,KAAKlG,KAAM;AACjG,aAAKlL,KAAI,GAAGA,KAAIiR,OAAO,EAAEjR,IAAG;AAC1BuJ,eAAKgD,QAAQvM,KAAIZ,MAAAA,IAASiC,MAAMyJ,OAAO9K,EAAE;AACzC,cAAIkR,QAAQ;AACV,gBAAIM,2BAA8B,GAAA;AAChCN,uBAAS;;AAEXE,mBAAO/P;;QAEX;AACAkI,aAAK4H,UAAUD;;AAGjB,UAAInE,UAAU;AACZnC,qBAAa,MAAME,MAAAA;;IAEvB;IAaAyG,mBAAmBhI,MAAMJ,MAAM/J,QAAO6R,OAAO;AAC3C,YAAM,EAAChG,QAAQR,OAAAA,IAAUlB;AACzB,YAAM2B,QAAQD,OAAOE;AACrB,YAAMC,QAAQX,OAAOU;AACrB,YAAMsG,SAASxG,OAAOyG,UAAS;AAC/B,YAAMC,cAAc1G,WAAWR;AAC/B,YAAMK,SAAS,IAAIzB,MAAM4H,KAAAA;AACzB,UAAIjR,IAAGuI,MAAMC;AAEb,WAAKxI,KAAI,GAAGuI,OAAO0I,OAAOjR,KAAIuI,MAAM,EAAEvI,IAAG;AACvCwI,QAAAA,SAAQxI,KAAIZ;AACZ0L,eAAO9K,EAAAA,IAAK;UACV,CAACkL,KAAAA,GAAQyG,eAAe1G,OAAO+F,MAAMS,OAAOjJ,MAAAA,GAAQA,MAAAA;UACpD,CAAC4C,KAAAA,GAAQX,OAAOuG,MAAM7H,KAAKX,MAAAA,GAAQA,MAAAA;QACrC;MACF;AACA,aAAOsC;IACT;IAaAuG,eAAe9H,MAAMJ,MAAM/J,QAAO6R,OAAO;AACvC,YAAM,EAAC5J,QAAQC,OAAAA,IAAUiC;AACzB,YAAMuB,SAAS,IAAIzB,MAAM4H,KAAAA;AACzB,UAAIjR,IAAGuI,MAAMC,QAAOtI;AAEpB,WAAKF,KAAI,GAAGuI,OAAO0I,OAAOjR,KAAIuI,MAAM,EAAEvI,IAAG;AACvCwI,QAAAA,SAAQxI,KAAIZ;AACZc,eAAOiJ,KAAKX,MAAM;AAClBsC,eAAO9K,EAAAA,IAAK;UACVuH,GAAGF,OAAO2J,MAAM9Q,KAAK,CAAA,GAAIsI,MAAAA;UACzBhB,GAAGF,OAAO0J,MAAM9Q,KAAK,CAAA,GAAIsI,MAAAA;QAC3B;MACF;AACA,aAAOsC;IACT;IAaAwG,gBAAgB/H,MAAMJ,MAAM/J,QAAO6R,OAAO;AACxC,YAAM,EAAC5J,QAAQC,OAAAA,IAAUiC;AACzB,YAAM,EAACqI,WAAW,KAAKC,WAAW,IAAA,IAAO,KAAKrE;AAC9C,YAAM1C,SAAS,IAAIzB,MAAM4H,KAAAA;AACzB,UAAIjR,IAAGuI,MAAMC,QAAOtI;AAEpB,WAAKF,KAAI,GAAGuI,OAAO0I,OAAOjR,KAAIuI,MAAM,EAAEvI,IAAG;AACvCwI,QAAAA,SAAQxI,KAAIZ;AACZc,eAAOiJ,KAAKX,MAAM;AAClBsC,eAAO9K,EAAAA,IAAK;UACVuH,GAAGF,OAAO2J,MAAMc,iBAAiB5R,MAAM0R,QAAWpJ,GAAAA,MAAAA;UAClDhB,GAAGF,OAAO0J,MAAMc,iBAAiB5R,MAAM2R,QAAWrJ,GAAAA,MAAAA;QACpD;MACF;AACA,aAAOsC;IACT;IAKAiH,UAAUvJ,QAAO;AACf,aAAO,KAAKuC,YAAYwB,QAAQ/D,MAAM;IACxC;IAKAwJ,eAAexJ,QAAO;AACpB,aAAO,KAAKuC,YAAY5B,KAAKX,MAAM;IACrC;IAKAC,WAAW1B,OAAO+D,QAAQjC,MAAM;AAC9B,YAAMvK,QAAQ,KAAKA;AACnB,YAAMiL,OAAO,KAAKwB;AAClB,YAAMvE,QAAQsE,OAAO/D,MAAMoE,IAAI;AAC/B,YAAMzC,QAAQ;QACZxD,MAAMiD,wBAAwB7J,OAAO,IAAI;QACzCsH,QAAQkF,OAAOE,QAAQjE,MAAMoE,IAAI,EAAEM;MACrC;AACA,aAAOhD,WAAWC,OAAOlC,OAAO+C,KAAKf,OAAO;QAACK;MAAI,CAAA;IACnD;IAKAoJ,sBAAsBC,OAAOnL,OAAO+D,QAAQpC,OAAO;AACjD,YAAMyJ,cAAcrH,OAAO/D,MAAMoE,IAAI;AACrC,UAAI3E,QAAQ2L,gBAAgB,OAAOC,MAAMD;AACzC,YAAMvM,SAAS8C,SAASoC,OAAOE,QAAQjE,MAAMoE,IAAI;AACjD,UAAIzC,SAAS9C,QAAQ;AACnB8C,cAAM9C,SAASA;AACfY,gBAAQiC,WAAWC,OAAOyJ,aAAa,KAAKpH,YAAYvC,KAAK;;AAE/D0J,YAAM/S,MAAMD,KAAKC,IAAI+S,MAAM/S,KAAKqH,KAAAA;AAChC0L,YAAM5Q,MAAMpC,KAAKoC,IAAI4Q,MAAM5Q,KAAKkF,KAAAA;IAClC;IAKA6L,UAAUtL,OAAO8F,UAAU;AACzB,YAAMtD,OAAO,KAAKwB;AAClB,YAAMwB,UAAUhD,KAAKgD;AACrB,YAAM2E,SAAS3H,KAAK4H,WAAWpK,UAAUwC,KAAK0B;AAC9C,YAAM1C,OAAOgE,QAAQxM;AACrB,YAAMuS,aAAa,KAAKzC,eAAe9I,KAAAA;AACvC,YAAM2B,QAAQkE,YAAYC,UAAUtD,MAAM,KAAKjL,KAAK;AACpD,YAAM4T,QAAQ;QAAC/S,KAAK6K,OAAOE;QAAmB5I,KAAK0I,OAAOC;MAAiB;AAC3E,YAAM,EAAC9K,KAAKoT,UAAUjR,KAAKkR,SAAQ,IAAI3I,cAAcyI,UAAAA;AACrD,UAAItS,IAAG8K;AAEP,eAAS2H,QAAQ;AACf3H,iBAASyB,QAAQvM,EAAE;AACnB,cAAM+I,aAAa+B,OAAOwH,WAAWnH,IAAI;AACzC,eAAO,CAACnC,eAAS8B,OAAO/D,MAAMoE,IAAI,CAAC,KAAKoH,WAAWxJ,cAAcyJ,WAAWzJ;MAC9E;AAEA,WAAK/I,KAAI,GAAGA,KAAIuI,MAAM,EAAEvI,IAAG;AACzB,YAAIyS,MAAS,GAAA;AACX;;AAEF,aAAKR,sBAAsBC,OAAOnL,OAAO+D,QAAQpC,KAAAA;AACjD,YAAIwI,QAAQ;AAEV;;MAEJ;AACA,UAAIA,QAAQ;AAEV,aAAKlR,KAAIuI,OAAO,GAAGvI,MAAK,GAAG,EAAEA,IAAG;AAC9B,cAAIyS,MAAS,GAAA;AACX;;AAEF,eAAKR,sBAAsBC,OAAOnL,OAAO+D,QAAQpC,KAAAA;AACjD;QACF;;AAEF,aAAOwJ;IACT;IAEAQ,mBAAmB3L,OAAO;AACxB,YAAM+D,SAAS,KAAKC,YAAYwB;AAChC,YAAM3G,SAAS,CAAA;AACf,UAAI5F,IAAGuI,MAAM/B;AAEb,WAAKxG,KAAI,GAAGuI,OAAOuC,OAAO/K,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/CwG,gBAAQsE,OAAO9K,EAAAA,EAAG+G,MAAMoE,IAAI;AAC5B,YAAInC,eAASxC,KAAQ,GAAA;AACnBZ,iBAAO5E,KAAKwF,KAAAA;;MAEhB;AACA,aAAOZ;IACT;IAMA+M,iBAAiB;AACf,aAAO;IACT;IAKAC,iBAAiBpK,QAAO;AACtB,YAAMe,OAAO,KAAKwB;AAClB,YAAME,SAAS1B,KAAK0B;AACpB,YAAMR,SAASlB,KAAKkB;AACpB,YAAMK,SAAS,KAAKiH,UAAUvJ,MAAAA;AAC9B,aAAO;QACLqK,OAAO5H,SAAS,KAAKA,OAAO6H,iBAAiBhI,OAAOG,OAAOE,IAAI,CAAC,IAAI;QACpE3E,OAAOiE,SAAS,KAAKA,OAAOqI,iBAAiBhI,OAAOL,OAAOU,IAAI,CAAC,IAAI;MACtE;IACF;IAKA1L,QAAQoJ,MAAM;AACZ,YAAMU,OAAO,KAAKwB;AAClB,WAAK/G,OAAO6E,QAAQ,SAAA;AACpBU,WAAKwJ,QAAQlL,OAAOiH,eAAe,KAAKhJ,QAAQkN,MAAM5L,YAAYmC,KAAKlC,QAAQkC,KAAKjC,QAAQ,KAAKqL,eAAc,CAAA,CAAA,CAAA;IACjH;IAKA3O,OAAO6E,MAAM;IAAA;IAEb5I,OAAO;AACL,YAAMmN,MAAM,KAAKD;AACjB,YAAM7O,QAAQ,KAAKA;AACnB,YAAMiL,OAAO,KAAKwB;AAClB,YAAMkI,YAAW1J,KAAKJ,QAAQ,CAAA;AAC9B,YAAM+J,OAAO5U,MAAM6U;AACnB,YAAMpP,SAAS,CAAA;AACf,YAAM3E,SAAQ,KAAKwO,cAAc;AACjC,YAAMqD,QAAQ,KAAKpD,cAAeoF,UAASlT,SAASX;AACpD,YAAMgU,0BAA0B,KAAKtN,QAAQsN;AAC7C,UAAIpT;AAEJ,UAAIuJ,KAAK0C,SAAS;AAChB1C,aAAK0C,QAAQhM,KAAKmN,KAAK8F,MAAM9T,QAAO6R,KAAAA;;AAGtC,WAAKjR,KAAIZ,QAAOY,KAAIZ,SAAQ6R,OAAO,EAAEjR,IAAG;AACtC,cAAMmM,UAAU8G,UAASjT,EAAE;AAC3B,YAAImM,QAAQW,QAAQ;AAClB;;AAEF,YAAIX,QAAQpI,UAAUqP,yBAAyB;AAC7CrP,iBAAO/C,KAAKmL,OAAAA;eACP;AACLA,kBAAQlM,KAAKmN,KAAK8F,IAAAA;;MAEtB;AAEA,WAAKlT,KAAI,GAAGA,KAAI+D,OAAOhE,QAAQ,EAAEC,IAAG;AAClC+D,eAAO/D,EAAAA,EAAGC,KAAKmN,KAAK8F,IAAAA;MACtB;IACF;IASAG,SAAS7K,QAAOzE,QAAQ;AACtB,YAAM8E,OAAO9E,SAAS,WAAW;AACjC,aAAOyE,WAAUpK,UAAa,KAAK2M,YAAYkB,UAC3C,KAAKqH,6BAA6BzK,IAAAA,IAClC,KAAK0K,0BAA0B/K,UAAS,GAAGK,IAAK;IACtD;IAKAiI,WAAWtI,QAAOzE,QAAQ8E,MAAM;AAC9B,YAAMoD,UAAU,KAAKyC,WAAU;AAC/B,UAAI8E;AACJ,UAAIhL,UAAS,KAAKA,SAAQ,KAAKuC,YAAY5B,KAAKpJ,QAAQ;AACtD,cAAMoM,UAAU,KAAKpB,YAAY5B,KAAKX,MAAM;AAC5CgL,kBAAUrH,QAAQ6B,aACf7B,QAAQ6B,WAAW9B,kBAAkB,KAAK4E,WAAU,GAAItI,QAAO2D,OAAO;AACzEqH,gBAAQ1I,SAAS,KAAKiH,UAAUvJ,MAAAA;AAChCgL,gBAAQnH,MAAMJ,QAAQ9C,KAAKX,MAAM;AACjCgL,gBAAQhL,QAAQgL,QAAQpH,YAAY5D;aAC/B;AACLgL,kBAAU,KAAKxF,aACZ,KAAKA,WAAWlC,qBAAqB,KAAKxN,MAAMwS,WAAU,GAAI,KAAKtI,KAAK;AAC3EgL,gBAAQvH,UAAUA;AAClBuH,gBAAQhL,QAAQgL,QAAQ1K,eAAe,KAAKN;;AAG9CgL,cAAQzP,SAAS,CAAC,CAACA;AACnByP,cAAQ3K,OAAOA;AACf,aAAO2K;IACT;IAMAF,6BAA6BzK,MAAM;AACjC,aAAO,KAAK4K,uBAAuB,KAAKxG,mBAAmBrD,IAAIf,IAAAA;IACjE;IAOA0K,0BAA0B/K,QAAOK,MAAM;AACrC,aAAO,KAAK4K,uBAAuB,KAAKvG,gBAAgBtD,IAAIf,MAAML,MAAAA;IACpE;IAKAiL,uBAAuBC,cAAa7K,OAAO,WAAWL,QAAO;AAC3D,YAAMzE,SAAS8E,SAAS;AACxB,YAAM8K,SAAQ,KAAKtG;AACnB,YAAMuG,WAAWF,eAAc,MAAM7K;AACrC,YAAM6D,SAASiH,OAAMC,QAAS;AAC9B,YAAMC,UAAU,KAAK/F,uBAAuBgG,QAAQtL,MAAAA;AACpD,UAAIkE,QAAQ;AACV,eAAOD,iBAAiBC,QAAQmH,OAAAA;;AAElC,YAAMlP,SAAS,KAAKrG,MAAMqG;AAC1B,YAAM8L,YAAY9L,OAAOoP,wBAAwB,KAAKxG,OAAOmG,YAAAA;AAC7D,YAAMM,WAAWjQ,SAAS;QAAC,GAAG2P,YAAY;QAAQ;QAASA;QAAa;UAAM;QAACA;QAAa;MAAG;AAC/F,YAAM/C,SAAShM,OAAOiM,gBAAgB,KAAKlC,WAAU,GAAI+B,SAAAA;AACzD,YAAMwD,SAAQhP,OAAOC,KAAKC,SAAS8N,SAASS,YAAY,CAAA;AAGxD,YAAMF,UAAU,MAAM,KAAK1C,WAAWtI,QAAOzE,QAAQ8E,IAAAA;AACrD,YAAMjD,SAASjB,OAAOuP,oBAAoBvD,QAAQsD,QAAOT,SAASQ,QAAAA;AAElE,UAAIpO,OAAOM,SAAS;AAGlBN,eAAOM,UAAU2N;AAKjBF,QAAAA,OAAMC,QAAS,IAAG3O,OAAOkP,OAAO1H,iBAAiB7G,QAAQiO,OAAAA,CAAAA;;AAG3D,aAAOjO;IACT;IAMAwO,mBAAmB5L,QAAO6L,aAAYtQ,QAAQ;AAC5C,YAAMzF,QAAQ,KAAKA;AACnB,YAAMqV,SAAQ,KAAKtG;AACnB,YAAMuG,WAAW,aAAaS,WAAAA;AAC9B,YAAM3H,SAASiH,OAAMC,QAAS;AAC9B,UAAIlH,QAAQ;AACV,eAAOA;;AAET,UAAI5G;AACJ,UAAIxH,MAAMwH,QAAQV,cAAc,OAAO;AACrC,cAAMT,SAAS,KAAKrG,MAAMqG;AAC1B,cAAM8L,YAAY9L,OAAO2P,0BAA0B,KAAK/G,OAAO8G,WAAAA;AAC/D,cAAM1D,SAAShM,OAAOiM,gBAAgB,KAAKlC,WAAU,GAAI+B,SAAAA;AACzD3K,kBAAUnB,OAAOkM,eAAeF,QAAQ,KAAKG,WAAWtI,QAAOzE,QAAQsQ,WAAAA,CAAAA;;AAEzE,YAAMrO,aAAa,IAAItB,WAAWpG,OAAOwH,WAAWA,QAAQE,UAAU;AACtE,UAAIF,WAAWA,QAAQyO,YAAY;AACjCZ,QAAAA,OAAMC,QAAAA,IAAY3O,OAAOkP,OAAOnO,UAAAA;;AAElC,aAAOA;IACT;IAMAwO,iBAAiB1O,SAAS;AACxB,UAAI,CAACA,QAAQI,SAAS;AACpB;;AAEF,aAAO,KAAKyH,mBAAmB,KAAKA,iBAAiB1I,OAAOyB,OAAO,CAAA,GAAIZ,OAAO;IAChF;IAMA2O,eAAe5L,MAAM6L,eAAe;AAClC,aAAO,CAACA,iBAAiBlI,mBAAmB3D,IAAAA,KAAS,KAAKvK,MAAMqW;IAClE;IAKAC,kBAAkBxV,QAAOyJ,MAAM;AAC7B,YAAMgM,YAAY,KAAKtB,0BAA0BnU,QAAOyJ,IAAAA;AACxD,YAAMiM,0BAA0B,KAAKnH;AACrC,YAAM+G,gBAAgB,KAAKF,iBAAiBK,SAAAA;AAC5C,YAAMJ,iBAAiB,KAAKA,eAAe5L,MAAM6L,aAAAA,KAAmBA,kBAAkBI;AACtF,WAAKC,oBAAoBL,eAAe7L,MAAMgM,SAAAA;AAC9C,aAAO;QAACH;QAAeD;MAAc;IACvC;IAMAO,cAAc7I,SAAS3D,QAAO9C,YAAYmD,MAAM;AAC9C,UAAI2D,mBAAmB3D,IAAO,GAAA;AAC5B5D,eAAOyB,OAAOyF,SAASzG,UAAAA;aAClB;AACL,aAAK0O,mBAAmB5L,QAAOK,IAAM7E,EAAAA,OAAOmI,SAASzG,UAAAA;;IAEzD;IAMAqP,oBAAoBL,eAAe7L,MAAMhD,YAAY;AACnD,UAAI6O,iBAAiB,CAAClI,mBAAmB3D,IAAO,GAAA;AAC9C,aAAKuL,mBAAmBhW,QAAWyK,IAAM7E,EAAAA,OAAO0Q,eAAe7O,UAAAA;;IAEnE;IAKAoP,UAAU9I,SAAS3D,QAAOK,MAAM9E,QAAQ;AACtCoI,cAAQpI,SAASA;AACjB,YAAM+B,UAAU,KAAKuN,SAAS7K,QAAOzE,MAAAA;AACrC,WAAKqQ,mBAAmB5L,QAAOK,MAAM9E,MAAQC,EAAAA,OAAOmI,SAAS;QAG3DrG,SAAS,CAAE/B,UAAU,KAAKyQ,iBAAiB1O,OAAaA,KAAAA;MAC1D,CAAA;IACF;IAEAoP,iBAAiB/I,SAASrD,cAAcN,QAAO;AAC7C,WAAKyM,UAAU9I,SAAS3D,QAAO,UAAU,KAAK;IAChD;IAEA2M,cAAchJ,SAASrD,cAAcN,QAAO;AAC1C,WAAKyM,UAAU9I,SAAS3D,QAAO,UAAU,IAAI;IAC/C;IAKA4M,2BAA2B;AACzB,YAAMjJ,UAAU,KAAKpB,YAAYkB;AAEjC,UAAIE,SAAS;AACX,aAAK8I,UAAU9I,SAAS/N,QAAW,UAAU,KAAK;;IAEtD;IAKAiX,wBAAwB;AACtB,YAAMlJ,UAAU,KAAKpB,YAAYkB;AAEjC,UAAIE,SAAS;AACX,aAAK8I,UAAU9I,SAAS/N,QAAW,UAAU,IAAI;;IAErD;IAKAoS,gBAAgBH,kBAAkB;AAChC,YAAMlH,OAAO,KAAKsE;AAClB,YAAMwF,YAAW,KAAKlI,YAAY5B;AAGlC,iBAAW,CAAC1E,QAAQ6Q,MAAMC,IAAAA,KAAS,KAAKtH,WAAW;AACjD,aAAKxJ,MAAO,EAAC6Q,MAAMC,IAAAA;MACrB;AACA,WAAKtH,YAAY,CAAA;AAEjB,YAAMuH,UAAUvC,UAASlT;AACzB,YAAM0V,UAAUtM,KAAKpJ;AACrB,YAAMkR,QAAQ/R,KAAKC,IAAIsW,SAASD,OAAAA;AAEhC,UAAIvE,OAAO;AAKT,aAAKD,MAAM,GAAGC,KAAAA;;AAGhB,UAAIwE,UAAUD,SAAS;AACrB,aAAKE,gBAAgBF,SAASC,UAAUD,SAASnF,gBAAAA;iBACxCoF,UAAUD,SAAS;AAC5B,aAAKG,gBAAgBF,SAASD,UAAUC,OAAAA;;IAE5C;IAKAC,gBAAgBtW,QAAO6R,OAAOZ,mBAAmB,MAAM;AACrD,YAAM9G,OAAO,KAAKwB;AAClB,YAAM5B,OAAOI,KAAKJ;AAClB,YAAMhC,MAAM/H,SAAQ6R;AACpB,UAAIjR;AAEJ,YAAM4V,OAAO,CAACC,QAAQ;AACpBA,YAAI9V,UAAUkR;AACd,aAAKjR,KAAI6V,IAAI9V,SAAS,GAAGC,MAAKmH,KAAKnH,MAAK;AACtC6V,cAAI7V,EAAE,IAAG6V,IAAI7V,KAAIiR,KAAM;QACzB;MACF;AACA2E,WAAKzM,IAAAA;AAEL,WAAKnJ,KAAIZ,QAAOY,KAAImH,KAAK,EAAEnH,IAAG;AAC5BmJ,aAAKnJ,EAAE,IAAG,IAAI,KAAKkN,gBAAe;MACpC;AAEA,UAAI,KAAKM,UAAU;AACjBoI,aAAKrM,KAAKgD,OAAO;;AAEnB,WAAKyE,MAAM5R,QAAO6R,KAAAA;AAElB,UAAIZ,kBAAkB;AACpB,aAAKyF,eAAe3M,MAAM/J,QAAO6R,OAAO,OAAA;;IAE5C;IAEA6E,eAAe3J,SAAS/M,QAAO6R,OAAOpI,MAAM;IAAA;IAK5C8M,gBAAgBvW,QAAO6R,OAAO;AAC5B,YAAM1H,OAAO,KAAKwB;AAClB,UAAI,KAAKyC,UAAU;AACjB,cAAMuI,UAAUxM,KAAKgD,QAAQyJ,OAAO5W,QAAO6R,KAAAA;AAC3C,YAAI1H,KAAKwD,UAAU;AACjBT,sBAAY/C,MAAMwM,OAAAA;;;AAGtBxM,WAAKJ,KAAK6M,OAAO5W,QAAO6R,KAAAA;IAC1B;IAKAgF,MAAMC,MAAM;AACV,UAAI,KAAK1I,UAAU;AACjB,aAAKS,UAAUjN,KAAKkV,IAAAA;aACf;AACL,cAAM,CAACzR,QAAQ6Q,MAAMC,IAAAA,IAAQW;AAC7B,aAAKzR,MAAO,EAAC6Q,MAAMC,IAAAA;;AAErB,WAAKjX,MAAM6X,aAAanV,KAAK;QAAC,KAAKwH;QAAU0N,GAAAA;MAAK,CAAA;IACpD;IAEAE,cAAc;AACZ,YAAMnF,QAAQoF,UAAUtW;AACxB,WAAKkW,MAAM;QAAC;QAAmB,KAAKvH,WAAU,EAAGvF,KAAKpJ,SAASkR;QAAOA;MAAM,CAAA;IAC9E;IAEAqF,aAAa;AACX,WAAKL,MAAM;QAAC;QAAmB,KAAKlL,YAAY5B,KAAKpJ,SAAS;QAAG;MAAE,CAAA;IACrE;IAEAwW,eAAe;AACb,WAAKN,MAAM;QAAC;QAAmB;QAAG;MAAE,CAAA;IACtC;IAEAO,cAAcpX,QAAO6R,OAAO;AAC1B,UAAIA,OAAO;AACT,aAAKgF,MAAM;UAAC;UAAmB7W;UAAO6R;QAAM,CAAA;;AAE9C,YAAMwF,WAAWJ,UAAUtW,SAAS;AACpC,UAAI0W,UAAU;AACZ,aAAKR,MAAM;UAAC;UAAmB7W;UAAOqX;QAAS,CAAA;;IAEnD;IAEAC,iBAAiB;AACf,WAAKT,MAAM;QAAC;QAAmB;QAAGI,UAAUtW;MAAO,CAAA;IACrD;EACF;ACliCA,WAAS4W,kBAAkB5P,OAAOtI,MAAM;AACtC,QAAI,CAACsI,MAAM6P,OAAOC,MAAM;AACtB,YAAMC,eAAe/P,MAAM4D,wBAAwBlM,IAAAA;AACnD,UAAImH,SAAS,CAAA;AAEb,eAAS5F,KAAI,GAAGuI,OAAOuO,aAAa/W,QAAQC,KAAIuI,MAAMvI,MAAK;AACzD4F,iBAASA,OAAOmR,OAAOD,aAAa9W,EAAAA,EAAG6K,WAAW6H,mBAAmB3L,KAAAA,CAAAA;MACvE;AACAA,YAAM6P,OAAOC,OAAOG,aAAapR,OAAOqR,KAAK,CAACC,IAAGlP,OAAMkP,KAAIlP,EAAAA,CAAAA;;AAE7D,WAAOjB,MAAM6P,OAAOC;EACtB;AAMA,WAASM,qBAAqB5N,MAAM;AAClC,UAAMxC,QAAQwC,KAAK0B;AACnB,UAAMrF,SAAS+Q,kBAAkB5P,OAAOwC,KAAK9K,IAAI;AACjD,QAAIU,MAAM4H,MAAMqQ;AAChB,QAAIpX,IAAGuI,MAAM8O,MAAMjG;AACnB,UAAMkG,mBAAmB,MAAM;AAC7B,UAAID,SAAS,SAASA,SAAS,QAAQ;AAErC;;AAEF,UAAIvD,QAAQ1C,IAAO,GAAA;AAEjBjS,cAAMD,KAAKC,IAAIA,KAAKD,KAAKqY,IAAIF,OAAOjG,IAASjS,KAAAA,GAAAA;;AAE/CiS,aAAOiG;IACT;AAEA,SAAKrX,KAAI,GAAGuI,OAAO3C,OAAO7F,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/CqX,aAAOtQ,MAAMyQ,iBAAiB5R,OAAO5F,EAAE,CAAA;AACvCsX,uBAAAA;IACF;AAEAlG,WAAOhT;AACP,SAAK4B,KAAI,GAAGuI,OAAOxB,MAAM0Q,MAAM1X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACpDqX,aAAOtQ,MAAM2Q,gBAAgB1X,EAAAA;AAC7BsX,uBAAAA;IACF;AAEA,WAAOnY;EACT;AAQA,WAASwY,yBAAyBnP,QAAOoP,OAAO9R,SAAS+R,YAAY;AACnE,UAAMC,YAAYhS,QAAQiS;AAC1B,QAAItR,MAAMuR;AAEV,QAAIC,cAAcH,SAAY,GAAA;AAC5BrR,aAAOmR,MAAMzY,MAAM2G,QAAQoS;AAC3BF,cAAQlS,QAAQqS;WACX;AAIL1R,aAAOqR,YAAYD;AACnBG,cAAQ;;AAGV,WAAO;MACLI,OAAO3R,OAAOoR;MACdG;MACA5Y,OAAOwY,MAAMS,OAAO7P,MAAAA,IAAU/B,OAAO;IACvC;EACF;AAQA,WAAS6R,0BAA0B9P,QAAOoP,OAAO9R,SAAS+R,YAAY;AACpE,UAAMQ,SAAST,MAAMS;AACrB,UAAMhB,OAAOgB,OAAO7P,MAAM;AAC1B,QAAI4I,OAAO5I,SAAQ,IAAI6P,OAAO7P,SAAQ,CAAA,IAAK;AAC3C,QAAI+P,OAAO/P,SAAQ6P,OAAOtY,SAAS,IAAIsY,OAAO7P,SAAQ,CAAE,IAAG;AAC3D,UAAMgQ,UAAU1S,QAAQoS;AAExB,QAAI9G,SAAS,MAAM;AAGjBA,aAAOiG,QAAQkB,SAAS,OAAOX,MAAMzQ,MAAMyQ,MAAMxY,QAAQmZ,OAAOlB;;AAGlE,QAAIkB,SAAS,MAAM;AAEjBA,aAAOlB,OAAOA,OAAOjG;;AAGvB,UAAMhS,SAAQiY,QAAQA,OAAOnY,KAAKC,IAAIiS,MAAMmH,IAAI,KAAK,IAAIC;AACzD,UAAM/R,OAAOvH,KAAKqY,IAAIgB,OAAOnH,IAAAA,IAAQ,IAAIoH;AAEzC,WAAO;MACLJ,OAAO3R,OAAOoR;MACdG,OAAOlS,QAAQqS;MACf/Y,OAAAA;IACF;EACF;AAEA,WAASqZ,cAAcC,OAAOxY,MAAMuK,QAAQzK,IAAG;AAC7C,UAAM2Y,aAAalO,OAAOuG,MAAM0H,MAAM,CAAA,GAAI1Y,EAAAA;AAC1C,UAAM4Y,WAAWnO,OAAOuG,MAAM0H,MAAM,CAAA,GAAI1Y,EAAAA;AACxC,UAAMb,MAAMD,KAAKC,IAAIwZ,YAAYC,QAAAA;AACjC,UAAMtX,MAAMpC,KAAKoC,IAAIqX,YAAYC,QAAAA;AACjC,QAAIC,WAAW1Z;AACf,QAAI2Z,SAASxX;AAEb,QAAIpC,KAAKqY,IAAIpY,GAAAA,IAAOD,KAAKqY,IAAIjW,GAAM,GAAA;AACjCuX,iBAAWvX;AACXwX,eAAS3Z;;AAKXe,SAAKuK,OAAOU,IAAI,IAAI2N;AAEpB5Y,SAAK6Y,UAAU;MACbF;MACAC;MACA1Z,OAAOuZ;MACPxR,KAAKyR;MACLzZ;MACAmC;IACF;EACF;AAEA,WAAS0X,WAAWN,OAAOxY,MAAMuK,QAAQzK,IAAG;AAC1C,QAAIyF,QAAQiT,KAAQ,GAAA;AAClBD,oBAAcC,OAAOxY,MAAMuK,QAAQzK,EAAAA;WAC9B;AACLE,WAAKuK,OAAOU,IAAI,IAAIV,OAAOuG,MAAM0H,OAAO1Y,EAAAA;;AAE1C,WAAOE;EACT;AAEA,WAAS+Y,sBAAsB1P,MAAMJ,MAAM/J,QAAO6R,OAAO;AACvD,UAAMhG,SAAS1B,KAAK0B;AACpB,UAAMR,SAASlB,KAAKkB;AACpB,UAAMgH,SAASxG,OAAOyG,UAAS;AAC/B,UAAMC,cAAc1G,WAAWR;AAC/B,UAAMK,SAAS,CAAA;AACf,QAAI9K,IAAGuI,MAAMrI,MAAMwY;AAEnB,SAAK1Y,KAAIZ,QAAOmJ,OAAOnJ,SAAQ6R,OAAOjR,KAAIuI,MAAM,EAAEvI,IAAG;AACnD0Y,cAAQvP,KAAKnJ,EAAE;AACfE,aAAO,CAAA;AACPA,WAAK+K,OAAOE,IAAI,IAAIwG,eAAe1G,OAAO+F,MAAMS,OAAOzR,EAAAA,GAAIA,EAAAA;AAC3D8K,aAAO9J,KAAKgY,WAAWN,OAAOxY,MAAMuK,QAAQzK,EAAAA,CAAAA;IAC9C;AACA,WAAO8K;EACT;AAEA,WAASoO,WAAWC,QAAQ;AAC1B,WAAOA,UAAUA,OAAON,aAAaza,UAAa+a,OAAOL,WAAW1a;EACtE;AAEA,WAASgb,QAAQ3S,MAAMgE,QAAQ4O,YAAY;AACzC,QAAI5S,SAAS,GAAG;AACd,aAAOwC,KAAKxC,IAAAA;;AAEd,YAAQgE,OAAO6O,aAAY,IAAK,IAAI,OAAO7O,OAAOtL,OAAOka,aAAa,IAAI;EAC5E;AAEA,WAASE,YAAY7T,YAAY;AAC/B,QAAIwB,SAAS9H,QAAO+H,KAAKM,KAAKE;AAC9B,QAAIjC,WAAW8T,YAAY;AACzBtS,gBAAUxB,WAAW+T,OAAO/T,WAAW6B;AACvCnI,MAAAA,SAAQ;AACR+H,YAAM;WACD;AACLD,gBAAUxB,WAAW+T,OAAO/T,WAAW8B;AACvCpI,MAAAA,SAAQ;AACR+H,YAAM;;AAER,QAAID,SAAS;AACXO,YAAM;AACNE,eAAS;WACJ;AACLF,YAAM;AACNE,eAAS;;AAEX,WAAO;MAACvI,OAAAA;MAAO+H;MAAKD;MAASO;MAAKE;IAAM;EAC1C;AAEA,WAAS+R,iBAAiBhU,YAAYI,SAAS4C,OAAOF,QAAO;AAC3D,QAAImR,OAAO7T,QAAQ8T;AACnB,UAAMtV,MAAM,CAAA;AAEZ,QAAI,CAACqV,MAAM;AACTjU,iBAAWkU,gBAAgBtV;AAC3B;;AAGF,QAAIqV,SAAS,MAAM;AACjBjU,iBAAWkU,gBAAgB;QAACnS,KAAK;QAAMC,OAAO;QAAMC,QAAQ;QAAMC,MAAM;MAAI;AAC5E;;AAGF,UAAM,EAACxI,OAAAA,QAAO+H,KAAKD,SAASO,KAAKE,OAAAA,IAAU4R,YAAY7T,UAAAA;AAEvD,QAAIiU,SAAS,YAAYjR,OAAO;AAC9BhD,iBAAWmU,qBAAqB;AAChC,WAAKnR,MAAM4C,QAAQ,OAAO9C,QAAO;AAC/BmR,eAAOlS;kBACGiB,MAAM6C,WAAW,OAAO/C,QAAO;AACzCmR,eAAOhS;aACF;AACLrD,YAAIwV,UAAUnS,QAAQvI,QAAO+H,KAAKD,OAAAA,CAAAA,IAAY;AAC9CyS,eAAOlS;;;AAIXnD,QAAIwV,UAAUH,MAAMva,QAAO+H,KAAKD,OAAAA,CAAAA,IAAY;AAC5CxB,eAAWkU,gBAAgBtV;EAC7B;AAEA,WAASwV,UAAUH,MAAMzC,IAAGlP,IAAGd,SAAS;AACtC,QAAIA,SAAS;AACXyS,aAAOI,KAAKJ,MAAMzC,IAAGlP,EAAAA;AACrB2R,aAAOK,SAASL,MAAM3R,IAAGkP,EAAAA;WACpB;AACLyC,aAAOK,SAASL,MAAMzC,IAAGlP,EAAAA;;AAE3B,WAAO2R;EACT;AAEA,WAASI,KAAKE,MAAMC,IAAIC,IAAI;AAC1B,WAAOF,SAASC,KAAKC,KAAKF,SAASE,KAAKD,KAAKD;EAC/C;AAEA,WAASD,SAASI,IAAGhb,QAAO+H,KAAK;AAC/B,WAAOiT,OAAM,UAAUhb,SAAQgb,OAAM,QAAQjT,MAAMiT;EACrD;AAEA,WAASC,iBAAiB3U,YAAY,EAAC4U,cAAAA,GAAgBtC,OAAO;AAC5DtS,eAAW4U,gBAAgBA,kBAAkB,SACzCtC,UAAU,IAAI,OAAO,IACrBsC;EACN;AAEe,MAAMC,gBAAN,cAA4BvN,kBAAAA;IAEzC,OAAOpD,KAAK;IAKZ,OAAOzE,WAAW;MAChB8H,oBAAoB;MACpBC,iBAAiB;MAEjBgL,oBAAoB;MACpBC,eAAe;MACfqC,SAAS;MAETxU,YAAY;QACVyU,SAAS;UACPhc,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAQ;YAAS;UAAS;QACnD;MACF;;IAMF,OAAOgV,YAAY;MACjB/O,QAAQ;QACNgP,SAAS;UACPlc,MAAM;UACNmc,QAAQ;UACRC,MAAM;YACJD,QAAQ;UACV;QACF;QACAE,SAAS;UACPrc,MAAM;UACNsc,aAAa;QACf;MACF;;IASFxJ,mBAAmBhI,MAAMJ,MAAM/J,QAAO6R,OAAO;AAC3C,aAAOgI,sBAAsB1P,MAAMJ,MAAM/J,QAAO6R,KAAAA;IAClD;IAOAI,eAAe9H,MAAMJ,MAAM/J,QAAO6R,OAAO;AACvC,aAAOgI,sBAAsB1P,MAAMJ,MAAM/J,QAAO6R,KAAAA;IAClD;IAOAK,gBAAgB/H,MAAMJ,MAAM/J,QAAO6R,OAAO;AACxC,YAAM,EAAChG,QAAQR,OAAAA,IAAUlB;AACzB,YAAM,EAACqI,WAAW,KAAKC,WAAW,IAAA,IAAO,KAAKrE;AAC9C,YAAMwN,WAAW/P,OAAOE,SAAS,MAAMyG,WAAWC;AAClD,YAAMoJ,WAAWxQ,OAAOU,SAAS,MAAMyG,WAAWC;AAClD,YAAM/G,SAAS,CAAA;AACf,UAAI9K,IAAGuI,MAAMrI,MAAMgb;AACnB,WAAKlb,KAAIZ,QAAOmJ,OAAOnJ,SAAQ6R,OAAOjR,KAAIuI,MAAM,EAAEvI,IAAG;AACnDkb,cAAM/R,KAAKnJ,EAAE;AACbE,eAAO,CAAA;AACPA,aAAK+K,OAAOE,IAAI,IAAIF,OAAO+F,MAAMc,iBAAiBoJ,KAAKF,QAAWhb,GAAAA,EAAAA;AAClE8K,eAAO9J,KAAKgY,WAAWlH,iBAAiBoJ,KAAKD,QAAAA,GAAW/a,MAAMuK,QAAQzK,EAAAA,CAAAA;MACxE;AACA,aAAO8K;IACT;IAKAmH,sBAAsBC,OAAOnL,OAAO+D,QAAQpC,OAAO;AACjD,YAAMuJ,sBAAsBC,OAAOnL,OAAO+D,QAAQpC,KAAAA;AAClD,YAAMyQ,SAASrO,OAAOiO;AACtB,UAAII,UAAUpS,UAAU,KAAKgE,YAAYN,QAAQ;AAE/CyH,cAAM/S,MAAMD,KAAKC,IAAI+S,MAAM/S,KAAKga,OAAOha,GAAG;AAC1C+S,cAAM5Q,MAAMpC,KAAKoC,IAAI4Q,MAAM5Q,KAAK6X,OAAO7X,GAAG;;IAE9C;IAMAqR,iBAAiB;AACf,aAAO;IACT;IAKAC,iBAAiBpK,QAAO;AACtB,YAAMe,OAAO,KAAKwB;AAClB,YAAM,EAACE,QAAQR,OAAAA,IAAUlB;AACzB,YAAMuB,SAAS,KAAKiH,UAAUvJ,MAAAA;AAC9B,YAAM2Q,SAASrO,OAAOiO;AACtB,YAAMvS,QAAQ0S,WAAWC,MACrB,IAAA,MAAMA,OAAO/Z,QAAQ,OAAO+Z,OAAOhS,MAAM,MACzC,KAAKsD,OAAOqI,iBAAiBhI,OAAOL,OAAOU,IAAI,CAAC;AAEpD,aAAO;QACL0H,OAAO,KAAK5H,OAAO6H,iBAAiBhI,OAAOG,OAAOE,IAAI,CAAC;QACvD3E;MACF;IACF;IAEA0H,aAAa;AACX,WAAKJ,sBAAsB;AAE3B,YAAMI,WAAU;AAEhB,YAAM3E,OAAO,KAAKwB;AAClBxB,WAAKb,QAAQ,KAAKgG,WAAU,EAAGhG;IACjC;IAEA1E,OAAO6E,MAAM;AACX,YAAMU,OAAO,KAAKwB;AAClB,WAAK+K,eAAevM,KAAKJ,MAAM,GAAGI,KAAKJ,KAAKpJ,QAAQ8I,IAAAA;IACtD;IAEAiN,eAAeqF,MAAM/b,QAAO6R,OAAOpI,MAAM;AACvC,YAAMiH,QAAQjH,SAAS;AACvB,YAAM,EAACL,OAAAA,QAAOuC,aAAa,EAACN,OAAAA,EAAO,IAAI;AACvC,YAAMgP,OAAOhP,OAAO2Q,aAAY;AAChC,YAAM5B,aAAa/O,OAAO6O,aAAY;AACtC,YAAM1B,QAAQ,KAAKyD,UAAS;AAC5B,YAAM,EAAC3G,eAAeD,eAAc,IAAI,KAAKG,kBAAkBxV,QAAOyJ,IAAAA;AAEtE,eAAS7I,KAAIZ,QAAOY,KAAIZ,SAAQ6R,OAAOjR,MAAK;AAC1C,cAAM8K,SAAS,KAAKiH,UAAU/R,EAAAA;AAC9B,cAAMsb,UAAUxL,SAASmI,cAAcnN,OAAOL,OAAOU,IAAI,CAAC,IAAI;UAACsO;UAAM8B,MAAM9B;QAAI,IAAI,KAAK+B,yBAAyBxb,EAAE;AACnH,cAAMyb,UAAU,KAAKC,yBAAyB1b,IAAG4X,KAAAA;AACjD,cAAMlP,SAASoC,OAAOE,WAAW,CAAA,GAAIP,OAAOU,IAAI;AAEhD,cAAMzF,aAAa;UACjB8T;UACAC,MAAM6B,QAAQ7B;UACdI,oBAAoB,CAACnR,SAASwQ,WAAWpO,OAAOiO,OAAO,KAAMvQ,WAAUE,MAAM4C,QAAQ9C,WAAUE,MAAM6C;UACrGhE,GAAGiS,aAAa8B,QAAQC,OAAOE,QAAQE;UACvCnU,GAAGgS,aAAaiC,QAAQE,SAASL,QAAQC;UACzCK,QAAQpC,aAAaiC,QAAQhV,OAAOvH,KAAKqY,IAAI+D,QAAQ7U,IAAI;UACzDoV,OAAOrC,aAAata,KAAKqY,IAAI+D,QAAQ7U,IAAI,IAAIgV,QAAQhV;QACvD;AAEA,YAAIgO,gBAAgB;AAClB/O,qBAAWI,UAAU4O,iBAAiB,KAAKnB,0BAA0BvT,IAAGmb,KAAKnb,EAAE,EAAC+D,SAAS,WAAW8E,IAAI;;AAE1G,cAAM/C,UAAUJ,WAAWI,WAAWqV,KAAKnb,EAAAA,EAAG8F;AAC9C4T,yBAAiBhU,YAAYI,SAAS4C,OAAOF,MAAAA;AAC7C6R,yBAAiB3U,YAAYI,SAAS8R,MAAMI,KAAK;AACjD,aAAKhD,cAAcmG,KAAKnb,EAAE,GAAEA,IAAG0F,YAAYmD,IAAAA;MAC7C;IACF;IASAiT,WAAWC,MAAM3P,WAAW;AAC1B,YAAM,EAACnB,OAAM,IAAI,KAAKF;AACtB,YAAM1C,WAAW4C,OAAON,wBAAwB,KAAK4C,KAAK,EACvD3B,OAAOrC,CAAAA,SAAQA,KAAKsB,WAAW/E,QAAQ0U,OAAO;AACjD,YAAMhR,UAAUyB,OAAOnF,QAAQ0D;AAC/B,YAAMY,SAAS,CAAA;AAEf,YAAM4R,WAAW,CAACzS,SAAS;AACzB,cAAMuB,SAASvB,KAAKsB,WAAWkH,UAAU3F,SAAAA;AACzC,cAAM6P,MAAMnR,UAAUA,OAAOvB,KAAKkB,OAAOU,IAAI;AAE7C,YAAI8M,cAAcgE,GAAQC,KAAAA,MAAMD,GAAM,GAAA;AACpC,iBAAO;;MAEX;AAEA,iBAAW1S,QAAQlB,UAAU;AAC3B,YAAI+D,cAAchO,UAAa4d,SAASzS,IAAO,GAAA;AAC7C;;AAQF,YAAIC,YAAY,SAASY,OAAO+R,QAAQ5S,KAAKb,KAAK,MAAM,MACzDc,YAAYpL,UAAamL,KAAKb,UAAUtK,QAAY;AACjDgM,iBAAOpJ,KAAKuI,KAAKb,KAAK;;AAExB,YAAIa,KAAKf,UAAUuT,MAAM;AACvB;;MAEJ;AAKA,UAAI,CAAC3R,OAAOrK,QAAQ;AAClBqK,eAAOpJ,KAAK5C,MAAAA;;AAGd,aAAOgM;IACT;IAMAgS,eAAe5T,QAAO;AACpB,aAAO,KAAKsT,WAAW1d,QAAWoK,MAAAA,EAAOzI;IAC3C;IAUAsc,eAAevT,cAAcwT,MAAMlQ,WAAW;AAC5C,YAAMhC,SAAS,KAAK0R,WAAWhT,cAAcsD,SAAAA;AAC7C,YAAM5D,SAAQ,SAAUpK,SACpBgM,OAAO+R,QAAQG,IACf,IAAA;AAEJ,aAAQ9T,WAAU,KACd4B,OAAOrK,SAAS,IAChByI;IACN;IAKA6S,YAAY;AACV,YAAMpU,OAAO,KAAKnB;AAClB,YAAMyD,OAAO,KAAKwB;AAClB,YAAME,SAAS1B,KAAK0B;AACpB,YAAMoN,SAAS,CAAA;AACf,UAAIrY,IAAGuI;AAEP,WAAKvI,KAAI,GAAGuI,OAAOgB,KAAKJ,KAAKpJ,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAClDqY,eAAOrX,KAAKiK,OAAOuM,iBAAiB,KAAKzF,UAAU/R,EAAE,EAACiL,OAAOE,IAAI,GAAGnL,EAAAA,CAAAA;MACtE;AAEA,YAAM+X,eAAe9Q,KAAK8Q;AAC1B,YAAM5Y,MAAM4Y,gBAAgBZ,qBAAqB5N,IAAAA;AAEjD,aAAO;QACLpK;QACAkZ;QACAjZ,OAAO6L,OAAOsR;QACdpV,KAAK8D,OAAOuR;QACZ3E,YAAY,KAAKuE,eAAc;QAC/BrV,OAAOkE;QACPuP,SAASvT,KAAKuT;QAEdxC,OAAOD,eAAe,IAAI9Q,KAAKiR,qBAAqBjR,KAAKkR;MAC3D;IACF;IAMAqD,yBAAyBhT,QAAO;AAC9B,YAAM,EAACuC,aAAa,EAACN,QAAQsC,UAAUvE,OAAOM,aAAAA,GAAehD,SAAS,EAAC2T,MAAMgD,WAAWC,aAAAA,EAAa,IAAI;AACzG,YAAMrD,aAAaoD,aAAa;AAChC,YAAM3R,SAAS,KAAKiH,UAAUvJ,MAAAA;AAC9B,YAAM2Q,SAASrO,OAAOiO;AACtB,YAAM4D,WAAWzD,WAAWC,MAAAA;AAC5B,UAAI3S,QAAQsE,OAAOL,OAAOU,IAAI;AAC9B,UAAI/L,SAAQ;AACZ,UAAIW,SAASgN,WAAW,KAAKtE,WAAWgC,QAAQK,QAAQiC,QAAAA,IAAYvG;AACpE,UAAI+U,MAAM9U;AAEV,UAAI1G,WAAWyG,OAAO;AACpBpH,QAAAA,SAAQW,SAASyG;AACjBzG,iBAASyG;;AAGX,UAAImW,UAAU;AACZnW,gBAAQ2S,OAAON;AACf9Y,iBAASoZ,OAAOL,SAASK,OAAON;AAEhC,YAAIrS,UAAU,KAAKyC,KAAKzC,KAAAA,MAAWyC,KAAKkQ,OAAOL,MAAM,GAAG;AACtD1Z,UAAAA,SAAQ;;AAEVA,QAAAA,UAASoH;;AAGX,YAAMmS,aAAa,CAACV,cAAcwE,SAAAA,KAAc,CAACE,WAAWF,YAAYrd;AACxE,UAAIqa,OAAOhP,OAAO+M,iBAAiBmB,UAAAA;AAEnC,UAAI,KAAKra,MAAMse,kBAAkBpU,MAAQ,GAAA;AACvC+S,eAAO9Q,OAAO+M,iBAAiBpY,SAAQW,MAAAA;aAClC;AAELwb,eAAO9B;;AAGThT,aAAO8U,OAAO9B;AAEd,UAAIva,KAAKqY,IAAI9Q,IAAAA,IAAQiW,cAAc;AACjCjW,eAAO2S,QAAQ3S,MAAMgE,QAAQ4O,UAAcqD,IAAAA;AAC3C,YAAIlW,UAAU6S,YAAY;AACxBI,kBAAQhT,OAAO;;AAEjB,cAAMoW,aAAapS,OAAOqS,mBAAmB,CAAA;AAC7C,cAAMC,WAAWtS,OAAOqS,mBAAmB,CAAA;AAC3C,cAAM3d,MAAMD,KAAKC,IAAI0d,YAAYE,QAAAA;AACjC,cAAMzb,MAAMpC,KAAKoC,IAAIub,YAAYE,QAAAA;AACjCtD,eAAOva,KAAKoC,IAAIpC,KAAKC,IAAIsa,MAAMnY,GAAMnC,GAAAA,GAAAA;AACrCoc,eAAO9B,OAAOhT;AAEd,YAAIsG,YAAY,CAAC4P,UAAU;AAEzB7R,iBAAOE,QAAQP,OAAOU,IAAI,EAAEM,cAAc3C,YAAa,IAAG2B,OAAOuS,iBAAiBzB,IAAQ9Q,IAAAA,OAAOuS,iBAAiBvD,IAAAA;;;AAItH,UAAIA,SAAShP,OAAO+M,iBAAiB6B,UAAa,GAAA;AAChD,cAAM4D,WAAWhU,KAAKxC,IAAAA,IAAQgE,OAAOyS,qBAAqB7D,UAAc,IAAA;AACxEI,gBAAQwD;AACRxW,gBAAQwW;;AAGV,aAAO;QACLxW;QACAgT;QACA8B;QACAI,QAAQJ,OAAO9U,OAAO;MACxB;IACF;IAKAiV,yBAAyBlT,QAAOoP,OAAO;AACrC,YAAM7Q,QAAQ6Q,MAAM7Q;AACpB,YAAMjB,UAAU,KAAKA;AACrB,YAAMkW,WAAWlW,QAAQkW;AACzB,YAAMmB,kBAAkBrO,eAAehJ,QAAQqX,iBAAiBC,QAAAA;AAChE,UAAIzB,QAAQlV;AACZ,UAAImR,MAAM4C,SAAS;AACjB,cAAM3C,aAAamE,WAAW,KAAKI,eAAe5T,MAAAA,IAASoP,MAAMC;AACjE,cAAM3F,QAAQpM,QAAQiS,iBAAiB,SACnCO,0BAA0B9P,QAAOoP,OAAO9R,SAAS+R,UACjDF,IAAAA,yBAAyBnP,QAAOoP,OAAO9R,SAAS+R,UAAW;AAE/D,cAAMwF,aAAa,KAAKhB,eAAe,KAAK7T,OAAO,KAAKuC,YAAYrC,OAAOsT,WAAWxT,SAAQpK,MAAS;AACvGud,iBAASzJ,MAAM9S,QAAS8S,MAAMkG,QAAQiF,aAAenL,MAAMkG,QAAQ;AACnE3R,eAAOvH,KAAKC,IAAIge,iBAAiBjL,MAAMkG,QAAQlG,MAAM8F,KAAK;aACrD;AAEL2D,iBAAS5U,MAAMyQ,iBAAiB,KAAKzF,UAAUvJ,MAAAA,EAAOzB,MAAMoE,IAAI,GAAG3C,MAAAA;AACnE/B,eAAOvH,KAAKC,IAAIge,iBAAiBvF,MAAMzY,MAAMyY,MAAMI,KAAK;;AAG1D,aAAO;QACLyB,MAAMkC,SAASlV,OAAO;QACtB8U,MAAMI,SAASlV,OAAO;QACtBkV;QACAlV;MACF;IACF;IAEAxG,OAAO;AACL,YAAMsJ,OAAO,KAAKwB;AAClB,YAAMN,SAASlB,KAAKkB;AACpB,YAAM6S,QAAQ/T,KAAKJ;AACnB,YAAMZ,OAAO+U,MAAMvd;AACnB,UAAIC,KAAI;AAER,aAAOA,KAAIuI,MAAM,EAAEvI,IAAG;AACpB,YAAI,KAAK+R,UAAU/R,EAAAA,EAAGyK,OAAOU,IAAI,MAAM,MAAM;AAC3CmS,gBAAMtd,EAAE,EAACC,KAAK,KAAKkN,IAAI;;MAE3B;IACF;EAEF;AC5oBe,MAAMoQ,mBAAN,cAA+BvQ,kBAAAA;IAE5C,OAAOpD,KAAK;IAKZ,OAAOzE,WAAW;MAChB8H,oBAAoB;MACpBC,iBAAiB;MAEjBlH,YAAY;QACVyU,SAAS;UACPhc,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAe;UAAS;QACjD;MACF;;IAMF,OAAOgV,YAAY;MACjB/O,QAAQ;QACNpE,GAAG;UACD9I,MAAM;QACR;QACA+I,GAAG;UACD/I,MAAM;QACR;MACF;;IAGFyP,aAAa;AACX,WAAKJ,sBAAsB;AAC3B,YAAMI,WAAU;IAClB;IAMAqD,mBAAmBhI,MAAMJ,MAAM/J,QAAO6R,OAAO;AAC3C,YAAMnG,SAAS,MAAMyG,mBAAmBhI,MAAMJ,MAAM/J,QAAO6R,KAAAA;AAC3D,eAASjR,KAAI,GAAGA,KAAI8K,OAAO/K,QAAQC,MAAK;AACtC8K,eAAO9K,EAAE,EAAC+Y,UAAU,KAAKxF,0BAA0BvT,KAAIZ,MAAAA,EAAOoe;MAChE;AACA,aAAO1S;IACT;IAMAuG,eAAe9H,MAAMJ,MAAM/J,QAAO6R,OAAO;AACvC,YAAMnG,SAAS,MAAMuG,eAAe9H,MAAMJ,MAAM/J,QAAO6R,KAAAA;AACvD,eAASjR,KAAI,GAAGA,KAAI8K,OAAO/K,QAAQC,MAAK;AACtC,cAAME,OAAOiJ,KAAK/J,SAAQY,EAAE;AAC5B8K,eAAO9K,EAAE,EAAC+Y,UAAUjK,eAAe5O,KAAK,CAAE,GAAE,KAAKqT,0BAA0BvT,KAAIZ,MAAAA,EAAOoe,MAAM;MAC9F;AACA,aAAO1S;IACT;IAMAwG,gBAAgB/H,MAAMJ,MAAM/J,QAAO6R,OAAO;AACxC,YAAMnG,SAAS,MAAMwG,gBAAgB/H,MAAMJ,MAAM/J,QAAO6R,KAAAA;AACxD,eAASjR,KAAI,GAAGA,KAAI8K,OAAO/K,QAAQC,MAAK;AACtC,cAAME,OAAOiJ,KAAK/J,SAAQY,EAAE;AAC5B8K,eAAO9K,EAAAA,EAAG+Y,UAAUjK,eAAe5O,QAAQA,KAAK6H,KAAK,CAAC7H,KAAK6H,GAAG,KAAKwL,0BAA0BvT,KAAIZ,MAAAA,EAAOoe,MAAM;MAChH;AACA,aAAO1S;IACT;IAKA6H,iBAAiB;AACf,YAAMxJ,OAAO,KAAK4B,YAAY5B;AAE9B,UAAI7H,MAAM;AACV,eAAStB,KAAImJ,KAAKpJ,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AACzCsB,cAAMpC,KAAKoC,IAAIA,KAAK6H,KAAKnJ,EAAAA,EAAGyG,KAAK,KAAK8M,0BAA0BvT,EAAM,CAAA,IAAA,CAAA;MACxE;AACA,aAAOsB,MAAM,KAAKA;IACpB;IAKAsR,iBAAiBpK,QAAO;AACtB,YAAMe,OAAO,KAAKwB;AAClB,YAAM0G,SAAS,KAAKnT,MAAM6K,KAAKsI,UAAU,CAAA;AACzC,YAAM,EAACpK,QAAQC,OAAAA,IAAUiC;AACzB,YAAMuB,SAAS,KAAKiH,UAAUvJ,MAAAA;AAC9B,YAAMjB,KAAIF,OAAOyL,iBAAiBhI,OAAOvD,CAAC;AAC1C,YAAMC,KAAIF,OAAOwL,iBAAiBhI,OAAOtD,CAAC;AAC1C,YAAMO,KAAI+C,OAAOiO;AAEjB,aAAO;QACLlG,OAAOpB,OAAOjJ,MAAAA,KAAU;QACxBhC,OAAO,MAAMe,KAAI,OAAOC,MAAKO,KAAI,OAAOA,KAAI,MAAM;MACpD;IACF;IAEA/D,OAAO6E,MAAM;AACX,YAAM4U,SAAS,KAAK1S,YAAY5B;AAGhC,WAAK2M,eAAe2H,QAAQ,GAAGA,OAAO1d,QAAQ8I,IAAAA;IAChD;IAEAiN,eAAe2H,QAAQre,QAAO6R,OAAOpI,MAAM;AACzC,YAAMiH,QAAQjH,SAAS;AACvB,YAAM,EAACoC,QAAQR,OAAAA,IAAU,KAAKM;AAC9B,YAAM,EAAC2J,eAAeD,eAAc,IAAI,KAAKG,kBAAkBxV,QAAOyJ,IAAAA;AACtE,YAAMqC,QAAQD,OAAOE;AACrB,YAAMC,QAAQX,OAAOU;AAErB,eAASnL,KAAIZ,QAAOY,KAAIZ,SAAQ6R,OAAOjR,MAAK;AAC1C,cAAM0d,QAAQD,OAAOzd,EAAE;AACvB,cAAM8K,SAAS,CAACgF,SAAS,KAAKiC,UAAU/R,EAAAA;AACxC,cAAM0F,aAAa,CAAA;AACnB,cAAMiY,SAASjY,WAAWwF,KAAM,IAAG4E,QAAQ7E,OAAO6R,mBAAmB,GAAA,IAAO7R,OAAOuM,iBAAiB1M,OAAOI,KAAAA,CAAM;AACjH,cAAM0S,SAASlY,WAAW0F,KAAAA,IAAS0E,QAAQrF,OAAO2Q,aAAY,IAAK3Q,OAAO+M,iBAAiB1M,OAAOM,KAAAA,CAAM;AAExG1F,mBAAWmY,OAAO3B,MAAMyB,MAAAA,KAAWzB,MAAM0B,MAAAA;AAEzC,YAAInJ,gBAAgB;AAClB/O,qBAAWI,UAAU4O,iBAAiB,KAAKnB,0BAA0BvT,IAAG0d,MAAM3Z,SAAS,WAAW8E,IAAI;AAEtG,cAAIiH,OAAO;AACTpK,uBAAWI,QAAQ0X,SAAS;;;AAIhC,aAAKxI,cAAc0I,OAAO1d,IAAG0F,YAAYmD,IAAAA;MAC3C;IACF;IAOA0K,0BAA0B/K,QAAOK,MAAM;AACrC,YAAMiC,SAAS,KAAKiH,UAAUvJ,MAAAA;AAC9B,UAAI5C,SAAS,MAAM2N,0BAA0B/K,QAAOK,IAAAA;AAGpD,UAAIjD,OAAOM,SAAS;AAClBN,iBAASX,OAAOyB,OAAO,CAAA,GAAId,QAAQ;UAACM,SAAS;QAAK,CAAA;;AAIpD,YAAMsX,SAAS5X,OAAO4X;AACtB,UAAI3U,SAAS,UAAU;AACrBjD,eAAO4X,SAAS;;AAElB5X,aAAO4X,UAAU1O,eAAehE,UAAUA,OAAOiO,SAASyE,MAAAA;AAE1D,aAAO5X;IACT;EACF;AC/JA,WAASkY,kBAAkBC,UAAUC,eAAeC,QAAQ;AAC1D,QAAIC,SAAS;AACb,QAAIC,SAAS;AACb,QAAIC,UAAU;AACd,QAAIC,UAAU;AAEd,QAAIL,gBAAgBM,KAAK;AACvB,YAAMC,aAAaR;AACnB,YAAMS,WAAWD,aAAaP;AAC9B,YAAMS,SAASvf,KAAKwf,IAAIH,UAAAA;AACxB,YAAMI,SAASzf,KAAK0f,IAAIL,UAAAA;AACxB,YAAMM,OAAO3f,KAAKwf,IAAIF,QAAAA;AACtB,YAAMM,OAAO5f,KAAK0f,IAAIJ,QAAAA;AACtB,YAAMO,UAAU,CAACC,OAAO9H,IAAGlP,OAAMiX,cAAcD,OAAOT,YAAYC,UAAU,IAAI,IAAI,IAAItf,KAAKoC,IAAI4V,IAAGA,KAAI+G,QAAQjW,IAAGA,KAAIiW,MAAO;AAC9H,YAAMiB,UAAU,CAACF,OAAO9H,IAAGlP,OAAMiX,cAAcD,OAAOT,YAAYC,UAAU,IAAI,IAAI,KAAKtf,KAAKC,IAAI+X,IAAGA,KAAI+G,QAAQjW,IAAGA,KAAIiW,MAAO;AAC/H,YAAMkB,OAAOJ,QAAQ,GAAGN,QAAQI,IAAAA;AAChC,YAAMO,OAAOL,QAAQM,SAASV,QAAQG,IAAAA;AACtC,YAAMQ,OAAOJ,QAAQK,IAAId,QAAQI,IAAAA;AACjC,YAAMW,OAAON,QAAQK,KAAKF,SAASV,QAAQG,IAAAA;AAC3CZ,gBAAUiB,OAAOG,QAAQ;AACzBnB,gBAAUiB,OAAOI,QAAQ;AACzBpB,gBAAU,EAAEe,OAAOG,QAAQ;AAC3BjB,gBAAU,EAAEe,OAAOI,QAAQ;;AAE7B,WAAO;MAACtB;MAAQC;MAAQC;MAASC;IAAO;EAC1C;AAEe,MAAMoB,qBAAN,cAAiCzS,kBAAAA;IAE9C,OAAOpD,KAAK;IAKZ,OAAOzE,WAAW;MAChB8H,oBAAoB;MACpBC,iBAAiB;MACjB9H,WAAW;QAETsa,eAAe;QAEfC,cAAc;MAChB;MACA3Z,YAAY;QACVyU,SAAS;UACPhc,MAAM;UACNiH,YAAY;YAAC;YAAiB;YAAY;YAAe;YAAe;YAAc;YAAK;YAAK;YAAU;YAAe;UAAU;QACrI;MACF;MAEAuY,QAAQ;MAGRF,UAAU;MAGVC,eAAe;MAGfR,QAAQ;MAGRoC,SAAS;MAETzQ,WAAW;;IAGb,OAAO0Q,cAAc;MACnBC,aAAa,CAACxD,SAASA,SAAS;MAChCyD,YAAY,CAACzD,SAASA,SAAS,aAAa,CAACA,KAAK0D,WAAW,YAAiB,KAAA,CAAC1D,KAAK0D,WAAW,iBAAA;;IAMjG,OAAOtF,YAAY;MACjBuF,aAAa;MAGbC,SAAS;QACPC,QAAQ;UACN1O,QAAQ;YACN2O,eAAe9hB,OAAO;AACpB,oBAAM6K,OAAO7K,MAAM6K;AACnB,kBAAIA,KAAKsI,OAAO1R,UAAUoJ,KAAKuG,SAAS3P,QAAQ;AAC9C,sBAAM,EAAC0R,QAAQ,EAAC4O,YAAYne,OAAAA,OAAAA,EAAM,IAAI5D,MAAM6hB,OAAOra;AAEnD,uBAAOqD,KAAKsI,OAAO6O,IAAI,CAACzN,OAAO7S,OAAM;AACnC,wBAAMuJ,OAAOjL,MAAMqR,eAAe,CAAA;AAClC,wBAAM4Q,QAAQhX,KAAKsB,WAAWwI,SAASrT,EAAAA;AAEvC,yBAAO;oBACLwgB,MAAM3N;oBACN4N,WAAWF,MAAMG;oBACjBC,aAAaJ,MAAMK;oBACnBC,WAAW3e;oBACX4e,WAAWP,MAAMQ;oBACjBV;oBACAvT,QAAQ,CAACxO,MAAMse,kBAAkB5c,EAAAA;oBAGjCwI,OAAOxI;kBACT;gBACF,CAAA;;AAEF,qBAAO,CAAA;YACT;UACF;UAEAghB,QAAQC,IAAGC,YAAYf,QAAQ;AAC7BA,mBAAO7hB,MAAM6iB,qBAAqBD,WAAW1Y,KAAK;AAClD2X,mBAAO7hB,MAAM0F,OAAM;UACrB;QACF;MACF;;IAGFlG,YAAYQ,OAAOwK,cAAc;AAC/B,YAAMxK,OAAOwK,YAAAA;AAEb,WAAKgF,sBAAsB;AAC3B,WAAKsT,cAAchjB;AACnB,WAAKijB,cAAcjjB;AACnB,WAAKggB,UAAUhgB;AACf,WAAKigB,UAAUjgB;IACjB;IAEA+P,aAAa;IAAA;IAKb6C,MAAM5R,QAAO6R,OAAO;AAClB,YAAM9H,OAAO,KAAKuF,WAAU,EAAGvF;AAC/B,YAAMI,OAAO,KAAKwB;AAElB,UAAI,KAAKyC,aAAa,OAAO;AAC3BjE,aAAKgD,UAAUpD;aACV;AACL,YAAImY,SAAS,CAACthB,OAAM,CAACmJ,KAAKnJ,EAAE;AAE5B,YAAI+E,SAASoE,KAAK/J,MAAAA,CAAM,GAAG;AACzB,gBAAM,EAACmG,MAAM,QAAA,IAAW,KAAKiI;AAC7B8T,mBAAS,CAACthB,OAAM,CAAC8R,iBAAiB3I,KAAKnJ,EAAAA,GAAIuF,GAAAA;;AAG7C,YAAIvF,IAAGuI;AACP,aAAKvI,KAAIZ,QAAOmJ,OAAOnJ,SAAQ6R,OAAOjR,KAAIuI,MAAM,EAAEvI,IAAG;AACnDuJ,eAAKgD,QAAQvM,EAAE,IAAGshB,OAAOthB,EAAAA;QAC3B;;IAEJ;IAKAuhB,eAAe;AACb,aAAOC,UAAU,KAAK1b,QAAQiY,WAAW,EAAA;IAC3C;IAKA0D,oBAAoB;AAClB,aAAOD,UAAU,KAAK1b,QAAQkY,aAAa;IAC7C;IAMA0D,sBAAsB;AACpB,UAAIviB,MAAMmf;AACV,UAAIhd,MAAM,CAACgd;AAEX,eAASte,KAAI,GAAGA,KAAI,KAAK1B,MAAM6K,KAAKuG,SAAS3P,QAAQ,EAAEC,IAAG;AACxD,YAAI,KAAK1B,MAAMqjB,iBAAiB3hB,EAAAA,KAAM,KAAK1B,MAAMqR,eAAe3P,EAAGvB,EAAAA,SAAS,KAAK8O,OAAO;AACtF,gBAAM1C,aAAa,KAAKvM,MAAMqR,eAAe3P,EAAAA,EAAG6K;AAChD,gBAAMkT,WAAWlT,WAAW0W,aAAY;AACxC,gBAAMvD,gBAAgBnT,WAAW4W,kBAAiB;AAElDtiB,gBAAMD,KAAKC,IAAIA,KAAK4e,QAAAA;AACpBzc,gBAAMpC,KAAKoC,IAAIA,KAAKyc,WAAWC,aAAAA;;MAEnC;AAEA,aAAO;QACLD,UAAU5e;QACV6e,eAAe1c,MAAMnC;MACvB;IACF;IAKA6E,OAAO6E,MAAM;AACX,YAAMvK,QAAQ,KAAKA;AACnB,YAAM,EAAC6U,UAAS,IAAI7U;AACpB,YAAMiL,OAAO,KAAKwB;AAClB,YAAM6W,OAAOrY,KAAKJ;AAClB,YAAMyW,UAAU,KAAKiC,kBAAiB,IAAK,KAAKC,aAAaF,IAAQ,IAAA,KAAK9b,QAAQ8Z;AAClF,YAAMmC,UAAU7iB,KAAKoC,KAAKpC,KAAKC,IAAIgU,UAAU0I,OAAO1I,UAAUyI,MAAM,IAAIgE,WAAW,GAAG,CAAA;AACtF,YAAM3B,SAAS/e,KAAKC,IAAI6iB,aAAa,KAAKlc,QAAQmY,QAAQ8D,OAAU,GAAA,CAAA;AACpE,YAAME,cAAc,KAAKC,eAAe,KAAK1Z,KAAK;AAKlD,YAAM,EAACwV,eAAeD,SAAAA,IAAY,KAAK2D,oBAAmB;AAC1D,YAAM,EAACxD,QAAQC,QAAQC,SAASC,QAAAA,IAAWP,kBAAkBC,UAAUC,eAAeC,MAAAA;AACtF,YAAMkE,YAAYhP,UAAU0I,QAAQ+D,WAAW1B;AAC/C,YAAMkE,aAAajP,UAAUyI,SAASgE,WAAWzB;AACjD,YAAMkE,YAAYnjB,KAAKoC,IAAIpC,KAAKC,IAAIgjB,UAAUC,SAAAA,IAAa,GAAG,CAAA;AAC9D,YAAMf,cAAciB,YAAY,KAAKxc,QAAQ0X,QAAQ6E,SAAAA;AACrD,YAAMjB,cAAcliB,KAAKoC,IAAI+f,cAAcpD,QAAQ,CAAA;AACnD,YAAMsE,gBAAgBlB,cAAcD,eAAe,KAAKoB,8BAA6B;AACrF,WAAKpE,UAAUA,UAAUiD;AACzB,WAAKhD,UAAUA,UAAUgD;AAEzB9X,WAAKkZ,QAAQ,KAAKC,eAAc;AAEhC,WAAKrB,cAAcA,cAAckB,eAAe,KAAKI,qBAAqB,KAAKna,KAAK;AACpF,WAAK4Y,cAAcliB,KAAKoC,IAAI,KAAK+f,cAAckB,eAAeN,aAAa,CAAA;AAE3E,WAAKnM,eAAe8L,MAAM,GAAGA,KAAK7hB,QAAQ8I,IAAAA;IAC5C;IAKA+Z,eAAe5iB,IAAG8P,OAAO;AACvB,YAAM7I,OAAO,KAAKnB;AAClB,YAAMyD,OAAO,KAAKwB;AAClB,YAAMiT,gBAAgB,KAAKyD,kBAAiB;AAC5C,UAAI,SAAUxa,KAAK7B,UAAUsa,iBAAkB,CAAC,KAAKphB,MAAMse,kBAAkB5c,EAAMuJ,KAAAA,KAAKgD,QAAQvM,EAAE,MAAK,QAAQuJ,KAAKJ,KAAKnJ,EAAAA,EAAG8M,QAAQ;AAClI,eAAO;;AAET,aAAO,KAAK+V,uBAAuBtZ,KAAKgD,QAAQvM,EAAE,IAAGge,gBAAgBM,GAAAA;IACvE;IAEAxI,eAAe8L,MAAMxiB,QAAO6R,OAAOpI,MAAM;AACvC,YAAMiH,QAAQjH,SAAS;AACvB,YAAMvK,QAAQ,KAAKA;AACnB,YAAM6U,YAAY7U,MAAM6U;AACxB,YAAMlM,OAAO3I,MAAMwH;AACnB,YAAMgd,gBAAgB7b,KAAK7B;AAC3B,YAAM2d,WAAW5P,UAAUvL,OAAOuL,UAAUzL,SAAS;AACrD,YAAMsb,WAAW7P,UAAU1L,MAAM0L,UAAUxL,UAAU;AACrD,YAAMgY,eAAe7P,SAASgT,cAAcnD;AAC5C,YAAMyB,cAAczB,eAAe,IAAI,KAAKyB;AAC5C,YAAMC,cAAc1B,eAAe,IAAI,KAAK0B;AAC5C,YAAM,EAAC3M,eAAeD,eAAc,IAAI,KAAKG,kBAAkBxV,QAAOyJ,IAAAA;AACtE,UAAI0V,aAAa,KAAKgD,aAAY;AAClC,UAAIvhB;AAEJ,WAAKA,KAAI,GAAGA,KAAIZ,QAAO,EAAEY,IAAG;AAC1Bue,sBAAc,KAAKqE,eAAe5iB,IAAG8P,KAAAA;MACvC;AAEA,WAAK9P,KAAIZ,QAAOY,KAAIZ,SAAQ6R,OAAO,EAAEjR,IAAG;AACtC,cAAMge,gBAAgB,KAAK4E,eAAe5iB,IAAG8P,KAAAA;AAC7C,cAAMmT,MAAMrB,KAAK5hB,EAAE;AACnB,cAAM0F,aAAa;UACjB6B,GAAGwb,UAAU,KAAK3E;UAClB5W,GAAGwb,UAAU,KAAK3E;UAClBE;UACAC,UAAUD,aAAaP;UACvBA;UACAqD;UACAD;QACF;AACA,YAAI3M,gBAAgB;AAClB/O,qBAAWI,UAAU4O,iBAAiB,KAAKnB,0BAA0BvT,IAAGijB,IAAIlf,SAAS,WAAW8E,IAAI;;AAEtG0V,sBAAcP;AAEd,aAAKhJ,cAAciO,KAAKjjB,IAAG0F,YAAYmD,IAAAA;MACzC;IACF;IAEA6Z,iBAAiB;AACf,YAAMnZ,OAAO,KAAKwB;AAClB,YAAMmY,WAAW3Z,KAAKJ;AACtB,UAAIsZ,QAAQ;AACZ,UAAIziB;AAEJ,WAAKA,KAAI,GAAGA,KAAIkjB,SAASnjB,QAAQC,MAAK;AACpC,cAAMwG,QAAQ+C,KAAKgD,QAAQvM,EAAE;AAC7B,YAAIwG,UAAU,QAAQ,CAAC0V,MAAM1V,KAAAA,KAAU,KAAKlI,MAAMse,kBAAkB5c,EAAAA,KAAM,CAACkjB,SAASljB,EAAE,EAAC8M,QAAQ;AAC7F2V,mBAASvjB,KAAKqY,IAAI/Q,KAAAA;;MAEtB;AAEA,aAAOic;IACT;IAEAI,uBAAuBrc,OAAO;AAC5B,YAAMic,QAAQ,KAAK1X,YAAY0X;AAC/B,UAAIA,QAAQ,KAAK,CAACvG,MAAM1V,KAAQ,GAAA;AAC9B,eAAO8X,OAAOpf,KAAKqY,IAAI/Q,KAAAA,IAASic;;AAElC,aAAO;IACT;IAEA7P,iBAAiBpK,QAAO;AACtB,YAAMe,OAAO,KAAKwB;AAClB,YAAMzM,QAAQ,KAAKA;AACnB,YAAMmT,SAASnT,MAAM6K,KAAKsI,UAAU,CAAA;AACpC,YAAMjL,QAAQ2c,aAAa5Z,KAAKgD,QAAQ/D,MAAAA,GAAQlK,MAAMwH,QAAQsd,MAAM;AAEpE,aAAO;QACLvQ,OAAOpB,OAAOjJ,MAAAA,KAAU;QACxBhC;MACF;IACF;IAEAqb,kBAAkBD,MAAM;AACtB,UAAItgB,MAAM;AACV,YAAMhD,QAAQ,KAAKA;AACnB,UAAI0B,IAAGuI,MAAMgB,MAAMsB,YAAY/E;AAE/B,UAAI,CAAC8b,MAAM;AAET,aAAK5hB,KAAI,GAAGuI,OAAOjK,MAAM6K,KAAKuG,SAAS3P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC5D,cAAI1B,MAAMqjB,iBAAiB3hB,EAAI,GAAA;AAC7BuJ,mBAAOjL,MAAMqR,eAAe3P,EAAAA;AAC5B4hB,mBAAOrY,KAAKJ;AACZ0B,yBAAatB,KAAKsB;AAClB;;QAEJ;;AAGF,UAAI,CAAC+W,MAAM;AACT,eAAO;;AAGT,WAAK5hB,KAAI,GAAGuI,OAAOqZ,KAAK7hB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7C8F,kBAAU+E,WAAW0I,0BAA0BvT,EAAAA;AAC/C,YAAI8F,QAAQud,gBAAgB,SAAS;AACnC/hB,gBAAMpC,KAAKoC,IAAIA,KAAKwE,QAAQib,eAAe,GAAGjb,QAAQwd,oBAAoB,CAAA;;MAE9E;AACA,aAAOhiB;IACT;IAEAwgB,aAAaF,MAAM;AACjB,UAAItgB,MAAM;AAEV,eAAStB,KAAI,GAAGuI,OAAOqZ,KAAK7hB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAM8F,UAAU,KAAKyN,0BAA0BvT,EAAAA;AAC/CsB,cAAMpC,KAAKoC,IAAIA,KAAKwE,QAAQ8U,UAAU,GAAG9U,QAAQyd,eAAe,CAAA;MAClE;AACA,aAAOjiB;IACT;IAMAqhB,qBAAqB7Z,cAAc;AACjC,UAAI0a,mBAAmB;AAEvB,eAASxjB,KAAI,GAAGA,KAAI8I,cAAc,EAAE9I,IAAG;AACrC,YAAI,KAAK1B,MAAMqjB,iBAAiB3hB,EAAI,GAAA;AAClCwjB,8BAAoB,KAAKtB,eAAeliB,EAAAA;;MAE5C;AAEA,aAAOwjB;IACT;IAKAtB,eAAepZ,cAAc;AAC3B,aAAO5J,KAAKoC,IAAIwN,eAAe,KAAKxQ,MAAM6K,KAAKuG,SAAS5G,YAAAA,EAAc2a,QAAQ,CAAI,GAAA,CAAA;IACpF;IAMAjB,gCAAgC;AAC9B,aAAO,KAAKG,qBAAqB,KAAKrkB,MAAM6K,KAAKuG,SAAS3P,MAAM,KAAK;IACvE;EACF;ACtYe,MAAM2jB,iBAAN,cAA6B1W,kBAAAA;IAE1C,OAAOpD,KAAK;IAKZ,OAAOzE,WAAW;MAChB8H,oBAAoB;MACpBC,iBAAiB;MAEjByW,UAAU;MACVC,UAAU;;IAMZ,OAAOlJ,YAAY;MACjB/O,QAAQ;QACNgP,SAAS;UACPlc,MAAM;QACR;QACAqc,SAAS;UACPrc,MAAM;QACR;MACF;;IAGFyP,aAAa;AACX,WAAKJ,sBAAsB;AAC3B,WAAKC,qBAAqB;AAC1B,YAAMG,WAAU;IAClB;IAEAlK,OAAO6E,MAAM;AACX,YAAMU,OAAO,KAAKwB;AAClB,YAAM,EAACkB,SAAS4X,MAAM1a,MAAMsU,SAAS,CAAA,GAAIqG,SAAQ,IAAIva;AAErD,YAAMwa,qBAAqB,KAAKzlB,MAAMqW;AACtC,UAAI,EAACvV,OAAAA,QAAO6R,MAAAA,IAAS+S,iCAAiCza,MAAMkU,QAAQsG,kBAAAA;AAEpE,WAAKnW,aAAaxO;AAClB,WAAKyO,aAAaoD;AAElB,UAAIgT,oBAAoB1a,IAAO,GAAA;AAC7BnK,QAAAA,SAAQ;AACR6R,gBAAQwM,OAAO1d;;AAIjB8jB,WAAKjf,SAAS,KAAKtG;AACnBulB,WAAKK,gBAAgB,KAAK1b;AAC1Bqb,WAAKM,aAAa,CAAC,CAACL,SAASK;AAC7BN,WAAKpG,SAASA;AAEd,YAAM3X,UAAU,KAAKwN,6BAA6BzK,IAAAA;AAClD,UAAI,CAAC,KAAK/C,QAAQ6d,UAAU;AAC1B7d,gBAAQib,cAAc;;AAExBjb,cAAQse,UAAU,KAAKte,QAAQse;AAC/B,WAAKpP,cAAc6O,MAAMzlB,QAAW;QAClCimB,UAAU,CAACN;QACXje;SACC+C,IAAAA;AAGH,WAAKiN,eAAe2H,QAAQre,QAAO6R,OAAOpI,IAAAA;IAC5C;IAEAiN,eAAe2H,QAAQre,QAAO6R,OAAOpI,MAAM;AACzC,YAAMiH,QAAQjH,SAAS;AACvB,YAAM,EAACoC,QAAQR,QAAQsC,UAAU+W,SAAAA,IAAY,KAAK/Y;AAClD,YAAM,EAAC2J,eAAeD,eAAc,IAAI,KAAKG,kBAAkBxV,QAAOyJ,IAAAA;AACtE,YAAMqC,QAAQD,OAAOE;AACrB,YAAMC,QAAQX,OAAOU;AACrB,YAAM,EAACyY,UAAUQ,QAAAA,IAAW,KAAKte;AACjC,YAAMwe,eAAeC,SAASX,QAAYA,IAAAA,WAAW5Z,OAAOE;AAC5D,YAAMsa,eAAe,KAAKlmB,MAAMqW,uBAAuB7E,SAASjH,SAAS;AACzE,YAAM1B,MAAM/H,SAAQ6R;AACpB,YAAMwT,cAAchH,OAAO1d;AAC3B,UAAI2kB,aAAatlB,SAAQ,KAAK,KAAK2S,UAAU3S,SAAQ,CAAA;AAErD,eAASY,KAAI,GAAGA,KAAIykB,aAAa,EAAEzkB,IAAG;AACpC,cAAM0d,QAAQD,OAAOzd,EAAE;AACvB,cAAM0F,aAAa8e,eAAe9G,QAAQ,CAAA;AAE1C,YAAI1d,KAAIZ,UAASY,MAAKmH,KAAK;AACzBzB,qBAAWmY,OAAO;AAClB;;AAGF,cAAM/S,SAAS,KAAKiH,UAAU/R,EAAAA;AAC9B,cAAM2kB,WAAW1M,cAAcnN,OAAOM,KAAM,CAAA;AAC5C,cAAMuS,SAASjY,WAAWwF,KAAM,IAAGD,OAAOuM,iBAAiB1M,OAAOI,KAAAA,GAAQlL,EAAAA;AAC1E,cAAM4d,SAASlY,WAAW0F,KAAM,IAAG0E,SAAS6U,WAAWla,OAAO2Q,aAAY,IAAK3Q,OAAO+M,iBAAiBzK,WAAW,KAAKtE,WAAWgC,QAAQK,QAAQiC,QAAAA,IAAYjC,OAAOM,KAAM,GAAEpL,EAAE;AAE/K0F,mBAAWmY,OAAO3B,MAAMyB,MAAAA,KAAWzB,MAAM0B,MAAW+G,KAAAA;AACpDjf,mBAAWlE,OAAOxB,KAAI,KAAK,KAAMuX,IAAIzM,OAAOI,KAAM,IAAGwZ,WAAWxZ,KAAAA,CAAM,IAAKoZ;AAC3E,YAAIF,SAAS;AACX1e,qBAAWoF,SAASA;AACpBpF,qBAAW2G,MAAMyX,SAAS3a,KAAKnJ,EAAE;;AAGnC,YAAIyU,gBAAgB;AAClB/O,qBAAWI,UAAU4O,iBAAiB,KAAKnB,0BAA0BvT,IAAG0d,MAAM3Z,SAAS,WAAW8E,IAAI;;AAGxG,YAAI,CAAC2b,cAAc;AACjB,eAAKxP,cAAc0I,OAAO1d,IAAG0F,YAAYmD,IAAAA;;AAG3C6b,qBAAa5Z;MACf;IACF;IAKA6H,iBAAiB;AACf,YAAMpJ,OAAO,KAAKwB;AAClB,YAAMkB,UAAU1C,KAAK0C;AACrB,YAAM2Y,SAAS3Y,QAAQnG,WAAWmG,QAAQnG,QAAQib,eAAe;AACjE,YAAM5X,OAAOI,KAAKJ,QAAQ,CAAA;AAC1B,UAAI,CAACA,KAAKpJ,QAAQ;AAChB,eAAO6kB;;AAET,YAAMC,aAAa1b,KAAK,CAAE,EAAC1C,KAAK,KAAK8M,0BAA0B,CAAA,CAAA;AAC/D,YAAMuR,YAAY3b,KAAKA,KAAKpJ,SAAS,CAAE,EAAC0G,KAAK,KAAK8M,0BAA0BpK,KAAKpJ,SAAS,CAAA,CAAA;AAC1F,aAAOb,KAAKoC,IAAIsjB,QAAQC,YAAYC,SAAa,IAAA;IACnD;IAEA7kB,OAAO;AACL,YAAMsJ,OAAO,KAAKwB;AAClBxB,WAAK0C,QAAQ8Y,oBAAoB,KAAKzmB,MAAM6U,WAAW5J,KAAK0B,OAAOE,IAAI;AACvE,YAAMlL,KAAI;IACZ;EACF;AC3Ie,MAAM+kB,sBAAN,cAAkChY,kBAAAA;IAE/C,OAAOpD,KAAK;IAKZ,OAAOzE,WAAW;MAChB+H,iBAAiB;MACjB9H,WAAW;QACTsa,eAAe;QACfC,cAAc;MAChB;MACA3Z,YAAY;QACVyU,SAAS;UACPhc,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAc;YAAY;YAAe;UAAc;QAChF;MACF;MACAyJ,WAAW;MACXoP,YAAY;;IAMd,OAAO7D,YAAY;MACjBuF,aAAa;MAEbC,SAAS;QACPC,QAAQ;UACN1O,QAAQ;YACN2O,eAAe9hB,OAAO;AACpB,oBAAM6K,OAAO7K,MAAM6K;AACnB,kBAAIA,KAAKsI,OAAO1R,UAAUoJ,KAAKuG,SAAS3P,QAAQ;AAC9C,sBAAM,EAAC0R,QAAQ,EAAC4O,YAAYne,OAAAA,OAAAA,EAAM,IAAI5D,MAAM6hB,OAAOra;AAEnD,uBAAOqD,KAAKsI,OAAO6O,IAAI,CAACzN,OAAO7S,OAAM;AACnC,wBAAMuJ,OAAOjL,MAAMqR,eAAe,CAAA;AAClC,wBAAM4Q,QAAQhX,KAAKsB,WAAWwI,SAASrT,EAAAA;AAEvC,yBAAO;oBACLwgB,MAAM3N;oBACN4N,WAAWF,MAAMG;oBACjBC,aAAaJ,MAAMK;oBACnBC,WAAW3e;oBACX4e,WAAWP,MAAMQ;oBACjBV;oBACAvT,QAAQ,CAACxO,MAAMse,kBAAkB5c,EAAAA;oBAGjCwI,OAAOxI;kBACT;gBACF,CAAA;;AAEF,qBAAO,CAAA;YACT;UACF;UAEAghB,QAAQC,IAAGC,YAAYf,QAAQ;AAC7BA,mBAAO7hB,MAAM6iB,qBAAqBD,WAAW1Y,KAAK;AAClD2X,mBAAO7hB,MAAM0F,OAAM;UACrB;QACF;MACF;MAEA2H,QAAQ;QACN5D,GAAG;UACDtJ,MAAM;UACNwmB,YAAY;YACVC,SAAS;UACX;UACAnK,aAAa;UACbF,MAAM;YACJsK,UAAU;UACZ;UACAC,aAAa;YACXF,SAAS;UACX;UACA3G,YAAY;QACd;MACF;;IAGFzgB,YAAYQ,OAAOwK,cAAc;AAC/B,YAAMxK,OAAOwK,YAAAA;AAEb,WAAKsY,cAAchjB;AACnB,WAAKijB,cAAcjjB;IACrB;IAEAwU,iBAAiBpK,QAAO;AACtB,YAAMe,OAAO,KAAKwB;AAClB,YAAMzM,QAAQ,KAAKA;AACnB,YAAMmT,SAASnT,MAAM6K,KAAKsI,UAAU,CAAA;AACpC,YAAMjL,QAAQ2c,aAAa5Z,KAAKgD,QAAQ/D,MAAAA,EAAOT,GAAGzJ,MAAMwH,QAAQsd,MAAM;AAEtE,aAAO;QACLvQ,OAAOpB,OAAOjJ,MAAAA,KAAU;QACxBhC;MACF;IACF;IAEA8K,gBAAgB/H,MAAMJ,MAAM/J,QAAO6R,OAAO;AACxC,aAAOoU,4BAA4BC,KAAK,IAAI,EAAE/b,MAAMJ,MAAM/J,QAAO6R,KAAAA;IACnE;IAEAjN,OAAO6E,MAAM;AACX,YAAM+Y,OAAO,KAAK7W,YAAY5B;AAE9B,WAAKoc,cAAa;AAClB,WAAKzP,eAAe8L,MAAM,GAAGA,KAAK7hB,QAAQ8I,IAAAA;IAC5C;IAKAwJ,YAAY;AACV,YAAM9I,OAAO,KAAKwB;AAClB,YAAMmH,QAAQ;QAAC/S,KAAK6K,OAAOE;QAAmB5I,KAAK0I,OAAOC;MAAiB;AAE3EV,WAAKJ,KAAKrK,QAAQ,CAACqN,SAAS3D,WAAU;AACpC,cAAMsC,SAAS,KAAKiH,UAAUvJ,MAAAA,EAAOT;AAErC,YAAI,CAACmU,MAAMpR,MAAW,KAAA,KAAKxM,MAAMse,kBAAkBpU,MAAQ,GAAA;AACzD,cAAIsC,SAASoH,MAAM/S,KAAK;AACtB+S,kBAAM/S,MAAM2L;;AAGd,cAAIA,SAASoH,MAAM5Q,KAAK;AACtB4Q,kBAAM5Q,MAAMwJ;;;MAGlB,CAAA;AAEA,aAAOoH;IACT;IAKAqT,gBAAgB;AACd,YAAMjnB,QAAQ,KAAKA;AACnB,YAAM6U,YAAY7U,MAAM6U;AACxB,YAAMlM,OAAO3I,MAAMwH;AACnB,YAAM0f,UAAUtmB,KAAKC,IAAIgU,UAAUzL,QAAQyL,UAAUvL,MAAMuL,UAAUxL,SAASwL,UAAU1L,GAAG;AAE3F,YAAM4Z,cAAcniB,KAAKoC,IAAIkkB,UAAU,GAAG,CAAA;AAC1C,YAAMpE,cAAcliB,KAAKoC,IAAI2F,KAAKwe,mBAAmB,cAAe,MAAQxe,KAAKwe,mBAAoB,GAAG,CAAA;AACxG,YAAMlD,gBAAgBlB,cAAcD,eAAe9iB,MAAMonB,uBAAsB;AAE/E,WAAKrE,cAAcA,cAAekB,eAAe,KAAK/Z;AACtD,WAAK4Y,cAAc,KAAKC,cAAckB;IACxC;IAEAzM,eAAe8L,MAAMxiB,QAAO6R,OAAOpI,MAAM;AACvC,YAAMiH,QAAQjH,SAAS;AACvB,YAAMvK,QAAQ,KAAKA;AACnB,YAAM2I,OAAO3I,MAAMwH;AACnB,YAAMgd,gBAAgB7b,KAAK7B;AAC3B,YAAM2B,QAAQ,KAAKgE,YAAY0E;AAC/B,YAAMsT,UAAUhc,MAAM4e;AACtB,YAAM3C,UAAUjc,MAAM6e;AACtB,YAAMC,oBAAoB9e,MAAM+e,cAAc,CAAA,IAAK,MAAMvG;AACzD,UAAIP,QAAQ6G;AACZ,UAAI7lB;AAEJ,YAAM+lB,eAAe,MAAM,KAAKC,qBAAoB;AAEpD,WAAKhmB,KAAI,GAAGA,KAAIZ,QAAO,EAAEY,IAAG;AAC1Bgf,iBAAS,KAAKiH,cAAcjmB,IAAG6I,MAAMkd,YAAAA;MACvC;AACA,WAAK/lB,KAAIZ,QAAOY,KAAIZ,SAAQ6R,OAAOjR,MAAK;AACtC,cAAMijB,MAAMrB,KAAK5hB,EAAE;AACnB,YAAIue,aAAaS;AACjB,YAAIR,WAAWQ,QAAQ,KAAKiH,cAAcjmB,IAAG6I,MAAMkd,YAAAA;AACnD,YAAI1E,cAAc/iB,MAAMse,kBAAkB5c,EAAAA,IAAK+G,MAAMmf,8BAA8B,KAAKnU,UAAU/R,EAAG+H,EAAAA,CAAC,IAAI;AAC1GiX,gBAAQR;AAER,YAAI1O,OAAO;AACT,cAAIgT,cAAcnD,cAAc;AAC9B0B,0BAAc;;AAEhB,cAAIyB,cAAcpD,eAAe;AAC/BnB,yBAAaC,WAAWqH;;;AAI5B,cAAMngB,aAAa;UACjB6B,GAAGwb;UACHvb,GAAGwb;UACH5B,aAAa;UACbC;UACA9C;UACAC;UACA1Y,SAAS,KAAKyN,0BAA0BvT,IAAGijB,IAAIlf,SAAS,WAAW8E,IAAI;QACzE;AAEA,aAAKmM,cAAciO,KAAKjjB,IAAG0F,YAAYmD,IAAAA;MACzC;IACF;IAEAmd,uBAAuB;AACrB,YAAMzc,OAAO,KAAKwB;AAClB,UAAIkG,QAAQ;AAEZ1H,WAAKJ,KAAKrK,QAAQ,CAACqN,SAAS3D,WAAU;AACpC,YAAI,CAAC0T,MAAM,KAAKnK,UAAUvJ,MAAAA,EAAOT,CAAC,KAAK,KAAKzJ,MAAMse,kBAAkBpU,MAAQ,GAAA;AAC1EyI;;MAEJ,CAAA;AAEA,aAAOA;IACT;IAKAgV,cAAczd,QAAOK,MAAMkd,cAAc;AACvC,aAAO,KAAKznB,MAAMse,kBAAkBpU,MAChCgZ,IAAAA,UAAU,KAAKjO,0BAA0B/K,QAAOK,IAAAA,EAAMmW,SAAS+G,YAAAA,IAC/D;IACN;EACF;AC/Ne,MAAMI,gBAAN,cAA4B1G,mBAAAA;IAEzC,OAAO7V,KAAK;IAKZ,OAAOzE,WAAW;MAEhB8Y,QAAQ;MAGRF,UAAU;MAGVC,eAAe;MAGfR,QAAQ;;EAEZ;ACpBe,MAAM4I,kBAAN,cAA8BpZ,kBAAAA;IAE3C,OAAOpD,KAAK;IAKZ,OAAOzE,WAAW;MAChB8H,oBAAoB;MACpBC,iBAAiB;MACjBiC,WAAW;MACXwU,UAAU;MACV1Q,UAAU;QACR4Q,MAAM;UACJxV,MAAM;QACR;MACF;;IAMF,OAAOqM,YAAY;MACjBuF,aAAa;MAEbtU,QAAQ;QACN5D,GAAG;UACDtJ,MAAM;QACR;MACF;;IAMFmU,iBAAiBpK,QAAO;AACtB,YAAMiC,SAAS,KAAKM,YAAYN;AAChC,YAAMK,SAAS,KAAKiH,UAAUvJ,MAAAA;AAE9B,aAAO;QACLqK,OAAOpI,OAAOiH,UAAS,EAAGlJ,MAAM;QAChChC,OAAO,KAAKiE,OAAOqI,iBAAiBhI,OAAOL,OAAOU,IAAI,CAAC;MACzD;IACF;IAEAmG,gBAAgB/H,MAAMJ,MAAM/J,QAAO6R,OAAO;AACxC,aAAOoU,4BAA4BC,KAAK,IAAI,EAAE/b,MAAMJ,MAAM/J,QAAO6R,KAAAA;IACnE;IAEAjN,OAAO6E,MAAM;AACX,YAAMU,OAAO,KAAKwB;AAClB,YAAM8Y,OAAOta,KAAK0C;AAClB,YAAMwR,SAASlU,KAAKJ,QAAQ,CAAA;AAC5B,YAAMsI,SAASlI,KAAK0B,OAAOyG,UAAS;AAGpCmS,WAAKpG,SAASA;AAEd,UAAI5U,SAAS,UAAU;AACrB,cAAM/C,UAAU,KAAKwN,6BAA6BzK,IAAAA;AAClD,YAAI,CAAC,KAAK/C,QAAQ6d,UAAU;AAC1B7d,kBAAQib,cAAc;;AAGxB,cAAMrb,aAAa;UACjBlC,OAAO;UACP6iB,WAAW5U,OAAO1R,WAAW0d,OAAO1d;UACpC+F;QACF;AAEA,aAAKkP,cAAc6O,MAAMzlB,QAAWsH,YAAYmD,IAAAA;;AAIlD,WAAKiN,eAAe2H,QAAQ,GAAGA,OAAO1d,QAAQ8I,IAAAA;IAChD;IAEAiN,eAAe2H,QAAQre,QAAO6R,OAAOpI,MAAM;AACzC,YAAM9B,QAAQ,KAAKgE,YAAY0E;AAC/B,YAAMK,QAAQjH,SAAS;AAEvB,eAAS7I,KAAIZ,QAAOY,KAAIZ,SAAQ6R,OAAOjR,MAAK;AAC1C,cAAM0d,QAAQD,OAAOzd,EAAE;AACvB,cAAM8F,UAAU,KAAKyN,0BAA0BvT,IAAG0d,MAAM3Z,SAAS,WAAW8E,IAAI;AAChF,cAAMyd,gBAAgBvf,MAAMwf,yBAAyBvmB,IAAG,KAAK+R,UAAU/R,EAAAA,EAAG+H,CAAC;AAE3E,cAAMR,KAAIuI,QAAQ/I,MAAM4e,UAAUW,cAAc/e;AAChD,cAAMC,KAAIsI,QAAQ/I,MAAM6e,UAAUU,cAAc9e;AAEhD,cAAM9B,aAAa;UACjB6B,GAAAA;UACAC,GAAAA;UACAwX,OAAOsH,cAActH;UACrBnB,MAAM3B,MAAM3U,EAAAA,KAAM2U,MAAM1U,EAAAA;UACxB1B;QACF;AAEA,aAAKkP,cAAc0I,OAAO1d,IAAG0F,YAAYmD,IAAAA;MAC3C;IACF;EACF;AClGe,MAAM2d,oBAAN,cAAgCxZ,kBAAAA;IAE7C,OAAOpD,KAAK;IAKZ,OAAOzE,WAAW;MAChB8H,oBAAoB;MACpBC,iBAAiB;MACjByW,UAAU;MACVtV,MAAM;;IAMR,OAAOqM,YAAY;MAEjB+L,aAAa;QACX5d,MAAM;MACR;MAEA8C,QAAQ;QACNpE,GAAG;UACD9I,MAAM;QACR;QACA+I,GAAG;UACD/I,MAAM;QACR;MACF;;IAMFmU,iBAAiBpK,QAAO;AACtB,YAAMe,OAAO,KAAKwB;AAClB,YAAM0G,SAAS,KAAKnT,MAAM6K,KAAKsI,UAAU,CAAA;AACzC,YAAM,EAACpK,QAAQC,OAAAA,IAAUiC;AACzB,YAAMuB,SAAS,KAAKiH,UAAUvJ,MAAAA;AAC9B,YAAMjB,KAAIF,OAAOyL,iBAAiBhI,OAAOvD,CAAC;AAC1C,YAAMC,KAAIF,OAAOwL,iBAAiBhI,OAAOtD,CAAC;AAE1C,aAAO;QACLqL,OAAOpB,OAAOjJ,MAAAA,KAAU;QACxBhC,OAAO,MAAMe,KAAI,OAAOC,KAAI;MAC9B;IACF;IAEAxD,OAAO6E,MAAM;AACX,YAAMU,OAAO,KAAKwB;AAClB,YAAM,EAAC5B,MAAMsU,SAAS,CAAA,EAAE,IAAIlU;AAE5B,YAAMwa,qBAAqB,KAAKzlB,MAAMqW;AACtC,UAAI,EAACvV,OAAAA,QAAO6R,MAAAA,IAAS+S,iCAAiCza,MAAMkU,QAAQsG,kBAAAA;AAEpE,WAAKnW,aAAaxO;AAClB,WAAKyO,aAAaoD;AAElB,UAAIgT,oBAAoB1a,IAAO,GAAA;AAC7BnK,QAAAA,SAAQ;AACR6R,gBAAQwM,OAAO1d;;AAGjB,UAAI,KAAK+F,QAAQ6d,UAAU;AAGzB,YAAI,CAAC,KAAK1W,oBAAoB;AAC5B,eAAKmB,YAAW;;AAElB,cAAM,EAACnC,SAAS4X,MAAMC,SAAAA,IAAYva;AAGlCsa,aAAKjf,SAAS,KAAKtG;AACnBulB,aAAKK,gBAAgB,KAAK1b;AAC1Bqb,aAAKM,aAAa,CAAC,CAACL,SAASK;AAC7BN,aAAKpG,SAASA;AAEd,cAAM3X,UAAU,KAAKwN,6BAA6BzK,IAAAA;AAClD/C,gBAAQse,UAAU,KAAKte,QAAQse;AAC/B,aAAKpP,cAAc6O,MAAMzlB,QAAW;UAClCimB,UAAU,CAACN;UACXje;WACC+C,IAAAA;MACL,WAAW,KAAKoE,oBAAoB;AAElC,eAAO1D,KAAK0C;AACZ,aAAKgB,qBAAqB;;AAI5B,WAAK6I,eAAe2H,QAAQre,QAAO6R,OAAOpI,IAAAA;IAC5C;IAEAuF,cAAc;AACZ,YAAM,EAACuV,SAAQ,IAAI,KAAK7d;AAExB,UAAI,CAAC,KAAKmH,sBAAsB0W,UAAU;AACxC,aAAK1W,qBAAqB,KAAK3O,MAAMooB,SAASC,WAAW,MAAA;;AAG3D,YAAMvY,YAAW;IACnB;IAEA0H,eAAe2H,QAAQre,QAAO6R,OAAOpI,MAAM;AACzC,YAAMiH,QAAQjH,SAAS;AACvB,YAAM,EAACoC,QAAQR,QAAQsC,UAAU+W,SAAAA,IAAY,KAAK/Y;AAClD,YAAM8J,YAAY,KAAKtB,0BAA0BnU,QAAOyJ,IAAAA;AACxD,YAAM6L,gBAAgB,KAAKF,iBAAiBK,SAAAA;AAC5C,YAAMJ,iBAAiB,KAAKA,eAAe5L,MAAM6L,aAAAA;AACjD,YAAMxJ,QAAQD,OAAOE;AACrB,YAAMC,QAAQX,OAAOU;AACrB,YAAM,EAACyY,UAAUQ,QAAAA,IAAW,KAAKte;AACjC,YAAMwe,eAAeC,SAASX,QAAYA,IAAAA,WAAW5Z,OAAOE;AAC5D,YAAMsa,eAAe,KAAKlmB,MAAMqW,uBAAuB7E,SAASjH,SAAS;AACzE,UAAI6b,aAAatlB,SAAQ,KAAK,KAAK2S,UAAU3S,SAAQ,CAAA;AAErD,eAASY,KAAIZ,QAAOY,KAAIZ,SAAQ6R,OAAO,EAAEjR,IAAG;AAC1C,cAAM0d,QAAQD,OAAOzd,EAAE;AACvB,cAAM8K,SAAS,KAAKiH,UAAU/R,EAAAA;AAC9B,cAAM0F,aAAa8e,eAAe9G,QAAQ,CAAA;AAC1C,cAAMiH,WAAW1M,cAAcnN,OAAOM,KAAM,CAAA;AAC5C,cAAMuS,SAASjY,WAAWwF,KAAM,IAAGD,OAAOuM,iBAAiB1M,OAAOI,KAAAA,GAAQlL,EAAAA;AAC1E,cAAM4d,SAASlY,WAAW0F,KAAM,IAAG0E,SAAS6U,WAAWla,OAAO2Q,aAAY,IAAK3Q,OAAO+M,iBAAiBzK,WAAW,KAAKtE,WAAWgC,QAAQK,QAAQiC,QAAAA,IAAYjC,OAAOM,KAAM,GAAEpL,EAAE;AAE/K0F,mBAAWmY,OAAO3B,MAAMyB,MAAAA,KAAWzB,MAAM0B,MAAW+G,KAAAA;AACpDjf,mBAAWlE,OAAOxB,KAAI,KAAK,KAAMuX,IAAIzM,OAAOI,KAAM,IAAGwZ,WAAWxZ,KAAAA,CAAM,IAAKoZ;AAC3E,YAAIF,SAAS;AACX1e,qBAAWoF,SAASA;AACpBpF,qBAAW2G,MAAMyX,SAAS3a,KAAKnJ,EAAE;;AAGnC,YAAIyU,gBAAgB;AAClB/O,qBAAWI,UAAU4O,iBAAiB,KAAKnB,0BAA0BvT,IAAG0d,MAAM3Z,SAAS,WAAW8E,IAAI;;AAGxG,YAAI,CAAC2b,cAAc;AACjB,eAAKxP,cAAc0I,OAAO1d,IAAG0F,YAAYmD,IAAAA;;AAG3C6b,qBAAa5Z;MACf;AAEA,WAAKiK,oBAAoBL,eAAe7L,MAAMgM,SAAAA;IAChD;IAKAlC,iBAAiB;AACf,YAAMpJ,OAAO,KAAKwB;AAClB,YAAM5B,OAAOI,KAAKJ,QAAQ,CAAA;AAE1B,UAAI,CAAC,KAAKrD,QAAQ6d,UAAU;AAC1B,YAAIriB,MAAM;AACV,iBAAStB,KAAImJ,KAAKpJ,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AACzCsB,gBAAMpC,KAAKoC,IAAIA,KAAK6H,KAAKnJ,EAAAA,EAAGyG,KAAK,KAAK8M,0BAA0BvT,EAAM,CAAA,IAAA,CAAA;QACxE;AACA,eAAOsB,MAAM,KAAKA;;AAGpB,YAAM2K,UAAU1C,KAAK0C;AACrB,YAAM2Y,SAAS3Y,QAAQnG,WAAWmG,QAAQnG,QAAQib,eAAe;AAEjE,UAAI,CAAC5X,KAAKpJ,QAAQ;AAChB,eAAO6kB;;AAGT,YAAMC,aAAa1b,KAAK,CAAE,EAAC1C,KAAK,KAAK8M,0BAA0B,CAAA,CAAA;AAC/D,YAAMuR,YAAY3b,KAAKA,KAAKpJ,SAAS,CAAE,EAAC0G,KAAK,KAAK8M,0BAA0BpK,KAAKpJ,SAAS,CAAA,CAAA;AAC1F,aAAOb,KAAKoC,IAAIsjB,QAAQC,YAAYC,SAAa,IAAA;IACnD;EACF;;;;;;;;;;;;AClHA,WAAS8B,WAAwB;AAC/B,UAAM,IAAIC,MAAM,iFAAmF;EACrG;AAQA,MAAMC,kBAAN,MAAMA,iBAAAA;;;;;;;;;;;IAYJ,OAAOC,SACLC,SACA;AACA/hB,aAAOyB,OAAOogB,iBAAgBG,WAAWD,OAAAA;IAC3C;IAESlhB;IAEThI,YAAYgI,SAAoB;AAC9B,WAAKA,UAAUA,WAAW,CAAA;IAC5B;;IAGAohB,OAAO;IAAA;IAEPC,UAAkC;AAChC,aAAOP,SAAAA;IACT;IAEA5V,QAAuB;AACrB,aAAO4V,SAAAA;IACT;IAEAQ,SAAiB;AACf,aAAOR,SAAAA;IACT;IAEA3lB,MAAc;AACZ,aAAO2lB,SAAAA;IACT;IAEAS,OAAe;AACb,aAAOT,SAAAA;IACT;IAEAU,UAAkB;AAChB,aAAOV,SAAAA;IACT;IAEAW,QAAgB;AACd,aAAOX,SAAAA;IACT;EACF;AAEA,MAAA,WAAe;IACbY,OAAOV;EACT;AC/GA,WAASW,aAAaC,SAASvc,MAAM3E,OAAOmhB,WAAW;AACrD,UAAM,EAAC9c,YAAY1B,MAAMgI,QAAAA,IAAWuW;AACpC,UAAMzc,SAASJ,WAAWE,YAAYE;AACtC,QAAIA,UAAUE,SAASF,OAAOE,QAAQA,SAAS,OAAOgG,WAAWhI,KAAKpJ,QAAQ;AAC5E,YAAM6nB,eAAe3c,OAAO4c,iBAAiBC,gBAAgBC;AAC7D,UAAI,CAACJ,WAAW;AACd,eAAOC,aAAaze,MAAMgC,MAAM3E,KAAAA;iBACvBqE,WAAW8C,gBAAgB;AAIpC,cAAMqa,KAAK7e,KAAK,CAAE;AAClB,cAAM+I,QAAQ,OAAO8V,GAAGC,aAAa,cAAcD,GAAGC,SAAS9c,IAAAA;AAC/D,YAAI+G,OAAO;AACT,gBAAM9S,SAAQwoB,aAAaze,MAAMgC,MAAM3E,QAAQ0L,KAAAA;AAC/C,gBAAM/K,MAAMygB,aAAaze,MAAMgC,MAAM3E,QAAQ0L,KAAAA;AAC7C,iBAAO;YAACgW,IAAI9oB,OAAM8oB;YAAIC,IAAIhhB,IAAIghB;UAAE;;;;AAKtC,WAAO;MAACD,IAAI;MAAGC,IAAIhf,KAAKpJ,SAAS;IAAC;EACpC;AAUA,WAASqoB,yBAAyB9pB,OAAO6M,MAAMkd,UAAUC,SAASX,WAAW;AAC3E,UAAMtf,WAAW/J,MAAMiqB,6BAA4B;AACnD,UAAM/hB,QAAQ6hB,SAASld,IAAK;AAC5B,aAASnL,KAAI,GAAGuI,OAAOF,SAAStI,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACrD,YAAM,EAACwI,OAAAA,QAAOW,KAAAA,IAAQd,SAASrI,EAAE;AACjC,YAAM,EAACkoB,IAAIC,IAAAA,IAAAA,IAAMV,aAAapf,SAASrI,EAAAA,GAAImL,MAAM3E,OAAOmhB,SAAAA;AACxD,eAASa,KAAIN,IAAIM,MAAKL,KAAI,EAAEK,IAAG;AAC7B,cAAMrc,UAAUhD,KAAKqf,EAAE;AACvB,YAAI,CAACrc,QAAQ0R,MAAM;AACjByK,kBAAQnc,SAAS3D,QAAOggB,EAAAA;;MAE5B;IACF;EACF;AAOA,WAASC,yBAAyBtd,MAAM;AACtC,UAAMud,OAAOvd,KAAKgR,QAAQ,GAAA,MAAS;AACnC,UAAMwM,OAAOxd,KAAKgR,QAAQ,GAAA,MAAS;AAEnC,WAAO,SAASyM,KAAKC,KAAK;AACxB,YAAMC,SAASJ,OAAOxpB,KAAKqY,IAAIqR,IAAIrhB,IAAIshB,IAAIthB,CAAC,IAAI;AAChD,YAAMwhB,SAASJ,OAAOzpB,KAAKqY,IAAIqR,IAAIphB,IAAIqhB,IAAIrhB,CAAC,IAAI;AAChD,aAAOtI,KAAK8pB,KAAK9pB,KAAK+pB,IAAIH,QAAQ,CAAK5pB,IAAAA,KAAK+pB,IAAIF,QAAQ,CAAA,CAAA;IAC1D;EACF;AAWA,WAASG,kBAAkB5qB,OAAO+pB,UAAUld,MAAMge,kBAAkBC,kBAAkB;AACpF,UAAMtpB,QAAQ,CAAA;AAEd,QAAI,CAACspB,oBAAoB,CAAC9qB,MAAM+qB,cAAchB,QAAW,GAAA;AACvD,aAAOvoB;;AAGT,UAAMwpB,iBAAiB,SAASnd,SAASrD,cAAcN,QAAO;AAC5D,UAAI,CAAC4gB,oBAAoB,CAACG,eAAepd,SAAS7N,MAAM6U,WAAW,CAAI,GAAA;AACrE;;AAEF,UAAIhH,QAAQqd,QAAQnB,SAAS9gB,GAAG8gB,SAAS7gB,GAAG2hB,gBAAmB,GAAA;AAC7DrpB,cAAMkB,KAAK;UAACmL;UAASrD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEA4f,6BAAyB9pB,OAAO6M,MAAMkd,UAAUiB,gBAAgB,IAAI;AACpE,WAAOxpB;EACT;AAUA,WAAS2pB,sBAAsBnrB,OAAO+pB,UAAUld,MAAMge,kBAAkB;AACtE,QAAIrpB,QAAQ,CAAA;AAEZ,aAASwpB,eAAend,SAASrD,cAAcN,QAAO;AACpD,YAAM,EAAC+V,YAAYC,SAAAA,IAAYrS,QAAQud,SAAS;QAAC;QAAc;SAAaP,gBAAAA;AAC5E,YAAM,EAACnK,MAAAA,IAAS2K,kBAAkBxd,SAAS;QAAC5E,GAAG8gB,SAAS9gB;QAAGC,GAAG6gB,SAAS7gB;MAAC,CAAA;AAExE,UAAIyX,cAAcD,OAAOT,YAAYC,QAAW,GAAA;AAC9C1e,cAAMkB,KAAK;UAACmL;UAASrD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEA4f,6BAAyB9pB,OAAO6M,MAAMkd,UAAUiB,cAAAA;AAChD,WAAOxpB;EACT;AAYA,WAAS8pB,yBAAyBtrB,OAAO+pB,UAAUld,MAAMwc,WAAWwB,kBAAkBC,kBAAkB;AACtG,QAAItpB,QAAQ,CAAA;AACZ,UAAM+pB,iBAAiBpB,yBAAyBtd,IAAAA;AAChD,QAAI2e,cAAc9f,OAAOE;AAEzB,aAASof,eAAend,SAASrD,cAAcN,QAAO;AACpD,YAAMghB,WAAUrd,QAAQqd,QAAQnB,SAAS9gB,GAAG8gB,SAAS7gB,GAAG2hB,gBAAAA;AACxD,UAAIxB,aAAa,CAAC6B,UAAS;AACzB;;AAGF,YAAM7N,SAASxP,QAAQ4d,eAAeZ,gBAAAA;AACtC,YAAMa,cAAc,CAAC,CAACZ,oBAAoB9qB,MAAM+qB,cAAc1N,MAAAA;AAC9D,UAAI,CAACqO,eAAe,CAACR,UAAS;AAC5B;;AAGF,YAAMS,WAAWJ,eAAexB,UAAU1M,MAAAA;AAC1C,UAAIsO,WAAWH,aAAa;AAC1BhqB,gBAAQ;UAAC;YAACqM;YAASrD;YAAcN,OAAAA;UAAK;QAAE;AACxCshB,sBAAcG;iBACLA,aAAaH,aAAa;AAEnChqB,cAAMkB,KAAK;UAACmL;UAASrD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEA4f,6BAAyB9pB,OAAO6M,MAAMkd,UAAUiB,cAAAA;AAChD,WAAOxpB;EACT;AAYA,WAASoqB,gBAAgB5rB,OAAO+pB,UAAUld,MAAMwc,WAAWwB,kBAAkBC,kBAAkB;AAC7F,QAAI,CAACA,oBAAoB,CAAC9qB,MAAM+qB,cAAchB,QAAW,GAAA;AACvD,aAAO,CAAA;;AAGT,WAAOld,SAAS,OAAO,CAACwc,YACpB8B,sBAAsBnrB,OAAO+pB,UAAUld,MAAMge,gBAAAA,IAC7CS,yBAAyBtrB,OAAO+pB,UAAUld,MAAMwc,WAAWwB,kBAAkBC,gBAAiB;EACpG;AAWA,WAASe,aAAa7rB,OAAO+pB,UAAUld,MAAMwc,WAAWwB,kBAAkB;AACxE,UAAMrpB,QAAQ,CAAA;AACd,UAAMsqB,cAAcjf,SAAS,MAAM,aAAa;AAChD,QAAIkf,iBAAiB;AAErBjC,6BAAyB9pB,OAAO6M,MAAMkd,UAAU,CAAClc,SAASrD,cAAcN,WAAU;AAChF,UAAI2D,QAAQie,WAAY,EAAC/B,SAASld,IAAAA,GAAOge,gBAAmB,GAAA;AAC1DrpB,cAAMkB,KAAK;UAACmL;UAASrD;UAAcN,OAAAA;QAAK,CAAA;AACxC6hB,yBAAiBA,kBAAkBle,QAAQqd,QAAQnB,SAAS9gB,GAAG8gB,SAAS7gB,GAAG2hB,gBAAAA;;IAE/E,CAAA;AAIA,QAAIxB,aAAa,CAAC0C,gBAAgB;AAChC,aAAO,CAAA;;AAET,WAAOvqB;EACT;AAMA,MAAA,cAAe;IAEbsoB;IAGAkC,OAAO;MAYL9hB,MAAMlK,OAAO2iB,IAAGnb,SAASqjB,kBAAkB;AACzC,cAAMd,WAAWkC,oBAAoBtJ,IAAG3iB,KAAAA;AAExC,cAAM6M,OAAOrF,QAAQqF,QAAQ;AAC7B,cAAMie,mBAAmBtjB,QAAQsjB,oBAAoB;AACrD,cAAMtpB,QAAQgG,QAAQ6hB,YAClBuB,kBAAkB5qB,OAAO+pB,UAAUld,MAAMge,kBAAkBC,gBAAAA,IAC3Dc,gBAAgB5rB,OAAO+pB,UAAUld,MAAM,OAAOge,kBAAkBC,gBAAiB;AACrF,cAAMnW,YAAW,CAAA;AAEjB,YAAI,CAACnT,MAAMC,QAAQ;AACjB,iBAAO,CAAA;;AAGTzB,cAAMiqB,6BAA4B,EAAGzpB,QAAQ,CAACyK,SAAS;AACrD,gBAAMf,SAAQ1I,MAAM,CAAA,EAAG0I;AACvB,gBAAM2D,UAAU5C,KAAKJ,KAAKX,MAAM;AAGhC,cAAI2D,WAAW,CAACA,QAAQ0R,MAAM;AAC5B5K,YAAAA,UAASjS,KAAK;cAACmL;cAASrD,cAAcS,KAAKf;cAAOA,OAAAA;YAAK,CAAA;;QAE3D,CAAA;AAEA,eAAOyK;MACT;MAYAhH,QAAQ3N,OAAO2iB,IAAGnb,SAASqjB,kBAAkB;AAC3C,cAAMd,WAAWkC,oBAAoBtJ,IAAG3iB,KAAAA;AACxC,cAAM6M,OAAOrF,QAAQqF,QAAQ;AAC7B,cAAMie,mBAAmBtjB,QAAQsjB,oBAAoB;AACrD,YAAItpB,QAAQgG,QAAQ6hB,YAChBuB,kBAAkB5qB,OAAO+pB,UAAUld,MAAMge,kBAAkBC,gBAAAA,IAC7Dc,gBAAgB5rB,OAAO+pB,UAAUld,MAAM,OAAOge,kBAAkBC,gBAAiB;AAEnF,YAAItpB,MAAMC,SAAS,GAAG;AACpB,gBAAM+I,eAAehJ,MAAM,CAAA,EAAGgJ;AAC9B,gBAAMK,OAAO7K,MAAMqR,eAAe7G,YAAAA,EAAcK;AAChDrJ,kBAAQ,CAAA;AACR,mBAASE,KAAI,GAAGA,KAAImJ,KAAKpJ,QAAQ,EAAEC,IAAG;AACpCF,kBAAMkB,KAAK;cAACmL,SAAShD,KAAKnJ,EAAE;cAAE8I;cAAcN,OAAOxI;YAAC,CAAA;UACtD;;AAGF,eAAOF;MACT;MAYA4d,MAAMpf,OAAO2iB,IAAGnb,SAASqjB,kBAAkB;AACzC,cAAMd,WAAWkC,oBAAoBtJ,IAAG3iB,KAAAA;AACxC,cAAM6M,OAAOrF,QAAQqF,QAAQ;AAC7B,cAAMie,mBAAmBtjB,QAAQsjB,oBAAoB;AACrD,eAAOF,kBAAkB5qB,OAAO+pB,UAAUld,MAAMge,kBAAkBC,gBAAAA;MACpE;MAWAoB,QAAQlsB,OAAO2iB,IAAGnb,SAASqjB,kBAAkB;AAC3C,cAAMd,WAAWkC,oBAAoBtJ,IAAG3iB,KAAAA;AACxC,cAAM6M,OAAOrF,QAAQqF,QAAQ;AAC7B,cAAMie,mBAAmBtjB,QAAQsjB,oBAAoB;AACrD,eAAOc,gBAAgB5rB,OAAO+pB,UAAUld,MAAMrF,QAAQ6hB,WAAWwB,kBAAkBC,gBAAAA;MACrF;MAWA7hB,EAAEjJ,OAAO2iB,IAAGnb,SAASqjB,kBAAkB;AACrC,cAAMd,WAAWkC,oBAAoBtJ,IAAG3iB,KAAAA;AACxC,eAAO6rB,aAAa7rB,OAAO+pB,UAAU,KAAKviB,QAAQ6hB,WAAWwB,gBAAAA;MAC/D;MAWA3hB,EAAElJ,OAAO2iB,IAAGnb,SAASqjB,kBAAkB;AACrC,cAAMd,WAAWkC,oBAAoBtJ,IAAG3iB,KAAAA;AACxC,eAAO6rB,aAAa7rB,OAAO+pB,UAAU,KAAKviB,QAAQ6hB,WAAWwB,gBAAAA;MAC/D;IACF;EACF;ACvWA,MAAMsB,mBAAmB;IAAC;IAAQ;IAAO;IAAS;EAAS;AAE3D,WAASC,iBAAiBC,OAAOtC,UAAU;AACzC,WAAOsC,MAAM/e,OAAOwO,CAAAA,OAAKA,GAAEwQ,QAAQvC,QAAAA;EACrC;AAEA,WAASwC,4BAA4BF,OAAOxf,MAAM;AAChD,WAAOwf,MAAM/e,OAAOwO,CAAAA,OAAKqQ,iBAAiBtO,QAAQ/B,GAAEwQ,GAAG,MAAM,MAAMxQ,GAAE0Q,IAAI3f,SAASA,IAAAA;EACpF;AAEA,WAAS4f,aAAaJ,OAAOzjB,SAAS;AACpC,WAAOyjB,MAAM1T,KAAK,CAACC,IAAGlP,OAAM;AAC1B,YAAMgjB,KAAK9jB,UAAUc,KAAIkP;AACzB,YAAMgD,KAAKhT,UAAUgQ,KAAIlP;AACzB,aAAOgjB,GAAGvH,WAAWvJ,GAAGuJ,SACtBuH,GAAGxiB,QAAQ0R,GAAG1R,QACdwiB,GAAGvH,SAASvJ,GAAGuJ;IACnB,CAAA;EACF;AAEA,WAASwH,UAAUC,OAAO;AACxB,UAAMC,cAAc,CAAA;AACpB,QAAInrB,IAAGuI,MAAMuiB,KAAKF,KAAKliB,OAAO0iB;AAE9B,SAAKprB,KAAI,GAAGuI,QAAQ2iB,SAAS,CAAA,GAAInrB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACtD8qB,YAAMI,MAAMlrB,EAAE;AACb,OAAA,EAACqoB,UAAUuC,KAAK9kB,SAAS,EAAC4C,OAAO0iB,cAAc,EAAC,EAAC,IAAIN;AACtDK,kBAAYnqB,KAAK;QACfwH,OAAOxI;QACP8qB;QACAF;QACApR,YAAYsR,IAAIxR,aAAY;QAC5BmK,QAAQqH,IAAIrH;QACZ/a,OAAOA,SAAUkiB,MAAMliB;QACvB0iB;MACF,CAAA;IACF;AACA,WAAOD;EACT;AAEA,WAASE,YAAYC,UAAS;AAC5B,UAAMlhB,SAAS,CAAA;AACf,eAAWmhB,QAAQD,UAAS;AAC1B,YAAM,EAAC5iB,OAAOkiB,KAAKQ,YAAAA,IAAeG;AAClC,UAAI,CAAC7iB,SAAS,CAAC+hB,iBAAiBe,SAASZ,GAAM,GAAA;AAC7C;;AAEF,YAAMa,SAASrhB,OAAO1B,KAAAA,MAAW0B,OAAO1B,KAAAA,IAAS;QAACuI,OAAO;QAAGya,QAAQ;QAAGjI,QAAQ;QAAGhd,MAAM;;AACxFglB,aAAOxa;AACPwa,aAAOhI,UAAU2H;IACnB;AACA,WAAOhhB;EACT;AAKA,WAASuhB,cAAcL,UAASM,QAAQ;AACtC,UAAMxhB,SAASihB,YAAYC,QAAAA;AAC3B,UAAM,EAACO,cAAcC,cAAAA,IAAiBF;AACtC,QAAI5rB,IAAGuI,MAAMwjB;AACb,SAAK/rB,KAAI,GAAGuI,OAAO+iB,SAAQvrB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAChD+rB,eAAST,SAAQtrB,EAAE;AACnB,YAAM,EAACgsB,SAAAA,IAAYD,OAAOjB;AAC1B,YAAMpiB,QAAQ0B,OAAO2hB,OAAOrjB,KAAK;AACjC,YAAMzG,SAASyG,SAASqjB,OAAOX,cAAc1iB,MAAM+a;AACnD,UAAIsI,OAAOvS,YAAY;AACrBuS,eAAOlQ,QAAQ5Z,SAASA,SAAS4pB,eAAeG,YAAYJ,OAAOK;AACnEF,eAAOnQ,SAASkQ;aACX;AACLC,eAAOlQ,QAAQgQ;AACfE,eAAOnQ,SAAS3Z,SAASA,SAAS6pB,gBAAgBE,YAAYJ,OAAOM;;IAEzE;AACA,WAAO9hB;EACT;AAEA,WAAS+hB,iBAAiBjB,OAAO;AAC/B,UAAMC,cAAcF,UAAUC,KAAAA;AAC9B,UAAMc,WAAWjB,aAAaI,YAAYvf,OAAO2f,CAAAA,SAAQA,KAAKT,IAAIkB,QAAQ,GAAG,IAAI;AACjF,UAAMpkB,OAAOmjB,aAAaL,iBAAiBS,aAAa,MAAA,GAAS,IAAI;AACrE,UAAMzjB,QAAQqjB,aAAaL,iBAAiBS,aAAa,OAAA,CAAA;AACzD,UAAM1jB,MAAMsjB,aAAaL,iBAAiBS,aAAa,KAAA,GAAQ,IAAI;AACnE,UAAMxjB,SAASojB,aAAaL,iBAAiBS,aAAa,QAAA,CAAA;AAC1D,UAAMiB,mBAAmBvB,4BAA4BM,aAAa,GAAA;AAClE,UAAMkB,iBAAiBxB,4BAA4BM,aAAa,GAAA;AAEhE,WAAO;MACLa;MACAM,YAAY1kB,KAAKmP,OAAOtP,GAAAA;MACxB8kB,gBAAgB7kB,MAAMqP,OAAOsV,cAAAA,EAAgBtV,OAAOpP,MAAAA,EAAQoP,OAAOqV,gBAAAA;MACnEjZ,WAAWuX,iBAAiBS,aAAa,WAAA;MACzCqB,UAAU5kB,KAAKmP,OAAOrP,KAAAA,EAAOqP,OAAOsV,cAAAA;MACpC7S,YAAY/R,IAAIsP,OAAOpP,MAAAA,EAAQoP,OAAOqV,gBAAAA;IACxC;EACF;AAEA,WAASK,eAAeC,YAAYvZ,WAAW+D,IAAGlP,IAAG;AACnD,WAAO9I,KAAKoC,IAAIorB,WAAWxV,EAAE,GAAE/D,UAAU+D,EAAAA,CAAE,IAAIhY,KAAKoC,IAAIorB,WAAW1kB,EAAAA,GAAImL,UAAUnL,EAAE,CAAA;EACrF;AAEA,WAAS2kB,iBAAiBD,YAAYE,YAAY;AAChDF,eAAWjlB,MAAMvI,KAAKoC,IAAIorB,WAAWjlB,KAAKmlB,WAAWnlB,GAAG;AACxDilB,eAAW9kB,OAAO1I,KAAKoC,IAAIorB,WAAW9kB,MAAMglB,WAAWhlB,IAAI;AAC3D8kB,eAAW/kB,SAASzI,KAAKoC,IAAIorB,WAAW/kB,QAAQilB,WAAWjlB,MAAM;AACjE+kB,eAAWhlB,QAAQxI,KAAKoC,IAAIorB,WAAWhlB,OAAOklB,WAAWllB,KAAK;EAChE;AAEA,WAASmlB,WAAW1Z,WAAWyY,QAAQG,QAAQ3hB,QAAQ;AACrD,UAAM,EAACwgB,KAAKE,IAAAA,IAAOiB;AACnB,UAAMW,aAAavZ,UAAUuZ;AAG7B,QAAI,CAAC3nB,SAAS6lB,GAAM,GAAA;AAClB,UAAImB,OAAOtlB,MAAM;AAEf0M,kBAAUyX,GAAAA,KAAQmB,OAAOtlB;;AAE3B,YAAMiC,QAAQ0B,OAAO2hB,OAAOrjB,KAAK,KAAK;QAACjC,MAAM;QAAGwK,OAAO;MAAC;AACxDvI,YAAMjC,OAAOvH,KAAKoC,IAAIoH,MAAMjC,MAAMslB,OAAOvS,aAAasR,IAAIlP,SAASkP,IAAIjP,KAAK;AAC5EkQ,aAAOtlB,OAAOiC,MAAMjC,OAAOiC,MAAMuI;AACjCkC,gBAAUyX,GAAAA,KAAQmB,OAAOtlB;;AAG3B,QAAIqkB,IAAIgC,YAAY;AAClBH,uBAAiBD,YAAY5B,IAAIgC,WAAU,CAAA;;AAG7C,UAAMC,WAAW7tB,KAAKoC,IAAI,GAAGsqB,OAAOoB,aAAaP,eAAeC,YAAYvZ,WAAW,QAAQ,OAAA,CAAA;AAC/F,UAAM8Z,YAAY/tB,KAAKoC,IAAI,GAAGsqB,OAAOsB,cAAcT,eAAeC,YAAYvZ,WAAW,OAAO,QAAA,CAAA;AAChG,UAAMga,eAAeJ,aAAa5Z,UAAUia;AAC5C,UAAMC,gBAAgBJ,cAAc9Z,UAAUma;AAC9Cna,cAAUia,IAAIL;AACd5Z,cAAUma,IAAIL;AAGd,WAAOlB,OAAOvS,aACV;MAAC+T,MAAMJ;MAAcK,OAAOH;QAC5B;MAACE,MAAMF;MAAeG,OAAOL;;EACnC;AAEA,WAASM,iBAAiBta,WAAW;AACnC,UAAMuZ,aAAavZ,UAAUuZ;AAE7B,aAASgB,UAAU9C,KAAK;AACtB,YAAM+C,SAASzuB,KAAKoC,IAAIorB,WAAW9B,GAAAA,IAAOzX,UAAUyX,GAAAA,GAAM,CAAA;AAC1DzX,gBAAUyX,GAAAA,KAAQ+C;AAClB,aAAOA;IACT;AACAxa,cAAU3L,KAAKkmB,UAAU,KAAA;AACzBva,cAAU5L,KAAKmmB,UAAU,MAAA;AACzBA,cAAU,OAAA;AACVA,cAAU,QAAA;EACZ;AAEA,WAASE,WAAWpU,YAAYrG,WAAW;AACzC,UAAMuZ,aAAavZ,UAAUuZ;AAE7B,aAASmB,mBAAmBC,YAAW;AACrC,YAAMC,SAAS;QAACnmB,MAAM;QAAGH,KAAK;QAAGC,OAAO;QAAGC,QAAQ;MAAC;AACpDmmB,MAAAA,WAAUhvB,QAAQ,CAAC8rB,QAAQ;AACzBmD,eAAOnD,GAAAA,IAAO1rB,KAAKoC,IAAI6R,UAAUyX,GAAI,GAAE8B,WAAW9B,GAAI,CAAA;MACxD,CAAA;AACA,aAAOmD;IACT;AAEA,WAAOvU,aACHqU,mBAAmB;MAAC;MAAQ;IAAQ,CAAA,IACpCA,mBAAmB;MAAC;MAAO;KAAS;EAC1C;AAEA,WAASG,SAAS9C,OAAO/X,WAAWyY,QAAQxhB,QAAQ;AAClD,UAAM6jB,aAAa,CAAA;AACnB,QAAIjuB,IAAGuI,MAAMwjB,QAAQjB,KAAKoD,OAAOC;AAEjC,SAAKnuB,KAAI,GAAGuI,OAAO2iB,MAAMnrB,QAAQmuB,QAAQ,GAAGluB,KAAIuI,MAAM,EAAEvI,IAAG;AACzD+rB,eAASb,MAAMlrB,EAAE;AACjB8qB,YAAMiB,OAAOjB;AAEbA,UAAI9mB,OACF+nB,OAAOlQ,SAAS1I,UAAUia,GAC1BrB,OAAOnQ,UAAUzI,UAAUma,GAC3BM,WAAW7B,OAAOvS,YAAYrG,SAAAA,CAAAA;AAEhC,YAAM,EAACoa,MAAMC,MAAAA,IAASX,WAAW1Z,WAAWyY,QAAQG,QAAQ3hB,MAAAA;AAI5D8jB,eAASX,QAAQU,WAAWluB;AAG5BouB,gBAAUA,WAAWX;AAErB,UAAI,CAAC1C,IAAIkB,UAAU;AACjBiC,mBAAWjtB,KAAK+qB,MAAAA;;IAEpB;AAEA,WAAOmC,SAASF,SAASC,YAAY9a,WAAWyY,QAAQxhB,MAAW+jB,KAAAA;EACrE;AAEA,WAASC,WAAWtD,KAAKljB,MAAMH,KAAKoU,OAAOD,QAAQ;AACjDkP,QAAIrjB,MAAMA;AACVqjB,QAAIljB,OAAOA;AACXkjB,QAAIpjB,QAAQE,OAAOiU;AACnBiP,QAAInjB,SAASF,MAAMmU;AACnBkP,QAAIjP,QAAQA;AACZiP,QAAIlP,SAASA;EACf;AAEA,WAASyS,WAAWnD,OAAO/X,WAAWyY,QAAQxhB,QAAQ;AACpD,UAAMkkB,cAAc1C,OAAO2C;AAC3B,QAAI,EAAChnB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK2L;AAEb,eAAW4Y,UAAUb,OAAO;AAC1B,YAAMJ,MAAMiB,OAAOjB;AACnB,YAAMpiB,QAAQ0B,OAAO2hB,OAAOrjB,KAAK,KAAK;QAACuI,OAAO;QAAGya,QAAQ;QAAGjI,QAAQ;MAAC;AACrE,YAAMA,SAAS,OAAQ2H,cAAc1iB,MAAM+a,UAAW;AACtD,UAAIsI,OAAOvS,YAAY;AACrB,cAAMqC,QAAQ1I,UAAUia,IAAI3J;AAC5B,cAAM7H,SAASlT,MAAMjC,QAAQqkB,IAAIlP;AACjC,YAAI9H,QAAQpL,MAAMtJ,KAAK,GAAG;AACxBoI,UAAAA,KAAIkB,MAAMtJ;;AAEZ,YAAI0rB,IAAIkB,UAAU;AAChBoC,qBAAWtD,KAAKwD,YAAY1mB,MAAMJ,IAAGokB,OAAOoB,aAAasB,YAAY5mB,QAAQ4mB,YAAY1mB,MAAMgU,MAAAA;eAC1F;AACLwS,qBAAWtD,KAAK3X,UAAUvL,OAAOc,MAAMgjB,QAAQlkB,IAAGqU,OAAOD,MAAAA;;AAE3DlT,cAAMtJ,QAAQoI;AACdkB,cAAMgjB,UAAU7P;AAChBrU,QAAAA,KAAIsjB,IAAInjB;aACH;AACL,cAAMiU,SAASzI,UAAUma,IAAI7J;AAC7B,cAAM5H,QAAQnT,MAAMjC,QAAQqkB,IAAIjP;AAChC,YAAI/H,QAAQpL,MAAMtJ,KAAK,GAAG;AACxBmI,UAAAA,KAAImB,MAAMtJ;;AAEZ,YAAI0rB,IAAIkB,UAAU;AAChBoC,qBAAWtD,KAAKvjB,IAAG+mB,YAAY7mB,KAAKoU,OAAO+P,OAAOsB,cAAcoB,YAAY3mB,SAAS2mB,YAAY7mB,GAAG;eAC/F;AACL2mB,qBAAWtD,KAAKvjB,IAAG4L,UAAU1L,MAAMiB,MAAMgjB,QAAQ7P,OAAOD,MAAAA;;AAE1DlT,cAAMtJ,QAAQmI;AACdmB,cAAMgjB,UAAU9P;AAChBrU,QAAAA,KAAIujB,IAAIpjB;;IAEZ;AAEAyL,cAAU5L,IAAIA;AACd4L,cAAU3L,IAAIA;EAChB;AAwBA,MAAA,UAAe;IAQbgnB,OAAOlwB,OAAO4B,MAAM;AAClB,UAAI,CAAC5B,MAAM4sB,OAAO;AAChB5sB,cAAM4sB,QAAQ,CAAA;;AAIhBhrB,WAAK8rB,WAAW9rB,KAAK8rB,YAAY;AACjC9rB,WAAKmoB,WAAWnoB,KAAKmoB,YAAY;AACjCnoB,WAAKujB,SAASvjB,KAAKujB,UAAU;AAE7BvjB,WAAKuuB,UAAUvuB,KAAKuuB,WAAW,WAAW;AACxC,eAAO;UAAC;YACNC,GAAG;YACHzuB,KAAKkT,WAAW;AACdjT,mBAAKD,KAAKkT,SAAAA;YACZ;UACF;QAAE;MACJ;AAEA7U,YAAM4sB,MAAMlqB,KAAKd,IAAAA;IACnB;IAOAyuB,UAAUrwB,OAAOswB,YAAY;AAC3B,YAAMpmB,SAAQlK,MAAM4sB,QAAQ5sB,MAAM4sB,MAAM/O,QAAQyS,UAAc,IAAA;AAC9D,UAAIpmB,WAAU,IAAI;AAChBlK,cAAM4sB,MAAMlV,OAAOxN,QAAO,CAAA;;IAE9B;IAQA1D,UAAUxG,OAAO4B,MAAM4F,SAAS;AAC9B5F,WAAK8rB,WAAWlmB,QAAQkmB;AACxB9rB,WAAKmoB,WAAWviB,QAAQuiB;AACxBnoB,WAAKujB,SAAS3d,QAAQ2d;IACxB;IAUAzf,OAAO1F,OAAOud,OAAOD,QAAQiT,YAAY;AACvC,UAAI,CAACvwB,OAAO;AACV;;AAGF,YAAMiwB,UAAUO,UAAUxwB,MAAMwH,QAAQimB,OAAOwC,OAAO;AACtD,YAAMtC,iBAAiB/sB,KAAKoC,IAAIua,QAAQ0S,QAAQ1S,OAAO,CAAA;AACvD,YAAMqQ,kBAAkBhtB,KAAKoC,IAAIsa,SAAS2S,QAAQ3S,QAAQ,CAAA;AAC1D,YAAMsP,QAAQiB,iBAAiB7tB,MAAM4sB,KAAK;AAC1C,YAAM6D,gBAAgB7D,MAAMsB;AAC5B,YAAMwC,kBAAkB9D,MAAM1R;AAI9ByV,WAAK3wB,MAAM4sB,OAAOJ,CAAAA,QAAO;AACvB,YAAI,OAAOA,IAAIoE,iBAAiB,YAAY;AAC1CpE,cAAIoE,aAAY;;MAEpB,CAAA;AA6BA,YAAMC,0BAA0BJ,cAAc5tB,OAAO,CAACshB,OAAO8I,SAC3DA,KAAKT,IAAIhlB,WAAWylB,KAAKT,IAAIhlB,QAAQof,YAAY,QAAQzC,QAAQA,QAAQ,GAAG,CAAM,KAAA;AAEpF,YAAMmJ,SAAS3mB,OAAOkP,OAAO;QAC3B6Y,YAAYnR;QACZqR,aAAatR;QACb2S;QACAtC;QACAC;QACAL,cAAcI,iBAAiB,IAAIkD;QACnCrD,eAAeI,kBAAkB;MACnC,CAAA;AACA,YAAMQ,aAAaznB,OAAOyB,OAAO,CAAA,GAAI6nB,OAAAA;AACrC5B,uBAAiBD,YAAYoC,UAAUD,UAAAA,CAAAA;AACvC,YAAM1b,YAAYlO,OAAOyB,OAAO;QAC9BgmB;QACAU,GAAGnB;QACHqB,GAAGpB;QACH3kB,GAAGgnB,QAAQ3mB;QACXJ,GAAG+mB,QAAQ9mB;SACV8mB,OAAAA;AAEH,YAAMnkB,SAASuhB,cAAcoD,cAAchY,OAAOiY,eAAkBpD,GAAAA,MAAAA;AAGpEoC,eAAS9C,MAAMc,UAAU7Y,WAAWyY,QAAQxhB,MAAAA;AAG5C4jB,eAASe,eAAe5b,WAAWyY,QAAQxhB,MAAAA;AAG3C,UAAI4jB,SAASgB,iBAAiB7b,WAAWyY,QAAQxhB,MAAS,GAAA;AAExD4jB,iBAASe,eAAe5b,WAAWyY,QAAQxhB,MAAAA;;AAG7CqjB,uBAAiBta,SAAAA;AAGjBkb,iBAAWnD,MAAMoB,YAAYnZ,WAAWyY,QAAQxhB,MAAAA;AAGhD+I,gBAAU5L,KAAK4L,UAAUia;AACzBja,gBAAU3L,KAAK2L,UAAUma;AAEzBe,iBAAWnD,MAAMqB,gBAAgBpZ,WAAWyY,QAAQxhB,MAAAA;AAEpD9L,YAAM6U,YAAY;QAChBvL,MAAMuL,UAAUvL;QAChBH,KAAK0L,UAAU1L;QACfC,OAAOyL,UAAUvL,OAAOuL,UAAUia;QAClCzlB,QAAQwL,UAAU1L,MAAM0L,UAAUma;QAClC1R,QAAQzI,UAAUma;QAClBzR,OAAO1I,UAAUia;MACnB;AAGA6B,WAAK/D,MAAM/X,WAAW,CAAC4Y,WAAW;AAChC,cAAMjB,MAAMiB,OAAOjB;AACnB7lB,eAAOyB,OAAOokB,KAAKxsB,MAAM6U,SAAS;AAClC2X,YAAI9mB,OAAOmP,UAAUia,GAAGja,UAAUma,GAAG;UAAC1lB,MAAM;UAAGH,KAAK;UAAGC,OAAO;UAAGC,QAAQ;QAAC,CAAA;MAC5E,CAAA;IACF;EACF;AC9be,MAAMynB,eAAN,MAAMA;IAOnBC,eAAeC,QAAQrP,aAAa;IAAA;IAQpCsP,eAAe/b,SAAS;AACtB,aAAO;IACT;IASAgc,iBAAiBlxB,OAAOG,MAAMgxB,UAAU;IAAA;IAQxCC,oBAAoBpxB,OAAOG,MAAMgxB,UAAU;IAAA;IAK3CE,sBAAsB;AACpB,aAAO;IACT;IASAC,eAAezjB,SAAS0P,OAAOD,QAAQqE,aAAa;AAClDpE,cAAQ3c,KAAKoC,IAAI,GAAGua,SAAS1P,QAAQ0P,KAAK;AAC1CD,eAASA,UAAUzP,QAAQyP;AAC3B,aAAO;QACLC;QACAD,QAAQ1c,KAAKoC,IAAI,GAAG2e,cAAc/gB,KAAKoE,MAAMuY,QAAQoE,WAAAA,IAAerE,MAAM;MAC5E;IACF;IAMAiU,WAAWP,QAAQ;AACjB,aAAO;IACT;IAMAQ,aAAanrB,QAAQ;IAErB;EACF;ACtEe,MAAMorB,gBAAN,cAA4BX,aAAAA;IACzCC,eAAenvB,MAAM;AAInB,aAAOA,QAAQA,KAAK4Q,cAAc5Q,KAAK4Q,WAAW,IAAA,KAAS;IAC7D;IACAgf,aAAanrB,QAAQ;AACnBA,aAAOmB,QAAQV,YAAY;IAC7B;EACF;ACTA,MAAM4qB,cAAc;AAOpB,MAAMC,cAAc;IAClBC,YAAY;IACZC,WAAW;IACXC,UAAU;IACVC,cAAc;IACdC,aAAa;IACbC,aAAa;IACbC,WAAW;IACXC,cAAc;IACdC,YAAY;EACd;AAEA,MAAMC,gBAAgBnqB,CAAAA,UAASA,UAAU,QAAQA,UAAU;AAQ3D,WAASoqB,WAAWtB,QAAQrP,aAAa;AACvC,UAAMM,QAAQ+O,OAAO/O;AAIrB,UAAMsQ,eAAevB,OAAOwB,aAAa,QAAA;AACzC,UAAMC,cAAczB,OAAOwB,aAAa,OAAA;AAGxCxB,WAAOU,WAAAA,IAAe;MACpBhxB,SAAS;QACP4c,QAAQiV;QACRhV,OAAOkV;QACPxQ,OAAO;UACL2E,SAAS3E,MAAM2E;UACftJ,QAAQ2E,MAAM3E;UACdC,OAAO0E,MAAM1E;QACf;MACF;IACF;AAKA0E,UAAM2E,UAAU3E,MAAM2E,WAAW;AAEjC3E,UAAMyQ,YAAYzQ,MAAMyQ,aAAa;AAErC,QAAIL,cAAcI,WAAc,GAAA;AAC9B,YAAME,eAAeC,aAAa5B,QAAQ,OAAA;AAC1C,UAAI2B,iBAAiB7yB,QAAW;AAC9BkxB,eAAOzT,QAAQoV;;;AAInB,QAAIN,cAAcE,YAAe,GAAA;AAC/B,UAAIvB,OAAO/O,MAAM3E,WAAW,IAAI;AAI9B0T,eAAO1T,SAAS0T,OAAOzT,SAASoE,eAAe;aAC1C;AACL,cAAMkR,gBAAgBD,aAAa5B,QAAQ,QAAA;AAC3C,YAAI6B,kBAAkB/yB,QAAW;AAC/BkxB,iBAAO1T,SAASuV;;;;AAKtB,WAAO7B;EACT;AAIA,MAAM8B,uBAAuBC,+BAA+B;IAACC,SAAS;EAAI,IAAI;AAE9E,WAASC,YAAYC,MAAM/yB,MAAMgxB,UAAU;AACzC,QAAI+B,MAAM;AACRA,WAAKhC,iBAAiB/wB,MAAMgxB,UAAU2B,oBAAAA;;EAE1C;AAEA,WAASK,eAAenzB,OAAOG,MAAMgxB,UAAU;AAC7C,QAAInxB,SAASA,MAAMgxB,QAAQ;AACzBhxB,YAAMgxB,OAAOI,oBAAoBjxB,MAAMgxB,UAAU2B,oBAAAA;;EAErD;AAEA,WAASM,gBAAgB5wB,QAAOxC,OAAO;AACrC,UAAMG,OAAOwxB,YAAYnvB,OAAMrC,IAAI,KAAKqC,OAAMrC;AAC9C,UAAM,EAAC8I,GAAAA,IAAGC,GAAAA,GAAAA,IAAK+iB,oBAAoBzpB,QAAOxC,KAAAA;AAC1C,WAAO;MACLG;MACAH;MACAqzB,QAAQ7wB;MACRyG,GAAGA,OAAMnJ,SAAYmJ,KAAI;MACzBC,GAAGA,OAAMpJ,SAAYoJ,KAAI;IAC3B;EACF;AAEA,WAASoqB,iBAAiBC,UAAUvC,QAAQ;AAC1C,eAAWkC,QAAQK,UAAU;AAC3B,UAAIL,SAASlC,UAAUkC,KAAKM,SAASxC,MAAS,GAAA;AAC5C,eAAO;;IAEX;EACF;AAEA,WAASyC,qBAAqBzzB,OAAOG,MAAMgxB,UAAU;AACnD,UAAMH,SAAShxB,MAAMgxB;AACrB,UAAM0C,WAAW,IAAIC,iBAAiBC,CAAAA,YAAW;AAC/C,UAAIC,UAAU;AACd,iBAAWzZ,SAASwZ,SAAS;AAC3BC,kBAAUA,WAAWP,iBAAiBlZ,MAAM0Z,YAAY9C,MAAAA;AACxD6C,kBAAUA,WAAW,CAACP,iBAAiBlZ,MAAM2Z,cAAc/C,MAAAA;MAC7D;AACA,UAAI6C,SAAS;AACX1C,iBAAAA;;IAEJ,CAAA;AACAuC,aAASM,QAAQC,UAAU;MAACC,WAAW;MAAMC,SAAS;IAAI,CAAA;AAC1D,WAAOT;EACT;AAEA,WAASU,qBAAqBp0B,OAAOG,MAAMgxB,UAAU;AACnD,UAAMH,SAAShxB,MAAMgxB;AACrB,UAAM0C,WAAW,IAAIC,iBAAiBC,CAAAA,YAAW;AAC/C,UAAIC,UAAU;AACd,iBAAWzZ,SAASwZ,SAAS;AAC3BC,kBAAUA,WAAWP,iBAAiBlZ,MAAM2Z,cAAc/C,MAAAA;AAC1D6C,kBAAUA,WAAW,CAACP,iBAAiBlZ,MAAM0Z,YAAY9C,MAAAA;MAC3D;AACA,UAAI6C,SAAS;AACX1C,iBAAAA;;IAEJ,CAAA;AACAuC,aAASM,QAAQC,UAAU;MAACC,WAAW;MAAMC,SAAS;IAAI,CAAA;AAC1D,WAAOT;EACT;AAEA,MAAMW,qBAAqB,oBAAI10B,IAAAA;AAC/B,MAAI20B,sBAAsB;AAE1B,WAASC,iBAAiB;AACxB,UAAMC,MAAMtzB,OAAOuzB;AACnB,QAAID,QAAQF,qBAAqB;AAC/B;;AAEFA,0BAAsBE;AACtBH,uBAAmB7zB,QAAQ,CAACk0B,QAAQ10B,UAAU;AAC5C,UAAIA,MAAM20B,4BAA4BH,KAAK;AACzCE,eAAAA;;IAEJ,CAAA;EACF;AAEA,WAASE,8BAA8B50B,OAAO00B,QAAQ;AACpD,QAAI,CAACL,mBAAmBlsB,MAAM;AAC5BjH,aAAOgwB,iBAAiB,UAAUqD,cAAAA;;AAEpCF,uBAAmB/xB,IAAItC,OAAO00B,MAAAA;EAChC;AAEA,WAASG,gCAAgC70B,OAAO;AAC9Cq0B,uBAAmBhxB,OAAOrD,KAAAA;AAC1B,QAAI,CAACq0B,mBAAmBlsB,MAAM;AAC5BjH,aAAOkwB,oBAAoB,UAAUmD,cAAAA;;EAEzC;AAEA,WAASO,qBAAqB90B,OAAOG,MAAMgxB,UAAU;AACnD,UAAMH,SAAShxB,MAAMgxB;AACrB,UAAM+D,YAAY/D,UAAUgE,eAAehE,MAAAA;AAC3C,QAAI,CAAC+D,WAAW;AACd;;AAEF,UAAML,SAASO,UAAU,CAAC1X,OAAOD,WAAW;AAC1C,YAAMwR,KAAIiG,UAAUG;AACpB/D,eAAS5T,OAAOD,MAAAA;AAChB,UAAIwR,KAAIiG,UAAUG,aAAa;AAQ7B/D,iBAAAA;;OAEDjwB,MAAAA;AAGH,UAAMwyB,WAAW,IAAIyB,eAAevB,CAAAA,YAAW;AAC7C,YAAMxZ,QAAQwZ,QAAQ,CAAE;AACxB,YAAMrW,QAAQnD,MAAMgb,YAAY7X;AAChC,YAAMD,SAASlD,MAAMgb,YAAY9X;AAIjC,UAAIC,UAAU,KAAKD,WAAW,GAAG;AAC/B;;AAEFoX,aAAOnX,OAAOD,MAAAA;IAChB,CAAA;AACAoW,aAASM,QAAQe,SAAAA;AACjBH,kCAA8B50B,OAAO00B,MAAAA;AAErC,WAAOhB;EACT;AAEA,WAAS2B,gBAAgBr1B,OAAOG,MAAMuzB,UAAU;AAC9C,QAAIA,UAAU;AACZA,eAAS4B,WAAU;;AAErB,QAAIn1B,SAAS,UAAU;AACrB00B,sCAAgC70B,KAAAA;;EAEpC;AAEA,WAASu1B,qBAAqBv1B,OAAOG,MAAMgxB,UAAU;AACnD,UAAMH,SAAShxB,MAAMgxB;AACrB,UAAMwE,QAAQP,UAAU,CAACzyB,WAAU;AAIjC,UAAIxC,MAAM8O,QAAQ,MAAM;AACtBqiB,iBAASiC,gBAAgB5wB,QAAOxC,KAAAA,CAAAA;;OAEjCA,KAAAA;AAEHizB,gBAAYjC,QAAQ7wB,MAAMq1B,KAAAA;AAE1B,WAAOA;EACT;AAMe,MAAMC,cAAN,cAA0B3E,aAAAA;IAOvCC,eAAeC,QAAQrP,aAAa;AAIlC,YAAMzM,UAAU8b,UAAUA,OAAOxe,cAAcwe,OAAOxe,WAAW,IAAA;AASjE,UAAI0C,WAAWA,QAAQ8b,WAAWA,QAAQ;AAGxCsB,mBAAWtB,QAAQrP,WAAAA;AACnB,eAAOzM;;AAGT,aAAO;IACT;IAKA+b,eAAe/b,SAAS;AACtB,YAAM8b,SAAS9b,QAAQ8b;AACvB,UAAI,CAACA,OAAOU,WAAAA,GAAc;AACxB,eAAO;;AAGT,YAAMhxB,UAAUswB,OAAOU,WAAAA,EAAahxB;AACpC;QAAC;QAAU;QAASF,QAAQ,CAAC+D,SAAS;AACpC,cAAM2D,QAAQxH,QAAQ6D,IAAK;AAC3B,YAAIoV,cAAczR,KAAQ,GAAA;AACxB8oB,iBAAO0E,gBAAgBnxB,IAAAA;eAClB;AACLysB,iBAAO2E,aAAapxB,MAAM2D,KAAAA;;MAE9B,CAAA;AAEA,YAAM+Z,QAAQvhB,QAAQuhB,SAAS,CAAA;AAC/Btb,aAAOC,KAAKqb,KAAAA,EAAOzhB,QAAQ,CAACyG,QAAQ;AAClC+pB,eAAO/O,MAAMhb,GAAAA,IAAOgb,MAAMhb,GAAI;MAChC,CAAA;AAOA+pB,aAAOzT,QAAQyT,OAAOzT;AAEtB,aAAOyT,OAAOU,WAAY;AAC1B,aAAO;IACT;IAQAR,iBAAiBlxB,OAAOG,MAAMgxB,UAAU;AAEtC,WAAKC,oBAAoBpxB,OAAOG,IAAAA;AAEhC,YAAMy1B,UAAU51B,MAAM61B,aAAa71B,MAAM61B,WAAW,CAAA;AACpD,YAAMC,WAAW;QACfC,QAAQtC;QACRuC,QAAQ5B;QACRM,QAAQI;MACV;AACA,YAAM9K,UAAU8L,SAAS31B,IAAAA,KAASo1B;AAClCK,cAAQz1B,IAAAA,IAAQ6pB,QAAQhqB,OAAOG,MAAMgxB,QAAAA;IACvC;IAOAC,oBAAoBpxB,OAAOG,MAAM;AAC/B,YAAMy1B,UAAU51B,MAAM61B,aAAa71B,MAAM61B,WAAW,CAAA;AACpD,YAAML,QAAQI,QAAQz1B,IAAK;AAE3B,UAAI,CAACq1B,OAAO;AACV;;AAGF,YAAMM,WAAW;QACfC,QAAQV;QACRW,QAAQX;QACRX,QAAQW;MACV;AACA,YAAMrL,UAAU8L,SAAS31B,IAAAA,KAASgzB;AAClCnJ,cAAQhqB,OAAOG,MAAMq1B,KAAAA;AACrBI,cAAQz1B,IAAAA,IAAQL;IAClB;IAEAuxB,sBAAsB;AACpB,aAAOnwB,OAAOuzB;IAChB;IAQAnD,eAAeN,QAAQzT,OAAOD,QAAQqE,aAAa;AACjD,aAAO2P,eAAeN,QAAQzT,OAAOD,QAAQqE,WAAAA;IAC/C;IAKA4P,WAAWP,QAAQ;AACjB,YAAM+D,YAAYC,eAAehE,MAAAA;AACjC,aAAO,CAAC,EAAE+D,aAAaA,UAAUkB;IACnC;EACF;AC/XO,WAASC,gBAAgBlF,QAAQ;AACtC,QAAI,CAACmF,gBAAsB,KAAA,OAAOC,oBAAoB,eAAepF,kBAAkBoF,iBAAkB;AACvG,aAAO3E;;AAET,WAAOgE;EACT;ACLe,MAAMY,WAAN,MAAMA;IAEnB,OAAOxvB,WAAW,CAAA;IAClB,OAAOyvB,gBAAgBx2B;IAEvBmJ;IACAC;IACAzD,SAAS;IACT+B;IACAM;IAEAyuB,gBAAgB1L,kBAAkC;AAChD,YAAM,EAAC5hB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAKkiB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAAO;QAAC5hB,GAAAA;QAAGC,GAAAA;MAAC;IACd;IAEAstB,WAAW;AACT,aAAOvQ,SAAS,KAAKhd,CAAC,KAAKgd,SAAS,KAAK/c,CAAC;IAC5C;IASAkiB,SAASpjB,OAAiByuB,OAAmD;AAC3E,YAAMx2B,QAAQ,KAAK6H;AACnB,UAAI,CAAC2uB,SAAS,CAACx2B,OAAO;AAEpB,eAAO;;AAET,YAAMy2B,MAA+B,CAAA;AACrC1uB,YAAMxH,QAAQ,CAAC+D,SAAS;AACtBmyB,YAAInyB,IAAAA,IAAQtE,MAAMsE,IAAK,KAAItE,MAAMsE,IAAAA,EAAMkB,OAAM,IAAKxF,MAAMsE,IAAAA,EAAMgB,MAAM,KAAKhB,IAAe;MAC1F,CAAA;AACA,aAAOmyB;IACT;EACF;AC5BO,WAASC,SAASluB,OAAO0Q,OAAO;AACrC,UAAMyd,WAAWnuB,MAAMjB,QAAQ2R;AAC/B,UAAM0d,qBAAqBC,kBAAkBruB,KAAAA;AAC7C,UAAMsuB,aAAan2B,KAAKC,IAAI+1B,SAASI,iBAAiBH,oBAAoBA,kBAAAA;AAC1E,UAAMI,eAAeL,SAASM,MAAMC,UAAUC,gBAAgBje,KAAAA,IAAS,CAAA;AACvE,UAAMke,kBAAkBJ,aAAax1B;AACrC,UAAM61B,QAAQL,aAAa,CAAE;AAC7B,UAAMxZ,OAAOwZ,aAAaI,kBAAkB,CAAE;AAC9C,UAAME,WAAW,CAAA;AAGjB,QAAIF,kBAAkBN,YAAY;AAChCS,iBAAWre,OAAOoe,UAAUN,cAAcI,kBAAkBN,UAAAA;AAC5D,aAAOQ;;AAGT,UAAMjW,UAAUmW,iBAAiBR,cAAc9d,OAAO4d,UAAAA;AAEtD,QAAIM,kBAAkB,GAAG;AACvB,UAAI31B,IAAGuI;AACP,YAAMytB,kBAAkBL,kBAAkB,IAAIz2B,KAAK+2B,OAAOla,OAAO6Z,UAAUD,kBAAkB,EAAA,IAAM;AACnG9X,WAAKpG,OAAOoe,UAAUjW,SAAS3H,cAAc+d,eAAAA,IAAmB,IAAIJ,QAAQI,iBAAiBJ,KAAAA;AAC7F,WAAK51B,KAAI,GAAGuI,OAAOotB,kBAAkB,GAAG31B,KAAIuI,MAAMvI,MAAK;AACrD6d,aAAKpG,OAAOoe,UAAUjW,SAAS2V,aAAav1B,EAAAA,GAAIu1B,aAAav1B,KAAI,CAAE,CAAA;MACrE;AACA6d,WAAKpG,OAAOoe,UAAUjW,SAAS7D,MAAM9D,cAAc+d,eAAAA,IAAmBve,MAAM1X,SAASgc,OAAOia,eAAe;AAC3G,aAAOH;;AAEThY,SAAKpG,OAAOoe,UAAUjW,OAAAA;AACtB,WAAOiW;EACT;AAEA,WAAST,kBAAkBruB,OAAO;AAChC,UAAM6T,SAAS7T,MAAMjB,QAAQ8U;AAC7B,UAAMsb,aAAanvB,MAAMovB,UAAS;AAClC,UAAMC,WAAWrvB,MAAMqQ,UAAU8e,cAActb,SAAS,IAAI;AAC5D,UAAMyb,WAAWtvB,MAAMuvB,aAAaJ;AACpC,WAAOh3B,KAAKoE,MAAMpE,KAAKC,IAAIi3B,UAAUC,QAAAA,CAAAA;EACvC;AAOA,WAASN,iBAAiBR,cAAc9d,OAAO4d,YAAY;AACzD,UAAMkB,mBAAmBC,eAAejB,YAAAA;AACxC,UAAM3V,UAAUnI,MAAM1X,SAASs1B;AAI/B,QAAI,CAACkB,kBAAkB;AACrB,aAAOr3B,KAAKoC,IAAIse,SAAS,CAAA;;AAG3B,UAAM6W,UAAUC,WAAWH,gBAAAA;AAC3B,aAASv2B,KAAI,GAAGuI,OAAOkuB,QAAQ12B,SAAS,GAAGC,KAAIuI,MAAMvI,MAAK;AACxD,YAAMiC,SAASw0B,QAAQz2B,EAAE;AACzB,UAAIiC,SAAS2d,SAAS;AACpB,eAAO3d;;IAEX;AACA,WAAO/C,KAAKoC,IAAIse,SAAS,CAAA;EAC3B;AAKA,WAAS8V,gBAAgBje,OAAO;AAC9B,UAAMkf,SAAS,CAAA;AACf,QAAI32B,IAAGuI;AACP,SAAKvI,KAAI,GAAGuI,OAAOkP,MAAM1X,QAAQC,KAAIuI,MAAMvI,MAAK;AAC9C,UAAIyX,MAAMzX,EAAE,EAACw1B,OAAO;AAClBmB,eAAO31B,KAAKhB,EAAAA;;IAEhB;AACA,WAAO22B;EACT;AAQA,WAASb,WAAWre,OAAOoe,UAAUN,cAAc3V,SAAS;AAC1D,QAAI3O,QAAQ;AACZ,QAAIsH,OAAOgd,aAAa,CAAE;AAC1B,QAAIv1B;AAEJ4f,cAAU1gB,KAAK03B,KAAKhX,OAAAA;AACpB,SAAK5f,KAAI,GAAGA,KAAIyX,MAAM1X,QAAQC,MAAK;AACjC,UAAIA,OAAMuY,MAAM;AACdsd,iBAAS70B,KAAKyW,MAAMzX,EAAE,CAAA;AACtBiR;AACAsH,eAAOgd,aAAatkB,QAAQ2O,OAAQ;;IAExC;EACF;AASA,WAAS/B,KAAKpG,OAAOoe,UAAUjW,SAASiX,YAAYC,UAAU;AAC5D,UAAM13B,SAAQ0P,eAAe+nB,YAAY,CAAA;AACzC,UAAM1vB,MAAMjI,KAAKC,IAAI2P,eAAegoB,UAAUrf,MAAM1X,MAAM,GAAG0X,MAAM1X,MAAM;AACzE,QAAIkR,QAAQ;AACZ,QAAIlR,QAAQC,IAAGuY;AAEfqH,cAAU1gB,KAAK03B,KAAKhX,OAAAA;AACpB,QAAIkX,UAAU;AACZ/2B,eAAS+2B,WAAWD;AACpBjX,gBAAU7f,SAASb,KAAKoE,MAAMvD,SAAS6f,OAAAA;;AAGzCrH,WAAOnZ;AAEP,WAAOmZ,OAAO,GAAG;AACftH;AACAsH,aAAOrZ,KAAK+2B,MAAM72B,SAAQ6R,QAAQ2O,OAAAA;IACpC;AAEA,SAAK5f,KAAId,KAAKoC,IAAIlC,QAAO,CAAIY,GAAAA,KAAImH,KAAKnH,MAAK;AACzC,UAAIA,OAAMuY,MAAM;AACdsd,iBAAS70B,KAAKyW,MAAMzX,EAAE,CAAA;AACtBiR;AACAsH,eAAOrZ,KAAK+2B,MAAM72B,SAAQ6R,QAAQ2O,OAAAA;;IAEtC;EACF;AAMA,WAAS4W,eAAe3gB,KAAK;AAC3B,UAAMkhB,MAAMlhB,IAAI9V;AAChB,QAAIC,IAAGqnB;AAEP,QAAI0P,MAAM,GAAG;AACX,aAAO;;AAGT,SAAK1P,OAAOxR,IAAI,CAAE,GAAE7V,KAAI,GAAGA,KAAI+2B,KAAK,EAAE/2B,IAAG;AACvC,UAAI6V,IAAI7V,EAAE,IAAG6V,IAAI7V,KAAI,CAAE,MAAKqnB,MAAM;AAChC,eAAO;;IAEX;AACA,WAAOA;EACT;ACjKA,MAAM2P,eAAe,CAACC,UAAUA,UAAU,SAAS,UAAUA,UAAU,UAAU,SAASA;AAC1F,MAAMC,iBAAiB,CAACnwB,OAAO4S,MAAMiB,WAAWjB,SAAS,SAASA,SAAS,SAAS5S,MAAM4S,IAAAA,IAAQiB,SAAS7T,MAAM4S,IAAAA,IAAQiB;AACzH,MAAMuc,gBAAgB,CAACC,aAAa9B,kBAAkBp2B,KAAKC,IAAIm2B,iBAAiB8B,aAAaA,WAAAA;AAY7F,WAASC,OAAOxhB,KAAKyhB,UAAU;AAC7B,UAAMX,SAAS,CAAA;AACf,UAAMY,YAAY1hB,IAAI9V,SAASu3B;AAC/B,UAAMP,MAAMlhB,IAAI9V;AAChB,QAAIC,KAAI;AAER,WAAOA,KAAI+2B,KAAK/2B,MAAKu3B,WAAW;AAC9BZ,aAAO31B,KAAK6U,IAAI3W,KAAKoE,MAAMtD,EAAG,CAAA,CAAA;IAChC;AACA,WAAO22B;EACT;AAOA,WAASa,oBAAoBzwB,OAAOyB,QAAOivB,iBAAiB;AAC1D,UAAM13B,SAASgH,MAAM0Q,MAAM1X;AAC3B,UAAM23B,cAAax4B,KAAKC,IAAIqJ,QAAOzI,SAAS,CAAA;AAC5C,UAAMX,SAAQ2H,MAAMwV;AACpB,UAAMpV,MAAMJ,MAAMyV;AAClB,UAAMmb,UAAU;AAChB,QAAIC,YAAY7wB,MAAM2Q,gBAAgBggB,WAAAA;AACtC,QAAI9c;AAEJ,QAAI6c,iBAAiB;AACnB,UAAI13B,WAAW,GAAG;AAChB6a,iBAAS1b,KAAKoC,IAAIs2B,YAAYx4B,QAAO+H,MAAMywB,SAAAA;iBAClCpvB,WAAU,GAAG;AACtBoS,kBAAU7T,MAAM2Q,gBAAgB,CAAA,IAAKkgB,aAAa;aAC7C;AACLhd,kBAAUgd,YAAY7wB,MAAM2Q,gBAAgBggB,cAAa,CAAA,KAAM;;AAEjEE,mBAAaF,cAAalvB,SAAQoS,SAAS,CAACA;AAG5C,UAAIgd,YAAYx4B,SAAQu4B,WAAWC,YAAYzwB,MAAMwwB,SAAS;AAC5D;;;AAGJ,WAAOC;EACT;AAMA,WAASC,eAAeC,QAAQ/3B,QAAQ;AACtCkvB,SAAK6I,QAAQ,CAACnkB,WAAU;AACtB,YAAMokB,KAAKpkB,OAAMokB;AACjB,YAAMC,QAAQD,GAAGh4B,SAAS;AAC1B,UAAIC;AACJ,UAAIg4B,QAAQj4B,QAAQ;AAClB,aAAKC,KAAI,GAAGA,KAAIg4B,OAAO,EAAEh4B,IAAG;AAC1B,iBAAO2T,OAAMxK,KAAK4uB,GAAG/3B,EAAAA,CAAE;QACzB;AACA+3B,WAAG/hB,OAAO,GAAGgiB,KAAAA;;IAEjB,CAAA;EACF;AAKA,WAASC,kBAAkBnyB,SAAS;AAClC,WAAOA,QAAQoyB,YAAYpyB,QAAQowB,aAAa;EAClD;AAKA,WAASiC,eAAeryB,SAASsyB,UAAU;AACzC,QAAI,CAACtyB,QAAQof,SAAS;AACpB,aAAO;;AAGT,UAAMmT,OAAOC,OAAOxyB,QAAQuyB,MAAMD,QAAAA;AAClC,UAAM7J,UAAUO,UAAUhpB,QAAQyoB,OAAO;AACzC,UAAMgK,QAAQ9yB,QAAQK,QAAQ0a,IAAI,IAAI1a,QAAQ0a,KAAKzgB,SAAS;AAE5D,WAAO,QAASs4B,KAAKG,aAAcjK,QAAQ3S;EAC7C;AAEA,WAAS6c,mBAAmB1sB,QAAQhF,OAAO;AACzC,WAAOiF,cAAcD,QAAQ;MAC3BhF;MACAtI,MAAM;IACR,CAAA;EACF;AAEA,WAASi6B,kBAAkB3sB,QAAQvD,QAAOnI,MAAM;AAC9C,WAAO2L,cAAcD,QAAQ;MAC3B1L;MACAmI,OAAAA;MACA/J,MAAM;IACR,CAAA;EACF;AAEA,WAASk6B,WAAW1B,OAAO5O,UAAUnhB,SAAS;AAE5C,QAAI8tB,MAAM4D,mBAAmB3B,KAAAA;AAC7B,QAAI,WAAY5O,aAAa,WAAa,CAACnhB,WAAWmhB,aAAa,SAAU;AAC3E2M,YAAMgC,aAAahC,GAAAA;;AAErB,WAAOA;EACT;AAEA,WAAS6D,UAAU9xB,OAAO6T,QAAQyN,UAAU4O,OAAO;AACjD,UAAM,EAACxvB,KAAKG,MAAMD,QAAQD,OAAOpJ,MAAK,IAAIyI;AAC1C,UAAM,EAACoM,WAAWxH,QAAAA,QAAAA,IAAUrN;AAC5B,QAAIyf,WAAW;AACf,QAAIoE,UAAU2W,QAAQC;AACtB,UAAMnd,SAASjU,SAASF;AACxB,UAAMoU,QAAQnU,QAAQE;AAEtB,QAAIb,MAAMuS,aAAY,GAAI;AACxBwf,eAASE,eAAe/B,OAAOrvB,MAAMF,KAAAA;AAErC,UAAI3C,SAASsjB,QAAW,GAAA;AACtB,cAAM4Q,iBAAiBh0B,OAAOC,KAAKmjB,QAAAA,EAAU,CAAE;AAC/C,cAAM7hB,QAAQ6hB,SAAS4Q,cAAe;AACtCF,iBAASptB,QAAOstB,cAAAA,EAAgBzhB,iBAAiBhR,KAAAA,IAASoV,SAAShB;iBAC1DyN,aAAa,UAAU;AAChC0Q,kBAAU5lB,UAAUxL,SAASwL,UAAU1L,OAAO,IAAImU,SAAShB;aACtD;AACLme,iBAAS7B,eAAenwB,OAAOshB,UAAUzN,MAAAA;;AAE3CuH,iBAAWza,QAAQE;WACd;AACL,UAAI7C,SAASsjB,QAAW,GAAA;AACtB,cAAM4Q,iBAAiBh0B,OAAOC,KAAKmjB,QAAAA,EAAU,CAAE;AAC/C,cAAM7hB,QAAQ6hB,SAAS4Q,cAAe;AACtCH,iBAASntB,QAAOstB,cAAAA,EAAgBzhB,iBAAiBhR,KAAAA,IAASqV,QAAQjB;iBACzDyN,aAAa,UAAU;AAChCyQ,kBAAU3lB,UAAUvL,OAAOuL,UAAUzL,SAAS,IAAImU,QAAQjB;aACrD;AACLke,iBAAS5B,eAAenwB,OAAOshB,UAAUzN,MAAAA;;AAE3Cme,eAASC,eAAe/B,OAAOtvB,QAAQF,GAAAA;AACvCsW,iBAAWsK,aAAa,SAAS,CAAChJ,UAAUA;;AAE9C,WAAO;MAACyZ;MAAQC;MAAQ5W;MAAUpE;IAAQ;EAC5C;AAEe,MAAMmb,QAAN,MAAMA,eAAcvE,SAAAA;IAGjC72B,YAAY6E,KAAK;AACf,YAAK;AAGL,WAAKiH,KAAKjH,IAAIiH;AAEd,WAAKnL,OAAOkE,IAAIlE;AAEhB,WAAKqH,UAAU1H;AAEf,WAAKgP,MAAMzK,IAAIyK;AAEf,WAAK9O,QAAQqE,IAAIrE;AAIjB,WAAKmJ,MAAMrJ;AAEX,WAAKuJ,SAASvJ;AAEd,WAAKwJ,OAAOxJ;AAEZ,WAAKsJ,QAAQtJ;AAEb,WAAKyd,QAAQzd;AAEb,WAAKwd,SAASxd;AACd,WAAK+6B,WAAW;QACdvxB,MAAM;QACNF,OAAO;QACPD,KAAK;QACLE,QAAQ;MACV;AAEA,WAAKwa,WAAW/jB;AAEhB,WAAKgkB,YAAYhkB;AAEjB,WAAKg7B,aAAah7B;AAElB,WAAKi7B,gBAAgBj7B;AAErB,WAAKk7B,cAAcl7B;AAEnB,WAAKm7B,eAAen7B;AAIpB,WAAK+M,OAAO/M;AAEZ,WAAKo7B,gBAAgBp7B;AACrB,WAAKe,MAAMf;AACX,WAAKkD,MAAMlD;AACX,WAAKq7B,SAASr7B;AAEd,WAAKqZ,QAAQ,CAAA;AAEb,WAAKiiB,iBAAiB;AAEtB,WAAKC,cAAc;AAEnB,WAAKC,cAAc;AACnB,WAAKxiB,UAAU;AACf,WAAKkf,aAAa;AAClB,WAAKuD,oBAAoB,CAAA;AAEzB,WAAKtd,cAAcne;AAEnB,WAAKoe,YAAYpe;AACjB,WAAKypB,iBAAiB;AACtB,WAAKiS,WAAW17B;AAChB,WAAK27B,WAAW37B;AAChB,WAAK47B,gBAAgB57B;AACrB,WAAK67B,gBAAgB77B;AACrB,WAAK87B,eAAe;AACpB,WAAKC,eAAe;AACpB,WAAKvjB,SAAS,CAAA;AACd,WAAKwjB,oBAAoB;AACzB,WAAKpsB,WAAW5P;IAClB;IAMA8oB,KAAKphB,SAAS;AACZ,WAAKA,UAAUA,QAAQu0B,WAAW,KAAKvpB,WAAU,CAAA;AAEjD,WAAK3F,OAAOrF,QAAQqF;AAGpB,WAAK4uB,WAAW,KAAK/oB,MAAMlL,QAAQ3G,GAAG;AACtC,WAAK26B,WAAW,KAAK9oB,MAAMlL,QAAQxE,GAAG;AACtC,WAAK24B,gBAAgB,KAAKjpB,MAAMlL,QAAQw0B,YAAY;AACpD,WAAKN,gBAAgB,KAAKhpB,MAAMlL,QAAQy0B,YAAY;IACtD;IAQAvpB,MAAM3E,KAAK7D,QAAO;AAChB,aAAO6D;IACT;IAOAxC,gBAAgB;AACd,UAAI,EAACkwB,UAAUD,UAAUG,eAAeD,cAAAA,IAAiB;AACzDD,iBAAWS,gBAAgBT,UAAU/vB,OAAOE,iBAAiB;AAC7D4vB,iBAAWU,gBAAgBV,UAAU9vB,OAAOC,iBAAiB;AAC7DgwB,sBAAgBO,gBAAgBP,eAAejwB,OAAOE,iBAAiB;AACvE8vB,sBAAgBQ,gBAAgBR,eAAehwB,OAAOC,iBAAiB;AACvE,aAAO;QACL9K,KAAKq7B,gBAAgBT,UAAUE,aAAAA;QAC/B34B,KAAKk5B,gBAAgBV,UAAUE,aAAAA;QAC/BlwB,YAAYd,eAAS+wB,QAAAA;QACrBhwB,YAAYf,eAAS8wB,QAAAA;MACvB;IACF;IAQAznB,UAAUxF,UAAU;AAElB,UAAI,EAAC1N,KAAKmC,KAAKwI,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AAC3D,UAAIqI;AAEJ,UAAIpI,cAAcC,YAAY;AAC5B,eAAO;UAAC5K;UAAKmC;QAAG;;AAGlB,YAAMm5B,QAAQ,KAAK9vB,wBAAuB;AAC1C,eAAS3K,KAAI,GAAGuI,OAAOkyB,MAAM16B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAClDkS,gBAAQuoB,MAAMz6B,EAAE,EAAC6K,WAAWwH,UAAU,MAAMxF,QAAAA;AAC5C,YAAI,CAAC/C,YAAY;AACf3K,gBAAMD,KAAKC,IAAIA,KAAK+S,MAAM/S,GAAG;;AAE/B,YAAI,CAAC4K,YAAY;AACfzI,gBAAMpC,KAAKoC,IAAIA,KAAK4Q,MAAM5Q,GAAG;;MAEjC;AAGAnC,YAAM4K,cAAc5K,MAAMmC,MAAMA,MAAMnC;AACtCmC,YAAMwI,cAAc3K,MAAMmC,MAAMnC,MAAMmC;AAEtC,aAAO;QACLnC,KAAKq7B,gBAAgBr7B,KAAKq7B,gBAAgBl5B,KAAKnC,GAAAA,CAAAA;QAC/CmC,KAAKk5B,gBAAgBl5B,KAAKk5B,gBAAgBr7B,KAAKmC,GAAAA,CAAAA;MACjD;IACF;IAOAwrB,aAAa;AACX,aAAO;QACLllB,MAAM,KAAK0xB,eAAe;QAC1B7xB,KAAK,KAAK2xB,cAAc;QACxB1xB,OAAO,KAAK6xB,gBAAgB;QAC5B5xB,QAAQ,KAAK0xB,iBAAiB;MAChC;IACF;IAOAqB,WAAW;AACT,aAAO,KAAKjjB;IACd;IAKA/F,YAAY;AACV,YAAMvI,OAAO,KAAK7K,MAAM6K;AACxB,aAAO,KAAKrD,QAAQ2L,WAAW,KAAK6H,aAAY,IAAKnQ,KAAKwxB,UAAUxxB,KAAKyxB,YAAYzxB,KAAKsI,UAAU,CAAA;IACtG;IAKAopB,cAAc1nB,YAAY,KAAK7U,MAAM6U,WAAW;AAC9C,YAAMrT,QAAQ,KAAK65B,gBAAgB,KAAKA,cAAc,KAAKmB,mBAAmB3nB,SAAS;AACvF,aAAOrT;IACT;IAGAovB,eAAe;AACb,WAAKtY,SAAS,CAAA;AACd,WAAKwjB,oBAAoB;IAC3B;IAMAW,eAAe;AACbx7B,eAAK,KAAKuG,QAAQi1B,cAAc;QAAC;MAAK,CAAA;IACxC;IAUA/2B,OAAOme,UAAUC,WAAW4Y,SAAS;AACnC,YAAM,EAACjgB,aAAakgB,OAAOxjB,OAAOyd,SAAAA,IAAY,KAAKpvB;AACnD,YAAMo1B,aAAahG,SAASgG;AAG5B,WAAKH,aAAY;AAGjB,WAAK5Y,WAAWA;AAChB,WAAKC,YAAYA;AACjB,WAAK+W,WAAW6B,UAAU/1B,OAAOyB,OAAO;QACtCkB,MAAM;QACNF,OAAO;QACPD,KAAK;QACLE,QAAQ;SACPqzB,OAAAA;AAEH,WAAKvjB,QAAQ;AACb,WAAKmiB,cAAc;AACnB,WAAKF,iBAAiB;AACtB,WAAKC,cAAc;AAGnB,WAAKwB,oBAAmB;AACxB,WAAKC,cAAa;AAClB,WAAKC,mBAAkB;AAEvB,WAAK/E,aAAa,KAAKhd,aAAY,IAC/B,KAAKuC,QAAQmf,QAAQpzB,OAAOozB,QAAQtzB,QACpC,KAAKkU,SAASof,QAAQvzB,MAAMuzB,QAAQrzB;AAGxC,UAAI,CAAC,KAAKyyB,mBAAmB;AAC3B,aAAKkB,iBAAgB;AACrB,aAAKC,oBAAmB;AACxB,aAAKC,gBAAe;AACpB,aAAK/B,SAASgC,UAAU,MAAMR,OAAOlgB,WAAAA;AACrC,aAAKqf,oBAAoB;;AAG3B,WAAKsB,iBAAgB;AAErB,WAAKjkB,QAAQ,KAAKkkB,WAAU,KAAM,CAAA;AAGlC,WAAKC,gBAAe;AAIpB,YAAMC,kBAAkBX,aAAa,KAAKzjB,MAAM1X;AAChD,WAAK+7B,sBAAsBD,kBAAkBxE,OAAO,KAAK5f,OAAOyjB,UAAAA,IAAc,KAAKzjB,KAAK;AAMxF,WAAK3S,UAAS;AAGd,WAAKi3B,6BAA4B;AACjC,WAAKC,uBAAsB;AAC3B,WAAKC,4BAA2B;AAGhC,UAAI/G,SAAShQ,YAAYgQ,SAASD,YAAYC,SAASgH,WAAW,SAAS;AACzE,aAAKzkB,QAAQwd,SAAS,MAAM,KAAKxd,KAAK;AACtC,aAAKmiB,cAAc;AACnB,aAAKuC,cAAa;;AAGpB,UAAIN,iBAAiB;AAEnB,aAAKC,sBAAsB,KAAKrkB,KAAK;;AAGvC,WAAK2kB,UAAS;AACd,WAAKC,IAAG;AACR,WAAKC,SAAQ;AAIb,WAAKC,YAAW;IAClB;IAKAz3B,YAAY;AACV,UAAI03B,gBAAgB,KAAK12B,QAAQoB;AACjC,UAAI2V,YAAYE;AAEhB,UAAI,KAAKzD,aAAY,GAAI;AACvBuD,qBAAa,KAAKjV;AAClBmV,mBAAW,KAAKrV;aACX;AACLmV,qBAAa,KAAKpV;AAClBsV,mBAAW,KAAKpV;AAEhB60B,wBAAgB,CAACA;;AAEnB,WAAKjgB,cAAcM;AACnB,WAAKL,YAAYO;AACjB,WAAK8K,iBAAiB2U;AACtB,WAAKplB,UAAU2F,WAAWF;AAC1B,WAAK4f,iBAAiB,KAAK32B,QAAQ42B;IACrC;IAEAH,cAAc;AACZh9B,eAAK,KAAKuG,QAAQy2B,aAAa;QAAC;MAAK,CAAA;IACvC;IAIApB,sBAAsB;AACpB57B,eAAK,KAAKuG,QAAQq1B,qBAAqB;QAAC;MAAK,CAAA;IAC/C;IACAC,gBAAgB;AAEd,UAAI,KAAK9hB,aAAY,GAAI;AAEvB,aAAKuC,QAAQ,KAAKsG;AAClB,aAAKva,OAAO;AACZ,aAAKF,QAAQ,KAAKmU;aACb;AACL,aAAKD,SAAS,KAAKwG;AAGnB,aAAK3a,MAAM;AACX,aAAKE,SAAS,KAAKiU;;AAIrB,WAAK0d,cAAc;AACnB,WAAKF,aAAa;AAClB,WAAKG,eAAe;AACpB,WAAKF,gBAAgB;IACvB;IACAgC,qBAAqB;AACnB97B,eAAK,KAAKuG,QAAQu1B,oBAAoB;QAAC;MAAK,CAAA;IAC9C;IAEAsB,WAAWrgB,MAAM;AACf,WAAKhe,MAAMs+B,cAActgB,MAAM,KAAKxL,WAAU,CAAA;AAC9CvR,eAAK,KAAKuG,QAAQwW,IAAAA,GAAO;QAAC;MAAK,CAAA;IACjC;IAGAgf,mBAAmB;AACjB,WAAKqB,WAAW,kBAAA;IAClB;IACApB,sBAAsB;IAAA;IACtBC,kBAAkB;AAChB,WAAKmB,WAAW,iBAAA;IAClB;IAGAjB,mBAAmB;AACjB,WAAKiB,WAAW,kBAAA;IAClB;IAIAhB,aAAa;AACX,aAAO,CAAA;IACT;IACAC,kBAAkB;AAChB,WAAKe,WAAW,iBAAA;IAClB;IAEAE,8BAA8B;AAC5Bt9B,eAAK,KAAKuG,QAAQ+2B,6BAA6B;QAAC;MAAK,CAAA;IACvD;IAKAC,mBAAmBrlB,OAAO;AACxB,YAAMyd,WAAW,KAAKpvB,QAAQ2R;AAC9B,UAAIzX,IAAGuI,MAAMlI;AACb,WAAKL,KAAI,GAAGuI,OAAOkP,MAAM1X,QAAQC,KAAIuI,MAAMvI,MAAK;AAC9CK,eAAOoX,MAAMzX,EAAE;AACfK,aAAKwS,QAAQtT,SAAK21B,SAAS6H,UAAU;UAAC18B,KAAKmG;UAAOxG;UAAGyX;QAAM,GAAE,IAAI;MACnE;IACF;IACAulB,6BAA6B;AAC3Bz9B,eAAK,KAAKuG,QAAQk3B,4BAA4B;QAAC;MAAK,CAAA;IACtD;IAIAjB,+BAA+B;AAC7Bx8B,eAAK,KAAKuG,QAAQi2B,8BAA8B;QAAC;MAAK,CAAA;IACxD;IACAC,yBAAyB;AACvB,YAAMl2B,UAAU,KAAKA;AACrB,YAAMovB,WAAWpvB,QAAQ2R;AACzB,YAAMwlB,WAAW9F,cAAc,KAAK1f,MAAM1X,QAAQ+F,QAAQ2R,MAAM6d,aAAa;AAC7E,YAAM4H,cAAchI,SAASgI,eAAe;AAC5C,YAAMC,cAAcjI,SAASiI;AAC7B,UAAI3D,gBAAgB0D;AACpB,UAAIE,WAAWhb,WAAWib;AAE1B,UAAI,CAAC,KAAKC,WAAU,KAAM,CAACpI,SAAShQ,WAAWgY,eAAeC,eAAeF,YAAY,KAAK,CAAC,KAAK3jB,aAAY,GAAI;AAClH,aAAKkgB,gBAAgB0D;AACrB;;AAGF,YAAMK,aAAa,KAAKC,eAAc;AACtC,YAAMC,gBAAgBF,WAAWG,OAAO7hB;AACxC,YAAM8hB,iBAAiBJ,WAAWK,QAAQhiB;AAI1C,YAAMuG,WAAW0b,YAAY,KAAKv/B,MAAMud,QAAQ4hB,eAAe,GAAG,KAAKtb,QAAQ;AAC/Eib,kBAAYt3B,QAAQ8U,SAAS,KAAKuH,WAAW8a,WAAW9a,YAAY8a,WAAW;AAG/E,UAAIQ,gBAAgB,IAAIL,WAAW;AACjCA,oBAAYjb,YAAY8a,YAAYn3B,QAAQ8U,SAAS,MAAM;AAC3DwH,oBAAY,KAAKA,YAAY6V,kBAAkBnyB,QAAQ+U,IAAI,IAC3Dqa,SAAS3G,UAAU4J,eAAeryB,QAAQg4B,OAAO,KAAKx/B,MAAMwH,QAAQuyB,IAAI;AACxEgF,2BAAmBn+B,KAAK8pB,KAAKyU,gBAAgBA,gBAAgBE,iBAAiBA,cAAAA;AAC9EnE,wBAAgBuE,UAAU7+B,KAAKC,IAC7BD,KAAK8+B,KAAKH,aAAaN,WAAWK,QAAQhiB,SAAS,KAAKwhB,WAAW,IAAI,CAAA,CAAA,GACvEl+B,KAAK8+B,KAAKH,YAAYzb,YAAYib,kBAAkB,IAAI,CAAA,CAAA,IAAMn+B,KAAK8+B,KAAKH,YAAYF,iBAAiBN,kBAAkB,IAAI,CAAA,CAAA,CAAA,CAAA;AAE7H7D,wBAAgBt6B,KAAKoC,IAAI47B,aAAah+B,KAAKC,IAAIg+B,aAAa3D,aAAAA,CAAAA;;AAG9D,WAAKA,gBAAgBA;IACvB;IACAyC,8BAA8B;AAC5B18B,eAAK,KAAKuG,QAAQm2B,6BAA6B;QAAC;MAAK,CAAA;IACvD;IACAE,gBAAgB;IAAA;IAIhBC,YAAY;AACV78B,eAAK,KAAKuG,QAAQs2B,WAAW;QAAC;MAAK,CAAA;IACrC;IACAC,MAAM;AAEJ,YAAM7W,UAAU;QACd3J,OAAO;QACPD,QAAQ;MACV;AAEA,YAAM,EAACtd,OAAOwH,SAAS,EAAC2R,OAAOyd,UAAU4I,OAAOG,WAAWpjB,MAAMqjB,SAAAA,EAAS,IAAI;AAC9E,YAAMhZ,UAAU,KAAKoY,WAAU;AAC/B,YAAMhkB,eAAe,KAAKA,aAAY;AAEtC,UAAI4L,SAAS;AACX,cAAMiZ,cAAchG,eAAe8F,WAAW3/B,MAAMwH,QAAQuyB,IAAI;AAChE,YAAI/e,cAAc;AAChBkM,kBAAQ3J,QAAQ,KAAKsG;AACrBqD,kBAAQ5J,SAASqc,kBAAkBiG,QAAYC,IAAAA;eAC1C;AACL3Y,kBAAQ5J,SAAS,KAAKwG;AACtBoD,kBAAQ3J,QAAQoc,kBAAkBiG,QAAYC,IAAAA;;AAIhD,YAAIjJ,SAAShQ,WAAW,KAAKzN,MAAM1X,QAAQ;AACzC,gBAAM,EAAC61B,OAAO7Z,MAAM2hB,QAAQE,QAAAA,IAAW,KAAKJ,eAAc;AAC1D,gBAAMY,cAAclJ,SAAS3G,UAAU;AACvC,gBAAM8P,eAAe7c,UAAU,KAAKgY,aAAa;AACjD,gBAAM9a,MAAMxf,KAAKwf,IAAI2f,YAAAA;AACrB,gBAAMzf,MAAM1f,KAAK0f,IAAIyf,YAAAA;AAErB,cAAI/kB,cAAc;AAEhB,kBAAMglB,cAAcpJ,SAASqJ,SAAS,IAAI3f,MAAM8e,OAAO7hB,QAAQ6C,MAAMkf,QAAQhiB;AAC7E4J,oBAAQ5J,SAAS1c,KAAKC,IAAI,KAAKijB,WAAWoD,QAAQ5J,SAAS0iB,cAAcF,WAAAA;iBACpE;AAGL,kBAAMI,aAAatJ,SAASqJ,SAAS,IAAI7f,MAAMgf,OAAO7hB,QAAQ+C,MAAMgf,QAAQhiB;AAE5E4J,oBAAQ3J,QAAQ3c,KAAKC,IAAI,KAAKgjB,UAAUqD,QAAQ3J,QAAQ2iB,aAAaJ,WAAAA;;AAEvE,eAAKK,kBAAkB7I,OAAO7Z,MAAM6C,KAAKF,GAAAA;;;AAI7C,WAAKggB,eAAc;AAEnB,UAAIplB,cAAc;AAChB,aAAKuC,QAAQ,KAAKzE,UAAU9Y,MAAMud,QAAQ,KAAKsd,SAASvxB,OAAO,KAAKuxB,SAASzxB;AAC7E,aAAKkU,SAAS4J,QAAQ5J;aACjB;AACL,aAAKC,QAAQ2J,QAAQ3J;AACrB,aAAKD,SAAS,KAAKxE,UAAU9Y,MAAMsd,SAAS,KAAKud,SAAS1xB,MAAM,KAAK0xB,SAASxxB;;IAElF;IAEA82B,kBAAkB7I,OAAO7Z,MAAM6C,KAAKF,KAAK;AACvC,YAAM,EAACjH,OAAO,EAACwf,OAAO1I,QAAO,GAAGlG,SAAQ,IAAI,KAAKviB;AACjD,YAAM64B,YAAY,KAAKnF,kBAAkB;AACzC,YAAMoF,mBAAmBvW,aAAa,SAAS,KAAKld,SAAS;AAE7D,UAAI,KAAKmO,aAAY,GAAI;AACvB,cAAMulB,aAAa,KAAKnnB,gBAAgB,CAAK,IAAA,KAAK9P;AAClD,cAAMk3B,cAAc,KAAKp3B,QAAQ,KAAKgQ,gBAAgB,KAAKD,MAAM1X,SAAS,CAAA;AAC1E,YAAIu5B,cAAc;AAClB,YAAIC,eAAe;AAInB,YAAIoF,WAAW;AACb,cAAIC,kBAAkB;AACpBtF,0BAAc5a,MAAMkX,MAAM/Z;AAC1B0d,2BAAe3a,MAAM7C,KAAKH;iBACrB;AACL0d,0BAAc1a,MAAMgX,MAAMha;AAC1B2d,2BAAe7a,MAAM3C,KAAKF;;mBAEnBob,UAAU,SAAS;AAC5BsC,yBAAexd,KAAKF;mBACXob,UAAU,OAAO;AAC1BqC,wBAAc1D,MAAM/Z;mBACXob,UAAU,SAAS;AAC5BqC,wBAAc1D,MAAM/Z,QAAQ;AAC5B0d,yBAAexd,KAAKF,QAAQ;;AAI9B,aAAKyd,cAAcp6B,KAAKoC,KAAKg4B,cAAcuF,aAAatQ,WAAW,KAAK1S,SAAS,KAAKA,QAAQgjB,aAAa,CAAA;AAC3G,aAAKtF,eAAer6B,KAAKoC,KAAKi4B,eAAeuF,cAAcvQ,WAAW,KAAK1S,SAAS,KAAKA,QAAQijB,cAAc,CAAA;aAC1G;AACL,YAAI1F,aAAard,KAAKH,SAAS;AAC/B,YAAIyd,gBAAgBzD,MAAMha,SAAS;AAEnC,YAAIqb,UAAU,SAAS;AACrBmC,uBAAa;AACbC,0BAAgBzD,MAAMha;mBACbqb,UAAU,OAAO;AAC1BmC,uBAAard,KAAKH;AAClByd,0BAAgB;;AAGlB,aAAKD,aAAaA,aAAa7K;AAC/B,aAAK8K,gBAAgBA,gBAAgB9K;;IAEzC;IAMAmQ,iBAAiB;AACf,UAAI,KAAKvF,UAAU;AACjB,aAAKA,SAASvxB,OAAO1I,KAAKoC,IAAI,KAAKg4B,aAAa,KAAKH,SAASvxB,IAAI;AAClE,aAAKuxB,SAAS1xB,MAAMvI,KAAKoC,IAAI,KAAK83B,YAAY,KAAKD,SAAS1xB,GAAG;AAC/D,aAAK0xB,SAASzxB,QAAQxI,KAAKoC,IAAI,KAAKi4B,cAAc,KAAKJ,SAASzxB,KAAK;AACrE,aAAKyxB,SAASxxB,SAASzI,KAAKoC,IAAI,KAAK+3B,eAAe,KAAKF,SAASxxB,MAAM;;IAE5E;IAEA20B,WAAW;AACT/8B,eAAK,KAAKuG,QAAQw2B,UAAU;QAAC;MAAK,CAAA;IACpC;IAMAhjB,eAAe;AACb,YAAM,EAACnO,MAAMkd,SAAAA,IAAY,KAAKviB;AAC9B,aAAOuiB,aAAa,SAASA,aAAa,YAAYld,SAAS;IACjE;IAIA4zB,aAAa;AACX,aAAO,KAAKj5B,QAAQkmB;IACtB;IAMA8P,sBAAsBrkB,OAAO;AAC3B,WAAKolB,4BAA2B;AAEhC,WAAKC,mBAAmBrlB,KAAAA;AAGxB,UAAIzX,IAAGuI;AACP,WAAKvI,KAAI,GAAGuI,OAAOkP,MAAM1X,QAAQC,KAAIuI,MAAMvI,MAAK;AAC9C,YAAIiY,cAAcR,MAAMzX,EAAE,EAAC6S,KAAK,GAAG;AACjC4E,gBAAMzB,OAAOhW,IAAG,CAAA;AAChBuI;AACAvI,UAAAA;;MAEJ;AAEA,WAAKg9B,2BAA0B;IACjC;IAMAQ,iBAAiB;AACf,UAAID,aAAa,KAAK3D;AAEtB,UAAI,CAAC2D,YAAY;AACf,cAAMrC,aAAa,KAAKp1B,QAAQ2R,MAAMyjB;AACtC,YAAIzjB,QAAQ,KAAKA;AACjB,YAAIyjB,aAAazjB,MAAM1X,QAAQ;AAC7B0X,kBAAQ4f,OAAO5f,OAAOyjB,UAAAA;;AAGxB,aAAKtB,cAAc2D,aAAa,KAAKyB,mBAAmBvnB,OAAOA,MAAM1X,QAAQ,KAAK+F,QAAQ2R,MAAM6d,aAAa;;AAG/G,aAAOiI;IACT;IAQAyB,mBAAmBvnB,OAAO1X,QAAQu1B,eAAe;AAC/C,YAAM,EAACloB,KAAKysB,mBAAmB/B,OAAM,IAAI;AACzC,YAAMmH,SAAS,CAAA;AACf,YAAMC,UAAU,CAAA;AAChB,YAAM3H,YAAYr4B,KAAKoE,MAAMvD,SAASo3B,cAAcp3B,QAAQu1B,aAAAA,CAAAA;AAC5D,UAAI6J,kBAAkB;AACtB,UAAIC,mBAAmB;AACvB,UAAIp/B,IAAGwoB,IAAG6W,MAAMxsB,OAAOysB,UAAUC,YAAY5rB,QAAO6kB,YAAY3c,OAAOD,QAAQ4jB;AAE/E,WAAKx/B,KAAI,GAAGA,KAAID,QAAQC,MAAKu3B,WAAW;AACtC1kB,gBAAQ4E,MAAMzX,EAAE,EAAC6S;AACjBysB,mBAAW,KAAKG,wBAAwBz/B,EAAAA;AACxCoN,YAAIirB,OAAOkH,aAAaD,SAASI;AACjC/rB,QAAAA,SAAQmkB,OAAOyH,UAAAA,IAAczH,OAAOyH,UAAAA,KAAe;UAACp2B,MAAM,CAAA;UAAI4uB,IAAI,CAAA;QAAE;AACpES,qBAAa8G,SAAS9G;AACtB3c,gBAAQD,SAAS;AAEjB,YAAI,CAAC3D,cAAcpF,KAAU,KAAA,CAACpN,QAAQoN,KAAQ,GAAA;AAC5CgJ,kBAAQ8jB,aAAavyB,KAAKuG,OAAMxK,MAAMwK,OAAMokB,IAAIlc,OAAOhJ,KAAAA;AACvD+I,mBAAS4c;mBACA/yB,QAAQoN,KAAQ,GAAA;AAEzB,eAAK2V,KAAI,GAAG6W,OAAOxsB,MAAM9S,QAAQyoB,KAAI6W,MAAM,EAAE7W,IAAG;AAC9CgX,0BAAqC3sB,MAAM2V,EAAE;AAE7C,gBAAI,CAACvQ,cAAcunB,WAAgB,KAAA,CAAC/5B,QAAQ+5B,WAAc,GAAA;AACxD3jB,sBAAQ8jB,aAAavyB,KAAKuG,OAAMxK,MAAMwK,OAAMokB,IAAIlc,OAAO2jB,WAAAA;AACvD5jB,wBAAU4c;;UAEd;;AAEFyG,eAAOj+B,KAAK6a,KAAAA;AACZqjB,gBAAQl+B,KAAK4a,MAAAA;AACbujB,0BAAkBjgC,KAAKoC,IAAIua,OAAOsjB,eAAAA;AAClCC,2BAAmBlgC,KAAKoC,IAAIsa,QAAQwjB,gBAAAA;MACtC;AACAvH,qBAAeC,QAAQ/3B,MAAAA;AAEvB,YAAM29B,SAASuB,OAAO9iB,QAAQgjB,eAAAA;AAC9B,YAAMvB,UAAUsB,QAAQ/iB,QAAQijB,gBAAAA;AAEhC,YAAMQ,UAAU,CAACC,SAAS;QAAChkB,OAAOojB,OAAOY,GAAAA,KAAQ;QAAGjkB,QAAQsjB,QAAQW,GAAAA,KAAQ;;AAE5E,aAAO;QACLjK,OAAOgK,QAAQ,CAAA;QACf7jB,MAAM6jB,QAAQ7/B,SAAS,CAAA;QACvB29B,QAAQkC,QAAQlC,MAAAA;QAChBE,SAASgC,QAAQhC,OAAAA;QACjBqB;QACAC;MACF;IACF;IAOApsB,iBAAiBtM,OAAO;AACtB,aAAOA;IACT;IASAgR,iBAAiBhR,OAAOgC,QAAO;AAC7B,aAAO4J;IACT;IAQA4K,iBAAiB8iB,OAAO;IAAA;IAQxBpoB,gBAAgBlP,QAAO;AACrB,YAAMiP,QAAQ,KAAKA;AACnB,UAAIjP,SAAQ,KAAKA,SAAQiP,MAAM1X,SAAS,GAAG;AACzC,eAAO;;AAET,aAAO,KAAKyX,iBAAiBC,MAAMjP,MAAAA,EAAOhC,KAAK;IACjD;IAQAsW,mBAAmBijB,SAAS;AAC1B,UAAI,KAAKlY,gBAAgB;AACvBkY,kBAAU,IAAIA;;AAGhB,YAAMD,QAAQ,KAAKvjB,cAAcwjB,UAAU,KAAK3oB;AAChD,aAAO4oB,YAAY,KAAKvD,iBAAiBwD,YAAY,KAAK3hC,OAAOwhC,OAAO,CAAA,IAAKA,KAAK;IACpF;IAMAI,mBAAmBJ,OAAO;AACxB,YAAMC,WAAWD,QAAQ,KAAKvjB,eAAe,KAAKnF;AAClD,aAAO,KAAKyQ,iBAAiB,IAAIkY,UAAUA;IAC7C;IAOA3kB,eAAe;AACb,aAAO,KAAK5D,iBAAiB,KAAK2oB,aAAY,CAAA;IAChD;IAKAA,eAAe;AACb,YAAM,EAAChhC,KAAKmC,IAAG,IAAI;AAEnB,aAAOnC,MAAM,KAAKmC,MAAM,IAAIA,MAC1BnC,MAAM,KAAKmC,MAAM,IAAInC,MACrB;IACJ;IAKA2R,WAAWtI,QAAO;AAChB,YAAMiP,QAAQ,KAAKA,SAAS,CAAA;AAE5B,UAAIjP,UAAS,KAAKA,SAAQiP,MAAM1X,QAAQ;AACtC,cAAMM,OAAOoX,MAAMjP,MAAM;AACzB,eAAOnI,KAAK2N,aACb3N,KAAK2N,WAAW0qB,kBAAkB,KAAK5nB,WAAU,GAAItI,QAAOnI,IAAI;;AAEjE,aAAO,KAAK2N,aACZ,KAAKA,WAAWyqB,mBAAmB,KAAKn6B,MAAMwS,WAAU,GAAI,IAAI;IAClE;IAMAqlB,YAAY;AACV,YAAMiK,cAAc,KAAKt6B,QAAQ2R;AAGjC,YAAM4oB,MAAM7e,UAAU,KAAKgY,aAAa;AACxC,YAAM9a,MAAMxf,KAAKqY,IAAIrY,KAAKwf,IAAI2hB,GAAAA,CAAAA;AAC9B,YAAMzhB,MAAM1f,KAAKqY,IAAIrY,KAAK0f,IAAIyhB,GAAAA,CAAAA;AAE9B,YAAM9C,aAAa,KAAKC,eAAc;AACtC,YAAMjP,UAAU6R,YAAYE,mBAAmB;AAC/C,YAAMlT,KAAImQ,aAAaA,WAAWG,OAAO7hB,QAAQ0S,UAAU;AAC3D,YAAMjB,KAAIiQ,aAAaA,WAAWK,QAAQhiB,SAAS2S,UAAU;AAG7D,aAAO,KAAKjV,aAAY,IACpBgU,KAAI5O,MAAM0O,KAAIxO,MAAMwO,KAAI1O,MAAM4O,KAAI1O,MAClC0O,KAAI1O,MAAMwO,KAAI1O,MAAM4O,KAAI5O,MAAM0O,KAAIxO;IACxC;IAMA0e,aAAa;AACX,YAAMpY,UAAU,KAAKpf,QAAQof;AAE7B,UAAIA,YAAY,QAAQ;AACtB,eAAO,CAAC,CAACA;;AAGX,aAAO,KAAKva,wBAAuB,EAAG5K,SAAS;IACjD;IAKAwgC,sBAAsBptB,WAAW;AAC/B,YAAMhI,OAAO,KAAKA;AAClB,YAAM7M,QAAQ,KAAKA;AACnB,YAAMwH,UAAU,KAAKA;AACrB,YAAM,EAAC+U,MAAMwN,UAAUzD,OAAAA,IAAU9e;AACjC,YAAM8U,SAASC,KAAKD;AACpB,YAAMtB,eAAe,KAAKA,aAAY;AACtC,YAAM7B,QAAQ,KAAKA;AACnB,YAAM2f,cAAc3f,MAAM1X,UAAU6a,SAAS,IAAI;AACjD,YAAM4lB,KAAKvI,kBAAkBpd,IAAAA;AAC7B,YAAM/a,QAAQ,CAAA;AAEd,YAAM2gC,aAAa7b,OAAOyV,WAAW,KAAKvpB,WAAU,CAAA;AACpD,YAAM4vB,YAAYD,WAAWvb,UAAUub,WAAW5kB,QAAQ;AAC1D,YAAM8kB,gBAAgBD,YAAY;AAClC,YAAME,mBAAmB,SAASd,OAAO;AACvC,eAAOG,YAAY3hC,OAAOwhC,OAAOY,SAAAA;MACnC;AACA,UAAIG,aAAa7gC,IAAG43B,WAAWkJ;AAC/B,UAAIC,KAAKC,KAAKC,KAAKC,KAAKC,IAAIC,IAAIC,IAAIC;AAEpC,UAAIjZ,aAAa,OAAO;AACtBwY,sBAAcD,iBAAiB,KAAKj5B,MAAM;AAC1Cq5B,cAAM,KAAKr5B,SAAS64B;AACpBU,cAAML,cAAcF;AACpBS,aAAKR,iBAAiBztB,UAAU1L,GAAG,IAAIk5B;AACvCW,aAAKnuB,UAAUxL;iBACN0gB,aAAa,UAAU;AAChCwY,sBAAcD,iBAAiB,KAAKn5B,GAAG;AACvC25B,aAAKjuB,UAAU1L;AACf65B,aAAKV,iBAAiBztB,UAAUxL,MAAM,IAAIg5B;AAC1CK,cAAMH,cAAcF;AACpBO,cAAM,KAAKz5B,MAAM+4B;iBACRnY,aAAa,QAAQ;AAC9BwY,sBAAcD,iBAAiB,KAAKl5B,KAAK;AACzCq5B,cAAM,KAAKr5B,QAAQ84B;AACnBS,cAAMJ,cAAcF;AACpBQ,aAAKP,iBAAiBztB,UAAUvL,IAAI,IAAI+4B;AACxCU,aAAKluB,UAAUzL;iBACN2gB,aAAa,SAAS;AAC/BwY,sBAAcD,iBAAiB,KAAKh5B,IAAI;AACxCu5B,aAAKhuB,UAAUvL;AACfy5B,aAAKT,iBAAiBztB,UAAUzL,KAAK,IAAIi5B;AACzCI,cAAMF,cAAcF;AACpBM,cAAM,KAAKr5B,OAAO44B;iBACTr1B,SAAS,KAAK;AACvB,YAAIkd,aAAa,UAAU;AACzBwY,wBAAcD,kBAAkBztB,UAAU1L,MAAM0L,UAAUxL,UAAU,IAAI,GAAA;mBAC/D5C,SAASsjB,QAAW,GAAA;AAC7B,gBAAM4Q,iBAAiBh0B,OAAOC,KAAKmjB,QAAAA,EAAU,CAAE;AAC/C,gBAAM7hB,QAAQ6hB,SAAS4Q,cAAe;AACtC4H,wBAAcD,iBAAiB,KAAKtiC,MAAMqN,OAAOstB,cAAAA,EAAgBzhB,iBAAiBhR,KAAAA,CAAAA;;AAGpF46B,aAAKjuB,UAAU1L;AACf65B,aAAKnuB,UAAUxL;AACfq5B,cAAMH,cAAcF;AACpBO,cAAMF,MAAMR;iBACHr1B,SAAS,KAAK;AACvB,YAAIkd,aAAa,UAAU;AACzBwY,wBAAcD,kBAAkBztB,UAAUvL,OAAOuL,UAAUzL,SAAS,CAAA;mBAC3D3C,SAASsjB,QAAW,GAAA;AAC7B,gBAAM4Q,iBAAiBh0B,OAAOC,KAAKmjB,QAAAA,EAAU,CAAE;AAC/C,gBAAM7hB,QAAQ6hB,SAAS4Q,cAAe;AACtC4H,wBAAcD,iBAAiB,KAAKtiC,MAAMqN,OAAOstB,cAAAA,EAAgBzhB,iBAAiBhR,KAAAA,CAAAA;;AAGpFu6B,cAAMF,cAAcF;AACpBM,cAAMF,MAAMP;AACZW,aAAKhuB,UAAUvL;AACfy5B,aAAKluB,UAAUzL;;AAGjB,YAAM65B,QAAQzyB,eAAehJ,QAAQ2R,MAAM6d,eAAe8B,WAAAA;AAC1D,YAAMoK,OAAOtiC,KAAKoC,IAAI,GAAGpC,KAAK03B,KAAKQ,cAAcmK,KAAAA,CAAAA;AACjD,WAAKvhC,KAAI,GAAGA,KAAIo3B,aAAap3B,MAAKwhC,MAAM;AACtC,cAAMhuB,UAAU,KAAK1C,WAAW9Q,EAAAA;AAChC,cAAMyhC,cAAc5mB,KAAKwf,WAAW7mB,OAAAA;AACpC,cAAMkuB,oBAAoB9c,OAAOyV,WAAW7mB,OAAAA;AAE5C,cAAMsN,YAAY2gB,YAAY3gB;AAC9B,cAAM6gB,YAAYF,YAAYv/B;AAC9B,cAAM0/B,aAAaF,kBAAkBG,QAAQ,CAAA;AAC7C,cAAMC,mBAAmBJ,kBAAkBK;AAE3C,cAAM3E,YAAYqE,YAAYrE;AAC9B,cAAM4E,YAAYP,YAAYO;AAC9B,cAAMC,iBAAiBR,YAAYQ,kBAAkB,CAAA;AACrD,cAAMC,uBAAuBT,YAAYS;AAEzCtK,oBAAYJ,oBAAoB,MAAMx3B,IAAG4a,MAAAA;AAGzC,YAAIgd,cAAcx5B,QAAW;AAC3B;;AAGF0iC,2BAAmBb,YAAY3hC,OAAOs5B,WAAW9W,SAAAA;AAEjD,YAAIxH,cAAc;AAChBynB,gBAAME,MAAME,KAAKE,KAAKP;eACjB;AACLE,gBAAME,MAAME,KAAKE,KAAKR;;AAGxBhhC,cAAMkB,KAAK;UACT+/B;UACAC;UACAC;UACAC;UACAC;UACAC;UACAC;UACAC;UACAzlB,OAAOiF;UACP5e,OAAOy/B;UACPC;UACAE;UACA1E;UACA4E;UACAC;UACAC;QACF,CAAA;MACF;AAEA,WAAKhI,eAAe9C;AACpB,WAAK+C,eAAe0G;AAEpB,aAAO/gC;IACT;IAKAg7B,mBAAmB3nB,WAAW;AAC5B,YAAMhI,OAAO,KAAKA;AAClB,YAAMrF,UAAU,KAAKA;AACrB,YAAM,EAACuiB,UAAU5Q,OAAO2oB,YAAAA,IAAet6B;AACvC,YAAMwT,eAAe,KAAKA,aAAY;AACtC,YAAM7B,QAAQ,KAAKA;AACnB,YAAM,EAACwf,OAAOkL,YAAY5T,SAASgQ,OAAM,IAAI6B;AAC7C,YAAMI,KAAKvI,kBAAkBnyB,QAAQ+U,IAAI;AACzC,YAAMunB,iBAAiB5B,KAAKjS;AAC5B,YAAM8T,kBAAkB9D,SAAS,CAAChQ,UAAU6T;AAC5C,YAAMrkB,WAAW,CAACyD,UAAU,KAAKgY,aAAa;AAC9C,YAAM15B,QAAQ,CAAA;AACd,UAAIE,IAAGuI,MAAMlI,MAAMwS,OAAOtL,IAAGC,IAAG86B,WAAWxC,OAAOzH,MAAMG,YAAY+J,WAAWC;AAC/E,UAAIC,eAAe;AAEnB,UAAIpa,aAAa,OAAO;AACtB7gB,QAAAA,KAAI,KAAKG,SAAS06B;AAClBC,oBAAY,KAAKI,wBAAuB;iBAC/Bra,aAAa,UAAU;AAChC7gB,QAAAA,KAAI,KAAKC,MAAM46B;AACfC,oBAAY,KAAKI,wBAAuB;iBAC/Bra,aAAa,QAAQ;AAC9B,cAAM2M,MAAM,KAAK2N,wBAAwBnC,EAAAA;AACzC8B,oBAAYtN,IAAIsN;AAChB/6B,QAAAA,KAAIytB,IAAIztB;iBACC8gB,aAAa,SAAS;AAC/B,cAAM2M,MAAM,KAAK2N,wBAAwBnC,EAAAA;AACzC8B,oBAAYtN,IAAIsN;AAChB/6B,QAAAA,KAAIytB,IAAIztB;iBACC4D,SAAS,KAAK;AACvB,YAAIkd,aAAa,UAAU;AACzB7gB,UAAAA,MAAM2L,UAAU1L,MAAM0L,UAAUxL,UAAU,IAAKy6B;mBACtCr9B,SAASsjB,QAAW,GAAA;AAC7B,gBAAM4Q,iBAAiBh0B,OAAOC,KAAKmjB,QAAAA,EAAU,CAAE;AAC/C,gBAAM7hB,QAAQ6hB,SAAS4Q,cAAe;AACtCzxB,UAAAA,KAAI,KAAKlJ,MAAMqN,OAAOstB,cAAe,EAACzhB,iBAAiBhR,KAAS47B,IAAAA;;AAElEE,oBAAY,KAAKI,wBAAuB;iBAC/Bv3B,SAAS,KAAK;AACvB,YAAIkd,aAAa,UAAU;AACzB9gB,UAAAA,MAAM4L,UAAUvL,OAAOuL,UAAUzL,SAAS,IAAK06B;mBACtCr9B,SAASsjB,QAAW,GAAA;AAC7B,gBAAM4Q,iBAAiBh0B,OAAOC,KAAKmjB,QAAAA,EAAU,CAAE;AAC/C,gBAAM7hB,QAAQ6hB,SAAS4Q,cAAe;AACtC1xB,UAAAA,KAAI,KAAKjJ,MAAMqN,OAAOstB,cAAAA,EAAgBzhB,iBAAiBhR,KAAAA;;AAEzD87B,oBAAY,KAAKK,wBAAwBnC,EAAAA,EAAI8B;;AAG/C,UAAIn3B,SAAS,KAAK;AAChB,YAAI8rB,UAAU,SAAS;AACrBwL,yBAAe;mBACNxL,UAAU,OAAO;AAC1BwL,yBAAe;;;AAInB,YAAMlF,aAAa,KAAKC,eAAc;AACtC,WAAKx9B,KAAI,GAAGuI,OAAOkP,MAAM1X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CK,eAAOoX,MAAMzX,EAAE;AACf6S,gBAAQxS,KAAKwS;AAEb,cAAM4uB,cAAcrB,YAAY/F,WAAW,KAAKvpB,WAAW9Q,EAAAA,CAAAA;AAC3D8/B,gBAAQ,KAAKpoB,gBAAgB1X,EAAAA,IAAKogC,YAAYwC;AAC9CvK,eAAO,KAAKoH,wBAAwBz/B,EAAAA;AACpCw4B,qBAAaH,KAAKG;AAClB+J,oBAAY98B,QAAQoN,KAAAA,IAASA,MAAM9S,SAAS;AAC5C,cAAM8iC,YAAYN,YAAY;AAC9B,cAAMrgC,SAAQu/B,YAAYv/B;AAC1B,cAAM4gC,cAAcrB,YAAYsB;AAChC,cAAMC,cAAcvB,YAAYwB;AAChC,YAAIC,gBAAgBZ;AAEpB,YAAIhpB,cAAc;AAChB/R,UAAAA,KAAIu4B;AAEJ,cAAIwC,cAAc,SAAS;AACzB,gBAAItiC,OAAMuI,OAAO,GAAG;AAClB26B,8BAAgB,CAAC,KAAKp9B,QAAQoB,UAAU,UAAU;uBACzClH,OAAM,GAAG;AAClBkjC,8BAAgB,CAAC,KAAKp9B,QAAQoB,UAAU,SAAS;mBAC5C;AACLg8B,8BAAgB;;;AAIpB,cAAI7a,aAAa,OAAO;AACtB,gBAAI8Z,eAAe,UAAUpkB,aAAa,GAAG;AAC3CykB,2BAAa,CAACD,YAAY/J,aAAaA,aAAa;uBAC3C2J,eAAe,UAAU;AAClCK,2BAAa,CAACjF,WAAWK,QAAQhiB,SAAS,IAAIinB,YAAYrK,aAAaA;mBAClE;AACLgK,2BAAa,CAACjF,WAAWK,QAAQhiB,SAAS4c,aAAa;;iBAEpD;AAEL,gBAAI2J,eAAe,UAAUpkB,aAAa,GAAG;AAC3CykB,2BAAahK,aAAa;uBACjB2J,eAAe,UAAU;AAClCK,2BAAajF,WAAWK,QAAQhiB,SAAS,IAAIinB,YAAYrK;mBACpD;AACLgK,2BAAajF,WAAWK,QAAQhiB,SAAS2mB,YAAY/J;;;AAGzD,cAAI+F,QAAQ;AACViE,0BAAc;;AAEhB,cAAIzkB,aAAa,KAAK,CAAC0jB,YAAY0B,mBAAmB;AACpD57B,YAAAA,MAAK,aAAc,IAAKrI,KAAK0f,IAAIb,QAAAA;;eAE9B;AACLvW,UAAAA,KAAIs4B;AACJ0C,wBAAc,IAAID,aAAa/J,aAAa;;AAG9C,YAAI4K;AAEJ,YAAI3B,YAAY0B,mBAAmB;AACjC,gBAAME,eAAevU,UAAU2S,YAAY6B,eAAe;AAC1D,gBAAM1nB,SAAS2hB,WAAW2B,QAAQl/B,EAAE;AACpC,gBAAM6b,QAAQ0hB,WAAW0B,OAAOj/B,EAAE;AAElC,cAAIyH,MAAM+6B,aAAaa,aAAa57B;AACpC,cAAIG,OAAO,IAAIy7B,aAAaz7B;AAE5B,kBAAQ66B,cAAAA;YACR,KAAK;AACHh7B,qBAAOmU,SAAS;AAChB;YACF,KAAK;AACHnU,qBAAOmU;AACP;UAGF;AAEA,kBAAQ0mB,WAAAA;YACR,KAAK;AACH16B,sBAAQiU,QAAQ;AAChB;YACF,KAAK;AACHjU,sBAAQiU;AACR;YACF,KAAK;AACH,kBAAI7b,OAAMuI,OAAO,GAAG;AAClBX,wBAAQiU;yBACC7b,KAAI,GAAG;AAChB4H,wBAAQiU,QAAQ;;AAElB;UAGF;AAEAunB,qBAAW;YACTx7B;YACAH;YACAoU,OAAOA,QAAQwnB,aAAaxnB;YAC5BD,QAAQA,SAASynB,aAAaznB;YAE9B1Z,OAAOu/B,YAAY8B;UACrB;;AAGFzjC,cAAMkB,KAAK;UACT6R;UACAwlB;UACAmK;UACA18B,SAAS;YACPiY;YACA7b,OAAAA;YACA4gC;YACAE;YACAV,WAAWY;YACXT;YACAe,aAAa;cAACj8B;cAAGC;YAAE;YACnB47B;UACF;QACF,CAAA;MACF;AAEA,aAAOtjC;IACT;IAEA4iC,0BAA0B;AACxB,YAAM,EAACra,UAAU5Q,MAAAA,IAAS,KAAK3R;AAC/B,YAAMiY,WAAW,CAACyD,UAAU,KAAKgY,aAAa;AAE9C,UAAIzb,UAAU;AACZ,eAAOsK,aAAa,QAAQ,SAAS;;AAGvC,UAAI4O,QAAQ;AAEZ,UAAIxf,MAAMwf,UAAU,SAAS;AAC3BA,gBAAQ;MACV,WAAWxf,MAAMwf,UAAU,OAAO;AAChCA,gBAAQ;MACV,WAAWxf,MAAMwf,UAAU,SAAS;AAClCA,gBAAQ;;AAGV,aAAOA;IACT;IAEA0L,wBAAwBnC,IAAI;AAC1B,YAAM,EAACnY,UAAU5Q,OAAO,EAAC0qB,YAAY5D,QAAQhQ,QAAAA,EAAQ,IAAI,KAAKzoB;AAC9D,YAAMy3B,aAAa,KAAKC,eAAc;AACtC,YAAM4E,iBAAiB5B,KAAKjS;AAC5B,YAAMmP,SAASH,WAAWG,OAAO7hB;AAEjC,UAAIymB;AACJ,UAAI/6B;AAEJ,UAAI8gB,aAAa,QAAQ;AACvB,YAAIkW,QAAQ;AACVh3B,UAAAA,KAAI,KAAKG,QAAQ6mB;AAEjB,cAAI4T,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZ/6B,YAAAA,MAAMm2B,SAAS;iBACV;AACL4E,wBAAY;AACZ/6B,YAAAA,MAAKm2B;;eAEF;AACLn2B,UAAAA,KAAI,KAAKG,QAAQ06B;AAEjB,cAAID,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZ/6B,YAAAA,MAAMm2B,SAAS;iBACV;AACL4E,wBAAY;AACZ/6B,YAAAA,KAAI,KAAKK;;;iBAGJygB,aAAa,SAAS;AAC/B,YAAIkW,QAAQ;AACVh3B,UAAAA,KAAI,KAAKK,OAAO2mB;AAEhB,cAAI4T,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZ/6B,YAAAA,MAAMm2B,SAAS;iBACV;AACL4E,wBAAY;AACZ/6B,YAAAA,MAAKm2B;;eAEF;AACLn2B,UAAAA,KAAI,KAAKK,OAAOw6B;AAEhB,cAAID,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZ/6B,YAAAA,MAAKm2B,SAAS;iBACT;AACL4E,wBAAY;AACZ/6B,YAAAA,KAAI,KAAKG;;;aAGR;AACL46B,oBAAY;;AAGd,aAAO;QAACA;QAAW/6B,GAAAA;MAAC;IACtB;IAKAk8B,oBAAoB;AAClB,UAAI,KAAK39B,QAAQ2R,MAAM8mB,QAAQ;AAC7B;;AAGF,YAAMjgC,QAAQ,KAAKA;AACnB,YAAM+pB,WAAW,KAAKviB,QAAQuiB;AAE9B,UAAIA,aAAa,UAAUA,aAAa,SAAS;AAC/C,eAAO;UAAC5gB,KAAK;UAAGG,MAAM,KAAKA;UAAMD,QAAQrJ,MAAMsd;UAAQlU,OAAO,KAAKA;QAAK;;AACxE,UAAI2gB,aAAa,SAASA,aAAa,UAAU;AACjD,eAAO;UAAC5gB,KAAK,KAAKA;UAAKG,MAAM;UAAGD,QAAQ,KAAKA;UAAQD,OAAOpJ,MAAMud;QAAK;;IAE3E;IAKA6nB,iBAAiB;AACf,YAAM,EAACt2B,KAAKtH,SAAS,EAAC4a,gBAAAA,GAAkB9Y,MAAMH,KAAKoU,OAAOD,OAAM,IAAI;AACpE,UAAI8E,iBAAiB;AACnBtT,YAAIu2B,KAAI;AACRv2B,YAAIqT,YAAYC;AAChBtT,YAAIw2B,SAASh8B,MAAMH,KAAKoU,OAAOD,MAAAA;AAC/BxO,YAAIy2B,QAAO;;IAEf;IAEA3mB,qBAAqB1W,OAAO;AAC1B,YAAMqU,OAAO,KAAK/U,QAAQ+U;AAC1B,UAAI,CAAC,KAAKyiB,WAAU,KAAM,CAACziB,KAAKqK,SAAS;AACvC,eAAO;;AAET,YAAMzN,QAAQ,KAAKA;AACnB,YAAMjP,SAAQiP,MAAMqsB,UAAUh8B,CAAAA,OAAKA,GAAEtB,UAAUA,KAAAA;AAC/C,UAAIgC,UAAS,GAAG;AACd,cAAMvB,OAAO4T,KAAKwf,WAAW,KAAKvpB,WAAWtI,MAAAA,CAAAA;AAC7C,eAAOvB,KAAK6Z;;AAEd,aAAO;IACT;IAKAijB,SAAS5wB,WAAW;AAClB,YAAM0H,OAAO,KAAK/U,QAAQ+U;AAC1B,YAAMzN,MAAM,KAAKA;AACjB,YAAMtN,QAAQ,KAAK45B,mBAAmB,KAAKA,iBAAiB,KAAK6G,sBAAsBptB,SAAS;AAChG,UAAInT,IAAGuI;AAEP,YAAMy7B,WAAW,CAACC,IAAIC,IAAI3jB,UAAU;AAClC,YAAI,CAACA,MAAM1E,SAAS,CAAC0E,MAAMre,OAAO;AAChC;;AAEFkL,YAAIu2B,KAAI;AACRv2B,YAAI0T,YAAYP,MAAM1E;AACtBzO,YAAIuT,cAAcJ,MAAMre;AACxBkL,YAAI+2B,YAAY5jB,MAAMqhB,cAAc,CAAA,CAAE;AACtCx0B,YAAIg3B,iBAAiB7jB,MAAMuhB;AAE3B10B,YAAIi3B,UAAS;AACbj3B,YAAIk3B,OAAOL,GAAG18B,GAAG08B,GAAGz8B,CAAC;AACrB4F,YAAIm3B,OAAOL,GAAG38B,GAAG28B,GAAG18B,CAAC;AACrB4F,YAAIo3B,OAAM;AACVp3B,YAAIy2B,QAAO;MACb;AAEA,UAAIhpB,KAAKqK,SAAS;AAChB,aAAKllB,KAAI,GAAGuI,OAAOzI,MAAMC,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C,gBAAME,OAAOJ,MAAME,EAAE;AAErB,cAAI6a,KAAK4pB,iBAAiB;AACxBT,qBACE;cAACz8B,GAAGrH,KAAKihC;cAAI35B,GAAGtH,KAAKkhC;eACrB;cAAC75B,GAAGrH,KAAKmhC;cAAI75B,GAAGtH,KAAKohC;eACrBphC,IAAAA;;AAIJ,cAAI2a,KAAKqd,WAAW;AAClB8L,qBACE;cAACz8B,GAAGrH,KAAK6gC;cAAKv5B,GAAGtH,KAAK8gC;eACtB;cAACz5B,GAAGrH,KAAK+gC;cAAKz5B,GAAGtH,KAAKghC;eACtB;cACEh/B,OAAOhC,KAAK8hC;cACZnmB,OAAO3b,KAAKk9B;cACZwE,YAAY1hC,KAAK+hC;cACjBH,kBAAkB5hC,KAAKgiC;YACzB,CAAA;;QAGN;;IAEJ;IAKAwC,aAAa;AACX,YAAM,EAACpmC,OAAO8O,KAAKtH,SAAS,EAAC8e,QAAQ/J,KAAI,EAAC,IAAI;AAC9C,YAAM4lB,aAAa7b,OAAOyV,WAAW,KAAKvpB,WAAU,CAAA;AACpD,YAAM4vB,YAAY9b,OAAOM,UAAUub,WAAW5kB,QAAQ;AACtD,UAAI,CAAC6kB,WAAW;AACd;;AAEF,YAAMiE,gBAAgB9pB,KAAKwf,WAAW,KAAKvpB,WAAW,CAAA,CAAA,EAAIgQ;AAC1D,YAAM+f,cAAc,KAAK1G;AACzB,UAAIgH,IAAIE,IAAID,IAAIE;AAEhB,UAAI,KAAKhoB,aAAY,GAAI;AACvB6nB,aAAKlB,YAAY3hC,OAAO,KAAKsJ,MAAM84B,SAAAA,IAAaA,YAAY;AAC5DW,aAAKpB,YAAY3hC,OAAO,KAAKoJ,OAAOi9B,aAAAA,IAAiBA,gBAAgB;AACrEvD,aAAKE,KAAKT;aACL;AACLO,aAAKnB,YAAY3hC,OAAO,KAAKmJ,KAAKi5B,SAAAA,IAAaA,YAAY;AAC3DY,aAAKrB,YAAY3hC,OAAO,KAAKqJ,QAAQg9B,aAAAA,IAAiBA,gBAAgB;AACtExD,aAAKE,KAAKR;;AAEZzzB,UAAIu2B,KAAI;AACRv2B,UAAI0T,YAAY2f,WAAW5kB;AAC3BzO,UAAIuT,cAAc8f,WAAWv+B;AAE7BkL,UAAIi3B,UAAS;AACbj3B,UAAIk3B,OAAOnD,IAAIC,EAAAA;AACfh0B,UAAIm3B,OAAOlD,IAAIC,EAAAA;AACfl0B,UAAIo3B,OAAM;AAEVp3B,UAAIy2B,QAAO;IACb;IAKAe,WAAWzxB,WAAW;AACpB,YAAMitB,cAAc,KAAKt6B,QAAQ2R;AAEjC,UAAI,CAAC2oB,YAAYlb,SAAS;AACxB;;AAGF,YAAM9X,MAAM,KAAKA;AAEjB,YAAM8F,OAAO,KAAKuwB,kBAAiB;AACnC,UAAIvwB,MAAM;AACR2xB,iBAASz3B,KAAK8F,IAAAA;;AAGhB,YAAMpT,QAAQ,KAAK+6B,cAAc1nB,SAAAA;AACjC,iBAAWjT,QAAQJ,OAAO;AACxB,cAAMglC,oBAAoB5kC,KAAK4F;AAC/B,cAAMw5B,WAAWp/B,KAAKm4B;AACtB,cAAMxlB,QAAQ3S,KAAK2S;AACnB,cAAMrL,KAAItH,KAAKsiC;AACfuC,mBAAW33B,KAAKyF,OAAO,GAAGrL,IAAG83B,UAAUwF,iBAAAA;MACzC;AAEA,UAAI5xB,MAAM;AACR8xB,mBAAW53B,GAAAA;;IAEf;IAKA63B,YAAY;AACV,YAAM,EAAC73B,KAAKtH,SAAS,EAACuiB,UAAUyV,OAAO52B,QAAO,EAAC,IAAI;AAEnD,UAAI,CAAC42B,MAAM5Y,SAAS;AAClB;;AAGF,YAAMmT,OAAOC,OAAOwF,MAAMzF,IAAI;AAC9B,YAAM9J,UAAUO,UAAUgP,MAAMvP,OAAO;AACvC,YAAM0I,QAAQ6G,MAAM7G;AACpB,UAAIrc,SAASyd,KAAKG,aAAa;AAE/B,UAAInQ,aAAa,YAAYA,aAAa,YAAYtjB,SAASsjB,QAAW,GAAA;AACxEzN,kBAAU2T,QAAQ5mB;AAClB,YAAIlC,QAAQq4B,MAAMtd,IAAI,GAAG;AACvB5F,oBAAUyd,KAAKG,cAAcsF,MAAMtd,KAAKzgB,SAAS;;aAE9C;AACL6a,kBAAU2T,QAAQ9mB;;AAGpB,YAAM,EAACqxB,QAAQC,QAAQ5W,UAAUpE,SAAQ,IAAI8a,UAAU,MAAMje,QAAQyN,UAAU4O,KAAAA;AAE/E8N,iBAAW33B,KAAK0wB,MAAMtd,MAAM,GAAG,GAAG6X,MAAM;QACtCn2B,OAAO47B,MAAM57B;QACbigB;QACApE;QACAukB,WAAW3J,WAAW1B,OAAO5O,UAAUnhB,OAAAA;QACvCu7B,cAAc;QACde,aAAa;UAAC1K;UAAQC;QAAO;MAC/B,CAAA;IACF;IAEA94B,KAAKkT,WAAW;AACd,UAAI,CAAC,KAAKmqB,WAAU,GAAI;AACtB;;AAGF,WAAKoG,eAAc;AACnB,WAAKK,SAAS5wB,SAAAA;AACd,WAAKuxB,WAAU;AACf,WAAKO,UAAS;AACd,WAAKL,WAAWzxB,SAAAA;IAClB;IAMAsb,UAAU;AACR,YAAMxnB,OAAO,KAAKnB;AAClB,YAAMo/B,KAAKj+B,KAAKwQ,SAASxQ,KAAKwQ,MAAMiX,KAAK;AACzC,YAAMyW,KAAKr2B,eAAe7H,KAAK4T,QAAQ5T,KAAK4T,KAAK6T,GAAG,EAAC;AACrD,YAAM0W,KAAKt2B,eAAe7H,KAAK2d,UAAU3d,KAAK2d,OAAO8J,GAAG,CAAA;AAExD,UAAI,CAAC,KAAK4O,WAAU,KAAM,KAAKr9B,SAASi5B,OAAMjS,UAAUhnB,MAAM;AAE5D,eAAO;UAAC;YACNyuB,GAAGwW;YACHjlC,MAAM,CAACkT,cAAc;AACnB,mBAAKlT,KAAKkT,SAAAA;YACZ;UACF;QAAE;;AAGJ,aAAO;QAAC;UACNub,GAAGyW;UACHllC,MAAM,CAACkT,cAAc;AACnB,iBAAKuwB,eAAc;AACnB,iBAAKK,SAAS5wB,SAAAA;AACd,iBAAK8xB,UAAS;UAChB;QACF;QAAG;UACDvW,GAAG0W;UACHnlC,MAAM,MAAM;AACV,iBAAKykC,WAAU;UACjB;QACF;QAAG;UACDhW,GAAGwW;UACHjlC,MAAM,CAACkT,cAAc;AACnB,iBAAKyxB,WAAWzxB,SAAAA;UAClB;QACF;MAAE;IACJ;IAOAxI,wBAAwBlM,MAAM;AAC5B,YAAMg8B,QAAQ,KAAKn8B,MAAMiqB,6BAA4B;AACrD,YAAM8c,SAAS,KAAKl6B,OAAO;AAC3B,YAAMwrB,SAAS,CAAA;AACf,UAAI32B,IAAGuI;AAEP,WAAKvI,KAAI,GAAGuI,OAAOkyB,MAAM16B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C,cAAMuJ,OAAOkxB,MAAMz6B,EAAE;AACrB,YAAIuJ,KAAK87B,MAAO,MAAK,KAAKz7B,OAAO,CAACnL,QAAQ8K,KAAK9K,SAASA,OAAO;AAC7Dk4B,iBAAO31B,KAAKuI,IAAAA;;MAEhB;AACA,aAAOotB;IACT;IAOA8I,wBAAwBj3B,QAAO;AAC7B,YAAMvB,OAAO,KAAKnB,QAAQ2R,MAAM4iB,WAAW,KAAKvpB,WAAWtI,MAAAA,CAAAA;AAC3D,aAAO8vB,OAAOrxB,KAAKoxB,IAAI;IACzB;IAKAiN,aAAa;AACX,YAAMC,WAAW,KAAK9F,wBAAwB,CAAA,EAAGjH;AACjD,cAAQ,KAAKlf,aAAY,IAAK,KAAKuC,QAAQ,KAAKD,UAAU2pB;IAC5D;EACF;ACvqDe,MAAMC,gBAAN,MAAMA;IACnB1nC,YAAYW,MAAMgnC,OAAO1e,UAAU;AACjC,WAAKtoB,OAAOA;AACZ,WAAKgnC,QAAQA;AACb,WAAK1e,WAAWA;AAChB,WAAKjnB,QAAQmF,uBAAOygC,OAAO,IAAI;IACjC;IAEAC,UAAUlnC,MAAM;AACd,aAAOwG,OAAOgiB,UAAU2e,cAAcrmC,KAAK,KAAKd,KAAKwoB,WAAWxoB,KAAKwoB,SAAS;IAChF;IAMA4e,SAAS3lC,MAAM;AACb,YAAM4lC,QAAQ7gC,OAAO8gC,eAAe7lC,IAAAA;AACpC,UAAI8lC;AAEJ,UAAIC,kBAAkBH,KAAQ,GAAA;AAE5BE,sBAAc,KAAKH,SAASC,KAAAA;;AAG9B,YAAMhmC,QAAQ,KAAKA;AACnB,YAAM8J,MAAK1J,KAAK0J;AAChB,YAAM67B,QAAQ,KAAKA,QAAQ,MAAM77B;AAEjC,UAAI,CAACA,KAAI;AACP,cAAM,IAAIid,MAAM,6BAA6B3mB,IAAM;;AAGrD,UAAI0J,OAAM9J,OAAO;AAEf,eAAO2lC;;AAGT3lC,YAAM8J,GAAAA,IAAM1J;AACZgmC,uBAAiBhmC,MAAMulC,OAAOO,WAAAA;AAC9B,UAAI,KAAKjf,UAAU;AACjB5hB,iBAAS4hB,SAAS7mB,KAAK0J,IAAI1J,KAAKwa,SAAS;;AAG3C,aAAO+qB;IACT;IAMAhlC,IAAImJ,KAAI;AACN,aAAO,KAAK9J,MAAM8J,GAAG;IACvB;IAKAu8B,WAAWjmC,MAAM;AACf,YAAMJ,QAAQ,KAAKA;AACnB,YAAM8J,MAAK1J,KAAK0J;AAChB,YAAM67B,QAAQ,KAAKA;AAEnB,UAAI77B,OAAM9J,OAAO;AACf,eAAOA,MAAM8J,GAAG;;AAGlB,UAAI67B,SAAS77B,OAAMzE,SAASsgC,KAAAA,GAAQ;AAClC,eAAOtgC,SAASsgC,KAAM,EAAC77B,GAAG;AAC1B,YAAI,KAAKmd,UAAU;AACjB,iBAAOrM,UAAU9Q,GAAG;;;IAG1B;EACF;AAEA,WAASs8B,iBAAiBhmC,MAAMulC,OAAOO,aAAa;AAElD,UAAMI,eAAeC,MAAMphC,uBAAOygC,OAAO,IAAI,GAAG;MAC9CM,cAAc7gC,SAAS1E,IAAIulC,WAAAA,IAAe,CAAA;MAC1C7gC,SAAS1E,IAAIglC,KAAAA;MACbvlC,KAAKiF;IACN,CAAA;AAEDA,aAASvE,IAAI6kC,OAAOW,YAAAA;AAEpB,QAAIlmC,KAAK00B,eAAe;AACtB0R,oBAAcb,OAAOvlC,KAAK00B,aAAa;;AAGzC,QAAI10B,KAAK2f,aAAa;AACpB1a,eAASohC,SAASd,OAAOvlC,KAAK2f,WAAW;;EAE7C;AAEA,WAASymB,cAAcb,OAAOe,QAAQ;AACpCvhC,WAAOC,KAAKshC,MAAAA,EAAQ1nC,QAAQ2nC,CAAAA,aAAY;AACtC,YAAMC,gBAAgBD,SAASE,MAAM,GAAA;AACrC,YAAMC,aAAaF,cAAcpmC,IAAG;AACpC,YAAMumC,cAAc;QAACpB;MAAM,EAAC1uB,OAAO2vB,aAAeI,EAAAA,KAAK,GAAA;AACvD,YAAMC,QAAQP,OAAOC,QAAS,EAACE,MAAM,GAAA;AACrC,YAAMK,aAAaD,MAAMzmC,IAAG;AAC5B,YAAM2mC,cAAcF,MAAMD,KAAK,GAAA;AAC/B3hC,eAAS+hC,MAAML,aAAaD,YAAYK,aAAaD,UAAAA;IACvD,CAAA;EACF;AAEA,WAASf,kBAAkBH,OAAO;AAChC,WAAO,QAAQA,SAAS,cAAcA;EACxC;AC1GO,MAAMqB,WAAN,MAAMA;IACXrpC,cAAc;AACZ,WAAKspC,cAAc,IAAI5B,cAAcx4B,mBAAmB,YAAY,IAAI;AACxE,WAAKiG,WAAW,IAAIuyB,cAAc7Q,UAAS,UAAA;AAC3C,WAAKzU,UAAU,IAAIslB,cAAcvgC,QAAQ,SAAA;AACzC,WAAK0G,SAAS,IAAI65B,cAActM,OAAO,QAAA;AAGvC,WAAKmO,mBAAmB;QAAC,KAAKD;QAAa,KAAKz7B;QAAQ,KAAKsH;MAAS;IACxE;IAKAhS,OAAOiV,MAAM;AACX,WAAKoxB,MAAM,YAAYpxB,IAAAA;IACzB;IAEAxU,UAAUwU,MAAM;AACd,WAAKoxB,MAAM,cAAcpxB,IAAAA;IAC3B;IAKAqxB,kBAAkBrxB,MAAM;AACtB,WAAKoxB,MAAM,YAAYpxB,MAAM,KAAKkxB,WAAW;IAC/C;IAKAh5B,eAAe8H,MAAM;AACnB,WAAKoxB,MAAM,YAAYpxB,MAAM,KAAKjD,QAAQ;IAC5C;IAKAu0B,cAActxB,MAAM;AAClB,WAAKoxB,MAAM,YAAYpxB,MAAM,KAAKgK,OAAO;IAC3C;IAKAunB,aAAavxB,MAAM;AACjB,WAAKoxB,MAAM,YAAYpxB,MAAM,KAAKvK,MAAM;IAC1C;IAMA+7B,cAAc99B,KAAI;AAChB,aAAO,KAAK+9B,KAAK/9B,KAAI,KAAKw9B,aAAa,YAAA;IACzC;IAMAzgB,WAAW/c,KAAI;AACb,aAAO,KAAK+9B,KAAK/9B,KAAI,KAAKqJ,UAAU,SAAA;IACtC;IAMA20B,UAAUh+B,KAAI;AACZ,aAAO,KAAK+9B,KAAK/9B,KAAI,KAAKsW,SAAS,QAAA;IACrC;IAMA2nB,SAASj+B,KAAI;AACX,aAAO,KAAK+9B,KAAK/9B,KAAI,KAAK+B,QAAQ,OAAA;IACpC;IAKAm8B,qBAAqB5xB,MAAM;AACzB,WAAKoxB,MAAM,cAAcpxB,MAAM,KAAKkxB,WAAW;IACjD;IAKAW,kBAAkB7xB,MAAM;AACtB,WAAKoxB,MAAM,cAAcpxB,MAAM,KAAKjD,QAAQ;IAC9C;IAKA+0B,iBAAiB9xB,MAAM;AACrB,WAAKoxB,MAAM,cAAcpxB,MAAM,KAAKgK,OAAO;IAC7C;IAKA+nB,gBAAgB/xB,MAAM;AACpB,WAAKoxB,MAAM,cAAcpxB,MAAM,KAAKvK,MAAM;IAC5C;IAKA27B,MAAM7iC,QAAQyR,MAAMgyB,eAAe;AACjC;QAAIhyB,GAAAA;QAAMpX,QAAQqpC,CAAAA,QAAO;AACvB,cAAMC,MAAMF,iBAAiB,KAAKG,oBAAoBF,GAAAA;AACtD,YAAID,iBAAiBE,IAAIzC,UAAUwC,GAASC,KAAAA,QAAQ,KAAKloB,WAAWioB,IAAIv+B,IAAK;AAC3E,eAAK0+B,MAAM7jC,QAAQ2jC,KAAKD,GAAAA;eACnB;AAKLlZ,eAAKkZ,KAAKjoC,CAAAA,SAAQ;AAOhB,kBAAMqoC,UAAUL,iBAAiB,KAAKG,oBAAoBnoC,IAAAA;AAC1D,iBAAKooC,MAAM7jC,QAAQ8jC,SAASroC,IAAAA;UAC9B,CAAA;;MAEJ,CAAA;IACF;IAKAooC,MAAM7jC,QAAQiiB,WAAU8hB,WAAW;AACjC,YAAMC,cAAcC,YAAYjkC,MAAAA;AAChClF,eAAKipC,UAAU,WAAWC,WAAAA,GAAc,CAAA,GAAID,SAAAA;AAC5C9hB,MAAAA,UAASjiB,MAAAA,EAAQ+jC,SAAAA;AACjBjpC,eAAKipC,UAAU,UAAUC,WAAAA,GAAc,CAAA,GAAID,SAAAA;IAC7C;IAKAH,oBAAoB5pC,MAAM;AACxB,eAASuB,KAAI,GAAGA,KAAI,KAAKqnC,iBAAiBtnC,QAAQC,MAAK;AACrD,cAAMooC,MAAM,KAAKf,iBAAiBrnC,EAAE;AACpC,YAAIooC,IAAIzC,UAAUlnC,IAAO,GAAA;AACvB,iBAAO2pC;;MAEX;AAEA,aAAO,KAAKloB;IACd;IAKAynB,KAAK/9B,KAAIs+B,eAAezpC,MAAM;AAC5B,YAAMyB,OAAOgoC,cAAcznC,IAAImJ,GAAAA;AAC/B,UAAI1J,SAAS9B,QAAW;AACtB,cAAM,IAAIyoB,MAAM,MAAMjd,MAAK,2BAA2BnL,OAAO,GAAK;;AAEpE,aAAOyB;IACT;EAEF;AAGA,MAAA,WAA+B,oBAAIinC,SAAW;ACtK/B,MAAMwB,gBAAN,MAAMA;IACnB7qC,cAAc;AACZ,WAAK8qC,QAAQ,CAAA;IACf;IAYAC,OAAOvqC,OAAOwqC,MAAM5yB,MAAMtK,QAAQ;AAChC,UAAIk9B,SAAS,cAAc;AACzB,aAAKF,QAAQ,KAAKG,mBAAmBzqC,OAAO,IAAI;AAChD,aAAKD,QAAQ,KAAKuqC,OAAOtqC,OAAO,SAAA;;AAGlC,YAAMuhB,eAAcjU,SAAS,KAAKo9B,aAAa1qC,KAAAA,EAAOsN,OAAOA,MAAU,IAAA,KAAKo9B,aAAa1qC,KAAM;AAC/F,YAAMq4B,SAAS,KAAKt4B,QAAQwhB,cAAavhB,OAAOwqC,MAAM5yB,IAAAA;AAEtD,UAAI4yB,SAAS,gBAAgB;AAC3B,aAAKzqC,QAAQwhB,cAAavhB,OAAO,MAAA;AACjC,aAAKD,QAAQ,KAAKuqC,OAAOtqC,OAAO,WAAA;;AAElC,aAAOq4B;IACT;IAKAt4B,QAAQwhB,cAAavhB,OAAOwqC,MAAM5yB,MAAM;AACtCA,aAAOA,QAAQ,CAAA;AACf,iBAAW+yB,cAAcppB,cAAa;AACpC,cAAMqpB,SAASD,WAAWC;AAC1B,cAAMzkC,SAASykC,OAAOJ,IAAK;AAC3B,cAAMld,SAAS;UAACttB;UAAO4X;UAAM+yB,WAAWnjC;QAAQ;AAChD,YAAIqjC,SAAa1kC,QAAQmnB,QAAQsd,MAAAA,MAAY,SAAShzB,KAAKkzB,YAAY;AACrE,iBAAO;;MAEX;AAEA,aAAO;IACT;IAEAC,aAAa;AAMX,UAAI,CAACpxB,cAAc,KAAKrB,MAAM,GAAG;AAC/B,aAAK0yB,YAAY,KAAK1yB;AACtB,aAAKA,SAASxY;;IAElB;IAMA4qC,aAAa1qC,OAAO;AAClB,UAAI,KAAKsY,QAAQ;AACf,eAAO,KAAKA;;AAGd,YAAMiJ,eAAc,KAAKjJ,SAAS,KAAKmyB,mBAAmBzqC,KAAAA;AAE1D,WAAKirC,oBAAoBjrC,KAAAA;AAEzB,aAAOuhB;IACT;IAEAkpB,mBAAmBzqC,OAAOuI,KAAK;AAC7B,YAAMlC,SAASrG,SAASA,MAAMqG;AAC9B,YAAMmB,UAAUgJ,eAAenK,OAAOmB,WAAWnB,OAAOmB,QAAQoa,SAAS,CAAA,CAAC;AAC1E,YAAMA,WAAUspB,WAAW7kC,MAAAA;AAE3B,aAAOmB,YAAY,SAAS,CAACe,MAAM,CAAA,IAAK4iC,kBAAkBnrC,OAAO4hB,UAASpa,SAASe,GAAI;IACzF;IAMA0iC,oBAAoBjrC,OAAO;AACzB,YAAMorC,sBAAsB,KAAKJ,aAAa,CAAA;AAC9C,YAAMzpB,eAAc,KAAKjJ;AACzB,YAAMyQ,OAAO,CAACnQ,IAAGlP,OAAMkP,GAAEtL,OAAOrE,CAAAA,OAAK,CAACS,GAAE2hC,KAAKniC,CAAAA,OAAKD,GAAE2hC,OAAOt/B,OAAOpC,GAAE0hC,OAAOt/B,EAAE,CAAA;AAC7E,WAAKvL,QAAQgpB,KAAKqiB,qBAAqB7pB,YAAAA,GAAcvhB,OAAO,MAAA;AAC5D,WAAKD,QAAQgpB,KAAKxH,cAAa6pB,mBAAAA,GAAsBprC,OAAO,OAAA;IAC9D;EACF;AAKA,WAASkrC,WAAW7kC,QAAQ;AAC1B,UAAMilC,WAAW,CAAA;AACjB,UAAM1pB,WAAU,CAAA;AAChB,UAAMhb,OAAOD,OAAOC,KAAKwhB,SAASxG,QAAQpgB,KAAK;AAC/C,aAASE,KAAI,GAAGA,KAAIkF,KAAKnF,QAAQC,MAAK;AACpCkgB,MAAAA,SAAQlf,KAAK0lB,SAASkhB,UAAU1iC,KAAKlF,EAAE,CAAA,CAAA;IACzC;AAEA,UAAM6pC,QAAQllC,OAAOub,WAAW,CAAA;AAChC,aAASlgB,KAAI,GAAGA,KAAI6pC,MAAM9pC,QAAQC,MAAK;AACrC,YAAMkpC,SAASW,MAAM7pC,EAAE;AAEvB,UAAIkgB,SAAQ/D,QAAQ+sB,MAAAA,MAAY,IAAI;AAClChpB,QAAAA,SAAQlf,KAAKkoC,MAAAA;AACbU,iBAASV,OAAOt/B,EAAE,IAAI;;IAE1B;AAEA,WAAO;MAACsW,SAAAA;MAAS0pB;IAAQ;EAC3B;AAEA,WAASE,QAAQhkC,SAASe,KAAK;AAC7B,QAAI,CAACA,OAAOf,YAAY,OAAO;AAC7B,aAAO;;AAET,QAAIA,YAAY,MAAM;AACpB,aAAO,CAAA;;AAET,WAAOA;EACT;AAEA,WAAS2jC,kBAAkBnrC,OAAO,EAAC4hB,SAAAA,UAAS0pB,SAAQ,GAAG9jC,SAASe,KAAK;AACnE,UAAM8vB,SAAS,CAAA;AACf,UAAMnjB,UAAUlV,MAAMwS,WAAU;AAEhC,eAAWo4B,UAAUhpB,UAAS;AAC5B,YAAMtW,MAAKs/B,OAAOt/B;AAClB,YAAM3C,OAAO6iC,QAAQhkC,QAAQ8D,GAAAA,GAAK/C,GAAAA;AAClC,UAAII,SAAS,MAAM;AACjB;;AAEF0vB,aAAO31B,KAAK;QACVkoC;QACApjC,SAASikC,WAAWzrC,MAAMqG,QAAQ;UAACukC;UAAQW,OAAOD,SAAShgC,GAAG;QAAA,GAAG3C,MAAMuM,OAAAA;MACzE,CAAA;IACF;AAEA,WAAOmjB;EACT;AAEA,WAASoT,WAAWplC,QAAQ,EAACukC,QAAQW,MAAK,GAAG5iC,MAAMuM,SAAS;AAC1D,UAAMtO,OAAOP,OAAOqlC,gBAAgBd,MAAAA;AACpC,UAAMv4B,SAAShM,OAAOiM,gBAAgB3J,MAAM/B,IAAAA;AAC5C,QAAI2kC,SAASX,OAAO/jC,UAAU;AAE5BwL,aAAO3P,KAAKkoC,OAAO/jC,QAAQ;;AAE7B,WAAOR,OAAOkM,eAAeF,QAAQ6C,SAAS;MAAC;OAAK;MAElDy2B,YAAY;MACZC,WAAW;MACXC,SAAS;IACX,CAAA;EACF;AClLO,WAASC,aAAa3rC,MAAMqH,SAAS;AAC1C,UAAMukC,kBAAkBllC,SAASuK,SAASjR,IAAAA,KAAS,CAAA;AACnD,UAAM6rC,kBAAkBxkC,QAAQ4J,YAAY,CAAA,GAAIjR,IAAK,KAAI,CAAA;AACzD,WAAO6rC,eAAen7B,aAAarJ,QAAQqJ,aAAak7B,gBAAgBl7B,aAAa;EACvF;AAEA,WAASo7B,0BAA0B3gC,KAAIuF,WAAW;AAChD,QAAIhE,OAAOvB;AACX,QAAIA,QAAO,WAAW;AACpBuB,aAAOgE;eACEvF,QAAO,WAAW;AAC3BuB,aAAOgE,cAAc,MAAM,MAAM;;AAEnC,WAAOhE;EACT;AAEA,WAASq/B,0BAA0Br/B,MAAMgE,WAAW;AAClD,WAAOhE,SAASgE,YAAY,YAAY;EAC1C;AAEA,WAASs7B,cAAc7gC,KAAI;AACzB,QAAIA,QAAO,OAAOA,QAAO,OAAOA,QAAO,KAAK;AAC1C,aAAOA;;EAEX;AAEA,WAAS8gC,iBAAiBriB,UAAU;AAClC,QAAIA,aAAa,SAASA,aAAa,UAAU;AAC/C,aAAO;;AAET,QAAIA,aAAa,UAAUA,aAAa,SAAS;AAC/C,aAAO;;EAEX;AAEO,WAASsiB,cAAc/gC,QAAOghC,cAAc;AACjD,QAAIH,cAAc7gC,GAAK,GAAA;AACrB,aAAOA;;AAET,eAAW3C,QAAQ2jC,cAAc;AAC/B,YAAMz/B,OAAOlE,KAAKkE,QACbu/B,iBAAiBzjC,KAAKohB,QAAQ,KAC9Bze,IAAG7J,SAAS,KAAK0qC,cAAc7gC,IAAG,CAAA,EAAGihC,YAAW,CAAA;AACrD,UAAI1/B,MAAM;AACR,eAAOA;;IAEX;AACA,UAAM,IAAI0b,MAAM,6BAA6Bjd,GAAG,qDAAoD;EACtG;AAEA,WAASkhC,mBAAmBlhC,KAAIuB,MAAMc,SAAS;AAC7C,QAAIA,QAAQd,OAAO,QAAA,MAAcvB,KAAI;AACnC,aAAO;QAACuB;MAAI;;EAEhB;AAEA,WAAS4/B,yBAAyBnhC,KAAIjF,QAAQ;AAC5C,QAAIA,OAAOwE,QAAQxE,OAAOwE,KAAKuG,UAAU;AACvC,YAAMs7B,UAAUrmC,OAAOwE,KAAKuG,SAAS9D,OAAO,CAACq/B,OAAMA,GAAEp8B,YAAYjF,OAAMqhC,GAAEj8B,YAAYpF,GAAAA;AACrF,UAAIohC,QAAQjrC,QAAQ;AAClB,eAAO+qC,mBAAmBlhC,KAAI,KAAKohC,QAAQ,CAAA,CAAE,KAAKF,mBAAmBlhC,KAAI,KAAKohC,QAAQ,CAAE,CAAA;;;AAG5F,WAAO,CAAA;EACT;AAEA,WAASE,iBAAiBvmC,QAAQmB,SAAS;AACzC,UAAMqlC,gBAAgBzwB,UAAU/V,OAAOlG,IAAI,KAAK;MAACkN,QAAQ,CAAA;IAAE;AAC3D,UAAMy/B,eAAetlC,QAAQ6F,UAAU,CAAA;AACvC,UAAM0/B,iBAAiBjB,aAAazlC,OAAOlG,MAAMqH,OAAAA;AACjD,UAAM6F,UAAS1G,uBAAOygC,OAAO,IAAI;AAGjCzgC,WAAOC,KAAKkmC,YAAAA,EAActsC,QAAQ8K,CAAAA,QAAM;AACtC,YAAM0hC,YAAYF,aAAaxhC,GAAG;AAClC,UAAI,CAAC7E,SAASumC,SAAY,GAAA;AACxB,eAAO/8B,QAAQg9B,MAAM,0CAA0C3hC,GAAAA,EAAI;;AAErE,UAAI0hC,UAAUE,QAAQ;AACpB,eAAOj9B,QAAQC,KAAK,kDAAkD5E,GAAAA,EAAI;;AAE5E,YAAMuB,OAAOw/B,cAAc/gC,KAAI0hC,WAAWP,yBAAyBnhC,KAAIjF,MAASQ,GAAAA,SAASwG,OAAO2/B,UAAU7sC,IAAI,CAAC;AAC/G,YAAMgtC,YAAYjB,0BAA0Br/B,MAAMkgC,cAAAA;AAClD,YAAMK,sBAAsBP,cAAcx/B,UAAU,CAAA;AACpDA,MAAAA,QAAO/B,GAAAA,IAAM+hC,QAAQ1mC,uBAAOygC,OAAO,IAAI,GAAG;QAAC;UAACv6B;QAAI;QAAGmgC;QAAWI,oBAAoBvgC,IAAK;QAAEugC,oBAAoBD,SAAU;MAAC,CAAA;IAC1H,CAAA;AAGA9mC,WAAOwE,KAAKuG,SAAS5Q,QAAQmN,CAAAA,YAAW;AACtC,YAAMxN,OAAOwN,QAAQxN,QAAQkG,OAAOlG;AACpC,YAAM0Q,YAAYlD,QAAQkD,aAAai7B,aAAa3rC,MAAMqH,OAAAA;AAC1D,YAAMukC,kBAAkB3vB,UAAUjc,IAAAA,KAAS,CAAA;AAC3C,YAAMitC,sBAAsBrB,gBAAgB1+B,UAAU,CAAA;AACtD1G,aAAOC,KAAKwmC,mBAAAA,EAAqB5sC,QAAQ8sC,CAAAA,cAAa;AACpD,cAAMzgC,OAAOo/B,0BAA0BqB,WAAWz8B,SAAAA;AAClD,cAAMvF,MAAKqC,QAAQd,OAAO,QAAA,KAAaA;AACvCQ,QAAAA,QAAO/B,GAAG,IAAG+B,QAAO/B,GAAAA,KAAO3E,uBAAOygC,OAAO,IAAI;AAC7CiG,gBAAQhgC,QAAO/B,GAAAA,GAAK;UAAC;YAACuB;UAAI;UAAGigC,aAAaxhC,GAAG;UAAE8hC,oBAAoBE,SAAU;QAAC,CAAA;MAChF,CAAA;IACF,CAAA;AAGA3mC,WAAOC,KAAKyG,OAAAA,EAAQ7M,QAAQyG,CAAAA,QAAO;AACjC,YAAMwB,QAAQ4E,QAAOpG,GAAI;AACzBomC,cAAQ5kC,OAAO;QAAC5B,SAASwG,OAAO5E,MAAMtI,IAAI;QAAG0G,SAAS4B;MAAM,CAAA;IAC9D,CAAA;AAEA,WAAO4E;EACT;AAEA,WAASkgC,YAAYlnC,QAAQ;AAC3B,UAAMmB,UAAUnB,OAAOmB,YAAYnB,OAAOmB,UAAU,CAAA;AAEpDA,YAAQoa,UAAUpR,eAAehJ,QAAQoa,SAAS,CAAA,CAAC;AACnDpa,YAAQ6F,SAASu/B,iBAAiBvmC,QAAQmB,OAAAA;EAC5C;AAEA,WAASgmC,SAAS3iC,MAAM;AACtBA,WAAOA,QAAQ,CAAA;AACfA,SAAKuG,WAAWvG,KAAKuG,YAAY,CAAA;AACjCvG,SAAKsI,SAAStI,KAAKsI,UAAU,CAAA;AAC7B,WAAOtI;EACT;AAEA,WAAS4iC,WAAWpnC,QAAQ;AAC1BA,aAASA,UAAU,CAAA;AACnBA,WAAOwE,OAAO2iC,SAASnnC,OAAOwE,IAAI;AAElC0iC,gBAAYlnC,MAAAA;AAEZ,WAAOA;EACT;AAEA,MAAMqnC,WAAW,oBAAI/tC,IAAAA;AACrB,MAAMguC,aAAa,oBAAIC,IAAAA;AAEvB,WAASC,WAAWv4B,UAAUw4B,UAAU;AACtC,QAAIlnC,OAAO8mC,SAASvrC,IAAImT,QAAAA;AACxB,QAAI,CAAC1O,MAAM;AACTA,aAAOknC,SAAAA;AACPJ,eAASprC,IAAIgT,UAAU1O,IAAAA;AACvB+mC,iBAAWhrC,IAAIiE,IAAAA;;AAEjB,WAAOA;EACT;AAEA,MAAMmnC,aAAa,CAACzrC,MAAKsa,KAAK3V,QAAQ;AACpC,UAAM0B,OAAO6K,iBAAiBoJ,KAAK3V,GAAAA;AACnC,QAAI0B,SAAS7I,QAAW;AACtBwC,MAAAA,KAAIK,IAAIgG,IAAAA;;EAEZ;AAEe,MAAMqlC,SAAN,MAAMA;IACnBxuC,YAAY6G,QAAQ;AAClB,WAAK4nC,UAAUR,WAAWpnC,MAAAA;AAC1B,WAAK6nC,cAAc,oBAAIvuC,IAAAA;AACvB,WAAKwuC,iBAAiB,oBAAIxuC,IAAAA;IAC5B;IAEA,IAAIyuC,WAAW;AACb,aAAO,KAAKH,QAAQG;IACtB;IAEA,IAAIjuC,OAAO;AACT,aAAO,KAAK8tC,QAAQ9tC;IACtB;IAEA,IAAIA,KAAKA,MAAM;AACb,WAAK8tC,QAAQ9tC,OAAOA;IACtB;IAEA,IAAI0K,OAAO;AACT,aAAO,KAAKojC,QAAQpjC;IACtB;IAEA,IAAIA,KAAKA,MAAM;AACb,WAAKojC,QAAQpjC,OAAO2iC,SAAS3iC,IAAAA;IAC/B;IAEA,IAAIrD,UAAU;AACZ,aAAO,KAAKymC,QAAQzmC;IACtB;IAEA,IAAIA,QAAQA,SAAS;AACnB,WAAKymC,QAAQzmC,UAAUA;IACzB;IAEA,IAAIoa,UAAU;AACZ,aAAO,KAAKqsB,QAAQrsB;IACtB;IAEAlc,SAAS;AACP,YAAMW,SAAS,KAAK4nC;AACpB,WAAKI,WAAU;AACfd,kBAAYlnC,MAAAA;IACd;IAEAgoC,aAAa;AACX,WAAKH,YAAYI,MAAK;AACtB,WAAKH,eAAeG,MAAK;IAC3B;IAQAl8B,iBAAiBm8B,aAAa;AAC5B,aAAOV,WAAWU,aAChB,MAAM;QAAC;UACL,YAAYA,WAAAA;UACZ;QACD;MAAC,CAAA;IACN;IASAv4B,0BAA0Bu4B,aAAax4B,aAAY;AACjD,aAAO83B,WAAW,GAAGU,WAAAA,eAA0Bx4B,WAAAA,IAC7C,MAAM;QACJ;UACE,YAAYw4B,WAAAA,gBAA2Bx4B,WAAAA;UACvC,eAAeA,WAAAA;QAChB;QAED;UACE,YAAYw4B,WAAAA;UACZ;QACD;MACF,CAAA;IACL;IAUA94B,wBAAwB84B,aAAan5B,cAAa;AAChD,aAAOy4B,WAAW,GAAGU,WAAAA,IAAen5B,YAAAA,IAClC,MAAM;QAAC;UACL,YAAYm5B,WAAAA,aAAwBn5B,YAAAA;UACpC,YAAYm5B,WAAAA;UACZ,YAAYn5B,YAAAA;UACZ;QACD;MAAC,CAAA;IACN;IAOAs2B,gBAAgBd,QAAQ;AACtB,YAAMt/B,MAAKs/B,OAAOt/B;AAClB,YAAMnL,OAAO,KAAKA;AAClB,aAAO0tC,WAAW,GAAG1tC,IAAAA,WAAemL,GAAAA,IAClC,MAAM;QAAC;UACL,WAAWA,GAAAA;aACRs/B,OAAO4D,0BAA0B,CAAA;QACrC;MAAC,CAAA;IACN;IAKAC,cAAcC,WAAWC,YAAY;AACnC,YAAMT,cAAc,KAAKA;AACzB,UAAI74B,SAAQ64B,YAAY/rC,IAAIusC,SAAAA;AAC5B,UAAI,CAACr5B,UAASs5B,YAAY;AACxBt5B,QAAAA,SAAQ,oBAAI1V,IAAAA;AACZuuC,oBAAY5rC,IAAIosC,WAAWr5B,MAAAA;;AAE7B,aAAOA;IACT;IAQA/C,gBAAgBo8B,WAAWE,UAAUD,YAAY;AAC/C,YAAM,EAACnnC,SAASrH,KAAI,IAAI;AACxB,YAAMkV,SAAQ,KAAKo5B,cAAcC,WAAWC,UAAAA;AAC5C,YAAMvgC,SAASiH,OAAMlT,IAAIysC,QAAAA;AACzB,UAAIxgC,QAAQ;AACV,eAAOA;;AAGT,YAAMiE,SAAS,oBAAIu7B,IAAAA;AAEnBgB,eAASpuC,QAAQoG,CAAAA,SAAQ;AACvB,YAAI8nC,WAAW;AACbr8B,iBAAO1P,IAAI+rC,SAAAA;AACX9nC,eAAKpG,QAAQyG,CAAAA,QAAO8mC,WAAW17B,QAAQq8B,WAAWznC,GAAAA,CAAAA;;AAEpDL,aAAKpG,QAAQyG,CAAAA,QAAO8mC,WAAW17B,QAAQ7K,SAASP,GAAAA,CAAAA;AAChDL,aAAKpG,QAAQyG,CAAAA,QAAO8mC,WAAW17B,QAAQ+J,UAAUjc,IAAAA,KAAS,CAAA,GAAI8G,GAAAA,CAAAA;AAC9DL,aAAKpG,QAAQyG,CAAAA,QAAO8mC,WAAW17B,QAAQxL,UAAUI,GAAAA,CAAAA;AACjDL,aAAKpG,QAAQyG,CAAAA,QAAO8mC,WAAW17B,QAAQkP,aAAata,GAAAA,CAAAA;MACtD,CAAA;AAEA,YAAMolB,QAAQthB,MAAMtH,KAAK4O,MAAAA;AACzB,UAAIga,MAAM5qB,WAAW,GAAG;AACtB4qB,cAAM3pB,KAAKiE,uBAAOygC,OAAO,IAAI,CAAA;;AAE/B,UAAIuG,WAAW/qC,IAAIgsC,QAAW,GAAA;AAC5Bv5B,QAAAA,OAAM/S,IAAIssC,UAAUviB,KAAAA;;AAEtB,aAAOA;IACT;IAMAwiB,oBAAoB;AAClB,YAAM,EAACrnC,SAASrH,KAAI,IAAI;AAExB,aAAO;QACLqH;QACA4U,UAAUjc,IAAK,KAAI,CAAA;QACnB0G,SAASuK,SAASjR,IAAK,KAAI,CAAA;QAC3B;UAACA;QAAI;QACL0G;QACA0a;MACD;IACH;IASA3L,oBAAoBvD,QAAQsD,QAAOT,SAASQ,WAAW;MAAC;OAAK;AAC3D,YAAM2iB,SAAS;QAACzwB,SAAS;MAAI;AAC7B,YAAM,EAACknC,UAAUC,YAAW,IAAIC,YAAY,KAAKb,gBAAgB97B,QAAQqD,QAAAA;AACzE,UAAIlO,UAAUsnC;AACd,UAAIG,YAAYH,UAAUn5B,MAAQ,GAAA;AAChC0iB,eAAOzwB,UAAU;AACjBsN,kBAAUg6B,WAAWh6B,OAAWA,IAAAA,QAAAA,IAAYA;AAE5C,cAAMi6B,cAAc,KAAK58B,eAAeF,QAAQ6C,SAAS65B,WAAAA;AACzDvnC,kBAAU4nC,eAAeN,UAAU55B,SAASi6B,WAAAA;;AAG9C,iBAAW5qC,QAAQoR,QAAO;AACxB0iB,eAAO9zB,IAAAA,IAAQiD,QAAQjD,IAAK;MAC9B;AACA,aAAO8zB;IACT;IAQA9lB,eAAeF,QAAQ6C,SAASQ,WAAW;MAAC;IAAG,GAAE25B,oBAAoB;AACnE,YAAM,EAACP,SAAAA,IAAYE,YAAY,KAAKb,gBAAgB97B,QAAQqD,QAAAA;AAC5D,aAAOjP,SAASyO,OACZk6B,IAAAA,eAAeN,UAAU55B,SAASpV,QAAWuvC,kBAAAA,IAC7CP;IACN;EACF;AAEA,WAASE,YAAYM,eAAej9B,QAAQqD,UAAU;AACpD,QAAIL,SAAQi6B,cAAcntC,IAAIkQ,MAAAA;AAC9B,QAAI,CAACgD,QAAO;AACVA,MAAAA,SAAQ,oBAAI1V,IAAAA;AACZ2vC,oBAAchtC,IAAI+P,QAAQgD,MAAAA;;AAE5B,UAAMC,WAAWI,SAAS8yB,KAAI;AAC9B,QAAIp6B,SAASiH,OAAMlT,IAAImT,QAAAA;AACvB,QAAI,CAAClH,QAAQ;AACX,YAAM0gC,WAAWS,gBAAgBl9B,QAAQqD,QAAAA;AACzCtH,eAAS;QACP0gC;QACAC,aAAar5B,SAASpI,OAAOkiC,CAAAA,OAAK,CAACA,GAAEjD,YAAW,EAAGrf,SAAS,OAAA,CAAA;MAC9D;AACA7X,MAAAA,OAAM/S,IAAIgT,UAAUlH,MAAAA;;AAEtB,WAAOA;EACT;AAEA,MAAMqhC,cAAcvnC,CAAAA,UAASzB,SAASyB,KAAAA,KACjCvB,OAAOK,oBAAoBkB,KAAOmjC,EAAAA,KAAK,CAACpkC,QAAQioC,WAAWhnC,MAAMjB,GAAI,CAAA,CAAA;AAE1E,WAASgoC,YAAYzZ,OAAO7f,QAAO;AACjC,UAAM,EAAC+5B,cAAcC,YAAW,IAAIjF,aAAalV,KAAAA;AAEjD,eAAWjxB,QAAQoR,QAAO;AACxB,YAAMg2B,aAAa+D,aAAanrC,IAAAA;AAChC,YAAMqnC,YAAY+D,YAAYprC,IAAAA;AAC9B,YAAM2D,SAAS0jC,aAAaD,eAAenW,MAAMjxB,IAAK;AACtD,UAAKonC,eAAeuD,WAAWhnC,KAAAA,KAAUunC,YAAYvnC,KAAK,MACpD0jC,aAAazkC,QAAQe,KAAS,GAAA;AAClC,eAAO;;IAEX;AACA,WAAO;EACT;;AC7YA,MAAM0nC,kBAAkB;IAAC;IAAO;IAAU;IAAQ;IAAS;EAAY;AACvE,WAASC,qBAAqB9lB,UAAUld,MAAM;AAC5C,WAAOkd,aAAa,SAASA,aAAa,YAAa6lB,gBAAgB/xB,QAAQkM,QAAAA,MAAc,MAAMld,SAAS;EAC9G;AAEA,WAASijC,cAAcC,IAAIC,IAAI;AAC7B,WAAO,SAASp3B,IAAGlP,IAAG;AACpB,aAAOkP,GAAEm3B,EAAG,MAAKrmC,GAAEqmC,EAAAA,IACfn3B,GAAEo3B,EAAAA,IAAMtmC,GAAEsmC,EAAAA,IACVp3B,GAAEm3B,EAAG,IAAGrmC,GAAEqmC,EAAG;IACnB;EACF;AAEA,WAASE,qBAAqB/6B,SAAS;AACrC,UAAMlV,QAAQkV,QAAQlV;AACtB,UAAM0G,mBAAmB1G,MAAMwH,QAAQV;AAEvC9G,UAAMs+B,cAAc,aAAA;AACpBuM,aAAankC,oBAAoBA,iBAAiBwpC,YAAY;MAACh7B;OAAUlV,KAAAA;EAC3E;AAEA,WAASmwC,oBAAoBj7B,SAAS;AACpC,UAAMlV,QAAQkV,QAAQlV;AACtB,UAAM0G,mBAAmB1G,MAAMwH,QAAQV;AACvC+jC,aAAankC,oBAAoBA,iBAAiB0pC,YAAY;MAACl7B;OAAUlV,KAAAA;EAC3E;AAMA,WAASqwC,UAAUzuC,MAAM;AACvB,QAAIu0B,gBAAAA,KAAqB,OAAOv0B,SAAS,UAAU;AACjDA,aAAOqyB,SAASqc,eAAe1uC,IAAAA;IACjC,WAAWA,QAAQA,KAAKH,QAAQ;AAE9BG,aAAOA,KAAK,CAAE;;AAGhB,QAAIA,QAAQA,KAAKovB,QAAQ;AAEvBpvB,aAAOA,KAAKovB;;AAEd,WAAOpvB;EACT;AAEA,MAAM2uC,YAAY,CAAA;AAClB,MAAMC,WAAW,CAACvpC,QAAQ;AACxB,UAAM+pB,SAASqf,UAAUppC,GAAAA;AACzB,WAAON,OAAOW,OAAOipC,SAAAA,EAAWjjC,OAAO,CAACmjC,OAAMA,GAAEzf,WAAWA,MAAAA,EAAQhvB,IAAG;EACxE;AAEA,WAAS0uC,gBAAgB9zB,KAAK9b,QAAOwW,MAAM;AACzC,UAAM1Q,OAAOD,OAAOC,KAAKgW,GAAAA;AACzB,eAAW3V,OAAOL,MAAM;AACtB,YAAM+pC,SAAS,CAAC1pC;AAChB,UAAI0pC,UAAU7vC,QAAO;AACnB,cAAMoH,QAAQ0U,IAAI3V,GAAI;AACtB,eAAO2V,IAAI3V,GAAI;AACf,YAAIqQ,OAAO,KAAKq5B,SAAS7vC,QAAO;AAC9B8b,cAAI+zB,SAASr5B,IAAAA,IAAQpP;;;IAG3B;EACF;AASA,WAAS0oC,mBAAmBjuB,IAAGkuB,WAAWC,aAAaC,SAAS;AAC9D,QAAI,CAACD,eAAenuB,GAAExiB,SAAS,YAAY;AACzC,aAAO;;AAET,QAAI4wC,SAAS;AACX,aAAOF;;AAET,WAAOluB;EACT;AAEA,WAASquB,eAAevoC,OAAOoM,WAAWo8B,OAAO;AAC/C,WAAOxoC,MAAMjB,QAAQkN,OAAOjM,MAAMwoC,KAAM,IAAGp8B,UAAUo8B,KAAM;EAC7D;AAEA,WAASC,eAAejmC,MAAM4J,WAAW;AACvC,UAAM,EAAC9L,QAAQC,OAAAA,IAAUiC;AACzB,QAAIlC,UAAUC,QAAQ;AACpB,aAAO;QACLM,MAAM0nC,eAAejoC,QAAQ8L,WAAW,MAAA;QACxCzL,OAAO4nC,eAAejoC,QAAQ8L,WAAW,OAAA;QACzC1L,KAAK6nC,eAAehoC,QAAQ6L,WAAW,KAAA;QACvCxL,QAAQ2nC,eAAehoC,QAAQ6L,WAAW,QAAA;MAC5C;;AAEF,WAAOA;EACT;AAEA,MAAMs8B,QAAN,MAAMA;IAEJ,OAAOtqC,WAAWA;IAClB,OAAO0pC,YAAYA;IACnB,OAAOn0B,YAAYA;IACnB,OAAOgM,WAAWA;IAClB,OAAOgpB,UAAUA;IACjB,OAAOZ,WAAWA;IAElB,OAAOjJ,YAAY/lC,OAAO;AACxB4mB,eAASzlB,IAAOnB,GAAAA,KAAAA;AAChB6vC,wBAAAA;IACF;IAEA,OAAOxJ,cAAcrmC,OAAO;AAC1B4mB,eAAShlB,OAAU5B,GAAAA,KAAAA;AACnB6vC,wBAAAA;IACF;IAGA7xC,YAAYoC,MAAM0vC,YAAY;AAC5B,YAAMjrC,SAAS,KAAKA,SAAS,IAAI2nC,OAAOsD,UAAAA;AACxC,YAAMC,gBAAgBlB,UAAUzuC,IAAAA;AAChC,YAAM4vC,gBAAgBhB,SAASe,aAAAA;AAC/B,UAAIC,eAAe;AACjB,cAAM,IAAIjpB,MACR,8CAA+CipB,cAAclmC,KAAK,oDAClBkmC,cAAcxgB,OAAO1lB,KAAK,kBAC1E;;AAGJ,YAAM9D,UAAUnB,OAAOkM,eAAelM,OAAOwoC,kBAAiB,GAAI,KAAKr8B,WAAU,CAAA;AAEjF,WAAK47B,WAAW,KAAK/nC,OAAO+nC,YAAYlY,gBAAgBqb,aAAa,GAAA;AACrE,WAAKnD,SAAS5c,aAAanrB,MAAAA;AAE3B,YAAM6O,UAAU,KAAKk5B,SAASrd,eAAewgB,eAAe/pC,QAAQma,WAAW;AAC/E,YAAMqP,SAAS9b,WAAWA,QAAQ8b;AAClC,YAAM1T,SAAS0T,UAAUA,OAAO1T;AAChC,YAAMC,QAAQyT,UAAUA,OAAOzT;AAE/B,WAAKjS,KAAKmmC,IAAAA;AACV,WAAK3iC,MAAMoG;AACX,WAAK8b,SAASA;AACd,WAAKzT,QAAQA;AACb,WAAKD,SAASA;AACd,WAAKo0B,WAAWlqC;AAIhB,WAAKmqC,eAAe,KAAKhwB;AACzB,WAAKwO,UAAU,CAAA;AACf,WAAKyhB,YAAY,CAAA;AACjB,WAAKllC,UAAU5M;AACf,WAAK8sB,QAAQ,CAAA;AACb,WAAK+H,0BAA0B70B;AAC/B,WAAK+U,YAAY/U;AACjB,WAAK+B,UAAU,CAAA;AACf,WAAKgwC,aAAa/xC;AAClB,WAAKgyC,aAAa,CAAA;AAElB,WAAKC,uBAAuBjyC;AAC5B,WAAKkyC,kBAAkB,CAAA;AACvB,WAAK3kC,SAAS,CAAA;AACd,WAAK4kC,WAAW,IAAI5H,cAAAA;AACpB,WAAKxU,WAAW,CAAA;AAChB,WAAKqc,iBAAiB,CAAA;AACtB,WAAKC,WAAW;AAChB,WAAK97B,sBAAsBvW;AAC3B,WAAK4P,WAAW5P;AAChB,WAAKsyC,YAAYC,SAAS9nC,CAAAA,SAAQ,KAAK7E,OAAO6E,IAAO/C,GAAAA,QAAQ8qC,eAAe,CAAA;AAC5E,WAAKz6B,eAAe,CAAA;AAGpB04B,gBAAU,KAAKjlC,EAAE,IAAI;AAErB,UAAI,CAAC4J,WAAW,CAAC8b,QAAQ;AAKvB/gB,gBAAQg9B,MAAM,mEAAA;AACd;;AAGF5kC,eAAS9F,OAAO,MAAM,YAAY0tC,oBAAAA;AAClC5nC,eAAS9F,OAAO,MAAM,YAAY4tC,mBAAAA;AAElC,WAAKoC,YAAW;AAChB,UAAI,KAAKJ,UAAU;AACjB,aAAKzsC,OAAM;;IAEf;IAEA,IAAIic,cAAc;AAChB,YAAM,EAACna,SAAS,EAACma,aAAa6wB,oBAAAA,GAAsBj1B,OAAOD,QAAQq0B,aAAY,IAAI;AACnF,UAAI,CAACh4B,cAAcgI,WAAc,GAAA;AAE/B,eAAOA;;AAGT,UAAI6wB,uBAAuBb,cAAc;AAEvC,eAAOA;;AAIT,aAAOr0B,SAASC,QAAQD,SAAS;IACnC;IAEA,IAAIzS,OAAO;AACT,aAAO,KAAKxE,OAAOwE;IACrB;IAEA,IAAIA,KAAKA,MAAM;AACb,WAAKxE,OAAOwE,OAAOA;IACrB;IAEA,IAAIrD,UAAU;AACZ,aAAO,KAAKkqC;IACd;IAEA,IAAIlqC,QAAQA,SAAS;AACnB,WAAKnB,OAAOmB,UAAUA;IACxB;IAEA,IAAI4gB,WAAW;AACb,aAAOA;IACT;IAKAmqB,cAAc;AAEZ,WAAKjU,cAAc,YAAA;AAEnB,UAAI,KAAK92B,QAAQirC,YAAY;AAC3B,aAAK/d,OAAM;aACN;AACLge,oBAAY,MAAM,KAAKlrC,QAAQitB,gBAAgB;;AAGjD,WAAKke,WAAU;AAGf,WAAKrU,cAAc,WAAA;AAEnB,aAAO;IACT;IAEAgQ,QAAQ;AACNsE,kBAAY,KAAK5hB,QAAQ,KAAKliB,GAAG;AACjC,aAAO;IACT;IAEA5L,OAAO;AACLmF,eAASnF,KAAK,IAAI;AAClB,aAAO;IACT;IAOAwxB,OAAOnX,OAAOD,QAAQ;AACpB,UAAI,CAACjV,SAAS9G,QAAQ,IAAI,GAAG;AAC3B,aAAKsxC,QAAQt1B,OAAOD,MAAAA;aACf;AACL,aAAKw1B,oBAAoB;UAACv1B;UAAOD;QAAM;;IAE3C;IAEAu1B,QAAQt1B,OAAOD,QAAQ;AACrB,YAAM9V,UAAU,KAAKA;AACrB,YAAMwpB,SAAS,KAAKA;AACpB,YAAMrP,cAAcna,QAAQgrC,uBAAuB,KAAK7wB;AACxD,YAAMoxB,UAAU,KAAK3E,SAAS9c,eAAeN,QAAQzT,OAAOD,QAAQqE,WAAAA;AACpE,YAAMqxB,WAAWxrC,QAAQitB,oBAAoB,KAAK2Z,SAAS/c,oBAAmB;AAC9E,YAAM9mB,OAAO,KAAKgT,QAAQ,WAAW;AAErC,WAAKA,QAAQw1B,QAAQx1B;AACrB,WAAKD,SAASy1B,QAAQz1B;AACtB,WAAKq0B,eAAe,KAAKhwB;AACzB,UAAI,CAAC+wB,YAAY,MAAMM,UAAU,IAAI,GAAG;AACtC;;AAGF,WAAK1U,cAAc,UAAU;QAACn2B,MAAM4qC;MAAO,CAAA;AAE3ClI,eAAarjC,QAAQyrC,UAAU;QAAC;QAAMF;MAAQ,GAAE,IAAI;AAEpD,UAAI,KAAKZ,UAAU;AACjB,YAAI,KAAKC,UAAU7nC,IAAO,GAAA;AAExB,eAAK2oC,OAAM;;;IAGjB;IAEAC,sBAAsB;AACpB,YAAM3rC,UAAU,KAAKA;AACrB,YAAM4rC,gBAAgB5rC,QAAQ6F,UAAU,CAAA;AAExCsjB,WAAKyiB,eAAe,CAACC,aAAatM,WAAW;AAC3CsM,oBAAY/nC,KAAKy7B;MACnB,CAAA;IACF;IAKAuM,sBAAsB;AACpB,YAAM9rC,UAAU,KAAKA;AACrB,YAAM+rC,YAAY/rC,QAAQ6F;AAC1B,YAAMA,UAAS,KAAKA;AACpB,YAAMmmC,UAAU7sC,OAAOC,KAAKyG,OAAAA,EAAQxK,OAAO,CAAC+Z,KAAKtR,QAAO;AACtDsR,YAAItR,GAAG,IAAG;AACV,eAAOsR;MACT,GAAG,CAAA,CAAC;AACJ,UAAIpb,QAAQ,CAAA;AAEZ,UAAI+xC,WAAW;AACb/xC,gBAAQA,MAAMiX,OACZ9R,OAAOC,KAAK2sC,SAAWvxB,EAAAA,IAAI,CAAC1W,QAAO;AACjC,gBAAMghC,eAAeiH,UAAUjoC,GAAG;AAClC,gBAAMuB,OAAOw/B,cAAc/gC,KAAIghC,YAAAA;AAC/B,gBAAMmH,WAAW5mC,SAAS;AAC1B,gBAAMmO,eAAenO,SAAS;AAC9B,iBAAO;YACLrF,SAAS8kC;YACToH,WAAWD,WAAW,cAAcz4B,eAAe,WAAW;YAC9D24B,OAAOF,WAAW,iBAAiBz4B,eAAe,aAAa;UACjE;QACF,CAAA,CAAA;;AAIJ2V,WAAKnvB,OAAO,CAACI,SAAS;AACpB,cAAM0qC,eAAe1qC,KAAK4F;AAC1B,cAAM8D,MAAKghC,aAAahhC;AACxB,cAAMuB,OAAOw/B,cAAc/gC,KAAIghC,YAAAA;AAC/B,cAAMsH,YAAYpjC,eAAe87B,aAAansC,MAAMyB,KAAK+xC,KAAK;AAE9D,YAAIrH,aAAaviB,aAAajqB,UAAa+vC,qBAAqBvD,aAAaviB,UAAUld,IAAUgjC,MAAAA,qBAAqBjuC,KAAK8xC,SAAS,GAAG;AACrIpH,uBAAaviB,WAAWnoB,KAAK8xC;;AAG/BF,gBAAQloC,GAAG,IAAG;AACd,YAAI7C,QAAQ;AACZ,YAAI6C,OAAM+B,WAAUA,QAAO/B,GAAAA,EAAInL,SAASyzC,WAAW;AACjDnrC,kBAAQ4E,QAAO/B,GAAG;eACb;AACL,gBAAMuoC,aAAazrB,SAASmhB,SAASqK,SAAAA;AACrCnrC,kBAAQ,IAAIorC,WAAW;YACrBvoC,IAAAA;YACAnL,MAAMyzC;YACN9kC,KAAK,KAAKA;YACV9O,OAAO;UACT,CAAA;AACAqN,UAAAA,QAAO5E,MAAM6C,EAAE,IAAI7C;;AAGrBA,cAAMmgB,KAAK0jB,cAAc9kC,OAAAA;MAC3B,CAAA;AAEAmpB,WAAK6iB,SAAS,CAACM,YAAYxoC,QAAO;AAChC,YAAI,CAACwoC,YAAY;AACf,iBAAOzmC,QAAO/B,GAAG;;MAErB,CAAA;AAEAqlB,WAAKtjB,SAAQ,CAAC5E,UAAU;AACtBukB,gBAAQxmB,UAAU,MAAMiC,OAAOA,MAAMjB,OAAO;AAC5CwlB,gBAAQkD,OAAO,MAAMznB,KAAAA;MACvB,CAAA;IACF;IAKAsrC,kBAAkB;AAChB,YAAMhqC,WAAW,KAAK6nC;AACtB,YAAMz6B,UAAU,KAAKtM,KAAKuG,SAAS3P;AACnC,YAAMyV,UAAUnN,SAAStI;AAEzBsI,eAAS4O,KAAK,CAACC,IAAGlP,OAAMkP,GAAE1O,QAAQR,GAAEQ,KAAK;AACzC,UAAIgN,UAAUC,SAAS;AACrB,iBAASzV,KAAIyV,SAASzV,KAAIwV,SAAS,EAAExV,IAAG;AACtC,eAAKsyC,oBAAoBtyC,EAAAA;QAC3B;AACAqI,iBAAS2N,OAAOP,SAASD,UAAUC,OAAAA;;AAErC,WAAK66B,kBAAkBjoC,SAASkqC,MAAM,CAAGt7B,EAAAA,KAAKm3B,cAAc,SAAS,OAAA,CAAA;IACvE;IAKAoE,8BAA8B;AAC5B,YAAM,EAACtC,WAAW7nC,UAAUc,MAAM,EAACuG,SAAAA,EAAS,IAAI;AAChD,UAAIrH,SAAStI,SAAS2P,SAAS3P,QAAQ;AACrC,eAAO,KAAKiL;;AAEd3C,eAASvJ,QAAQ,CAACyK,MAAMf,WAAU;AAChC,YAAIkH,SAAS9D,OAAOrE,CAAAA,OAAKA,OAAMgC,KAAKua,QAAQ,EAAE/jB,WAAW,GAAG;AAC1D,eAAKuyC,oBAAoB9pC,MAAAA;;MAE7B,CAAA;IACF;IAEAiqC,2BAA2B;AACzB,YAAMC,iBAAiB,CAAA;AACvB,YAAMhjC,WAAW,KAAKvG,KAAKuG;AAC3B,UAAI1P,IAAGuI;AAEP,WAAKiqC,4BAA2B;AAEhC,WAAKxyC,KAAI,GAAGuI,OAAOmH,SAAS3P,QAAQC,KAAIuI,MAAMvI,MAAK;AACjD,cAAMiM,UAAUyD,SAAS1P,EAAE;AAC3B,YAAIuJ,OAAO,KAAKoG,eAAe3P,EAAAA;AAC/B,cAAMvB,OAAOwN,QAAQxN,QAAQ,KAAKkG,OAAOlG;AAEzC,YAAI8K,KAAK9K,QAAQ8K,KAAK9K,SAASA,MAAM;AACnC,eAAK6zC,oBAAoBtyC,EAAAA;AACzBuJ,iBAAO,KAAKoG,eAAe3P,EAAAA;;AAE7BuJ,aAAK9K,OAAOA;AACZ8K,aAAK4F,YAAYlD,QAAQkD,aAAai7B,aAAa3rC,MAAM,KAAKqH,OAAO;AACrEyD,aAAKopC,QAAQ1mC,QAAQ0mC,SAAS;AAC9BppC,aAAKf,QAAQxI;AACbuJ,aAAKsJ,QAAQ,KAAK5G,QAAQ4G;AAC1BtJ,aAAKqpC,UAAU,KAAKjxB,iBAAiB3hB,EAAAA;AAErC,YAAIuJ,KAAKsB,YAAY;AACnBtB,eAAKsB,WAAW4D,YAAYzO,EAAAA;AAC5BuJ,eAAKsB,WAAWsD,WAAU;eACrB;AACL,gBAAM0kC,kBAAkBnsB,SAASghB,cAAcjpC,IAAAA;AAC/C,gBAAM,EAACwO,oBAAoBC,gBAAAA,IAAmB/H,SAASuK,SAASjR,IAAK;AACrEwG,iBAAOyB,OAAOmsC,iBAAiB;YAC7B3lC,iBAAiBwZ,SAASC,WAAWzZ,eAAAA;YACrCD,oBAAoBA,sBAAsByZ,SAASC,WAAW1Z,kBAAAA;UAChE,CAAA;AACA1D,eAAKsB,aAAa,IAAIgoC,gBAAgB,MAAM7yC,EAAAA;AAC5C0yC,yBAAe1xC,KAAKuI,KAAKsB,UAAU;;MAEvC;AAEA,WAAKwnC,gBAAe;AACpB,aAAOK;IACT;IAMAI,iBAAiB;AACf7jB,WAAK,KAAK9lB,KAAKuG,UAAU,CAACzD,SAASnD,iBAAiB;AAClD,aAAK6G,eAAe7G,YAAc+B,EAAAA,WAAWiF,MAAK;MACpD,GAAG,IAAI;IACT;IAKAA,QAAQ;AACN,WAAKgjC,eAAc;AACnB,WAAKlW,cAAc,OAAA;IACrB;IAEA54B,OAAO6E,MAAM;AACX,YAAMlE,SAAS,KAAKA;AAEpBA,aAAOX,OAAM;AACb,YAAM8B,UAAU,KAAKkqC,WAAWrrC,OAAOkM,eAAelM,OAAOwoC,kBAAiB,GAAI,KAAKr8B,WAAU,CAAA;AACjG,YAAMiiC,gBAAgB,KAAKp+B,sBAAsB,CAAC7O,QAAQV;AAE1D,WAAK4tC,cAAa;AAClB,WAAKC,oBAAmB;AACxB,WAAKC,qBAAoB;AAIzB,WAAK3C,SAASlH,WAAU;AAExB,UAAI,KAAKzM,cAAc,gBAAgB;QAAC/zB;QAAMugC,YAAY;MAAI,CAAA,MAAO,OAAO;AAC1E;;AAIF,YAAMsJ,iBAAiB,KAAKD,yBAAwB;AAEpD,WAAK7V,cAAc,sBAAA;AAGnB,UAAI/N,aAAa;AACjB,eAAS7uB,KAAI,GAAGuI,OAAO,KAAKY,KAAKuG,SAAS3P,QAAQC,KAAIuI,MAAMvI,MAAK;AAC/D,cAAM,EAAC6K,WAAU,IAAI,KAAK8E,eAAe3P,EAAAA;AACzC,cAAM8P,QAAQ,CAACijC,iBAAiBL,eAAev2B,QAAQtR,UAAAA,MAAgB;AAGvEA,mBAAWuF,sBAAsBN,KAAAA;AACjC+e,qBAAa3vB,KAAKoC,IAAI,CAACuJ,WAAW8H,eAAc,GAAIkc,UAAAA;MACtD;AACAA,mBAAa,KAAKskB,cAAcrtC,QAAQimB,OAAOqnB,cAAcvkB,aAAa;AAC1E,WAAKwkB,cAAcxkB,UAAAA;AAGnB,UAAI,CAACkkB,eAAe;AAGlB9jB,aAAKyjB,gBAAgB,CAAC7nC,eAAe;AACnCA,qBAAWiF,MAAK;QAClB,CAAA;;AAGF,WAAKwjC,gBAAgBzqC,IAAAA;AAGrB,WAAK+zB,cAAc,eAAe;QAAC/zB;MAAI,CAAA;AAEvC,WAAK4lB,QAAQxX,KAAKm3B,cAAc,KAAK,MAAA,CAAA;AAGrC,YAAM,EAACjuC,SAASgwC,WAAU,IAAI;AAC9B,UAAIA,YAAY;AACd,aAAKoD,cAAcpD,YAAY,IAAI;iBAC1BhwC,QAAQJ,QAAQ;AACzB,aAAKyzC,mBAAmBrzC,SAASA,SAAS,IAAI;;AAGhD,WAAKqxC,OAAM;IACb;IAKAwB,gBAAgB;AACd/jB,WAAK,KAAKtjB,QAAQ,CAAC5E,UAAU;AAC3BukB,gBAAQqD,UAAU,MAAM5nB,KAAAA;MAC1B,CAAA;AAEA,WAAK0qC,oBAAmB;AACxB,WAAKG,oBAAmB;IAC1B;IAKAqB,sBAAsB;AACpB,YAAMntC,UAAU,KAAKA;AACrB,YAAM2tC,iBAAiB,IAAIvH,IAAIjnC,OAAOC,KAAK,KAAKkrC,UAAU,CAAA;AAC1D,YAAMsD,YAAY,IAAIxH,IAAIpmC,QAAQ6tC,MAAM;AAExC,UAAI,CAACC,UAAUH,gBAAgBC,SAAAA,KAAc,CAAC,CAAC,KAAKrD,yBAAyBvqC,QAAQirC,YAAY;AAE/F,aAAK8C,aAAY;AACjB,aAAK5C,WAAU;;IAEnB;IAKAiC,uBAAuB;AACrB,YAAM,EAAC1C,eAAAA,IAAkB;AACzB,YAAMsD,UAAU,KAAKC,uBAAsB,KAAM,CAAA;AACjD,iBAAW,EAACtvC,QAAQrF,OAAAA,QAAO6R,MAAAA,KAAU6iC,SAAS;AAC5C,cAAMl+B,OAAOnR,WAAW,oBAAoB,CAACwM,QAAQA;AACrD+9B,wBAAgBwB,gBAAgBpxC,QAAOwW,IAAAA;MACzC;IACF;IAKAm+B,yBAAyB;AACvB,YAAM59B,eAAe,KAAKA;AAC1B,UAAI,CAACA,gBAAgB,CAACA,aAAapW,QAAQ;AACzC;;AAGF,WAAKoW,eAAe,CAAA;AACpB,YAAM69B,eAAe,KAAK7qC,KAAKuG,SAAS3P;AACxC,YAAMk0C,UAAU,CAACpU,QAAQ,IAAIqM,IAC3B/1B,aACGvK,OAAOmjC,CAAAA,OAAKA,GAAE,CAAA,MAAOlP,GAAAA,EACrBvf,IAAI,CAACyuB,IAAG/uC,OAAMA,KAAI,MAAM+uC,GAAE/4B,OAAO,CAAG8wB,EAAAA,KAAK,GAAA,CAAA,CAAA;AAG9C,YAAMoN,YAAYD,QAAQ,CAAA;AAC1B,eAASj0C,KAAI,GAAGA,KAAIg0C,cAAch0C,MAAK;AACrC,YAAI,CAAC4zC,UAAUM,WAAWD,QAAQj0C,EAAK,CAAA,GAAA;AACrC;;MAEJ;AACA,aAAOqJ,MAAMtH,KAAKmyC,SACf5zB,EAAAA,IAAIyuB,CAAAA,OAAKA,GAAEpI,MAAM,GACjBrmB,CAAAA,EAAAA,IAAIpJ,CAAAA,QAAM;QAACzS,QAAQyS,GAAE,CAAE;QAAE9X,OAAO,CAAC8X,GAAE,CAAE;QAAEjG,OAAO,CAACiG,GAAE,CAAE;QAAA;IACxD;IAOAm8B,cAAcxkB,YAAY;AACxB,UAAI,KAAK+N,cAAc,gBAAgB;QAACwM,YAAY;MAAI,CAAA,MAAO,OAAO;AACpE;;AAGF9d,cAAQtnB,OAAO,MAAM,KAAK6X,OAAO,KAAKD,QAAQiT,UAAAA;AAE9C,YAAM3b,OAAO,KAAKC;AAClB,YAAMghC,SAASjhC,KAAK2I,SAAS,KAAK3I,KAAK0I,UAAU;AAEjD,WAAK6S,UAAU,CAAA;AACfQ,WAAK,KAAK/D,OAAO,CAACJ,QAAQ;AACxB,YAAIqpB,UAAUrpB,IAAIzC,aAAa,aAAa;AAE1C;;AAKF,YAAIyC,IAAIhmB,WAAW;AACjBgmB,cAAIhmB,UAAS;;AAEf,aAAK2pB,QAAQztB,KAAI,GAAI8pB,IAAI2D,QAAO,CAAA;MAClC,GAAG,IAAI;AAEP,WAAKA,QAAQ3vB,QAAQ,CAACoB,MAAMsI,WAAU;AACpCtI,aAAKk0C,OAAO5rC;MACd,CAAA;AAEA,WAAKo0B,cAAc,aAAA;IACrB;IAOA0W,gBAAgBzqC,MAAM;AACpB,UAAI,KAAK+zB,cAAc,wBAAwB;QAAC/zB;QAAMugC,YAAY;MAAI,CAAA,MAAO,OAAO;AAClF;;AAGF,eAASppC,KAAI,GAAGuI,OAAO,KAAKY,KAAKuG,SAAS3P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/D,aAAK2P,eAAe3P,EAAG6K,EAAAA,WAAW/F,UAAS;MAC7C;AAEA,eAAS9E,KAAI,GAAGuI,OAAO,KAAKY,KAAKuG,SAAS3P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/D,aAAKq0C,eAAer0C,IAAGwtC,WAAW3kC,IAAAA,IAAQA,KAAK;UAACC,cAAc9I;QAAC,CAAA,IAAK6I,IAAI;MAC1E;AAEA,WAAK+zB,cAAc,uBAAuB;QAAC/zB;MAAI,CAAA;IACjD;IAOAwrC,eAAe7rC,QAAOK,MAAM;AAC1B,YAAMU,OAAO,KAAKoG,eAAenH,MAAAA;AACjC,YAAM0N,OAAO;QAAC3M;QAAMf,OAAAA;QAAOK;QAAMugC,YAAY;MAAI;AAEjD,UAAI,KAAKxM,cAAc,uBAAuB1mB,IAAAA,MAAU,OAAO;AAC7D;;AAGF3M,WAAKsB,WAAWpL,QAAQoJ,IAAAA;AAExBqN,WAAKkzB,aAAa;AAClB,WAAKxM,cAAc,sBAAsB1mB,IAAAA;IAC3C;IAEAs7B,SAAS;AACP,UAAI,KAAK5U,cAAc,gBAAgB;QAACwM,YAAY;MAAI,CAAA,MAAO,OAAO;AACpE;;AAGF,UAAIziC,SAASzF,IAAI,IAAI,GAAG;AACtB,YAAI,KAAKuvC,YAAY,CAAC9pC,SAAS9G,QAAQ,IAAI,GAAG;AAC5C8G,mBAASvH,MAAM,IAAI;;aAEhB;AACL,aAAKa,KAAI;AACTsuC,6BAAqB;UAACjwC,OAAO;QAAI,CAAA;;IAErC;IAEA2B,OAAO;AACL,UAAID;AACJ,UAAI,KAAKoxC,mBAAmB;AAC1B,cAAM,EAACv1B,OAAOD,OAAAA,IAAU,KAAKw1B;AAC7B,aAAKD,QAAQt1B,OAAOD,MAAAA;AACpB,aAAKw1B,oBAAoB;;AAE3B,WAAKxE,MAAK;AAEV,UAAI,KAAK/wB,SAAS,KAAK,KAAKD,UAAU,GAAG;AACvC;;AAGF,UAAI,KAAKghB,cAAc,cAAc;QAACwM,YAAY;MAAI,CAAA,MAAO,OAAO;AAClE;;AAMF,YAAMkL,SAAS,KAAK7lB;AACpB,WAAKzuB,KAAI,GAAGA,KAAIs0C,OAAOv0C,UAAUu0C,OAAOt0C,EAAAA,EAAG0uB,KAAK,GAAG,EAAE1uB,IAAG;AACtDs0C,eAAOt0C,EAAE,EAACC,KAAK,KAAKkT,SAAS;MAC/B;AAEA,WAAKohC,cAAa;AAGlB,aAAOv0C,KAAIs0C,OAAOv0C,QAAQ,EAAEC,IAAG;AAC7Bs0C,eAAOt0C,EAAE,EAACC,KAAK,KAAKkT,SAAS;MAC/B;AAEA,WAAKypB,cAAc,WAAA;IACrB;IAKAt0B,uBAAuBF,eAAe;AACpC,YAAMC,WAAW,KAAKioC;AACtB,YAAM3Z,SAAS,CAAA;AACf,UAAI32B,IAAGuI;AAEP,WAAKvI,KAAI,GAAGuI,OAAOF,SAAStI,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAMuJ,OAAOlB,SAASrI,EAAE;AACxB,YAAI,CAACoI,iBAAiBmB,KAAKqpC,SAAS;AAClCjc,iBAAO31B,KAAKuI,IAAAA;;MAEhB;AAEA,aAAOotB;IACT;IAMApO,+BAA+B;AAC7B,aAAO,KAAKjgB,uBAAuB,IAAI;IACzC;IAOAisC,gBAAgB;AACd,UAAI,KAAK3X,cAAc,sBAAsB;QAACwM,YAAY;MAAI,CAAA,MAAO,OAAO;AAC1E;;AAGF,YAAM/gC,WAAW,KAAKkgB,6BAA4B;AAClD,eAASvoB,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,aAAKw0C,aAAansC,SAASrI,EAAE,CAAA;MAC/B;AAEA,WAAK48B,cAAc,mBAAA;IACrB;IAOA4X,aAAajrC,MAAM;AACjB,YAAM6D,MAAM,KAAKA;AACjB,YAAM4F,OAAOzJ,KAAKwJ;AAClB,YAAM0hC,UAAU,CAACzhC,KAAK9K;AACtB,YAAMgL,OAAOs8B,eAAejmC,MAAM,KAAK4J,SAAS;AAChD,YAAM+C,OAAO;QACX3M;QACAf,OAAOe,KAAKf;QACZ4gC,YAAY;MACd;AAEA,UAAI,KAAKxM,cAAc,qBAAqB1mB,IAAAA,MAAU,OAAO;AAC3D;;AAGF,UAAIu+B,SAAS;AACX5P,iBAASz3B,KAAK;UACZxF,MAAMoL,KAAKpL,SAAS,QAAQ,IAAIsL,KAAKtL,OAAOoL,KAAKpL;UACjDF,OAAOsL,KAAKtL,UAAU,QAAQ,KAAKmU,QAAQ3I,KAAKxL,QAAQsL,KAAKtL;UAC7DD,KAAKuL,KAAKvL,QAAQ,QAAQ,IAAIyL,KAAKzL,MAAMuL,KAAKvL;UAC9CE,QAAQqL,KAAKrL,WAAW,QAAQ,KAAKiU,SAAS1I,KAAKvL,SAASqL,KAAKrL;QACnE,CAAA;;AAGF4B,WAAKsB,WAAW5K,KAAI;AAEpB,UAAIw0C,SAAS;AACXzP,mBAAW53B,GAAAA;;AAGb8I,WAAKkzB,aAAa;AAClB,WAAKxM,cAAc,oBAAoB1mB,IAAAA;IACzC;IAOAmT,cAAc3L,OAAO;AACnB,aAAO6L,eAAe7L,OAAO,KAAKvK,WAAW,KAAKggC,WAAW;IAC/D;IAEAuB,0BAA0BzzB,IAAGpY,MAAM/C,SAASqjB,kBAAkB;AAC5D,YAAM1kB,SAASkwC,YAAYrqB,MAAMzhB,IAAK;AACtC,UAAI,OAAOpE,WAAW,YAAY;AAChC,eAAOA,OAAO,MAAMwc,IAAGnb,SAASqjB,gBAAAA;;AAGlC,aAAO,CAAA;IACT;IAEAxZ,eAAe7G,cAAc;AAC3B,YAAMmD,UAAU,KAAK9C,KAAKuG,SAAS5G,YAAa;AAChD,YAAMT,WAAW,KAAK6nC;AACtB,UAAI3mC,OAAOlB,SAASuD,OAAOrE,CAAAA,OAAKA,MAAKA,GAAEuc,aAAa7X,OAAAA,EAAS3L,IAAG;AAEhE,UAAI,CAACiJ,MAAM;AACTA,eAAO;UACL9K,MAAM;UACN0K,MAAM,CAAA;UACN8C,SAAS;UACTpB,YAAY;UACZiC,QAAQ;UACR+B,SAAS;UACTG,SAAS;UACT2jC,OAAO1mC,WAAWA,QAAQ0mC,SAAS;UACnCnqC,OAAOM;UACPgb,UAAU7X;UACVM,SAAS,CAAA;UACT4E,SAAS;QACX;AACA9I,iBAASrH,KAAKuI,IAAAA;;AAGhB,aAAOA;IACT;IAEAuH,aAAa;AACX,aAAO,KAAK9C,aAAa,KAAKA,WAAWhC,cAAc,MAAM;QAAC1N,OAAO;QAAMG,MAAM;OAAQ;IAC3F;IAEAinB,yBAAyB;AACvB,aAAO,KAAK6C,6BAA4B,EAAGxoB;IAC7C;IAEA4hB,iBAAiB7Y,cAAc;AAC7B,YAAMmD,UAAU,KAAK9C,KAAKuG,SAAS5G,YAAa;AAChD,UAAI,CAACmD,SAAS;AACZ,eAAO;;AAGT,YAAM1C,OAAO,KAAKoG,eAAe7G,YAAAA;AAIjC,aAAO,OAAOS,KAAKuD,WAAW,YAAY,CAACvD,KAAKuD,SAAS,CAACb,QAAQa;IACpE;IAEA8nC,qBAAqB9rC,cAAc8pC,SAAS;AAC1C,YAAMrpC,OAAO,KAAKoG,eAAe7G,YAAAA;AACjCS,WAAKuD,SAAS,CAAC8lC;IACjB;IAEAzxB,qBAAqB3Y,QAAO;AAC1B,WAAKgoC,eAAehoC,MAAM,IAAG,CAAC,KAAKgoC,eAAehoC,MAAM;IAC1D;IAEAoU,kBAAkBpU,QAAO;AACvB,aAAO,CAAC,KAAKgoC,eAAehoC,MAAM;IACpC;IAKAqsC,kBAAkB/rC,cAAcsD,WAAWwmC,SAAS;AAClD,YAAM/pC,OAAO+pC,UAAU,SAAS;AAChC,YAAMrpC,OAAO,KAAKoG,eAAe7G,YAAAA;AACjC,YAAMvK,QAAQgL,KAAKsB,WAAWuJ,mBAAmBhW,QAAWyK,IAAAA;AAE5D,UAAIiL,QAAQ1H,SAAY,GAAA;AACtB7C,aAAKJ,KAAKiD,SAAAA,EAAWU,SAAS,CAAC8lC;AAC/B,aAAK5uC,OAAM;aACN;AACL,aAAK4wC,qBAAqB9rC,cAAc8pC,OAAAA;AAExCr0C,cAAMyF,OAAOuF,MAAM;UAACqpC;QAAO,CAAA;AAC3B,aAAK5uC,OAAO,CAACoJ,QAAQA,IAAItE,iBAAiBA,eAAeD,OAAOzK,MAAS;;IAE7E;IAEA02C,KAAKhsC,cAAcsD,WAAW;AAC5B,WAAKyoC,kBAAkB/rC,cAAcsD,WAAW,KAAK;IACvD;IAEA2oC,KAAKjsC,cAAcsD,WAAW;AAC5B,WAAKyoC,kBAAkB/rC,cAAcsD,WAAW,IAAI;IACtD;IAKAkmC,oBAAoBxpC,cAAc;AAChC,YAAMS,OAAO,KAAK2mC,UAAUpnC,YAAa;AACzC,UAAIS,QAAQA,KAAKsB,YAAY;AAC3BtB,aAAKsB,WAAWkF,SAAQ;;AAE1B,aAAO,KAAKmgC,UAAUpnC,YAAa;IACrC;IAEAksC,QAAQ;AACN,UAAIh1C,IAAGuI;AACP,WAAK/G,KAAI;AACTmF,eAASjF,OAAO,IAAI;AAEpB,WAAK1B,KAAI,GAAGuI,OAAO,KAAKY,KAAKuG,SAAS3P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC3D,aAAKsyC,oBAAoBtyC,EAAAA;MAC3B;IACF;IAEAi1C,UAAU;AACR,WAAKrY,cAAc,eAAA;AACnB,YAAM,EAACtN,QAAQliB,IAAG,IAAI;AAEtB,WAAK4nC,MAAK;AACV,WAAKrwC,OAAOgoC,WAAU;AAEtB,UAAIrd,QAAQ;AACV,aAAKukB,aAAY;AACjB3C,oBAAY5hB,QAAQliB,GAAAA;AACpB,aAAKs/B,SAASnd,eAAeniB,GAAAA;AAC7B,aAAKkiB,SAAS;AACd,aAAKliB,MAAM;;AAGb,aAAOyhC,UAAU,KAAKjlC,EAAE;AAExB,WAAKgzB,cAAc,cAAA;IACrB;IAEAsY,iBAAiBh/B,MAAM;AACrB,aAAO,KAAKoZ,OAAO6lB,UAAaj/B,GAAAA,IAAAA;IAClC;IAKA+6B,aAAa;AACX,WAAKmE,eAAc;AACnB,UAAI,KAAKtvC,QAAQirC,YAAY;AAC3B,aAAKsE,qBAAoB;aACpB;AACL,aAAK5E,WAAW;;IAEpB;IAKA2E,iBAAiB;AACf,YAAMz2C,YAAY,KAAKyxC;AACvB,YAAM1D,WAAW,KAAKA;AAEtB,YAAM4I,OAAO,CAAC72C,MAAMgxB,cAAa;AAC/Bid,iBAASld,iBAAiB,MAAM/wB,MAAMgxB,SAAAA;AACtC9wB,kBAAUF,IAAAA,IAAQgxB;MACpB;AAEA,YAAMA,WAAW,CAACxO,IAAG1Z,IAAGC,OAAM;AAC5ByZ,QAAAA,GAAE7C,UAAU7W;AACZ0Z,QAAAA,GAAE5C,UAAU7W;AACZ,aAAK+rC,cAActyB,EAAAA;MACrB;AAEAgO,WAAK,KAAKnpB,QAAQ6tC,QAAQ,CAACl1C,SAAS62C,KAAK72C,MAAMgxB,QAAAA,CAAAA;IACjD;IAKA4lB,uBAAuB;AACrB,UAAI,CAAC,KAAKhF,sBAAsB;AAC9B,aAAKA,uBAAuB,CAAA;;AAE9B,YAAM1xC,YAAY,KAAK0xC;AACvB,YAAM3D,WAAW,KAAKA;AAEtB,YAAM4I,OAAO,CAAC72C,MAAMgxB,cAAa;AAC/Bid,iBAASld,iBAAiB,MAAM/wB,MAAMgxB,SAAAA;AACtC9wB,kBAAUF,IAAAA,IAAQgxB;MACpB;AACA,YAAM8lB,UAAU,CAAC92C,MAAMgxB,cAAa;AAClC,YAAI9wB,UAAUF,IAAAA,GAAO;AACnBiuC,mBAAShd,oBAAoB,MAAMjxB,MAAMgxB,SAAAA;AACzC,iBAAO9wB,UAAUF,IAAK;;MAE1B;AAEA,YAAMgxB,WAAW,CAAC5T,OAAOD,WAAW;AAClC,YAAI,KAAK0T,QAAQ;AACf,eAAK0D,OAAOnX,OAAOD,MAAAA;;MAEvB;AAEA,UAAI45B;AACJ,YAAM/E,WAAW,MAAM;AACrB8E,gBAAQ,UAAU9E,QAAAA;AAElB,aAAKA,WAAW;AAChB,aAAKzd,OAAM;AAEXsiB,aAAK,UAAU7lB,QAAAA;AACf6lB,aAAK,UAAUE,QAAAA;MACjB;AAEAA,iBAAW,MAAM;AACf,aAAK/E,WAAW;AAEhB8E,gBAAQ,UAAU9lB,QAAAA;AAGlB,aAAKulB,MAAK;AACV,aAAK7D,QAAQ,GAAG,CAAA;AAEhBmE,aAAK,UAAU7E,QAAAA;MACjB;AAEA,UAAI/D,SAAS7c,WAAW,KAAKP,MAAM,GAAG;AACpCmhB,iBAAAA;aACK;AACL+E,iBAAAA;;IAEJ;IAKA3B,eAAe;AACb5kB,WAAK,KAAKmhB,YAAY,CAAC3gB,UAAUhxB,SAAS;AACxC,aAAKiuC,SAAShd,oBAAoB,MAAMjxB,MAAMgxB,QAAAA;MAChD,CAAA;AACA,WAAK2gB,aAAa,CAAA;AAElBnhB,WAAK,KAAKohB,sBAAsB,CAAC5gB,UAAUhxB,SAAS;AAClD,aAAKiuC,SAAShd,oBAAoB,MAAMjxB,MAAMgxB,QAAAA;MAChD,CAAA;AACA,WAAK4gB,uBAAuBjyC;IAC9B;IAEAq3C,iBAAiB31C,OAAO+I,MAAM4sB,SAAS;AACrC,YAAMigB,SAASjgB,UAAU,QAAQ;AACjC,UAAIlsB,MAAMrJ,MAAMF,IAAGuI;AAEnB,UAAIM,SAAS,WAAW;AACtBU,eAAO,KAAKoG,eAAe7P,MAAM,CAAA,EAAGgJ,YAAY;AAChDS,aAAKsB,WAAW,MAAM6qC,SAAS,mBAAoB,EAAA;;AAGrD,WAAK11C,KAAI,GAAGuI,OAAOzI,MAAMC,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CE,eAAOJ,MAAME,EAAE;AACf,cAAM6K,aAAa3K,QAAQ,KAAKyP,eAAezP,KAAK4I,YAAY,EAAE+B;AAClE,YAAIA,YAAY;AACdA,qBAAW6qC,SAAS,YAAA,EAAcx1C,KAAKiM,SAASjM,KAAK4I,cAAc5I,KAAKsI,KAAK;;MAEjF;IACF;IAMAmtC,oBAAoB;AAClB,aAAO,KAAKx1C,WAAW,CAAA;IACzB;IAMAy1C,kBAAkBC,gBAAgB;AAChC,YAAMC,aAAa,KAAK31C,WAAW,CAAA;AACnC,YAAM4D,SAAS8xC,eAAev1B,IAAI,CAAC,EAACxX,cAAcN,OAAAA,OAAK,MAAM;AAC3D,cAAMe,OAAO,KAAKoG,eAAe7G,YAAAA;AACjC,YAAI,CAACS,MAAM;AACT,gBAAM,IAAIsd,MAAM,+BAA+B/d,YAAc;;AAG/D,eAAO;UACLA;UACAqD,SAAS5C,KAAKJ,KAAKX,MAAM;UACzBA,OAAAA;QACF;MACF,CAAA;AACA,YAAM2lB,UAAU,CAAC4nB,eAAehyC,QAAQ+xC,UAAAA;AAExC,UAAI3nB,SAAS;AACX,aAAKhuB,UAAU4D;AAEf,aAAKosC,aAAa;AAClB,aAAKqD,mBAAmBzvC,QAAQ+xC,UAAAA;;IAEpC;IAWAlZ,cAAckM,MAAM5yB,MAAMtK,QAAQ;AAChC,aAAO,KAAK2kC,SAAS1H,OAAO,MAAMC,MAAM5yB,MAAMtK,MAAAA;IAChD;IAOA0C,gBAAgB0nC,UAAU;AACxB,aAAO,KAAKzF,SAAS35B,OAAOhL,OAAOkiC,CAAAA,OAAKA,GAAE5E,OAAOt/B,OAAOosC,QAAAA,EAAUj2C,WAAW;IAC/E;IAKAyzC,mBAAmBzvC,QAAQ+xC,YAAYG,QAAQ;AAC7C,YAAMC,eAAe,KAAKpwC,QAAQqwC;AAClC,YAAM9uB,OAAO,CAACnQ,IAAGlP,OAAMkP,GAAEtL,OAAOrE,CAAAA,OAAK,CAACS,GAAE2hC,KAAKniC,CAAAA,OAAKD,GAAEuB,iBAAiBtB,GAAEsB,gBAAgBvB,GAAEiB,UAAUhB,GAAEgB,KAAK,CAAA;AAC1G,YAAM4tC,cAAc/uB,KAAKyuB,YAAY/xC,MAAAA;AACrC,YAAMsyC,YAAYJ,SAASlyC,SAASsjB,KAAKtjB,QAAQ+xC,UAAW;AAE5D,UAAIM,YAAYr2C,QAAQ;AACtB,aAAK01C,iBAAiBW,aAAaF,aAAartC,MAAM,KAAK;;AAG7D,UAAIwtC,UAAUt2C,UAAUm2C,aAAartC,MAAM;AACzC,aAAK4sC,iBAAiBY,WAAWH,aAAartC,MAAM,IAAI;;IAE5D;IAKA0qC,cAActyB,IAAGg1B,QAAQ;AACvB,YAAM//B,OAAO;QACXpV,OAAOmgB;QACPg1B;QACA7M,YAAY;QACZgG,aAAa,KAAK/lB,cAAcpI,EAAAA;MAClC;AACA,YAAMq1B,cAAc,CAACpN,YAAYA,OAAOpjC,QAAQ6tC,UAAU,KAAK7tC,QAAQ6tC,QAAQnoB,SAASvK,GAAE0Q,OAAOlzB,IAAI;AAErG,UAAI,KAAKm+B,cAAc,eAAe1mB,MAAMogC,WAAAA,MAAiB,OAAO;AAClE;;AAGF,YAAMnoB,UAAU,KAAKooB,aAAat1B,IAAGg1B,QAAQ//B,KAAKk5B,WAAW;AAE7Dl5B,WAAKkzB,aAAa;AAClB,WAAKxM,cAAc,cAAc1mB,MAAMogC,WAAAA;AAEvC,UAAInoB,WAAWjY,KAAKiY,SAAS;AAC3B,aAAKqjB,OAAM;;AAGb,aAAO;IACT;IAUA+E,aAAat1B,IAAGg1B,QAAQ7G,aAAa;AACnC,YAAM,EAACjvC,SAAS21C,aAAa,CAAA,GAAIhwC,QAAAA,IAAW;AAe5C,YAAMqjB,mBAAmB8sB;AACzB,YAAMlyC,SAAS,KAAKyyC,mBAAmBv1B,IAAG60B,YAAY1G,aAAajmB,gBAAAA;AACnE,YAAMkmB,UAAUoH,cAAcx1B,EAAAA;AAC9B,YAAMkuB,YAAYD,mBAAmBjuB,IAAG,KAAKkvB,YAAYf,aAAaC,OAAAA;AAEtE,UAAID,aAAa;AAGf,aAAKe,aAAa;AAGlBhH,iBAAarjC,QAAQ4wC,SAAS;UAACz1B;UAAGld;UAAQ;QAAK,GAAE,IAAI;AAErD,YAAIsrC,SAAS;AACXlG,mBAAarjC,QAAQkb,SAAS;YAACC;YAAGld;YAAQ;UAAK,GAAE,IAAI;;;AAIzD,YAAMoqB,UAAU,CAAC4nB,eAAehyC,QAAQ+xC,UAAAA;AACxC,UAAI3nB,WAAW8nB,QAAQ;AACrB,aAAK91C,UAAU4D;AACf,aAAKyvC,mBAAmBzvC,QAAQ+xC,YAAYG,MAAAA;;AAG9C,WAAK9F,aAAahB;AAElB,aAAOhhB;IACT;IAUAqoB,mBAAmBv1B,IAAG60B,YAAY1G,aAAajmB,kBAAkB;AAC/D,UAAIlI,GAAExiB,SAAS,YAAY;AACzB,eAAO,CAAA;;AAGT,UAAI,CAAC2wC,aAAa;AAEhB,eAAO0G;;AAGT,YAAMI,eAAe,KAAKpwC,QAAQqwC;AAClC,aAAO,KAAKzB,0BAA0BzzB,IAAGi1B,aAAartC,MAAMqtC,cAAc/sB,gBAAAA;IAC5E;EACF;AAGA,WAASwmB,oBAAoB;AAC3B,WAAO1gB,KAAKwgB,MAAMZ,WAAW,CAACvwC,UAAUA,MAAMiyC,SAASlH,WAAU,CAAA;EACnE;AClwCA,WAASsN,QAAQvpC,KAA+BjB,SAAqBqS,UAAkB;AACrF,UAAM,EAACD,YAAYq4B,aAAarvC,GAAAA,IAAGC,GAAAA,IAAG6Z,aAAaD,YAAAA,IAAejV;AAClE,QAAI0qC,cAAcD,cAAcv1B;AAIhCjU,QAAIi3B,UAAS;AACbj3B,QAAI6V,IAAI1b,IAAGC,IAAG6Z,aAAa9C,aAAas4B,aAAar4B,WAAWq4B,WAAAA;AAChE,QAAIz1B,cAAcw1B,aAAa;AAC7BC,oBAAcD,cAAcx1B;AAC5BhU,UAAI6V,IAAI1b,IAAGC,IAAG4Z,aAAa5C,WAAWq4B,aAAat4B,aAAas4B,aAAa,IAAI;WAC5E;AACLzpC,UAAI6V,IAAI1b,IAAGC,IAAGovC,aAAap4B,WAAWa,SAASd,aAAac,OAAAA;;AAE9DjS,QAAI0pC,UAAS;AACb1pC,QAAI4F,KAAI;EACV;AAEA,WAAS+jC,gBAAgBvwC,OAAO;AAC9B,WAAOwwC,kBAAkBxwC,OAAO;MAAC;MAAc;MAAY;MAAc;IAAW,CAAA;EACtF;AAKA,WAASywC,oBAAkBh0B,KAAiB7B,aAAqBC,aAAqB61B,YAAoB;AACxG,UAAMC,KAAIJ,gBAAgB9zB,IAAInd,QAAQsxC,YAAY;AAClD,UAAMC,iBAAiBh2B,cAAcD,eAAe;AACpD,UAAMk2B,aAAap4C,KAAKC,IAAIk4C,eAAeH,aAAa91B,cAAc,CAAA;AAStE,UAAMm2B,oBAAoB,CAACt7B,QAAQ;AACjC,YAAMu7B,iBAAiBn2B,cAAcniB,KAAKC,IAAIk4C,eAAep7B,GAAG,KAAKi7B,aAAa;AAClF,aAAOrZ,YAAY5hB,KAAK,GAAG/c,KAAKC,IAAIk4C,eAAeG,aAAAA,CAAAA;IACrD;AAEA,WAAO;MACLC,YAAYF,kBAAkBJ,GAAEM,UAAU;MAC1CC,UAAUH,kBAAkBJ,GAAEO,QAAQ;MACtCC,YAAY9Z,YAAYsZ,GAAEQ,YAAY,GAAGL,UAAAA;MACzCM,UAAU/Z,YAAYsZ,GAAES,UAAU,GAAGN,UAAAA;IACvC;EACF;AAKA,WAASO,WAAW9vC,IAAW+vC,OAAevwC,IAAWC,IAAW;AAClE,WAAO;MACLD,GAAGA,KAAIQ,KAAI7I,KAAKwf,IAAIo5B,KAAAA;MACpBtwC,GAAGA,KAAIO,KAAI7I,KAAK0f,IAAIk5B,KAAAA;IACtB;EACF;AAiBA,WAASC,QACP3qC,KACAjB,SACAyO,QACAgF,SACAzY,KACAge,UACA;AACA,UAAM,EAAC5d,GAAAA,IAAGC,GAAAA,IAAG+W,YAAYnf,QAAOw3C,aAAax1B,aAAa42B,OAAAA,IAAU7rC;AAEpE,UAAMkV,cAAcniB,KAAKoC,IAAI6K,QAAQkV,cAAczB,UAAUhF,SAASg8B,aAAa,CAAA;AACnF,UAAMx1B,cAAc42B,SAAS,IAAIA,SAASp4B,UAAUhF,SAASg8B,cAAc;AAE3E,QAAIqB,gBAAgB;AACpB,UAAMC,SAAQ/wC,MAAM/H;AAEpB,QAAIwgB,SAAS;AAIX,YAAMu4B,uBAAuBH,SAAS,IAAIA,SAASp4B,UAAU;AAC7D,YAAMw4B,uBAAuB/2B,cAAc,IAAIA,cAAczB,UAAU;AACvE,YAAMy4B,sBAAsBF,uBAAuBC,wBAAwB;AAC3E,YAAME,gBAAgBD,uBAAuB,IAAIH,SAASG,sBAAuBA,qBAAqBz4B,WAAWs4B;AACjHD,uBAAiBC,SAAQI,iBAAiB;;AAG5C,UAAMC,OAAOr5C,KAAKoC,IAAI,MAAO42C,SAAQ72B,cAAczG,SAAS2E,EAAM8B,IAAAA;AAClE,UAAMm3B,eAAeN,SAAQK,QAAQ;AACrC,UAAMh6B,aAAanf,SAAQo5C,cAAcP;AACzC,UAAMz5B,WAAWrX,MAAMqxC,cAAcP;AACrC,UAAM,EAACR,YAAYC,UAAUC,YAAYC,SAAQ,IAAIX,oBAAkB9qC,SAASiV,aAAaC,aAAa7C,WAAWD,UAAAA;AAErH,UAAMk6B,2BAA2Bp3B,cAAco2B;AAC/C,UAAMiB,yBAAyBr3B,cAAcq2B;AAC7C,UAAMiB,0BAA0Bp6B,aAAak5B,aAAagB;AAC1D,UAAMG,wBAAwBp6B,WAAWk5B,WAAWgB;AAEpD,UAAMG,2BAA2Bz3B,cAAcu2B;AAC/C,UAAMmB,yBAAyB13B,cAAcw2B;AAC7C,UAAMmB,0BAA0Bx6B,aAAao5B,aAAakB;AAC1D,UAAMG,wBAAwBx6B,WAAWo5B,WAAWkB;AAEpD1rC,QAAIi3B,UAAS;AAEb,QAAIlf,UAAU;AAEZ,YAAM8zB,yBAAyBN,0BAA0BC,yBAAyB;AAClFxrC,UAAI6V,IAAI1b,IAAGC,IAAG6Z,aAAas3B,yBAAyBM,qBAAAA;AACpD7rC,UAAI6V,IAAI1b,IAAGC,IAAG6Z,aAAa43B,uBAAuBL,qBAAAA;AAGlD,UAAIlB,WAAW,GAAG;AAChB,cAAMwB,UAAUrB,WAAWa,wBAAwBE,uBAAuBrxC,IAAGC,EAAAA;AAC7E4F,YAAI6V,IAAIi2B,QAAQ3xC,GAAG2xC,QAAQ1xC,GAAGkwC,UAAUkB,uBAAuBp6B,WAAWa,OAAAA;;AAI5E,YAAM85B,KAAKtB,WAAWiB,wBAAwBt6B,UAAUjX,IAAGC,EAAAA;AAC3D4F,UAAIm3B,OAAO4U,GAAG5xC,GAAG4xC,GAAG3xC,CAAC;AAGrB,UAAIowC,WAAW,GAAG;AAChB,cAAMsB,UAAUrB,WAAWiB,wBAAwBE,uBAAuBzxC,IAAGC,EAAAA;AAC7E4F,YAAI6V,IAAIi2B,QAAQ3xC,GAAG2xC,QAAQ1xC,GAAGowC,UAAUp5B,WAAWa,SAAS25B,wBAAwB95C,KAAKqgB,EAAE;;AAI7F,YAAM65B,yBAA0B56B,WAAYo5B,WAAWx2B,eAAiB7C,aAAco5B,aAAav2B,gBAAiB;AACpHhU,UAAI6V,IAAI1b,IAAGC,IAAG4Z,aAAa5C,WAAYo5B,WAAWx2B,aAAcg4B,uBAAuB,IAAI;AAC3FhsC,UAAI6V,IAAI1b,IAAGC,IAAG4Z,aAAag4B,uBAAuB76B,aAAco5B,aAAav2B,aAAc,IAAI;AAG/F,UAAIu2B,aAAa,GAAG;AAClB,cAAMuB,UAAUrB,WAAWgB,0BAA0BE,yBAAyBxxC,IAAGC,EAAAA;AACjF4F,YAAI6V,IAAIi2B,QAAQ3xC,GAAG2xC,QAAQ1xC,GAAGmwC,YAAYoB,0BAA0B75C,KAAKqgB,IAAIhB,aAAac,OAAAA;;AAI5F,YAAMg6B,KAAKxB,WAAWY,0BAA0Bl6B,YAAYhX,IAAGC,EAAAA;AAC/D4F,UAAIm3B,OAAO8U,GAAG9xC,GAAG8xC,GAAG7xC,CAAC;AAGrB,UAAIiwC,aAAa,GAAG;AAClB,cAAMyB,UAAUrB,WAAWY,0BAA0BE,yBAAyBpxC,IAAGC,EAAAA;AACjF4F,YAAI6V,IAAIi2B,QAAQ3xC,GAAG2xC,QAAQ1xC,GAAGiwC,YAAYl5B,aAAac,SAASs5B,uBAAAA;;WAE7D;AACLvrC,UAAIk3B,OAAO/8B,IAAGC,EAAAA;AAEd,YAAM8xC,cAAcp6C,KAAKwf,IAAIi6B,uBAAAA,IAA2Bt3B,cAAc9Z;AACtE,YAAMgyC,cAAcr6C,KAAK0f,IAAI+5B,uBAAAA,IAA2Bt3B,cAAc7Z;AACtE4F,UAAIm3B,OAAO+U,aAAaC,WAAAA;AAExB,YAAMC,YAAYt6C,KAAKwf,IAAIk6B,qBAAAA,IAAyBv3B,cAAc9Z;AAClE,YAAMkyC,YAAYv6C,KAAK0f,IAAIg6B,qBAAAA,IAAyBv3B,cAAc7Z;AAClE4F,UAAIm3B,OAAOiV,WAAWC,SAAAA;;AAGxBrsC,QAAI0pC,UAAS;EACf;AAEA,WAAS4C,QACPtsC,KACAjB,SACAyO,QACAgF,SACAuF,UACA;AACA,UAAM,EAACw0B,aAAap7B,YAAYP,cAAAA,IAAiB7R;AACjD,QAAIqS,WAAWrS,QAAQqS;AACvB,QAAIm7B,aAAa;AACf5B,cAAQ3qC,KAAKjB,SAASyO,QAAQgF,SAASpB,UAAU2G,QAAAA;AACjD,eAASnlB,KAAI,GAAGA,KAAI25C,aAAa,EAAE35C,IAAG;AACpCoN,YAAIiB,KAAI;MACV;AACA,UAAI,CAAC6N,MAAM8B,aAAgB,GAAA;AACzBQ,mBAAWD,cAAcP,gBAAgBM,OAAOA;;;AAGpDy5B,YAAQ3qC,KAAKjB,SAASyO,QAAQgF,SAASpB,UAAU2G,QAAAA;AACjD/X,QAAIiB,KAAI;AACR,WAAOmQ;EACT;AAEA,WAASkmB,WACPt3B,KACAjB,SACAyO,QACAgF,SACAuF,UACA;AACA,UAAM,EAACw0B,aAAap7B,YAAYP,eAAelY,QAAO,IAAIqG;AAC1D,UAAM,EAAC4U,aAAa64B,iBAAiBhY,YAAYE,iBAAgB,IAAIh8B;AACrE,UAAM+zC,QAAQ/zC,QAAQud,gBAAgB;AAEtC,QAAI,CAACtC,aAAa;AAChB;;AAGF3T,QAAI+2B,YAAYvC,cAAc,CAAA,CAAE;AAChCx0B,QAAIg3B,iBAAiBtC;AAErB,QAAI+X,OAAO;AACTzsC,UAAI0T,YAAYC,cAAc;AAC9B3T,UAAI0sC,WAAWF,mBAAmB;WAC7B;AACLxsC,UAAI0T,YAAYC;AAChB3T,UAAI0sC,WAAWF,mBAAmB;;AAGpC,QAAIp7B,WAAWrS,QAAQqS;AACvB,QAAIm7B,aAAa;AACf5B,cAAQ3qC,KAAKjB,SAASyO,QAAQgF,SAASpB,UAAU2G,QAAAA;AACjD,eAASnlB,KAAI,GAAGA,KAAI25C,aAAa,EAAE35C,IAAG;AACpCoN,YAAIo3B,OAAM;MACZ;AACA,UAAI,CAACtoB,MAAM8B,aAAgB,GAAA;AACzBQ,mBAAWD,cAAcP,gBAAgBM,OAAOA;;;AAIpD,QAAIu7B,OAAO;AACTlD,cAAQvpC,KAAKjB,SAASqS,QAAAA;;AAGxB,QAAI,CAACm7B,aAAa;AAChB5B,cAAQ3qC,KAAKjB,SAASyO,QAAQgF,SAASpB,UAAU2G,QAAAA;AACjD/X,UAAIo3B,OAAM;;EAEd;AAUe,MAAMuV,aAAN,cAAyBplB,SAAAA;IAEtC,OAAO/qB,KAAK;IAEZ,OAAOzE,WAAW;MAChBke,aAAa;MACbzC,aAAa;MACbghB,YAAY,CAAA;MACZE,kBAAkB;MAClB8X,iBAAiBx7C;MACjBg5C,cAAc;MACdr2B,aAAa;MACbnG,QAAQ;MACRgF,SAAS;MACTZ,OAAO5gB;MACP+mB,UAAU;;IAGZ,OAAOyP,gBAAgB;MACrBlU,iBAAiB;;IAGnB,OAAOb,cAAc;MACnBC,aAAa;MACbC,YAAY,CAACzD,SAASA,SAAS;;IAGjC0B;IACAQ;IACAm7B;IACAv4B;IACAC;IACAu1B;IACAr4B;IAEAzgB,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAK4f,gBAAgB5f;AACrB,WAAKmgB,aAAangB;AAClB,WAAKogB,WAAWpgB;AAChB,WAAKgjB,cAAchjB;AACnB,WAAKijB,cAAcjjB;AACnB,WAAKw4C,cAAc;AACnB,WAAK+C,cAAc;AAEnB,UAAIh3C,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEA6mB,QAAQwwB,QAAgBC,QAAgB9wB,kBAA2B;AACjE,YAAMzL,QAAQ,KAAKgM,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACxC,YAAM,EAACnK,OAAOiL,SAAAA,IAAYN,kBAAkBjM,OAAO;QAACnW,GAAGyyC;QAAQxyC,GAAGyyC;MAAM,CAAA;AACxE,YAAM,EAAC17B,YAAYC,UAAU4C,aAAaC,aAAarD,cAAAA,IAAiB,KAAK0L,SAAS;QACpF;QACA;QACA;QACA;QACA;SACCP,gBAAAA;AACH,YAAM+wB,WAAW,KAAKp0C,QAAQ8Z,UAAU,KAAK9Z,QAAQib,eAAe;AACpE,YAAM6B,iBAAiB9T,eAAekP,eAAeQ,WAAWD,UAAAA;AAChE,YAAM47B,gBAAgBv3B,kBAAkBtE,OAAOW,cAAcD,OAAOT,YAAYC,QAAAA;AAChF,YAAM47B,eAAeC,WAAWpwB,UAAU7I,cAAc84B,SAAS74B,cAAc64B,OAAAA;AAE/E,aAAQC,iBAAiBC;IAC3B;IAEArwB,eAAeZ,kBAA2B;AACxC,YAAM,EAAC5hB,GAAAA,IAAGC,GAAAA,IAAG+W,YAAYC,UAAU4C,aAAaC,YAAW,IAAI,KAAKqI,SAAS;QAC3E;QACA;QACA;QACA;QACA;QACA;SACCP,gBAAAA;AACH,YAAM,EAACvO,QAAQgF,QAAAA,IAAW,KAAK9Z;AAC/B,YAAMw0C,aAAa/7B,aAAaC,YAAY;AAC5C,YAAM+7B,cAAcn5B,cAAcC,cAAczB,UAAUhF,UAAU;AACpE,aAAO;QACLrT,GAAGA,KAAIrI,KAAKwf,IAAI47B,SAAaC,IAAAA;QAC7B/yC,GAAGA,KAAItI,KAAK0f,IAAI07B,SAAaC,IAAAA;MAC/B;IACF;IAEA1lB,gBAAgB1L,kBAA2B;AACzC,aAAO,KAAKY,eAAeZ,gBAAAA;IAC7B;IAEAlpB,KAAKmN,KAA+B;AAClC,YAAM,EAACtH,SAASkY,cAAa,IAAI;AACjC,YAAMpD,UAAU9U,QAAQ8U,UAAU,KAAK;AACvC,YAAMgF,WAAW9Z,QAAQ8Z,WAAW,KAAK;AACzC,YAAMuF,WAAWrf,QAAQqf;AACzB,WAAKyxB,cAAe9wC,QAAQud,gBAAgB,UAAW,OAAO;AAC9D,WAAKs2B,cAAc37B,gBAAgBM,MAAMpf,KAAKoE,MAAM0a,gBAAgBM,GAAAA,IAAO;AAE3E,UAAIN,kBAAkB,KAAK,KAAKoD,cAAc,KAAK,KAAKC,cAAc,GAAG;AACvE;;AAGFjU,UAAIu2B,KAAI;AAER,YAAM2W,aAAa,KAAK/7B,aAAa,KAAKC,YAAY;AACtDpR,UAAIotC,UAAUt7C,KAAKwf,IAAI47B,SAAAA,IAAa1/B,QAAQ1b,KAAK0f,IAAI07B,SAAa1/B,IAAAA,MAAAA;AAClE,YAAM6/B,MAAM,IAAIv7C,KAAK0f,IAAI1f,KAAKC,IAAIogB,IAAIvB,iBAAiB,CAAA,CAAA;AACvD,YAAM08B,eAAe9/B,SAAS6/B;AAE9BrtC,UAAIqT,YAAY3a,QAAQ4a;AACxBtT,UAAIuT,cAAc7a,QAAQ8a;AAE1B84B,cAAQtsC,KAAK,MAAMstC,cAAc96B,SAASuF,QAAAA;AAC1Cuf,iBAAWt3B,KAAK,MAAMstC,cAAc96B,SAASuF,QAAAA;AAE7C/X,UAAIy2B,QAAO;IACb;EACF;AClXA,WAAS8W,SAASvtC,KAAKtH,SAASya,QAAQza,SAAS;AAC/CsH,QAAIwtC,UAAU9rC,eAAeyR,MAAMs6B,gBAAgB/0C,QAAQ+0C,cAAc;AACzEztC,QAAI+2B,YAAYr1B,eAAeyR,MAAMqhB,YAAY97B,QAAQ87B,UAAU,CAAA;AACnEx0B,QAAIg3B,iBAAiBt1B,eAAeyR,MAAMuhB,kBAAkBh8B,QAAQg8B,gBAAgB;AACpF10B,QAAI0sC,WAAWhrC,eAAeyR,MAAMq5B,iBAAiB9zC,QAAQ8zC,eAAe;AAC5ExsC,QAAI0T,YAAYhS,eAAeyR,MAAMQ,aAAajb,QAAQib,WAAW;AACrE3T,QAAIuT,cAAc7R,eAAeyR,MAAMK,aAAa9a,QAAQ8a,WAAW;EACzE;AAEA,WAAS2jB,OAAOn3B,KAAK0tC,UAAUl4C,QAAQ;AACrCwK,QAAIm3B,OAAO3hC,OAAO2E,GAAG3E,OAAO4E,CAAC;EAC/B;AAKA,WAASuzC,cAAcj1C,SAAS;AAC9B,QAAIA,QAAQk1C,SAAS;AACnB,aAAOC;;AAGT,QAAIn1C,QAAQo1C,WAAWp1C,QAAQq1C,2BAA2B,YAAY;AACpE,aAAOC;;AAGT,WAAO7W;EACT;AAEA,WAAS8W,SAAS59B,QAAQ2G,SAASwH,SAAS,CAAA,GAAI;AAC9C,UAAM3a,QAAQwM,OAAO1d;AACrB,UAAM,EAACX,OAAOk8C,cAAc,GAAGn0C,KAAKo0C,YAAYtqC,QAAQ,EAAC,IAAI2a;AAC7D,UAAM,EAACxsB,OAAOo8C,cAAcr0C,KAAKs0C,WAAAA,IAAcr3B;AAC/C,UAAMhlB,SAAQF,KAAKoC,IAAIg6C,aAAaE,YAAAA;AACpC,UAAMr0C,MAAMjI,KAAKC,IAAIo8C,WAAWE,UAAAA;AAChC,UAAMC,UAAUJ,cAAcE,gBAAgBD,YAAYC,gBAAgBF,cAAcG,cAAcF,YAAYE;AAElH,WAAO;MACLxqC;MACA7R,OAAAA;MACAqE,MAAM2gB,QAAQ3gB;MACd8E,MAAMpB,MAAM/H,UAAS,CAACs8C,UAAUzqC,QAAQ9J,MAAM/H,SAAQ+H,MAAM/H;IAC9D;EACF;AAiBA,WAASu8C,YAAYvuC,KAAKyW,MAAMO,SAASwH,QAAQ;AAC/C,UAAM,EAACnO,QAAQ3X,QAAAA,IAAW+d;AAC1B,UAAM,EAAC5S,OAAO7R,OAAAA,QAAOqE,MAAAA,OAAM8E,KAAAA,IAAQ8yC,SAAS59B,QAAQ2G,SAASwH,MAAAA;AAC7D,UAAMgwB,aAAab,cAAcj1C,OAAAA;AAEjC,QAAI,EAAC8P,OAAO,MAAM1O,QAAO,IAAI0kB,UAAU,CAAA;AACvC,QAAI5rB,IAAG0d,OAAOtM;AAEd,SAAKpR,KAAI,GAAGA,MAAKuI,MAAM,EAAEvI,IAAG;AAC1B0d,cAAQD,QAAQre,UAAS8H,UAAUqB,OAAOvI,KAAIA,OAAMiR,KAAM;AAE1D,UAAIyM,MAAMG,MAAM;AAEd;MACF,WAAWjI,MAAM;AACfxI,YAAIk3B,OAAO5mB,MAAMnW,GAAGmW,MAAMlW,CAAC;AAC3BoO,eAAO;aACF;AACLgmC,mBAAWxuC,KAAKgE,MAAMsM,OAAOxW,SAASpB,QAAQk1C,OAAO;;AAGvD5pC,aAAOsM;IACT;AAEA,QAAIja,OAAM;AACRia,cAAQD,QAAQre,UAAS8H,UAAUqB,OAAO,MAAM0I,KAAM;AACtD2qC,iBAAWxuC,KAAKgE,MAAMsM,OAAOxW,SAASpB,QAAQk1C,OAAO;;AAGvD,WAAO,CAAC,CAACv3C;EACX;AAiBA,WAASo4C,gBAAgBzuC,KAAKyW,MAAMO,SAASwH,QAAQ;AACnD,UAAMnO,SAASoG,KAAKpG;AACpB,UAAM,EAACxM,OAAO7R,OAAAA,QAAOmJ,KAAAA,IAAQ8yC,SAAS59B,QAAQ2G,SAASwH,MAAAA;AACvD,UAAM,EAAChW,OAAO,MAAM1O,QAAO,IAAI0kB,UAAU,CAAA;AACzC,QAAIkwB,OAAO;AACX,QAAIC,SAAS;AACb,QAAI/7C,IAAG0d,OAAOs+B,OAAOx8B,MAAMJ,MAAM68B;AAEjC,UAAMC,aAAa,CAAC1zC,YAAWpJ,UAAS8H,UAAUqB,OAAOC,SAAQA,WAAUyI;AAC3E,UAAMkrC,QAAQ,MAAM;AAClB,UAAI38B,SAASJ,MAAM;AAEjBhS,YAAIm3B,OAAOuX,MAAM18B,IAAAA;AACjBhS,YAAIm3B,OAAOuX,MAAMt8B,IAAAA;AAGjBpS,YAAIm3B,OAAOuX,MAAMG,KAAAA;;IAErB;AAEA,QAAIrmC,MAAM;AACR8H,cAAQD,OAAOy+B,WAAW,CAAG,CAAA;AAC7B9uC,UAAIk3B,OAAO5mB,MAAMnW,GAAGmW,MAAMlW,CAAC;;AAG7B,SAAKxH,KAAI,GAAGA,MAAKuI,MAAM,EAAEvI,IAAG;AAC1B0d,cAAQD,OAAOy+B,WAAWl8C,EAAG,CAAA;AAE7B,UAAI0d,MAAMG,MAAM;AAEd;;AAGF,YAAMtW,KAAImW,MAAMnW;AAChB,YAAMC,KAAIkW,MAAMlW;AAChB,YAAM40C,SAAS70C,KAAI;AAEnB,UAAI60C,WAAWJ,OAAO;AAEpB,YAAIx0C,KAAIgY,MAAM;AACZA,iBAAOhY;mBACEA,KAAI4X,MAAM;AACnBA,iBAAO5X;;AAGTs0C,gBAAQC,SAASD,OAAOv0C,MAAK,EAAEw0C;aAC1B;AACLI,cAAAA;AAGA/uC,YAAIm3B,OAAOh9B,IAAGC,EAAAA;AAEdw0C,gBAAQI;AACRL,iBAAS;AACTv8B,eAAOJ,OAAO5X;;AAGhBy0C,cAAQz0C;IACV;AACA20C,UAAAA;EACF;AAOA,WAASE,kBAAkBx4B,MAAM;AAC/B,UAAM5c,OAAO4c,KAAK/d;AAClB,UAAM87B,aAAa36B,KAAK26B,cAAc36B,KAAK26B,WAAW7hC;AACtD,UAAMu8C,cAAc,CAACz4B,KAAKM,cAAc,CAACN,KAAKrgB,SAAS,CAACyD,KAAKi0C,WAAWj0C,KAAKk0C,2BAA2B,cAAc,CAACl0C,KAAK+zC,WAAW,CAACpZ;AACxI,WAAO0a,cAAcT,kBAAkBF;EACzC;AAKA,WAASY,wBAAwBz2C,SAAS;AACxC,QAAIA,QAAQk1C,SAAS;AACnB,aAAOwB;;AAGT,QAAI12C,QAAQo1C,WAAWp1C,QAAQq1C,2BAA2B,YAAY;AACpE,aAAOsB;;AAGT,WAAOC;EACT;AAEA,WAASC,oBAAoBvvC,KAAKyW,MAAMzkB,QAAO6R,OAAO;AACpD,QAAI2rC,OAAO/4B,KAAKg5B;AAChB,QAAI,CAACD,MAAM;AACTA,aAAO/4B,KAAKg5B,QAAQ,IAAIC,OAAAA;AACxB,UAAIj5B,KAAK+4B,KAAKA,MAAMx9C,QAAO6R,KAAQ,GAAA;AACjC2rC,aAAK9F,UAAS;;;AAGlB6D,aAASvtC,KAAKyW,KAAK/d,OAAO;AAC1BsH,QAAIo3B,OAAOoY,IAAAA;EACb;AAEA,WAASG,iBAAiB3vC,KAAKyW,MAAMzkB,QAAO6R,OAAO;AACjD,UAAM,EAAC+rC,UAAUl3C,QAAAA,IAAW+d;AAC5B,UAAMo5B,gBAAgBZ,kBAAkBx4B,IAAAA;AAExC,eAAWO,WAAW44B,UAAU;AAC9BrC,eAASvtC,KAAKtH,SAASse,QAAQ7D,KAAK;AACpCnT,UAAIi3B,UAAS;AACb,UAAI4Y,cAAc7vC,KAAKyW,MAAMO,SAAS;QAAChlB,OAAAA;QAAO+H,KAAK/H,SAAQ6R,QAAQ;OAAK,GAAA;AACtE7D,YAAI0pC,UAAS;;AAEf1pC,UAAIo3B,OAAM;IACZ;EACF;AAEA,MAAM0Y,YAAY,OAAOJ,WAAW;AAEpC,WAAS78C,KAAKmN,KAAKyW,MAAMzkB,QAAO6R,OAAO;AACrC,QAAIisC,aAAa,CAACr5B,KAAK/d,QAAQse,SAAS;AACtCu4B,0BAAoBvvC,KAAKyW,MAAMzkB,QAAO6R,KAAAA;WACjC;AACL8rC,uBAAiB3vC,KAAKyW,MAAMzkB,QAAO6R,KAAAA;;EAEvC;AAEe,MAAMksC,cAAN,cAA0BxoB,SAAAA;IAEvC,OAAO/qB,KAAK;IAKZ,OAAOzE,WAAW;MAChB01C,gBAAgB;MAChBjZ,YAAY,CAAA;MACZE,kBAAkB;MAClB8X,iBAAiB;MACjB74B,aAAa;MACbq8B,iBAAiB;MACjBjC,wBAAwB;MACxB9sC,MAAM;MACNuV,UAAU;MACVo3B,SAAS;MACTE,SAAS;;IAMX,OAAOtmB,gBAAgB;MACrBlU,iBAAiB;MACjBE,aAAa;;IAIf,OAAOf,cAAc;MACnBC,aAAa;MACbC,YAAY,CAACzD,SAASA,SAAS,gBAAgBA,SAAS;;IAI1Dxe,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAK0hB,WAAW;AAChB,WAAKve,UAAU1H;AACf,WAAKwG,SAASxG;AACd,WAAKoF,QAAQpF;AACb,WAAKioB,YAAYjoB;AACjB,WAAKy+C,QAAQz+C;AACb,WAAKi/C,UAAUj/C;AACf,WAAKk/C,YAAYl/C;AACjB,WAAK+lB,aAAa;AAClB,WAAKo5B,iBAAiB;AACtB,WAAKr5B,gBAAgB9lB;AAErB,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEAoiB,oBAAoB5R,WAAWhE,WAAW;AACxC,YAAMrJ,UAAU,KAAKA;AACrB,WAAKA,QAAQo1C,WAAWp1C,QAAQq1C,2BAA2B,eAAe,CAACr1C,QAAQk1C,WAAW,CAAC,KAAKuC,gBAAgB;AAClH,cAAM95C,QAAOqC,QAAQ8d,WAAW,KAAKpgB,QAAQ,KAAK6iB;AAClDm3B,mCAA2B,KAAKH,SAASv3C,SAASqN,WAAW1P,OAAM0L,SAAAA;AACnE,aAAKouC,iBAAiB;;IAE1B;IAEA,IAAI9/B,OAAOA,QAAQ;AACjB,WAAK4/B,UAAU5/B;AACf,aAAO,KAAK6/B;AACZ,aAAO,KAAKT;AACZ,WAAKU,iBAAiB;IACxB;IAEA,IAAI9/B,SAAS;AACX,aAAO,KAAK4/B;IACd;IAEA,IAAIL,WAAW;AACb,aAAO,KAAKM,cAAc,KAAKA,YAAYG,iBAAiB,MAAM,KAAK33C,QAAQse,OAAO;IACxF;IAMAwR,QAAQ;AACN,YAAMonB,WAAW,KAAKA;AACtB,YAAMv/B,SAAS,KAAKA;AACpB,aAAOu/B,SAASj9C,UAAU0d,OAAOu/B,SAAS,CAAA,EAAG59C,KAAK;IACpD;IAMA2c,OAAO;AACL,YAAMihC,WAAW,KAAKA;AACtB,YAAMv/B,SAAS,KAAKA;AACpB,YAAMxM,QAAQ+rC,SAASj9C;AACvB,aAAOkR,SAASwM,OAAOu/B,SAAS/rC,QAAQ,CAAA,EAAG9J,GAAG;IAChD;IASAu2C,YAAYhgC,OAAO+oB,UAAU;AAC3B,YAAM3gC,UAAU,KAAKA;AACrB,YAAMU,QAAQkX,MAAM+oB,QAAS;AAC7B,YAAMhpB,SAAS,KAAKA;AACpB,YAAMu/B,WAAWW,eAAe,MAAM;QAAClX;QAAUrnC,OAAOoH;QAAOW,KAAKX;MAAK,CAAA;AAEzE,UAAI,CAACw2C,SAASj9C,QAAQ;AACpB;;AAGF,YAAM42B,SAAS,CAAA;AACf,YAAMinB,eAAerB,wBAAwBz2C,OAAAA;AAC7C,UAAI9F,IAAGuI;AACP,WAAKvI,KAAI,GAAGuI,OAAOy0C,SAASj9C,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAM,EAACZ,OAAAA,QAAO+H,IAAAA,IAAO61C,SAASh9C,EAAE;AAChC,cAAMikC,KAAKxmB,OAAOre,MAAM;AACxB,cAAM8kC,KAAKzmB,OAAOtW,GAAI;AACtB,YAAI88B,OAAOC,IAAI;AACbvN,iBAAO31B,KAAKijC,EAAAA;AACZ;;AAEF,cAAMn8B,KAAI5I,KAAKqY,KAAK/Q,QAAQy9B,GAAGwC,QAAAA,MAAcvC,GAAGuC,QAAAA,IAAYxC,GAAGwC,QAAAA,EAAQ;AACvE,cAAMoX,eAAeD,aAAa3Z,IAAIC,IAAIp8B,IAAGhC,QAAQk1C,OAAO;AAC5D6C,qBAAapX,QAAAA,IAAY/oB,MAAM+oB,QAAS;AACxC9P,eAAO31B,KAAK68C,YAAAA;MACd;AACA,aAAOlnB,OAAO52B,WAAW,IAAI42B,OAAO,CAAA,IAAKA;IAC3C;IAgBAglB,YAAYvuC,KAAKgX,SAASwH,QAAQ;AAChC,YAAMqxB,gBAAgBZ,kBAAkB,IAAI;AAC5C,aAAOY,cAAc7vC,KAAK,MAAMgX,SAASwH,MAAAA;IAC3C;IASAgxB,KAAKxvC,KAAKhO,QAAO6R,OAAO;AACtB,YAAM+rC,WAAW,KAAKA;AACtB,YAAMC,gBAAgBZ,kBAAkB,IAAI;AAC5C,UAAI54C,QAAO,KAAKD;AAEhBpE,MAAAA,SAAQA,UAAS;AACjB6R,cAAQA,SAAU,KAAKwM,OAAO1d,SAASX;AAEvC,iBAAWglB,WAAW44B,UAAU;AAC9Bv5C,QAAAA,SAAQw5C,cAAc7vC,KAAK,MAAMgX,SAAS;UAAChlB,OAAAA;UAAO+H,KAAK/H,SAAQ6R,QAAQ;QAAC,CAAA;MAC1E;AACA,aAAO,CAAC,CAACxN;IACX;IASAxD,KAAKmN,KAAK+F,WAAW/T,QAAO6R,OAAO;AACjC,YAAMnL,UAAU,KAAKA,WAAW,CAAA;AAChC,YAAM2X,SAAS,KAAKA,UAAU,CAAA;AAE9B,UAAIA,OAAO1d,UAAU+F,QAAQib,aAAa;AACxC3T,YAAIu2B,KAAI;AAER1jC,aAAKmN,KAAK,MAAMhO,QAAO6R,KAAAA;AAEvB7D,YAAIy2B,QAAO;;AAGb,UAAI,KAAKxf,UAAU;AAEjB,aAAKk5B,iBAAiB;AACtB,aAAKV,QAAQz+C;;IAEjB;EACF;AClbA,WAASorB,UAAQxB,IAAkB4C,KAAazf,MAAiBge,kBAA4B;AAC3F,UAAMrjB,UAAUkiB,GAAGliB;AACnB,UAAM,EAAC,CAACqF,IAAK,GAAE3E,MAAAA,IAASwhB,GAAG0B,SAAS;MAACve;OAAOge,gBAAAA;AAE5C,WAAQjqB,KAAKqY,IAAIqT,MAAMpkB,KAAAA,IAASV,QAAQ0X,SAAS1X,QAAQg4C;EAC3D;AAIe,MAAMC,eAAN,cAA2BppB,SAAAA;IAExC,OAAO/qB,KAAK;IAEZkB;IACA+S;IACArc;;;;IAKA,OAAO2D,WAAW;MAChB4b,aAAa;MACb+8B,WAAW;MACXx6B,kBAAkB;MAClB06B,aAAa;MACb39B,YAAY;MACZ7C,QAAQ;MACRO,UAAU;;;;;IAMZ,OAAO6W,gBAAgB;MACrBlU,iBAAiB;MACjBE,aAAa;;IAGf9iB,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAK0M,SAAS1M;AACd,WAAKyf,OAAOzf;AACZ,WAAKoD,OAAOpD;AAEZ,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEA6mB,QAAQy0B,QAAgBC,QAAgB/0B,kBAA4B;AAClE,YAAMrjB,UAAU,KAAKA;AACrB,YAAM,EAACyB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAKkiB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAASjqB,KAAK+pB,IAAIg1B,SAAS12C,IAAG,CAAA,IAAKrI,KAAK+pB,IAAIi1B,SAAS12C,IAAG,CAAA,IAAMtI,KAAK+pB,IAAInjB,QAAQg4C,YAAYh4C,QAAQ0X,QAAQ,CAAA;IAC7G;IAEA2gC,SAASF,QAAgB90B,kBAA4B;AACnD,aAAOK,UAAQ,MAAMy0B,QAAQ,KAAK90B,gBAAAA;IACpC;IAEAi1B,SAASF,QAAgB/0B,kBAA4B;AACnD,aAAOK,UAAQ,MAAM00B,QAAQ,KAAK/0B,gBAAAA;IACpC;IAEAY,eAAeZ,kBAA4B;AACzC,YAAM,EAAC5hB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAKkiB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAAO;QAAC5hB,GAAAA;QAAGC,GAAAA;MAAC;IACd;IAEAf,KAAKX,SAAqD;AACxDA,gBAAUA,WAAW,KAAKA,WAAW,CAAA;AACrC,UAAI0X,SAAS1X,QAAQ0X,UAAU;AAC/BA,eAASte,KAAKoC,IAAIkc,QAAQA,UAAU1X,QAAQk4C,eAAe,CAAA;AAC3D,YAAMj9B,cAAcvD,UAAU1X,QAAQib,eAAe;AACrD,cAAQvD,SAASuD,eAAe;IAClC;IAEA9gB,KAAKmN,KAA+B8F,MAAiB;AACnD,YAAMpN,UAAU,KAAKA;AAErB,UAAI,KAAK+X,QAAQ/X,QAAQ0X,SAAS,OAAO,CAAC+L,eAAe,MAAMrW,MAAM,KAAKzM,KAAKX,OAAAA,IAAW,CAAI,GAAA;AAC5F;;AAGFsH,UAAIuT,cAAc7a,QAAQ8a;AAC1BxT,UAAI0T,YAAYhb,QAAQib;AACxB3T,UAAIqT,YAAY3a,QAAQ4a;AACxB29B,gBAAUjxC,KAAKtH,SAAS,KAAKyB,GAAG,KAAKC,CAAC;IACxC;IAEAygB,WAAW;AACT,YAAMniB,UAAU,KAAKA,WAAW,CAAA;AAEhC,aAAOA,QAAQ0X,SAAS1X,QAAQg4C;IAClC;EACF;AC5FA,WAASQ,aAAaC,KAAKp1B,kBAAkB;AAC3C,UAAM,EAAC5hB,GAAAA,IAAGC,GAAAA,IAAGiS,MAAMoC,OAAOD,OAAAA,IAAmC2iC,IAAI70B,SAAS;MAAC;MAAK;MAAK;MAAQ;MAAS;OAAWP,gBAAAA;AAEjH,QAAIvhB,MAAMF,OAAOD,KAAKE,QAAQ62C;AAE9B,QAAID,IAAI/kC,YAAY;AAClBglC,aAAO5iC,SAAS;AAChBhU,aAAO1I,KAAKC,IAAIoI,IAAGkS,IAAAA;AACnB/R,cAAQxI,KAAKoC,IAAIiG,IAAGkS,IAAAA;AACpBhS,YAAMD,KAAIg3C;AACV72C,eAASH,KAAIg3C;WACR;AACLA,aAAO3iC,QAAQ;AACfjU,aAAOL,KAAIi3C;AACX92C,cAAQH,KAAIi3C;AACZ/2C,YAAMvI,KAAKC,IAAIqI,IAAGiS,IAAAA;AAClB9R,eAASzI,KAAKoC,IAAIkG,IAAGiS,IAAAA;;AAGvB,WAAO;MAAC7R;MAAMH;MAAKC;MAAOC;IAAM;EAClC;AAEA,WAAS82C,YAAY5gC,OAAMrX,OAAOrH,KAAKmC,KAAK;AAC1C,WAAOuc,QAAO,IAAIggB,YAAYr3B,OAAOrH,KAAKmC,GAAI;EAChD;AAEA,WAASo9C,iBAAiBH,KAAKI,MAAMC,MAAM;AACzC,UAAMp4C,QAAQ+3C,IAAIz4C,QAAQib;AAC1B,UAAMlD,QAAO0gC,IAAI3kC;AACjB,UAAMu9B,KAAI0H,OAAOr4C,KAAAA;AAEjB,WAAO;MACLsB,GAAG22C,YAAY5gC,MAAKpW,KAAK0vC,GAAE1vC,KAAK,GAAGm3C,IAAAA;MACnC72C,GAAG02C,YAAY5gC,MAAKnW,OAAOyvC,GAAEzvC,OAAO,GAAGi3C,IAAAA;MACvC32C,GAAGy2C,YAAY5gC,MAAKlW,QAAQwvC,GAAExvC,QAAQ,GAAGi3C,IAAAA;MACzC32C,GAAGw2C,YAAY5gC,MAAKjW,MAAMuvC,GAAEvvC,MAAM,GAAG+2C,IAAAA;IACvC;EACF;AAEA,WAAS1H,kBAAkBsH,KAAKI,MAAMC,MAAM;AAC1C,UAAM,EAAC/kC,mBAAkB,IAAI0kC,IAAI70B,SAAS;MAAC;IAAqB,CAAA;AAChE,UAAMljB,QAAQ+3C,IAAIz4C,QAAQsxC;AAC1B,UAAMD,KAAI2H,cAAct4C,KAAAA;AACxB,UAAMu4C,OAAO7/C,KAAKC,IAAIw/C,MAAMC,IAAAA;AAC5B,UAAM/gC,QAAO0gC,IAAI3kC;AAIjB,UAAMolC,eAAenlC,sBAAsB9U,SAASyB,KAAAA;AAEpD,WAAO;MACLy4C,SAASR,YAAY,CAACO,gBAAgBnhC,MAAKpW,OAAOoW,MAAKjW,MAAMuvC,GAAE8H,SAAS,GAAGF,IAAAA;MAC3EG,UAAUT,YAAY,CAACO,gBAAgBnhC,MAAKpW,OAAOoW,MAAKnW,OAAOyvC,GAAE+H,UAAU,GAAGH,IAAAA;MAC9EI,YAAYV,YAAY,CAACO,gBAAgBnhC,MAAKlW,UAAUkW,MAAKjW,MAAMuvC,GAAEgI,YAAY,GAAGJ,IAAAA;MACpFK,aAAaX,YAAY,CAACO,gBAAgBnhC,MAAKlW,UAAUkW,MAAKnW,OAAOyvC,GAAEiI,aAAa,GAAGL,IAAAA;IACzF;EACF;AAEA,WAASM,cAAcd,KAAK;AAC1B,UAAMe,SAAShB,aAAaC,GAAAA;AAC5B,UAAM1iC,QAAQyjC,OAAO53C,QAAQ43C,OAAO13C;AACpC,UAAMgU,SAAS0jC,OAAO33C,SAAS23C,OAAO73C;AACtC,UAAMmd,SAAS85B,iBAAiBH,KAAK1iC,QAAQ,GAAGD,SAAS,CAAA;AACzD,UAAM4B,SAASy5B,kBAAkBsH,KAAK1iC,QAAQ,GAAGD,SAAS,CAAA;AAE1D,WAAO;MACL2jC,OAAO;QACLh4C,GAAG+3C,OAAO13C;QACVJ,GAAG83C,OAAO73C;QACV2lB,GAAGvR;QACHyR,GAAG1R;QACH4B;MACF;MACAq8B,OAAO;QACLtyC,GAAG+3C,OAAO13C,OAAOgd,OAAO3c;QACxBT,GAAG83C,OAAO73C,MAAMmd,OAAO9c;QACvBslB,GAAGvR,QAAQ+I,OAAO3c,IAAI2c,OAAO7c;QAC7BulB,GAAG1R,SAASgJ,OAAO9c,IAAI8c,OAAO5c;QAC9BwV,QAAQ;UACNyhC,SAAS//C,KAAKoC,IAAI,GAAGkc,OAAOyhC,UAAU//C,KAAKoC,IAAIsjB,OAAO9c,GAAG8c,OAAO3c,CAAC,CAAA;UACjEi3C,UAAUhgD,KAAKoC,IAAI,GAAGkc,OAAO0hC,WAAWhgD,KAAKoC,IAAIsjB,OAAO9c,GAAG8c,OAAO7c,CAAC,CAAA;UACnEo3C,YAAYjgD,KAAKoC,IAAI,GAAGkc,OAAO2hC,aAAajgD,KAAKoC,IAAIsjB,OAAO5c,GAAG4c,OAAO3c,CAAC,CAAA;UACvEm3C,aAAalgD,KAAKoC,IAAI,GAAGkc,OAAO4hC,cAAclgD,KAAKoC,IAAIsjB,OAAO5c,GAAG4c,OAAO7c,CAAC,CAAA;QAC3E;MACF;IACF;EACF;AAEA,WAASyhB,QAAQ+0B,KAAKh3C,IAAGC,IAAG2hB,kBAAkB;AAC5C,UAAMq2B,QAAQj4C,OAAM;AACpB,UAAMk4C,QAAQj4C,OAAM;AACpB,UAAMk4C,WAAWF,SAASC;AAC1B,UAAMH,SAASf,OAAO,CAACmB,YAAYpB,aAAaC,KAAKp1B,gBAAAA;AAErD,WAAOm2B,WACHE,SAASnF,WAAW9yC,IAAG+3C,OAAO13C,MAAM03C,OAAO53C,KAAK,OAChD+3C,SAASpF,WAAW7yC,IAAG83C,OAAO73C,KAAK63C,OAAO33C,MAAM;EACtD;AAEA,WAASg4C,UAAUniC,QAAQ;AACzB,WAAOA,OAAOyhC,WAAWzhC,OAAO0hC,YAAY1hC,OAAO2hC,cAAc3hC,OAAO4hC;EAC1E;AAOA,WAASQ,kBAAkBxyC,KAAKyyC,MAAM;AACpCzyC,QAAIyyC,KAAKA,KAAKt4C,GAAGs4C,KAAKr4C,GAAGq4C,KAAKzyB,GAAGyyB,KAAKvyB,CAAC;EACzC;AAEA,WAASwyB,YAAYD,MAAME,QAAQC,UAAU,CAAA,GAAI;AAC/C,UAAMz4C,KAAIs4C,KAAKt4C,MAAMy4C,QAAQz4C,IAAI,CAACw4C,SAAS;AAC3C,UAAMv4C,KAAIq4C,KAAKr4C,MAAMw4C,QAAQx4C,IAAI,CAACu4C,SAAS;AAC3C,UAAM3yB,MAAKyyB,KAAKt4C,IAAIs4C,KAAKzyB,MAAM4yB,QAAQz4C,IAAIy4C,QAAQ5yB,IAAI2yB,SAAS,KAAKx4C;AACrE,UAAM+lB,MAAKuyB,KAAKr4C,IAAIq4C,KAAKvyB,MAAM0yB,QAAQx4C,IAAIw4C,QAAQ1yB,IAAIyyB,SAAS,KAAKv4C;AACrE,WAAO;MACLD,GAAGs4C,KAAKt4C,IAAIA;MACZC,GAAGq4C,KAAKr4C,IAAIA;MACZ4lB,GAAGyyB,KAAKzyB,IAAIA;MACZE,GAAGuyB,KAAKvyB,IAAIA;MACZ9P,QAAQqiC,KAAKriC;IACf;EACF;AAEe,MAAMyiC,aAAN,cAAyBtrB,SAAAA;IAEtC,OAAO/qB,KAAK;IAKZ,OAAOzE,WAAW;MAChByU,eAAe;MACfmH,aAAa;MACbq2B,cAAc;MACd98B,eAAe;MACf+F,YAAYjiB;;IAMd,OAAOw2B,gBAAgB;MACrBlU,iBAAiB;MACjBE,aAAa;;IAGf9iB,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAKob,aAAapb;AAClB,WAAKqb,OAAOrb;AACZ,WAAKyd,QAAQzd;AACb,WAAKwd,SAASxd;AACd,WAAKkc,gBAAgBlc;AAErB,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEA1C,KAAKmN,KAAK;AACR,YAAM,EAACkN,eAAexU,SAAS,EAAC8a,aAAaF,gBAAAA,EAAgB,IAAI;AACjE,YAAM,EAACm5B,OAAO0F,MAAAA,IAASF,cAAc,IAAI;AACzC,YAAMa,cAAcP,UAAUJ,MAAM/hC,MAAM,IAAI2iC,qBAAqBP;AAEnExyC,UAAIu2B,KAAI;AAER,UAAI4b,MAAMnyB,MAAMysB,MAAMzsB,KAAKmyB,MAAMjyB,MAAMusB,MAAMvsB,GAAG;AAC9ClgB,YAAIi3B,UAAS;AACb6b,oBAAY9yC,KAAK0yC,YAAYP,OAAOjlC,eAAeu/B,KAAAA,CAAAA;AACnDzsC,YAAI4F,KAAI;AACRktC,oBAAY9yC,KAAK0yC,YAAYjG,OAAO,CAACv/B,eAAeilC,KAAAA,CAAAA;AACpDnyC,YAAIqT,YAAYG;AAChBxT,YAAIiB,KAAK,SAAA;;AAGXjB,UAAIi3B,UAAS;AACb6b,kBAAY9yC,KAAK0yC,YAAYjG,OAAOv/B,aAAAA,CAAAA;AACpClN,UAAIqT,YAAYC;AAChBtT,UAAIiB,KAAI;AAERjB,UAAIy2B,QAAO;IACb;IAEAra,QAAQy0B,QAAQC,QAAQ/0B,kBAAkB;AACxC,aAAOK,QAAQ,MAAMy0B,QAAQC,QAAQ/0B,gBAAAA;IACvC;IAEAg1B,SAASF,QAAQ90B,kBAAkB;AACjC,aAAOK,QAAQ,MAAMy0B,QAAQ,MAAM90B,gBAAAA;IACrC;IAEAi1B,SAASF,QAAQ/0B,kBAAkB;AACjC,aAAOK,QAAQ,MAAM,MAAM00B,QAAQ/0B,gBAAAA;IACrC;IAEAY,eAAeZ,kBAAkB;AAC/B,YAAM,EAAC5hB,GAAAA,IAAGC,GAAAA,IAAGiS,MAAMD,WAAU,IAA6B,KAAKkQ,SAAS;QAAC;QAAK;QAAK;QAAQ;SAAeP,gBAAAA;AAC1G,aAAO;QACL5hB,GAAGiS,cAAcjS,KAAIkS,QAAQ,IAAIlS;QACjCC,GAAGgS,aAAahS,MAAKA,KAAIiS,QAAQ;MACnC;IACF;IAEAwO,SAAS9c,MAAM;AACb,aAAOA,SAAS,MAAM,KAAK0Q,QAAQ,IAAI,KAAKD,SAAS;IACvD;EACF;;;;;;;;ACpNA,MAAMwkC,gBAAgB;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;;EACD;AAGD,MAAMC,oBAAoCD,8BAAc9/B,IAAIpe,CAAAA,WAASA,OAAMo+C,QAAQ,QAAQ,OAASA,EAAAA,QAAQ,KAAK,QAAA,CAAA;AAEjH,WAASC,eAAevgD,IAAW;AACjC,WAAOogD,cAAcpgD,KAAIogD,cAAcrgD,MAAM;EAC/C;AAEA,WAASygD,mBAAmBxgD,IAAW;AACrC,WAAOqgD,kBAAkBrgD,KAAIqgD,kBAAkBtgD,MAAM;EACvD;AAEA,WAAS0gD,uBAAuBx0C,SAAuBjM,IAAW;AAChEiM,YAAQ2U,cAAc2/B,eAAevgD,EAAAA;AACrCiM,YAAQyU,kBAAkB8/B,mBAAmBxgD,EAAAA;AAE7C,WAAO,EAAEA;EACX;AAEA,WAAS0gD,wBAAwBz0C,SAAuBjM,IAAW;AACjEiM,YAAQyU,kBAAkBzU,QAAQ9C,KAAKmX,IAAI,MAAMigC,eAAevgD,IAAAA,CAAAA;AAEhE,WAAOA;EACT;AAEA,WAAS2gD,yBAAyB10C,SAAuBjM,IAAW;AAClEiM,YAAQyU,kBAAkBzU,QAAQ9C,KAAKmX,IAAI,MAAMkgC,mBAAmBxgD,IAAAA,CAAAA;AAEpE,WAAOA;EACT;AAEA,WAAS4gD,aAAatiD,OAAc;AAClC,QAAI0B,KAAI;AAER,WAAO,CAACiM,SAAuBnD,iBAAyB;AACtD,YAAM+B,aAAavM,MAAMqR,eAAe7G,YAAAA,EAAc+B;AAEtD,UAAIA,sBAAsB4U,oBAAoB;AAC5Czf,QAAAA,KAAI0gD,wBAAwBz0C,SAASjM,EAAAA;iBAC5B6K,sBAAsBma,qBAAqB;AACpDhlB,QAAAA,KAAI2gD,yBAAyB10C,SAASjM,EAAAA;MACxC,WAAW6K,YAAY;AACrB7K,QAAAA,KAAIygD,uBAAuBx0C,SAASjM,EAAAA;;IAExC;EACF;AAEA,WAAS6gD,0BACPhhC,cACA;AACA,QAAIihC;AAEJ,SAAKA,MAAKjhC,cAAa;AACrB,UAAIA,aAAYihC,EAAAA,EAAGlgC,eAAef,aAAYihC,EAAAA,EAAGpgC,iBAAiB;AAChE,eAAO;;IAEX;AAEA,WAAO;EACT;AAEA,WAASqgC,yBACP9X,YACA;AACA,WAAOA,eAAeA,WAAWroB,eAAeqoB,WAAWvoB;EAC7D;AAEA,MAAA,gBAAe;IACb9W,IAAI;IAEJzE,UAAU;MACRswB,SAAS;MACTurB,eAAe;IACjB;IAEA9xB,aAAa5wB,OAAc2iD,OAAOn7C,SAA8B;AAC9D,UAAI,CAACA,QAAQ2vB,SAAS;AACpB;;AAGF,YAAM,EACJtsB,MAAM,EAACuG,SAAAA,GACP5J,SAASo7C,aAAY,IACnB5iD,MAAMqG;AACV,YAAM,EAACsO,UAAAA,UAAQ,IAAIiuC;AAEnB,UAAI,CAACp7C,QAAQk7C,kBAAkBH,0BAA0BnxC,QAAaqxC,KAAAA,yBAAyBG,YAAkBjuC,KAAAA,aAAY4tC,0BAA0B5tC,SAAAA,IAAa;AAClK;;AAGF,YAAMkuC,YAAYP,aAAatiD,KAAAA;AAE/BoR,eAAS5Q,QAAQqiD,SAAAA;IACnB;EACF;AClHA,WAASC,eAAej4C,MAAM/J,QAAO6R,OAAOgb,gBAAgBnmB,SAAS;AASnE,UAAMu7C,UAAUv7C,QAAQu7C,WAAWp1B;AAEnC,QAAIo1B,WAAWpwC,OAAO;AACpB,aAAO9H,KAAKopC,MAAMnzC,QAAOA,SAAQ6R,KAAAA;;AAGnC,UAAMqwC,YAAY,CAAA;AAElB,UAAMC,eAAetwC,QAAQ,MAAMowC,UAAU;AAC7C,QAAIG,eAAe;AACnB,UAAMC,WAAWriD,SAAQ6R,QAAQ;AAEjC,QAAIiG,KAAI9X;AACR,QAAIY,IAAG0hD,cAAcC,SAASzuC,MAAM0uC;AAEpCN,cAAUE,cAAAA,IAAkBr4C,KAAK+N,EAAE;AAEnC,SAAKlX,KAAI,GAAGA,KAAIqhD,UAAU,GAAGrhD,MAAK;AAChC,UAAI87C,OAAO;AACX,UAAI+F,OAAO;AACX,UAAIr5B;AAGJ,YAAMs5B,gBAAgB5iD,KAAKoE,OAAOtD,KAAI,KAAKuhD,WAAAA,IAAe,IAAIniD;AAC9D,YAAM2iD,cAAc7iD,KAAKC,IAAID,KAAKoE,OAAOtD,KAAI,KAAKuhD,WAAAA,IAAe,GAAGtwC,KAAS7R,IAAAA;AAC7E,YAAM4iD,iBAAiBD,cAAcD;AAErC,WAAKt5B,KAAIs5B,eAAet5B,KAAIu5B,aAAav5B,MAAK;AAC5CszB,gBAAQ3yC,KAAKqf,EAAE,EAACjhB;AAChBs6C,gBAAQ14C,KAAKqf,EAAE,EAAChhB;MAClB;AAEAs0C,cAAQkG;AACRH,cAAQG;AAGR,YAAMC,YAAY/iD,KAAKoE,MAAMtD,KAAIuhD,WAAAA,IAAe,IAAIniD;AACpD,YAAM8iD,UAAUhjD,KAAKC,IAAID,KAAKoE,OAAOtD,KAAI,KAAKuhD,WAAAA,IAAe,GAAGtwC,KAAS7R,IAAAA;AACzE,YAAM,EAACmI,GAAG46C,SAAS36C,GAAG46C,QAAAA,IAAWj5C,KAAK+N,EAAE;AAOxCyqC,gBAAUzuC,OAAO;AAEjB,WAAKsV,KAAIy5B,WAAWz5B,KAAI05B,SAAS15B,MAAK;AACpCtV,eAAO,MAAMhU,KAAKqY,KACf4qC,UAAUrG,SAAS3yC,KAAKqf,EAAAA,EAAGhhB,IAAI46C,YAC/BD,UAAUh5C,KAAKqf,EAAE,EAACjhB,MAAMs6C,OAAOO,QAAM;AAGxC,YAAIlvC,OAAOyuC,SAAS;AAClBA,oBAAUzuC;AACVwuC,yBAAev4C,KAAKqf,EAAE;AACtBo5B,kBAAQp5B;;MAEZ;AAEA84B,gBAAUE,cAAAA,IAAkBE;AAC5BxqC,MAAAA,KAAI0qC;IACN;AAGAN,cAAUE,cAAAA,IAAkBr4C,KAAKs4C,QAAS;AAE1C,WAAOH;EACT;AAEA,WAASe,iBAAiBl5C,MAAM/J,QAAO6R,OAAOgb,gBAAgB;AAC5D,QAAI6vB,OAAO;AACX,QAAIC,SAAS;AACb,QAAI/7C,IAAG0d,OAAOnW,IAAGC,IAAGw0C,OAAOsG,UAAUC,UAAUC,YAAYhjC,MAAMJ;AACjE,UAAMkiC,YAAY,CAAA;AAClB,UAAMG,WAAWriD,SAAQ6R,QAAQ;AAEjC,UAAMwxC,OAAOt5C,KAAK/J,MAAAA,EAAOmI;AACzB,UAAMm7C,OAAOv5C,KAAKs4C,QAAAA,EAAUl6C;AAC5B,UAAMo7C,KAAKD,OAAOD;AAElB,SAAKziD,KAAIZ,QAAOY,KAAIZ,SAAQ6R,OAAO,EAAEjR,IAAG;AACtC0d,cAAQvU,KAAKnJ,EAAE;AACfuH,MAAAA,MAAKmW,MAAMnW,IAAIk7C,QAAQE,KAAK12B;AAC5BzkB,MAAAA,KAAIkW,MAAMlW;AACV,YAAM40C,SAAS70C,KAAI;AAEnB,UAAI60C,WAAWJ,OAAO;AAEpB,YAAIx0C,KAAIgY,MAAM;AACZA,iBAAOhY;AACP86C,qBAAWtiD;mBACFwH,KAAI4X,MAAM;AACnBA,iBAAO5X;AACP+6C,qBAAWviD;;AAIb87C,gBAAQC,SAASD,OAAOp+B,MAAMnW,KAAK,EAAEw0C;aAChC;AAEL,cAAM6G,YAAY5iD,KAAI;AAEtB,YAAI,CAACiY,cAAcqqC,QAAa,KAAA,CAACrqC,cAAcsqC,QAAW,GAAA;AAKxD,gBAAMM,qBAAqB3jD,KAAKC,IAAImjD,UAAUC,QAAAA;AAC9C,gBAAMO,qBAAqB5jD,KAAKoC,IAAIghD,UAAUC,QAAAA;AAE9C,cAAIM,uBAAuBL,cAAcK,uBAAuBD,WAAW;AACzEtB,sBAAUtgD,KAAK;cACb,GAAGmI,KAAK05C,kBAAmB;cAC3Bt7C,GAAGu0C;YACL,CAAA;;AAEF,cAAIgH,uBAAuBN,cAAcM,uBAAuBF,WAAW;AACzEtB,sBAAUtgD,KAAK;cACb,GAAGmI,KAAK25C,kBAAmB;cAC3Bv7C,GAAGu0C;YACL,CAAA;;;AAMJ,YAAI97C,KAAI,KAAK4iD,cAAcJ,YAAY;AAErClB,oBAAUtgD,KAAKmI,KAAKy5C,SAAU,CAAA;;AAIhCtB,kBAAUtgD,KAAK0c,KAAAA;AACfs+B,gBAAQI;AACRL,iBAAS;AACTv8B,eAAOJ,OAAO5X;AACd86C,mBAAWC,WAAWC,aAAaxiD;;IAEvC;AAEA,WAAOshD;EACT;AAEA,WAASyB,sBAAsB92C,SAAS;AACtC,QAAIA,QAAQkY,YAAY;AACtB,YAAMhb,OAAO8C,QAAQwB;AACrB,aAAOxB,QAAQkY;AACf,aAAOlY,QAAQwB;AACfxI,aAAO+9C,eAAe/2C,SAAS,QAAQ;QACrCg3C,cAAc;QACdC,YAAY;QACZC,UAAU;QACV38C,OAAO2C;MACT,CAAA;;EAEJ;AAEA,WAASi6C,mBAAmB9kD,OAAO;AACjCA,UAAM6K,KAAKuG,SAAS5Q,QAAQ,CAACmN,YAAY;AACvC82C,4BAAsB92C,OAAAA;IACxB,CAAA;EACF;AAEA,WAASo3C,0CAA0C95C,MAAMkU,QAAQ;AAC/D,UAAM6lC,aAAa7lC,OAAO1d;AAE1B,QAAIX,SAAQ;AACZ,QAAI6R;AAEJ,UAAM,EAAChG,OAAM,IAAI1B;AACjB,UAAM,EAACpK,KAAKmC,KAAKwI,YAAYC,WAAU,IAAIkB,OAAOpB,cAAa;AAE/D,QAAIC,YAAY;AACd1K,MAAAA,SAAQy+B,YAAY9V,aAAatK,QAAQxS,OAAOE,MAAMhM,GAAK+oB,EAAAA,IAAI,GAAGo7B,aAAa,CAAA;;AAEjF,QAAIv5C,YAAY;AACdkH,cAAQ4sB,YAAY9V,aAAatK,QAAQxS,OAAOE,MAAM7J,GAAAA,EAAK6mB,KAAK,GAAG/oB,QAAOkkD,UAAclkD,IAAAA;WACnF;AACL6R,cAAQqyC,aAAalkD;;AAGvB,WAAO;MAACA,OAAAA;MAAO6R;IAAK;EACtB;AAEA,MAAA,oBAAe;IACbrH,IAAI;IAEJzE,UAAU;MACRo+C,WAAW;MACX9tB,SAAS;IACX;IAEA+tB,sBAAsB,CAACllD,OAAO4X,MAAMpQ,YAAY;AAC9C,UAAI,CAACA,QAAQ2vB,SAAS;AAEpB2tB,2BAAmB9kD,KAAAA;AACnB;;AAIF,YAAM2tB,iBAAiB3tB,MAAMud;AAE7Bvd,YAAM6K,KAAKuG,SAAS5Q,QAAQ,CAACmN,SAASnD,iBAAiB;AACrD,cAAM,EAAC2E,OAAO0B,UAAAA,IAAalD;AAC3B,cAAM1C,OAAOjL,MAAMqR,eAAe7G,YAAAA;AAClC,cAAMK,OAAOsE,SAASxB,QAAQ9C;AAE9B,YAAIpG,QAAQ;UAACoM;UAAW7Q,MAAMwH,QAAQqJ;QAAU,CAAA,MAAM,KAAK;AAEzD;;AAGF,YAAI,CAAC5F,KAAKsB,WAAWkD,oBAAoB;AAEvC;;AAGF,cAAM01C,QAAQnlD,MAAMqN,OAAOpC,KAAKsF,OAAO;AACvC,YAAI40C,MAAMhlD,SAAS,YAAYglD,MAAMhlD,SAAS,QAAQ;AAEpD;;AAGF,YAAIH,MAAMwH,QAAQiL,SAAS;AAEzB;;AAGF,YAAI,EAAC3R,OAAAA,QAAO6R,MAAAA,IAASoyC,0CAA0C95C,MAAMJ,IAAAA;AACrE,cAAMu6C,YAAY59C,QAAQ49C,aAAa,IAAIz3B;AAC3C,YAAIhb,SAASyyC,WAAW;AAEtBX,gCAAsB92C,OAAAA;AACtB;;AAGF,YAAIgM,cAAcxK,KAAQ,GAAA;AAIxBxB,kBAAQwB,QAAQtE;AAChB,iBAAO8C,QAAQ9C;AACflE,iBAAO+9C,eAAe/2C,SAAS,QAAQ;YACrCg3C,cAAc;YACdC,YAAY;YACZziD,KAAK,WAAW;AACd,qBAAO,KAAK0jB;YACd;YACAvjB,KAAK,SAASqqC,IAAG;AACf,mBAAKx9B,QAAQw9B;YACf;UACF,CAAA;;AAIF,YAAIqW;AACJ,gBAAQx7C,QAAQy9C,WAAS;UACzB,KAAK;AACHjC,wBAAYF,eAAej4C,MAAM/J,QAAO6R,OAAOgb,gBAAgBnmB,OAAAA;AAC/D;UACF,KAAK;AACHw7C,wBAAYe,iBAAiBl5C,MAAM/J,QAAO6R,OAAOgb,cAAAA;AACjD;UACF;AACE,kBAAM,IAAIpF,MAAM,qCAAqC/gB,QAAQy9C,SAAS,GAAG;QAC3E;AAEAt3C,gBAAQkY,aAAam9B;MACvB,CAAA;IACF;IAEArM,QAAQ32C,OAAO;AACb8kD,yBAAmB9kD,KAAAA;IACrB;EACF;AC5RO,WAASg/C,UAAUz5B,MAAMjhB,QAAQ6jC,UAAU;AAChD,UAAMuW,WAAWn5B,KAAKm5B;AACtB,UAAMv/B,SAASoG,KAAKpG;AACpB,UAAMkmC,UAAU/gD,OAAO6a;AACvB,UAAMspB,QAAQ,CAAA;AAEd,eAAW3iB,WAAW44B,UAAU;AAC9B,UAAI,EAAC59C,OAAAA,QAAO+H,IAAAA,IAAOid;AACnBjd,YAAMy8C,gBAAgBxkD,QAAO+H,KAAKsW,MAAAA;AAElC,YAAM6hC,SAASuE,WAAWpd,UAAUhpB,OAAOre,MAAAA,GAAQqe,OAAOtW,GAAAA,GAAMid,QAAQ3gB,IAAI;AAE5E,UAAI,CAACb,OAAOo6C,UAAU;AAGpBjW,cAAM/lC,KAAK;UACTk7B,QAAQ9X;UACRxhB,QAAQ08C;UACRlgD,OAAOqe,OAAOre,MAAM;UACpB+H,KAAKsW,OAAOtW,GAAI;QAClB,CAAA;AACA;;AAIF,YAAM28C,iBAAiBnG,eAAe/6C,QAAQ08C,MAAAA;AAE9C,iBAAWyE,OAAOD,gBAAgB;AAChC,cAAME,YAAYH,WAAWpd,UAAUkd,QAAQI,IAAI3kD,KAAK,GAAGukD,QAAQI,IAAI58C,GAAG,GAAG48C,IAAItgD,IAAI;AACrF,cAAMwgD,cAAcC,cAAc9/B,SAAS3G,QAAQumC,SAAAA;AAEnD,mBAAWG,cAAcF,aAAa;AACpCld,gBAAM/lC,KAAK;YACTk7B,QAAQioB;YACRvhD,QAAQmhD;YACR3kD,OAAO;cACL,CAACqnC,QAAAA,GAAW2d,SAAS9E,QAAQ0E,WAAW,SAAS9kD,KAAKoC,GAAG;YAC3D;YACA6F,KAAK;cACH,CAACs/B,QAAAA,GAAW2d,SAAS9E,QAAQ0E,WAAW,OAAO9kD,KAAKC,GAAG;YACzD;UACF,CAAA;QACF;MACF;IACF;AACA,WAAO4nC;EACT;AAEO,WAAS8c,WAAWpd,UAAU7Q,OAAO7Z,MAAMtY,OAAM;AACtD,QAAIA,OAAM;AACR;;AAEF,QAAIrE,SAAQw2B,MAAM6Q,QAAS;AAC3B,QAAIt/B,MAAM4U,KAAK0qB,QAAS;AAExB,QAAIA,aAAa,SAAS;AACxBrnC,MAAAA,SAAQilD,gBAAgBjlD,MAAAA;AACxB+H,YAAMk9C,gBAAgBl9C,GAAAA;;AAExB,WAAO;MAACs/B;MAAUrnC,OAAAA;MAAO+H;IAAG;EAC9B;AAEO,WAASm9C,oBAAoBC,UAAU1gC,MAAM;AAClD,UAAM,EAACtc,GAAAA,KAAI,MAAMC,GAAAA,KAAI,KAAI,IAAI+8C,YAAY,CAAA;AACzC,UAAMC,aAAa3gC,KAAKpG;AACxB,UAAMA,SAAS,CAAA;AACfoG,SAAKm5B,SAASl+C,QAAQ,CAAC,EAACM,OAAAA,QAAO+H,IAAG,MAAM;AACtCA,YAAMy8C,gBAAgBxkD,QAAO+H,KAAKq9C,UAAAA;AAClC,YAAM5uB,QAAQ4uB,WAAWplD,MAAM;AAC/B,YAAM2c,OAAOyoC,WAAWr9C,GAAI;AAC5B,UAAIK,OAAM,MAAM;AACdiW,eAAOzc,KAAK;UAACuG,GAAGquB,MAAMruB;UAAGC,GAAAA;QAAC,CAAA;AAC1BiW,eAAOzc,KAAK;UAACuG,GAAGwU,KAAKxU;UAAGC,GAAAA;QAAC,CAAA;iBAChBD,OAAM,MAAM;AACrBkW,eAAOzc,KAAK;UAACuG,GAAAA;UAAGC,GAAGouB,MAAMpuB;QAAC,CAAA;AAC1BiW,eAAOzc,KAAK;UAACuG,GAAAA;UAAGC,GAAGuU,KAAKvU;QAAC,CAAA;;IAE7B,CAAA;AACA,WAAOiW;EACT;AAEO,WAASmmC,gBAAgBxkD,QAAO+H,KAAKsW,QAAQ;AAClD,WAAMtW,MAAM/H,QAAO+H,OAAO;AACxB,YAAMuW,QAAQD,OAAOtW,GAAI;AACzB,UAAI,CAAC+U,MAAMwB,MAAMnW,CAAC,KAAK,CAAC2U,MAAMwB,MAAMlW,CAAC,GAAG;AACtC;;IAEJ;AACA,WAAOL;EACT;AAEA,WAASi9C,SAASltC,IAAGlP,IAAGnF,MAAM9D,KAAI;AAChC,QAAImY,MAAKlP,IAAG;AACV,aAAOjJ,IAAGmY,GAAErU,IAAAA,GAAOmF,GAAEnF,IAAK,CAAA;;AAE5B,WAAOqU,KAAIA,GAAErU,IAAK,IAAGmF,KAAIA,GAAEnF,IAAK,IAAG;EACrC;ACnFO,WAAS4hD,oBAAoBF,UAAU1gC,MAAM;AAClD,QAAIpG,SAAS,CAAA;AACb,QAAIja,QAAQ;AAEZ,QAAIiC,QAAQ8+C,QAAW,GAAA;AACrB/gD,cAAQ;AAERia,eAAS8mC;WACJ;AACL9mC,eAAS6mC,oBAAoBC,UAAU1gC,IAAAA;;AAGzC,WAAOpG,OAAO1d,SAAS,IAAIo9C,YAAY;MACrC1/B;MACA3X,SAAS;QAACo1C,SAAS;MAAC;MACpB13C;MACA6iB,WAAW7iB;IACb,CAAA,IAAK;EACP;AAEO,WAASkhD,iBAAiBxoB,QAAQ;AACvC,WAAOA,UAAUA,OAAO7tB,SAAS;EACnC;AC5BO,WAASs2C,eAAeC,SAASp8C,QAAOq8C,WAAW;AACxD,UAAM3oB,SAAS0oB,QAAQp8C,MAAM;AAC7B,QAAI6F,QAAO6tB,OAAO7tB;AAClB,UAAMy2C,UAAU;MAACt8C;IAAM;AACvB,QAAI5F;AAEJ,QAAI,CAACiiD,WAAW;AACd,aAAOx2C;;AAGT,WAAOA,UAAS,SAASy2C,QAAQ3oC,QAAQ9N,KAAAA,MAAU,IAAI;AACrD,UAAI,CAACrF,eAASqF,KAAO,GAAA;AACnB,eAAOA;;AAGTzL,eAASgiD,QAAQv2C,KAAK;AACtB,UAAI,CAACzL,QAAQ;AACX,eAAO;;AAGT,UAAIA,OAAOgwC,SAAS;AAClB,eAAOvkC;;AAGTy2C,cAAQ9jD,KAAKqN,KAAAA;AACbA,MAAAA,QAAOzL,OAAOyL;IAChB;AAEA,WAAO;EACT;AAOO,WAAS02C,YAAYlhC,MAAMrb,QAAOyI,OAAO;AAE9C,UAAM5C,QAAO22C,gBAAgBnhC,IAAAA;AAE7B,QAAI9e,SAASsJ,KAAO,GAAA;AAClB,aAAO6N,MAAM7N,MAAK7H,KAAK,IAAI,QAAQ6H;;AAGrC,QAAIzL,SAASqiD,WAAW52C,KAAAA;AAExB,QAAIrF,eAASpG,MAAW1D,KAAAA,KAAKoE,MAAMV,MAAAA,MAAYA,QAAQ;AACrD,aAAOsiD,kBAAkB72C,MAAK,CAAE,GAAE7F,QAAO5F,QAAQqO,KAAAA;;AAGnD,WAAO;MAAC;MAAU;MAAS;MAAO;MAAS;MAASkL,QAAQ9N,KAAAA,KAAS,KAAKA;EAC5E;AAEA,WAAS62C,kBAAkBC,SAAS38C,QAAO5F,QAAQqO,OAAO;AACxD,QAAIk0C,YAAY,OAAOA,YAAY,KAAK;AACtCviD,eAAS4F,SAAQ5F;;AAGnB,QAAIA,WAAW4F,UAAS5F,SAAS,KAAKA,UAAUqO,OAAO;AACrD,aAAO;;AAGT,WAAOrO;EACT;AAOO,WAASwiD,gBAAgB/2C,OAAMtH,OAAO;AAC3C,QAAI+4B,QAAQ;AACZ,QAAIzxB,UAAS,SAAS;AACpByxB,cAAQ/4B,MAAMY;eACL0G,UAAS,OAAO;AACzByxB,cAAQ/4B,MAAMU;eACL1C,SAASsJ,KAAO,GAAA;AAEzByxB,cAAQ/4B,MAAMyQ,iBAAiBnJ,MAAK7H,KAAK;eAChCO,MAAMqU,cAAc;AAC7B0kB,cAAQ/4B,MAAMqU,aAAY;;AAE5B,WAAO0kB;EACT;AAQO,WAASulB,gBAAgBh3C,OAAMtH,OAAO4R,YAAY;AACvD,QAAInS;AAEJ,QAAI6H,UAAS,SAAS;AACpB7H,cAAQmS;eACCtK,UAAS,OAAO;AACzB7H,cAAQO,MAAMjB,QAAQoB,UAAUH,MAAM5H,MAAM4H,MAAMzF;eACzCyD,SAASsJ,KAAO,GAAA;AAEzB7H,cAAQ6H,MAAK7H;WACR;AACLA,cAAQO,MAAMo5B,aAAY;;AAE5B,WAAO35B;EACT;AAKA,WAASw+C,gBAAgBnhC,MAAM;AAC7B,UAAM/d,UAAU+d,KAAK/d;AACrB,UAAMw/C,aAAax/C,QAAQuI;AAC3B,QAAIA,QAAOS,eAAew2C,cAAcA,WAAW1iD,QAAQ0iD,UAAAA;AAE3D,QAAIj3C,UAASjQ,QAAW;AACtBiQ,MAAAA,QAAO,CAAC,CAACvI,QAAQ4a;;AAGnB,QAAIrS,UAAS,SAASA,UAAS,MAAM;AACnC,aAAO;;AAGT,QAAIA,UAAS,MAAM;AACjB,aAAO;;AAET,WAAOA;EACT;AC1HO,WAASk3C,gBAAgBrpB,QAAQ;AACtC,UAAM,EAACn1B,OAAOyB,OAAAA,QAAOqb,KAAAA,IAAQqY;AAC7B,UAAMze,SAAS,CAAA;AACf,UAAMu/B,WAAWn5B,KAAKm5B;AACtB,UAAMwI,eAAe3hC,KAAKpG;AAC1B,UAAMgoC,aAAaC,cAAc3+C,OAAOyB,MAAAA;AACxCi9C,eAAWzkD,KAAKyjD,oBAAoB;MAACl9C,GAAG;MAAMC,GAAGT,MAAMY;OAASkc,IAAAA,CAAAA;AAEhE,aAAS7jB,KAAI,GAAGA,KAAIg9C,SAASj9C,QAAQC,MAAK;AACxC,YAAMokB,UAAU44B,SAASh9C,EAAE;AAC3B,eAASwoB,KAAIpE,QAAQhlB,OAAOopB,MAAKpE,QAAQjd,KAAKqhB,MAAK;AACjDm9B,uBAAeloC,QAAQ+nC,aAAah9B,EAAAA,GAAIi9B,UAAAA;MAC1C;IACF;AACA,WAAO,IAAItI,YAAY;MAAC1/B;MAAQ3X,SAAS,CAAA;IAAE,CAAA;EAC7C;AAOA,WAAS4/C,cAAc3+C,OAAOyB,QAAO;AACnC,UAAMo9C,QAAQ,CAAA;AACd,UAAMnrB,QAAQ1zB,MAAM4D,wBAAwB,MAAA;AAE5C,aAAS3K,KAAI,GAAGA,KAAIy6B,MAAM16B,QAAQC,MAAK;AACrC,YAAMuJ,OAAOkxB,MAAMz6B,EAAE;AACrB,UAAIuJ,KAAKf,UAAUA,QAAO;AACxB;;AAEF,UAAI,CAACe,KAAKuD,QAAQ;AAChB84C,cAAMC,QAAQt8C,KAAK0C,OAAO;;IAE9B;AACA,WAAO25C;EACT;AAOA,WAASD,eAAeloC,QAAQqoC,aAAaL,YAAY;AACvD,UAAMM,YAAY,CAAA;AAClB,aAASv9B,KAAI,GAAGA,KAAIi9B,WAAW1lD,QAAQyoB,MAAK;AAC1C,YAAM3E,OAAO4hC,WAAWj9B,EAAE;AAC1B,YAAM,EAACoN,OAAO7Z,MAAM2B,MAAAA,IAASsoC,UAAUniC,MAAMiiC,aAAa,GAAA;AAE1D,UAAI,CAACpoC,SAAUkY,SAAS7Z,MAAO;AAC7B;;AAEF,UAAI6Z,OAAO;AAGTmwB,kBAAUF,QAAQnoC,KAAAA;aACb;AACLD,eAAOzc,KAAK0c,KAAAA;AACZ,YAAI,CAAC3B,MAAM;AAET;;;IAGN;AACA0B,WAAOzc,KAAQ+kD,GAAAA,SAAAA;EACjB;AAQA,WAASC,UAAUniC,MAAMiiC,aAAarf,UAAU;AAC9C,UAAM/oB,QAAQmG,KAAK65B,YAAYoI,aAAarf,QAAAA;AAC5C,QAAI,CAAC/oB,OAAO;AACV,aAAO,CAAA;;AAGT,UAAMuoC,aAAavoC,MAAM+oB,QAAS;AAClC,UAAMuW,WAAWn5B,KAAKm5B;AACtB,UAAMwH,aAAa3gC,KAAKpG;AACxB,QAAImY,QAAQ;AACZ,QAAI7Z,OAAO;AACX,aAAS/b,KAAI,GAAGA,KAAIg9C,SAASj9C,QAAQC,MAAK;AACxC,YAAMokB,UAAU44B,SAASh9C,EAAE;AAC3B,YAAMkmD,aAAa1B,WAAWpgC,QAAQhlB,KAAK,EAAEqnC,QAAS;AACtD,YAAM0f,YAAY3B,WAAWpgC,QAAQjd,GAAG,EAAEs/B,QAAS;AACnD,UAAI4T,WAAW4L,YAAYC,YAAYC,SAAY,GAAA;AACjDvwB,gBAAQqwB,eAAeC;AACvBnqC,eAAOkqC,eAAeE;AACtB;;IAEJ;AACA,WAAO;MAACvwB;MAAO7Z;MAAM2B;IAAK;EAC5B;AC1GO,MAAM0oC,YAAN,MAAMA;IACXtoD,YAAYmJ,MAAM;AAChB,WAAKM,IAAIN,KAAKM;AACd,WAAKC,IAAIP,KAAKO;AACd,WAAKgW,SAASvW,KAAKuW;IACrB;IAEAm+B,YAAYvuC,KAAKkyC,QAAQr4C,MAAM;AAC7B,YAAM,EAACM,GAAAA,IAAGC,GAAAA,IAAGgW,OAAM,IAAI;AACvB8hC,eAASA,UAAU;QAAClgD,OAAO;QAAG+H,KAAKmX;MAAG;AACtClR,UAAI6V,IAAI1b,IAAGC,IAAGgW,QAAQ8hC,OAAOn4C,KAAKm4C,OAAOlgD,OAAO,IAAI;AACpD,aAAO,CAAC6H,KAAKq4C;IACf;IAEA5B,YAAYhgC,OAAO;AACjB,YAAM,EAACnW,GAAAA,IAAGC,GAAAA,IAAGgW,OAAM,IAAI;AACvB,YAAMwB,QAAQtB,MAAMsB;AACpB,aAAO;QACLzX,GAAGA,KAAIrI,KAAKwf,IAAIM,KAASxB,IAAAA;QACzBhW,GAAGA,KAAItI,KAAK0f,IAAII,KAASxB,IAAAA;QACzBwB;MACF;IACF;EACF;ACdO,WAASqnC,WAAWnqB,QAAQ;AACjC,UAAM,EAAC59B,OAAO+P,MAAAA,OAAMwV,KAAAA,IAAQqY;AAE5B,QAAIlzB,eAASqF,KAAO,GAAA;AAClB,aAAOi4C,eAAehoD,OAAO+P,KAAAA;;AAG/B,QAAIA,UAAS,SAAS;AACpB,aAAOk3C,gBAAgBrpB,MAAAA;;AAGzB,QAAI7tB,UAAS,SAAS;AACpB,aAAO;;AAGT,UAAMk2C,WAAWgC,gBAAgBrqB,MAAAA;AAEjC,QAAIqoB,oBAAoB6B,WAAW;AACjC,aAAO7B;;AAGT,WAAOE,oBAAoBF,UAAU1gC,IAAAA;EACvC;AAMA,WAASyiC,eAAehoD,OAAOkK,QAAO;AACpC,UAAMe,OAAOjL,MAAMqR,eAAenH,MAAAA;AAClC,UAAMoqC,UAAUrpC,QAAQjL,MAAMqjB,iBAAiBnZ,MAAAA;AAC/C,WAAOoqC,UAAUrpC,KAAK0C,UAAU;EAClC;AAEA,WAASs6C,gBAAgBrqB,QAAQ;AAC/B,UAAMn1B,QAAQm1B,OAAOn1B,SAAS,CAAA;AAE9B,QAAIA,MAAMwf,0BAA0B;AAClC,aAAOigC,wBAAwBtqB,MAAAA;;AAEjC,WAAOuqB,sBAAsBvqB,MAAAA;EAC/B;AAGA,WAASuqB,sBAAsBvqB,QAAQ;AACrC,UAAM,EAACn1B,QAAQ,CAAA,GAAIsH,MAAAA,MAAAA,IAAQ6tB;AAC3B,UAAM4D,QAAQslB,gBAAgB/2C,OAAMtH,KAAAA;AAEpC,QAAIiC,eAAS82B,KAAQ,GAAA;AACnB,YAAMtmB,aAAazS,MAAMuS,aAAY;AAErC,aAAO;QACL/R,GAAGiS,aAAasmB,QAAQ;QACxBt4B,GAAGgS,aAAa,OAAOsmB;MACzB;;AAGF,WAAO;EACT;AAEA,WAAS0mB,wBAAwBtqB,QAAQ;AACvC,UAAM,EAACn1B,OAAOsH,MAAAA,MAAAA,IAAQ6tB;AACtB,UAAMp2B,UAAUiB,MAAMjB;AACtB,UAAM/F,SAASgH,MAAM2K,UAAS,EAAG3R;AACjC,UAAMX,SAAQ0G,QAAQoB,UAAUH,MAAMzF,MAAMyF,MAAM5H;AAClD,UAAMqH,QAAQ6+C,gBAAgBh3C,OAAMtH,OAAO3H,MAAAA;AAC3C,UAAMwD,SAAS,CAAA;AAEf,QAAIkD,QAAQ+U,KAAKsK,UAAU;AACzB,YAAMxJ,SAAS5U,MAAMwf,yBAAyB,GAAGnnB,MAAAA;AACjD,aAAO,IAAIgnD,UAAU;QACnB7+C,GAAGoU,OAAOpU;QACVC,GAAGmU,OAAOnU;QACVgW,QAAQzW,MAAMmf,8BAA8B1f,KAAAA;MAC9C,CAAA;;AAGF,aAASxG,KAAI,GAAGA,KAAID,QAAQ,EAAEC,IAAG;AAC/B4C,aAAO5B,KAAK+F,MAAMwf,yBAAyBvmB,IAAGwG,KAAAA,CAAAA;IAChD;AACA,WAAO5D;EACT;ACzFO,WAAS8jD,UAAUt5C,KAAK8uB,QAAQhpB,MAAM;AAC3C,UAAMtQ,SAASyjD,WAAWnqB,MAAAA;AAC1B,UAAM,EAACrY,MAAM9c,OAAOoE,KAAAA,IAAQ+wB;AAC5B,UAAMyqB,WAAW9iC,KAAK/d;AACtB,UAAMw/C,aAAaqB,SAASt4C;AAC5B,UAAMnM,SAAQykD,SAASjmC;AACvB,UAAM,EAACkmC,QAAQ1kD,QAAO0jD,QAAQ1jD,OAAK,IAAIojD,cAAc,CAAA;AACrD,QAAI1iD,UAAUihB,KAAKpG,OAAO1d,QAAQ;AAChC8kC,eAASz3B,KAAK8F,IAAAA;AACd2zC,aAAOz5C,KAAK;QAACyW;QAAMjhB;QAAQgkD;QAAOhB;QAAO1yC;QAAMnM;QAAOoE;MAAI,CAAA;AAC1D65B,iBAAW53B,GAAAA;;EAEf;AAEA,WAASy5C,OAAOz5C,KAAKzK,KAAK;AACxB,UAAM,EAACkhB,MAAMjhB,QAAQgkD,OAAOhB,OAAO1yC,MAAMnM,MAAAA,IAASpE;AAClD,UAAM8jC,WAAW5iB,KAAKrgB,QAAQ,UAAUb,IAAIwI;AAE5CiC,QAAIu2B,KAAI;AAER,QAAI8C,aAAa,OAAOmf,UAAUgB,OAAO;AACvCE,mBAAa15C,KAAKxK,QAAQsQ,KAAKzL,GAAG;AAClC4G,WAAKjB,KAAK;QAACyW;QAAMjhB;QAAQV,OAAO0kD;QAAO7/C;QAAO0/B;MAAQ,CAAA;AACtDr5B,UAAIy2B,QAAO;AACXz2B,UAAIu2B,KAAI;AACRmjB,mBAAa15C,KAAKxK,QAAQsQ,KAAKvL,MAAM;;AAEvC0G,SAAKjB,KAAK;MAACyW;MAAMjhB;MAAQV,OAAO0jD;MAAO7+C;MAAO0/B;IAAQ,CAAA;AAEtDr5B,QAAIy2B,QAAO;EACb;AAEA,WAASijB,aAAa15C,KAAKxK,QAAQmkD,OAAO;AACxC,UAAM,EAAC/J,UAAUv/B,OAAAA,IAAU7a;AAC3B,QAAIgzB,QAAQ;AACZ,QAAIoxB,WAAW;AAEf55C,QAAIi3B,UAAS;AACb,eAAWjgB,WAAW44B,UAAU;AAC9B,YAAM,EAAC59C,OAAAA,QAAO+H,IAAAA,IAAOid;AACrB,YAAMS,aAAapH,OAAOre,MAAM;AAChC,YAAM0lB,YAAYrH,OAAOmmC,gBAAgBxkD,QAAO+H,KAAKsW,MAAQ,CAAA;AAC7D,UAAImY,OAAO;AACTxoB,YAAIk3B,OAAOzf,WAAWtd,GAAGsd,WAAWrd,CAAC;AACrCouB,gBAAQ;aACH;AACLxoB,YAAIm3B,OAAO1f,WAAWtd,GAAGw/C,KAAAA;AACzB35C,YAAIm3B,OAAO1f,WAAWtd,GAAGsd,WAAWrd,CAAC;;AAEvCw/C,iBAAW,CAAC,CAACpkD,OAAO+4C,YAAYvuC,KAAKgX,SAAS;QAACxO,MAAMoxC;MAAQ,CAAA;AAC7D,UAAIA,UAAU;AACZ55C,YAAI0pC,UAAS;aACR;AACL1pC,YAAIm3B,OAAOzf,UAAUvd,GAAGw/C,KAAAA;;IAE5B;AAEA35C,QAAIm3B,OAAO3hC,OAAOgzB,MAAK,EAAGruB,GAAGw/C,KAAAA;AAC7B35C,QAAI0pC,UAAS;AACb1pC,QAAI4F,KAAI;EACV;AAEA,WAAS3E,KAAKjB,KAAKzK,KAAK;AACtB,UAAM,EAACkhB,MAAMjhB,QAAQ6jC,UAAUvkC,OAAAA,QAAO6E,MAAK,IAAIpE;AAC/C,UAAMq6C,WAAWM,UAAUz5B,MAAMjhB,QAAQ6jC,QAAAA;AAEzC,eAAW,EAACvK,QAAQ+qB,KAAKrkD,QAAQmhD,KAAK3kD,OAAAA,QAAO+H,IAAG,KAAK61C,UAAU;AAC7D,YAAM,EAACz8B,OAAO,EAACG,kBAAkBxe,OAAAA,IAAS,CAAA,EAAE,IAAI+kD;AAChD,YAAMC,WAAWtkD,WAAW;AAE5BwK,UAAIu2B,KAAI;AACRv2B,UAAIqT,YAAYC;AAEhBymC,iBAAW/5C,KAAKrG,OAAOmgD,YAAYrD,WAAWpd,UAAUrnC,QAAO+H,GAAAA,CAAAA;AAE/DiG,UAAIi3B,UAAS;AAEb,YAAM2iB,WAAW,CAAC,CAACnjC,KAAK83B,YAAYvuC,KAAK65C,GAAAA;AAEzC,UAAIxjD;AACJ,UAAIyjD,UAAU;AACZ,YAAIF,UAAU;AACZ55C,cAAI0pC,UAAS;eACR;AACLsQ,6BAAmBh6C,KAAKxK,QAAQuE,KAAKs/B,QAAAA;;AAGvC,cAAM4gB,aAAa,CAAC,CAACzkD,OAAO+4C,YAAYvuC,KAAK22C,KAAK;UAACnuC,MAAMoxC;UAAU9/C,SAAS;QAAI,CAAA;AAChFzD,QAAAA,QAAOujD,YAAYK;AACnB,YAAI,CAAC5jD,OAAM;AACT2jD,6BAAmBh6C,KAAKxK,QAAQxD,QAAOqnC,QAAAA;;;AAI3Cr5B,UAAI0pC,UAAS;AACb1pC,UAAIiB,KAAK5K,QAAO,YAAY,SAAS;AAErC2J,UAAIy2B,QAAO;IACb;EACF;AAEA,WAASsjB,WAAW/5C,KAAKrG,OAAOu4C,QAAQ;AACtC,UAAM,EAAC73C,KAAKE,OAAAA,IAAUZ,MAAMzI,MAAM6U;AAClC,UAAM,EAACszB,UAAUrnC,OAAAA,QAAO+H,IAAG,IAAIm4C,UAAU,CAAA;AACzC,QAAI7Y,aAAa,KAAK;AACpBr5B,UAAIi3B,UAAS;AACbj3B,UAAIyyC,KAAKzgD,QAAOqI,KAAKN,MAAM/H,QAAOuI,SAASF,GAAAA;AAC3C2F,UAAI4F,KAAI;;EAEZ;AAEA,WAASo0C,mBAAmBh6C,KAAKxK,QAAQ8a,OAAO+oB,UAAU;AACxD,UAAM6gB,oBAAoB1kD,OAAO86C,YAAYhgC,OAAO+oB,QAAAA;AACpD,QAAI6gB,mBAAmB;AACrBl6C,UAAIm3B,OAAO+iB,kBAAkB//C,GAAG+/C,kBAAkB9/C,CAAC;;EAEvD;AC7GA,MAAA,QAAe;IACboC,IAAI;IAEJ29C,oBAAoBjpD,OAAO2iD,OAAOn7C,SAAS;AACzC,YAAMmL,SAAS3S,MAAM6K,KAAKuG,YAAY,CAAA,GAAI3P;AAC1C,YAAM6kD,UAAU,CAAA;AAChB,UAAIr7C,MAAMvJ,IAAG6jB,MAAMqY;AAEnB,WAAKl8B,KAAI,GAAGA,KAAIiR,OAAO,EAAEjR,IAAG;AAC1BuJ,eAAOjL,MAAMqR,eAAe3P,EAAAA;AAC5B6jB,eAAOta,KAAK0C;AACZiwB,iBAAS;AAET,YAAIrY,QAAQA,KAAK/d,WAAW+d,gBAAgBs5B,aAAa;AACvDjhB,mBAAS;YACP0W,SAASt0C,MAAMqjB,iBAAiB3hB,EAAAA;YAChCwI,OAAOxI;YACPqO,MAAM02C,YAAYlhC,MAAM7jB,IAAGiR,KAAAA;YAC3B3S;YACA6M,MAAM5B,KAAKsB,WAAW/E,QAAQqJ;YAC9BpI,OAAOwC,KAAKkB;YACZoZ;UACF;;AAGFta,aAAKi+C,UAAUtrB;AACf0oB,gBAAQ5jD,KAAKk7B,MAAAA;MACf;AAEA,WAAKl8B,KAAI,GAAGA,KAAIiR,OAAO,EAAEjR,IAAG;AAC1Bk8B,iBAAS0oB,QAAQ5kD,EAAE;AACnB,YAAI,CAACk8B,UAAUA,OAAO7tB,SAAS,OAAO;AACpC;;AAGF6tB,eAAO7tB,OAAOs2C,eAAeC,SAAS5kD,IAAG8F,QAAQ++C,SAAS;MAC5D;IACF;IAEA4C,WAAWnpD,OAAO2iD,OAAOn7C,SAAS;AAChC,YAAM7F,QAAO6F,QAAQ4hD,aAAa;AAClC,YAAMr/C,WAAW/J,MAAMiqB,6BAA4B;AACnD,YAAMrV,OAAO5U,MAAM6U;AACnB,eAASnT,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,cAAMk8B,SAAS7zB,SAASrI,EAAAA,EAAGwnD;AAC3B,YAAI,CAACtrB,QAAQ;AACX;;AAGFA,eAAOrY,KAAKkB,oBAAoB7R,MAAMgpB,OAAO/wB,IAAI;AACjD,YAAIlL,SAAQi8B,OAAO7tB,MAAM;AACvBq4C,oBAAUpoD,MAAM8O,KAAK8uB,QAAQhpB,IAAAA;;MAEjC;IACF;IAEAy0C,mBAAmBrpD,OAAO2iD,OAAOn7C,SAAS;AACxC,UAAIA,QAAQ4hD,aAAa,sBAAsB;AAC7C;;AAGF,YAAMr/C,WAAW/J,MAAMiqB,6BAA4B;AACnD,eAASvoB,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,cAAMk8B,SAAS7zB,SAASrI,EAAAA,EAAGwnD;AAE3B,YAAI9C,iBAAiBxoB,MAAS,GAAA;AAC5BwqB,oBAAUpoD,MAAM8O,KAAK8uB,QAAQ59B,MAAM6U,SAAS;;MAEhD;IACF;IAEAy0C,kBAAkBtpD,OAAO4X,MAAMpQ,SAAS;AACtC,YAAMo2B,SAAShmB,KAAK3M,KAAKi+C;AAEzB,UAAI,CAAC9C,iBAAiBxoB,MAAAA,KAAWp2B,QAAQ4hD,aAAa,qBAAqB;AACzE;;AAGFhB,gBAAUpoD,MAAM8O,KAAK8uB,QAAQ59B,MAAM6U,SAAS;IAC9C;IAEAhO,UAAU;MACR0/C,WAAW;MACX6C,UAAU;IACZ;EACF;ACzEA,MAAMG,aAAa,CAACC,WAAWviB,aAAa;AAC1C,QAAI,EAACwiB,YAAYxiB,UAAUyiB,WAAWziB,SAAAA,IAAYuiB;AAElD,QAAIA,UAAUG,eAAe;AAC3BF,kBAAY7oD,KAAKC,IAAI4oD,WAAWxiB,QAAAA;AAChCyiB,iBAAWF,UAAUI,mBAAmBhpD,KAAKC,IAAI6oD,UAAUziB,QAAAA;;AAG7D,WAAO;MACLyiB;MACAD;MACAI,YAAYjpD,KAAKoC,IAAIikC,UAAUwiB,SAAAA;IACjC;EACF;AAEA,MAAMK,aAAa,CAAClxC,IAAGlP,OAAMkP,OAAM,QAAQlP,OAAM,QAAQkP,GAAEpO,iBAAiBd,GAAEc,gBAAgBoO,GAAE1O,UAAUR,GAAEQ;AAErG,MAAM6/C,SAAN,cAAqB1zB,SAAAA;IAK1B72B,YAAY6G,QAAQ;AAClB,YAAK;AAEL,WAAK2jD,SAAS;AAGd,WAAKC,iBAAiB,CAAA;AAKtB,WAAKC,eAAe;AAGpB,WAAKC,eAAe;AAEpB,WAAKnqD,QAAQqG,OAAOrG;AACpB,WAAKwH,UAAUnB,OAAOmB;AACtB,WAAKsH,MAAMzI,OAAOyI;AAClB,WAAKs7C,cAActqD;AACnB,WAAKuqD,cAAcvqD;AACnB,WAAKwqD,aAAaxqD;AAClB,WAAKgkB,YAAYhkB;AACjB,WAAK+jB,WAAW/jB;AAChB,WAAKqJ,MAAMrJ;AACX,WAAKuJ,SAASvJ;AACd,WAAKwJ,OAAOxJ;AACZ,WAAKsJ,QAAQtJ;AACb,WAAKwd,SAASxd;AACd,WAAKyd,QAAQzd;AACb,WAAK+6B,WAAW/6B;AAChB,WAAKiqB,WAAWjqB;AAChB,WAAKqlB,SAASrlB;AACd,WAAK4tB,WAAW5tB;IAClB;IAEA4F,OAAOme,UAAUC,WAAW4Y,SAAS;AACnC,WAAK7Y,WAAWA;AAChB,WAAKC,YAAYA;AACjB,WAAK+W,WAAW6B;AAEhB,WAAKI,cAAa;AAClB,WAAKytB,YAAW;AAChB,WAAKxsB,IAAG;IACV;IAEAjB,gBAAgB;AACd,UAAI,KAAK9hB,aAAY,GAAI;AACvB,aAAKuC,QAAQ,KAAKsG;AAClB,aAAKva,OAAO,KAAKuxB,SAASvxB;AAC1B,aAAKF,QAAQ,KAAKmU;aACb;AACL,aAAKD,SAAS,KAAKwG;AACnB,aAAK3a,MAAM,KAAK0xB,SAAS1xB;AACzB,aAAKE,SAAS,KAAKiU;;IAEvB;IAEAitC,cAAc;AACZ,YAAMf,YAAY,KAAKhiD,QAAQ2L,UAAU,CAAA;AACzC,UAAIi3C,cAAcnpD,SAAKuoD,UAAU1nC,gBAAgB;QAAC,KAAK9hB;SAAQ,IAAI,KAAK,CAAA;AAExE,UAAIwpD,UAAUl8C,QAAQ;AACpB88C,sBAAcA,YAAY98C,OAAO,CAAC1L,SAAS4nD,UAAUl8C,OAAO1L,MAAM,KAAK5B,MAAM6K,IAAI,CAAA;;AAGnF,UAAI2+C,UAAU7wC,MAAM;AAClByxC,sBAAcA,YAAYzxC,KAAK,CAACC,IAAGlP,OAAM8/C,UAAU7wC,KAAKC,IAAGlP,IAAG,KAAK1J,MAAM6K,IAAI,CAAA;;AAG/E,UAAI,KAAKrD,QAAQoB,SAAS;AACxBwhD,oBAAYxhD,QAAO;;AAGrB,WAAKwhD,cAAcA;IACrB;IAEArsB,MAAM;AACJ,YAAM,EAACv2B,SAASsH,IAAG,IAAI;AAMvB,UAAI,CAACtH,QAAQof,SAAS;AACpB,aAAKrJ,QAAQ,KAAKD,SAAS;AAC3B;;AAGF,YAAMksC,YAAYhiD,QAAQ2L;AAC1B,YAAMq3C,YAAYxwB,OAAOwvB,UAAUzvB,IAAI;AACvC,YAAMkN,WAAWujB,UAAUriD;AAC3B,YAAM03B,cAAc,KAAK4qB,oBAAmB;AAC5C,YAAM,EAACf,UAAUG,WAAAA,IAAcN,WAAWC,WAAWviB,QAAAA;AAErD,UAAI1pB,OAAOD;AAEXxO,UAAIirB,OAAOywB,UAAUppB;AAErB,UAAI,KAAKpmB,aAAY,GAAI;AACvBuC,gBAAQ,KAAKsG;AACbvG,iBAAS,KAAKotC,SAAS7qB,aAAaoH,UAAUyiB,UAAUG,UAAc,IAAA;aACjE;AACLvsC,iBAAS,KAAKwG;AACdvG,gBAAQ,KAAKotC,SAAS9qB,aAAa2qB,WAAWd,UAAUG,UAAc,IAAA;;AAGxE,WAAKtsC,QAAQ3c,KAAKC,IAAI0c,OAAO/V,QAAQqc,YAAY,KAAKA,QAAQ;AAC9D,WAAKvG,SAAS1c,KAAKC,IAAIyc,QAAQ9V,QAAQsc,aAAa,KAAKA,SAAS;IACpE;IAKA4mC,SAAS7qB,aAAaoH,UAAUyiB,UAAUG,YAAY;AACpD,YAAM,EAAC/6C,KAAK+U,UAAUrc,SAAS,EAAC2L,QAAQ,EAAC8c,QAAAA,EAAQ,EAAC,IAAI;AACtD,YAAM26B,WAAW,KAAKX,iBAAiB,CAAA;AAEvC,YAAMK,aAAa,KAAKA,aAAa;QAAC;MAAE;AACxC,YAAMpwB,aAAa2vB,aAAa55B;AAChC,UAAI46B,cAAchrB;AAElB/wB,UAAIk1B,YAAY;AAChBl1B,UAAIq1B,eAAe;AAEnB,UAAI2mB,MAAM;AACV,UAAI3hD,MAAM,CAAC+wB;AACX,WAAKkwB,YAAY5pD,QAAQ,CAACoiB,YAAYlhB,OAAM;AAC1C,cAAMqpD,YAAYrB,WAAYziB,WAAW,IAAKn4B,IAAIk8C,YAAYpoC,WAAWV,IAAI,EAAE3E;AAE/E,YAAI7b,OAAM,KAAK4oD,WAAWA,WAAW7oD,SAAS,CAAA,IAAKspD,YAAY,IAAI96B,UAAUpM,UAAU;AACrFgnC,yBAAe3wB;AACfowB,qBAAWA,WAAW7oD,UAAUC,KAAI,IAAI,IAAI,EAAA,IAAM;AAClDyH,iBAAO+wB;AACP4wB;;AAGFF,iBAASlpD,EAAAA,IAAK;UAAC4H,MAAM;UAAGH;UAAK2hD;UAAKvtC,OAAOwtC;UAAWztC,QAAQusC;QAAU;AAEtES,mBAAWA,WAAW7oD,SAAS,CAAA,KAAMspD,YAAY96B;MACnD,CAAA;AAEA,aAAO46B;IACT;IAEAF,SAAS9qB,aAAa2qB,WAAWd,UAAUuB,aAAa;AACtD,YAAM,EAACn8C,KAAKgV,WAAWtc,SAAS,EAAC2L,QAAQ,EAAC8c,QAAAA,EAAQ,EAAC,IAAI;AACvD,YAAM26B,WAAW,KAAKX,iBAAiB,CAAA;AACvC,YAAMI,cAAc,KAAKA,cAAc,CAAA;AACvC,YAAMa,cAAcpnC,YAAY+b;AAEhC,UAAIsrB,aAAal7B;AACjB,UAAIm7B,kBAAkB;AACtB,UAAIC,mBAAmB;AAEvB,UAAI/hD,OAAO;AACX,UAAIgiD,MAAM;AAEV,WAAKlB,YAAY5pD,QAAQ,CAACoiB,YAAYlhB,OAAM;AAC1C,cAAM,EAACqpD,WAAWlB,WAAU,IAAI0B,kBAAkB7B,UAAUc,WAAW17C,KAAK8T,YAAYqoC,WAAAA;AAGxF,YAAIvpD,KAAI,KAAK2pD,mBAAmBxB,aAAa,IAAI55B,UAAUi7B,aAAa;AACtEC,wBAAcC,kBAAkBn7B;AAChCo6B,sBAAY3nD,KAAK;YAAC6a,OAAO6tC;YAAiB9tC,QAAQ+tC;UAAgB,CAAA;AAClE/hD,kBAAQ8hD,kBAAkBn7B;AAC1Bq7B;AACAF,4BAAkBC,mBAAmB;;AAIvCT,iBAASlpD,EAAAA,IAAK;UAAC4H;UAAMH,KAAKkiD;UAAkBC;UAAK/tC,OAAOwtC;UAAWztC,QAAQusC;QAAU;AAGrFuB,0BAAkBxqD,KAAKoC,IAAIooD,iBAAiBL,SAAAA;AAC5CM,4BAAoBxB,aAAa55B;MACnC,CAAA;AAEAk7B,oBAAcC;AACdf,kBAAY3nD,KAAK;QAAC6a,OAAO6tC;QAAiB9tC,QAAQ+tC;MAAgB,CAAA;AAElE,aAAOF;IACT;IAEAK,iBAAiB;AACf,UAAI,CAAC,KAAKhkD,QAAQof,SAAS;AACzB;;AAEF,YAAMiZ,cAAc,KAAK4qB,oBAAmB;AAC5C,YAAM,EAACR,gBAAgBW,UAAUpjD,SAAS,EAACmxB,OAAOxlB,QAAQ,EAAC8c,QAAO,GAAGw7B,IAAAA,EAAI,IAAI;AAC7E,YAAMC,YAAYC,cAAcF,KAAK,KAAKniD,MAAM,KAAKiU,KAAK;AAC1D,UAAI,KAAKvC,aAAY,GAAI;AACvB,YAAI8vC,MAAM;AACV,YAAIxhD,OAAOoxB,eAAe/B,OAAO,KAAKrvB,OAAO2mB,SAAS,KAAK7mB,QAAQ,KAAKkhD,WAAWQ,GAAI,CAAA;AACvF,mBAAWc,UAAUhB,UAAU;AAC7B,cAAIE,QAAQc,OAAOd,KAAK;AACtBA,kBAAMc,OAAOd;AACbxhD,mBAAOoxB,eAAe/B,OAAO,KAAKrvB,OAAO2mB,SAAS,KAAK7mB,QAAQ,KAAKkhD,WAAWQ,GAAI,CAAA;;AAErFc,iBAAOziD,OAAO,KAAKA,MAAM02B,cAAc5P;AACvC27B,iBAAOtiD,OAAOoiD,UAAUG,WAAWH,UAAUziD,EAAEK,IAAOsiD,GAAAA,OAAOruC,KAAK;AAClEjU,kBAAQsiD,OAAOruC,QAAQ0S;QACzB;aACK;AACL,YAAIq7B,MAAM;AACV,YAAIniD,MAAMuxB,eAAe/B,OAAO,KAAKxvB,MAAM02B,cAAc5P,SAAS,KAAK5mB,SAAS,KAAKghD,YAAYiB,GAAAA,EAAKhuC,MAAM;AAC5G,mBAAWsuC,UAAUhB,UAAU;AAC7B,cAAIgB,OAAON,QAAQA,KAAK;AACtBA,kBAAMM,OAAON;AACbniD,kBAAMuxB,eAAe/B,OAAO,KAAKxvB,MAAM02B,cAAc5P,SAAS,KAAK5mB,SAAS,KAAKghD,YAAYiB,GAAAA,EAAKhuC,MAAM;;AAE1GsuC,iBAAOziD,MAAMA;AACbyiD,iBAAOtiD,QAAQ,KAAKA,OAAO2mB;AAC3B27B,iBAAOtiD,OAAOoiD,UAAUG,WAAWH,UAAUziD,EAAE2iD,OAAOtiD,IAAI,GAAGsiD,OAAOruC,KAAK;AACzEpU,iBAAOyiD,OAAOtuC,SAAS2S;QACzB;;IAEJ;IAEAjV,eAAe;AACb,aAAO,KAAKxT,QAAQuiB,aAAa,SAAS,KAAKviB,QAAQuiB,aAAa;IACtE;IAEApoB,OAAO;AACL,UAAI,KAAK6F,QAAQof,SAAS;AACxB,cAAM9X,MAAM,KAAKA;AACjBy3B,iBAASz3B,KAAK,IAAI;AAElB,aAAKg9C,MAAK;AAEVplB,mBAAW53B,GAAAA;;IAEf;IAKAg9C,QAAQ;AACN,YAAM,EAACtkD,SAASmB,MAAM0hD,aAAaC,YAAYx7C,IAAAA,IAAO;AACtD,YAAM,EAAC6pB,OAAOxlB,QAAQq2C,UAAAA,IAAa7gD;AACnC,YAAMojD,eAAellD,SAASjD;AAC9B,YAAM8nD,YAAYC,cAAchjD,KAAK8iD,KAAK,KAAKniD,MAAM,KAAKiU,KAAK;AAC/D,YAAMitC,YAAYxwB,OAAOwvB,UAAUzvB,IAAI;AACvC,YAAM,EAAC9J,QAAO,IAAIu5B;AAClB,YAAMviB,WAAWujB,UAAUriD;AAC3B,YAAM6jD,eAAe/kB,WAAW;AAChC,UAAIglB;AAEJ,WAAKtlB,UAAS;AAGd73B,UAAIk1B,YAAY0nB,UAAU1nB,UAAU,MAAA;AACpCl1B,UAAIq1B,eAAe;AACnBr1B,UAAI0T,YAAY;AAChB1T,UAAIirB,OAAOywB,UAAUppB;AAErB,YAAM,EAACsoB,UAAUD,WAAWI,WAAU,IAAIN,WAAWC,WAAWviB,QAAAA;AAGhE,YAAMilB,gBAAgB,SAASjjD,IAAGC,IAAG0Z,YAAY;AAC/C,YAAIhF,MAAM8rC,QAAaA,KAAAA,YAAY,KAAK9rC,MAAM6rC,SAAAA,KAAcA,YAAY,GAAG;AACzE;;AAIF36C,YAAIu2B,KAAI;AAER,cAAM7iB,YAAYhS,eAAeoS,WAAWJ,WAAW,CAAA;AACvD1T,YAAIqT,YAAY3R,eAAeoS,WAAWT,WAAW4pC,YAAAA;AACrDj9C,YAAIwtC,UAAU9rC,eAAeoS,WAAW05B,SAAS,MAAA;AACjDxtC,YAAIg3B,iBAAiBt1B,eAAeoS,WAAWkjB,gBAAgB,CAAA;AAC/Dh3B,YAAI0sC,WAAWhrC,eAAeoS,WAAW44B,UAAU,OAAA;AACnD1sC,YAAI0T,YAAYA;AAChB1T,YAAIuT,cAAc7R,eAAeoS,WAAWP,aAAa0pC,YAAAA;AAEzDj9C,YAAI+2B,YAAYr1B,eAAeoS,WAAWupC,UAAU,CAAA,CAAE,CAAA;AAEtD,YAAI3C,UAAUG,eAAe;AAG3B,gBAAMyC,cAAc;YAClBltC,QAAQuqC,YAAY7oD,KAAKyrD,QAAQ;YACjCtqC,YAAYa,WAAWb;YACvBtC,UAAUmD,WAAWnD;YACrBgD,aAAaD;UACf;AACA,gBAAMiC,UAAUinC,UAAUY,MAAMrjD,IAAGygD,WAAW,CAAA;AAC9C,gBAAMhlC,UAAUxb,KAAI8iD;AAGpBO,0BAAgBz9C,KAAKs9C,aAAa3nC,SAASC,SAAS8kC,UAAUI,mBAAmBF,QAAAA;eAC5E;AAGL,gBAAM8C,UAAUtjD,KAAItI,KAAKoC,KAAKikC,WAAWwiB,aAAa,GAAG,CAAA;AACzD,gBAAMgD,WAAWf,UAAUG,WAAW5iD,IAAGygD,QAAAA;AACzC,gBAAM5Q,eAAe0H,cAAc59B,WAAWk2B,YAAY;AAE1DhqC,cAAIi3B,UAAS;AAEb,cAAIp/B,OAAOW,OAAOwxC,YAAAA,EAAczN,KAAKvvB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClD+lC,+BAAmB/yC,KAAK;cACtB7F,GAAGwjD;cACHvjD,GAAGsjD;cACH19B,GAAG46B;cACH16B,GAAGy6B;cACHvqC,QAAQ45B;YACV,CAAA;iBACK;AACLhqC,gBAAIyyC,KAAKkL,UAAUD,SAAS9C,UAAUD,SAAAA;;AAGxC36C,cAAIiB,KAAI;AACR,cAAIyS,cAAc,GAAG;AACnB1T,gBAAIo3B,OAAM;;;AAIdp3B,YAAIy2B,QAAO;MACb;AAEA,YAAMmnB,WAAW,SAASzjD,IAAGC,IAAG0Z,YAAY;AAC1C6jB,mBAAW33B,KAAK8T,WAAWV,MAAMjZ,IAAGC,KAAK2gD,aAAa,GAAIW,WAAW;UACnEmC,eAAe/pC,WAAWpU;UAC1Bw1B,WAAW0nB,UAAU1nB,UAAUphB,WAAWohB,SAAS;QACrD,CAAA;MACF;AAGA,YAAMhpB,eAAe,KAAKA,aAAY;AACtC,YAAM6kB,cAAc,KAAK4qB,oBAAmB;AAC5C,UAAIzvC,cAAc;AAChBixC,iBAAS;UACPhjD,GAAGyxB,eAAe/B,OAAO,KAAKrvB,OAAO2mB,SAAS,KAAK7mB,QAAQkhD,WAAW,CAAE,CAAA;UACxEphD,GAAG,KAAKC,MAAM8mB,UAAU4P;UACxBta,MAAM;QACR;aACK;AACL0mC,iBAAS;UACPhjD,GAAG,KAAKK,OAAO2mB;UACf/mB,GAAGwxB,eAAe/B,OAAO,KAAKxvB,MAAM02B,cAAc5P,SAAS,KAAK5mB,SAASghD,YAAY,CAAA,EAAG/sC,MAAM;UAC9FiI,MAAM;QACR;;AAGFqnC,4BAAsB,KAAK99C,KAAKnG,KAAKkkD,aAAa;AAElD,YAAM3yB,aAAa2vB,aAAa55B;AAChC,WAAKm6B,YAAY5pD,QAAQ,CAACoiB,YAAYlhB,OAAM;AAC1CoN,YAAIuT,cAAcO,WAAWL;AAC7BzT,YAAIqT,YAAYS,WAAWL;AAE3B,cAAMuqC,YAAYh+C,IAAIk8C,YAAYpoC,WAAWV,IAAI,EAAE3E;AACnD,cAAMymB,YAAY0nB,UAAU1nB,UAAUphB,WAAWohB,cAAcphB,WAAWohB,YAAYwlB,UAAUxlB,UAAQ;AACxG,cAAMzmB,QAAQmsC,WAAWsC,eAAec;AACxC,YAAI7jD,KAAIgjD,OAAOhjD;AACf,YAAIC,KAAI+iD,OAAO/iD;AAEfwiD,kBAAUqB,SAAS,KAAKxvC,KAAK;AAE7B,YAAIvC,cAAc;AAChB,cAAItZ,KAAI,KAAKuH,KAAIsU,QAAQ0S,UAAU,KAAK7mB,OAAO;AAC7CF,YAAAA,KAAI+iD,OAAO/iD,KAAKgxB;AAChB+xB,mBAAO1mC;AACPtc,YAAAA,KAAIgjD,OAAOhjD,IAAIyxB,eAAe/B,OAAO,KAAKrvB,OAAO2mB,SAAS,KAAK7mB,QAAQkhD,WAAW2B,OAAO1mC,IAAI,CAAC;;mBAEvF7jB,KAAI,KAAKwH,KAAIgxB,aAAa,KAAK7wB,QAAQ;AAChDJ,UAAAA,KAAIgjD,OAAOhjD,IAAIA,KAAIohD,YAAY4B,OAAO1mC,IAAI,EAAEhI,QAAQ0S;AACpDg8B,iBAAO1mC;AACPrc,UAAAA,KAAI+iD,OAAO/iD,IAAIwxB,eAAe/B,OAAO,KAAKxvB,MAAM02B,cAAc5P,SAAS,KAAK5mB,SAASghD,YAAY4B,OAAO1mC,IAAI,EAAEjI,MAAM;;AAGtH,cAAM0vC,QAAQtB,UAAUziD,EAAEA,EAAAA;AAE1BijD,sBAAcc,OAAO9jD,IAAG0Z,UAAAA;AAExB3Z,QAAAA,KAAIgkD,OAAOjpB,WAAW/6B,KAAIygD,WAAWsC,cAAchxC,eAAe/R,KAAIsU,QAAQ,KAAKnU,OAAOT,KAAK8iD,GAAG;AAGlGiB,iBAAShB,UAAUziD,EAAEA,EAAAA,GAAIC,IAAG0Z,UAAAA;AAE5B,YAAI5H,cAAc;AAChBixC,iBAAOhjD,KAAKsU,QAAQ0S;QACtB,WAAW,OAAOrN,WAAWV,SAAS,UAAU;AAC9C,gBAAMgrC,iBAAiB1C,UAAUtwB;AACjC+xB,iBAAO/iD,KAAKikD,0BAA0BvqC,YAAYsqC,cAAkBj9B,IAAAA;eAC/D;AACLg8B,iBAAO/iD,KAAKgxB;;MAEhB,CAAA;AAEAkzB,2BAAqB,KAAKt+C,KAAKnG,KAAKkkD,aAAa;IACnD;IAKAlmB,YAAY;AACV,YAAMh+B,OAAO,KAAKnB;AAClB,YAAMm4B,YAAYh3B,KAAK62B;AACvB,YAAM6tB,YAAYrzB,OAAO2F,UAAU5F,IAAI;AACvC,YAAMuzB,eAAe98B,UAAUmP,UAAU1P,OAAO;AAEhD,UAAI,CAAC0P,UAAU/Y,SAAS;AACtB;;AAGF,YAAM8kC,YAAYC,cAAchjD,KAAK8iD,KAAK,KAAKniD,MAAM,KAAKiU,KAAK;AAC/D,YAAMzO,MAAM,KAAKA;AACjB,YAAMib,WAAW4V,UAAU5V;AAC3B,YAAMiiC,eAAeqB,UAAUllD,OAAO;AACtC,YAAMolD,6BAA6BD,aAAankD,MAAM6iD;AACtD,UAAI9iD;AAIJ,UAAII,OAAO,KAAKA;AAChB,UAAIua,WAAW,KAAKtG;AAEpB,UAAI,KAAKvC,aAAY,GAAI;AAEvB6I,mBAAWjjB,KAAKoC,IAAO,GAAA,KAAKsnD,UAAU;AACtCphD,QAAAA,KAAI,KAAKC,MAAMokD;AACfjkD,eAAOoxB,eAAe/xB,KAAKgwB,OAAOrvB,MAAM,KAAKF,QAAQya,QAAAA;aAChD;AAEL,cAAMC,YAAY,KAAKumC,YAAYxnD,OAAO,CAACC,KAAKqF,SAASvH,KAAKoC,IAAIF,KAAKqF,KAAKmV,MAAM,GAAG,CAAA;AACrFpU,QAAAA,KAAIqkD,6BAA6B7yB,eAAe/xB,KAAKgwB,OAAO,KAAKxvB,KAAK,KAAKE,SAASya,YAAYnb,KAAKwK,OAAO8c,UAAU,KAAKw6B,oBAAmB,CAAA;;AAKhJ,YAAMxhD,KAAIyxB,eAAe3Q,UAAUzgB,MAAMA,OAAOua,QAAAA;AAGhD/U,UAAIk1B,YAAY0nB,UAAU1nB,UAAU1J,mBAAmBvQ,QAAAA,CAAAA;AACvDjb,UAAIq1B,eAAe;AACnBr1B,UAAIuT,cAAcsd,UAAU/7B;AAC5BkL,UAAIqT,YAAYwd,UAAU/7B;AAC1BkL,UAAIirB,OAAOszB,UAAUjsB;AAErBqF,iBAAW33B,KAAK6wB,UAAUzd,MAAMjZ,IAAGC,IAAGmkD,SAAAA;IACxC;IAKA5C,sBAAsB;AACpB,YAAM9qB,YAAY,KAAKn4B,QAAQg4B;AAC/B,YAAM6tB,YAAYrzB,OAAO2F,UAAU5F,IAAI;AACvC,YAAMuzB,eAAe98B,UAAUmP,UAAU1P,OAAO;AAChD,aAAO0P,UAAU/Y,UAAUymC,UAAUnzB,aAAaozB,aAAahwC,SAAS;IAC1E;IAKAkwC,iBAAiBvkD,IAAGC,IAAG;AACrB,UAAIxH,IAAG+rD,QAAQC;AAEf,UAAI3R,WAAW9yC,IAAG,KAAKK,MAAM,KAAKF,KAAK,KAClC2yC,WAAW7yC,IAAG,KAAKC,KAAK,KAAKE,MAAM,GAAG;AAEzCqkD,aAAK,KAAKzD;AACV,aAAKvoD,KAAI,GAAGA,KAAIgsD,GAAGjsD,QAAQ,EAAEC,IAAG;AAC9B+rD,mBAASC,GAAGhsD,EAAE;AAEd,cAAIq6C,WAAW9yC,IAAGwkD,OAAOnkD,MAAMmkD,OAAOnkD,OAAOmkD,OAAOlwC,KAAK,KACpDw+B,WAAW7yC,IAAGukD,OAAOtkD,KAAKskD,OAAOtkD,MAAMskD,OAAOnwC,MAAM,GAAG;AAE1D,mBAAO,KAAK8sC,YAAY1oD,EAAE;;QAE9B;;AAGF,aAAO;IACT;IAMAisD,YAAYhrC,IAAG;AACb,YAAMha,OAAO,KAAKnB;AAClB,UAAI,CAAComD,WAAWjrC,GAAExiB,MAAMwI,IAAO,GAAA;AAC7B;;AAIF,YAAMklD,cAAc,KAAKL,iBAAiB7qC,GAAE1Z,GAAG0Z,GAAEzZ,CAAC;AAElD,UAAIyZ,GAAExiB,SAAS,eAAewiB,GAAExiB,SAAS,YAAY;AACnD,cAAMq8C,WAAW,KAAK0N;AACtB,cAAM4D,WAAWhE,WAAWtN,UAAUqR,WAAAA;AACtC,YAAIrR,YAAY,CAACsR,UAAU;AACzB7sD,mBAAK0H,KAAKolD,SAAS;YAACprC;YAAG65B;YAAU;UAAK,GAAE,IAAI;;AAG9C,aAAK0N,eAAe2D;AAEpB,YAAIA,eAAe,CAACC,UAAU;AAC5B7sD,mBAAK0H,KAAKyvC,SAAS;YAACz1B;YAAGkrC;YAAa;UAAK,GAAE,IAAI;;MAEnD,WAAWA,aAAa;AACtB5sD,iBAAK0H,KAAK+Z,SAAS;UAACC;UAAGkrC;UAAa;QAAK,GAAE,IAAI;;IAEnD;EACF;AAEA,WAAStC,kBAAkB7B,UAAUc,WAAW17C,KAAK8T,YAAYqoC,aAAa;AAC5E,UAAMF,YAAYiD,mBAAmBprC,YAAY8mC,UAAUc,WAAW17C,GAAAA;AACtE,UAAM+6C,aAAaoE,oBAAoBhD,aAAaroC,YAAY4nC,UAAUtwB,UAAU;AACpF,WAAO;MAAC6wB;MAAWlB;IAAU;EAC/B;AAEA,WAASmE,mBAAmBprC,YAAY8mC,UAAUc,WAAW17C,KAAK;AAChE,QAAIo/C,iBAAiBtrC,WAAWV;AAChC,QAAIgsC,kBAAkB,OAAOA,mBAAmB,UAAU;AACxDA,uBAAiBA,eAAerrD,OAAO,CAAC+V,IAAGlP,OAAMkP,GAAEnX,SAASiI,GAAEjI,SAASmX,KAAIlP,EAAC;;AAE9E,WAAOggD,WAAYc,UAAUriD,OAAO,IAAK2G,IAAIk8C,YAAYkD,cAAAA,EAAgB3wC;EAC3E;AAEA,WAAS0wC,oBAAoBhD,aAAaroC,YAAYsqC,gBAAgB;AACpE,QAAIrD,aAAaoB;AACjB,QAAI,OAAOroC,WAAWV,SAAS,UAAU;AACvC2nC,mBAAasD,0BAA0BvqC,YAAYsqC,cAAAA;;AAErD,WAAOrD;EACT;AAEA,WAASsD,0BAA0BvqC,YAAYsqC,gBAAgB;AAC7D,UAAMltB,cAAcpd,WAAWV,OAAOU,WAAWV,KAAKzgB,SAAS;AAC/D,WAAOyrD,iBAAiBltB;EAC1B;AAEA,WAAS4tB,WAAWztD,MAAMwI,MAAM;AAC9B,SAAKxI,SAAS,eAAeA,SAAS,gBAAgBwI,KAAKyvC,WAAWzvC,KAAKolD,UAAU;AACnF,aAAO;;AAET,QAAIplD,KAAK+Z,YAAYviB,SAAS,WAAWA,SAAS,YAAY;AAC5D,aAAO;;AAET,WAAO;EACT;AAEA,MAAA,gBAAe;IACbmL,IAAI;IAMJ6iD,UAAUpE;IAEVjpD,MAAMd,OAAO2iD,OAAOn7C,SAAS;AAC3B,YAAMqa,SAAS7hB,MAAM6hB,SAAS,IAAIkoC,OAAO;QAACj7C,KAAK9O,MAAM8O;QAAKtH;QAASxH;MAAK,CAAA;AACxEgtB,cAAQxmB,UAAUxG,OAAO6hB,QAAQra,OAAAA;AACjCwlB,cAAQkD,OAAOlwB,OAAO6hB,MAAAA;IACxB;IAEA3e,KAAKlD,OAAO;AACVgtB,cAAQqD,UAAUrwB,OAAOA,MAAM6hB,MAAM;AACrC,aAAO7hB,MAAM6hB;IACf;IAKA4a,aAAaz8B,OAAO2iD,OAAOn7C,SAAS;AAClC,YAAMqa,SAAS7hB,MAAM6hB;AACrBmL,cAAQxmB,UAAUxG,OAAO6hB,QAAQra,OAAAA;AACjCqa,aAAOra,UAAUA;IACnB;IAIAy2B,YAAYj+B,OAAO;AACjB,YAAM6hB,SAAS7hB,MAAM6hB;AACrBA,aAAO0oC,YAAW;AAClB1oC,aAAO2pC,eAAc;IACvB;IAGA4C,WAAWpuD,OAAO4X,MAAM;AACtB,UAAI,CAACA,KAAK+/B,QAAQ;AAChB33C,cAAM6hB,OAAO8rC,YAAY/1C,KAAKpV,KAAK;;IAEvC;IAEAqE,UAAU;MACR+f,SAAS;MACTmD,UAAU;MACV4O,OAAO;MACPjL,UAAU;MACV9kB,SAAS;MACTuc,QAAQ;MAGRzC,QAAQC,IAAGC,YAAYf,QAAQ;AAC7B,cAAM3X,SAAQ0Y,WAAWpY;AACzB,cAAM6jD,MAAKxsC,OAAO7hB;AAClB,YAAIquD,IAAGhrC,iBAAiBnZ,MAAQ,GAAA;AAC9BmkD,UAAAA,IAAG7X,KAAKtsC,MAAAA;AACR0Y,qBAAWpU,SAAS;eACf;AACL6/C,UAAAA,IAAG5X,KAAKvsC,MAAAA;AACR0Y,qBAAWpU,SAAS;;MAExB;MAEA4pC,SAAS;MACT2V,SAAS;MAET56C,QAAQ;QACNvP,OAAO,CAACkL,QAAQA,IAAI9O,MAAMwH,QAAQ5D;QAClC8lD,UAAU;QACVz5B,SAAS;QAYTnO,eAAe9hB,OAAO;AACpB,gBAAMoR,WAAWpR,MAAM6K,KAAKuG;AAC5B,gBAAM,EAAC+B,QAAQ,EAACw2C,eAAe5nC,YAAYiiB,WAAWpgC,OAAAA,QAAO0qD,iBAAiBxV,aAAAA,EAAa,IAAI94C,MAAM6hB,OAAOra;AAE5G,iBAAOxH,MAAMgK,uBAAsB,EAAGgY,IAAI,CAAC/W,SAAS;AAClD,kBAAMgX,QAAQhX,KAAKsB,WAAWwI,SAAS40C,gBAAgB,IAAI7pD,MAAS;AACpE,kBAAM2iB,cAAc+N,UAAUvO,MAAMQ,WAAW;AAE/C,mBAAO;cACLP,MAAM9Q,SAASnG,KAAKf,KAAK,EAAEqK;cAC3B4N,WAAWF,MAAMG;cACjBG,WAAW3e;cACX4K,QAAQ,CAACvD,KAAKqpC;cACdgI,SAASr6B,MAAMs6B;cACf4P,UAAUlqC,MAAMqhB;cAChBwC,gBAAgB7jB,MAAMuhB;cACtBgY,UAAUv5B,MAAMq5B;cAChB94B,YAAYC,YAAYlF,QAAQkF,YAAYnF,UAAU;cACtD+E,aAAaJ,MAAMK;cACnBP,YAAYA,cAAcE,MAAMF;cAChCtC,UAAUwC,MAAMxC;cAChBukB,WAAWA,aAAa/hB,MAAM+hB;cAC9B8U,cAAcwV,oBAAoBxV,gBAAgB72B,MAAM62B;cAGxDtuC,cAAcS,KAAKf;YACrB;UACF,GAAG,IAAI;QACT;MACF;MAEAs1B,OAAO;QACL57B,OAAO,CAACkL,QAAQA,IAAI9O,MAAMwH,QAAQ5D;QAClCgjB,SAAS;QACTmD,UAAU;QACV7H,MAAM;MACR;IACF;IAEAX,aAAa;MACXC,aAAa,CAACxD,SAAS,CAACA,KAAK0D,WAAW,IAAA;MACxCvO,QAAQ;QACNqO,aAAa,CAACxD,SAAS,CAAC;UAAC;UAAkB;UAAU;QAAO,EAACkP,SAASlP,IAAAA;MACxE;IACF;EACF;ACzsBO,MAAMuwC,QAAN,cAAoBl4B,SAAAA;IAIzB72B,YAAY6G,QAAQ;AAClB,YAAK;AAEL,WAAKrG,QAAQqG,OAAOrG;AACpB,WAAKwH,UAAUnB,OAAOmB;AACtB,WAAKsH,MAAMzI,OAAOyI;AAClB,WAAK0/C,WAAW1uD;AAChB,WAAKqJ,MAAMrJ;AACX,WAAKuJ,SAASvJ;AACd,WAAKwJ,OAAOxJ;AACZ,WAAKsJ,QAAQtJ;AACb,WAAKyd,QAAQzd;AACb,WAAKwd,SAASxd;AACd,WAAKiqB,WAAWjqB;AAChB,WAAKqlB,SAASrlB;AACd,WAAK4tB,WAAW5tB;IAClB;IAEA4F,OAAOme,UAAUC,WAAW;AAC1B,YAAMnb,OAAO,KAAKnB;AAElB,WAAK8B,OAAO;AACZ,WAAKH,MAAM;AAEX,UAAI,CAACR,KAAKie,SAAS;AACjB,aAAKrJ,QAAQ,KAAKD,SAAS,KAAKlU,QAAQ,KAAKC,SAAS;AACtD;;AAGF,WAAKkU,QAAQ,KAAKnU,QAAQya;AAC1B,WAAKvG,SAAS,KAAKjU,SAASya;AAE5B,YAAMmgB,YAAY98B,QAAQwB,KAAKuZ,IAAI,IAAIvZ,KAAKuZ,KAAKzgB,SAAS;AAC1D,WAAK+sD,WAAWh+B,UAAU7nB,KAAKsnB,OAAO;AACtC,YAAMw+B,WAAWxqB,YAAYjK,OAAOrxB,KAAKoxB,IAAI,EAAEG,aAAa,KAAKs0B,SAASlxC;AAE1E,UAAI,KAAKtC,aAAY,GAAI;AACvB,aAAKsC,SAASmxC;aACT;AACL,aAAKlxC,QAAQkxC;;IAEjB;IAEAzzC,eAAe;AACb,YAAMsR,MAAM,KAAK9kB,QAAQuiB;AACzB,aAAOuC,QAAQ,SAASA,QAAQ;IAClC;IAEAoiC,UAAUpyC,QAAQ;AAChB,YAAM,EAACnT,KAAKG,MAAMD,QAAQD,OAAO5B,QAAAA,IAAW;AAC5C,YAAMmxB,QAAQnxB,QAAQmxB;AACtB,UAAIlZ,WAAW;AACf,UAAIoE,UAAU2W,QAAQC;AAEtB,UAAI,KAAKzf,aAAY,GAAI;AACvBwf,iBAASE,eAAe/B,OAAOrvB,MAAMF,KAAAA;AACrCqxB,iBAAStxB,MAAMmT;AACfuH,mBAAWza,QAAQE;aACd;AACL,YAAI9B,QAAQuiB,aAAa,QAAQ;AAC/ByQ,mBAASlxB,OAAOgT;AAChBme,mBAASC,eAAe/B,OAAOtvB,QAAQF,GAAAA;AACvCsW,qBAAWwB,KAAK;eACX;AACLuZ,mBAASpxB,QAAQkT;AACjBme,mBAASC,eAAe/B,OAAOxvB,KAAKE,MAAAA;AACpCoW,qBAAWwB,KAAK;;AAElB4C,mBAAWxa,SAASF;;AAEtB,aAAO;QAACqxB;QAAQC;QAAQ5W;QAAUpE;MAAQ;IAC5C;IAEA9d,OAAO;AACL,YAAMmN,MAAM,KAAKA;AACjB,YAAMnG,OAAO,KAAKnB;AAElB,UAAI,CAACmB,KAAKie,SAAS;AACjB;;AAGF,YAAM+nC,WAAW30B,OAAOrxB,KAAKoxB,IAAI;AACjC,YAAMG,aAAay0B,SAASz0B;AAC5B,YAAM5d,SAAS4d,aAAa,IAAI,KAAKs0B,SAASrlD;AAC9C,YAAM,EAACqxB,QAAQC,QAAQ5W,UAAUpE,SAAAA,IAAY,KAAKivC,UAAUpyC,MAAAA;AAE5DmqB,iBAAW33B,KAAKnG,KAAKuZ,MAAM,GAAG,GAAGysC,UAAU;QACzC/qD,OAAO+E,KAAK/E;QACZigB;QACApE;QACAukB,WAAW1J,mBAAmB3xB,KAAKgwB,KAAK;QACxCwL,cAAc;QACde,aAAa;UAAC1K;UAAQC;QAAO;MAC/B,CAAA;IACF;EACF;AAEA,WAASm0B,YAAY5uD,OAAO2/B,WAAW;AACrC,UAAMH,QAAQ,IAAI+uB,MAAM;MACtBz/C,KAAK9O,MAAM8O;MACXtH,SAASm4B;MACT3/B;IACF,CAAA;AAEAgtB,YAAQxmB,UAAUxG,OAAOw/B,OAAOG,SAAAA;AAChC3S,YAAQkD,OAAOlwB,OAAOw/B,KAAAA;AACtBx/B,UAAM6uD,aAAarvB;EACrB;AAEA,MAAA,eAAe;IACbl0B,IAAI;IAMJ6iD,UAAUI;IAEVztD,MAAMd,OAAO2iD,OAAOn7C,SAAS;AAC3BonD,kBAAY5uD,OAAOwH,OAAAA;IACrB;IAEAtE,KAAKlD,OAAO;AACV,YAAM6uD,aAAa7uD,MAAM6uD;AACzB7hC,cAAQqD,UAAUrwB,OAAO6uD,UAAAA;AACzB,aAAO7uD,MAAM6uD;IACf;IAEApyB,aAAaz8B,OAAO2iD,OAAOn7C,SAAS;AAClC,YAAMg4B,QAAQx/B,MAAM6uD;AACpB7hC,cAAQxmB,UAAUxG,OAAOw/B,OAAOh4B,OAAAA;AAChCg4B,YAAMh4B,UAAUA;IAClB;IAEAX,UAAU;MACR8xB,OAAO;MACP/R,SAAS;MACTmT,MAAM;QACJ5U,QAAQ;MACV;MACAuI,UAAU;MACVuC,SAAS;MACTlG,UAAU;MACV7H,MAAM;MACNiD,QAAQ;IACV;IAEAmR,eAAe;MACb1yB,OAAO;IACT;IAEA2d,aAAa;MACXC,aAAa;MACbC,YAAY;IACd;EACF;AClKA,MAAMO,OAAM,oBAAI8sC,QAAAA;AAEhB,MAAA,kBAAe;IACbxjD,IAAI;IAEJxK,MAAMd,OAAO2iD,OAAOn7C,SAAS;AAC3B,YAAMg4B,QAAQ,IAAI+uB,MAAM;QACtBz/C,KAAK9O,MAAM8O;QACXtH;QACAxH;MACF,CAAA;AAEAgtB,cAAQxmB,UAAUxG,OAAOw/B,OAAOh4B,OAAAA;AAChCwlB,cAAQkD,OAAOlwB,OAAOw/B,KAAAA;AACtBxd,MAAAA,KAAI1f,IAAItC,OAAOw/B,KAAAA;IACjB;IAEAt8B,KAAKlD,OAAO;AACVgtB,cAAQqD,UAAUrwB,OAAOgiB,KAAI7f,IAAInC,KAAAA,CAAAA;AACjCgiB,MAAAA,KAAI3e,OAAOrD,KAAAA;IACb;IAEAy8B,aAAaz8B,OAAO2iD,OAAOn7C,SAAS;AAClC,YAAMg4B,QAAQxd,KAAI7f,IAAInC,KAAAA;AACtBgtB,cAAQxmB,UAAUxG,OAAOw/B,OAAOh4B,OAAAA;AAChCg4B,YAAMh4B,UAAUA;IAClB;IAEAX,UAAU;MACR8xB,OAAO;MACP/R,SAAS;MACTmT,MAAM;QACJ5U,QAAQ;MACV;MACAuI,UAAU;MACVuC,SAAS;MACTlG,UAAU;MACV7H,MAAM;MACNiD,QAAQ;IACV;IAEAmR,eAAe;MACb1yB,OAAO;IACT;IAEA2d,aAAa;MACXC,aAAa;MACbC,YAAY;IACd;EACF;ACpCA,MAAMstC,cAAc;IAIlBC,QAAQxtD,OAAO;AACb,UAAI,CAACA,MAAMC,QAAQ;AACjB,eAAO;;AAGT,UAAIC,IAAG+2B;AACP,UAAIw2B,OAAO,oBAAIrhB,IAAAA;AACf,UAAI1kC,KAAI;AACR,UAAIyJ,QAAQ;AAEZ,WAAKjR,KAAI,GAAG+2B,MAAMj3B,MAAMC,QAAQC,KAAI+2B,KAAK,EAAE/2B,IAAG;AAC5C,cAAMgoB,KAAKloB,MAAME,EAAAA,EAAGmM;AACpB,YAAI6b,MAAMA,GAAG8M,SAAQ,GAAI;AACvB,gBAAMlK,MAAM5C,GAAG6M,gBAAe;AAC9B04B,eAAKtsD,IAAI2pB,IAAIrjB,CAAC;AACdC,UAAAA,MAAKojB,IAAIpjB;AACT,YAAEyJ;;MAEN;AAEA,YAAMu8C,WAAW;QAAID,GAAAA;QAAMpsD,OAAO,CAAC+V,IAAGlP,OAAMkP,KAAIlP,EAAAA,IAAKulD,KAAK9mD;AAE1D,aAAO;QACLc,GAAGimD;QACHhmD,GAAGA,KAAIyJ;MACT;IACF;IAKAuZ,QAAQ1qB,OAAO2tD,eAAe;AAC5B,UAAI,CAAC3tD,MAAMC,QAAQ;AACjB,eAAO;;AAGT,UAAIwH,KAAIkmD,cAAclmD;AACtB,UAAIC,KAAIimD,cAAcjmD;AACtB,UAAIsiB,cAAc9f,OAAOE;AACzB,UAAIlK,IAAG+2B,KAAK22B;AAEZ,WAAK1tD,KAAI,GAAG+2B,MAAMj3B,MAAMC,QAAQC,KAAI+2B,KAAK,EAAE/2B,IAAG;AAC5C,cAAMgoB,KAAKloB,MAAME,EAAAA,EAAGmM;AACpB,YAAI6b,MAAMA,GAAG8M,SAAQ,GAAI;AACvB,gBAAMnZ,SAASqM,GAAG+B,eAAc;AAChC,gBAAMkhB,KAAI0iB,sBAAsBF,eAAe9xC,MAAAA;AAE/C,cAAIsvB,KAAInhB,aAAa;AACnBA,0BAAcmhB;AACdyiB,6BAAiB1lC;;;MAGvB;AAEA,UAAI0lC,gBAAgB;AAClB,cAAME,KAAKF,eAAe74B,gBAAe;AACzCttB,QAAAA,KAAIqmD,GAAGrmD;AACPC,QAAAA,KAAIomD,GAAGpmD;;AAGT,aAAO;QACLD,GAAAA;QACAC,GAAAA;MACF;IACF;EACF;AAGA,WAASqmD,aAAap0C,MAAMq0C,QAAQ;AAClC,QAAIA,QAAQ;AACV,UAAIroD,QAAQqoD,MAAS,GAAA;AAEnBzkD,cAAM4d,UAAUjmB,KAAK+sD,MAAMt0C,MAAMq0C,MAAAA;aAC5B;AACLr0C,aAAKzY,KAAK8sD,MAAAA;;;AAId,WAAOr0C;EACT;AAQA,WAASu0C,cAAcC,KAAK;AAC1B,SAAK,OAAOA,QAAQ,YAAYA,eAAeC,WAAWD,IAAI9xC,QAAQ,IAAA,IAAQ,IAAI;AAChF,aAAO8xC,IAAItnB,MAAM,IAAA;;AAEnB,WAAOsnB;EACT;AASA,WAASE,kBAAkB7vD,OAAO4B,MAAM;AACtC,UAAM,EAACiM,SAASrD,cAAcN,OAAAA,OAAAA,IAAStI;AACvC,UAAM2K,aAAavM,MAAMqR,eAAe7G,YAAAA,EAAc+B;AACtD,UAAM,EAACgI,OAAOrM,MAAAA,IAASqE,WAAW+H,iBAAiBpK,MAAAA;AAEnD,WAAO;MACLlK;MACAuU;MACA/H,QAAQD,WAAWkH,UAAUvJ,MAAAA;MAC7B6D,KAAK/N,MAAM6K,KAAKuG,SAAS5G,YAAa,EAACK,KAAKX,MAAM;MAClD4lD,gBAAgB5nD;MAChByF,SAASpB,WAAW6D,WAAU;MAC9BtC,WAAW5D;MACXM;MACAqD;IACF;EACF;AAKA,WAASkiD,eAAeC,SAASxoD,SAAS;AACxC,UAAMsH,MAAMkhD,QAAQhwD,MAAM8O;AAC1B,UAAM,EAACmhD,MAAMC,QAAQ1wB,MAAAA,IAASwwB;AAC9B,UAAM,EAACtG,UAAUD,UAAAA,IAAajiD;AAC9B,UAAM2oD,WAAWn2B,OAAOxyB,QAAQ2oD,QAAQ;AACxC,UAAM9C,YAAYrzB,OAAOxyB,QAAQ6lD,SAAS;AAC1C,UAAM+C,aAAap2B,OAAOxyB,QAAQ4oD,UAAU;AAC5C,UAAMC,iBAAiB7wB,MAAM/9B;AAC7B,UAAM6uD,kBAAkBJ,OAAOzuD;AAC/B,UAAM8uD,oBAAoBN,KAAKxuD;AAE/B,UAAMwuB,UAAUO,UAAUhpB,QAAQyoB,OAAO;AACzC,QAAI3S,SAAS2S,QAAQ3S;AACrB,QAAIC,QAAQ;AAGZ,QAAIizC,qBAAqBP,KAAKptD,OAAO,CAAC8P,OAAO89C,aAAa99C,QAAQ89C,SAASC,OAAOjvD,SAASgvD,SAASx2B,MAAMx4B,SAASgvD,SAASE,MAAMlvD,QAAQ,CAAA;AAC1I+uD,0BAAsBR,QAAQY,WAAWnvD,SAASuuD,QAAQa,UAAUpvD;AAEpE,QAAI4uD,gBAAgB;AAClB/yC,gBAAU+yC,iBAAiBhD,UAAUnzB,cACnCm2B,iBAAiB,KAAK7oD,QAAQspD,eAC/BtpD,QAAQupD;;AAEX,QAAIP,oBAAoB;AAEtB,YAAMQ,iBAAiBxpD,QAAQypD,gBAAgBrwD,KAAKoC,IAAIymD,WAAW0G,SAASj2B,UAAU,IAAIi2B,SAASj2B;AACnG5c,gBAAUizC,oBAAoBS,kBAC5BR,qBAAqBD,qBAAqBJ,SAASj2B,cACnDs2B,qBAAqB,KAAKhpD,QAAQ0pD;;AAEtC,QAAIZ,iBAAiB;AACnBhzC,gBAAU9V,QAAQ2pD,kBACjBb,kBAAkBF,WAAWl2B,cAC5Bo2B,kBAAkB,KAAK9oD,QAAQ4pD;;AAInC,QAAIC,eAAe;AACnB,UAAMC,eAAe,SAAS/rC,MAAM;AAClChI,cAAQ3c,KAAKoC,IAAIua,OAAOzO,IAAIk8C,YAAYzlC,IAAMhI,EAAAA,QAAQ8zC,YAAAA;IACxD;AAEAviD,QAAIu2B,KAAI;AAERv2B,QAAIirB,OAAOszB,UAAUjsB;AACrBzQ,SAAKq/B,QAAQxwB,OAAO8xB,YAAAA;AAGpBxiD,QAAIirB,OAAOo2B,SAAS/uB;AACpBzQ,SAAKq/B,QAAQY,WAAWn4C,OAAOu3C,QAAQa,SAAS,GAAGS,YAAAA;AAGnDD,mBAAe7pD,QAAQypD,gBAAiBvH,WAAW,IAAIliD,QAAQ8mB,aAAc;AAC7EqC,SAAKs/B,MAAM,CAACQ,aAAa;AACvB9/B,WAAK8/B,SAASC,QAAQY,YAAAA;AACtB3gC,WAAK8/B,SAASx2B,OAAOq3B,YAAAA;AACrB3gC,WAAK8/B,SAASE,OAAOW,YAAAA;IACvB,CAAA;AAGAD,mBAAe;AAGfviD,QAAIirB,OAAOq2B,WAAWhvB;AACtBzQ,SAAKq/B,QAAQE,QAAQoB,YAAAA;AAErBxiD,QAAIy2B,QAAO;AAGXhoB,aAAS0S,QAAQ1S;AAEjB,WAAO;MAACA;MAAOD;IAAM;EACvB;AAEA,WAASi0C,gBAAgBvxD,OAAOmI,MAAM;AACpC,UAAM,EAACe,GAAAA,IAAGoU,OAAAA,IAAUnV;AAEpB,QAAIe,KAAIoU,SAAS,GAAG;AAClB,aAAO;IACT,WAAWpU,KAAKlJ,MAAMsd,SAASA,SAAS,GAAI;AAC1C,aAAO;;AAET,WAAO;EACT;AAEA,WAASk0C,oBAAoBC,QAAQzxD,OAAOwH,SAASW,MAAM;AACzD,UAAM,EAACc,GAAAA,IAAGsU,MAAAA,IAASpV;AACnB,UAAMupD,QAAQlqD,QAAQmqD,YAAYnqD,QAAQoqD;AAC1C,QAAIH,WAAW,UAAUxoD,KAAIsU,QAAQm0C,QAAQ1xD,MAAMud,OAAO;AACxD,aAAO;;AAGT,QAAIk0C,WAAW,WAAWxoD,KAAIsU,QAAQm0C,QAAQ,GAAG;AAC/C,aAAO;;EAEX;AAEA,WAASG,gBAAgB7xD,OAAOwH,SAASW,MAAM2pD,QAAQ;AACrD,UAAM,EAAC7oD,GAAAA,IAAGsU,MAAAA,IAASpV;AACnB,UAAM,EAACoV,OAAOw0C,YAAYl9C,WAAW,EAACvL,MAAMF,MAAK,EAAC,IAAIpJ;AACtD,QAAIyxD,SAAS;AAEb,QAAIK,WAAW,UAAU;AACvBL,eAASxoD,OAAMK,OAAOF,SAAS,IAAI,SAAS;eACnCH,MAAKsU,QAAQ,GAAG;AACzBk0C,eAAS;IACX,WAAWxoD,MAAK8oD,aAAax0C,QAAQ,GAAG;AACtCk0C,eAAS;;AAGX,QAAID,oBAAoBC,QAAQzxD,OAAOwH,SAASW,IAAO,GAAA;AACrDspD,eAAS;;AAGX,WAAOA;EACT;AAKA,WAASO,mBAAmBhyD,OAAOwH,SAASW,MAAM;AAChD,UAAM2pD,SAAS3pD,KAAK2pD,UAAUtqD,QAAQsqD,UAAUP,gBAAgBvxD,OAAOmI,IAAAA;AAEvE,WAAO;MACLspD,QAAQtpD,KAAKspD,UAAUjqD,QAAQiqD,UAAUI,gBAAgB7xD,OAAOwH,SAASW,MAAM2pD,MAAAA;MAC/EA;IACF;EACF;AAEA,WAASG,OAAO9pD,MAAMspD,QAAQ;AAC5B,QAAI,EAACxoD,GAAAA,IAAGsU,MAAAA,IAASpV;AACjB,QAAIspD,WAAW,SAAS;AACtBxoD,MAAAA,MAAKsU;eACIk0C,WAAW,UAAU;AAC9BxoD,MAAAA,MAAMsU,QAAQ;;AAEhB,WAAOtU;EACT;AAEA,WAASipD,OAAO/pD,MAAM2pD,QAAQK,gBAAgB;AAE5C,QAAI,EAACjpD,GAAAA,IAAGoU,OAAAA,IAAUnV;AAClB,QAAI2pD,WAAW,OAAO;AACpB5oD,MAAAA,MAAKipD;eACIL,WAAW,UAAU;AAC9B5oD,MAAAA,MAAKoU,SAAS60C;WACT;AACLjpD,MAAAA,MAAMoU,SAAS;;AAEjB,WAAOpU;EACT;AAKA,WAASkpD,mBAAmB5qD,SAASW,MAAMkqD,WAAWryD,OAAO;AAC3D,UAAM,EAAC2xD,WAAWC,cAAcU,aAAAA,IAAgB9qD;AAChD,UAAM,EAACiqD,QAAQK,OAAAA,IAAUO;AACzB,UAAMF,iBAAiBR,YAAYC;AACnC,UAAM,EAACjR,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAc8R,YAAAA;AAEnE,QAAIrpD,KAAIgpD,OAAO9pD,MAAMspD,MAAAA;AACrB,UAAMvoD,KAAIgpD,OAAO/pD,MAAM2pD,QAAQK,cAAAA;AAE/B,QAAIL,WAAW,UAAU;AACvB,UAAIL,WAAW,QAAQ;AACrBxoD,QAAAA,MAAKkpD;iBACIV,WAAW,SAAS;AAC7BxoD,QAAAA,MAAKkpD;;eAEEV,WAAW,QAAQ;AAC5BxoD,MAAAA,MAAKrI,KAAKoC,IAAI29C,SAASE,UAAc8Q,IAAAA;eAC5BF,WAAW,SAAS;AAC7BxoD,MAAAA,MAAKrI,KAAKoC,IAAI49C,UAAUE,WAAe6Q,IAAAA;;AAGzC,WAAO;MACL1oD,GAAGs2B,YAAYt2B,IAAG,GAAGjJ,MAAMud,QAAQpV,KAAKoV,KAAK;MAC7CrU,GAAGq2B,YAAYr2B,IAAG,GAAGlJ,MAAMsd,SAASnV,KAAKmV,MAAM;IACjD;EACF;AAEA,WAASi1C,YAAYvC,SAASr3B,OAAOnxB,SAAS;AAC5C,UAAMyoB,UAAUO,UAAUhpB,QAAQyoB,OAAO;AAEzC,WAAO0I,UAAU,WACbq3B,QAAQ/mD,IAAI+mD,QAAQzyC,QAAQ,IAC5Bob,UAAU,UACRq3B,QAAQ/mD,IAAI+mD,QAAQzyC,QAAQ0S,QAAQ7mB,QACpC4mD,QAAQ/mD,IAAIgnB,QAAQ3mB;EAC5B;AAKA,WAASkpD,wBAAwB/zB,WAAU;AACzC,WAAO8wB,aAAa,CAAA,GAAIG,cAAcjxB,SAAAA,CAAAA;EACxC;AAEA,WAASg0B,qBAAqBhlD,QAAQuiD,SAAS0C,cAAc;AAC3D,WAAOhlD,cAAcD,QAAQ;MAC3BuiD;MACA0C;MACAvyD,MAAM;IACR,CAAA;EACF;AAEA,WAASwyD,kBAAkBvyD,WAAW8U,SAAS;AAC7C,UAAMuT,WAAWvT,WAAWA,QAAQvH,WAAWuH,QAAQvH,QAAQqiD,WAAW96C,QAAQvH,QAAQqiD,QAAQ5vD;AAClG,WAAOqoB,WAAWroB,UAAUqoB,SAASA,QAAAA,IAAYroB;EACnD;AAEA,MAAMwyD,mBAAmB;IAEvBC,aAAaC;IACbtzB,MAAMkzB,cAAc;AAClB,UAAIA,aAAajxD,SAAS,GAAG;AAC3B,cAAMG,OAAO8wD,aAAa,CAAE;AAC5B,cAAMv/C,SAASvR,KAAK5B,MAAM6K,KAAKsI;AAC/B,cAAM4/C,aAAa5/C,SAASA,OAAO1R,SAAS;AAE5C,YAAI,QAAQ,KAAK+F,WAAW,KAAKA,QAAQ+C,SAAS,WAAW;AAC3D,iBAAO3I,KAAK+L,QAAQ4G,SAAS;mBACpB3S,KAAK2S,OAAO;AACrB,iBAAO3S,KAAK2S;QACd,WAAWw+C,aAAa,KAAKnxD,KAAKkM,YAAYilD,YAAY;AACxD,iBAAO5/C,OAAOvR,KAAKkM,SAAS;;;AAIhC,aAAO;IACT;IACAklD,YAAYF;IAGZlC,YAAYkC;IAGZG,aAAaH;IACbv+C,MAAM2+C,aAAa;AACjB,UAAI,QAAQ,KAAK1rD,WAAW,KAAKA,QAAQ+C,SAAS,WAAW;AAC3D,eAAO2oD,YAAY3+C,QAAQ,OAAO2+C,YAAYpD,kBAAkBoD,YAAYpD;;AAG9E,UAAIv7C,QAAQ2+C,YAAYvlD,QAAQ4G,SAAS;AAEzC,UAAIA,OAAO;AACTA,iBAAS;;AAEX,YAAMrM,QAAQgrD,YAAYpD;AAC1B,UAAI,CAACn2C,cAAczR,KAAQ,GAAA;AACzBqM,iBAASrM;;AAEX,aAAOqM;IACT;IACA4+C,WAAWD,aAAa;AACtB,YAAMjoD,OAAOioD,YAAYlzD,MAAMqR,eAAe6hD,YAAY1oD,YAAY;AACtE,YAAMhD,UAAUyD,KAAKsB,WAAWwI,SAASm+C,YAAYplD,SAAS;AAC9D,aAAO;QACLwU,aAAa9a,QAAQ8a;QACrBF,iBAAiB5a,QAAQ4a;QACzBK,aAAajb,QAAQib;QACrB6gB,YAAY97B,QAAQ87B;QACpBE,kBAAkBh8B,QAAQg8B;QAC1BsV,cAAc;MAChB;IACF;IACAsa,iBAAiB;AACf,aAAO,KAAK5rD,QAAQ6rD;IACtB;IACAC,gBAAgBJ,aAAa;AAC3B,YAAMjoD,OAAOioD,YAAYlzD,MAAMqR,eAAe6hD,YAAY1oD,YAAY;AACtE,YAAMhD,UAAUyD,KAAKsB,WAAWwI,SAASm+C,YAAYplD,SAAS;AAC9D,aAAO;QACLiU,YAAYva,QAAQua;QACpBtC,UAAUjY,QAAQiY;MACpB;IACF;IACA8zC,YAAYT;IAGZjC,WAAWiC;IAGXU,cAAcV;IACd5C,QAAQ4C;IACRW,aAAaX;EACf;AAWA,WAASY,2BAA2BtzD,WAAW4d,MAAMlP,KAAK+6B,KAAK;AAC7D,UAAMxR,SAASj4B,UAAU4d,IAAAA,EAAM/c,KAAK6N,KAAK+6B,GAAAA;AAEzC,QAAI,OAAOxR,WAAW,aAAa;AACjC,aAAOu6B,iBAAiB50C,IAAAA,EAAM/c,KAAK6N,KAAK+6B,GAAAA;;AAG1C,WAAOxR;EACT;AAEO,MAAMs7B,UAAN,cAAsBt9B,SAAAA;IAK3B,OAAO04B,cAAcA;IAErBvvD,YAAY6G,QAAQ;AAClB,YAAK;AAEL,WAAKutD,UAAU;AACf,WAAK/xD,UAAU,CAAA;AACf,WAAKgyD,iBAAiB/zD;AACtB,WAAKg0D,QAAQh0D;AACb,WAAKi0D,oBAAoBj0D;AACzB,WAAKk0D,gBAAgB,CAAA;AACrB,WAAKlsD,cAAchI;AACnB,WAAK4P,WAAW5P;AAChB,WAAKE,QAAQqG,OAAOrG;AACpB,WAAKwH,UAAUnB,OAAOmB;AACtB,WAAKysD,aAAan0D;AAClB,WAAK0/B,QAAQ1/B;AACb,WAAK8wD,aAAa9wD;AAClB,WAAKmwD,OAAOnwD;AACZ,WAAK+wD,YAAY/wD;AACjB,WAAKowD,SAASpwD;AACd,WAAK2xD,SAAS3xD;AACd,WAAKgyD,SAAShyD;AACd,WAAKmJ,IAAInJ;AACT,WAAKoJ,IAAIpJ;AACT,WAAKwd,SAASxd;AACd,WAAKyd,QAAQzd;AACb,WAAKo0D,SAASp0D;AACd,WAAKq0D,SAASr0D;AAGd,WAAKs0D,cAAct0D;AACnB,WAAKu0D,mBAAmBv0D;AACxB,WAAKw0D,kBAAkBx0D;IACzB;IAEA8P,WAAWpI,SAAS;AAClB,WAAKA,UAAUA;AACf,WAAKusD,oBAAoBj0D;AACzB,WAAK4P,WAAW5P;IAClB;IAKAgW,qBAAqB;AACnB,YAAM1H,SAAS,KAAK2lD;AAEpB,UAAI3lD,QAAQ;AACV,eAAOA;;AAGT,YAAMpO,QAAQ,KAAKA;AACnB,YAAMwH,UAAU,KAAKA,QAAQu0B,WAAW,KAAKvpB,WAAU,CAAA;AACvD,YAAM7J,OAAOnB,QAAQ2vB,WAAWn3B,MAAMwH,QAAQV,aAAaU,QAAQE;AACnE,YAAMA,aAAa,IAAItB,WAAW,KAAKpG,OAAO2I,IAAAA;AAC9C,UAAIA,KAAKsN,YAAY;AACnB,aAAK89C,oBAAoBptD,OAAOkP,OAAOnO,UAAAA;;AAGzC,aAAOA;IACT;IAKA8K,aAAa;AACX,aAAO,KAAK9C,aACZ,KAAKA,WAAW+iD,qBAAqB,KAAKzyD,MAAMwS,WAAU,GAAI,MAAM,KAAKwhD,aAAa;IACxF;IAEAO,SAASr/C,SAAS1N,SAAS;AACzB,YAAM,EAACpH,UAAS,IAAIoH;AAEpB,YAAMqrD,cAAca,2BAA2BtzD,WAAW,eAAe,MAAM8U,OAAAA;AAC/E,YAAMsqB,QAAQk0B,2BAA2BtzD,WAAW,SAAS,MAAM8U,OAAAA;AACnE,YAAM89C,aAAaU,2BAA2BtzD,WAAW,cAAc,MAAM8U,OAAAA;AAE7E,UAAI+kB,QAAQ,CAAA;AACZA,cAAQs1B,aAAat1B,OAAOy1B,cAAcmD,WAAAA,CAAAA;AAC1C54B,cAAQs1B,aAAat1B,OAAOy1B,cAAclwB,KAAAA,CAAAA;AAC1CvF,cAAQs1B,aAAat1B,OAAOy1B,cAAcsD,UAAAA,CAAAA;AAE1C,aAAO/4B;IACT;IAEAu6B,cAAc9B,cAAclrD,SAAS;AACnC,aAAOgrD,wBACLkB,2BAA2BlsD,QAAQpH,WAAW,cAAc,MAAMsyD,YAAAA,CAAAA;IAEtE;IAEA+B,QAAQ/B,cAAclrD,SAAS;AAC7B,YAAM,EAACpH,UAAS,IAAIoH;AACpB,YAAMktD,YAAY,CAAA;AAElB/jC,WAAK+hC,cAAc,CAACx9C,YAAY;AAC9B,cAAMu7C,WAAW;UACfC,QAAQ,CAAA;UACRz2B,OAAO,CAAA;UACP02B,OAAO,CAAA;QACT;AACA,cAAMgE,SAAShC,kBAAkBvyD,WAAW8U,OAAAA;AAC5Cq6C,qBAAakB,SAASC,QAAQhB,cAAcgE,2BAA2BiB,QAAQ,eAAe,MAAMz/C,OAAAA,CAAAA,CAAAA;AACpGq6C,qBAAakB,SAASx2B,OAAOy5B,2BAA2BiB,QAAQ,SAAS,MAAMz/C,OAAAA,CAAAA;AAC/Eq6C,qBAAakB,SAASE,OAAOjB,cAAcgE,2BAA2BiB,QAAQ,cAAc,MAAMz/C,OAAAA,CAAAA,CAAAA;AAElGw/C,kBAAUhyD,KAAK+tD,QAAAA;MACjB,CAAA;AAEA,aAAOiE;IACT;IAEAE,aAAalC,cAAclrD,SAAS;AAClC,aAAOgrD,wBACLkB,2BAA2BlsD,QAAQpH,WAAW,aAAa,MAAMsyD,YAAAA,CAAAA;IAErE;IAGAmC,UAAUnC,cAAclrD,SAAS;AAC/B,YAAM,EAACpH,UAAS,IAAIoH;AAEpB,YAAMgsD,eAAeE,2BAA2BtzD,WAAW,gBAAgB,MAAMsyD,YAAAA;AACjF,YAAMxC,SAASwD,2BAA2BtzD,WAAW,UAAU,MAAMsyD,YAAAA;AACrE,YAAMe,cAAcC,2BAA2BtzD,WAAW,eAAe,MAAMsyD,YAAAA;AAE/E,UAAIz4B,QAAQ,CAAA;AACZA,cAAQs1B,aAAat1B,OAAOy1B,cAAc8D,YAAAA,CAAAA;AAC1Cv5B,cAAQs1B,aAAat1B,OAAOy1B,cAAcQ,MAAAA,CAAAA;AAC1Cj2B,cAAQs1B,aAAat1B,OAAOy1B,cAAc+D,WAAAA,CAAAA;AAE1C,aAAOx5B;IACT;IAKA66B,aAAattD,SAAS;AACpB,YAAM/B,SAAS,KAAK5D;AACpB,YAAMgJ,OAAO,KAAK7K,MAAM6K;AACxB,YAAMupD,cAAc,CAAA;AACpB,YAAMC,mBAAmB,CAAA;AACzB,YAAMC,kBAAkB,CAAA;AACxB,UAAI5B,eAAe,CAAA;AACnB,UAAIhxD,IAAG+2B;AAEP,WAAK/2B,KAAI,GAAG+2B,MAAMhzB,OAAOhE,QAAQC,KAAI+2B,KAAK,EAAE/2B,IAAG;AAC7CgxD,qBAAahwD,KAAKmtD,kBAAkB,KAAK7vD,OAAOyF,OAAO/D,EAAE,CAAA,CAAA;MAC3D;AAGA,UAAI8F,QAAQ8F,QAAQ;AAClBolD,uBAAeA,aAAaplD,OAAO,CAACO,SAAS3D,QAAOmiB,UAAU7kB,QAAQ8F,OAAOO,SAAS3D,QAAOmiB,OAAOxhB,IAAAA,CAAAA;;AAItG,UAAIrD,QAAQutD,UAAU;AACpBrC,uBAAeA,aAAa/5C,KAAK,CAACC,IAAGlP,OAAMlC,QAAQutD,SAASn8C,IAAGlP,IAAGmB,IAAAA,CAAAA;;AAIpE8lB,WAAK+hC,cAAc,CAACx9C,YAAY;AAC9B,cAAMy/C,SAAShC,kBAAkBnrD,QAAQpH,WAAW8U,OAAAA;AACpDk/C,oBAAY1xD,KAAKgxD,2BAA2BiB,QAAQ,cAAc,MAAMz/C,OAAAA,CAAAA;AACxEm/C,yBAAiB3xD,KAAKgxD,2BAA2BiB,QAAQ,mBAAmB,MAAMz/C,OAAAA,CAAAA;AAClFo/C,wBAAgB5xD,KAAKgxD,2BAA2BiB,QAAQ,kBAAkB,MAAMz/C,OAAAA,CAAAA;MAClF,CAAA;AAEA,WAAKk/C,cAAcA;AACnB,WAAKC,mBAAmBA;AACxB,WAAKC,kBAAkBA;AACvB,WAAKL,aAAavB;AAClB,aAAOA;IACT;IAEAhtD,OAAOmqB,SAAS8nB,QAAQ;AACtB,YAAMnwC,UAAU,KAAKA,QAAQu0B,WAAW,KAAKvpB,WAAU,CAAA;AACvD,YAAM/M,SAAS,KAAK5D;AACpB,UAAIuF;AACJ,UAAIsrD,eAAe,CAAA;AAEnB,UAAI,CAACjtD,OAAOhE,QAAQ;AAClB,YAAI,KAAKmyD,YAAY,GAAG;AACtBxsD,uBAAa;YACXwsD,SAAS;UACX;;aAEG;AACL,cAAM7pC,WAAWglC,YAAYvnD,QAAQuiB,QAAQ,EAAE9oB,KAAK,MAAMwE,QAAQ,KAAKouD,cAAc;AACrFnB,uBAAe,KAAKoC,aAAattD,OAAAA;AAEjC,aAAKg4B,QAAQ,KAAK+0B,SAAS7B,cAAclrD,OAAAA;AACzC,aAAKopD,aAAa,KAAK4D,cAAc9B,cAAclrD,OAAAA;AACnD,aAAKyoD,OAAO,KAAKwE,QAAQ/B,cAAclrD,OAAAA;AACvC,aAAKqpD,YAAY,KAAK+D,aAAalC,cAAclrD,OAAAA;AACjD,aAAK0oD,SAAS,KAAK2E,UAAUnC,cAAclrD,OAAAA;AAE3C,cAAMW,OAAO,KAAK2rD,QAAQ/D,eAAe,MAAMvoD,OAAAA;AAC/C,cAAMwtD,kBAAkBruD,OAAOyB,OAAO,CAAA,GAAI2hB,UAAU5hB,IAAAA;AACpD,cAAMkqD,YAAYL,mBAAmB,KAAKhyD,OAAOwH,SAASwtD,eAAAA;AAC1D,cAAMC,kBAAkB7C,mBAAmB5qD,SAASwtD,iBAAiB3C,WAAW,KAAKryD,KAAK;AAE1F,aAAKyxD,SAASY,UAAUZ;AACxB,aAAKK,SAASO,UAAUP;AAExB1qD,qBAAa;UACXwsD,SAAS;UACT3qD,GAAGgsD,gBAAgBhsD;UACnBC,GAAG+rD,gBAAgB/rD;UACnBqU,OAAOpV,KAAKoV;UACZD,QAAQnV,KAAKmV;UACb42C,QAAQnqC,SAAS9gB;UACjBkrD,QAAQpqC,SAAS7gB;QACnB;;AAGF,WAAK8qD,gBAAgBtB;AACrB,WAAKhjD,WAAW5P;AAEhB,UAAIsH,YAAY;AACd,aAAK0O,mBAAkB,EAAGpQ,OAAO,MAAM0B,UAAAA;;AAGzC,UAAIyoB,WAAWroB,QAAQ0tD,UAAU;AAC/B1tD,gBAAQ0tD,SAASj0D,KAAK,MAAM;UAACjB,OAAO,KAAKA;UAAOgwD,SAAS;UAAMrY;QAAM,CAAA;;IAEzE;IAEAwd,UAAUC,cAActmD,KAAK3G,MAAMX,SAAS;AAC1C,YAAM6tD,gBAAgB,KAAKC,iBAAiBF,cAAcjtD,MAAMX,OAAAA;AAEhEsH,UAAIm3B,OAAOovB,cAAcxyB,IAAIwyB,cAAcvyB,EAAE;AAC7Ch0B,UAAIm3B,OAAOovB,cAActyB,IAAIsyB,cAAcryB,EAAE;AAC7Cl0B,UAAIm3B,OAAOovB,cAAcE,IAAIF,cAAcG,EAAE;IAC/C;IAEAF,iBAAiBF,cAAcjtD,MAAMX,SAAS;AAC5C,YAAM,EAACiqD,QAAQK,OAAM,IAAI;AACzB,YAAM,EAACH,WAAWW,aAAAA,IAAgB9qD;AAClC,YAAM,EAACm5C,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAc8R,YAAAA;AACnE,YAAM,EAACrpD,GAAGwsD,KAAKvsD,GAAGwsD,IAAAA,IAAON;AACzB,YAAM,EAAC73C,OAAOD,OAAAA,IAAUnV;AACxB,UAAI06B,IAAIE,IAAIwyB,IAAIzyB,IAAIE,IAAIwyB;AAExB,UAAI1D,WAAW,UAAU;AACvB9uB,aAAK0yB,MAAOp4C,SAAS;AAErB,YAAIm0C,WAAW,QAAQ;AACrB5uB,eAAK4yB;AACL1yB,eAAKF,KAAK8uB;AAGV7uB,eAAKE,KAAK2uB;AACV6D,eAAKxyB,KAAK2uB;eACL;AACL9uB,eAAK4yB,MAAMl4C;AACXwlB,eAAKF,KAAK8uB;AAGV7uB,eAAKE,KAAK2uB;AACV6D,eAAKxyB,KAAK2uB;;AAGZ4D,aAAK1yB;aACA;AACL,YAAI4uB,WAAW,QAAQ;AACrB1uB,eAAK0yB,MAAM70D,KAAKoC,IAAI29C,SAASE,UAAe8Q,IAAAA;mBACnCF,WAAW,SAAS;AAC7B1uB,eAAK0yB,MAAMl4C,QAAQ3c,KAAKoC,IAAI49C,UAAUE,WAAe6Q,IAAAA;eAChD;AACL5uB,eAAK,KAAKmxB;;AAGZ,YAAIpC,WAAW,OAAO;AACpBhvB,eAAK4yB;AACL1yB,eAAKF,KAAK6uB;AAGV9uB,eAAKE,KAAK4uB;AACV4D,eAAKxyB,KAAK4uB;eACL;AACL7uB,eAAK4yB,MAAMp4C;AACX0lB,eAAKF,KAAK6uB;AAGV9uB,eAAKE,KAAK4uB;AACV4D,eAAKxyB,KAAK4uB;;AAEZ6D,aAAK1yB;;AAEP,aAAO;QAACD;QAAIE;QAAIwyB;QAAIzyB;QAAIE;QAAIwyB;MAAE;IAChC;IAEA7uB,UAAUgvB,KAAI7mD,KAAKtH,SAAS;AAC1B,YAAMg4B,QAAQ,KAAKA;AACnB,YAAM/9B,SAAS+9B,MAAM/9B;AACrB,UAAI4rD,WAAWyD,cAAcpvD;AAE7B,UAAID,QAAQ;AACV,cAAMiqD,YAAYC,cAAcnkD,QAAQikD,KAAK,KAAKxiD,GAAG,KAAKsU,KAAK;AAE/Do4C,QAAAA,IAAG1sD,IAAIspD,YAAY,MAAM/qD,QAAQ6yB,YAAY7yB,OAAAA;AAE7CsH,YAAIk1B,YAAY0nB,UAAU1nB,UAAUx8B,QAAQ6yB,UAAU;AACtDvrB,YAAIq1B,eAAe;AAEnBkpB,oBAAYrzB,OAAOxyB,QAAQ6lD,SAAS;AACpCyD,uBAAetpD,QAAQspD;AAEvBhiD,YAAIqT,YAAY3a,QAAQouD;AACxB9mD,YAAIirB,OAAOszB,UAAUjsB;AAErB,aAAK1/B,KAAI,GAAGA,KAAID,QAAQ,EAAEC,IAAG;AAC3BoN,cAAI49C,SAASltB,MAAM99B,EAAAA,GAAIgqD,UAAUziD,EAAE0sD,IAAG1sD,CAAC,GAAG0sD,IAAGzsD,IAAImkD,UAAUnzB,aAAa,CAAA;AACxEy7B,UAAAA,IAAGzsD,KAAKmkD,UAAUnzB,aAAa42B;AAE/B,cAAIpvD,KAAI,MAAMD,QAAQ;AACpBk0D,YAAAA,IAAGzsD,KAAK1B,QAAQupD,oBAAoBD;;QAExC;;IAEJ;IAKA+E,cAAc/mD,KAAK6mD,KAAIj0D,IAAGgqD,WAAWlkD,SAAS;AAC5C,YAAM2rD,aAAa,KAAKiB,YAAY1yD,EAAE;AACtC,YAAM4xD,kBAAkB,KAAKe,iBAAiB3yD,EAAE;AAChD,YAAM,EAAC+nD,WAAWC,SAAAA,IAAYliD;AAC9B,YAAM2oD,WAAWn2B,OAAOxyB,QAAQ2oD,QAAQ;AACxC,YAAM2F,SAASvD,YAAY,MAAM,QAAQ/qD,OAAAA;AACzC,YAAMuuD,YAAYrK,UAAUziD,EAAE6sD,MAAAA;AAC9B,YAAME,UAAUvM,YAAY0G,SAASj2B,cAAci2B,SAASj2B,aAAauvB,aAAa,IAAI;AAC1F,YAAMwM,SAASN,IAAGzsD,IAAI8sD;AAEtB,UAAIxuD,QAAQmiD,eAAe;AACzB,cAAMyC,cAAc;UAClBltC,QAAQte,KAAKC,IAAI6oD,UAAUD,SAAa,IAAA;UACxC1nC,YAAYuxC,gBAAgBvxC;UAC5BtC,UAAU6zC,gBAAgB7zC;UAC1BgD,aAAa;QACf;AAGA,cAAMgC,UAAUinC,UAAUG,WAAWkK,WAAWrM,QAAAA,IAAYA,WAAW;AACvE,cAAMhlC,UAAUuxC,SAASxM,YAAY;AAGrC36C,YAAIuT,cAAc7a,QAAQ0uD;AAC1BpnD,YAAIqT,YAAY3a,QAAQ0uD;AACxBnW,kBAAUjxC,KAAKs9C,aAAa3nC,SAASC,OAAAA;AAGrC5V,YAAIuT,cAAc8wC,WAAW7wC;AAC7BxT,YAAIqT,YAAYgxC,WAAW/wC;AAC3B29B,kBAAUjxC,KAAKs9C,aAAa3nC,SAASC,OAAAA;aAChC;AAEL5V,YAAI0T,YAAY/b,SAAS0sD,WAAW1wC,WAAW,IAAI7hB,KAAKoC,IAAO2D,GAAAA,OAAOW,OAAO6rD,WAAW1wC,WAAW,CAAM0wC,IAAAA,WAAW1wC,eAAe;AACnI3T,YAAIuT,cAAc8wC,WAAW7wC;AAC7BxT,YAAI+2B,YAAYstB,WAAW7vB,cAAc,CAAA,CAAE;AAC3Cx0B,YAAIg3B,iBAAiBqtB,WAAW3vB,oBAAoB;AAGpD,cAAM2yB,SAASzK,UAAUG,WAAWkK,WAAWrM,QAAAA;AAC/C,cAAM0M,SAAS1K,UAAUG,WAAWH,UAAUY,MAAMyJ,WAAW,CAAA,GAAIrM,WAAW,CAAA;AAC9E,cAAM5Q,eAAe0H,cAAc2S,WAAWra,YAAY;AAE1D,YAAInyC,OAAOW,OAAOwxC,YAAAA,EAAczN,KAAKvvB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClDhN,cAAIi3B,UAAS;AACbj3B,cAAIqT,YAAY3a,QAAQ0uD;AACxBrU,6BAAmB/yC,KAAK;YACtB7F,GAAGktD;YACHjtD,GAAG+sD;YACHnnC,GAAG46B;YACH16B,GAAGy6B;YACHvqC,QAAQ45B;UACV,CAAA;AACAhqC,cAAIiB,KAAI;AACRjB,cAAIo3B,OAAM;AAGVp3B,cAAIqT,YAAYgxC,WAAW/wC;AAC3BtT,cAAIi3B,UAAS;AACb8b,6BAAmB/yC,KAAK;YACtB7F,GAAGmtD;YACHltD,GAAG+sD,SAAS;YACZnnC,GAAG46B,WAAW;YACd16B,GAAGy6B,YAAY;YACfvqC,QAAQ45B;UACV,CAAA;AACAhqC,cAAIiB,KAAI;eACH;AAELjB,cAAIqT,YAAY3a,QAAQ0uD;AACxBpnD,cAAIw2B,SAAS6wB,QAAQF,QAAQvM,UAAUD,SAAAA;AACvC36C,cAAIunD,WAAWF,QAAQF,QAAQvM,UAAUD,SAAAA;AAEzC36C,cAAIqT,YAAYgxC,WAAW/wC;AAC3BtT,cAAIw2B,SAAS8wB,QAAQH,SAAS,GAAGvM,WAAW,GAAGD,YAAY,CAAA;;;AAK/D36C,UAAIqT,YAAY,KAAKmyC,gBAAgB5yD,EAAE;IACzC;IAEA40D,SAASX,KAAI7mD,KAAKtH,SAAS;AACzB,YAAM,EAACyoD,KAAAA,IAAQ;AACf,YAAM,EAACiB,aAAaqF,WAAWtF,eAAexH,WAAWC,UAAUp7B,WAAAA,IAAc9mB;AACjF,YAAM2oD,WAAWn2B,OAAOxyB,QAAQ2oD,QAAQ;AACxC,UAAIa,iBAAiBb,SAASj2B;AAC9B,UAAIs8B,eAAe;AAEnB,YAAM9K,YAAYC,cAAcnkD,QAAQikD,KAAK,KAAKxiD,GAAG,KAAKsU,KAAK;AAE/D,YAAMk5C,iBAAiB,SAASlxC,MAAM;AACpCzW,YAAI49C,SAASnnC,MAAMmmC,UAAUziD,EAAE0sD,IAAG1sD,IAAIutD,YAAAA,GAAeb,IAAGzsD,IAAI8nD,iBAAiB,CAAA;AAC7E2E,QAAAA,IAAGzsD,KAAK8nD,iBAAiBE;MAC3B;AAEA,YAAMwF,0BAA0BhL,UAAU1nB,UAAUuyB,SAAAA;AACpD,UAAI9F,UAAUkG,WAAW18B,OAAOv4B,IAAGwoB,IAAGjgB,MAAM82B;AAE5CjyB,UAAIk1B,YAAYuyB;AAChBznD,UAAIq1B,eAAe;AACnBr1B,UAAIirB,OAAOo2B,SAAS/uB;AAEpBu0B,MAAAA,IAAG1sD,IAAIspD,YAAY,MAAMmE,yBAAyBlvD,OAAAA;AAGlDsH,UAAIqT,YAAY3a,QAAQ6rD;AACxB1iC,WAAK,KAAKigC,YAAY6F,cAAAA;AAEtBD,qBAAevF,iBAAiByF,4BAA4B,UACxDH,cAAc,WAAY7M,WAAW,IAAIp7B,aAAeo7B,WAAW,IAAIp7B,aACvE;AAGJ,WAAK5sB,KAAI,GAAGuI,OAAOgmD,KAAKxuD,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7C+uD,mBAAWR,KAAKvuD,EAAE;AAClBi1D,oBAAY,KAAKrC,gBAAgB5yD,EAAE;AAEnCoN,YAAIqT,YAAYw0C;AAChBhmC,aAAK8/B,SAASC,QAAQ+F,cAAAA;AAEtBx8B,gBAAQw2B,SAASx2B;AAEjB,YAAIg3B,iBAAiBh3B,MAAMx4B,QAAQ;AACjC,eAAKo0D,cAAc/mD,KAAK6mD,KAAIj0D,IAAGgqD,WAAWlkD,OAAAA;AAC1CwpD,2BAAiBpwD,KAAKoC,IAAImtD,SAASj2B,YAAYuvB,SAAAA;;AAGjD,aAAKv/B,KAAI,GAAG6W,OAAO9G,MAAMx4B,QAAQyoB,KAAI6W,MAAM,EAAE7W,IAAG;AAC9CusC,yBAAex8B,MAAM/P,EAAE,CAAA;AAEvB8mC,2BAAiBb,SAASj2B;QAC5B;AAEAvJ,aAAK8/B,SAASE,OAAO8F,cAAAA;MACvB;AAGAD,qBAAe;AACfxF,uBAAiBb,SAASj2B;AAG1BvJ,WAAK,KAAKkgC,WAAW4F,cAAAA;AACrBd,MAAAA,IAAGzsD,KAAKgoD;IACV;IAEA0F,WAAWjB,KAAI7mD,KAAKtH,SAAS;AAC3B,YAAM0oD,SAAS,KAAKA;AACpB,YAAMzuD,SAASyuD,OAAOzuD;AACtB,UAAI2uD,YAAY1uD;AAEhB,UAAID,QAAQ;AACV,cAAMiqD,YAAYC,cAAcnkD,QAAQikD,KAAK,KAAKxiD,GAAG,KAAKsU,KAAK;AAE/Do4C,QAAAA,IAAG1sD,IAAIspD,YAAY,MAAM/qD,QAAQqvD,aAAarvD,OAAAA;AAC9CmuD,QAAAA,IAAGzsD,KAAK1B,QAAQ2pD;AAEhBriD,YAAIk1B,YAAY0nB,UAAU1nB,UAAUx8B,QAAQqvD,WAAW;AACvD/nD,YAAIq1B,eAAe;AAEnBisB,qBAAap2B,OAAOxyB,QAAQ4oD,UAAU;AAEtCthD,YAAIqT,YAAY3a,QAAQsvD;AACxBhoD,YAAIirB,OAAOq2B,WAAWhvB;AAEtB,aAAK1/B,KAAI,GAAGA,KAAID,QAAQ,EAAEC,IAAG;AAC3BoN,cAAI49C,SAASwD,OAAOxuD,EAAAA,GAAIgqD,UAAUziD,EAAE0sD,IAAG1sD,CAAC,GAAG0sD,IAAGzsD,IAAIknD,WAAWl2B,aAAa,CAAA;AAC1Ey7B,UAAAA,IAAGzsD,KAAKknD,WAAWl2B,aAAa1yB,QAAQ4pD;QAC1C;;IAEJ;IAEAhsB,eAAeuwB,KAAI7mD,KAAKioD,aAAavvD,SAAS;AAC5C,YAAM,EAACiqD,QAAQK,OAAM,IAAI;AACzB,YAAM,EAAC7oD,GAAAA,IAAGC,GAAAA,GAAAA,IAAKysD;AACf,YAAM,EAACp4C,OAAOD,OAAAA,IAAUy5C;AACxB,YAAM,EAACpW,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAch5C,QAAQ8qD,YAAY;AAEvFxjD,UAAIqT,YAAY3a,QAAQ4a;AACxBtT,UAAIuT,cAAc7a,QAAQ8a;AAC1BxT,UAAI0T,YAAYhb,QAAQib;AAExB3T,UAAIi3B,UAAS;AACbj3B,UAAIk3B,OAAO/8B,KAAI03C,SAASz3C,EAAAA;AACxB,UAAI4oD,WAAW,OAAO;AACpB,aAAKqD,UAAUQ,KAAI7mD,KAAKioD,aAAavvD,OAAAA;;AAEvCsH,UAAIm3B,OAAOh9B,KAAIsU,QAAQqjC,UAAU13C,EAAAA;AACjC4F,UAAIkoD,iBAAiB/tD,KAAIsU,OAAOrU,IAAGD,KAAIsU,OAAOrU,KAAI03C,QAAAA;AAClD,UAAIkR,WAAW,YAAYL,WAAW,SAAS;AAC7C,aAAK0D,UAAUQ,KAAI7mD,KAAKioD,aAAavvD,OAAAA;;AAEvCsH,UAAIm3B,OAAOh9B,KAAIsU,OAAOrU,KAAIoU,SAASwjC,WAAAA;AACnChyC,UAAIkoD,iBAAiB/tD,KAAIsU,OAAOrU,KAAIoU,QAAQrU,KAAIsU,QAAQujC,aAAa53C,KAAIoU,MAAAA;AACzE,UAAIw0C,WAAW,UAAU;AACvB,aAAKqD,UAAUQ,KAAI7mD,KAAKioD,aAAavvD,OAAAA;;AAEvCsH,UAAIm3B,OAAOh9B,KAAI43C,YAAY33C,KAAIoU,MAAAA;AAC/BxO,UAAIkoD,iBAAiB/tD,IAAGC,KAAIoU,QAAQrU,IAAGC,KAAIoU,SAASujC,UAAAA;AACpD,UAAIiR,WAAW,YAAYL,WAAW,QAAQ;AAC5C,aAAK0D,UAAUQ,KAAI7mD,KAAKioD,aAAavvD,OAAAA;;AAEvCsH,UAAIm3B,OAAOh9B,IAAGC,KAAIy3C,OAAAA;AAClB7xC,UAAIkoD,iBAAiB/tD,IAAGC,IAAGD,KAAI03C,SAASz3C,EAAAA;AACxC4F,UAAI0pC,UAAS;AAEb1pC,UAAIiB,KAAI;AAER,UAAIvI,QAAQib,cAAc,GAAG;AAC3B3T,YAAIo3B,OAAM;;IAEd;IAMA+wB,uBAAuBzvD,SAAS;AAC9B,YAAMxH,QAAQ,KAAKA;AACnB,YAAMC,QAAQ,KAAK6H;AACnB,YAAMovD,QAAQj3D,SAASA,MAAMgJ;AAC7B,YAAMkuD,QAAQl3D,SAASA,MAAMiJ;AAC7B,UAAIguD,SAASC,OAAO;AAClB,cAAMptC,WAAWglC,YAAYvnD,QAAQuiB,QAAQ,EAAE9oB,KAAK,MAAM,KAAKY,SAAS,KAAKgyD,cAAc;AAC3F,YAAI,CAAC9pC,UAAU;AACb;;AAEF,cAAM5hB,OAAO,KAAK2rD,QAAQ/D,eAAe,MAAMvoD,OAAAA;AAC/C,cAAMwtD,kBAAkBruD,OAAOyB,OAAO,CAAA,GAAI2hB,UAAU,KAAK+pC,KAAK;AAC9D,cAAMzB,YAAYL,mBAAmBhyD,OAAOwH,SAASwtD,eAAAA;AACrD,cAAM51C,QAAQgzC,mBAAmB5qD,SAASwtD,iBAAiB3C,WAAWryD,KAAAA;AACtE,YAAIk3D,MAAM3xD,QAAQ6Z,MAAMnW,KAAKkuD,MAAM5xD,QAAQ6Z,MAAMlW,GAAG;AAClD,eAAKuoD,SAASY,UAAUZ;AACxB,eAAKK,SAASO,UAAUP;AACxB,eAAKv0C,QAAQpV,KAAKoV;AAClB,eAAKD,SAASnV,KAAKmV;AACnB,eAAK42C,SAASnqC,SAAS9gB;AACvB,eAAKkrD,SAASpqC,SAAS7gB;AACvB,eAAK4M,mBAAkB,EAAGpQ,OAAO,MAAM0Z,KAAAA;;;IAG7C;IAMAg4C,cAAc;AACZ,aAAO,CAAC,CAAC,KAAKxD;IAChB;IAEAjyD,KAAKmN,KAAK;AACR,YAAMtH,UAAU,KAAKA,QAAQu0B,WAAW,KAAKvpB,WAAU,CAAA;AACvD,UAAIohD,UAAU,KAAKA;AAEnB,UAAI,CAACA,SAAS;AACZ;;AAGF,WAAKqD,uBAAuBzvD,OAAAA;AAE5B,YAAMuvD,cAAc;QAClBx5C,OAAO,KAAKA;QACZD,QAAQ,KAAKA;MACf;AACA,YAAMq4C,MAAK;QACT1sD,GAAG,KAAKA;QACRC,GAAG,KAAKA;MACV;AAGA0qD,gBAAUhzD,KAAKqY,IAAI26C,OAAW,IAAA,OAAO,IAAIA;AAEzC,YAAM3jC,UAAUO,UAAUhpB,QAAQyoB,OAAO;AAGzC,YAAMonC,oBAAoB,KAAK73B,MAAM/9B,UAAU,KAAKmvD,WAAWnvD,UAAU,KAAKwuD,KAAKxuD,UAAU,KAAKovD,UAAUpvD,UAAU,KAAKyuD,OAAOzuD;AAElI,UAAI+F,QAAQ2vB,WAAWkgC,mBAAmB;AACxCvoD,YAAIu2B,KAAI;AACRv2B,YAAIwoD,cAAc1D;AAGlB,aAAKxuB,eAAeuwB,KAAI7mD,KAAKioD,aAAavvD,OAAAA;AAE1ColD,8BAAsB99C,KAAKtH,QAAQqlD,aAAa;AAEhD8I,QAAAA,IAAGzsD,KAAK+mB,QAAQ9mB;AAGhB,aAAKw9B,UAAUgvB,KAAI7mD,KAAKtH,OAAAA;AAGxB,aAAK8uD,SAASX,KAAI7mD,KAAKtH,OAAAA;AAGvB,aAAKovD,WAAWjB,KAAI7mD,KAAKtH,OAAAA;AAEzB4lD,6BAAqBt+C,KAAKtH,QAAQqlD,aAAa;AAE/C/9C,YAAIy2B,QAAO;;IAEf;IAMA8R,oBAAoB;AAClB,aAAO,KAAKx1C,WAAW,CAAA;IACzB;IAOAy1C,kBAAkBC,gBAAgB4X,eAAe;AAC/C,YAAM3X,aAAa,KAAK31C;AACxB,YAAM4D,SAAS8xC,eAAev1B,IAAI,CAAC,EAACxX,cAAcN,OAAAA,OAAK,MAAM;AAC3D,cAAMe,OAAO,KAAKjL,MAAMqR,eAAe7G,YAAAA;AAEvC,YAAI,CAACS,MAAM;AACT,gBAAM,IAAIsd,MAAM,oCAAoC/d,YAAc;;AAGpE,eAAO;UACLA;UACAqD,SAAS5C,KAAKJ,KAAKX,MAAM;UACzBA,OAAAA;QACF;MACF,CAAA;AACA,YAAM2lB,UAAU,CAAC4nB,eAAeD,YAAY/xC,MAAAA;AAC5C,YAAM8xD,kBAAkB,KAAKC,iBAAiB/xD,QAAQ0pD,aAAAA;AAEtD,UAAIt/B,WAAW0nC,iBAAiB;AAC9B,aAAK11D,UAAU4D;AACf,aAAKouD,iBAAiB1E;AACtB,aAAKsI,sBAAsB;AAC3B,aAAK/xD,OAAO,IAAI;;IAEpB;IASAioD,YAAYhrC,IAAGg1B,QAAQ7G,cAAc,MAAM;AACzC,UAAI6G,UAAU,KAAK8f,qBAAqB;AACtC,eAAO;;AAET,WAAKA,sBAAsB;AAE3B,YAAMjwD,UAAU,KAAKA;AACrB,YAAMgwC,aAAa,KAAK31C,WAAW,CAAA;AACnC,YAAM4D,SAAS,KAAKyyC,mBAAmBv1B,IAAG60B,YAAYG,QAAQ7G,WAAAA;AAK9D,YAAMymB,kBAAkB,KAAKC,iBAAiB/xD,QAAQkd,EAAAA;AAGtD,YAAMkN,UAAU8nB,UAAU,CAACF,eAAehyC,QAAQ+xC,UAAe+f,KAAAA;AAGjE,UAAI1nC,SAAS;AACX,aAAKhuB,UAAU4D;AAEf,YAAI+B,QAAQ2vB,WAAW3vB,QAAQ0tD,UAAU;AACvC,eAAKrB,iBAAiB;YACpB5qD,GAAG0Z,GAAE1Z;YACLC,GAAGyZ,GAAEzZ;UACP;AAEA,eAAKxD,OAAO,MAAMiyC,MAAAA;;;AAItB,aAAO9nB;IACT;IAWAqoB,mBAAmBv1B,IAAG60B,YAAYG,QAAQ7G,aAAa;AACrD,YAAMtpC,UAAU,KAAKA;AAErB,UAAImb,GAAExiB,SAAS,YAAY;AACzB,eAAO,CAAA;;AAGT,UAAI,CAAC2wC,aAAa;AAGhB,eAAO0G,WAAWlqC,OAAO5L,CAAAA,OACvB,KAAK1B,MAAM6K,KAAKuG,SAAS1P,GAAE8I,YAAY,KACvC,KAAKxK,MAAMqR,eAAe3P,GAAE8I,YAAY,EAAE+B,WAAWkH,UAAU/R,GAAEwI,KAAK,MAAMpK,MAAAA;;AAKhF,YAAM2F,SAAS,KAAKzF,MAAMo2C,0BAA0BzzB,IAAGnb,QAAQ+C,MAAM/C,SAASmwC,MAAAA;AAE9E,UAAInwC,QAAQoB,SAAS;AACnBnD,eAAOmD,QAAO;;AAGhB,aAAOnD;IACT;IASA+xD,iBAAiB/xD,QAAQkd,IAAG;AAC1B,YAAM,EAACuxC,QAAQC,QAAQ3sD,QAAO,IAAI;AAClC,YAAMuiB,WAAWglC,YAAYvnD,QAAQuiB,QAAQ,EAAE9oB,KAAK,MAAMwE,QAAQkd,EAAAA;AAClE,aAAOoH,aAAa,UAAUmqC,WAAWnqC,SAAS9gB,KAAKkrD,WAAWpqC,SAAS7gB;IAC7E;EACF;AAEA,MAAA,iBAAe;IACboC,IAAI;IACJ6iD,UAAUwF;IACV5E;IAEA2I,UAAU13D,OAAO2iD,OAAOn7C,SAAS;AAC/B,UAAIA,SAAS;AACXxH,cAAMgwD,UAAU,IAAI2D,QAAQ;UAAC3zD;UAAOwH;QAAO,CAAA;;IAE/C;IAEAi1B,aAAaz8B,OAAO2iD,OAAOn7C,SAAS;AAClC,UAAIxH,MAAMgwD,SAAS;AACjBhwD,cAAMgwD,QAAQpgD,WAAWpI,OAAAA;;IAE7B;IAEAgK,MAAMxR,OAAO2iD,OAAOn7C,SAAS;AAC3B,UAAIxH,MAAMgwD,SAAS;AACjBhwD,cAAMgwD,QAAQpgD,WAAWpI,OAAAA;;IAE7B;IAEAmwD,UAAU33D,OAAO;AACf,YAAMgwD,UAAUhwD,MAAMgwD;AAEtB,UAAIA,WAAWA,QAAQoH,YAAW,GAAI;AACpC,cAAMx/C,OAAO;UACXo4C;QACF;AAEA,YAAIhwD,MAAMs+B,cAAc,qBAAqB;UAAC,GAAG1mB;UAAMkzB,YAAY;QAAI,CAAA,MAAO,OAAO;AACnF;;AAGFklB,gBAAQruD,KAAK3B,MAAM8O,GAAG;AAEtB9O,cAAMs+B,cAAc,oBAAoB1mB,IAAAA;;IAE5C;IAEAw2C,WAAWpuD,OAAO4X,MAAM;AACtB,UAAI5X,MAAMgwD,SAAS;AAEjB,cAAMnlC,mBAAmBjT,KAAK+/B;AAC9B,YAAI33C,MAAMgwD,QAAQrC,YAAY/1C,KAAKpV,OAAOqoB,kBAAkBjT,KAAKk5B,WAAW,GAAG;AAE7El5B,eAAKiY,UAAU;;;IAGrB;IAEAhpB,UAAU;MACRswB,SAAS;MACT+9B,UAAU;MACVnrC,UAAU;MACV3H,iBAAiB;MACjBwzC,YAAY;MACZvI,WAAW;QACTloC,QAAQ;MACV;MACA2rC,cAAc;MACdC,mBAAmB;MACnB12B,YAAY;MACZg5B,WAAW;MACXnC,aAAa;MACbf,UAAU,CAAA;MAEVoG,WAAW;MACXO,aAAa;MACb1F,eAAe;MACfD,iBAAiB;MACjBf,YAAY;QACVjrC,QAAQ;MACV;MACA0xC,aAAa;MACb5mC,SAAS;MACT2hC,cAAc;MACdD,WAAW;MACXW,cAAc;MACd7I,WAAW,CAAC36C,KAAKnG,SAASA,KAAKwnD,SAAShoD;MACxCuhD,UAAU,CAAC56C,KAAKnG,SAASA,KAAKwnD,SAAShoD;MACvC+tD,oBAAoB;MACpBjF,eAAe;MACf3iC,YAAY;MACZhM,aAAa;MACbG,aAAa;MACb3b,WAAW;QACTvG,UAAU;QACVsE,QAAQ;MACV;MACA6C,YAAY;QACVyU,SAAS;UACPhc,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAS;YAAU;YAAU;UAAS;QAC/D;QACAwsD,SAAS;UACP/uD,QAAQ;UACRtE,UAAU;QACZ;MACF;MACAH,WAAWwyD;IACb;IAEAt8B,eAAe;MACb65B,UAAU;MACVC,YAAY;MACZ/C,WAAW;IACb;IAEA9rC,aAAa;MACXC,aAAa,CAACxD,SAASA,SAAS,YAAYA,SAAS,cAAcA,SAAS;MAC5EyD,YAAY;MACZrhB,WAAW;QACTohB,aAAa;QACbC,YAAY;MACd;MACA3a,WAAW;QACT8wD,WAAW;MACb;MACAlwD,YAAY;QACVkwD,WAAW;MACb;IACF;IAGAppB,wBAAwB;MAAC;IAAc;EACzC;;;;;;;;;;;AC7zCA,MAAMqpB,cAAc,CAAC1kD,QAAQpF,KAAK7D,QAAO4tD,gBAAgB;AACvD,QAAI,OAAO/pD,QAAQ,UAAU;AAC3B7D,MAAAA,SAAQiJ,OAAOzQ,KAAKqL,GAAO,IAAA;AAC3B+pD,kBAAYvQ,QAAQ;QAACr9C,OAAAA;QAAOqK,OAAOxG;MAAG,CAAA;eAC7B6P,MAAM7P,GAAM,GAAA;AACrB7D,MAAAA,SAAQ;;AAEV,WAAOA;EACT;AAEA,WAAS6tD,eAAe5kD,QAAQpF,KAAK7D,QAAO4tD,aAAa;AACvD,UAAMxgC,QAAQnkB,OAAO0K,QAAQ9P,GAAAA;AAC7B,QAAIupB,UAAU,IAAI;AAChB,aAAOugC,YAAY1kD,QAAQpF,KAAK7D,QAAO4tD,WAAAA;;AAEzC,UAAMr6C,OAAOtK,OAAO6kD,YAAYjqD,GAAAA;AAChC,WAAOupB,UAAU7Z,OAAOvT,SAAQotB;EAClC;AAEA,MAAM8B,aAAa,CAAClvB,QAAOlH,QAAQkH,WAAU,OAAO,OAAOq1B,YAAY3+B,KAAK+2B,MAAMztB,MAAAA,GAAQ,GAAGlH,GAAI;AAEjG,WAASi1D,kBAAkB/vD,OAAO;AAChC,UAAMiL,SAAS,KAAKC,UAAS;AAE7B,QAAIlL,SAAS,KAAKA,QAAQiL,OAAO1R,QAAQ;AACvC,aAAO0R,OAAOjL,KAAM;;AAEtB,WAAOA;EACT;AAEe,MAAMgwD,gBAAN,cAA4Bt9B,MAAAA;IAEzC,OAAOtvB,KAAK;IAKZ,OAAOzE,WAAW;MAChBsS,OAAO;QACLslB,UAAUw5B;MACZ;;IAGFz4D,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAK8zD,cAAcr4D;AACnB,WAAKs4D,cAAc;AACnB,WAAKC,eAAe,CAAA;IACtB;IAEAzvC,KAAK0jB,cAAc;AACjB,YAAMgsB,QAAQ,KAAKD;AACnB,UAAIC,MAAM72D,QAAQ;AAChB,cAAM0R,SAAS,KAAKC,UAAS;AAC7B,mBAAW,EAAClJ,OAAAA,QAAOqK,MAAK,KAAK+jD,OAAO;AAClC,cAAInlD,OAAOjJ,MAAM,MAAKqK,OAAO;AAC3BpB,mBAAOuE,OAAOxN,QAAO,CAAA;;QAEzB;AACA,aAAKmuD,eAAe,CAAA;;AAEtB,YAAMzvC,KAAK0jB,YAAAA;IACb;IAEA55B,MAAM3E,KAAK7D,QAAO;AAChB,UAAIyP,cAAc5L,GAAM,GAAA;AACtB,eAAO;;AAET,YAAMoF,SAAS,KAAKC,UAAS;AAC7BlJ,MAAAA,SAAQQ,SAASR,MAAUiJ,KAAAA,OAAOjJ,MAAAA,MAAW6D,MAAM7D,SAC/C6tD,eAAe5kD,QAAQpF,KAAKyC,eAAetG,QAAO6D,GAAAA,GAAM,KAAKsqD,YAAY;AAC7E,aAAOj/B,WAAWlvB,QAAOiJ,OAAO1R,SAAS,CAAA;IAC3C;IAEAw7B,sBAAsB;AACpB,YAAM,EAACzxB,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAI,EAAC1K,KAAKmC,IAAG,IAAI,KAAK+Q,UAAU,IAAI;AAEpC,UAAI,KAAKvM,QAAQw5C,WAAW,SAAS;AACnC,YAAI,CAACx1C,YAAY;AACf3K,gBAAM;;AAER,YAAI,CAAC4K,YAAY;AACfzI,gBAAM,KAAKoQ,UAAS,EAAG3R,SAAS;;;AAIpC,WAAKZ,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEAq6B,aAAa;AACX,YAAMx8B,MAAM,KAAKA;AACjB,YAAMmC,MAAM,KAAKA;AACjB,YAAMsZ,SAAS,KAAK9U,QAAQ8U;AAC5B,YAAMnD,QAAQ,CAAA;AACd,UAAIhG,SAAS,KAAKC,UAAS;AAG3BD,eAAS,QAAS,KAAKnQ,QAAQmQ,OAAO1R,SAAS,IAAK0R,SAASA,OAAO8gC,MAAMpzC,KAAKmC,MAAM,CAAE;AAEvF,WAAKo1D,cAAcx3D,KAAKoC,IAAImQ,OAAO1R,UAAU6a,SAAS,IAAI,IAAI,CAAA;AAC9D,WAAK67C,cAAc,KAAKt3D,OAAOyb,SAAS,MAAM;AAE9C,eAASpU,QAAQrH,KAAKqH,SAASlF,KAAKkF,SAAS;AAC3CiR,cAAMzW,KAAK;UAACwF;QAAK,CAAA;MACnB;AACA,aAAOiR;IACT;IAEA3E,iBAAiBtM,OAAO;AACtB,aAAO+vD,kBAAkBh3D,KAAK,MAAMiH,KAAAA;IACtC;IAKA1B,YAAY;AACV,YAAMA,UAAS;AAEf,UAAI,CAAC,KAAKwU,aAAY,GAAI;AAExB,aAAKuO,iBAAiB,CAAC,KAAKA;;IAEhC;IAGArQ,iBAAiBhR,OAAO;AACtB,UAAI,OAAOA,UAAU,UAAU;AAC7BA,gBAAQ,KAAKwK,MAAMxK,KAAAA;;AAGrB,aAAOA,UAAU,OAAO4L,MAAM,KAAK0K,oBAAoBtW,QAAQ,KAAKiwD,eAAe,KAAKC,WAAW;IACrG;IAIAh/C,gBAAgBlP,QAAO;AACrB,YAAMiP,QAAQ,KAAKA;AACnB,UAAIjP,SAAQ,KAAKA,SAAQiP,MAAM1X,SAAS,GAAG;AACzC,eAAO;;AAET,aAAO,KAAKyX,iBAAiBC,MAAMjP,MAAAA,EAAOhC,KAAK;IACjD;IAEAwW,iBAAiB8iB,OAAO;AACtB,aAAO5gC,KAAK+2B,MAAM,KAAKwgC,cAAc,KAAKv2B,mBAAmBJ,KAAS,IAAA,KAAK42B,WAAW;IACxF;IAEAt7C,eAAe;AACb,aAAO,KAAKzT;IACd;EACF;ACrIA,WAASkvD,gBAAcC,mBAAmBC,WAAW;AACnD,UAAMt/C,QAAQ,CAAA;AAKd,UAAMu/C,cAAc;AACpB,UAAM,EAAC1X,QAAQ9d,MAAMriC,KAAKmC,KAAK21D,WAAWhmD,OAAOimD,UAAUC,WAAWC,cAAAA,IAAiBN;AACvF,UAAMO,OAAO71B,QAAQ;AACrB,UAAM81B,YAAYJ,WAAW;AAC7B,UAAM,EAAC/3D,KAAKo4D,MAAMj2D,KAAKk2D,KAAAA,IAAQT;AAC/B,UAAMjtD,aAAa,CAACmO,cAAc9Y,GAAAA;AAClC,UAAM4K,aAAa,CAACkO,cAAc3W,GAAAA;AAClC,UAAMm2D,eAAe,CAACx/C,cAAchH,KAAAA;AACpC,UAAMymD,cAAcF,OAAOD,SAASJ,YAAY;AAChD,QAAIv3C,UAAU+3C,SAASH,OAAOD,QAAQD,YAAYD,IAAQA,IAAAA;AAC1D,QAAIp1D,QAAQ21D,SAASC,SAASC;AAI9B,QAAIl4C,UAAUo3C,eAAe,CAACltD,cAAc,CAACC,YAAY;AACvD,aAAO;QAAC;UAACvD,OAAO+wD;QAAI;QAAG;UAAC/wD,OAAOgxD;QAAI;MAAE;;AAGvCM,gBAAY54D,KAAK03B,KAAK4gC,OAAO53C,OAAAA,IAAW1gB,KAAKoE,MAAMi0D,OAAO33C,OAAAA;AAC1D,QAAIk4C,YAAYR,WAAW;AAEzB13C,gBAAU+3C,QAAQG,YAAYl4C,UAAU03C,YAAYD,IAAQA,IAAAA;;AAG9D,QAAI,CAACp/C,cAAcg/C,SAAY,GAAA;AAE7Bh1D,eAAS/C,KAAK+pB,IAAI,IAAIguC,SAAAA;AACtBr3C,gBAAU1gB,KAAK03B,KAAKhX,UAAU3d,MAAUA,IAAAA;;AAG1C,QAAIq9C,WAAW,SAAS;AACtBsY,gBAAU14D,KAAKoE,MAAMi0D,OAAO33C,OAAWA,IAAAA;AACvCi4C,gBAAU34D,KAAK03B,KAAK4gC,OAAO53C,OAAWA,IAAAA;WACjC;AACLg4C,gBAAUL;AACVM,gBAAUL;;AAGZ,QAAI1tD,cAAcC,cAAcy3B,QAAQu2B,aAAaz2D,MAAMnC,OAAOqiC,MAAM5hB,UAAU,GAAO,GAAA;AAKvFk4C,kBAAY54D,KAAK+2B,MAAM/2B,KAAKC,KAAKmC,MAAMnC,OAAOygB,SAASs3C,QAAAA,CAAAA;AACvDt3C,iBAAWte,MAAMnC,OAAO24D;AACxBF,gBAAUz4D;AACV04D,gBAAUv2D;IACZ,WAAWm2D,cAAc;AAIvBG,gBAAU9tD,aAAa3K,MAAMy4D;AAC7BC,gBAAU9tD,aAAazI,MAAMu2D;AAC7BC,kBAAY7mD,QAAQ;AACpB2O,iBAAWi4C,UAAUD,WAAWE;WAC3B;AAELA,mBAAaD,UAAUD,WAAWh4C;AAGlC,UAAIo4C,aAAaF,WAAW54D,KAAK+2B,MAAM6hC,SAAAA,GAAYl4C,UAAU,GAAO,GAAA;AAClEk4C,oBAAY54D,KAAK+2B,MAAM6hC,SAAAA;aAClB;AACLA,oBAAY54D,KAAK03B,KAAKkhC,SAAAA;;;AAM1B,UAAMG,gBAAgB/4D,KAAKoC,IACzB42D,eAAet4C,OAAAA,GACfs4C,eAAeN,OAAAA,CAAAA;AAEjB31D,aAAS/C,KAAK+pB,IAAI,IAAIhR,cAAcg/C,SAAAA,IAAagB,gBAAgBhB,SAAS;AAC1EW,cAAU14D,KAAK+2B,MAAM2hC,UAAU31D,MAAUA,IAAAA;AACzC41D,cAAU34D,KAAK+2B,MAAM4hC,UAAU51D,MAAUA,IAAAA;AAEzC,QAAIumB,KAAI;AACR,QAAI1e,YAAY;AACd,UAAIstD,iBAAiBQ,YAAYz4D,KAAK;AACpCsY,cAAMzW,KAAK;UAACwF,OAAOrH;QAAG,CAAA;AAEtB,YAAIy4D,UAAUz4D,KAAK;AACjBqpB,UAAAA;;AAGF,YAAIwvC,aAAa94D,KAAK+2B,OAAO2hC,UAAUpvC,KAAI5I,WAAW3d,MAAAA,IAAUA,QAAQ9C,KAAKg5D,kBAAkBh5D,KAAKu4D,YAAYZ,iBAAqB,CAAA,GAAA;AACnItuC,UAAAA;;iBAEOovC,UAAUz4D,KAAK;AACxBqpB,QAAAA;;;AAIJ,WAAOA,KAAIsvC,WAAW,EAAEtvC,IAAG;AACzB,YAAM4vC,YAAYl5D,KAAK+2B,OAAO2hC,UAAUpvC,KAAI5I,WAAW3d,MAAUA,IAAAA;AACjE,UAAI8H,cAAcquD,YAAY92D,KAAK;AACjC;;AAEFmW,YAAMzW,KAAK;QAACwF,OAAO4xD;MAAS,CAAA;IAC9B;AAEA,QAAIruD,cAAcqtD,iBAAiBS,YAAYv2D,KAAK;AAElD,UAAImW,MAAM1X,UAAUi4D,aAAavgD,MAAMA,MAAM1X,SAAS,CAAA,EAAGyG,OAAOlF,KAAK62D,kBAAkB72D,KAAKo2D,YAAYZ,iBAAqB,CAAA,GAAA;AAC3Hr/C,cAAMA,MAAM1X,SAAS,CAAE,EAACyG,QAAQlF;aAC3B;AACLmW,cAAMzW,KAAK;UAACwF,OAAOlF;QAAG,CAAA;;IAE1B,WAAW,CAACyI,cAAc8tD,YAAYv2D,KAAK;AACzCmW,YAAMzW,KAAK;QAACwF,OAAOqxD;MAAO,CAAA;;AAG5B,WAAOpgD;EACT;AAEA,WAAS0gD,kBAAkB3xD,OAAOkxD,YAAY,EAACl+C,YAAY0jB,YAAW,GAAG;AACvE,UAAMm7B,MAAM72C,UAAU0b,WAAAA;AACtB,UAAMllB,SAASwB,aAAata,KAAK0f,IAAIy5C,GAAAA,IAAOn5D,KAAKwf,IAAI25C,GAAAA,MAAS;AAC9D,UAAMt4D,SAAS,OAAO23D,cAAc,KAAKlxD,OAAOzG;AAChD,WAAOb,KAAKC,IAAIu4D,aAAa1/C,OAAOjY,MAAAA;EACtC;AAEe,MAAMu4D,kBAAN,cAA8Bp/B,MAAAA;IAE3Cp7B,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKvD,QAAQhB;AAEb,WAAK+I,MAAM/I;AAEX,WAAKq4D,cAAcr4D;AAEnB,WAAKm6D,YAAYn6D;AACjB,WAAKs4D,cAAc;IACrB;IAEA1lD,MAAM3E,KAAK7D,QAAO;AAChB,UAAIyP,cAAc5L,GAAM,GAAA;AACtB,eAAO;;AAET,WAAK,OAAOA,QAAQ,YAAYA,eAAerC,WAAW,CAAChB,SAAS,CAACqD,GAAM,GAAA;AACzE,eAAO;;AAGT,aAAO,CAACA;IACV;IAEAmsD,yBAAyB;AACvB,YAAM,EAACz9C,YAAW,IAAI,KAAKjV;AAC3B,YAAM,EAACgE,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAI,EAAC1K,KAAKmC,IAAG,IAAI;AAEjB,YAAMm3D,SAASr+C,CAAAA,OAAMjb,MAAM2K,aAAa3K,MAAMib;AAC9C,YAAMs+C,SAASt+C,CAAAA,OAAM9Y,MAAMyI,aAAazI,MAAM8Y;AAE9C,UAAIW,aAAa;AACf,cAAM49C,UAAU1vD,KAAK9J,GAAAA;AACrB,cAAMy5D,UAAU3vD,KAAK3H,GAAAA;AAErB,YAAIq3D,UAAU,KAAKC,UAAU,GAAG;AAC9BF,iBAAO,CAAA;QACT,WAAWC,UAAU,KAAKC,UAAU,GAAG;AACrCH,iBAAO,CAAA;;;AAIX,UAAIt5D,QAAQmC,KAAK;AACf,YAAIsZ,SAAStZ,QAAQ,IAAI,IAAIpC,KAAKqY,IAAIjW,MAAM,IAAK;AAEjDo3D,eAAOp3D,MAAMsZ,MAAAA;AAEb,YAAI,CAACG,aAAa;AAChB09C,iBAAOt5D,MAAMyb,MAAAA;;;AAGjB,WAAKzb,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEAu3D,eAAe;AACb,YAAM3jC,WAAW,KAAKpvB,QAAQ2R;AAE9B,UAAI,EAAC6d,eAAewjC,SAAAA,IAAY5jC;AAChC,UAAIgiC;AAEJ,UAAI4B,UAAU;AACZ5B,mBAAWh4D,KAAK03B,KAAK,KAAKt1B,MAAMw3D,QAAY55D,IAAAA,KAAKoE,MAAM,KAAKnE,MAAM25D,QAAY,IAAA;AAC9E,YAAI5B,WAAW,KAAM;AACnB3oD,kBAAQC,KAAK,UAAU,KAAK5E,EAAE,oBAAoBkvD,QAAS,kCAAiC5B,QAAAA,2BAAmC;AAC/HA,qBAAW;;aAER;AACLA,mBAAW,KAAK6B,iBAAgB;AAChCzjC,wBAAgBA,iBAAiB;;AAGnC,UAAIA,eAAe;AACjB4hC,mBAAWh4D,KAAKC,IAAIm2B,eAAe4hC,QAAAA;;AAGrC,aAAOA;IACT;IAKA6B,mBAAmB;AACjB,aAAO/uD,OAAOE;IAChB;IAEAyxB,aAAa;AACX,YAAM10B,OAAO,KAAKnB;AAClB,YAAMovB,WAAWjuB,KAAKwQ;AAMtB,UAAIy/C,WAAW,KAAK2B,aAAY;AAChC3B,iBAAWh4D,KAAKoC,IAAI,GAAG41D,QAAAA;AAEvB,YAAM8B,0BAA0B;QAC9B9B;QACA5X,QAAQr4C,KAAKq4C;QACbngD,KAAK8H,KAAK9H;QACVmC,KAAK2F,KAAK3F;QACV21D,WAAW/hC,SAAS+hC;QACpBz1B,MAAMtM,SAAS4jC;QACf7nD,OAAOikB,SAASjkB;QAChBkmD,WAAW,KAAK7xB,WAAU;QAC1B9rB,YAAY,KAAKF,aAAY;QAC7B4jB,aAAahI,SAASgI,eAAe;QACrCk6B,eAAeliC,SAASkiC,kBAAkB;MAC5C;AACA,YAAML,YAAY,KAAKt9B,UAAU;AACjC,YAAMhiB,QAAQo/C,gBAAcmC,yBAAyBjC,SAAAA;AAIrD,UAAI9vD,KAAKq4C,WAAW,SAAS;AAC3B2Z,2BAAmBxhD,OAAO,MAAM,OAAA;;AAGlC,UAAIxQ,KAAKC,SAAS;AAChBuQ,cAAMvQ,QAAO;AAEb,aAAK9H,QAAQ,KAAKkC;AAClB,aAAK6F,MAAM,KAAKhI;aACX;AACL,aAAKC,QAAQ,KAAKD;AAClB,aAAKgI,MAAM,KAAK7F;;AAGlB,aAAOmW;IACT;IAKA3S,YAAY;AACV,YAAM2S,QAAQ,KAAKA;AACnB,UAAIrY,SAAQ,KAAKD;AACjB,UAAIgI,MAAM,KAAK7F;AAEf,YAAMwD,UAAS;AAEf,UAAI,KAAKgB,QAAQ8U,UAAUnD,MAAM1X,QAAQ;AACvC,cAAM6a,UAAUzT,MAAM/H,UAASF,KAAKoC,IAAImW,MAAM1X,SAAS,GAAG,CAAK,IAAA;AAC/DX,QAAAA,UAASwb;AACTzT,eAAOyT;;AAET,WAAK67C,cAAcr3D;AACnB,WAAKm5D,YAAYpxD;AACjB,WAAKuvD,cAAcvvD,MAAM/H;IAC3B;IAEA0T,iBAAiBtM,OAAO;AACtB,aAAO2c,aAAa3c,OAAO,KAAKlI,MAAMwH,QAAQsd,QAAQ,KAAKtd,QAAQ2R,MAAM2P,MAAM;IACjF;EACF;ACnTe,MAAM8xC,cAAN,cAA0BZ,gBAAAA;IAEvC,OAAO1uD,KAAK;IAKZ,OAAOzE,WAAW;MAChBsS,OAAO;QACLslB,UAAUo8B,MAAMC,WAAWC;MAC7B;;IAIF99B,sBAAsB;AACpB,YAAM,EAACp8B,KAAKmC,IAAG,IAAI,KAAK+Q,UAAU,IAAI;AAEtC,WAAKlT,MAAM6J,eAAS7J,GAAAA,IAAOA,MAAM;AACjC,WAAKmC,MAAM0H,eAAS1H,GAAAA,IAAOA,MAAM;AAGjC,WAAKk3D,uBAAsB;IAC7B;IAMAO,mBAAmB;AACjB,YAAMv/C,aAAa,KAAKF,aAAY;AACpC,YAAMvZ,SAASyZ,aAAa,KAAKqC,QAAQ,KAAKD;AAC9C,YAAMshB,cAAc1b,UAAU,KAAK1b,QAAQ2R,MAAMylB,WAAW;AAC5D,YAAMllB,SAASwB,aAAata,KAAK0f,IAAIse,WAAAA,IAAeh+B,KAAKwf,IAAIwe,WAAAA,MAAiB;AAC9E,YAAMoC,WAAW,KAAKG,wBAAwB,CAAA;AAC9C,aAAOvgC,KAAK03B,KAAK72B,SAASb,KAAKC,IAAI,IAAImgC,SAAS9G,aAAaxgB,KAAAA,CAAAA;IAC/D;IAGAR,iBAAiBhR,OAAO;AACtB,aAAOA,UAAU,OAAO4L,MAAM,KAAK0K,oBAAoBtW,QAAQ,KAAKiwD,eAAe,KAAKC,WAAW;IACrG;IAEA15C,iBAAiB8iB,OAAO;AACtB,aAAO,KAAK22B,cAAc,KAAKv2B,mBAAmBJ,KAAAA,IAAS,KAAK42B;IAClE;EACF;AC3CA,MAAM4C,aAAal/C,CAAAA,OAAKlb,KAAKoE,MAAMi2D,MAAMn/C,EAAAA,CAAAA;AACzC,MAAMo/C,iBAAiB,CAACp/C,IAAGq/C,OAAMv6D,KAAK+pB,IAAI,IAAIqwC,WAAWl/C,EAAKq/C,IAAAA,EAAAA;AAE9D,WAASC,QAAQC,SAAS;AACxB,UAAMz1D,SAASy1D,UAAWz6D,KAAK+pB,IAAI,IAAIqwC,WAAWK,OAAAA,CAAAA;AAClD,WAAOz1D,WAAW;EACpB;AAEA,WAAS01D,MAAMz6D,KAAKmC,KAAKu4D,UAAU;AACjC,UAAMC,YAAY56D,KAAK+pB,IAAI,IAAI4wC,QAAAA;AAC/B,UAAMz6D,SAAQF,KAAKoE,MAAMnE,MAAM26D,SAAAA;AAC/B,UAAM3yD,MAAMjI,KAAK03B,KAAKt1B,MAAMw4D,SAAAA;AAC5B,WAAO3yD,MAAM/H;EACf;AAEA,WAAS26D,SAAS56D,KAAKmC,KAAK;AAC1B,UAAM4Q,QAAQ5Q,MAAMnC;AACpB,QAAI06D,WAAWP,WAAWpnD,KAAAA;AAC1B,WAAO0nD,MAAMz6D,KAAKmC,KAAKu4D,QAAAA,IAAY,IAAI;AACrCA;IACF;AACA,WAAOD,MAAMz6D,KAAKmC,KAAKu4D,QAAAA,IAAY,IAAI;AACrCA;IACF;AACA,WAAO36D,KAAKC,IAAI06D,UAAUP,WAAWn6D,GAAAA,CAAAA;EACvC;AASA,WAAS03D,cAAcC,mBAAmB,EAAC33D,KAAKmC,IAAG,GAAG;AACpDnC,UAAMq7B,gBAAgBs8B,kBAAkB33D,KAAKA,GAAAA;AAC7C,UAAMsY,QAAQ,CAAA;AACd,UAAMuiD,SAASV,WAAWn6D,GAAAA;AAC1B,QAAI86D,MAAMF,SAAS56D,KAAKmC,GAAAA;AACxB,QAAI21D,YAAYgD,MAAM,IAAI/6D,KAAK+pB,IAAI,IAAI/pB,KAAKqY,IAAI0iD,GAAAA,CAAAA,IAAQ;AACxD,UAAMnB,WAAW55D,KAAK+pB,IAAI,IAAIgxC,GAAAA;AAC9B,UAAMxgD,OAAOugD,SAASC,MAAM/6D,KAAK+pB,IAAI,IAAI+wC,MAAAA,IAAU;AACnD,UAAM56D,SAAQF,KAAK+2B,OAAO92B,MAAMsa,QAAQw9C,SAAaA,IAAAA;AACrD,UAAMr8C,SAAS1b,KAAKoE,OAAOnE,MAAMsa,QAAQq/C,WAAW,EAAA,IAAMA,WAAW;AACrE,QAAIoB,cAAch7D,KAAKoE,OAAOlE,SAAQwb,UAAU1b,KAAK+pB,IAAI,IAAIgxC,GAAAA,CAAAA;AAC7D,QAAIzzD,QAAQg0B,gBAAgBs8B,kBAAkB33D,KAAKD,KAAK+2B,OAAOxc,OAAOmB,SAASs/C,cAAch7D,KAAK+pB,IAAI,IAAIgxC,GAAAA,KAAQhD,SAAaA,IAAAA,SAAAA;AAC/H,WAAOzwD,QAAQlF,KAAK;AAClBmW,YAAMzW,KAAK;QAACwF;QAAOgvB,OAAOkkC,QAAQlzD,KAAAA;QAAQ0zD;MAAW,CAAA;AACrD,UAAIA,eAAe,IAAI;AACrBA,sBAAcA,cAAc,KAAK,KAAK;aACjC;AACLA;;AAEF,UAAIA,eAAe,IAAI;AACrBD;AACAC,sBAAc;AACdjD,oBAAYgD,OAAO,IAAI,IAAIhD;;AAE7BzwD,cAAQtH,KAAK+2B,OAAOxc,OAAOmB,SAASs/C,cAAch7D,KAAK+pB,IAAI,IAAIgxC,GAAAA,KAAQhD,SAAaA,IAAAA;IACtF;AACA,UAAMkD,WAAW3/B,gBAAgBs8B,kBAAkBx1D,KAAKkF,KAAAA;AACxDiR,UAAMzW,KAAK;MAACwF,OAAO2zD;MAAU3kC,OAAOkkC,QAAQS,QAAAA;MAAWD;IAAW,CAAA;AAElE,WAAOziD;EACT;AAEe,MAAM2iD,mBAAN,cAA+BlhC,MAAAA;IAE5C,OAAOtvB,KAAK;IAKZ,OAAOzE,WAAW;MAChBsS,OAAO;QACLslB,UAAUo8B,MAAMC,WAAWiB;QAC3B7kC,OAAO;UACLC,SAAS;QACX;MACF;;IAIF33B,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKvD,QAAQhB;AAEb,WAAK+I,MAAM/I;AAEX,WAAKq4D,cAAcr4D;AACnB,WAAKs4D,cAAc;IACrB;IAEA1lD,MAAM3E,KAAK7D,QAAO;AAChB,YAAMhC,QAAQ8xD,gBAAgBrxC,UAAUjW,MAAM+8C,MAAM,MAAM;QAAC1hD;QAAK7D;MAAM,CAAA;AACtE,UAAIhC,UAAU,GAAG;AACf,aAAK8zD,QAAQ;AACb,eAAOl8D;;AAET,aAAO4K,eAASxC,KAAAA,KAAUA,QAAQ,IAAIA,QAAQ;IAChD;IAEA+0B,sBAAsB;AACpB,YAAM,EAACp8B,KAAKmC,IAAG,IAAI,KAAK+Q,UAAU,IAAI;AAEtC,WAAKlT,MAAM6J,eAAS7J,GAAAA,IAAOD,KAAKoC,IAAI,GAAGnC,GAAAA,IAAO;AAC9C,WAAKmC,MAAM0H,eAAS1H,GAAAA,IAAOpC,KAAKoC,IAAI,GAAGA,GAAAA,IAAO;AAE9C,UAAI,KAAKwE,QAAQiV,aAAa;AAC5B,aAAKu/C,QAAQ;;AAKf,UAAI,KAAKA,SAAS,KAAKn7D,QAAQ,KAAK86B,iBAAiB,CAACjxB,eAAS,KAAK+wB,QAAQ,GAAG;AAC7E,aAAK56B,MAAMA,QAAQq6D,eAAe,KAAKr6D,KAAK,CAAKq6D,IAAAA,eAAe,KAAKr6D,KAAK,EAAC,IAAKq6D,eAAe,KAAKr6D,KAAK,CAAE;;AAG7G,WAAKq5D,uBAAsB;IAC7B;IAEAA,yBAAyB;AACvB,YAAM,EAAC1uD,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAI1K,MAAM,KAAKA;AACf,UAAImC,MAAM,KAAKA;AAEf,YAAMm3D,SAASr+C,CAAAA,OAAMjb,MAAM2K,aAAa3K,MAAMib;AAC9C,YAAMs+C,SAASt+C,CAAAA,OAAM9Y,MAAMyI,aAAazI,MAAM8Y;AAE9C,UAAIjb,QAAQmC,KAAK;AACf,YAAInC,OAAO,GAAG;AACZs5D,iBAAO,CAAA;AACPC,iBAAO,EAAA;eACF;AACLD,iBAAOe,eAAer6D,KAAK,EAAC,CAAA;AAC5Bu5D,iBAAOc,eAAel4D,KAAK,CAAC,CAAA;;;AAGhC,UAAInC,OAAO,GAAG;AACZs5D,eAAOe,eAAel4D,KAAK,EAAC,CAAA;;AAE9B,UAAIA,OAAO,GAAG;AAEZo3D,eAAOc,eAAer6D,KAAK,CAAC,CAAA;;AAG9B,WAAKA,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEAq6B,aAAa;AACX,YAAM10B,OAAO,KAAKnB;AAElB,YAAMgxD,oBAAoB;QACxB33D,KAAK,KAAK46B;QACVz4B,KAAK,KAAKw4B;MACZ;AACA,YAAMriB,QAAQo/C,cAAcC,mBAAmB,IAAI;AAInD,UAAI7vD,KAAKq4C,WAAW,SAAS;AAC3B2Z,2BAAmBxhD,OAAO,MAAM,OAAA;;AAGlC,UAAIxQ,KAAKC,SAAS;AAChBuQ,cAAMvQ,QAAO;AAEb,aAAK9H,QAAQ,KAAKkC;AAClB,aAAK6F,MAAM,KAAKhI;aACX;AACL,aAAKC,QAAQ,KAAKD;AAClB,aAAKgI,MAAM,KAAK7F;;AAGlB,aAAOmW;IACT;IAMA3E,iBAAiBtM,OAAO;AACtB,aAAOA,UAAUpI,SACb,MACA+kB,aAAa3c,OAAO,KAAKlI,MAAMwH,QAAQsd,QAAQ,KAAKtd,QAAQ2R,MAAM2P,MAAM;IAC9E;IAKAtiB,YAAY;AACV,YAAM1F,SAAQ,KAAKD;AAEnB,YAAM2F,UAAS;AAEf,WAAK2xD,cAAc8C,MAAMn6D,MAAAA;AACzB,WAAKs3D,cAAc6C,MAAM,KAAKj4D,GAAG,IAAIi4D,MAAMn6D,MAAAA;IAC7C;IAEAoY,iBAAiBhR,OAAO;AACtB,UAAIA,UAAUpI,UAAaoI,UAAU,GAAG;AACtCA,gBAAQ,KAAKrH;;AAEf,UAAIqH,UAAU,QAAQ0V,MAAM1V,KAAQ,GAAA;AAClC,eAAO4L;;AAET,aAAO,KAAK0K,mBAAmBtW,UAAU,KAAKrH,MAC1C,KACCo6D,MAAM/yD,KAAAA,IAAS,KAAKiwD,eAAe,KAAKC,WAAW;IAC1D;IAEA15C,iBAAiB8iB,OAAO;AACtB,YAAMC,UAAU,KAAKG,mBAAmBJ,KAAAA;AACxC,aAAO5gC,KAAK+pB,IAAI,IAAI,KAAKwtC,cAAc12B,UAAU,KAAK22B,WAAW;IACnE;EACF;ACzNA,WAAS6D,sBAAsBtzD,MAAM;AACnC,UAAMiuB,WAAWjuB,KAAKwQ;AAEtB,QAAIyd,SAAShQ,WAAWje,KAAKie,SAAS;AACpC,YAAMqJ,UAAUO,UAAUoG,SAASoO,eAAe;AAClD,aAAOx0B,eAAeomB,SAASmD,QAAQnD,SAASmD,KAAK5xB,MAAMtB,SAASkzB,KAAK5xB,IAAI,IAAI8nB,QAAQ3S;;AAE3F,WAAO;EACT;AAEA,WAAS4+C,iBAAiBptD,KAAKirB,MAAMxlB,OAAO;AAC1CA,YAAQpN,QAAQoN,KAAAA,IAASA,QAAQ;MAACA;IAAM;AACxC,WAAO;MACLua,GAAGqtC,aAAartD,KAAKirB,KAAKqH,QAAQ7sB,KAAAA;MAClCya,GAAGza,MAAM9S,SAASs4B,KAAKG;IACzB;EACF;AAEA,WAASkiC,gBAAgB17C,OAAO4L,KAAKnkB,MAAMtH,KAAKmC,KAAK;AACnD,QAAI0d,UAAU7f,OAAO6f,UAAU1d,KAAK;AAClC,aAAO;QACLlC,OAAOwrB,MAAOnkB,OAAO;QACrBU,KAAKyjB,MAAOnkB,OAAO;MACrB;IACF,WAAWuY,QAAQ7f,OAAO6f,QAAQ1d,KAAK;AACrC,aAAO;QACLlC,OAAOwrB,MAAMnkB;QACbU,KAAKyjB;MACP;;AAGF,WAAO;MACLxrB,OAAOwrB;MACPzjB,KAAKyjB,MAAMnkB;IACb;EACF;AAKA,WAASk0D,mBAAmB5zD,OAAO;AA8BjC,UAAMkT,OAAO;MACXhS,GAAGlB,MAAMa,OAAOb,MAAM+lD,SAASllD;MAC/BG,GAAGhB,MAAMW,QAAQX,MAAM+lD,SAASplD;MAChCI,GAAGf,MAAMU,MAAMV,MAAM+lD,SAASrlD;MAC9BO,GAAGjB,MAAMY,SAASZ,MAAM+lD,SAASnlD;IACnC;AACA,UAAMizD,SAAS31D,OAAOyB,OAAO,CAAA,GAAIuT,IAAAA;AACjC,UAAMsjB,aAAa,CAAA;AACnB,UAAMhP,UAAU,CAAA;AAChB,UAAMssC,aAAa9zD,MAAM+zD,aAAa/6D;AACtC,UAAMg7D,iBAAiBh0D,MAAMjB,QAAQsf;AACrC,UAAM41C,kBAAkBD,eAAeE,oBAAoB17C,KAAKs7C,aAAa;AAE7E,aAAS76D,KAAI,GAAGA,KAAI66D,YAAY76D,MAAK;AACnC,YAAMiH,OAAO8zD,eAAe1gC,WAAWtzB,MAAMm0D,qBAAqBl7D,EAAAA,CAAAA;AAClEuuB,cAAQvuB,EAAAA,IAAKiH,KAAKsnB;AAClB,YAAMjI,gBAAgBvf,MAAMo0D,iBAAiBn7D,IAAG+G,MAAMq0D,cAAc7sC,QAAQvuB,EAAAA,GAAIg7D,eAAAA;AAChF,YAAMK,SAAS/iC,OAAOrxB,KAAKoxB,IAAI;AAC/B,YAAM00B,WAAWyN,iBAAiBzzD,MAAMqG,KAAKiuD,QAAQt0D,MAAM+zD,aAAa96D,EAAE,CAAA;AAC1Eu9B,iBAAWv9B,EAAAA,IAAK+sD;AAEhB,YAAM1uB,eAAegmB,gBAAgBt9C,MAAM+e,cAAc9lB,EAAKg7D,IAAAA,eAAAA;AAC9D,YAAMh8C,QAAQ9f,KAAK+2B,MAAM8H,UAAUM,YAAAA,CAAAA;AACnC,YAAMi9B,UAAUZ,gBAAgB17C,OAAOsH,cAAc/e,GAAGwlD,SAAS3/B,GAAG,GAAG,GAAA;AACvE,YAAMmuC,UAAUb,gBAAgB17C,OAAOsH,cAAc9e,GAAGulD,SAASz/B,GAAG,IAAI,GAAA;AACxEkuC,mBAAaZ,QAAQ3gD,MAAMokB,cAAci9B,SAASC,OAAAA;IACpD;AAEAx0D,UAAM00D,eACJxhD,KAAKhS,IAAI2yD,OAAO3yD,GAChB2yD,OAAO7yD,IAAIkS,KAAKlS,GAChBkS,KAAKnS,IAAI8yD,OAAO9yD,GAChB8yD,OAAO5yD,IAAIiS,KAAKjS,CAAC;AAInBjB,UAAM20D,mBAAmBC,qBAAqB50D,OAAOw2B,YAAYhP,OAAAA;EACnE;AAEA,WAASitC,aAAaZ,QAAQ3gD,MAAM+E,OAAOs8C,SAASC,SAAS;AAC3D,UAAM38C,MAAM1f,KAAKqY,IAAIrY,KAAK0f,IAAII,KAAAA,CAAAA;AAC9B,UAAMN,MAAMxf,KAAKqY,IAAIrY,KAAKwf,IAAIM,KAAAA,CAAAA;AAC9B,QAAIzX,KAAI;AACR,QAAIC,KAAI;AACR,QAAI8zD,QAAQl8D,QAAQ6a,KAAKhS,GAAG;AAC1BV,MAAAA,MAAK0S,KAAKhS,IAAIqzD,QAAQl8D,SAASwf;AAC/Bg8C,aAAO3yD,IAAI/I,KAAKC,IAAIy7D,OAAO3yD,GAAGgS,KAAKhS,IAAIV,EAAAA;IACzC,WAAW+zD,QAAQn0D,MAAM8S,KAAKlS,GAAG;AAC/BR,MAAAA,MAAK+zD,QAAQn0D,MAAM8S,KAAKlS,KAAK6W;AAC7Bg8C,aAAO7yD,IAAI7I,KAAKoC,IAAIs5D,OAAO7yD,GAAGkS,KAAKlS,IAAIR,EAAAA;;AAEzC,QAAIg0D,QAAQn8D,QAAQ6a,KAAKnS,GAAG;AAC1BN,MAAAA,MAAKyS,KAAKnS,IAAIyzD,QAAQn8D,SAASsf;AAC/Bk8C,aAAO9yD,IAAI5I,KAAKC,IAAIy7D,OAAO9yD,GAAGmS,KAAKnS,IAAIN,EAAAA;IACzC,WAAW+zD,QAAQp0D,MAAM8S,KAAKjS,GAAG;AAC/BR,MAAAA,MAAK+zD,QAAQp0D,MAAM8S,KAAKjS,KAAK0W;AAC7Bk8C,aAAO5yD,IAAI9I,KAAKoC,IAAIs5D,OAAO5yD,GAAGiS,KAAKjS,IAAIR,EAAAA;;EAE3C;AAEA,WAASo0D,qBAAqB70D,OAAOyB,QAAOqzD,UAAU;AACpD,UAAMC,gBAAgB/0D,MAAMq0D;AAC5B,UAAM,EAACW,OAAOf,iBAAiBzsC,SAAS9nB,KAAI,IAAIo1D;AAChD,UAAMG,qBAAqBj1D,MAAMo0D,iBAAiB3yD,QAAOszD,gBAAgBC,QAAQxtC,SAASysC,eAAAA;AAC1F,UAAMh8C,QAAQ9f,KAAK+2B,MAAM8H,UAAUsmB,gBAAgB2X,mBAAmBh9C,QAAQK,OAAAA,CAAAA,CAAAA;AAC9E,UAAM7X,KAAIy0D,UAAUD,mBAAmBx0D,GAAGf,KAAK6mB,GAAGtO,KAAAA;AAClD,UAAMsjB,YAAY45B,qBAAqBl9C,KAAAA;AACvC,UAAMpX,OAAOu0D,iBAAiBH,mBAAmBz0D,GAAGd,KAAK2mB,GAAGkV,SAAAA;AAC5D,WAAO;MAELsQ,SAAS;MAGTrrC,GAAGy0D,mBAAmBz0D;MACtBC,GAAAA;MAGA86B;MAGA16B;MACAH,KAAKD;MACLE,OAAOE,OAAOnB,KAAK2mB;MACnBzlB,QAAQH,KAAIf,KAAK6mB;IACnB;EACF;AAEA,WAAS8uC,gBAAgBl8D,MAAMgT,MAAM;AACnC,QAAI,CAACA,MAAM;AACT,aAAO;;AAET,UAAM,EAACtL,MAAMH,KAAKC,OAAOC,OAAM,IAAIzH;AACnC,UAAMm8D,eAAe9yC,eAAe;MAAChiB,GAAGK;MAAMJ,GAAGC;IAAG,GAAGyL,IAAAA,KAASqW,eAAe;MAAChiB,GAAGK;MAAMJ,GAAGG;IAAM,GAAGuL,IAAAA,KACnGqW,eAAe;MAAChiB,GAAGG;MAAOF,GAAGC;IAAG,GAAGyL,IAAAA,KAASqW,eAAe;MAAChiB,GAAGG;MAAOF,GAAGG;OAASuL,IAAAA;AACpF,WAAO,CAACmpD;EACV;AAEA,WAASV,qBAAqB50D,OAAOw2B,YAAYhP,SAAS;AACxD,UAAMzuB,QAAQ,CAAA;AACd,UAAM+6D,aAAa9zD,MAAM+zD,aAAa/6D;AACtC,UAAMkH,OAAOF,MAAMjB;AACnB,UAAM,EAACm1D,mBAAmB/1C,QAAAA,IAAWje,KAAKme;AAC1C,UAAMy2C,WAAW;MACfE,OAAOxB,sBAAsBtzD,IAAQ,IAAA;MACrC+zD,iBAAiBC,oBAAoB17C,KAAKs7C,aAAa;IACzD;AACA,QAAI3nD;AAEJ,aAASlT,KAAI,GAAGA,KAAI66D,YAAY76D,MAAK;AACnC67D,eAASttC,UAAUA,QAAQvuB,EAAE;AAC7B67D,eAASp1D,OAAO82B,WAAWv9B,EAAE;AAE7B,YAAME,OAAO07D,qBAAqB70D,OAAO/G,IAAG67D,QAAAA;AAC5C/7D,YAAMkB,KAAKd,IAAAA;AACX,UAAIglB,YAAY,QAAQ;AACtBhlB,aAAK0yC,UAAUwpB,gBAAgBl8D,MAAMgT,IAAAA;AACrC,YAAIhT,KAAK0yC,SAAS;AAChB1/B,iBAAOhT;;;IAGb;AACA,WAAOJ;EACT;AAEA,WAASo8D,qBAAqBl9C,OAAO;AACnC,QAAIA,UAAU,KAAKA,UAAU,KAAK;AAChC,aAAO;eACEA,QAAQ,KAAK;AACtB,aAAO;;AAGT,WAAO;EACT;AAEA,WAASm9C,iBAAiB50D,IAAG6lB,IAAG6J,OAAO;AACrC,QAAIA,UAAU,SAAS;AACrB1vB,MAAAA,MAAK6lB;eACI6J,UAAU,UAAU;AAC7B1vB,MAAAA,MAAM6lB,KAAI;;AAEZ,WAAO7lB;EACT;AAEA,WAAS00D,UAAUz0D,IAAG8lB,IAAGtO,OAAO;AAC9B,QAAIA,UAAU,MAAMA,UAAU,KAAK;AACjCxX,MAAAA,MAAM8lB,KAAI;IACZ,WAAWtO,QAAQ,OAAOA,QAAQ,IAAI;AACpCxX,MAAAA,MAAK8lB;;AAEP,WAAO9lB;EACT;AAEA,WAAS80D,kBAAkBlvD,KAAKnG,MAAM/G,MAAM;AAC1C,UAAM,EAAC0H,MAAMH,KAAKC,OAAOC,OAAM,IAAIzH;AACnC,UAAM,EAACqjC,cAAa,IAAIt8B;AAExB,QAAI,CAACgR,cAAcsrB,aAAgB,GAAA;AACjC,YAAM6T,eAAe0H,cAAc73C,KAAKmwC,YAAY;AACpD,YAAM7oB,UAAUO,UAAU7nB,KAAKq8B,eAAe;AAC9Cl2B,UAAIqT,YAAY8iB;AAEhB,YAAMg5B,eAAe30D,OAAO2mB,QAAQ3mB;AACpC,YAAM40D,cAAc/0D,MAAM8mB,QAAQ9mB;AAClC,YAAMg1D,gBAAgB/0D,QAAQE,OAAO2mB,QAAQ1S;AAC7C,YAAM6gD,iBAAiB/0D,SAASF,MAAM8mB,QAAQ3S;AAE9C,UAAI3W,OAAOW,OAAOwxC,YAAAA,EAAczN,KAAKvvB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClDhN,YAAIi3B,UAAS;AACb8b,2BAAmB/yC,KAAK;UACtB7F,GAAGg1D;UACH/0D,GAAGg1D;UACHpvC,GAAGqvC;UACHnvC,GAAGovC;UACHl/C,QAAQ45B;QACV,CAAA;AACAhqC,YAAIiB,KAAI;aACH;AACLjB,YAAIw2B,SAAS24B,cAAcC,aAAaC,eAAeC,cAAAA;;;EAG7D;AAEA,WAASC,gBAAgB51D,OAAOsqD,YAAY;AAC1C,UAAM,EAACjkD,KAAKtH,SAAS,EAACsf,YAAW,EAAC,IAAIre;AAEtC,aAAS/G,KAAIqxD,aAAa,GAAGrxD,MAAK,GAAGA,MAAK;AACxC,YAAME,OAAO6G,MAAM20D,iBAAiB17D,EAAE;AACtC,UAAI,CAACE,KAAK0yC,SAAS;AAEjB;;AAEF,YAAMnR,cAAcrc,YAAYiV,WAAWtzB,MAAMm0D,qBAAqBl7D,EAAAA,CAAAA;AACtEs8D,wBAAkBlvD,KAAKq0B,aAAavhC,IAAAA;AACpC,YAAMm7D,SAAS/iC,OAAOmJ,YAAYpJ,IAAI;AACtC,YAAM,EAAC9wB,GAAAA,IAAGC,GAAAA,IAAG86B,UAAAA,IAAapiC;AAE1B6kC,iBACE33B,KACArG,MAAM+zD,aAAa96D,EAAE,GACrBuH,IACAC,KAAK6zD,OAAO7iC,aAAa,GACzB6iC,QACA;QACEn5D,OAAOu/B,YAAYv/B;QACnBogC;QACAG,cAAc;MAChB,CAAA;IAEJ;EACF;AAEA,WAASm6B,eAAe71D,OAAOyW,QAAQ2H,UAAUksC,YAAY;AAC3D,UAAM,EAACjkD,IAAG,IAAIrG;AACd,QAAIoe,UAAU;AAEZ/X,UAAI6V,IAAIlc,MAAM4e,SAAS5e,MAAM6e,SAASpI,QAAQ,GAAGc,GAAAA;WAC5C;AAEL,UAAIgI,gBAAgBvf,MAAMo0D,iBAAiB,GAAG39C,MAAAA;AAC9CpQ,UAAIk3B,OAAOhe,cAAc/e,GAAG+e,cAAc9e,CAAC;AAE3C,eAASxH,KAAI,GAAGA,KAAIqxD,YAAYrxD,MAAK;AACnCsmB,wBAAgBvf,MAAMo0D,iBAAiBn7D,IAAGwd,MAAAA;AAC1CpQ,YAAIm3B,OAAOje,cAAc/e,GAAG+e,cAAc9e,CAAC;MAC7C;;EAEJ;AAEA,WAASq1D,eAAe91D,OAAO+1D,cAAct/C,QAAQ6zC,YAAY5wB,YAAY;AAC3E,UAAMrzB,MAAMrG,MAAMqG;AAClB,UAAM+X,WAAW23C,aAAa33C;AAE9B,UAAM,EAACjjB,OAAAA,QAAO4e,UAAAA,IAAag8C;AAE3B,QAAK,CAAC33C,YAAY,CAACksC,cAAe,CAACnvD,UAAS,CAAC4e,aAAatD,SAAS,GAAG;AACpE;;AAGFpQ,QAAIu2B,KAAI;AACRv2B,QAAIuT,cAAcze;AAClBkL,QAAI0T,YAAYA;AAChB1T,QAAI+2B,YAAY1D,WAAWoB,IAAI;AAC/Bz0B,QAAIg3B,iBAAiB3D,WAAWsB;AAEhC30B,QAAIi3B,UAAS;AACbu4B,mBAAe71D,OAAOyW,QAAQ2H,UAAUksC,UAAAA;AACxCjkD,QAAI0pC,UAAS;AACb1pC,QAAIo3B,OAAM;AACVp3B,QAAIy2B,QAAO;EACb;AAEA,WAASk5B,wBAAwBhxD,QAAQvD,QAAOqK,OAAO;AACrD,WAAO7G,cAAcD,QAAQ;MAC3B8G;MACArK,OAAAA;MACA/J,MAAM;IACR,CAAA;EACF;AAEe,MAAMu+D,oBAAN,cAAgC1E,gBAAAA;IAE7C,OAAO1uD,KAAK;IAKZ,OAAOzE,WAAW;MAChB+f,SAAS;MAGT+3C,SAAS;MACT50C,UAAU;MAEVpD,YAAY;QACVC,SAAS;QACTpE,WAAW;QACX8gB,YAAY,CAAA;QACZE,kBAAkB;MACpB;MAEAjnB,MAAM;QACJsK,UAAU;MACZ;MAEA5G,YAAY;MAGZ9G,OAAO;QAEL0rB,mBAAmB;QAEnBpG,UAAUo8B,MAAMC,WAAWC;MAC7B;MAEAj0C,aAAa;QACXme,eAAenlC;QAGfklC,iBAAiB;QAGjBpe,SAAS;QAGTmT,MAAM;UACJ5xB,MAAM;QACR;QAGAs2B,SAASlqB,OAAO;AACd,iBAAOA;QACT;QAGA0b,SAAS;QAGT0sC,mBAAmB;MACrB;;IAGF,OAAOrmC,gBAAgB;MACrB,oBAAoB;MACpB,qBAAqB;MACrB,eAAe;;IAGjB,OAAO/U,cAAc;MACnBoF,YAAY;QACVixC,WAAW;MACb;;IAGFp4D,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKgjB,UAAUvnB;AAEf,WAAKwnB,UAAUxnB;AAEf,WAAKg9D,cAAch9D;AAEnB,WAAK08D,eAAe,CAAA;AACpB,WAAKY,mBAAmB,CAAA;IAC1B;IAEAtgC,gBAAgB;AAEd,YAAM7M,UAAU,KAAKu+B,WAAWh+B,UAAUyrC,sBAAsB,KAAKz0D,OAAO,IAAI,CAAA;AAChF,YAAMsnB,KAAI,KAAKvR,QAAQ,KAAKsG,WAAWoM,QAAQ1S;AAC/C,YAAMyR,KAAI,KAAK1R,SAAS,KAAKwG,YAAYmM,QAAQ3S;AACjD,WAAK+J,UAAUzmB,KAAKoE,MAAM,KAAKsE,OAAOwlB,KAAI,IAAImB,QAAQ3mB,IAAI;AAC1D,WAAKge,UAAU1mB,KAAKoE,MAAM,KAAKmE,MAAM6lB,KAAI,IAAIiB,QAAQ9mB,GAAG;AACxD,WAAK2zD,cAAcl8D,KAAKoE,MAAMpE,KAAKC,IAAIiuB,IAAGE,EAAK,IAAA,CAAA;IACjD;IAEAiO,sBAAsB;AACpB,YAAM,EAACp8B,KAAKmC,IAAG,IAAI,KAAK+Q,UAAU,KAAK;AAEvC,WAAKlT,MAAM6J,eAAS7J,GAAAA,KAAQ,CAAC+c,MAAM/c,GAAOA,IAAAA,MAAM;AAChD,WAAKmC,MAAM0H,eAAS1H,GAAAA,KAAQ,CAAC4a,MAAM5a,GAAOA,IAAAA,MAAM;AAGhD,WAAKk3D,uBAAsB;IAC7B;IAMAO,mBAAmB;AACjB,aAAO75D,KAAK03B,KAAK,KAAKwkC,cAAcb,sBAAsB,KAAKz0D,OAAO,CAAA;IACxE;IAEAg3B,mBAAmBrlB,OAAO;AACxB6gD,sBAAgBrxC,UAAU6V,mBAAmBv9B,KAAK,MAAMkY,KAAAA;AAGxD,WAAKqjD,eAAe,KAAKppD,UAAS,EAC/B4O,IAAI,CAAC9Z,OAAOgC,WAAU;AACrB,cAAMqK,QAAQs2B,SAAa,KAAKrjC,QAAQsf,YAAY2X,UAAU;UAACv2B;UAAOgC;QAAM,GAAE,IAAI;AAClF,eAAOqK,SAASA,UAAU,IAAIA,QAAQ;OAEvCjH,EAAAA,OAAO,CAACwO,IAAGpa,OAAM,KAAK1B,MAAMse,kBAAkB5c,EAAAA,CAAAA;IACnD;IAEAq8B,MAAM;AACJ,YAAMp1B,OAAO,KAAKnB;AAElB,UAAImB,KAAKie,WAAWje,KAAKme,YAAYF,SAAS;AAC5Cy1C,2BAAmB,IAAI;aAClB;AACL,aAAKc,eAAe,GAAG,GAAG,GAAG,CAAA;;IAEjC;IAEAA,eAAeyB,cAAcC,eAAeC,aAAaC,gBAAgB;AACvE,WAAK13C,WAAWzmB,KAAKoE,OAAO45D,eAAeC,iBAAiB,CAAA;AAC5D,WAAKv3C,WAAW1mB,KAAKoE,OAAO85D,cAAcC,kBAAkB,CAAA;AAC5D,WAAKjC,eAAel8D,KAAKC,IAAI,KAAKi8D,cAAc,GAAGl8D,KAAKoC,IAAI47D,cAAcC,eAAeC,aAAaC,cAAAA,CAAAA;IACxG;IAEAv3C,cAActd,QAAO;AACnB,YAAM80D,kBAAkBh/C,OAAO,KAAKw8C,aAAa/6D,UAAU;AAC3D,YAAMwe,aAAa,KAAKzY,QAAQyY,cAAc;AAE9C,aAAO8lC,gBAAgB77C,SAAQ80D,kBAAkB97C,UAAUjD,UAAAA,CAAAA;IAC7D;IAEA2H,8BAA8B1f,OAAO;AACnC,UAAIyR,cAAczR,KAAQ,GAAA;AACxB,eAAO4L;;AAIT,YAAMmrD,gBAAgB,KAAKnC,eAAe,KAAK95D,MAAM,KAAKnC;AAC1D,UAAI,KAAK2G,QAAQoB,SAAS;AACxB,gBAAQ,KAAK5F,MAAMkF,SAAS+2D;;AAE9B,cAAQ/2D,QAAQ,KAAKrH,OAAOo+D;IAC9B;IAEAC,8BAA8BvzC,UAAU;AACtC,UAAIhS,cAAcgS,QAAW,GAAA;AAC3B,eAAO7X;;AAGT,YAAMqrD,iBAAiBxzC,YAAY,KAAKmxC,eAAe,KAAK95D,MAAM,KAAKnC;AACvE,aAAO,KAAK2G,QAAQoB,UAAU,KAAK5F,MAAMm8D,iBAAiB,KAAKt+D,MAAMs+D;IACvE;IAEAvC,qBAAqB1yD,QAAO;AAC1B,YAAM4c,cAAc,KAAK01C,gBAAgB,CAAA;AAEzC,UAAItyD,UAAS,KAAKA,SAAQ4c,YAAYrlB,QAAQ;AAC5C,cAAM29D,aAAat4C,YAAY5c,MAAM;AACrC,eAAOu0D,wBAAwB,KAAKjsD,WAAU,GAAItI,QAAOk1D,UAAAA;;IAE7D;IAEAvC,iBAAiB3yD,QAAOm1D,oBAAoB3C,kBAAkB,GAAG;AAC/D,YAAMh8C,QAAQ,KAAK8G,cAActd,MAAAA,IAAS6W,UAAU27C;AACpD,aAAO;QACLzzD,GAAGrI,KAAKwf,IAAIM,KAAAA,IAAS2+C,qBAAqB,KAAKh4C;QAC/Cne,GAAGtI,KAAK0f,IAAII,KAAAA,IAAS2+C,qBAAqB,KAAK/3C;QAC/C5G;MACF;IACF;IAEAuH,yBAAyB/d,QAAOhC,OAAO;AACrC,aAAO,KAAK20D,iBAAiB3yD,QAAO,KAAK0d,8BAA8B1f,KAAAA,CAAAA;IACzE;IAEAo3D,gBAAgBp1D,QAAO;AACrB,aAAO,KAAK+d,yBAAyB/d,UAAS,GAAG,KAAK23B,aAAY,CAAA;IACpE;IAEA09B,sBAAsBr1D,QAAO;AAC3B,YAAM,EAACZ,MAAMH,KAAKC,OAAOC,OAAM,IAAI,KAAK+zD,iBAAiBlzD,MAAM;AAC/D,aAAO;QACLZ;QACAH;QACAC;QACAC;MACF;IACF;IAKA+7B,iBAAiB;AACf,YAAM,EAAChjB,iBAAiB7F,MAAM,EAACsK,SAAAA,EAAS,IAAI,KAAKrf;AACjD,UAAI4a,iBAAiB;AACnB,cAAMtT,MAAM,KAAKA;AACjBA,YAAIu2B,KAAI;AACRv2B,YAAIi3B,UAAS;AACbu4B,uBAAe,MAAM,KAAK12C,8BAA8B,KAAKqyC,SAAS,GAAGpzC,UAAU,KAAK21C,aAAa/6D,MAAM;AAC3GqN,YAAI0pC,UAAS;AACb1pC,YAAIqT,YAAYC;AAChBtT,YAAIiB,KAAI;AACRjB,YAAIy2B,QAAO;;IAEf;IAKAE,WAAW;AACT,YAAM32B,MAAM,KAAKA;AACjB,YAAMnG,OAAO,KAAKnB;AAClB,YAAM,EAACmf,YAAYpK,MAAM+J,OAAAA,IAAU3d;AACnC,YAAMoqD,aAAa,KAAKyJ,aAAa/6D;AAErC,UAAIC,IAAG4a,QAAQyN;AAEf,UAAIphB,KAAKme,YAAYF,SAAS;AAC5By3C,wBAAgB,MAAMtL,UAAAA;;AAGxB,UAAIx2C,KAAKqK,SAAS;AAChB,aAAKzN,MAAM3Y,QAAQ,CAACuB,MAAMmI,WAAU;AAClC,cAAIA,WAAU,KAAMA,WAAU,KAAK,KAAKrJ,MAAM,GAAI;AAChDyb,qBAAS,KAAKsL,8BAA8B7lB,KAAKmG,KAAK;AACtD,kBAAMgN,UAAU,KAAK1C,WAAWtI,MAAAA;AAChC,kBAAMi5B,cAAc5mB,KAAKwf,WAAW7mB,OAAAA;AACpC,kBAAMkuB,oBAAoB9c,OAAOyV,WAAW7mB,OAAAA;AAE5CqpD,2BAAe,MAAMp7B,aAAa7mB,QAAQy2C,YAAY3vB,iBAAAA;;QAE1D,CAAA;;AAGF,UAAIzc,WAAWC,SAAS;AACtB9X,YAAIu2B,KAAI;AAER,aAAK3jC,KAAIqxD,aAAa,GAAGrxD,MAAK,GAAGA,MAAK;AACpC,gBAAMyhC,cAAcxc,WAAWoV,WAAW,KAAK6gC,qBAAqBl7D,EAAAA,CAAAA;AACpE,gBAAM,EAACkC,OAAAA,QAAO4e,UAAAA,IAAa2gB;AAE3B,cAAI,CAAC3gB,aAAa,CAAC5e,QAAO;AACxB;;AAGFkL,cAAI0T,YAAYA;AAChB1T,cAAIuT,cAAcze;AAElBkL,cAAI+2B,YAAY1C,YAAYG,UAAU;AACtCx0B,cAAIg3B,iBAAiB3C,YAAYK;AAEjClnB,mBAAS,KAAKsL,8BAA8Bjf,KAAKwQ,MAAMvQ,UAAU,KAAK/H,MAAM,KAAKmC,GAAG;AACpF+mB,qBAAW,KAAK8yC,iBAAiBn7D,IAAG4a,MAAAA;AACpCxN,cAAIi3B,UAAS;AACbj3B,cAAIk3B,OAAO,KAAK3e,SAAS,KAAKC,OAAO;AACrCxY,cAAIm3B,OAAOlc,SAAS9gB,GAAG8gB,SAAS7gB,CAAC;AACjC4F,cAAIo3B,OAAM;QACZ;AAEAp3B,YAAIy2B,QAAO;;IAEf;IAKAa,aAAa;IAAA;IAKbE,aAAa;AACX,YAAMx3B,MAAM,KAAKA;AACjB,YAAMnG,OAAO,KAAKnB;AAClB,YAAMovB,WAAWjuB,KAAKwQ;AAEtB,UAAI,CAACyd,SAAShQ,SAAS;AACrB;;AAGF,YAAM3G,aAAa,KAAKuH,cAAc,CAAA;AACtC,UAAIlL,QAAQiB;AAEZzO,UAAIu2B,KAAI;AACRv2B,UAAIotC,UAAU,KAAK70B,SAAS,KAAKC,OAAO;AACxCxY,UAAI0wD,OAAOv/C,UAAAA;AACXnR,UAAIk1B,YAAY;AAChBl1B,UAAIq1B,eAAe;AAEnB,WAAKhrB,MAAM3Y,QAAQ,CAACuB,MAAMmI,WAAU;AAClC,YAAKA,WAAU,KAAK,KAAKrJ,OAAO,KAAM,CAAC8H,KAAKC,SAAS;AACnD;;AAGF,cAAMu6B,cAAcvM,SAASmF,WAAW,KAAKvpB,WAAWtI,MAAAA,CAAAA;AACxD,cAAM82B,WAAWhH,OAAOmJ,YAAYpJ,IAAI;AACxCzd,iBAAS,KAAKsL,8BAA8B,KAAKzO,MAAMjP,MAAM,EAAChC,KAAK;AAEnE,YAAIi7B,YAAY0B,mBAAmB;AACjC/1B,cAAIirB,OAAOiH,SAASI;AACpB7jB,kBAAQzO,IAAIk8C,YAAYjpD,KAAKwS,KAAK,EAAEgJ;AACpCzO,cAAIqT,YAAYghB,YAAY8B;AAE5B,gBAAMhV,UAAUO,UAAU2S,YAAY6B,eAAe;AACrDl2B,cAAIw2B,SACF,CAAC/nB,QAAQ,IAAI0S,QAAQ3mB,MACrB,CAACgT,SAAS0kB,SAAS74B,OAAO,IAAI8nB,QAAQ9mB,KACtCoU,QAAQ0S,QAAQ1S,OAChByjB,SAAS74B,OAAO8nB,QAAQ3S,MAAM;;AAIlCmpB,mBAAW33B,KAAK/M,KAAKwS,OAAO,GAAG,CAAC+H,QAAQ0kB,UAAU;UAChDp9B,OAAOu/B,YAAYv/B;UACnB4gC,aAAarB,YAAYsB;UACzBC,aAAavB,YAAYwB;QAC3B,CAAA;MACF,CAAA;AAEA71B,UAAIy2B,QAAO;IACb;IAKAoB,YAAY;IAAA;EACd;AC5pBA,MAAM84B,YAAY;IAChBC,aAAa;MAACC,QAAQ;MAAMx3D,MAAM;MAAGmzD,OAAO;IAAI;IAChDsE,QAAQ;MAACD,QAAQ;MAAMx3D,MAAM;MAAMmzD,OAAO;IAAE;IAC5CuE,QAAQ;MAACF,QAAQ;MAAMx3D,MAAM;MAAOmzD,OAAO;IAAE;IAC7CwE,MAAM;MAACH,QAAQ;MAAMx3D,MAAM;MAASmzD,OAAO;IAAE;IAC7CyE,KAAK;MAACJ,QAAQ;MAAMx3D,MAAM;MAAUmzD,OAAO;IAAE;IAC7C0E,MAAM;MAACL,QAAQ;MAAOx3D,MAAM;MAAWmzD,OAAO;IAAC;IAC/C2E,OAAO;MAACN,QAAQ;MAAMx3D,MAAM;MAASmzD,OAAO;IAAE;IAC9C4E,SAAS;MAACP,QAAQ;MAAOx3D,MAAM;MAASmzD,OAAO;IAAC;IAChD6E,MAAM;MAACR,QAAQ;MAAMx3D,MAAM;IAAQ;EACrC;AAKA,MAAMi4D,QAA6Cz5D,uBAAOC,KAAK64D,SAAAA;AAM/D,WAASY,OAAOznD,IAAGlP,IAAG;AACpB,WAAOkP,KAAIlP;EACb;AAOA,WAASgJ,MAAMjK,OAAO63D,OAAO;AAC3B,QAAI3mD,cAAc2mD,KAAQ,GAAA;AACxB,aAAO;;AAGT,UAAMC,UAAU93D,MAAM+3D;AACtB,UAAM,EAACC,QAAQ9oC,OAAAA,QAAO+oC,WAAU,IAAIj4D,MAAMk4D;AAC1C,QAAIz4D,QAAQo4D;AAEZ,QAAI,OAAOG,WAAW,YAAY;AAChCv4D,cAAQu4D,OAAOv4D,KAAAA;;AAIjB,QAAI,CAACwC,eAASxC,KAAQ,GAAA;AACpBA,cAAQ,OAAOu4D,WAAW,WACtBF,QAAQ7tD,MAAMxK,OAA4Bu4D,MAAAA,IAC1CF,QAAQ7tD,MAAMxK,KAAM;;AAG1B,QAAIA,UAAU,MAAM;AAClB,aAAO;;AAGT,QAAIyvB,QAAO;AACTzvB,cAAQyvB,WAAU,WAAW1R,SAASy6C,UAAeA,KAAAA,eAAe,QAChEH,QAAQv3C,QAAQ9gB,OAAO,WAAWw4D,UAAAA,IAClCH,QAAQv3C,QAAQ9gB,OAAOyvB,MAAM;;AAGnC,WAAO,CAACzvB;EACV;AAUA,WAAS04D,0BAA0BC,SAAShgE,KAAKmC,KAAK89D,UAAU;AAC9D,UAAM72D,OAAOm2D,MAAM3+D;AAEnB,aAASC,KAAI0+D,MAAMviD,QAAQgjD,OAAAA,GAAUn/D,KAAIuI,OAAO,GAAG,EAAEvI,IAAG;AACtD,YAAMq/D,WAAWtB,UAAUW,MAAM1+D,EAAAA,CAAE;AACnC,YAAMiC,SAASo9D,SAASzF,QAAQyF,SAASzF,QAAQ5vD,OAAOs1D;AAExD,UAAID,SAASpB,UAAU/+D,KAAK03B,MAAMt1B,MAAMnC,QAAQ8C,SAASo9D,SAAS54D,KAAG,KAAO24D,UAAU;AACpF,eAAOV,MAAM1+D,EAAE;;IAEnB;AAEA,WAAO0+D,MAAMn2D,OAAO,CAAE;EACxB;AAWA,WAASg3D,2BAA2Bx4D,OAAOk2B,UAAUkiC,SAAShgE,KAAKmC,KAAK;AACtE,aAAStB,KAAI0+D,MAAM3+D,SAAS,GAAGC,MAAK0+D,MAAMviD,QAAQgjD,OAAAA,GAAUn/D,MAAK;AAC/D,YAAMq3D,OAAOqH,MAAM1+D,EAAE;AACrB,UAAI+9D,UAAU1G,IAAK,EAAC4G,UAAUl3D,MAAM+3D,SAASz3C,KAAK/lB,KAAKnC,KAAKk4D,IAAAA,KAASp6B,WAAW,GAAG;AACjF,eAAOo6B;;IAEX;AAEA,WAAOqH,MAAMS,UAAUT,MAAMviD,QAAQgjD,OAAAA,IAAW,CAAC;EACnD;AAMA,WAASK,mBAAmBnI,MAAM;AAChC,aAASr3D,KAAI0+D,MAAMviD,QAAQk7C,IAAQ,IAAA,GAAG9uD,OAAOm2D,MAAM3+D,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACxE,UAAI+9D,UAAUW,MAAM1+D,EAAAA,CAAE,EAAEi+D,QAAQ;AAC9B,eAAOS,MAAM1+D,EAAE;;IAEnB;EACF;AAOA,WAASy/D,QAAQhoD,OAAOioD,MAAMC,YAAY;AACxC,QAAI,CAACA,YAAY;AACfloD,YAAMioD,IAAK,IAAG;eACLC,WAAW5/D,QAAQ;AAC5B,YAAM,EAACmoB,IAAIC,IAAAA,IAAAA,IAAMy3C,QAAQD,YAAYD,IAAAA;AACrC,YAAMG,YAAYF,WAAWz3C,EAAAA,KAAOw3C,OAAOC,WAAWz3C,EAAG,IAAGy3C,WAAWx3C,GAAG;AAC1E1Q,YAAMooD,SAAU,IAAG;;EAEvB;AASA,WAASC,cAAc/4D,OAAO0Q,OAAO6I,MAAKy/C,WAAW;AACnD,UAAMlB,UAAU93D,MAAM+3D;AACtB,UAAMlpC,QAAQ,CAACipC,QAAQv3C,QAAQ7P,MAAM,CAAA,EAAGjR,OAAOu5D,SAAAA;AAC/C,UAAMhkD,OAAOtE,MAAMA,MAAM1X,SAAS,CAAA,EAAGyG;AACrC,QAAIgvB,OAAOhtB;AAEX,SAAKgtB,QAAQI,OAAOJ,SAASzZ,MAAMyZ,QAAQ,CAACqpC,QAAQ59D,IAAIu0B,OAAO,GAAGuqC,SAAY,GAAA;AAC5Ev3D,MAAAA,SAAQ8X,KAAIkV,KAAM;AAClB,UAAIhtB,UAAS,GAAG;AACdiP,cAAMjP,MAAAA,EAAOgtB,QAAQ;;IAEzB;AACA,WAAO/d;EACT;AAQA,WAASuoD,oBAAoBj5D,OAAOnB,QAAQm6D,WAAW;AACrD,UAAMtoD,QAAQ,CAAA;AAEd,UAAM6I,OAAM,CAAA;AACZ,UAAM/X,OAAO3C,OAAO7F;AACpB,QAAIC,IAAGwG;AAEP,SAAKxG,KAAI,GAAGA,KAAIuI,MAAM,EAAEvI,IAAG;AACzBwG,cAAQZ,OAAO5F,EAAE;AACjBsgB,MAAAA,KAAI9Z,KAAAA,IAASxG;AAEbyX,YAAMzW,KAAK;QACTwF;QACAgvB,OAAO;MACT,CAAA;IACF;AAIA,WAAQjtB,SAAS,KAAK,CAACw3D,YAAatoD,QAAQqoD,cAAc/4D,OAAO0Q,OAAO6I,MAAKy/C,SAAU;EACzF;AAEe,MAAME,YAAN,cAAwB/mC,MAAAA;IAErC,OAAOtvB,KAAK;IAKZ,OAAOzE,WAAW;MAQhBm6C,QAAQ;MAER4gB,UAAU,CAAA;MACVR,MAAM;QACJX,QAAQ;QACR1H,MAAM;QACNphC,OAAO;QACP+oC,YAAY;QACZG,SAAS;QACTgB,gBAAgB,CAAA;MAClB;MACA1oD,OAAO;QASLykB,QAAQ;QAERa,UAAU;QAEVvH,OAAO;UACLC,SAAS;QACX;MACF;;IAMF33B,YAAYwI,OAAO;AACjB,YAAMA,KAAAA;AAGN,WAAKsQ,SAAS;QACZzN,MAAM,CAAA;QACNsI,QAAQ,CAAA;QACR5K,KAAK,CAAA;MACP;AAGA,WAAKu5D,QAAQ;AAEb,WAAKC,aAAajiE;AAClB,WAAKkiE,WAAW,CAAA;AAChB,WAAKC,cAAc;AACnB,WAAKtB,aAAa7gE;IACpB;IAEA8oB,KAAK2qB,WAAW5qC,OAAO,CAAA,GAAI;AACzB,YAAMy4D,OAAO7tB,UAAU6tB,SAAS7tB,UAAU6tB,OAAO,CAAA;AAEjD,YAAMb,UAAU,KAAKC,WAAW,IAAIoB,SAAS14C,MAAMqqB,UAAUquB,SAAS1hE,IAAI;AAE1EqgE,cAAQ33C,KAAKjgB,IAAAA;AAMb0kC,cAAQ+zB,KAAKS,gBAAgBtB,QAAQ13C,QAAO,CAAA;AAE5C,WAAK83C,aAAa;QAChBF,QAAQW,KAAKX;QACb9oC,OAAOypC,KAAKzpC;QACZ+oC,YAAYU,KAAKV;MACnB;AAEA,YAAM93C,KAAK2qB,SAAAA;AAEX,WAAK0uB,cAAct5D,KAAKu5D;IAC1B;IAOAxvD,MAAM3E,KAAK7D,QAAO;AAChB,UAAI6D,QAAQjO,QAAW;AACrB,eAAO;;AAET,aAAO4S,MAAM,MAAM3E,GAAAA;IACrB;IAEA6iB,eAAe;AACb,YAAMA,aAAY;AAClB,WAAKtY,SAAS;QACZzN,MAAM,CAAA;QACNsI,QAAQ,CAAA;QACR5K,KAAK,CAAA;MACP;IACF;IAEA00B,sBAAsB;AACpB,YAAMz1B,UAAU,KAAKA;AACrB,YAAM+4D,UAAU,KAAKC;AACrB,YAAMzH,OAAOvxD,QAAQ45D,KAAKrI,QAAQ;AAElC,UAAI,EAACl4D,KAAKmC,KAAKwI,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AAK3D,eAAS42D,aAAanhB,QAAQ;AAC5B,YAAI,CAACx1C,cAAc,CAACoS,MAAMojC,OAAOngD,GAAG,GAAG;AACrCA,gBAAMD,KAAKC,IAAIA,KAAKmgD,OAAOngD,GAAG;;AAEhC,YAAI,CAAC4K,cAAc,CAACmS,MAAMojC,OAAOh+C,GAAG,GAAG;AACrCA,gBAAMpC,KAAKoC,IAAIA,KAAKg+C,OAAOh+C,GAAG;;MAElC;AAGA,UAAI,CAACwI,cAAc,CAACC,YAAY;AAE9B02D,qBAAa,KAAKC,gBAAe,CAAA;AAIjC,YAAI56D,QAAQw5C,WAAW,WAAWx5C,QAAQ2R,MAAMykB,WAAW,UAAU;AACnEukC,uBAAa,KAAKpuD,UAAU,KAAK,CAAA;;;AAIrClT,YAAM6J,eAAS7J,GAAAA,KAAQ,CAAC+c,MAAM/c,GAAOA,IAAAA,MAAM,CAAC0/D,QAAQv3C,QAAQ5nB,KAAKC,IAAG,GAAI03D,IAAK;AAC7E/1D,YAAM0H,eAAS1H,GAAAA,KAAQ,CAAC4a,MAAM5a,GAAAA,IAAOA,MAAM,CAACu9D,QAAQt3C,MAAM7nB,KAAKC,IAAG,GAAI03D,IAAAA,IAAQ;AAG9E,WAAKl4D,MAAMD,KAAKC,IAAIA,KAAKmC,MAAM,CAAA;AAC/B,WAAKA,MAAMpC,KAAKoC,IAAInC,MAAM,GAAGmC,GAAAA;IAC/B;IAKAo/D,kBAAkB;AAChB,YAAM7qD,MAAM,KAAK8qD,mBAAkB;AACnC,UAAIxhE,MAAM6K,OAAOE;AACjB,UAAI5I,MAAM0I,OAAOC;AAEjB,UAAI4L,IAAI9V,QAAQ;AACdZ,cAAM0W,IAAI,CAAE;AACZvU,cAAMuU,IAAIA,IAAI9V,SAAS,CAAE;;AAE3B,aAAO;QAACZ;QAAKmC;MAAG;IAClB;IAKAq6B,aAAa;AACX,YAAM71B,UAAU,KAAKA;AACrB,YAAM86D,WAAW96D,QAAQ45D;AACzB,YAAMxqC,WAAWpvB,QAAQ2R;AACzB,YAAMkoD,aAAazqC,SAASgH,WAAW,WAAW,KAAKykC,mBAAkB,IAAK,KAAKE,UAAS;AAE5F,UAAI/6D,QAAQw5C,WAAW,WAAWqgB,WAAW5/D,QAAQ;AACnD,aAAKZ,MAAM,KAAK46B,YAAY4lC,WAAW,CAAE;AACzC,aAAKr+D,MAAM,KAAKw4B,YAAY6lC,WAAWA,WAAW5/D,SAAS,CAAE;;AAG/D,YAAMZ,MAAM,KAAKA;AACjB,YAAMmC,MAAM,KAAKA;AAEjB,YAAMmW,QAAQqpD,eAAenB,YAAYxgE,KAAKmC,GAAAA;AAK9C,WAAK8+D,QAAQQ,SAASvJ,SAASniC,SAASD,WACpCiqC,0BAA0B0B,SAASzB,SAAS,KAAKhgE,KAAK,KAAKmC,KAAK,KAAKy/D,kBAAkB5hE,GACvFogE,CAAAA,IAAAA,2BAA2B,MAAM9nD,MAAM1X,QAAQ6gE,SAASzB,SAAS,KAAKhgE,KAAK,KAAKmC,GAAG;AACvF,WAAK++D,aAAa,CAACnrC,SAASM,MAAMC,WAAW,KAAK2qC,UAAU,SAAShiE,SACjEohE,mBAAmB,KAAKY,KAAK;AACjC,WAAKY,YAAYrB,UAAAA;AAEjB,UAAI75D,QAAQoB,SAAS;AACnBuQ,cAAMvQ,QAAO;;AAGf,aAAO84D,oBAAoB,MAAMvoD,OAAO,KAAK4oD,UAAU;IACzD;IAEAlkC,gBAAgB;AAGd,UAAI,KAAKr2B,QAAQm7D,qBAAqB;AACpC,aAAKD,YAAY,KAAKvpD,MAAM6I,IAAIjgB,CAAAA,SAAQ,CAACA,KAAKmG,KAAK,CAAA;;IAEvD;IAUAw6D,YAAYrB,aAAa,CAAA,GAAI;AAC3B,UAAIvgE,SAAQ;AACZ,UAAI+H,MAAM;AACV,UAAIyuB,OAAO7Z;AAEX,UAAI,KAAKjW,QAAQ8U,UAAU+kD,WAAW5/D,QAAQ;AAC5C61B,gBAAQ,KAAKsrC,mBAAmBvB,WAAW,CAAE,CAAA;AAC7C,YAAIA,WAAW5/D,WAAW,GAAG;AAC3BX,UAAAA,SAAQ,IAAIw2B;eACP;AACLx2B,UAAAA,UAAS,KAAK8hE,mBAAmBvB,WAAW,CAAA,CAAE,IAAI/pC,SAAS;;AAE7D7Z,eAAO,KAAKmlD,mBAAmBvB,WAAWA,WAAW5/D,SAAS,CAAE,CAAA;AAChE,YAAI4/D,WAAW5/D,WAAW,GAAG;AAC3BoH,gBAAM4U;eACD;AACL5U,iBAAO4U,OAAO,KAAKmlD,mBAAmBvB,WAAWA,WAAW5/D,SAAS,CAAA,CAAE,KAAK;;;AAGhF,YAAMwhC,QAAQo+B,WAAW5/D,SAAS,IAAI,MAAM;AAC5CX,MAAAA,SAAQy+B,YAAYz+B,QAAO,GAAGmiC,KAAAA;AAC9Bp6B,YAAM02B,YAAY12B,KAAK,GAAGo6B,KAAAA;AAE1B,WAAK++B,WAAW;QAAClhE,OAAAA;QAAO+H;QAAKlF,QAAQ,KAAK7C,SAAQ,IAAI+H;MAAI;IAC5D;IASA05D,YAAY;AACV,YAAMhC,UAAU,KAAKC;AACrB,YAAM3/D,MAAM,KAAKA;AACjB,YAAMmC,MAAM,KAAKA;AACjB,YAAMwE,UAAU,KAAKA;AACrB,YAAM86D,WAAW96D,QAAQ45D;AAEzB,YAAMyB,QAAQP,SAASvJ,QAAQ6H,0BAA0B0B,SAASzB,SAAShgE,KAAKmC,KAAK,KAAKy/D,kBAAkB5hE,GAAAA,CAAAA;AAC5G,YAAM25D,WAAWhqD,eAAehJ,QAAQ2R,MAAMqhD,UAAU,CAAA;AACxD,YAAMsI,UAAUD,UAAU,SAASP,SAAS5B,aAAa;AACzD,YAAMqC,aAAa98C,SAAS68C,OAAYA,KAAAA,YAAY;AACpD,YAAM3pD,QAAQ,CAAA;AACd,UAAIme,QAAQz2B;AACZ,UAAIugE,MAAMzuD;AAGV,UAAIowD,YAAY;AACdzrC,gBAAQ,CAACipC,QAAQv3C,QAAQsO,OAAO,WAAWwrC,OAAAA;;AAI7CxrC,cAAQ,CAACipC,QAAQv3C,QAAQsO,OAAOyrC,aAAa,QAAQF,KAAK;AAG1D,UAAItC,QAAQx3C,KAAK/lB,KAAKnC,KAAKgiE,KAAAA,IAAS,MAASrI,UAAU;AACrD,cAAM,IAAIjyC,MAAM1nB,MAAM,UAAUmC,MAAM,yCAAyCw3D,WAAW,MAAMqI,KAAO;;AAGzG,YAAMxB,aAAa75D,QAAQ2R,MAAMykB,WAAW,UAAU,KAAKolC,kBAAiB;AAC5E,WAAK5B,OAAO9pC,OAAO3kB,QAAQ,GAAGyuD,OAAOp+D,KAAKo+D,OAAO,CAACb,QAAQ59D,IAAIy+D,MAAM5G,UAAUqI,KAAAA,GAAQlwD,SAAS;AAC7FwuD,gBAAQhoD,OAAOioD,MAAMC,UAAAA;MACvB;AAEA,UAAID,SAASp+D,OAAOwE,QAAQw5C,WAAW,WAAWruC,UAAU,GAAG;AAC7DwuD,gBAAQhoD,OAAOioD,MAAMC,UAAAA;;AAIvB,aAAO16D,OAAOC,KAAKuS,KAAOR,EAAAA,KAAK0nD,MAAAA,EAAQr+C,IAAI/Y,CAAAA,OAAK,CAACA,EAAAA;IACnD;IAMAuL,iBAAiBtM,OAAO;AACtB,YAAMq4D,UAAU,KAAKC;AACrB,YAAM8B,WAAW,KAAK96D,QAAQ45D;AAE9B,UAAIkB,SAASW,eAAe;AAC1B,eAAO1C,QAAQz3C,OAAO5gB,OAAOo6D,SAASW,aAAa;;AAErD,aAAO1C,QAAQz3C,OAAO5gB,OAAOo6D,SAAST,eAAeqB,QAAQ;IAC/D;IAOAp6C,OAAO5gB,OAAO4gB,SAAQ;AACpB,YAAMthB,UAAU,KAAKA;AACrB,YAAMqhB,WAAUrhB,QAAQ45D,KAAKS;AAC7B,YAAM9I,OAAO,KAAK+I;AAClB,YAAMqB,MAAMr6C,WAAUD,SAAQkwC,IAAK;AACnC,aAAO,KAAKyH,SAAS13C,OAAO5gB,OAAOi7D,GAAAA;IACrC;IAWAC,oBAAoBhC,MAAMl3D,QAAOiP,OAAO2P,SAAQ;AAC9C,YAAMthB,UAAU,KAAKA;AACrB,YAAM67D,YAAY77D,QAAQ2R,MAAMslB;AAEhC,UAAI4kC,WAAW;AACb,eAAOpiE,SAAKoiE,WAAW;UAACjC;UAAMl3D;UAAOiP;QAAM,GAAE,IAAI;;AAGnD,YAAM0P,WAAUrhB,QAAQ45D,KAAKS;AAC7B,YAAM9I,OAAO,KAAK+I;AAClB,YAAML,YAAY,KAAKM;AACvB,YAAMuB,cAAcvK,QAAQlwC,SAAQkwC,IAAK;AACzC,YAAMwK,cAAc9B,aAAa54C,SAAQ44C,SAAU;AACnD,YAAM1/D,OAAOoX,MAAMjP,MAAM;AACzB,YAAMgtB,QAAQuqC,aAAa8B,eAAexhE,QAAQA,KAAKm1B;AAEvD,aAAO,KAAKspC,SAAS13C,OAAOs4C,MAAMt4C,YAAWoO,QAAQqsC,cAAcD,YAAU;IAC/E;IAKA9kC,mBAAmBrlB,OAAO;AACxB,UAAIzX,IAAGuI,MAAMlI;AAEb,WAAKL,KAAI,GAAGuI,OAAOkP,MAAM1X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CK,eAAOoX,MAAMzX,EAAE;AACfK,aAAKwS,QAAQ,KAAK6uD,oBAAoBrhE,KAAKmG,OAAOxG,IAAGyX,KAAAA;MACvD;IACF;IAMAypD,mBAAmB16D,OAAO;AACxB,aAAOA,UAAU,OAAO4L,OAAO5L,QAAQ,KAAKrH,QAAQ,KAAKmC,MAAM,KAAKnC;IACtE;IAMAqY,iBAAiBhR,OAAO;AACtB,YAAMs7D,UAAU,KAAKxB;AACrB,YAAM11C,MAAM,KAAKs2C,mBAAmB16D,KAAAA;AACpC,aAAO,KAAKsW,oBAAoBglD,QAAQ1iE,QAAQwrB,OAAOk3C,QAAQ7/D,MAAM;IACvE;IAMA+a,iBAAiB8iB,OAAO;AACtB,YAAMgiC,UAAU,KAAKxB;AACrB,YAAM11C,MAAM,KAAKsV,mBAAmBJ,KAAAA,IAASgiC,QAAQ7/D,SAAS6/D,QAAQ36D;AACtE,aAAO,KAAKhI,MAAMyrB,OAAO,KAAKtpB,MAAM,KAAKnC;IAC3C;IAOA4iE,cAAclvD,OAAO;AACnB,YAAMmvD,YAAY,KAAKl8D,QAAQ2R;AAC/B,YAAMwqD,iBAAiB,KAAK70D,IAAIk8C,YAAYz2C,KAAAA,EAAOgJ;AACnD,YAAMmD,QAAQwC,UAAU,KAAKlI,aAAY,IAAK0oD,UAAU7kC,cAAc6kC,UAAU9kC,WAAW;AAC3F,YAAMglC,cAAchjE,KAAKwf,IAAIM,KAAAA;AAC7B,YAAMmjD,cAAcjjE,KAAK0f,IAAII,KAAAA;AAC7B,YAAMojD,eAAe,KAAK3iC,wBAAwB,CAAA,EAAGh5B;AAErD,aAAO;QACL2mB,GAAI60C,iBAAiBC,cAAgBE,eAAeD;QACpD70C,GAAI20C,iBAAiBE,cAAgBC,eAAeF;MACtD;IACF;IAOAnB,kBAAkBsB,aAAa;AAC7B,YAAMzB,WAAW,KAAK96D,QAAQ45D;AAC9B,YAAMS,iBAAiBS,SAAST;AAGhC,YAAM/4C,UAAS+4C,eAAeS,SAASvJ,IAAI,KAAK8I,eAAenC;AAC/D,YAAMsE,eAAe,KAAKZ,oBAAoBW,aAAa,GAAGrC,oBAAoB,MAAM;QAACqC;SAAc,KAAKhC,UAAU,GAAGj5C,OAAAA;AACzH,YAAM3gB,OAAO,KAAKs7D,cAAcO,YAAAA;AAGhC,YAAMlD,WAAWlgE,KAAKoE,MAAM,KAAKgW,aAAY,IAAK,KAAKuC,QAAQpV,KAAK2mB,IAAI,KAAKxR,SAASnV,KAAK6mB,CAAC,IAAI;AAChG,aAAO8xC,WAAW,IAAIA,WAAW;IACnC;IAKAkC,oBAAoB;AAClB,UAAI3B,aAAa,KAAK/oD,OAAOzN,QAAQ,CAAA;AACrC,UAAInJ,IAAGuI;AAEP,UAAIo3D,WAAW5/D,QAAQ;AACrB,eAAO4/D;;AAGT,YAAMllC,QAAQ,KAAK9vB,wBAAuB;AAE1C,UAAI,KAAK41D,eAAe9lC,MAAM16B,QAAQ;AACpC,eAAQ,KAAK6W,OAAOzN,OAAOsxB,MAAM,CAAA,EAAG5vB,WAAW6H,mBAAmB,IAAI;;AAGxE,WAAK1S,KAAI,GAAGuI,OAAOkyB,MAAM16B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C2/D,qBAAaA,WAAW5oD,OAAO0jB,MAAMz6B,EAAE,EAAC6K,WAAW6H,mBAAmB,IAAI,CAAA;MAC5E;AAEA,aAAQ,KAAKkE,OAAOzN,OAAO,KAAKo5D,UAAU5C,UAAAA;IAC5C;IAKAgB,qBAAqB;AACnB,YAAMhB,aAAa,KAAK/oD,OAAOnF,UAAU,CAAA;AACzC,UAAIzR,IAAGuI;AAEP,UAAIo3D,WAAW5/D,QAAQ;AACrB,eAAO4/D;;AAGT,YAAMluD,SAAS,KAAKC,UAAS;AAC7B,WAAK1R,KAAI,GAAGuI,OAAOkJ,OAAO1R,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/C2/D,mBAAW3+D,KAAKgQ,MAAM,MAAMS,OAAOzR,EAAE,CAAA,CAAA;MACvC;AAEA,aAAQ,KAAK4W,OAAOnF,SAAS,KAAK8uD,cAAcZ,aAAa,KAAK4C,UAAU5C,UAAW;IACzF;IAMA4C,UAAU38D,QAAQ;AAEhB,aAAOoR,aAAapR,OAAOqR,KAAK0nD,MAAAA,CAAAA;IAClC;EACF;ACvpBA,WAASjhB,aAAY8kB,OAAOvmD,KAAK/U,SAAS;AACxC,QAAIghB,KAAK;AACT,QAAIC,MAAKq6C,MAAMziE,SAAS;AACxB,QAAI0iE,YAAYC,YAAYC,YAAYC;AACxC,QAAI17D,SAAS;AACX,UAAI+U,OAAOumD,MAAMt6C,EAAAA,EAAI0C,OAAO3O,OAAOumD,MAAMr6C,GAAG,EAACyC,KAAK;AAC/C,SAAA,EAAC1C,IAAIC,IAAAA,IAAAA,IAAMJ,aAAay6C,OAAO,OAAOvmD,GAAG;;AAE3C,OAAA,EAAC2O,KAAK63C,YAAY/C,MAAMiD,WAAU,IAAIH,MAAMt6C,EAAAA;AAC5C,OAAA,EAAC0C,KAAK83C,YAAYhD,MAAMkD,WAAU,IAAIJ,MAAMr6C,GAAAA;WACxC;AACL,UAAIlM,OAAOumD,MAAMt6C,EAAAA,EAAIw3C,QAAQzjD,OAAOumD,MAAMr6C,GAAG,EAACu3C,MAAM;AACjD,SAAA,EAACx3C,IAAIC,IAAAA,IAAAA,IAAMJ,aAAay6C,OAAO,QAAQvmD,GAAG;;AAE5C,OAAA,EAACyjD,MAAM+C,YAAY73C,KAAK+3C,WAAU,IAAIH,MAAMt6C,EAAAA;AAC5C,OAAA,EAACw3C,MAAMgD,YAAY93C,KAAKg4C,WAAU,IAAIJ,MAAMr6C,GAAAA;;AAG/C,UAAM06C,OAAOH,aAAaD;AAC1B,WAAOI,OAAOF,cAAcC,aAAaD,eAAe1mD,MAAMwmD,cAAcI,OAAOF;EACrF;AAEA,MAAMG,kBAAN,cAA8B7C,UAAAA;IAE5B,OAAOr2D,KAAK;IAKZ,OAAOzE,WAAW86D,UAAU96D;IAK5BrH,YAAYwI,OAAO;AACjB,YAAMA,KAAAA;AAGN,WAAKy8D,SAAS,CAAA;AAEd,WAAKC,UAAU5kE;AAEf,WAAK6kE,cAAc7kE;IACrB;IAKA4iE,cAAc;AACZ,YAAMrB,aAAa,KAAKuD,uBAAsB;AAC9C,YAAMV,QAAQ,KAAKO,SAAS,KAAKI,iBAAiBxD,UAAAA;AAClD,WAAKqD,UAAUtlB,aAAY8kB,OAAO,KAAKrjE,GAAG;AAC1C,WAAK8jE,cAAcvlB,aAAY8kB,OAAO,KAAKlhE,GAAG,IAAI,KAAK0hE;AACvD,YAAMhC,YAAYrB,UAAAA;IACpB;IAaAwD,iBAAiBxD,YAAY;AAC3B,YAAM,EAACxgE,KAAKmC,IAAG,IAAI;AACnB,YAAMxB,QAAQ,CAAA;AACd,YAAM0iE,QAAQ,CAAA;AACd,UAAIxiE,IAAGuI,MAAM6I,MAAMiG,MAAMkB;AAEzB,WAAKvY,KAAI,GAAGuI,OAAOo3D,WAAW5/D,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACnDqX,eAAOsoD,WAAW3/D,EAAE;AACpB,YAAIqX,QAAQlY,OAAOkY,QAAQ/V,KAAK;AAC9BxB,gBAAMkB,KAAKqW,IAAAA;;MAEf;AAEA,UAAIvX,MAAMC,SAAS,GAAG;AAEpB,eAAO;UACL;YAAC2/D,MAAMvgE;YAAKyrB,KAAK;UAAC;UAClB;YAAC80C,MAAMp+D;YAAKspB,KAAK;UAAC;QACnB;;AAGH,WAAK5qB,KAAI,GAAGuI,OAAOzI,MAAMC,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CuY,eAAOzY,MAAME,KAAI,CAAE;AACnBoR,eAAOtR,MAAME,KAAI,CAAE;AACnBqX,eAAOvX,MAAME,EAAE;AAGf,YAAId,KAAK+2B,OAAO1d,OAAOnH,QAAQ,CAAA,MAAOiG,MAAM;AAC1CmrD,gBAAMxhE,KAAK;YAAC0+D,MAAMroD;YAAMuT,KAAK5qB,MAAKuI,OAAO;UAAE,CAAA;;MAE/C;AACA,aAAOi6D;IACT;IAQA3B,YAAY;AACV,YAAM1hE,MAAM,KAAKA;AACjB,YAAMmC,MAAM,KAAKA;AACjB,UAAIq+D,aAAa,MAAM2B,kBAAiB;AACxC,UAAI,CAAC3B,WAAWn0C,SAASrsB,GAAAA,KAAQ,CAACwgE,WAAW5/D,QAAQ;AACnD4/D,mBAAW3pD,OAAO,GAAG,GAAG7W,GAAAA;;AAE1B,UAAI,CAACwgE,WAAWn0C,SAASlqB,GAAAA,KAAQq+D,WAAW5/D,WAAW,GAAG;AACxD4/D,mBAAW3+D,KAAKM,GAAAA;;AAElB,aAAOq+D,WAAW1oD,KAAK,CAACC,IAAGlP,OAAMkP,KAAIlP,EAAAA;IACvC;IAOAk7D,yBAAyB;AACvB,UAAIvD,aAAa,KAAK/oD,OAAO/P,OAAO,CAAA;AAEpC,UAAI84D,WAAW5/D,QAAQ;AACrB,eAAO4/D;;AAGT,YAAMx2D,OAAO,KAAKm4D,kBAAiB;AACnC,YAAMzuD,QAAQ,KAAK8tD,mBAAkB;AACrC,UAAIx3D,KAAKpJ,UAAU8S,MAAM9S,QAAQ;AAG/B4/D,qBAAa,KAAK4C,UAAUp5D,KAAK4N,OAAOlE,KAAAA,CAAAA;aACnC;AACL8sD,qBAAax2D,KAAKpJ,SAASoJ,OAAO0J;;AAEpC8sD,mBAAa,KAAK/oD,OAAO/P,MAAM84D;AAE/B,aAAOA;IACT;IAMAuB,mBAAmB16D,OAAO;AACxB,cAAQk3C,aAAY,KAAKqlB,QAAQv8D,KAAS,IAAA,KAAKw8D,WAAW,KAAKC;IACjE;IAMAjmD,iBAAiB8iB,OAAO;AACtB,YAAMgiC,UAAU,KAAKxB;AACrB,YAAMvgC,UAAU,KAAKG,mBAAmBJ,KAAAA,IAASgiC,QAAQ7/D,SAAS6/D,QAAQ36D;AAC1E,aAAOu2C,aAAY,KAAKqlB,QAAQhjC,UAAU,KAAKkjC,cAAc,KAAKD,SAAS,IAAI;IACjF;EACF;;;;;;;;;;MC3JaI,gBAAgB;IAC3Bh8B;IACAn0B;IACAiN;IACAvU;;;;ACrBF,QAAM,SAAS,GAAG,aAAa;AAG/B,MAAO,eAAQ;;;ACgCR,MAAM,aAAa;AAgBnB,MAAM,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,KAAK;AAgBjD,MAAM,UAAU,CAAC;AAOjB,MAAM,qBAAqB;AAO3B,MAAM,oBAAoB;AAO1B,MAAM,uBAAuB;AAO7B,MAAM,qBAAqB;AAO3B,MAAM,uBAAuB;AAwD7B,MAAM,gBAAgB;AActB,MAAM,eAAe,gBAAgB;AAOrC,MAAM,gBAAgB,eAAe;AAOrC,MAAM,gBAAgB,eAAe;AAOrC,MAAM,iBAAiB,gBAAgB;AAOvC,MAAM,mBAAmB,iBAAiB;AAa1C,MAAM,sBAAsB,OAAO,IAAI,mBAAmB;;;AClL1D,WAAS,cAAc,MAAM,OAAO;AACzC,QAAI,OAAO,SAAS,WAAY,QAAO,KAAK,KAAK;AAEjD,QAAI,QAAQ,OAAO,SAAS,YAAY,uBAAuB;AAC7D,aAAO,KAAK,mBAAmB,EAAE,KAAK;AAExC,QAAI,gBAAgB,KAAM,QAAO,IAAI,KAAK,YAAY,KAAK;AAE3D,WAAO,IAAI,KAAK,KAAK;AAAA,EACvB;;;ACNO,WAAS,OAAO,UAAU,SAAS;AAExC,WAAO,cAAc,WAAW,UAAU,QAAQ;AAAA,EACpD;;;ACdO,WAAS,QAAQ,MAAM,QAAQ,SAAS;AAC7C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,QAAI,MAAM,MAAM,EAAG,QAAO,cAAc,SAAS,MAAM,MAAM,GAAG;AAGhE,QAAI,CAAC,OAAQ,QAAO;AAEpB,UAAM,QAAQ,MAAM,QAAQ,IAAI,MAAM;AACtC,WAAO;AAAA,EACT;;;ACLO,WAAS,UAAU,MAAM,QAAQ,SAAS;AAC/C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,QAAI,MAAM,MAAM,EAAG,QAAO,cAAc,SAAS,MAAM,MAAM,GAAG;AAChE,QAAI,CAAC,QAAQ;AAEX,aAAO;AAAA,IACT;AACA,UAAM,aAAa,MAAM,QAAQ;AAUjC,UAAM,oBAAoB,cAAc,SAAS,MAAM,MAAM,MAAM,QAAQ,CAAC;AAC5E,sBAAkB,SAAS,MAAM,SAAS,IAAI,SAAS,GAAG,CAAC;AAC3D,UAAM,cAAc,kBAAkB,QAAQ;AAC9C,QAAI,cAAc,aAAa;AAG7B,aAAO;AAAA,IACT,OAAO;AAQL,YAAM;AAAA,QACJ,kBAAkB,YAAY;AAAA,QAC9B,kBAAkB,SAAS;AAAA,QAC3B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;;;AC3CO,WAAS,gBAAgB,MAAM,QAAQ,SAAS;AACrD,WAAO,cAAc,SAAS,MAAM,MAAM,CAAC,OAAO,IAAI,IAAI,MAAM;AAAA,EAClE;;;ACFO,WAAS,SAAS,MAAM,QAAQ,SAAS;AAC9C,WAAO,gBAAgB,MAAM,SAAS,oBAAoB,OAAO;AAAA,EACnE;;;AC/BA,MAAI,iBAAiB,CAAC;AAEf,WAAS,oBAAoB;AAClC,WAAO;AAAA,EACT;;;AC8BO,WAAS,YAAY,MAAM,SAAS;AACzC,UAAM03D,kBAAiB,kBAAkB;AACzC,UAAM,eACJ,SAAS,gBACT,SAAS,QAAQ,SAAS,gBAC1BA,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,QAAQ,MAAM,eAAe,IAAI,KAAK,MAAM;AAElD,UAAM,QAAQ,MAAM,QAAQ,IAAI,IAAI;AACpC,UAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;;;ACpBO,WAAS,eAAe,MAAM,SAAS;AAC5C,WAAO,YAAY,MAAM,EAAE,GAAG,SAAS,cAAc,EAAE,CAAC;AAAA,EAC1D;;;ACJO,WAAS,eAAe,MAAM,SAAS;AAC5C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,OAAO,MAAM,YAAY;AAE/B,UAAM,4BAA4B,cAAc,OAAO,CAAC;AACxD,8BAA0B,YAAY,OAAO,GAAG,GAAG,CAAC;AACpD,8BAA0B,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7C,UAAM,kBAAkB,eAAe,yBAAyB;AAEhE,UAAM,4BAA4B,cAAc,OAAO,CAAC;AACxD,8BAA0B,YAAY,MAAM,GAAG,CAAC;AAChD,8BAA0B,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7C,UAAM,kBAAkB,eAAe,yBAAyB;AAEhE,QAAI,MAAM,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AAChD,aAAO,OAAO;AAAA,IAChB,WAAW,MAAM,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AACvD,aAAO;AAAA,IACT,OAAO;AACL,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;;;ACpCO,WAAS,gCAAgC,MAAM;AACpD,UAAM,QAAQ,OAAO,IAAI;AACzB,UAAM,UAAU,IAAI;AAAA,MAClB,KAAK;AAAA,QACH,MAAM,YAAY;AAAA,QAClB,MAAM,SAAS;AAAA,QACf,MAAM,QAAQ;AAAA,QACd,MAAM,SAAS;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,MAAM,WAAW;AAAA,QACjB,MAAM,gBAAgB;AAAA,MACxB;AAAA,IACF;AACA,YAAQ,eAAe,MAAM,YAAY,CAAC;AAC1C,WAAO,CAAC,OAAO,CAAC;AAAA,EAClB;;;AC1BO,WAAS,eAAe,YAAY,OAAO;AAChD,UAAM,YAAY,cAAc;AAAA,MAC9B;AAAA,MACA,WAAW,MAAM,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ;AAAA,IAC1D;AACA,WAAO,MAAM,IAAI,SAAS;AAAA,EAC5B;;;ACoBO,WAAS,WAAW,MAAM,SAAS;AACxC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;;;ACQO,WAAS,yBAAyB,WAAW,aAAa,SAAS;AACxE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAEA,UAAM,kBAAkB,WAAW,UAAU;AAC7C,UAAM,oBAAoB,WAAW,YAAY;AAEjD,UAAM,iBACJ,CAAC,kBAAkB,gCAAgC,eAAe;AACpE,UAAM,mBACJ,CAAC,oBAAoB,gCAAgC,iBAAiB;AAKxE,WAAO,KAAK,OAAO,iBAAiB,oBAAoB,iBAAiB;AAAA,EAC3E;;;AC1BO,WAAS,mBAAmB,MAAM,SAAS;AAChD,UAAM,OAAO,eAAe,MAAM,OAAO;AACzC,UAAM,kBAAkB,cAAc,SAAS,MAAM,MAAM,CAAC;AAC5D,oBAAgB,YAAY,MAAM,GAAG,CAAC;AACtC,oBAAgB,SAAS,GAAG,GAAG,GAAG,CAAC;AACnC,WAAO,eAAe,eAAe;AAAA,EACvC;;;ACVO,WAAS,WAAW,MAAM,QAAQ,SAAS;AAChD,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,QAAQ,MAAM,QAAQ,IAAI,SAAS,oBAAoB;AAC7D,WAAO;AAAA,EACT;;;ACLO,WAAS,YAAY,MAAM,QAAQ,SAAS;AACjD,WAAO,UAAU,MAAM,SAAS,GAAG,OAAO;AAAA,EAC5C;;;ACFO,WAAS,WAAW,MAAM,QAAQ,SAAS;AAChD,WAAO,gBAAgB,MAAM,SAAS,KAAM,OAAO;AAAA,EACrD;;;ACFO,WAAS,SAAS,MAAM,QAAQ,SAAS;AAC9C,WAAO,QAAQ,MAAM,SAAS,GAAG,OAAO;AAAA,EAC1C;;;ACFO,WAAS,SAAS,MAAM,QAAQ,SAAS;AAC9C,WAAO,UAAU,MAAM,SAAS,IAAI,OAAO;AAAA,EAC7C;;;ACIO,WAAS,WAAW,UAAU,WAAW;AAC9C,UAAM,OAAO,CAAC,OAAO,QAAQ,IAAI,CAAC,OAAO,SAAS;AAElD,QAAI,OAAO,EAAG,QAAO;AAAA,aACZ,OAAO,EAAG,QAAO;AAG1B,WAAO;AAAA,EACT;;;ACVO,WAAS,OAAO,OAAO;AAC5B,WACE,iBAAiB,QAChB,OAAO,UAAU,YAChB,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,EAEhD;;;ACJO,WAAS,QAAQ,MAAM;AAC5B,WAAO,EAAG,CAAC,OAAO,IAAI,KAAK,OAAO,SAAS,YAAa,MAAM,CAAC,OAAO,IAAI,CAAC;AAAA,EAC7E;;;ACRO,WAAS,2BAA2B,WAAW,aAAa,SAAS;AAC1E,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAEA,UAAM,YAAY,WAAW,YAAY,IAAI,aAAa,YAAY;AACtE,UAAM,aAAa,WAAW,SAAS,IAAI,aAAa,SAAS;AAEjE,WAAO,YAAY,KAAK;AAAA,EAC1B;;;ACXO,WAAS,0BAA0B,WAAW,aAAa,SAAS;AACzE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AACA,WAAO,WAAW,YAAY,IAAI,aAAa,YAAY;AAAA,EAC7D;;;ACyBO,WAAS,iBAAiB,WAAW,aAAa,SAAS;AAChE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAEA,UAAMC,QAAO,gBAAgB,YAAY,YAAY;AACrD,UAAM,aAAa,KAAK;AAAA,MACtB,yBAAyB,YAAY,YAAY;AAAA,IACnD;AAEA,eAAW,QAAQ,WAAW,QAAQ,IAAIA,QAAO,UAAU;AAI3D,UAAM,mBAAmB;AAAA,MACvB,gBAAgB,YAAY,YAAY,MAAM,CAACA;AAAA,IACjD;AAEA,UAAM,SAASA,SAAQ,aAAa;AAEpC,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B;AAMA,WAAS,gBAAgB,WAAW,aAAa;AAC/C,UAAM,OACJ,UAAU,YAAY,IAAI,YAAY,YAAY,KAClD,UAAU,SAAS,IAAI,YAAY,SAAS,KAC5C,UAAU,QAAQ,IAAI,YAAY,QAAQ,KAC1C,UAAU,SAAS,IAAI,YAAY,SAAS,KAC5C,UAAU,WAAW,IAAI,YAAY,WAAW,KAChD,UAAU,WAAW,IAAI,YAAY,WAAW,KAChD,UAAU,gBAAgB,IAAI,YAAY,gBAAgB;AAE5D,QAAI,OAAO,EAAG,QAAO;AACrB,QAAI,OAAO,EAAG,QAAO;AAGrB,WAAO;AAAA,EACT;;;ACxGO,WAAS,kBAAkB,QAAQ;AACxC,WAAO,CAAC,WAAW;AACjB,YAAMC,SAAQ,SAAS,KAAK,MAAM,IAAI,KAAK;AAC3C,YAAM,SAASA,OAAM,MAAM;AAE3B,aAAO,WAAW,IAAI,IAAI;AAAA,IAC5B;AAAA,EACF;;;ACuBO,WAAS,kBAAkB,WAAW,aAAa,SAAS;AACjE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AACA,UAAM,QAAQ,CAAC,aAAa,CAAC,gBAAgB;AAC7C,WAAO,kBAAkB,SAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACdO,WAAS,yBAAyB,WAAW,aAAa;AAC/D,WAAO,CAAC,OAAO,SAAS,IAAI,CAAC,OAAO,WAAW;AAAA,EACjD;;;ACYO,WAAS,oBAAoB,UAAU,WAAW,SAAS;AAChE,UAAM,OACJ,yBAAyB,UAAU,SAAS,IAAI;AAClD,WAAO,kBAAkB,SAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACdO,WAAS,SAAS,MAAM,SAAS;AACtC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,SAAS,IAAI,IAAI,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;;;ACJO,WAAS,WAAW,MAAM,SAAS;AACxC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,QAAQ,MAAM,SAAS;AAC7B,UAAM,YAAY,MAAM,YAAY,GAAG,QAAQ,GAAG,CAAC;AACnD,UAAM,SAAS,IAAI,IAAI,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;;;ACZO,WAAS,iBAAiB,MAAM,SAAS;AAC9C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,WAAO,CAAC,SAAS,OAAO,OAAO,MAAM,CAAC,WAAW,OAAO,OAAO;AAAA,EACjE;;;ACAO,WAAS,mBAAmB,WAAW,aAAa,SAAS;AAClE,UAAM,CAAC,YAAY,kBAAkB,YAAY,IAAI;AAAA,MACnD,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAMC,QAAO,WAAW,kBAAkB,YAAY;AACtD,UAAM,aAAa,KAAK;AAAA,MACtB,2BAA2B,kBAAkB,YAAY;AAAA,IAC3D;AAEA,QAAI,aAAa,EAAG,QAAO;AAE3B,QAAI,iBAAiB,SAAS,MAAM,KAAK,iBAAiB,QAAQ,IAAI;AACpE,uBAAiB,QAAQ,EAAE;AAE7B,qBAAiB,SAAS,iBAAiB,SAAS,IAAIA,QAAO,UAAU;AAEzE,QAAI,qBAAqB,WAAW,kBAAkB,YAAY,MAAM,CAACA;AAEzE,QACE,iBAAiB,UAAU,KAC3B,eAAe,KACf,WAAW,YAAY,YAAY,MAAM,GACzC;AACA,2BAAqB;AAAA,IACvB;AAEA,UAAM,SAASA,SAAQ,aAAa,CAAC;AACrC,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B;;;AC/BO,WAAS,qBAAqB,WAAW,aAAa,SAAS;AACpE,UAAM,OAAO,mBAAmB,WAAW,aAAa,OAAO,IAAI;AACnE,WAAO,kBAAkB,SAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACCO,WAAS,oBAAoB,WAAW,aAAa,SAAS;AACnE,UAAM,OAAO,yBAAyB,WAAW,WAAW,IAAI;AAChE,WAAO,kBAAkB,SAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACcO,WAAS,kBAAkB,WAAW,aAAa,SAAS;AACjE,UAAM,OAAO,iBAAiB,WAAW,aAAa,OAAO,IAAI;AACjE,WAAO,kBAAkB,SAAS,cAAc,EAAE,IAAI;AAAA,EACxD;;;ACvBO,WAAS,kBAAkB,WAAW,aAAa,SAAS;AACjE,UAAM,CAAC,YAAY,YAAY,IAAI;AAAA,MACjC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAIA,UAAMC,QAAO,WAAW,YAAY,YAAY;AAIhD,UAAM,OAAO,KAAK,IAAI,0BAA0B,YAAY,YAAY,CAAC;AAKzE,eAAW,YAAY,IAAI;AAC3B,iBAAa,YAAY,IAAI;AAO7B,UAAM,UAAU,WAAW,YAAY,YAAY,MAAM,CAACA;AAE1D,UAAM,SAASA,SAAQ,OAAO,CAAC;AAG/B,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B;;;AC/BO,WAAS,eAAe,MAAM,SAAS;AAC5C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,eAAe,MAAM,SAAS;AACpC,UAAM,QAAQ,eAAgB,eAAe;AAC7C,UAAM,SAAS,OAAO,CAAC;AACvB,UAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;;;ACNO,WAAS,aAAa,MAAM,SAAS;AAC1C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,QAAQ,CAAC;AACf,UAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;;;ACNO,WAAS,UAAU,MAAM,SAAS;AACvC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,OAAO,MAAM,YAAY;AAC/B,UAAM,YAAY,OAAO,GAAG,GAAG,CAAC;AAChC,UAAM,SAAS,IAAI,IAAI,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;;;ACNO,WAAS,YAAY,MAAM,SAAS;AACzC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,YAAY,MAAM,YAAY,GAAG,GAAG,CAAC;AAC3C,UAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AACzB,WAAO;AAAA,EACT;;;ACLO,WAAS,UAAU,MAAM,SAAS;AACvC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,WAAW,IAAI,IAAI,GAAG;AAC5B,WAAO;AAAA,EACT;;;ACEO,WAAS,UAAU,MAAM,SAAS;AACvC,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,eACJ,SAAS,gBACT,SAAS,QAAQ,SAAS,gBAC1BA,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,MAAM,MAAM,OAAO;AACzB,UAAM,QAAQ,MAAM,eAAe,KAAK,KAAK,KAAK,MAAM;AAExD,UAAM,QAAQ,MAAM,QAAQ,IAAI,IAAI;AACpC,UAAM,SAAS,IAAI,IAAI,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;;;ACtBO,WAAS,YAAY,MAAM,SAAS;AACzC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,WAAW,IAAI,GAAG;AACxB,WAAO;AAAA,EACT;;;ACJO,WAAS,aAAa,MAAM,SAAS;AAC1C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,eAAe,MAAM,SAAS;AACpC,UAAM,QAAQ,eAAgB,eAAe,IAAK;AAClD,UAAM,SAAS,OAAO,CAAC;AACvB,UAAM,SAAS,IAAI,IAAI,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;;;ACPO,WAAS,YAAY,MAAM,SAAS;AACzC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,gBAAgB,GAAG;AACzB,WAAO;AAAA,EACT;;;AChCA,MAAM,uBAAuB;AAAA,IAC3B,kBAAkB;AAAA,MAChB,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,UAAU;AAAA,MACR,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,aAAa;AAAA,IAEb,kBAAkB;AAAA,MAChB,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,UAAU;AAAA,MACR,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,aAAa;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,aAAa;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,cAAc;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,SAAS;AAAA,MACP,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,aAAa;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,cAAc;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AAEO,MAAM,iBAAiB,CAAC,OAAO,OAAO,YAAY;AACvD,QAAI;AAEJ,UAAM,aAAa,qBAAqB,KAAK;AAC7C,QAAI,OAAO,eAAe,UAAU;AAClC,eAAS;AAAA,IACX,WAAW,UAAU,GAAG;AACtB,eAAS,WAAW;AAAA,IACtB,OAAO;AACL,eAAS,WAAW,MAAM,QAAQ,aAAa,MAAM,SAAS,CAAC;AAAA,IACjE;AAEA,QAAI,SAAS,WAAW;AACtB,UAAI,QAAQ,cAAc,QAAQ,aAAa,GAAG;AAChD,eAAO,QAAQ;AAAA,MACjB,OAAO;AACL,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;;;ACpGO,WAAS,kBAAkB,MAAM;AACtC,WAAO,CAAC,UAAU,CAAC,MAAM;AAEvB,YAAM,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI,KAAK;AAC3D,YAAMC,UAAS,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,YAAY;AACpE,aAAOA;AAAA,IACT;AAAA,EACF;;;ACLA,MAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAEA,MAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAEA,MAAM,kBAAkB;AAAA,IACtB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAEO,MAAM,aAAa;AAAA,IACxB,MAAM,kBAAkB;AAAA,MACtB,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAAA,IAED,MAAM,kBAAkB;AAAA,MACtB,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAAA,IAED,UAAU,kBAAkB;AAAA,MAC1B,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;;;ACtCA,MAAM,uBAAuB;AAAA,IAC3B,UAAU;AAAA,IACV,WAAW;AAAA,IACX,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAEO,MAAM,iBAAiB,CAAC,OAAO,OAAO,WAAW,aACtD,qBAAqB,KAAK;;;AC6BrB,WAAS,gBAAgB,MAAM;AACpC,WAAO,CAAC,OAAO,YAAY;AACzB,YAAM,UAAU,SAAS,UAAU,OAAO,QAAQ,OAAO,IAAI;AAE7D,UAAI;AACJ,UAAI,YAAY,gBAAgB,KAAK,kBAAkB;AACrD,cAAM,eAAe,KAAK,0BAA0B,KAAK;AACzD,cAAM,QAAQ,SAAS,QAAQ,OAAO,QAAQ,KAAK,IAAI;AAEvD,sBACE,KAAK,iBAAiB,KAAK,KAAK,KAAK,iBAAiB,YAAY;AAAA,MACtE,OAAO;AACL,cAAM,eAAe,KAAK;AAC1B,cAAM,QAAQ,SAAS,QAAQ,OAAO,QAAQ,KAAK,IAAI,KAAK;AAE5D,sBAAc,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO,YAAY;AAAA,MAC9D;AACA,YAAMC,SAAQ,KAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AAGrE,aAAO,YAAYA,MAAK;AAAA,IAC1B;AAAA,EACF;;;AC3DA,MAAM,YAAY;AAAA,IAChB,QAAQ,CAAC,KAAK,GAAG;AAAA,IACjB,aAAa,CAAC,MAAM,IAAI;AAAA,IACxB,MAAM,CAAC,iBAAiB,aAAa;AAAA,EACvC;AAEA,MAAM,gBAAgB;AAAA,IACpB,QAAQ,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,IACpC,MAAM,CAAC,eAAe,eAAe,eAAe,aAAa;AAAA,EACnE;AAMA,MAAM,cAAc;AAAA,IAClB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IACnE,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAM,YAAY;AAAA,IAChB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IAC1C,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,IAChD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IAC7D,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAM,kBAAkB;AAAA,IACtB,QAAQ;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IACA,aAAa;AAAA,MACX,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,4BAA4B;AAAA,IAChC,QAAQ;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IACA,aAAa;AAAA,MACX,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,gBAAgB,CAAC,aAAa,aAAa;AAC/C,UAAM,SAAS,OAAO,WAAW;AASjC,UAAM,SAAS,SAAS;AACxB,QAAI,SAAS,MAAM,SAAS,IAAI;AAC9B,cAAQ,SAAS,IAAI;AAAA,QACnB,KAAK;AACH,iBAAO,SAAS;AAAA,QAClB,KAAK;AACH,iBAAO,SAAS;AAAA,QAClB,KAAK;AACH,iBAAO,SAAS;AAAA,MACpB;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAEO,MAAM,WAAW;AAAA,IACtB;AAAA,IAEA,KAAK,gBAAgB;AAAA,MACnB,QAAQ;AAAA,MACR,cAAc;AAAA,IAChB,CAAC;AAAA,IAED,SAAS,gBAAgB;AAAA,MACvB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,kBAAkB,CAAC,YAAY,UAAU;AAAA,IAC3C,CAAC;AAAA,IAED,OAAO,gBAAgB;AAAA,MACrB,QAAQ;AAAA,MACR,cAAc;AAAA,IAChB,CAAC;AAAA,IAED,KAAK,gBAAgB;AAAA,MACnB,QAAQ;AAAA,MACR,cAAc;AAAA,IAChB,CAAC;AAAA,IAED,WAAW,gBAAgB;AAAA,MACzB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,wBAAwB;AAAA,IAC1B,CAAC;AAAA,EACH;;;AC1LO,WAAS,aAAa,MAAM;AACjC,WAAO,CAAC,QAAQ,UAAU,CAAC,MAAM;AAC/B,YAAM,QAAQ,QAAQ;AAEtB,YAAM,eACH,SAAS,KAAK,cAAc,KAAK,KAClC,KAAK,cAAc,KAAK,iBAAiB;AAC3C,YAAM,cAAc,OAAO,MAAM,YAAY;AAE7C,UAAI,CAAC,aAAa;AAChB,eAAO;AAAA,MACT;AACA,YAAM,gBAAgB,YAAY,CAAC;AAEnC,YAAM,gBACH,SAAS,KAAK,cAAc,KAAK,KAClC,KAAK,cAAc,KAAK,iBAAiB;AAE3C,YAAM,MAAM,MAAM,QAAQ,aAAa,IACnC,UAAU,eAAe,CAAC,YAAY,QAAQ,KAAK,aAAa,CAAC;AAAA;AAAA,QAEjE,QAAQ,eAAe,CAAC,YAAY,QAAQ,KAAK,aAAa,CAAC;AAAA;AAEnE,UAAI;AAEJ,cAAQ,KAAK,gBAAgB,KAAK,cAAc,GAAG,IAAI;AACvD,cAAQ,QAAQ;AAAA;AAAA,QAEZ,QAAQ,cAAc,KAAK;AAAA,UAC3B;AAEJ,YAAM,OAAO,OAAO,MAAM,cAAc,MAAM;AAE9C,aAAO,EAAE,OAAO,KAAK;AAAA,IACvB;AAAA,EACF;AAEA,WAAS,QAAQ,QAAQ,WAAW;AAClC,eAAW,OAAO,QAAQ;AACxB,UACE,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,KAChD,UAAU,OAAO,GAAG,CAAC,GACrB;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,OAAO,WAAW;AACnC,aAAS,MAAM,GAAG,MAAM,MAAM,QAAQ,OAAO;AAC3C,UAAI,UAAU,MAAM,GAAG,CAAC,GAAG;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;;;ACxDO,WAAS,oBAAoB,MAAM;AACxC,WAAO,CAAC,QAAQ,UAAU,CAAC,MAAM;AAC/B,YAAM,cAAc,OAAO,MAAM,KAAK,YAAY;AAClD,UAAI,CAAC,YAAa,QAAO;AACzB,YAAM,gBAAgB,YAAY,CAAC;AAEnC,YAAM,cAAc,OAAO,MAAM,KAAK,YAAY;AAClD,UAAI,CAAC,YAAa,QAAO;AACzB,UAAI,QAAQ,KAAK,gBACb,KAAK,cAAc,YAAY,CAAC,CAAC,IACjC,YAAY,CAAC;AAGjB,cAAQ,QAAQ,gBAAgB,QAAQ,cAAc,KAAK,IAAI;AAE/D,YAAM,OAAO,OAAO,MAAM,cAAc,MAAM;AAE9C,aAAO,EAAE,OAAO,KAAK;AAAA,IACvB;AAAA,EACF;;;AChBA,MAAM,4BAA4B;AAClC,MAAM,4BAA4B;AAElC,MAAM,mBAAmB;AAAA,IACvB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACA,MAAM,mBAAmB;AAAA,IACvB,KAAK,CAAC,OAAO,SAAS;AAAA,EACxB;AAEA,MAAM,uBAAuB;AAAA,IAC3B,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACA,MAAM,uBAAuB;AAAA,IAC3B,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EAC9B;AAEA,MAAM,qBAAqB;AAAA,IACzB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACA,MAAM,qBAAqB;AAAA,IACzB,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,KAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAM,mBAAmB;AAAA,IACvB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACA,MAAM,mBAAmB;AAAA,IACvB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACxD,KAAK,CAAC,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,EAC3D;AAEA,MAAM,yBAAyB;AAAA,IAC7B,QAAQ;AAAA,IACR,KAAK;AAAA,EACP;AACA,MAAM,yBAAyB;AAAA,IAC7B,KAAK;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AAEO,MAAM,QAAQ;AAAA,IACnB,eAAe,oBAAoB;AAAA,MACjC,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe,CAAC,UAAU,SAAS,OAAO,EAAE;AAAA,IAC9C,CAAC;AAAA,IAED,KAAK,aAAa;AAAA,MAChB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,IAED,SAAS,aAAa;AAAA,MACpB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe,CAACC,WAAUA,SAAQ;AAAA,IACpC,CAAC;AAAA,IAED,OAAO,aAAa;AAAA,MAClB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,IAED,KAAK,aAAa;AAAA,MAChB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,IAED,WAAW,aAAa;AAAA,MACtB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,EACH;;;ACrHO,MAAM,OAAO;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP,cAAc;AAAA,MACd,uBAAuB;AAAA,IACzB;AAAA,EACF;;;ACCO,WAAS,aAAa,MAAM,SAAS;AAC1C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,OAAO,yBAAyB,OAAO,YAAY,KAAK,CAAC;AAC/D,UAAM,YAAY,OAAO;AACzB,WAAO;AAAA,EACT;;;ACFO,WAAS,WAAW,MAAM,SAAS;AACxC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,mBAAmB,KAAK;AAK/D,WAAO,KAAK,MAAM,OAAO,kBAAkB,IAAI;AAAA,EACjD;;;ACMO,WAAS,YAAY,MAAM,SAAS;AACzC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,OAAO,MAAM,YAAY;AAE/B,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,wBACJ,SAAS,yBACT,SAAS,QAAQ,SAAS,yBAC1BA,gBAAe,yBACfA,gBAAe,QAAQ,SAAS,yBAChC;AAEF,UAAM,sBAAsB,cAAc,SAAS,MAAM,MAAM,CAAC;AAChE,wBAAoB,YAAY,OAAO,GAAG,GAAG,qBAAqB;AAClE,wBAAoB,SAAS,GAAG,GAAG,GAAG,CAAC;AACvC,UAAM,kBAAkB,YAAY,qBAAqB,OAAO;AAEhE,UAAM,sBAAsB,cAAc,SAAS,MAAM,MAAM,CAAC;AAChE,wBAAoB,YAAY,MAAM,GAAG,qBAAqB;AAC9D,wBAAoB,SAAS,GAAG,GAAG,GAAG,CAAC;AACvC,UAAM,kBAAkB,YAAY,qBAAqB,OAAO;AAEhE,QAAI,CAAC,SAAS,CAAC,iBAAiB;AAC9B,aAAO,OAAO;AAAA,IAChB,WAAW,CAAC,SAAS,CAAC,iBAAiB;AACrC,aAAO;AAAA,IACT,OAAO;AACL,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;;;AC1BO,WAAS,gBAAgB,MAAM,SAAS;AAC7C,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,wBACJ,SAAS,yBACT,SAAS,QAAQ,SAAS,yBAC1BA,gBAAe,yBACfA,gBAAe,QAAQ,SAAS,yBAChC;AAEF,UAAM,OAAO,YAAY,MAAM,OAAO;AACtC,UAAM,YAAY,cAAc,SAAS,MAAM,MAAM,CAAC;AACtD,cAAU,YAAY,MAAM,GAAG,qBAAqB;AACpD,cAAU,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7B,UAAM,QAAQ,YAAY,WAAW,OAAO;AAC5C,WAAO;AAAA,EACT;;;AClBO,WAAS,QAAQ,MAAM,SAAS;AACrC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,OAAO,CAAC,YAAY,OAAO,OAAO,IAAI,CAAC,gBAAgB,OAAO,OAAO;AAK3E,WAAO,KAAK,MAAM,OAAO,kBAAkB,IAAI;AAAA,EACjD;;;ACnDO,WAAS,gBAAgB,QAAQ,cAAc;AACpD,UAAMC,QAAO,SAAS,IAAI,MAAM;AAChC,UAAM,SAAS,KAAK,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,cAAc,GAAG;AACrE,WAAOA,QAAO;AAAA,EAChB;;;ACWO,MAAM,kBAAkB;AAAA;AAAA,IAE7B,EAAE,MAAM,OAAO;AAUb,YAAM,aAAa,KAAK,YAAY;AAEpC,YAAM,OAAO,aAAa,IAAI,aAAa,IAAI;AAC/C,aAAO,gBAAgB,UAAU,OAAO,OAAO,MAAM,MAAM,MAAM,MAAM;AAAA,IACzE;AAAA;AAAA,IAGA,EAAE,MAAM,OAAO;AACb,YAAM,QAAQ,KAAK,SAAS;AAC5B,aAAO,UAAU,MAAM,OAAO,QAAQ,CAAC,IAAI,gBAAgB,QAAQ,GAAG,CAAC;AAAA,IACzE;AAAA;AAAA,IAGA,EAAE,MAAM,OAAO;AACb,aAAO,gBAAgB,KAAK,QAAQ,GAAG,MAAM,MAAM;AAAA,IACrD;AAAA;AAAA,IAGA,EAAE,MAAM,OAAO;AACb,YAAM,qBAAqB,KAAK,SAAS,IAAI,MAAM,IAAI,OAAO;AAE9D,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,mBAAmB,YAAY;AAAA,QACxC,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO,mBAAmB,CAAC;AAAA,QAC7B,KAAK;AAAA,QACL;AACE,iBAAO,uBAAuB,OAAO,SAAS;AAAA,MAClD;AAAA,IACF;AAAA;AAAA,IAGA,EAAE,MAAM,OAAO;AACb,aAAO,gBAAgB,KAAK,SAAS,IAAI,MAAM,IAAI,MAAM,MAAM;AAAA,IACjE;AAAA;AAAA,IAGA,EAAE,MAAM,OAAO;AACb,aAAO,gBAAgB,KAAK,SAAS,GAAG,MAAM,MAAM;AAAA,IACtD;AAAA;AAAA,IAGA,EAAE,MAAM,OAAO;AACb,aAAO,gBAAgB,KAAK,WAAW,GAAG,MAAM,MAAM;AAAA,IACxD;AAAA;AAAA,IAGA,EAAE,MAAM,OAAO;AACb,aAAO,gBAAgB,KAAK,WAAW,GAAG,MAAM,MAAM;AAAA,IACxD;AAAA;AAAA,IAGA,EAAE,MAAM,OAAO;AACb,YAAM,iBAAiB,MAAM;AAC7B,YAAM,eAAe,KAAK,gBAAgB;AAC1C,YAAM,oBAAoB,KAAK;AAAA,QAC7B,eAAe,KAAK,IAAI,IAAI,iBAAiB,CAAC;AAAA,MAChD;AACA,aAAO,gBAAgB,mBAAmB,MAAM,MAAM;AAAA,IACxD;AAAA,EACF;;;AClFA,MAAM,gBAAgB;AAAA,IACpB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AAgDO,MAAMC,cAAa;AAAA;AAAA,IAExB,GAAG,SAAU,MAAM,OAAOC,WAAU;AAClC,YAAM,MAAM,KAAK,YAAY,IAAI,IAAI,IAAI;AACzC,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,IAAI,KAAK,EAAE,OAAO,cAAc,CAAC;AAAA;AAAA,QAEnD,KAAK;AACH,iBAAOA,UAAS,IAAI,KAAK,EAAE,OAAO,SAAS,CAAC;AAAA;AAAA,QAE9C,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,KAAK,EAAE,OAAO,OAAO,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAElC,UAAI,UAAU,MAAM;AAClB,cAAM,aAAa,KAAK,YAAY;AAEpC,cAAM,OAAO,aAAa,IAAI,aAAa,IAAI;AAC/C,eAAOA,UAAS,cAAc,MAAM,EAAE,MAAM,OAAO,CAAC;AAAA,MACtD;AAEA,aAAO,gBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU,SAAS;AAC3C,YAAM,iBAAiB,YAAY,MAAM,OAAO;AAEhD,YAAM,WAAW,iBAAiB,IAAI,iBAAiB,IAAI;AAG3D,UAAI,UAAU,MAAM;AAClB,cAAM,eAAe,WAAW;AAChC,eAAO,gBAAgB,cAAc,CAAC;AAAA,MACxC;AAGA,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,UAAU,EAAE,MAAM,OAAO,CAAC;AAAA,MAC1D;AAGA,aAAO,gBAAgB,UAAU,MAAM,MAAM;AAAA,IAC/C;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAO;AACxB,YAAM,cAAc,eAAe,IAAI;AAGvC,aAAO,gBAAgB,aAAa,MAAM,MAAM;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWA,GAAG,SAAU,MAAM,OAAO;AACxB,YAAM,OAAO,KAAK,YAAY;AAC9B,aAAO,gBAAgB,MAAM,MAAM,MAAM;AAAA,IAC3C;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,UAAU,KAAK,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC;AACnD,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,OAAO;AAAA;AAAA,QAEvB,KAAK;AACH,iBAAO,gBAAgB,SAAS,CAAC;AAAA;AAAA,QAEnC,KAAK;AACH,iBAAOA,UAAS,cAAc,SAAS,EAAE,MAAM,UAAU,CAAC;AAAA;AAAA,QAE5D,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,UAAU,KAAK,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC;AACnD,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,OAAO;AAAA;AAAA,QAEvB,KAAK;AACH,iBAAO,gBAAgB,SAAS,CAAC;AAAA;AAAA,QAEnC,KAAK;AACH,iBAAOA,UAAS,cAAc,SAAS,EAAE,MAAM,UAAU,CAAC;AAAA;AAAA,QAE5D,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,QAAQ,KAAK,SAAS;AAC5B,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,gBAAgB,EAAE,MAAM,KAAK;AAAA;AAAA,QAEtC,KAAK;AACH,iBAAOA,UAAS,cAAc,QAAQ,GAAG,EAAE,MAAM,QAAQ,CAAC;AAAA;AAAA,QAE5D,KAAK;AACH,iBAAOA,UAAS,MAAM,OAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,MAAM,OAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,MAAM,OAAO,EAAE,OAAO,QAAQ,SAAS,aAAa,CAAC;AAAA,MACzE;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,QAAQ,KAAK,SAAS;AAC5B,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,QAAQ,CAAC;AAAA;AAAA,QAEzB,KAAK;AACH,iBAAO,gBAAgB,QAAQ,GAAG,CAAC;AAAA;AAAA,QAErC,KAAK;AACH,iBAAOA,UAAS,cAAc,QAAQ,GAAG,EAAE,MAAM,QAAQ,CAAC;AAAA;AAAA,QAE5D,KAAK;AACH,iBAAOA,UAAS,MAAM,OAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,MAAM,OAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,MAAM,OAAO,EAAE,OAAO,QAAQ,SAAS,aAAa,CAAC;AAAA,MACzE;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU,SAAS;AAC3C,YAAM,OAAO,QAAQ,MAAM,OAAO;AAElC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,MAAM,EAAE,MAAM,OAAO,CAAC;AAAA,MACtD;AAEA,aAAO,gBAAgB,MAAM,MAAM,MAAM;AAAA,IAC3C;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,UAAU,WAAW,IAAI;AAE/B,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,MACzD;AAEA,aAAO,gBAAgB,SAAS,MAAM,MAAM;AAAA,IAC9C;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,KAAK,QAAQ,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,MAChE;AAEA,aAAO,gBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,YAAY,aAAa,IAAI;AAEnC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AAAA,MAChE;AAEA,aAAO,gBAAgB,WAAW,MAAM,MAAM;AAAA,IAChD;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,YAAY,KAAK,OAAO;AAC9B,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU,SAAS;AAC3C,YAAM,YAAY,KAAK,OAAO;AAC9B,YAAM,kBAAkB,YAAY,QAAQ,eAAe,KAAK,KAAK;AACrE,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,cAAc;AAAA;AAAA,QAE9B,KAAK;AACH,iBAAO,gBAAgB,gBAAgB,CAAC;AAAA;AAAA,QAE1C,KAAK;AACH,iBAAOA,UAAS,cAAc,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAAA,QAC/D,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU,SAAS;AAC3C,YAAM,YAAY,KAAK,OAAO;AAC9B,YAAM,kBAAkB,YAAY,QAAQ,eAAe,KAAK,KAAK;AACrE,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,cAAc;AAAA;AAAA,QAE9B,KAAK;AACH,iBAAO,gBAAgB,gBAAgB,MAAM,MAAM;AAAA;AAAA,QAErD,KAAK;AACH,iBAAOA,UAAS,cAAc,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAAA,QAC/D,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,YAAY,KAAK,OAAO;AAC9B,YAAM,eAAe,cAAc,IAAI,IAAI;AAC3C,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,YAAY;AAAA;AAAA,QAE5B,KAAK;AACH,iBAAO,gBAAgB,cAAc,MAAM,MAAM;AAAA;AAAA,QAEnD,KAAK;AACH,iBAAOA,UAAS,cAAc,cAAc,EAAE,MAAM,MAAM,CAAC;AAAA;AAAA,QAE7D,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,QAAQ,KAAK,SAAS;AAC5B,YAAM,qBAAqB,QAAQ,MAAM,IAAI,OAAO;AAEpD,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AACH,iBAAOA,UACJ,UAAU,oBAAoB;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,EACA,YAAY;AAAA,QACjB,KAAK;AACH,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,QAAQ,KAAK,SAAS;AAC5B,UAAI;AACJ,UAAI,UAAU,IAAI;AAChB,6BAAqB,cAAc;AAAA,MACrC,WAAW,UAAU,GAAG;AACtB,6BAAqB,cAAc;AAAA,MACrC,OAAO;AACL,6BAAqB,QAAQ,MAAM,IAAI,OAAO;AAAA,MAChD;AAEA,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AACH,iBAAOA,UACJ,UAAU,oBAAoB;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,EACA,YAAY;AAAA,QACjB,KAAK;AACH,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,QAAQ,KAAK,SAAS;AAC5B,UAAI;AACJ,UAAI,SAAS,IAAI;AACf,6BAAqB,cAAc;AAAA,MACrC,WAAW,SAAS,IAAI;AACtB,6BAAqB,cAAc;AAAA,MACrC,WAAW,SAAS,GAAG;AACrB,6BAAqB,cAAc;AAAA,MACrC,OAAO;AACL,6BAAqB,cAAc;AAAA,MACrC;AAEA,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AACH,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,UAAI,UAAU,MAAM;AAClB,YAAI,QAAQ,KAAK,SAAS,IAAI;AAC9B,YAAI,UAAU,EAAG,SAAQ;AACzB,eAAOA,UAAS,cAAc,OAAO,EAAE,MAAM,OAAO,CAAC;AAAA,MACvD;AAEA,aAAO,gBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,KAAK,SAAS,GAAG,EAAE,MAAM,OAAO,CAAC;AAAA,MACjE;AAEA,aAAO,gBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,YAAM,QAAQ,KAAK,SAAS,IAAI;AAEhC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,OAAO,EAAE,MAAM,OAAO,CAAC;AAAA,MACvD;AAEA,aAAO,gBAAgB,OAAO,MAAM,MAAM;AAAA,IAC5C;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,UAAI,QAAQ,KAAK,SAAS;AAC1B,UAAI,UAAU,EAAG,SAAQ;AAEzB,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,OAAO,EAAE,MAAM,OAAO,CAAC;AAAA,MACvD;AAEA,aAAO,gBAAgB,OAAO,MAAM,MAAM;AAAA,IAC5C;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,KAAK,WAAW,GAAG,EAAE,MAAM,SAAS,CAAC;AAAA,MACrE;AAEA,aAAO,gBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAOA,WAAU;AAClC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,KAAK,WAAW,GAAG,EAAE,MAAM,SAAS,CAAC;AAAA,MACrE;AAEA,aAAO,gBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAO;AACxB,aAAO,gBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAO,WAAW;AACnC,YAAM,iBAAiB,KAAK,kBAAkB;AAE9C,UAAI,mBAAmB,GAAG;AACxB,eAAO;AAAA,MACT;AAEA,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,kCAAkC,cAAc;AAAA;AAAA;AAAA;AAAA,QAKzD,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,eAAe,cAAc;AAAA;AAAA;AAAA;AAAA,QAKtC,KAAK;AAAA,QACL,KAAK;AAAA;AAAA,QACL;AACE,iBAAO,eAAe,gBAAgB,GAAG;AAAA,MAC7C;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAO,WAAW;AACnC,YAAM,iBAAiB,KAAK,kBAAkB;AAE9C,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,kCAAkC,cAAc;AAAA;AAAA;AAAA;AAAA,QAKzD,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,eAAe,cAAc;AAAA;AAAA;AAAA;AAAA,QAKtC,KAAK;AAAA,QACL,KAAK;AAAA;AAAA,QACL;AACE,iBAAO,eAAe,gBAAgB,GAAG;AAAA,MAC7C;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAO,WAAW;AACnC,YAAM,iBAAiB,KAAK,kBAAkB;AAE9C,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,QAAQ,oBAAoB,gBAAgB,GAAG;AAAA;AAAA,QAExD,KAAK;AAAA,QACL;AACE,iBAAO,QAAQ,eAAe,gBAAgB,GAAG;AAAA,MACrD;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAO,WAAW;AACnC,YAAM,iBAAiB,KAAK,kBAAkB;AAE9C,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,QAAQ,oBAAoB,gBAAgB,GAAG;AAAA;AAAA,QAExD,KAAK;AAAA,QACL;AACE,iBAAO,QAAQ,eAAe,gBAAgB,GAAG;AAAA,MACrD;AAAA,IACF;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAO,WAAW;AACnC,YAAM,YAAY,KAAK,MAAM,CAAC,OAAO,GAAI;AACzC,aAAO,gBAAgB,WAAW,MAAM,MAAM;AAAA,IAChD;AAAA;AAAA,IAGA,GAAG,SAAU,MAAM,OAAO,WAAW;AACnC,aAAO,gBAAgB,CAAC,MAAM,MAAM,MAAM;AAAA,IAC5C;AAAA,EACF;AAEA,WAAS,oBAAoB,QAAQ,YAAY,IAAI;AACnD,UAAMC,QAAO,SAAS,IAAI,MAAM;AAChC,UAAM,YAAY,KAAK,IAAI,MAAM;AACjC,UAAM,QAAQ,KAAK,MAAM,YAAY,EAAE;AACvC,UAAM,UAAU,YAAY;AAC5B,QAAI,YAAY,GAAG;AACjB,aAAOA,QAAO,OAAO,KAAK;AAAA,IAC5B;AACA,WAAOA,QAAO,OAAO,KAAK,IAAI,YAAY,gBAAgB,SAAS,CAAC;AAAA,EACtE;AAEA,WAAS,kCAAkC,QAAQ,WAAW;AAC5D,QAAI,SAAS,OAAO,GAAG;AACrB,YAAMA,QAAO,SAAS,IAAI,MAAM;AAChC,aAAOA,QAAO,gBAAgB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,IACxD;AACA,WAAO,eAAe,QAAQ,SAAS;AAAA,EACzC;AAEA,WAAS,eAAe,QAAQ,YAAY,IAAI;AAC9C,UAAMA,QAAO,SAAS,IAAI,MAAM;AAChC,UAAM,YAAY,KAAK,IAAI,MAAM;AACjC,UAAM,QAAQ,gBAAgB,KAAK,MAAM,YAAY,EAAE,GAAG,CAAC;AAC3D,UAAM,UAAU,gBAAgB,YAAY,IAAI,CAAC;AACjD,WAAOA,QAAO,QAAQ,YAAY;AAAA,EACpC;;;ACvwBA,MAAM,oBAAoB,CAAC,SAASC,gBAAe;AACjD,YAAQ,SAAS;AAAA,MACf,KAAK;AACH,eAAOA,YAAW,KAAK,EAAE,OAAO,QAAQ,CAAC;AAAA,MAC3C,KAAK;AACH,eAAOA,YAAW,KAAK,EAAE,OAAO,SAAS,CAAC;AAAA,MAC5C,KAAK;AACH,eAAOA,YAAW,KAAK,EAAE,OAAO,OAAO,CAAC;AAAA,MAC1C,KAAK;AAAA,MACL;AACE,eAAOA,YAAW,KAAK,EAAE,OAAO,OAAO,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,MAAM,oBAAoB,CAAC,SAASA,gBAAe;AACjD,YAAQ,SAAS;AAAA,MACf,KAAK;AACH,eAAOA,YAAW,KAAK,EAAE,OAAO,QAAQ,CAAC;AAAA,MAC3C,KAAK;AACH,eAAOA,YAAW,KAAK,EAAE,OAAO,SAAS,CAAC;AAAA,MAC5C,KAAK;AACH,eAAOA,YAAW,KAAK,EAAE,OAAO,OAAO,CAAC;AAAA,MAC1C,KAAK;AAAA,MACL;AACE,eAAOA,YAAW,KAAK,EAAE,OAAO,OAAO,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,MAAM,wBAAwB,CAAC,SAASA,gBAAe;AACrD,UAAM,cAAc,QAAQ,MAAM,WAAW,KAAK,CAAC;AACnD,UAAM,cAAc,YAAY,CAAC;AACjC,UAAM,cAAc,YAAY,CAAC;AAEjC,QAAI,CAAC,aAAa;AAChB,aAAO,kBAAkB,SAASA,WAAU;AAAA,IAC9C;AAEA,QAAI;AAEJ,YAAQ,aAAa;AAAA,MACnB,KAAK;AACH,yBAAiBA,YAAW,SAAS,EAAE,OAAO,QAAQ,CAAC;AACvD;AAAA,MACF,KAAK;AACH,yBAAiBA,YAAW,SAAS,EAAE,OAAO,SAAS,CAAC;AACxD;AAAA,MACF,KAAK;AACH,yBAAiBA,YAAW,SAAS,EAAE,OAAO,OAAO,CAAC;AACtD;AAAA,MACF,KAAK;AAAA,MACL;AACE,yBAAiBA,YAAW,SAAS,EAAE,OAAO,OAAO,CAAC;AACtD;AAAA,IACJ;AAEA,WAAO,eACJ,QAAQ,YAAY,kBAAkB,aAAaA,WAAU,CAAC,EAC9D,QAAQ,YAAY,kBAAkB,aAAaA,WAAU,CAAC;AAAA,EACnE;AAEO,MAAM,iBAAiB;AAAA,IAC5B,GAAG;AAAA,IACH,GAAG;AAAA,EACL;;;AC/DA,MAAM,mBAAmB;AACzB,MAAM,kBAAkB;AAExB,MAAM,cAAc,CAAC,KAAK,MAAM,MAAM,MAAM;AAErC,WAAS,0BAA0B,OAAO;AAC/C,WAAO,iBAAiB,KAAK,KAAK;AAAA,EACpC;AAEO,WAAS,yBAAyB,OAAO;AAC9C,WAAO,gBAAgB,KAAK,KAAK;AAAA,EACnC;AAEO,WAAS,0BAA0B,OAAOC,SAAQ,OAAO;AAC9D,UAAM,WAAW,QAAQ,OAAOA,SAAQ,KAAK;AAC7C,YAAQ,KAAK,QAAQ;AACrB,QAAI,YAAY,SAAS,KAAK,EAAG,OAAM,IAAI,WAAW,QAAQ;AAAA,EAChE;AAEA,WAAS,QAAQ,OAAOA,SAAQ,OAAO;AACrC,UAAM,UAAU,MAAM,CAAC,MAAM,MAAM,UAAU;AAC7C,WAAO,SAAS,MAAM,YAAY,CAAC,mBAAmB,KAAK,YAAYA,OAAM,sBAAsB,OAAO,mBAAmB,KAAK;AAAA,EACpI;;;ACKA,MAAM,yBACJ;AAIF,MAAM,6BAA6B;AAEnC,MAAM,sBAAsB;AAC5B,MAAM,oBAAoB;AAC1B,MAAM,gCAAgC;AAoS/B,WAAS,OAAO,MAAM,WAAW,SAAS;AAC/C,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,SAAS,SAAS,UAAUA,gBAAe,UAAU;AAE3D,UAAM,wBACJ,SAAS,yBACT,SAAS,QAAQ,SAAS,yBAC1BA,gBAAe,yBACfA,gBAAe,QAAQ,SAAS,yBAChC;AAEF,UAAM,eACJ,SAAS,gBACT,SAAS,QAAQ,SAAS,gBAC1BA,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,UAAM,eAAe,OAAO,MAAM,SAAS,EAAE;AAE7C,QAAI,CAAC,QAAQ,YAAY,GAAG;AAC1B,YAAM,IAAI,WAAW,oBAAoB;AAAA,IAC3C;AAEA,QAAI,QAAQ,UACT,MAAM,0BAA0B,EAChC,IAAI,CAAC,cAAc;AAClB,YAAM,iBAAiB,UAAU,CAAC;AAClC,UAAI,mBAAmB,OAAO,mBAAmB,KAAK;AACpD,cAAM,gBAAgB,eAAe,cAAc;AACnD,eAAO,cAAc,WAAW,OAAO,UAAU;AAAA,MACnD;AACA,aAAO;AAAA,IACT,CAAC,EACA,KAAK,EAAE,EACP,MAAM,sBAAsB,EAC5B,IAAI,CAAC,cAAc;AAElB,UAAI,cAAc,MAAM;AACtB,eAAO,EAAE,SAAS,OAAO,OAAO,IAAI;AAAA,MACtC;AAEA,YAAM,iBAAiB,UAAU,CAAC;AAClC,UAAI,mBAAmB,KAAK;AAC1B,eAAO,EAAE,SAAS,OAAO,OAAO,mBAAmB,SAAS,EAAE;AAAA,MAChE;AAEA,UAAIC,YAAW,cAAc,GAAG;AAC9B,eAAO,EAAE,SAAS,MAAM,OAAO,UAAU;AAAA,MAC3C;AAEA,UAAI,eAAe,MAAM,6BAA6B,GAAG;AACvD,cAAM,IAAI;AAAA,UACR,mEACE,iBACA;AAAA,QACJ;AAAA,MACF;AAEA,aAAO,EAAE,SAAS,OAAO,OAAO,UAAU;AAAA,IAC5C,CAAC;AAGH,QAAI,OAAO,SAAS,cAAc;AAChC,cAAQ,OAAO,SAAS,aAAa,cAAc,KAAK;AAAA,IAC1D;AAEA,UAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,MACJ,IAAI,CAAC,SAAS;AACb,UAAI,CAAC,KAAK,QAAS,QAAO,KAAK;AAE/B,YAAM,QAAQ,KAAK;AAEnB,UACG,CAAC,SAAS,+BACT,yBAAyB,KAAK,KAC/B,CAAC,SAAS,gCACT,0BAA0B,KAAK,GACjC;AACA,kCAA0B,OAAO,WAAW,OAAO,IAAI,CAAC;AAAA,MAC1D;AAEA,YAAM,YAAYA,YAAW,MAAM,CAAC,CAAC;AACrC,aAAO,UAAU,cAAc,OAAO,OAAO,UAAU,gBAAgB;AAAA,IACzE,CAAC,EACA,KAAK,EAAE;AAAA,EACZ;AAEA,WAAS,mBAAmB,OAAO;AACjC,UAAM,UAAU,MAAM,MAAM,mBAAmB;AAE/C,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AAEA,WAAO,QAAQ,CAAC,EAAE,QAAQ,mBAAmB,GAAG;AAAA,EAClD;;;ACpZO,WAASC,qBAAoB;AAClC,WAAO,OAAO,OAAO,CAAC,GAAG,kBAA0B,CAAC;AAAA,EACtD;;;ACDO,WAAS,UAAU,MAAM,SAAS;AACvC,UAAM,MAAM,OAAO,MAAM,SAAS,EAAE,EAAE,OAAO;AAC7C,WAAO,QAAQ,IAAI,IAAI;AAAA,EACzB;;;ACAO,WAAS,UAAU,MAAM,aAAa;AAC3C,UAAM,QAAQ,cAAc,WAAW,IACnC,IAAI,YAAY,CAAC,IACjB,cAAc,aAAa,CAAC;AAChC,UAAM,YAAY,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AACrE,UAAM;AAAA,MACJ,KAAK,SAAS;AAAA,MACd,KAAK,WAAW;AAAA,MAChB,KAAK,WAAW;AAAA,MAChB,KAAK,gBAAgB;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,aAAa;AAClC,WACE,OAAO,gBAAgB,cACvB,YAAY,WAAW,gBAAgB;AAAA,EAE3C;;;AC9CA,MAAM,yBAAyB;AAExB,MAAM,SAAN,MAAa;AAAA,IAClB,cAAc;AAAA,IAEd,SAAS,UAAU,UAAU;AAC3B,aAAO;AAAA,IACT;AAAA,EACF;AAEO,MAAM,cAAN,cAA0B,OAAO;AAAA,IACtC,YACE,OAEA,eAEA,UAEA,UACA,aACA;AACA,YAAM;AACN,WAAK,QAAQ;AACb,WAAK,gBAAgB;AACrB,WAAK,WAAW;AAChB,WAAK,WAAW;AAChB,UAAI,aAAa;AACf,aAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,SAAS,MAAM,SAAS;AACtB,aAAO,KAAK,cAAc,MAAM,KAAK,OAAO,OAAO;AAAA,IACrD;AAAA,IAEA,IAAI,MAAM,OAAO,SAAS;AACxB,aAAO,KAAK,SAAS,MAAM,OAAO,KAAK,OAAO,OAAO;AAAA,IACvD;AAAA,EACF;AAEO,MAAM,qBAAN,cAAiC,OAAO;AAAA,IAC7C,WAAW;AAAA,IACX,cAAc;AAAA,IAEd,YAAY,SAAS,WAAW;AAC9B,YAAM;AACN,WAAK,UAAU,YAAY,CAAC,SAAS,cAAc,WAAW,IAAI;AAAA,IACpE;AAAA,IAEA,IAAI,MAAM,OAAO;AACf,UAAI,MAAM,eAAgB,QAAO;AACjC,aAAO,cAAc,MAAM,UAAU,MAAM,KAAK,OAAO,CAAC;AAAA,IAC1D;AAAA,EACF;;;ACtDO,MAAM,SAAN,MAAa;AAAA,IAClB,IAAI,YAAY,OAAOC,QAAO,SAAS;AACrC,YAAM,SAAS,KAAK,MAAM,YAAY,OAAOA,QAAO,OAAO;AAC3D,UAAI,CAAC,QAAQ;AACX,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,QACL,QAAQ,IAAI;AAAA,UACV,OAAO;AAAA,UACP,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP;AAAA,QACA,MAAM,OAAO;AAAA,MACf;AAAA,IACF;AAAA,IAEA,SAAS,UAAU,QAAQ,UAAU;AACnC,aAAO;AAAA,IACT;AAAA,EACF;;;ACtBO,MAAM,YAAN,cAAwB,OAAO;AAAA,IACpC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBACEA,OAAM,IAAI,YAAY,EAAE,OAAO,cAAc,CAAC,KAC9CA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,CAAC;AAAA;AAAA,QAI7C,KAAK;AACH,iBAAOA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,CAAC;AAAA;AAAA,QAElD,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,IAAI,YAAY,EAAE,OAAO,OAAO,CAAC,KACvCA,OAAM,IAAI,YAAY,EAAE,OAAO,cAAc,CAAC,KAC9CA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,CAAC;AAAA,MAE/C;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,OAAO,OAAO;AACtB,YAAM,MAAM;AACZ,WAAK,YAAY,OAAO,GAAG,CAAC;AAC5B,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,EAC1C;;;ACtCO,MAAM,kBAAkB;AAAA,IAC7B,OAAO;AAAA;AAAA,IACP,MAAM;AAAA;AAAA,IACN,WAAW;AAAA;AAAA,IACX,MAAM;AAAA;AAAA,IACN,SAAS;AAAA;AAAA,IACT,SAAS;AAAA;AAAA,IACT,SAAS;AAAA;AAAA,IACT,SAAS;AAAA;AAAA,IACT,QAAQ;AAAA;AAAA,IACR,QAAQ;AAAA;AAAA,IAER,aAAa;AAAA;AAAA,IACb,WAAW;AAAA;AAAA,IACX,aAAa;AAAA;AAAA,IACb,YAAY;AAAA;AAAA,IAEZ,iBAAiB;AAAA,IACjB,mBAAmB;AAAA;AAAA,IACnB,iBAAiB;AAAA;AAAA,IACjB,mBAAmB;AAAA;AAAA,IACnB,kBAAkB;AAAA;AAAA,EACpB;AAEO,MAAM,mBAAmB;AAAA,IAC9B,sBAAsB;AAAA,IACtB,OAAO;AAAA,IACP,sBAAsB;AAAA,IACtB,UAAU;AAAA,IACV,yBAAyB;AAAA,EAC3B;;;ACtBO,WAAS,SAAS,eAAe,OAAO;AAC7C,QAAI,CAAC,eAAe;AAClB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL,OAAO,MAAM,cAAc,KAAK;AAAA,MAChC,MAAM,cAAc;AAAA,IACtB;AAAA,EACF;AAEO,WAAS,oBAAoB,SAAS,YAAY;AACvD,UAAM,cAAc,WAAW,MAAM,OAAO;AAE5C,QAAI,CAAC,aAAa;AAChB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL,OAAO,SAAS,YAAY,CAAC,GAAG,EAAE;AAAA,MAClC,MAAM,WAAW,MAAM,YAAY,CAAC,EAAE,MAAM;AAAA,IAC9C;AAAA,EACF;AAEO,WAAS,qBAAqB,SAAS,YAAY;AACxD,UAAM,cAAc,WAAW,MAAM,OAAO;AAE5C,QAAI,CAAC,aAAa;AAChB,aAAO;AAAA,IACT;AAGA,QAAI,YAAY,CAAC,MAAM,KAAK;AAC1B,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM,WAAW,MAAM,CAAC;AAAA,MAC1B;AAAA,IACF;AAEA,UAAMC,QAAO,YAAY,CAAC,MAAM,MAAM,IAAI;AAC1C,UAAM,QAAQ,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAC9D,UAAM,UAAU,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAChE,UAAM,UAAU,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAEhE,WAAO;AAAA,MACL,OACEA,SACC,QAAQ,qBACP,UAAU,uBACV,UAAU;AAAA,MACd,MAAM,WAAW,MAAM,YAAY,CAAC,EAAE,MAAM;AAAA,IAC9C;AAAA,EACF;AAEO,WAAS,qBAAqB,YAAY;AAC/C,WAAO,oBAAoB,gBAAgB,iBAAiB,UAAU;AAAA,EACxE;AAEO,WAAS,aAAaC,IAAG,YAAY;AAC1C,YAAQA,IAAG;AAAA,MACT,KAAK;AACH,eAAO,oBAAoB,gBAAgB,aAAa,UAAU;AAAA,MACpE,KAAK;AACH,eAAO,oBAAoB,gBAAgB,WAAW,UAAU;AAAA,MAClE,KAAK;AACH,eAAO,oBAAoB,gBAAgB,aAAa,UAAU;AAAA,MACpE,KAAK;AACH,eAAO,oBAAoB,gBAAgB,YAAY,UAAU;AAAA,MACnE;AACE,eAAO,oBAAoB,IAAI,OAAO,YAAYA,KAAI,GAAG,GAAG,UAAU;AAAA,IAC1E;AAAA,EACF;AAEO,WAAS,mBAAmBA,IAAG,YAAY;AAChD,YAAQA,IAAG;AAAA,MACT,KAAK;AACH,eAAO,oBAAoB,gBAAgB,mBAAmB,UAAU;AAAA,MAC1E,KAAK;AACH,eAAO,oBAAoB,gBAAgB,iBAAiB,UAAU;AAAA,MACxE,KAAK;AACH,eAAO,oBAAoB,gBAAgB,mBAAmB,UAAU;AAAA,MAC1E,KAAK;AACH,eAAO,oBAAoB,gBAAgB,kBAAkB,UAAU;AAAA,MACzE;AACE,eAAO,oBAAoB,IAAI,OAAO,cAAcA,KAAI,GAAG,GAAG,UAAU;AAAA,IAC5E;AAAA,EACF;AAEO,WAAS,qBAAqB,WAAW;AAC9C,YAAQ,WAAW;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEO,WAAS,sBAAsB,cAAc,aAAa;AAC/D,UAAM,cAAc,cAAc;AAKlC,UAAM,iBAAiB,cAAc,cAAc,IAAI;AAEvD,QAAI;AACJ,QAAI,kBAAkB,IAAI;AACxB,eAAS,gBAAgB;AAAA,IAC3B,OAAO;AACL,YAAM,WAAW,iBAAiB;AAClC,YAAM,kBAAkB,KAAK,MAAM,WAAW,GAAG,IAAI;AACrD,YAAM,oBAAoB,gBAAgB,WAAW;AACrD,eAAS,eAAe,mBAAmB,oBAAoB,MAAM;AAAA,IACvE;AAEA,WAAO,cAAc,SAAS,IAAI;AAAA,EACpC;AAEO,WAAS,gBAAgB,MAAM;AACpC,WAAO,OAAO,QAAQ,KAAM,OAAO,MAAM,KAAK,OAAO,QAAQ;AAAA,EAC/D;;;AC7HO,MAAM,aAAN,cAAyB,OAAO;AAAA,IACrC,WAAW;AAAA,IACX,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IAEtE,MAAM,YAAY,OAAOC,QAAO;AAC9B,YAAM,gBAAgB,CAAC,UAAU;AAAA,QAC/B;AAAA,QACA,gBAAgB,UAAU;AAAA,MAC5B;AAEA,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,SAAS,aAAa,GAAG,UAAU,GAAG,aAAa;AAAA,QAC5D,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;AAAA,QACF;AACE,iBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,MACzE;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,MAAM,kBAAkB,MAAM,OAAO;AAAA,IAC9C;AAAA,IAEA,IAAI,MAAM,OAAO,OAAO;AACtB,YAAM,cAAc,KAAK,YAAY;AAErC,UAAI,MAAM,gBAAgB;AACxB,cAAM,yBAAyB;AAAA,UAC7B,MAAM;AAAA,UACN;AAAA,QACF;AACA,aAAK,YAAY,wBAAwB,GAAG,CAAC;AAC7C,aAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,eAAO;AAAA,MACT;AAEA,YAAM,OACJ,EAAE,SAAS,UAAU,MAAM,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM;AAChE,WAAK,YAAY,MAAM,GAAG,CAAC;AAC3B,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,EACF;;;ACpDO,MAAM,sBAAN,cAAkC,OAAO;AAAA,IAC9C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,YAAM,gBAAgB,CAAC,UAAU;AAAA,QAC/B;AAAA,QACA,gBAAgB,UAAU;AAAA,MAC5B;AAEA,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,SAAS,aAAa,GAAG,UAAU,GAAG,aAAa;AAAA,QAC5D,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;AAAA,QACF;AACE,iBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,MACzE;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,MAAM,kBAAkB,MAAM,OAAO;AAAA,IAC9C;AAAA,IAEA,IAAI,MAAM,OAAO,OAAO,SAAS;AAC/B,YAAM,cAAc,YAAY,MAAM,OAAO;AAE7C,UAAI,MAAM,gBAAgB;AACxB,cAAM,yBAAyB;AAAA,UAC7B,MAAM;AAAA,UACN;AAAA,QACF;AACA,aAAK;AAAA,UACH;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACV;AACA,aAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,eAAO,YAAY,MAAM,OAAO;AAAA,MAClC;AAEA,YAAM,OACJ,EAAE,SAAS,UAAU,MAAM,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM;AAChE,WAAK,YAAY,MAAM,GAAG,QAAQ,qBAAqB;AACvD,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO,YAAY,MAAM,OAAO;AAAA,IAClC;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACpEO,MAAM,oBAAN,cAAgC,OAAO;AAAA,IAC5C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAO;AACvB,UAAI,UAAU,KAAK;AACjB,eAAO,mBAAmB,GAAG,UAAU;AAAA,MACzC;AAEA,aAAO,mBAAmB,MAAM,QAAQ,UAAU;AAAA,IACpD;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,YAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C,sBAAgB,YAAY,OAAO,GAAG,CAAC;AACvC,sBAAgB,SAAS,GAAG,GAAG,GAAG,CAAC;AACnC,aAAO,eAAe,eAAe;AAAA,IACvC;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACtCO,MAAM,qBAAN,cAAiC,OAAO;AAAA,IAC7C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAO;AACvB,UAAI,UAAU,KAAK;AACjB,eAAO,mBAAmB,GAAG,UAAU;AAAA,MACzC;AAEA,aAAO,mBAAmB,MAAM,QAAQ,UAAU;AAAA,IACpD;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,YAAY,OAAO,GAAG,CAAC;AAC5B,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC7E;;;AClBO,MAAM,gBAAN,cAA4B,OAAO;AAAA,IACxC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA;AAAA,QAE9C,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,UAAU,CAAC;AAAA;AAAA,QAE5D,KAAK;AACH,iBACEA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAIL,KAAK;AACH,iBAAOA,OAAM,QAAQ,YAAY;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MAEP;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,UAAU,QAAQ,KAAK,GAAG,CAAC;AAChC,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;AC7EO,MAAM,0BAAN,cAAsC,OAAO;AAAA,IAClD,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA;AAAA,QAE9C,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,UAAU,CAAC;AAAA;AAAA,QAE5D,KAAK;AACH,iBACEA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAIL,KAAK;AACH,iBAAOA,OAAM,QAAQ,YAAY;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,QAAQ,YAAY;AAAA,YACxB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MAEP;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,UAAU,QAAQ,KAAK,GAAG,CAAC;AAChC,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;AC5EO,MAAM,cAAN,cAA0B,OAAO;AAAA,IACtC,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,YAAM,gBAAgB,CAAC,UAAU,QAAQ;AAEzC,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO;AAAA,YACL,oBAAoB,gBAAgB,OAAO,UAAU;AAAA,YACrD;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AACH,iBAAO,SAAS,aAAa,GAAG,UAAU,GAAG,aAAa;AAAA;AAAA,QAE5D,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AACH,iBACEA,OAAM,MAAM,YAAY;AAAA,YACtB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,MAAM,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA;AAAA,QAItE,KAAK;AACH,iBAAOA,OAAM,MAAM,YAAY;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,MAAM,YAAY,EAAE,OAAO,QAAQ,SAAS,aAAa,CAAC,KAChEA,OAAM,MAAM,YAAY;AAAA,YACtB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,MAAM,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA,MAExE;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,SAAS,OAAO,CAAC;AACtB,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,EACF;;;AC/EO,MAAM,wBAAN,cAAoC,OAAO;AAAA,IAChD,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,YAAM,gBAAgB,CAAC,UAAU,QAAQ;AAEzC,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO;AAAA,YACL,oBAAoB,gBAAgB,OAAO,UAAU;AAAA,YACrD;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AACH,iBAAO,SAAS,aAAa,GAAG,UAAU,GAAG,aAAa;AAAA;AAAA,QAE5D,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AACH,iBACEA,OAAM,MAAM,YAAY;AAAA,YACtB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,MAAM,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA;AAAA,QAItE,KAAK;AACH,iBAAOA,OAAM,MAAM,YAAY;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,MAAM,YAAY,EAAE,OAAO,QAAQ,SAAS,aAAa,CAAC,KAChEA,OAAM,MAAM,YAAY;AAAA,YACtB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,MAAM,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA,MAExE;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,SAAS,OAAO,CAAC;AACtB,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACvCO,WAAS,QAAQ,MAAM,MAAM,SAAS;AAC3C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,OAAO,QAAQ,OAAO,OAAO,IAAI;AACvC,UAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,CAAC;AACxC,WAAO,OAAO,OAAO,SAAS,EAAE;AAAA,EAClC;;;AC1CO,MAAM,kBAAN,cAA8B,OAAO;AAAA,IAC1C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,MAAM,UAAU;AAAA,QAC7D,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AAAA,QACzD;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO,SAAS;AAChC,aAAO,YAAY,QAAQ,MAAM,OAAO,OAAO,GAAG,OAAO;AAAA,IAC3D;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACdO,WAAS,WAAW,MAAM,MAAM,SAAS;AAC9C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,OAAO,WAAW,OAAO,OAAO,IAAI;AAC1C,UAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,CAAC;AACxC,WAAO;AAAA,EACT;;;AC5BO,MAAM,gBAAN,cAA4B,OAAO;AAAA,IACxC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,MAAM,UAAU;AAAA,QAC7D,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AAAA,QACzD;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,aAAO,eAAe,WAAW,MAAM,KAAK,CAAC;AAAA,IAC/C;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACrCA,MAAM,gBAAgB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACrE,MAAM,0BAA0B;AAAA,IAC9B;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,IAAI;AAAA,EAC9C;AAGO,MAAM,aAAN,cAAyB,OAAO;AAAA,IACrC,WAAW;AAAA,IACX,cAAc;AAAA,IAEd,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,MAAM,UAAU;AAAA,QAC7D,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AAAA,QACzD;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,MAAM,OAAO;AACpB,YAAM,OAAO,KAAK,YAAY;AAC9B,YAAM,aAAa,gBAAgB,IAAI;AACvC,YAAM,QAAQ,KAAK,SAAS;AAC5B,UAAI,YAAY;AACd,eAAO,SAAS,KAAK,SAAS,wBAAwB,KAAK;AAAA,MAC7D,OAAO;AACL,eAAO,SAAS,KAAK,SAAS,cAAc,KAAK;AAAA,MACnD;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,QAAQ,KAAK;AAClB,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACpDO,MAAM,kBAAN,cAA8B,OAAO;AAAA,IAC1C,WAAW;AAAA,IAEX,cAAc;AAAA,IAEd,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,WAAW,UAAU;AAAA,QAClE,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AAAA,QACzD;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,MAAM,OAAO;AACpB,YAAM,OAAO,KAAK,YAAY;AAC9B,YAAM,aAAa,gBAAgB,IAAI;AACvC,UAAI,YAAY;AACd,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC,OAAO;AACL,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,SAAS,GAAG,KAAK;AACtB,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACxBO,WAAS,OAAO,MAAM,KAAK,SAAS;AACzC,UAAMC,kBAAiB,kBAAkB;AACzC,UAAM,eACJ,SAAS,gBACT,SAAS,QAAQ,SAAS,gBAC1BA,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,aAAa,MAAM,OAAO;AAEhC,UAAM,YAAY,MAAM;AACxB,UAAM,YAAY,YAAY,KAAK;AAEnC,UAAM,QAAQ,IAAI;AAClB,UAAM,OACJ,MAAM,KAAK,MAAM,IACb,OAAQ,aAAa,SAAS,KAC5B,WAAW,SAAS,KAAO,aAAa,SAAS;AACzD,WAAO,QAAQ,OAAO,MAAM,OAAO;AAAA,EACrC;;;ACpDO,MAAM,YAAN,cAAwB,OAAO;AAAA,IACpC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBACEA,OAAM,IAAI,YAAY;AAAA,YACpB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA;AAAA,QAIpE,KAAK;AACH,iBAAOA,OAAM,IAAI,YAAY;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBACEA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA;AAAA,QAIpE,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,IAAI,YAAY,EAAE,OAAO,QAAQ,SAAS,aAAa,CAAC,KAC9DA,OAAM,IAAI,YAAY;AAAA,YACpB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA,MAEtE;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO,SAAS;AAChC,aAAO,OAAO,MAAM,OAAO,OAAO;AAClC,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACpD;;;ACvDO,MAAM,iBAAN,cAA6B,OAAO;AAAA,IACzC,WAAW;AAAA,IACX,MAAM,YAAY,OAAOC,QAAO,SAAS;AACvC,YAAM,gBAAgB,CAAC,UAAU;AAE/B,cAAM,gBAAgB,KAAK,OAAO,QAAQ,KAAK,CAAC,IAAI;AACpD,gBAAS,QAAQ,QAAQ,eAAe,KAAK,IAAK;AAAA,MACpD;AAEA,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAG,aAAa;AAAA;AAAA,QAEvE,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AACH,iBACEA,OAAM,IAAI,YAAY;AAAA,YACpB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA;AAAA,QAIpE,KAAK;AACH,iBAAOA,OAAM,IAAI,YAAY;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBACEA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA;AAAA,QAIpE,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,IAAI,YAAY,EAAE,OAAO,QAAQ,SAAS,aAAa,CAAC,KAC9DA,OAAM,IAAI,YAAY;AAAA,YACpB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA,MAEtE;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO,SAAS;AAChC,aAAO,OAAO,MAAM,OAAO,OAAO;AAClC,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACxFO,MAAM,2BAAN,cAAuC,OAAO;AAAA,IACnD,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO,SAAS;AACvC,YAAM,gBAAgB,CAAC,UAAU;AAE/B,cAAM,gBAAgB,KAAK,OAAO,QAAQ,KAAK,CAAC,IAAI;AACpD,gBAAS,QAAQ,QAAQ,eAAe,KAAK,IAAK;AAAA,MACpD;AAEA,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAG,aAAa;AAAA;AAAA,QAEvE,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,cAAc,YAAY;AAAA,cAC9B,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AACH,iBACEA,OAAM,IAAI,YAAY;AAAA,YACpB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA;AAAA,QAIpE,KAAK;AACH,iBAAOA,OAAM,IAAI,YAAY;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBACEA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA;AAAA,QAIpE,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,IAAI,YAAY,EAAE,OAAO,QAAQ,SAAS,aAAa,CAAC,KAC9DA,OAAM,IAAI,YAAY;AAAA,YACpB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS,SAAS,aAAa,CAAC,KAC/DA,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU,SAAS,aAAa,CAAC;AAAA,MAEtE;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO,SAAS;AAChC,aAAO,OAAO,MAAM,OAAO,OAAO;AAClC,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;AC/DO,WAAS,UAAU,MAAM,KAAK,SAAS;AAC5C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,aAAa,UAAU,OAAO,OAAO;AAC3C,UAAM,OAAO,MAAM;AACnB,WAAO,QAAQ,OAAO,MAAM,OAAO;AAAA,EACrC;;;AC/BO,MAAM,eAAN,cAA2B,OAAO;AAAA,IACvC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,YAAM,gBAAgB,CAAC,UAAU;AAC/B,YAAI,UAAU,GAAG;AACf,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAEA,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA;AAAA,QAE9C,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,MAAM,CAAC;AAAA;AAAA,QAExD,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KACCA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KACDA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,YACH;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,YACD;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AACH,iBAAO;AAAA,YACLA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KACCA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,YACH;AAAA,UACF;AAAA;AAAA,QAEF,KAAK;AAAA,QACL;AACE,iBAAO;AAAA,YACLA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KACCA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KACDA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KACDA,OAAM,IAAI,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,YACH;AAAA,UACF;AAAA,MACJ;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,aAAO,UAAU,MAAM,KAAK;AAC5B,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;AChHO,MAAM,aAAN,cAAyB,OAAO;AAAA,IACrC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBACEA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAGL,KAAK;AACH,iBAAOA,OAAM,UAAU,YAAY;AAAA,YACjC,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MAEP;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,SAAS,qBAAqB,KAAK,GAAG,GAAG,GAAG,CAAC;AAClD,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACpD;;;ACjDO,MAAM,qBAAN,cAAiC,OAAO;AAAA,IAC7C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBACEA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAGL,KAAK;AACH,iBAAOA,OAAM,UAAU,YAAY;AAAA,YACjC,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MAEP;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,SAAS,qBAAqB,KAAK,GAAG,GAAG,GAAG,CAAC;AAClD,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACpD;;;AChDO,MAAM,kBAAN,cAA8B,OAAO;AAAA,IAC1C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBACEA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QAGL,KAAK;AACH,iBAAOA,OAAM,UAAU,YAAY;AAAA,YACjC,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,KAAK;AAAA,QACL;AACE,iBACEA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,KACDA,OAAM,UAAU,YAAY;AAAA,YAC1B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MAEP;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,SAAS,qBAAqB,KAAK,GAAG,GAAG,GAAG,CAAC;AAClD,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,EAC1C;;;ACjDO,MAAM,kBAAN,cAA8B,OAAO;AAAA,IAC1C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,SAAS,UAAU;AAAA,QAChE,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AAAA,QACzD;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,YAAM,OAAO,KAAK,SAAS,KAAK;AAChC,UAAI,QAAQ,QAAQ,IAAI;AACtB,aAAK,SAAS,QAAQ,IAAI,GAAG,GAAG,CAAC;AAAA,MACnC,WAAW,CAAC,QAAQ,UAAU,IAAI;AAChC,aAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,MAC1B,OAAO;AACL,aAAK,SAAS,OAAO,GAAG,GAAG,CAAC;AAAA,MAC9B;AACA,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC/C;;;AC/BO,MAAM,kBAAN,cAA8B,OAAO;AAAA,IAC1C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,SAAS,UAAU;AAAA,QAChE,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AAAA,QACzD;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,SAAS,OAAO,GAAG,GAAG,CAAC;AAC5B,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACzD;;;ACxBO,MAAM,kBAAN,cAA8B,OAAO;AAAA,IAC1C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,SAAS,UAAU;AAAA,QAChE,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AAAA,QACzD;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,YAAM,OAAO,KAAK,SAAS,KAAK;AAChC,UAAI,QAAQ,QAAQ,IAAI;AACtB,aAAK,SAAS,QAAQ,IAAI,GAAG,GAAG,CAAC;AAAA,MACnC,OAAO;AACL,aAAK,SAAS,OAAO,GAAG,GAAG,CAAC;AAAA,MAC9B;AACA,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC/C;;;AC7BO,MAAM,kBAAN,cAA8B,OAAO;AAAA,IAC1C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,SAAS,UAAU;AAAA,QAChE,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,OAAO,CAAC;AAAA,QACzD;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,YAAM,QAAQ,SAAS,KAAK,QAAQ,KAAK;AACzC,WAAK,SAAS,OAAO,GAAG,GAAG,CAAC;AAC5B,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACzD;;;ACzBO,MAAM,eAAN,cAA2B,OAAO;AAAA,IACvC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,QAAQ,UAAU;AAAA,QAC/D,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,SAAS,CAAC;AAAA,QAC3D;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,WAAW,OAAO,GAAG,CAAC;AAC3B,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,GAAG;AAAA,EAChC;;;ACxBO,MAAM,eAAN,cAA2B,OAAO;AAAA,IACvC,WAAW;AAAA,IAEX,MAAM,YAAY,OAAOC,QAAO;AAC9B,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO,oBAAoB,gBAAgB,QAAQ,UAAU;AAAA,QAC/D,KAAK;AACH,iBAAOA,OAAM,cAAc,YAAY,EAAE,MAAM,SAAS,CAAC;AAAA,QAC3D;AACE,iBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,SAAS,OAAO,OAAO;AACrB,aAAO,SAAS,KAAK,SAAS;AAAA,IAChC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,WAAW,OAAO,CAAC;AACxB,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,GAAG;AAAA,EAChC;;;ACzBO,MAAM,yBAAN,cAAqC,OAAO;AAAA,IACjD,WAAW;AAAA,IAEX,MAAM,YAAY,OAAO;AACvB,YAAM,gBAAgB,CAAC,UACrB,KAAK,MAAM,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AACpD,aAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAG,aAAa;AAAA,IACvE;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,WAAK,gBAAgB,KAAK;AAC1B,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,CAAC,KAAK,GAAG;AAAA,EAChC;;;ACXO,MAAM,yBAAN,cAAqC,OAAO;AAAA,IACjD,WAAW;AAAA,IAEX,MAAM,YAAY,OAAO;AACvB,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB;AAAA,UACF;AAAA,QACF,KAAK;AACH,iBAAO,qBAAqB,iBAAiB,OAAO,UAAU;AAAA,QAChE,KAAK;AACH,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB;AAAA,UACF;AAAA,QACF,KAAK;AACH,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB;AAAA,UACF;AAAA,QACF,KAAK;AAAA,QACL;AACE,iBAAO,qBAAqB,iBAAiB,UAAU,UAAU;AAAA,MACrE;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,OAAO,OAAO;AACtB,UAAI,MAAM,eAAgB,QAAO;AACjC,aAAO;AAAA,QACL;AAAA,QACA,KAAK,QAAQ,IAAI,gCAAgC,IAAI,IAAI;AAAA,MAC3D;AAAA,IACF;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,GAAG;AAAA,EACrC;;;ACrCO,MAAM,oBAAN,cAAgC,OAAO;AAAA,IAC5C,WAAW;AAAA,IAEX,MAAM,YAAY,OAAO;AACvB,cAAQ,OAAO;AAAA,QACb,KAAK;AACH,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB;AAAA,UACF;AAAA,QACF,KAAK;AACH,iBAAO,qBAAqB,iBAAiB,OAAO,UAAU;AAAA,QAChE,KAAK;AACH,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB;AAAA,UACF;AAAA,QACF,KAAK;AACH,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB;AAAA,UACF;AAAA,QACF,KAAK;AAAA,QACL;AACE,iBAAO,qBAAqB,iBAAiB,UAAU,UAAU;AAAA,MACrE;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,OAAO,OAAO;AACtB,UAAI,MAAM,eAAgB,QAAO;AACjC,aAAO;AAAA,QACL;AAAA,QACA,KAAK,QAAQ,IAAI,gCAAgC,IAAI,IAAI;AAAA,MAC3D;AAAA,IACF;AAAA,IAEA,qBAAqB,CAAC,KAAK,KAAK,GAAG;AAAA,EACrC;;;ACxCO,MAAM,yBAAN,cAAqC,OAAO;AAAA,IACjD,WAAW;AAAA,IAEX,MAAM,YAAY;AAChB,aAAO,qBAAqB,UAAU;AAAA,IACxC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,aAAO,CAAC,cAAc,MAAM,QAAQ,GAAI,GAAG,EAAE,gBAAgB,KAAK,CAAC;AAAA,IACrE;AAAA,IAEA,qBAAqB;AAAA,EACvB;;;ACZO,MAAM,8BAAN,cAA0C,OAAO;AAAA,IACtD,WAAW;AAAA,IAEX,MAAM,YAAY;AAChB,aAAO,qBAAqB,UAAU;AAAA,IACxC;AAAA,IAEA,IAAI,MAAM,QAAQ,OAAO;AACvB,aAAO,CAAC,cAAc,MAAM,KAAK,GAAG,EAAE,gBAAgB,KAAK,CAAC;AAAA,IAC9D;AAAA,IAEA,qBAAqB;AAAA,EACvB;;;AC0DO,MAAM,UAAU;AAAA,IACrB,GAAG,IAAI,UAAU;AAAA,IACjB,GAAG,IAAI,WAAW;AAAA,IAClB,GAAG,IAAI,oBAAoB;AAAA,IAC3B,GAAG,IAAI,kBAAkB;AAAA,IACzB,GAAG,IAAI,mBAAmB;AAAA,IAC1B,GAAG,IAAI,cAAc;AAAA,IACrB,GAAG,IAAI,wBAAwB;AAAA,IAC/B,GAAG,IAAI,YAAY;AAAA,IACnB,GAAG,IAAI,sBAAsB;AAAA,IAC7B,GAAG,IAAI,gBAAgB;AAAA,IACvB,GAAG,IAAI,cAAc;AAAA,IACrB,GAAG,IAAI,WAAW;AAAA,IAClB,GAAG,IAAI,gBAAgB;AAAA,IACvB,GAAG,IAAI,UAAU;AAAA,IACjB,GAAG,IAAI,eAAe;AAAA,IACtB,GAAG,IAAI,yBAAyB;AAAA,IAChC,GAAG,IAAI,aAAa;AAAA,IACpB,GAAG,IAAI,WAAW;AAAA,IAClB,GAAG,IAAI,mBAAmB;AAAA,IAC1B,GAAG,IAAI,gBAAgB;AAAA,IACvB,GAAG,IAAI,gBAAgB;AAAA,IACvB,GAAG,IAAI,gBAAgB;AAAA,IACvB,GAAG,IAAI,gBAAgB;AAAA,IACvB,GAAG,IAAI,gBAAgB;AAAA,IACvB,GAAG,IAAI,aAAa;AAAA,IACpB,GAAG,IAAI,aAAa;AAAA,IACpB,GAAG,IAAI,uBAAuB;AAAA,IAC9B,GAAG,IAAI,uBAAuB;AAAA,IAC9B,GAAG,IAAI,kBAAkB;AAAA,IACzB,GAAG,IAAI,uBAAuB;AAAA,IAC9B,GAAG,IAAI,4BAA4B;AAAA,EACrC;;;AC1EA,MAAMC,0BACJ;AAIF,MAAMC,8BAA6B;AAEnC,MAAMC,uBAAsB;AAC5B,MAAMC,qBAAoB;AAE1B,MAAM,sBAAsB;AAC5B,MAAMC,iCAAgC;AA4S/B,WAASC,OAAM,SAAS,WAAW,eAAe,SAAS;AAChE,UAAM,cAAc,MAAM,cAAc,SAAS,MAAM,eAAe,GAAG;AACzE,UAAMC,kBAAiBC,mBAAkB;AACzC,UAAM,SAAS,SAAS,UAAUD,gBAAe,UAAU;AAE3D,UAAM,wBACJ,SAAS,yBACT,SAAS,QAAQ,SAAS,yBAC1BA,gBAAe,yBACfA,gBAAe,QAAQ,SAAS,yBAChC;AAEF,UAAM,eACJ,SAAS,gBACT,SAAS,QAAQ,SAAS,gBAC1BA,gBAAe,gBACfA,gBAAe,QAAQ,SAAS,gBAChC;AAEF,QAAI,CAAC;AACH,aAAO,UAAU,YAAY,IAAI,OAAO,eAAe,SAAS,EAAE;AAEpE,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAIA,UAAM,UAAU,CAAC,IAAI,mBAAmB,SAAS,IAAI,aAAa,CAAC;AAEnE,UAAM,SAAS,UACZ,MAAML,2BAA0B,EAChC,IAAI,CAAC,cAAc;AAClB,YAAM,iBAAiB,UAAU,CAAC;AAClC,UAAI,kBAAkB,gBAAgB;AACpC,cAAM,gBAAgB,eAAe,cAAc;AACnD,eAAO,cAAc,WAAW,OAAO,UAAU;AAAA,MACnD;AACA,aAAO;AAAA,IACT,CAAC,EACA,KAAK,EAAE,EACP,MAAMD,uBAAsB;AAE/B,UAAM,aAAa,CAAC;AAEpB,aAAS,SAAS,QAAQ;AACxB,UACE,CAAC,SAAS,+BACV,yBAAyB,KAAK,GAC9B;AACA,kCAA0B,OAAO,WAAW,OAAO;AAAA,MACrD;AACA,UACE,CAAC,SAAS,gCACV,0BAA0B,KAAK,GAC/B;AACA,kCAA0B,OAAO,WAAW,OAAO;AAAA,MACrD;AAEA,YAAM,iBAAiB,MAAM,CAAC;AAC9B,YAAM,SAAS,QAAQ,cAAc;AACrC,UAAI,QAAQ;AACV,cAAM,EAAE,mBAAmB,IAAI;AAC/B,YAAI,MAAM,QAAQ,kBAAkB,GAAG;AACrC,gBAAM,oBAAoB,WAAW;AAAA,YACnC,CAAC,cACC,mBAAmB,SAAS,UAAU,KAAK,KAC3C,UAAU,UAAU;AAAA,UACxB;AACA,cAAI,mBAAmB;AACrB,kBAAM,IAAI;AAAA,cACR,uCAAuC,kBAAkB,SAAS,YAAY,KAAK;AAAA,YACrF;AAAA,UACF;AAAA,QACF,WAAW,OAAO,uBAAuB,OAAO,WAAW,SAAS,GAAG;AACrE,gBAAM,IAAI;AAAA,YACR,uCAAuC,KAAK;AAAA,UAC9C;AAAA,QACF;AAEA,mBAAW,KAAK,EAAE,OAAO,gBAAgB,WAAW,MAAM,CAAC;AAE3D,cAAM,cAAc,OAAO;AAAA,UACzB;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP;AAAA,QACF;AAEA,YAAI,CAAC,aAAa;AAChB,iBAAO,YAAY;AAAA,QACrB;AAEA,gBAAQ,KAAK,YAAY,MAAM;AAE/B,kBAAU,YAAY;AAAA,MACxB,OAAO;AACL,YAAI,eAAe,MAAMI,8BAA6B,GAAG;AACvD,gBAAM,IAAI;AAAA,YACR,mEACE,iBACA;AAAA,UACJ;AAAA,QACF;AAGA,YAAI,UAAU,MAAM;AAClB,kBAAQ;AAAA,QACV,WAAW,mBAAmB,KAAK;AACjC,kBAAQI,oBAAmB,KAAK;AAAA,QAClC;AAGA,YAAI,QAAQ,QAAQ,KAAK,MAAM,GAAG;AAChC,oBAAU,QAAQ,MAAM,MAAM,MAAM;AAAA,QACtC,OAAO;AACL,iBAAO,YAAY;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAGA,QAAI,QAAQ,SAAS,KAAK,oBAAoB,KAAK,OAAO,GAAG;AAC3D,aAAO,YAAY;AAAA,IACrB;AAEA,UAAM,wBAAwB,QAC3B,IAAI,CAAC,WAAW,OAAO,QAAQ,EAC/B,KAAK,CAACC,IAAGC,OAAMA,KAAID,EAAC,EACpB,OAAO,CAAC,UAAUE,QAAO,UAAU,MAAM,QAAQ,QAAQ,MAAMA,MAAK,EACpE;AAAA,MAAI,CAAC,aACJ,QACG,OAAO,CAAC,WAAW,OAAO,aAAa,QAAQ,EAC/C,KAAK,CAACF,IAAGC,OAAMA,GAAE,cAAcD,GAAE,WAAW;AAAA,IACjD,EACC,IAAI,CAAC,gBAAgB,YAAY,CAAC,CAAC;AAEtC,QAAI,OAAO,OAAO,eAAe,SAAS,EAAE;AAE5C,QAAI,MAAM,CAAC,IAAI,EAAG,QAAO,YAAY;AAErC,UAAM,QAAQ,CAAC;AACf,eAAW,UAAU,uBAAuB;AAC1C,UAAI,CAAC,OAAO,SAAS,MAAM,YAAY,GAAG;AACxC,eAAO,YAAY;AAAA,MACrB;AAEA,YAAM,SAAS,OAAO,IAAI,MAAM,OAAO,YAAY;AAEnD,UAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,eAAO,OAAO,CAAC;AACf,eAAO,OAAO,OAAO,OAAO,CAAC,CAAC;AAAA,MAEhC,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAASD,oBAAmB,OAAO;AACjC,WAAO,MAAM,MAAMN,oBAAmB,EAAE,CAAC,EAAE,QAAQC,oBAAmB,GAAG;AAAA,EAC3E;;;ACjeO,WAAS,YAAY,MAAM,SAAS;AACzC,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,WAAW,GAAG,GAAG,CAAC;AACxB,WAAO;AAAA,EACT;;;ACJO,WAAS,cAAc,MAAM,SAAS;AAC3C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,WAAW,GAAG,CAAC;AACrB,WAAO;AAAA,EACT;;;ACJO,WAAS,cAAc,MAAM,SAAS;AAC3C,UAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AACtC,UAAM,gBAAgB,CAAC;AACvB,WAAO;AAAA,EACT;;;ACYO,WAAS,SAAS,UAAU,SAAS;AAC1C,UAAM,cAAc,MAAM,cAAc,SAAS,IAAI,GAAG;AAExD,UAAM,mBAAmB,SAAS,oBAAoB;AACtD,UAAM,cAAc,gBAAgB,QAAQ;AAE5C,QAAI;AACJ,QAAI,YAAY,MAAM;AACpB,YAAM,kBAAkB,UAAU,YAAY,MAAM,gBAAgB;AACpE,aAAO,UAAU,gBAAgB,gBAAgB,gBAAgB,IAAI;AAAA,IACvE;AAEA,QAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,EAAG,QAAO,YAAY;AAE9C,UAAM,YAAY,CAAC;AACnB,QAAI,OAAO;AACX,QAAI;AAEJ,QAAI,YAAY,MAAM;AACpB,aAAO,UAAU,YAAY,IAAI;AACjC,UAAI,MAAM,IAAI,EAAG,QAAO,YAAY;AAAA,IACtC;AAEA,QAAI,YAAY,UAAU;AACxB,eAAS,cAAc,YAAY,QAAQ;AAC3C,UAAI,MAAM,MAAM,EAAG,QAAO,YAAY;AAAA,IACxC,OAAO;AACL,YAAM,UAAU,IAAI,KAAK,YAAY,IAAI;AACzC,YAAM,SAAS,OAAO,GAAG,SAAS,EAAE;AACpC,aAAO;AAAA,QACL,QAAQ,eAAe;AAAA,QACvB,QAAQ,YAAY;AAAA,QACpB,QAAQ,WAAW;AAAA,MACrB;AACA,aAAO;AAAA,QACL,QAAQ,YAAY;AAAA,QACpB,QAAQ,cAAc;AAAA,QACtB,QAAQ,cAAc;AAAA,QACtB,QAAQ,mBAAmB;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AAEA,WAAO,OAAO,YAAY,OAAO,QAAQ,SAAS,EAAE;AAAA,EACtD;AAEA,MAAM,WAAW;AAAA,IACf,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,UAAU;AAAA,EACZ;AAEA,MAAM,YACJ;AACF,MAAM,YACJ;AACF,MAAM,gBAAgB;AAEtB,WAAS,gBAAgB,YAAY;AACnC,UAAM,cAAc,CAAC;AACrB,UAAM,QAAQ,WAAW,MAAM,SAAS,iBAAiB;AACzD,QAAI;AAIJ,QAAI,MAAM,SAAS,GAAG;AACpB,aAAO;AAAA,IACT;AAEA,QAAI,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG;AACtB,mBAAa,MAAM,CAAC;AAAA,IACtB,OAAO;AACL,kBAAY,OAAO,MAAM,CAAC;AAC1B,mBAAa,MAAM,CAAC;AACpB,UAAI,SAAS,kBAAkB,KAAK,YAAY,IAAI,GAAG;AACrD,oBAAY,OAAO,WAAW,MAAM,SAAS,iBAAiB,EAAE,CAAC;AACjE,qBAAa,WAAW;AAAA,UACtB,YAAY,KAAK;AAAA,UACjB,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAEA,QAAI,YAAY;AACd,YAAM,QAAQ,SAAS,SAAS,KAAK,UAAU;AAC/C,UAAI,OAAO;AACT,oBAAY,OAAO,WAAW,QAAQ,MAAM,CAAC,GAAG,EAAE;AAClD,oBAAY,WAAW,MAAM,CAAC;AAAA,MAChC,OAAO;AACL,oBAAY,OAAO;AAAA,MACrB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,YAAY,kBAAkB;AAC/C,UAAM,QAAQ,IAAI;AAAA,MAChB,0BACG,IAAI,oBACL,yBACC,IAAI,oBACL;AAAA,IACJ;AAEA,UAAM,WAAW,WAAW,MAAM,KAAK;AAEvC,QAAI,CAAC,SAAU,QAAO,EAAE,MAAM,KAAK,gBAAgB,GAAG;AAEtD,UAAM,OAAO,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,IAAI;AACnD,UAAM,UAAU,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,IAAI;AAGtD,WAAO;AAAA,MACL,MAAM,YAAY,OAAO,OAAO,UAAU;AAAA,MAC1C,gBAAgB,WAAW,OAAO,SAAS,CAAC,KAAK,SAAS,CAAC,GAAG,MAAM;AAAA,IACtE;AAAA,EACF;AAEA,WAAS,UAAU,YAAY,MAAM;AAEnC,QAAI,SAAS,KAAM,QAAO,oBAAI,KAAK,GAAG;AAEtC,UAAM,WAAW,WAAW,MAAM,SAAS;AAE3C,QAAI,CAAC,SAAU,QAAO,oBAAI,KAAK,GAAG;AAElC,UAAM,aAAa,CAAC,CAAC,SAAS,CAAC;AAC/B,UAAM,YAAY,cAAc,SAAS,CAAC,CAAC;AAC3C,UAAM,QAAQ,cAAc,SAAS,CAAC,CAAC,IAAI;AAC3C,UAAM,MAAM,cAAc,SAAS,CAAC,CAAC;AACrC,UAAM,OAAO,cAAc,SAAS,CAAC,CAAC;AACtC,UAAM,YAAY,cAAc,SAAS,CAAC,CAAC,IAAI;AAE/C,QAAI,YAAY;AACd,UAAI,CAAC,iBAAiB,MAAM,MAAM,SAAS,GAAG;AAC5C,eAAO,oBAAI,KAAK,GAAG;AAAA,MACrB;AACA,aAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,IAC/C,OAAO;AACL,YAAM,OAAO,oBAAI,KAAK,CAAC;AACvB,UACE,CAAC,aAAa,MAAM,OAAO,GAAG,KAC9B,CAAC,sBAAsB,MAAM,SAAS,GACtC;AACA,eAAO,oBAAI,KAAK,GAAG;AAAA,MACrB;AACA,WAAK,eAAe,MAAM,OAAO,KAAK,IAAI,WAAW,GAAG,CAAC;AACzD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,cAAc,OAAO;AAC5B,WAAO,QAAQ,SAAS,KAAK,IAAI;AAAA,EACnC;AAEA,WAAS,UAAU,YAAY;AAC7B,UAAM,WAAW,WAAW,MAAM,SAAS;AAC3C,QAAI,CAAC,SAAU,QAAO;AAEtB,UAAM,QAAQ,cAAc,SAAS,CAAC,CAAC;AACvC,UAAM,UAAU,cAAc,SAAS,CAAC,CAAC;AACzC,UAAM,UAAU,cAAc,SAAS,CAAC,CAAC;AAEzC,QAAI,CAAC,aAAa,OAAO,SAAS,OAAO,GAAG;AAC1C,aAAO;AAAA,IACT;AAEA,WACE,QAAQ,qBAAqB,UAAU,uBAAuB,UAAU;AAAA,EAE5E;AAEA,WAAS,cAAc,OAAO;AAC5B,WAAQ,SAAS,WAAW,MAAM,QAAQ,KAAK,GAAG,CAAC,KAAM;AAAA,EAC3D;AAEA,WAAS,cAAc,gBAAgB;AACrC,QAAI,mBAAmB,IAAK,QAAO;AAEnC,UAAM,WAAW,eAAe,MAAM,aAAa;AACnD,QAAI,CAAC,SAAU,QAAO;AAEtB,UAAMS,QAAO,SAAS,CAAC,MAAM,MAAM,KAAK;AACxC,UAAM,QAAQ,SAAS,SAAS,CAAC,CAAC;AAClC,UAAM,UAAW,SAAS,CAAC,KAAK,SAAS,SAAS,CAAC,CAAC,KAAM;AAE1D,QAAI,CAAC,iBAAiB,OAAO,OAAO,GAAG;AACrC,aAAO;AAAA,IACT;AAEA,WAAOA,SAAQ,QAAQ,qBAAqB,UAAU;AAAA,EACxD;AAEA,WAAS,iBAAiB,aAAa,MAAM,KAAK;AAChD,UAAM,OAAO,oBAAI,KAAK,CAAC;AACvB,SAAK,eAAe,aAAa,GAAG,CAAC;AACrC,UAAM,qBAAqB,KAAK,UAAU,KAAK;AAC/C,UAAM,QAAQ,OAAO,KAAK,IAAI,MAAM,IAAI;AACxC,SAAK,WAAW,KAAK,WAAW,IAAI,IAAI;AACxC,WAAO;AAAA,EACT;AAKA,MAAM,eAAe,CAAC,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAEtE,WAASC,iBAAgB,MAAM;AAC7B,WAAO,OAAO,QAAQ,KAAM,OAAO,MAAM,KAAK,OAAO,QAAQ;AAAA,EAC/D;AAEA,WAAS,aAAa,MAAM,OAAO,MAAM;AACvC,WACE,SAAS,KACT,SAAS,MACT,QAAQ,KACR,SAAS,aAAa,KAAK,MAAMA,iBAAgB,IAAI,IAAI,KAAK;AAAA,EAElE;AAEA,WAAS,sBAAsB,MAAM,WAAW;AAC9C,WAAO,aAAa,KAAK,cAAcA,iBAAgB,IAAI,IAAI,MAAM;AAAA,EACvE;AAEA,WAAS,iBAAiB,OAAO,MAAM,KAAK;AAC1C,WAAO,QAAQ,KAAK,QAAQ,MAAM,OAAO,KAAK,OAAO;AAAA,EACvD;AAEA,WAAS,aAAa,OAAO,SAAS,SAAS;AAC7C,QAAI,UAAU,IAAI;AAChB,aAAO,YAAY,KAAK,YAAY;AAAA,IACtC;AAEA,WACE,WAAW,KACX,UAAU,MACV,WAAW,KACX,UAAU,MACV,SAAS,KACT,QAAQ;AAAA,EAEZ;AAEA,WAAS,iBAAiB,QAAQ,SAAS;AACzC,WAAO,WAAW,KAAK,WAAW;AAAA,EACpC;;;ACzRA,MAAM,UAAU;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAEA,WAAU,MAAM,SAAS;AAAA,IACvB,KAAK;AAAA;AAAA,IAEL,SAAS,WAAW;AAClB,aAAO;AAAA,IACT;AAAA,IAEA,OAAO,SAAS,OAAO,KAAK;AAC1B,UAAI,UAAU,QAAQ,OAAO,UAAU,aAAa;AAClD,eAAO;AAAA,MACT;AACA,YAAM,OAAO,OAAO;AACpB,UAAI,SAAS,YAAY,iBAAiB,MAAM;AAC9C,gBAAQ,OAAO,KAAK;AAAA,MACtB,WAAW,SAAS,UAAU;AAC5B,YAAI,OAAO,QAAQ,UAAU;AAC3B,kBAAQC,OAAM,OAAO,KAAK,oBAAI,KAAK,GAAG,KAAK,OAAO;AAAA,QACpD,OAAO;AACL,kBAAQ,SAAS,OAAO,KAAK,OAAO;AAAA,QACtC;AAAA,MACF;AACA,aAAO,QAAQ,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC5C;AAAA,IAEA,QAAQ,SAAS,MAAM,KAAK;AAC1B,aAAO,OAAO,MAAM,KAAK,KAAK,OAAO;AAAA,IACvC;AAAA,IAEA,KAAK,SAAS,MAAM,QAAQ,MAAM;AAChC,cAAQ,MAAM;AAAA,QACd,KAAK;AAAe,iBAAO,gBAAgB,MAAM,MAAM;AAAA,QACvD,KAAK;AAAU,iBAAO,WAAW,MAAM,MAAM;AAAA,QAC7C,KAAK;AAAU,iBAAO,WAAW,MAAM,MAAM;AAAA,QAC7C,KAAK;AAAQ,iBAAO,SAAS,MAAM,MAAM;AAAA,QACzC,KAAK;AAAO,iBAAO,QAAQ,MAAM,MAAM;AAAA,QACvC,KAAK;AAAQ,iBAAO,SAAS,MAAM,MAAM;AAAA,QACzC,KAAK;AAAS,iBAAO,UAAU,MAAM,MAAM;AAAA,QAC3C,KAAK;AAAW,iBAAO,YAAY,MAAM,MAAM;AAAA,QAC/C,KAAK;AAAQ,iBAAO,SAAS,MAAM,MAAM;AAAA,QACzC;AAAS,iBAAO;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,KAAK,KAAK,MAAM;AAC7B,cAAQ,MAAM;AAAA,QACd,KAAK;AAAe,iBAAO,yBAAyB,KAAK,GAAG;AAAA,QAC5D,KAAK;AAAU,iBAAO,oBAAoB,KAAK,GAAG;AAAA,QAClD,KAAK;AAAU,iBAAO,oBAAoB,KAAK,GAAG;AAAA,QAClD,KAAK;AAAQ,iBAAO,kBAAkB,KAAK,GAAG;AAAA,QAC9C,KAAK;AAAO,iBAAO,iBAAiB,KAAK,GAAG;AAAA,QAC5C,KAAK;AAAQ,iBAAO,kBAAkB,KAAK,GAAG;AAAA,QAC9C,KAAK;AAAS,iBAAO,mBAAmB,KAAK,GAAG;AAAA,QAChD,KAAK;AAAW,iBAAO,qBAAqB,KAAK,GAAG;AAAA,QACpD,KAAK;AAAQ,iBAAO,kBAAkB,KAAK,GAAG;AAAA,QAC9C;AAAS,iBAAO;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,SAAS,SAAS,MAAM,MAAM,SAAS;AACrC,cAAQ,MAAM;AAAA,QACd,KAAK;AAAU,iBAAO,cAAc,IAAI;AAAA,QACxC,KAAK;AAAU,iBAAO,cAAc,IAAI;AAAA,QACxC,KAAK;AAAQ,iBAAO,YAAY,IAAI;AAAA,QACpC,KAAK;AAAO,iBAAO,WAAW,IAAI;AAAA,QAClC,KAAK;AAAQ,iBAAO,YAAY,IAAI;AAAA,QACpC,KAAK;AAAW,iBAAO,YAAY,MAAM,EAAC,cAAc,CAAC,QAAO,CAAC;AAAA,QACjE,KAAK;AAAS,iBAAO,aAAa,IAAI;AAAA,QACtC,KAAK;AAAW,iBAAO,eAAe,IAAI;AAAA,QAC1C,KAAK;AAAQ,iBAAO,YAAY,IAAI;AAAA,QACpC;AAAS,iBAAO;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,OAAO,SAAS,MAAM,MAAM;AAC1B,cAAQ,MAAM;AAAA,QACd,KAAK;AAAU,iBAAO,YAAY,IAAI;AAAA,QACtC,KAAK;AAAU,iBAAO,YAAY,IAAI;AAAA,QACtC,KAAK;AAAQ,iBAAO,UAAU,IAAI;AAAA,QAClC,KAAK;AAAO,iBAAO,SAAS,IAAI;AAAA,QAChC,KAAK;AAAQ,iBAAO,UAAU,IAAI;AAAA,QAClC,KAAK;AAAS,iBAAO,WAAW,IAAI;AAAA,QACpC,KAAK;AAAW,iBAAO,aAAa,IAAI;AAAA,QACxC,KAAK;AAAQ,iBAAO,UAAU,IAAI;AAAA,QAClC;AAAS,iBAAO;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;;;AjMxGD,mBAAAC,QAAU,IAAI,YAAK;;;AkMAnB,MAAM,gBAAN,MAAoB;AAAA,IAChB,YAAY,aAAa,WAAW,cAAc;AAC9C,WAAK,cAAc;AACnB,WAAK,YAAY;AACjB,WAAK,eAAe;AACpB,WAAK,oBAAoB,oBAAI,IAAI;AAAA,IACrC;AAAA,IACA,UAAU;AACN,WAAK,YAAY,iBAAiB,KAAK,WAAW,MAAM,KAAK,YAAY;AAAA,IAC7E;AAAA,IACA,aAAa;AACT,WAAK,YAAY,oBAAoB,KAAK,WAAW,MAAM,KAAK,YAAY;AAAA,IAChF;AAAA,IACA,iBAAiB,SAAS;AACtB,WAAK,kBAAkB,IAAI,OAAO;AAAA,IACtC;AAAA,IACA,oBAAoB,SAAS;AACzB,WAAK,kBAAkB,OAAO,OAAO;AAAA,IACzC;AAAA,IACA,YAAYC,QAAO;AACf,YAAM,gBAAgB,YAAYA,MAAK;AACvC,iBAAW,WAAW,KAAK,UAAU;AACjC,YAAI,cAAc,6BAA6B;AAC3C;AAAA,QACJ,OACK;AACD,kBAAQ,YAAY,aAAa;AAAA,QACrC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,cAAc;AACV,aAAO,KAAK,kBAAkB,OAAO;AAAA,IACzC;AAAA,IACA,IAAI,WAAW;AACX,aAAO,MAAM,KAAK,KAAK,iBAAiB,EAAE,KAAK,CAAC,MAAM,UAAU;AAC5D,cAAM,YAAY,KAAK,OAAO,aAAa,MAAM;AACjD,eAAO,YAAY,aAAa,KAAK,YAAY,aAAa,IAAI;AAAA,MACtE,CAAC;AAAA,IACL;AAAA,EACJ;AACA,WAAS,YAAYA,QAAO;AACxB,QAAI,iCAAiCA,QAAO;AACxC,aAAOA;AAAA,IACX,OACK;AACD,YAAM,EAAE,yBAAyB,IAAIA;AACrC,aAAO,OAAO,OAAOA,QAAO;AAAA,QACxB,6BAA6B;AAAA,QAC7B,2BAA2B;AACvB,eAAK,8BAA8B;AACnC,mCAAyB,KAAK,IAAI;AAAA,QACtC;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,MAAM,aAAN,MAAiB;AAAA,IACb,YAAYC,cAAa;AACrB,WAAK,cAAcA;AACnB,WAAK,oBAAoB,oBAAI,IAAI;AACjC,WAAK,UAAU;AAAA,IACnB;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,UAAU;AACf,aAAK,eAAe,QAAQ,CAAC,kBAAkB,cAAc,QAAQ,CAAC;AAAA,MAC1E;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,eAAe,QAAQ,CAAC,kBAAkB,cAAc,WAAW,CAAC;AAAA,MAC7E;AAAA,IACJ;AAAA,IACA,IAAI,iBAAiB;AACjB,aAAO,MAAM,KAAK,KAAK,kBAAkB,OAAO,CAAC,EAAE,OAAO,CAAC,WAAWC,SAAQ,UAAU,OAAO,MAAM,KAAKA,KAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,IAChI;AAAA,IACA,iBAAiB,SAAS;AACtB,WAAK,6BAA6B,OAAO,EAAE,iBAAiB,OAAO;AAAA,IACvE;AAAA,IACA,oBAAoB,SAAS,sBAAsB,OAAO;AACtD,WAAK,6BAA6B,OAAO,EAAE,oBAAoB,OAAO;AACtE,UAAI;AACA,aAAK,8BAA8B,OAAO;AAAA,IAClD;AAAA,IACA,YAAYC,QAAOC,UAAS,SAAS,CAAC,GAAG;AACrC,WAAK,YAAY,YAAYD,QAAO,SAASC,QAAO,IAAI,MAAM;AAAA,IAClE;AAAA,IACA,8BAA8B,SAAS;AACnC,YAAM,gBAAgB,KAAK,6BAA6B,OAAO;AAC/D,UAAI,CAAC,cAAc,YAAY,GAAG;AAC9B,sBAAc,WAAW;AACzB,aAAK,6BAA6B,OAAO;AAAA,MAC7C;AAAA,IACJ;AAAA,IACA,6BAA6B,SAAS;AAClC,YAAM,EAAE,aAAa,WAAW,aAAa,IAAI;AACjD,YAAM,mBAAmB,KAAK,oCAAoC,WAAW;AAC7E,YAAM,WAAW,KAAK,SAAS,WAAW,YAAY;AACtD,uBAAiB,OAAO,QAAQ;AAChC,UAAI,iBAAiB,QAAQ;AACzB,aAAK,kBAAkB,OAAO,WAAW;AAAA,IACjD;AAAA,IACA,6BAA6B,SAAS;AAClC,YAAM,EAAE,aAAa,WAAW,aAAa,IAAI;AACjD,aAAO,KAAK,mBAAmB,aAAa,WAAW,YAAY;AAAA,IACvE;AAAA,IACA,mBAAmB,aAAa,WAAW,cAAc;AACrD,YAAM,mBAAmB,KAAK,oCAAoC,WAAW;AAC7E,YAAM,WAAW,KAAK,SAAS,WAAW,YAAY;AACtD,UAAI,gBAAgB,iBAAiB,IAAI,QAAQ;AACjD,UAAI,CAAC,eAAe;AAChB,wBAAgB,KAAK,oBAAoB,aAAa,WAAW,YAAY;AAC7E,yBAAiB,IAAI,UAAU,aAAa;AAAA,MAChD;AACA,aAAO;AAAA,IACX;AAAA,IACA,oBAAoB,aAAa,WAAW,cAAc;AACtD,YAAM,gBAAgB,IAAI,cAAc,aAAa,WAAW,YAAY;AAC5E,UAAI,KAAK,SAAS;AACd,sBAAc,QAAQ;AAAA,MAC1B;AACA,aAAO;AAAA,IACX;AAAA,IACA,oCAAoC,aAAa;AAC7C,UAAI,mBAAmB,KAAK,kBAAkB,IAAI,WAAW;AAC7D,UAAI,CAAC,kBAAkB;AACnB,2BAAmB,oBAAI,IAAI;AAC3B,aAAK,kBAAkB,IAAI,aAAa,gBAAgB;AAAA,MAC5D;AACA,aAAO;AAAA,IACX;AAAA,IACA,SAAS,WAAW,cAAc;AAC9B,YAAM,QAAQ,CAAC,SAAS;AACxB,aAAO,KAAK,YAAY,EACnB,KAAK,EACL,QAAQ,CAAC,QAAQ;AAClB,cAAM,KAAK,GAAG,aAAa,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,EAAE;AAAA,MACtD,CAAC;AACD,aAAO,MAAM,KAAK,GAAG;AAAA,IACzB;AAAA,EACJ;AAEA,MAAM,iCAAiC;AAAA,IACnC,KAAK,EAAE,OAAAJ,QAAO,MAAM,GAAG;AACnB,UAAI;AACA,QAAAA,OAAM,gBAAgB;AAC1B,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,EAAE,OAAAA,QAAO,MAAM,GAAG;AACtB,UAAI;AACA,QAAAA,OAAM,eAAe;AACzB,aAAO;AAAA,IACX;AAAA,IACA,KAAK,EAAE,OAAAA,QAAO,OAAO,QAAQ,GAAG;AAC5B,UAAI,OAAO;AACP,eAAO,YAAYA,OAAM;AAAA,MAC7B,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACA,MAAM,oBAAoB;AAC1B,WAAS,4BAA4B,kBAAkB;AACnD,UAAM,SAAS,iBAAiB,KAAK;AACrC,UAAMK,WAAU,OAAO,MAAM,iBAAiB,KAAK,CAAC;AACpD,QAAI,YAAYA,SAAQ,CAAC;AACzB,QAAI,YAAYA,SAAQ,CAAC;AACzB,QAAI,aAAa,CAAC,CAAC,WAAW,SAAS,UAAU,EAAE,SAAS,SAAS,GAAG;AACpE,mBAAa,IAAI,SAAS;AAC1B,kBAAY;AAAA,IAChB;AACA,WAAO;AAAA,MACH,aAAa,iBAAiBA,SAAQ,CAAC,CAAC;AAAA,MACxC;AAAA,MACA,cAAcA,SAAQ,CAAC,IAAI,kBAAkBA,SAAQ,CAAC,CAAC,IAAI,CAAC;AAAA,MAC5D,YAAYA,SAAQ,CAAC;AAAA,MACrB,YAAYA,SAAQ,CAAC;AAAA,MACrB,WAAWA,SAAQ,CAAC,KAAK;AAAA,IAC7B;AAAA,EACJ;AACA,WAAS,iBAAiB,iBAAiB;AACvC,QAAI,mBAAmB,UAAU;AAC7B,aAAO;AAAA,IACX,WACS,mBAAmB,YAAY;AACpC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,WAAS,kBAAkB,cAAc;AACrC,WAAO,aACF,MAAM,GAAG,EACT,OAAO,CAAC,SAAS,UAAU,OAAO,OAAO,SAAS,EAAE,CAAC,MAAM,QAAQ,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AAAA,EAChH;AACA,WAAS,qBAAqB,aAAa;AACvC,QAAI,eAAe,QAAQ;AACvB,aAAO;AAAA,IACX,WACS,eAAe,UAAU;AAC9B,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,WAAS,SAAS,OAAO;AACrB,WAAO,MAAM,QAAQ,uBAAuB,CAACC,IAAG,SAAS,KAAK,YAAY,CAAC;AAAA,EAC/E;AACA,WAAS,kBAAkB,OAAO;AAC9B,WAAO,SAAS,MAAM,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,CAAC;AAAA,EACjE;AACA,WAAS,WAAW,OAAO;AACvB,WAAO,MAAM,OAAO,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC;AAAA,EACxD;AACA,WAAS,UAAU,OAAO;AACtB,WAAO,MAAM,QAAQ,YAAY,CAACA,IAAG,SAAS,IAAI,KAAK,YAAY,CAAC,EAAE;AAAA,EAC1E;AACA,WAAS,SAAS,OAAO;AACrB,WAAO,MAAM,MAAM,SAAS,KAAK,CAAC;AAAA,EACtC;AAEA,WAAS,YAAY,QAAQ;AACzB,WAAO,WAAW,QAAQ,WAAW;AAAA,EACzC;AACA,WAAS,YAAY,QAAQ,UAAU;AACnC,WAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,QAAQ;AAAA,EAChE;AAEA,MAAM,eAAe,CAAC,QAAQ,QAAQ,OAAO,OAAO;AACpD,MAAM,SAAN,MAAa;AAAA,IACT,YAAY,SAASC,QAAO,YAAY,QAAQ;AAC5C,WAAK,UAAU;AACf,WAAK,QAAQA;AACb,WAAK,cAAc,WAAW,eAAe;AAC7C,WAAK,YAAY,WAAW,aAAa,8BAA8B,OAAO,KAAK,MAAM,oBAAoB;AAC7G,WAAK,eAAe,WAAW,gBAAgB,CAAC;AAChD,WAAK,aAAa,WAAW,cAAc,MAAM,oBAAoB;AACrE,WAAK,aAAa,WAAW,cAAc,MAAM,qBAAqB;AACtE,WAAK,YAAY,WAAW,aAAa;AACzC,WAAK,SAAS;AAAA,IAClB;AAAA,IACA,OAAO,SAAS,OAAO,QAAQ;AAC3B,aAAO,IAAI,KAAK,MAAM,SAAS,MAAM,OAAO,4BAA4B,MAAM,OAAO,GAAG,MAAM;AAAA,IAClG;AAAA,IACA,WAAW;AACP,YAAM,cAAc,KAAK,YAAY,IAAI,KAAK,SAAS,KAAK;AAC5D,YAAM,cAAc,KAAK,kBAAkB,IAAI,KAAK,eAAe,KAAK;AACxE,aAAO,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,WAAW,KAAK,KAAK,UAAU,IAAI,KAAK,UAAU;AAAA,IAC/F;AAAA,IACA,0BAA0BP,QAAO;AAC7B,UAAI,CAAC,KAAK,WAAW;AACjB,eAAO;AAAA,MACX;AACA,YAAM,UAAU,KAAK,UAAU,MAAM,GAAG;AACxC,UAAI,KAAK,sBAAsBA,QAAO,OAAO,GAAG;AAC5C,eAAO;AAAA,MACX;AACA,YAAM,iBAAiB,QAAQ,OAAO,CAAC,QAAQ,CAAC,aAAa,SAAS,GAAG,CAAC,EAAE,CAAC;AAC7E,UAAI,CAAC,gBAAgB;AACjB,eAAO;AAAA,MACX;AACA,UAAI,CAAC,YAAY,KAAK,aAAa,cAAc,GAAG;AAChD,cAAM,gCAAgC,KAAK,SAAS,EAAE;AAAA,MAC1D;AACA,aAAO,KAAK,YAAY,cAAc,EAAE,YAAY,MAAMA,OAAM,IAAI,YAAY;AAAA,IACpF;AAAA,IACA,uBAAuBA,QAAO;AAC1B,UAAI,CAAC,KAAK,WAAW;AACjB,eAAO;AAAA,MACX;AACA,YAAM,UAAU,CAAC,KAAK,SAAS;AAC/B,UAAI,KAAK,sBAAsBA,QAAO,OAAO,GAAG;AAC5C,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,SAAS;AACT,YAAM,SAAS,CAAC;AAChB,YAAM,UAAU,IAAI,OAAO,SAAS,KAAK,UAAU,gBAAgB,GAAG;AACtE,iBAAW,EAAE,MAAM,MAAM,KAAK,MAAM,KAAK,KAAK,QAAQ,UAAU,GAAG;AAC/D,cAAMQ,SAAQ,KAAK,MAAM,OAAO;AAChC,cAAM,MAAMA,UAASA,OAAM,CAAC;AAC5B,YAAI,KAAK;AACL,iBAAO,SAAS,GAAG,CAAC,IAAI,SAAS,KAAK;AAAA,QAC1C;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,kBAAkB;AAClB,aAAO,qBAAqB,KAAK,WAAW;AAAA,IAChD;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,sBAAsBR,QAAO,SAAS;AAClC,YAAM,CAAC,MAAM,MAAM,KAAK,KAAK,IAAI,aAAa,IAAI,CAAC,aAAa,QAAQ,SAAS,QAAQ,CAAC;AAC1F,aAAOA,OAAM,YAAY,QAAQA,OAAM,YAAY,QAAQA,OAAM,WAAW,OAAOA,OAAM,aAAa;AAAA,IAC1G;AAAA,EACJ;AACA,MAAM,oBAAoB;AAAA,IACtB,GAAG,MAAM;AAAA,IACT,QAAQ,MAAM;AAAA,IACd,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,IACf,OAAO,CAACS,OAAOA,GAAE,aAAa,MAAM,KAAK,WAAW,UAAU;AAAA,IAC9D,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM;AAAA,EACpB;AACA,WAAS,8BAA8B,SAAS;AAC5C,UAAM,UAAU,QAAQ,QAAQ,YAAY;AAC5C,QAAI,WAAW,mBAAmB;AAC9B,aAAO,kBAAkB,OAAO,EAAE,OAAO;AAAA,IAC7C;AAAA,EACJ;AACA,WAAS,MAAML,UAAS;AACpB,UAAM,IAAI,MAAMA,QAAO;AAAA,EAC3B;AACA,WAAS,SAAS,OAAO;AACrB,QAAI;AACA,aAAO,KAAK,MAAM,KAAK;AAAA,IAC3B,SACO,KAAK;AACR,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAM,UAAN,MAAc;AAAA,IACV,YAAY,SAAS,QAAQ;AACzB,WAAK,UAAU;AACf,WAAK,SAAS;AAAA,IAClB;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,eAAe;AACf,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,YAAYJ,QAAO;AACf,YAAM,cAAc,KAAK,mBAAmBA,MAAK;AACjD,UAAI,KAAK,qBAAqBA,MAAK,KAAK,KAAK,oBAAoB,WAAW,GAAG;AAC3E,aAAK,gBAAgB,WAAW;AAAA,MACpC;AAAA,IACJ;AAAA,IACA,IAAI,YAAY;AACZ,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,SAAS;AACT,YAAM,SAAS,KAAK,WAAW,KAAK,UAAU;AAC9C,UAAI,OAAO,UAAU,YAAY;AAC7B,eAAO;AAAA,MACX;AACA,YAAM,IAAI,MAAM,WAAW,KAAK,MAAM,kCAAkC,KAAK,UAAU,GAAG;AAAA,IAC9F;AAAA,IACA,oBAAoBA,QAAO;AACvB,YAAM,EAAE,QAAQ,IAAI,KAAK;AACzB,YAAM,EAAE,wBAAwB,IAAI,KAAK,QAAQ;AACjD,YAAM,EAAE,WAAW,IAAI,KAAK;AAC5B,UAAI,SAAS;AACb,iBAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,KAAK,YAAY,GAAG;AAC3D,YAAI,QAAQ,yBAAyB;AACjC,gBAAM,SAAS,wBAAwB,IAAI;AAC3C,mBAAS,UAAU,OAAO,EAAE,MAAM,OAAO,OAAAA,QAAO,SAAS,WAAW,CAAC;AAAA,QACzE,OACK;AACD;AAAA,QACJ;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,IACA,mBAAmBA,QAAO;AACtB,aAAO,OAAO,OAAOA,QAAO,EAAE,QAAQ,KAAK,OAAO,OAAO,CAAC;AAAA,IAC9D;AAAA,IACA,gBAAgBA,QAAO;AACnB,YAAM,EAAE,QAAQ,cAAc,IAAIA;AAClC,UAAI;AACA,aAAK,OAAO,KAAK,KAAK,YAAYA,MAAK;AACvC,aAAK,QAAQ,iBAAiB,KAAK,YAAY,EAAE,OAAAA,QAAO,QAAQ,eAAe,QAAQ,KAAK,WAAW,CAAC;AAAA,MAC5G,SACOG,QAAO;AACV,cAAM,EAAE,YAAY,YAAY,SAAS,OAAAI,OAAM,IAAI;AACnD,cAAM,SAAS,EAAE,YAAY,YAAY,SAAS,OAAAA,QAAO,OAAAP,OAAM;AAC/D,aAAK,QAAQ,YAAYG,QAAO,oBAAoB,KAAK,MAAM,KAAK,MAAM;AAAA,MAC9E;AAAA,IACJ;AAAA,IACA,qBAAqBH,QAAO;AACxB,YAAM,cAAcA,OAAM;AAC1B,UAAIA,kBAAiB,iBAAiB,KAAK,OAAO,0BAA0BA,MAAK,GAAG;AAChF,eAAO;AAAA,MACX;AACA,UAAIA,kBAAiB,cAAc,KAAK,OAAO,uBAAuBA,MAAK,GAAG;AAC1E,eAAO;AAAA,MACX;AACA,UAAI,KAAK,YAAY,aAAa;AAC9B,eAAO;AAAA,MACX,WACS,uBAAuB,WAAW,KAAK,QAAQ,SAAS,WAAW,GAAG;AAC3E,eAAO,KAAK,MAAM,gBAAgB,WAAW;AAAA,MACjD,OACK;AACD,eAAO,KAAK,MAAM,gBAAgB,KAAK,OAAO,OAAO;AAAA,MACzD;AAAA,IACJ;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,EACJ;AAEA,MAAM,kBAAN,MAAsB;AAAA,IAClB,YAAY,SAAS,UAAU;AAC3B,WAAK,uBAAuB,EAAE,YAAY,MAAM,WAAW,MAAM,SAAS,KAAK;AAC/E,WAAK,UAAU;AACf,WAAK,UAAU;AACf,WAAK,WAAW;AAChB,WAAK,WAAW,oBAAI,IAAI;AACxB,WAAK,mBAAmB,IAAI,iBAAiB,CAAC,cAAc,KAAK,iBAAiB,SAAS,CAAC;AAAA,IAChG;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,UAAU;AACf,aAAK,iBAAiB,QAAQ,KAAK,SAAS,KAAK,oBAAoB;AACrE,aAAK,QAAQ;AAAA,MACjB;AAAA,IACJ;AAAA,IACA,MAAMU,WAAU;AACZ,UAAI,KAAK,SAAS;AACd,aAAK,iBAAiB,WAAW;AACjC,aAAK,UAAU;AAAA,MACnB;AACA,MAAAA,UAAS;AACT,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,iBAAiB,QAAQ,KAAK,SAAS,KAAK,oBAAoB;AACrE,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,iBAAiB,YAAY;AAClC,aAAK,iBAAiB,WAAW;AACjC,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,UAAU;AACN,UAAI,KAAK,SAAS;AACd,cAAML,WAAU,IAAI,IAAI,KAAK,oBAAoB,CAAC;AAClD,mBAAW,WAAW,MAAM,KAAK,KAAK,QAAQ,GAAG;AAC7C,cAAI,CAACA,SAAQ,IAAI,OAAO,GAAG;AACvB,iBAAK,cAAc,OAAO;AAAA,UAC9B;AAAA,QACJ;AACA,mBAAW,WAAW,MAAM,KAAKA,QAAO,GAAG;AACvC,eAAK,WAAW,OAAO;AAAA,QAC3B;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,iBAAiB,WAAW;AACxB,UAAI,KAAK,SAAS;AACd,mBAAW,YAAY,WAAW;AAC9B,eAAK,gBAAgB,QAAQ;AAAA,QACjC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,gBAAgB,UAAU;AACtB,UAAI,SAAS,QAAQ,cAAc;AAC/B,aAAK,uBAAuB,SAAS,QAAQ,SAAS,aAAa;AAAA,MACvE,WACS,SAAS,QAAQ,aAAa;AACnC,aAAK,oBAAoB,SAAS,YAAY;AAC9C,aAAK,kBAAkB,SAAS,UAAU;AAAA,MAC9C;AAAA,IACJ;AAAA,IACA,uBAAuB,SAAS,eAAe;AAC3C,UAAI,KAAK,SAAS,IAAI,OAAO,GAAG;AAC5B,YAAI,KAAK,SAAS,2BAA2B,KAAK,aAAa,OAAO,GAAG;AACrE,eAAK,SAAS,wBAAwB,SAAS,aAAa;AAAA,QAChE,OACK;AACD,eAAK,cAAc,OAAO;AAAA,QAC9B;AAAA,MACJ,WACS,KAAK,aAAa,OAAO,GAAG;AACjC,aAAK,WAAW,OAAO;AAAA,MAC3B;AAAA,IACJ;AAAA,IACA,oBAAoB,OAAO;AACvB,iBAAW,QAAQ,MAAM,KAAK,KAAK,GAAG;AAClC,cAAM,UAAU,KAAK,gBAAgB,IAAI;AACzC,YAAI,SAAS;AACT,eAAK,YAAY,SAAS,KAAK,aAAa;AAAA,QAChD;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,kBAAkB,OAAO;AACrB,iBAAW,QAAQ,MAAM,KAAK,KAAK,GAAG;AAClC,cAAM,UAAU,KAAK,gBAAgB,IAAI;AACzC,YAAI,WAAW,KAAK,gBAAgB,OAAO,GAAG;AAC1C,eAAK,YAAY,SAAS,KAAK,UAAU;AAAA,QAC7C;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,aAAa,SAAS;AAClB,aAAO,KAAK,SAAS,aAAa,OAAO;AAAA,IAC7C;AAAA,IACA,oBAAoB,OAAO,KAAK,SAAS;AACrC,aAAO,KAAK,SAAS,oBAAoB,IAAI;AAAA,IACjD;AAAA,IACA,YAAY,MAAM,WAAW;AACzB,iBAAW,WAAW,KAAK,oBAAoB,IAAI,GAAG;AAClD,kBAAU,KAAK,MAAM,OAAO;AAAA,MAChC;AAAA,IACJ;AAAA,IACA,gBAAgB,MAAM;AAClB,UAAI,KAAK,YAAY,KAAK,cAAc;AACpC,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,gBAAgB,SAAS;AACrB,UAAI,QAAQ,eAAe,KAAK,QAAQ,aAAa;AACjD,eAAO;AAAA,MACX,OACK;AACD,eAAO,KAAK,QAAQ,SAAS,OAAO;AAAA,MACxC;AAAA,IACJ;AAAA,IACA,WAAW,SAAS;AAChB,UAAI,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG;AAC7B,YAAI,KAAK,gBAAgB,OAAO,GAAG;AAC/B,eAAK,SAAS,IAAI,OAAO;AACzB,cAAI,KAAK,SAAS,gBAAgB;AAC9B,iBAAK,SAAS,eAAe,OAAO;AAAA,UACxC;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,cAAc,SAAS;AACnB,UAAI,KAAK,SAAS,IAAI,OAAO,GAAG;AAC5B,aAAK,SAAS,OAAO,OAAO;AAC5B,YAAI,KAAK,SAAS,kBAAkB;AAChC,eAAK,SAAS,iBAAiB,OAAO;AAAA,QAC1C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,oBAAN,MAAwB;AAAA,IACpB,YAAY,SAAS,eAAe,UAAU;AAC1C,WAAK,gBAAgB;AACrB,WAAK,WAAW;AAChB,WAAK,kBAAkB,IAAI,gBAAgB,SAAS,IAAI;AAAA,IAC5D;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,gBAAgB;AAAA,IAChC;AAAA,IACA,IAAI,WAAW;AACX,aAAO,IAAI,KAAK,aAAa;AAAA,IACjC;AAAA,IACA,QAAQ;AACJ,WAAK,gBAAgB,MAAM;AAAA,IAC/B;AAAA,IACA,MAAMK,WAAU;AACZ,WAAK,gBAAgB,MAAMA,SAAQ;AAAA,IACvC;AAAA,IACA,OAAO;AACH,WAAK,gBAAgB,KAAK;AAAA,IAC9B;AAAA,IACA,UAAU;AACN,WAAK,gBAAgB,QAAQ;AAAA,IACjC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,gBAAgB;AAAA,IAChC;AAAA,IACA,aAAa,SAAS;AAClB,aAAO,QAAQ,aAAa,KAAK,aAAa;AAAA,IAClD;AAAA,IACA,oBAAoB,MAAM;AACtB,YAAMF,SAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAClD,YAAMH,WAAU,MAAM,KAAK,KAAK,iBAAiB,KAAK,QAAQ,CAAC;AAC/D,aAAOG,OAAM,OAAOH,QAAO;AAAA,IAC/B;AAAA,IACA,eAAe,SAAS;AACpB,UAAI,KAAK,SAAS,yBAAyB;AACvC,aAAK,SAAS,wBAAwB,SAAS,KAAK,aAAa;AAAA,MACrE;AAAA,IACJ;AAAA,IACA,iBAAiB,SAAS;AACtB,UAAI,KAAK,SAAS,2BAA2B;AACzC,aAAK,SAAS,0BAA0B,SAAS,KAAK,aAAa;AAAA,MACvE;AAAA,IACJ;AAAA,IACA,wBAAwB,SAAS,eAAe;AAC5C,UAAI,KAAK,SAAS,gCAAgC,KAAK,iBAAiB,eAAe;AACnF,aAAK,SAAS,6BAA6B,SAAS,aAAa;AAAA,MACrE;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,IAAIH,MAAK,KAAK,OAAO;AAC1B,IAAAS,OAAMT,MAAK,GAAG,EAAE,IAAI,KAAK;AAAA,EAC7B;AACA,WAAS,IAAIA,MAAK,KAAK,OAAO;AAC1B,IAAAS,OAAMT,MAAK,GAAG,EAAE,OAAO,KAAK;AAC5B,UAAMA,MAAK,GAAG;AAAA,EAClB;AACA,WAASS,OAAMT,MAAK,KAAK;AACrB,QAAI,SAASA,KAAI,IAAI,GAAG;AACxB,QAAI,CAAC,QAAQ;AACT,eAAS,oBAAI,IAAI;AACjB,MAAAA,KAAI,IAAI,KAAK,MAAM;AAAA,IACvB;AACA,WAAO;AAAA,EACX;AACA,WAAS,MAAMA,MAAK,KAAK;AACrB,UAAM,SAASA,KAAI,IAAI,GAAG;AAC1B,QAAI,UAAU,QAAQ,OAAO,QAAQ,GAAG;AACpC,MAAAA,KAAI,OAAO,GAAG;AAAA,IAClB;AAAA,EACJ;AAEA,MAAM,WAAN,MAAe;AAAA,IACX,cAAc;AACV,WAAK,cAAc,oBAAI,IAAI;AAAA,IAC/B;AAAA,IACA,IAAI,OAAO;AACP,aAAO,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC;AAAA,IAC7C;AAAA,IACA,IAAI,SAAS;AACT,YAAM,OAAO,MAAM,KAAK,KAAK,YAAY,OAAO,CAAC;AACjD,aAAO,KAAK,OAAO,CAAC,QAAQU,SAAQ,OAAO,OAAO,MAAM,KAAKA,IAAG,CAAC,GAAG,CAAC,CAAC;AAAA,IAC1E;AAAA,IACA,IAAI,OAAO;AACP,YAAM,OAAO,MAAM,KAAK,KAAK,YAAY,OAAO,CAAC;AACjD,aAAO,KAAK,OAAO,CAAC,MAAMA,SAAQ,OAAOA,KAAI,MAAM,CAAC;AAAA,IACxD;AAAA,IACA,IAAI,KAAK,OAAO;AACZ,UAAI,KAAK,aAAa,KAAK,KAAK;AAAA,IACpC;AAAA,IACA,OAAO,KAAK,OAAO;AACf,UAAI,KAAK,aAAa,KAAK,KAAK;AAAA,IACpC;AAAA,IACA,IAAI,KAAK,OAAO;AACZ,YAAM,SAAS,KAAK,YAAY,IAAI,GAAG;AACvC,aAAO,UAAU,QAAQ,OAAO,IAAI,KAAK;AAAA,IAC7C;AAAA,IACA,OAAO,KAAK;AACR,aAAO,KAAK,YAAY,IAAI,GAAG;AAAA,IACnC;AAAA,IACA,SAAS,OAAO;AACZ,YAAM,OAAO,MAAM,KAAK,KAAK,YAAY,OAAO,CAAC;AACjD,aAAO,KAAK,KAAK,CAACA,SAAQA,KAAI,IAAI,KAAK,CAAC;AAAA,IAC5C;AAAA,IACA,gBAAgB,KAAK;AACjB,YAAM,SAAS,KAAK,YAAY,IAAI,GAAG;AACvC,aAAO,SAAS,MAAM,KAAK,MAAM,IAAI,CAAC;AAAA,IAC1C;AAAA,IACA,gBAAgB,OAAO;AACnB,aAAO,MAAM,KAAK,KAAK,WAAW,EAC7B,OAAO,CAAC,CAAC,MAAM,MAAM,MAAM,OAAO,IAAI,KAAK,CAAC,EAC5C,IAAI,CAAC,CAAC,KAAK,OAAO,MAAM,GAAG;AAAA,IACpC;AAAA,EACJ;AA2BA,MAAM,mBAAN,MAAuB;AAAA,IACnB,YAAY,SAAS,UAAU,UAAU,SAAS;AAC9C,WAAK,YAAY;AACjB,WAAK,UAAU;AACf,WAAK,kBAAkB,IAAI,gBAAgB,SAAS,IAAI;AACxD,WAAK,WAAW;AAChB,WAAK,mBAAmB,IAAI,SAAS;AAAA,IACzC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,gBAAgB;AAAA,IAChC;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK;AAAA,IAChB;AAAA,IACA,IAAI,SAAS,UAAU;AACnB,WAAK,YAAY;AACjB,WAAK,QAAQ;AAAA,IACjB;AAAA,IACA,QAAQ;AACJ,WAAK,gBAAgB,MAAM;AAAA,IAC/B;AAAA,IACA,MAAMC,WAAU;AACZ,WAAK,gBAAgB,MAAMA,SAAQ;AAAA,IACvC;AAAA,IACA,OAAO;AACH,WAAK,gBAAgB,KAAK;AAAA,IAC9B;AAAA,IACA,UAAU;AACN,WAAK,gBAAgB,QAAQ;AAAA,IACjC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,gBAAgB;AAAA,IAChC;AAAA,IACA,aAAa,SAAS;AAClB,YAAM,EAAE,SAAS,IAAI;AACrB,UAAI,UAAU;AACV,cAAMC,WAAU,QAAQ,QAAQ,QAAQ;AACxC,YAAI,KAAK,SAAS,sBAAsB;AACpC,iBAAOA,YAAW,KAAK,SAAS,qBAAqB,SAAS,KAAK,OAAO;AAAA,QAC9E;AACA,eAAOA;AAAA,MACX,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,oBAAoB,MAAM;AACtB,YAAM,EAAE,SAAS,IAAI;AACrB,UAAI,UAAU;AACV,cAAMC,SAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAClD,cAAMD,WAAU,MAAM,KAAK,KAAK,iBAAiB,QAAQ,CAAC,EAAE,OAAO,CAACC,WAAU,KAAK,aAAaA,MAAK,CAAC;AACtG,eAAOA,OAAM,OAAOD,QAAO;AAAA,MAC/B,OACK;AACD,eAAO,CAAC;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,eAAe,SAAS;AACpB,YAAM,EAAE,SAAS,IAAI;AACrB,UAAI,UAAU;AACV,aAAK,gBAAgB,SAAS,QAAQ;AAAA,MAC1C;AAAA,IACJ;AAAA,IACA,iBAAiB,SAAS;AACtB,YAAM,YAAY,KAAK,iBAAiB,gBAAgB,OAAO;AAC/D,iBAAW,YAAY,WAAW;AAC9B,aAAK,kBAAkB,SAAS,QAAQ;AAAA,MAC5C;AAAA,IACJ;AAAA,IACA,wBAAwB,SAAS,gBAAgB;AAC7C,YAAM,EAAE,SAAS,IAAI;AACrB,UAAI,UAAU;AACV,cAAMA,WAAU,KAAK,aAAa,OAAO;AACzC,cAAM,gBAAgB,KAAK,iBAAiB,IAAI,UAAU,OAAO;AACjE,YAAIA,YAAW,CAAC,eAAe;AAC3B,eAAK,gBAAgB,SAAS,QAAQ;AAAA,QAC1C,WACS,CAACA,YAAW,eAAe;AAChC,eAAK,kBAAkB,SAAS,QAAQ;AAAA,QAC5C;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,gBAAgB,SAAS,UAAU;AAC/B,WAAK,SAAS,gBAAgB,SAAS,UAAU,KAAK,OAAO;AAC7D,WAAK,iBAAiB,IAAI,UAAU,OAAO;AAAA,IAC/C;AAAA,IACA,kBAAkB,SAAS,UAAU;AACjC,WAAK,SAAS,kBAAkB,SAAS,UAAU,KAAK,OAAO;AAC/D,WAAK,iBAAiB,OAAO,UAAU,OAAO;AAAA,IAClD;AAAA,EACJ;AAEA,MAAM,oBAAN,MAAwB;AAAA,IACpB,YAAY,SAAS,UAAU;AAC3B,WAAK,UAAU;AACf,WAAK,WAAW;AAChB,WAAK,UAAU;AACf,WAAK,YAAY,oBAAI,IAAI;AACzB,WAAK,mBAAmB,IAAI,iBAAiB,CAAC,cAAc,KAAK,iBAAiB,SAAS,CAAC;AAAA,IAChG;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,UAAU;AACf,aAAK,iBAAiB,QAAQ,KAAK,SAAS,EAAE,YAAY,MAAM,mBAAmB,KAAK,CAAC;AACzF,aAAK,QAAQ;AAAA,MACjB;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,iBAAiB,YAAY;AAClC,aAAK,iBAAiB,WAAW;AACjC,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,UAAU;AACN,UAAI,KAAK,SAAS;AACd,mBAAW,iBAAiB,KAAK,qBAAqB;AAClD,eAAK,iBAAiB,eAAe,IAAI;AAAA,QAC7C;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,iBAAiB,WAAW;AACxB,UAAI,KAAK,SAAS;AACd,mBAAW,YAAY,WAAW;AAC9B,eAAK,gBAAgB,QAAQ;AAAA,QACjC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,gBAAgB,UAAU;AACtB,YAAM,gBAAgB,SAAS;AAC/B,UAAI,eAAe;AACf,aAAK,iBAAiB,eAAe,SAAS,QAAQ;AAAA,MAC1D;AAAA,IACJ;AAAA,IACA,iBAAiB,eAAe,UAAU;AACtC,YAAM,MAAM,KAAK,SAAS,4BAA4B,aAAa;AACnE,UAAI,OAAO,MAAM;AACb,YAAI,CAAC,KAAK,UAAU,IAAI,aAAa,GAAG;AACpC,eAAK,kBAAkB,KAAK,aAAa;AAAA,QAC7C;AACA,cAAM,QAAQ,KAAK,QAAQ,aAAa,aAAa;AACrD,YAAI,KAAK,UAAU,IAAI,aAAa,KAAK,OAAO;AAC5C,eAAK,sBAAsB,OAAO,KAAK,QAAQ;AAAA,QACnD;AACA,YAAI,SAAS,MAAM;AACf,gBAAME,YAAW,KAAK,UAAU,IAAI,aAAa;AACjD,eAAK,UAAU,OAAO,aAAa;AACnC,cAAIA;AACA,iBAAK,oBAAoB,KAAK,eAAeA,SAAQ;AAAA,QAC7D,OACK;AACD,eAAK,UAAU,IAAI,eAAe,KAAK;AAAA,QAC3C;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,kBAAkB,KAAK,eAAe;AAClC,UAAI,KAAK,SAAS,mBAAmB;AACjC,aAAK,SAAS,kBAAkB,KAAK,aAAa;AAAA,MACtD;AAAA,IACJ;AAAA,IACA,sBAAsB,OAAO,KAAK,UAAU;AACxC,UAAI,KAAK,SAAS,uBAAuB;AACrC,aAAK,SAAS,sBAAsB,OAAO,KAAK,QAAQ;AAAA,MAC5D;AAAA,IACJ;AAAA,IACA,oBAAoB,KAAK,eAAe,UAAU;AAC9C,UAAI,KAAK,SAAS,qBAAqB;AACnC,aAAK,SAAS,oBAAoB,KAAK,eAAe,QAAQ;AAAA,MAClE;AAAA,IACJ;AAAA,IACA,IAAI,sBAAsB;AACtB,aAAO,MAAM,KAAK,IAAI,IAAI,KAAK,sBAAsB,OAAO,KAAK,sBAAsB,CAAC,CAAC;AAAA,IAC7F;AAAA,IACA,IAAI,wBAAwB;AACxB,aAAO,MAAM,KAAK,KAAK,QAAQ,UAAU,EAAE,IAAI,CAAC,cAAc,UAAU,IAAI;AAAA,IAChF;AAAA,IACA,IAAI,yBAAyB;AACzB,aAAO,MAAM,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,IAC3C;AAAA,EACJ;AAEA,MAAM,oBAAN,MAAwB;AAAA,IACpB,YAAY,SAAS,eAAe,UAAU;AAC1C,WAAK,oBAAoB,IAAI,kBAAkB,SAAS,eAAe,IAAI;AAC3E,WAAK,WAAW;AAChB,WAAK,kBAAkB,IAAI,SAAS;AAAA,IACxC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,kBAAkB;AAAA,IAClC;AAAA,IACA,QAAQ;AACJ,WAAK,kBAAkB,MAAM;AAAA,IACjC;AAAA,IACA,MAAMH,WAAU;AACZ,WAAK,kBAAkB,MAAMA,SAAQ;AAAA,IACzC;AAAA,IACA,OAAO;AACH,WAAK,kBAAkB,KAAK;AAAA,IAChC;AAAA,IACA,UAAU;AACN,WAAK,kBAAkB,QAAQ;AAAA,IACnC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,kBAAkB;AAAA,IAClC;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,KAAK,kBAAkB;AAAA,IAClC;AAAA,IACA,wBAAwB,SAAS;AAC7B,WAAK,cAAc,KAAK,qBAAqB,OAAO,CAAC;AAAA,IACzD;AAAA,IACA,6BAA6B,SAAS;AAClC,YAAM,CAAC,iBAAiB,aAAa,IAAI,KAAK,wBAAwB,OAAO;AAC7E,WAAK,gBAAgB,eAAe;AACpC,WAAK,cAAc,aAAa;AAAA,IACpC;AAAA,IACA,0BAA0B,SAAS;AAC/B,WAAK,gBAAgB,KAAK,gBAAgB,gBAAgB,OAAO,CAAC;AAAA,IACtE;AAAA,IACA,cAAc,QAAQ;AAClB,aAAO,QAAQ,CAAC,UAAU,KAAK,aAAa,KAAK,CAAC;AAAA,IACtD;AAAA,IACA,gBAAgB,QAAQ;AACpB,aAAO,QAAQ,CAAC,UAAU,KAAK,eAAe,KAAK,CAAC;AAAA,IACxD;AAAA,IACA,aAAa,OAAO;AAChB,WAAK,SAAS,aAAa,KAAK;AAChC,WAAK,gBAAgB,IAAI,MAAM,SAAS,KAAK;AAAA,IACjD;AAAA,IACA,eAAe,OAAO;AAClB,WAAK,SAAS,eAAe,KAAK;AAClC,WAAK,gBAAgB,OAAO,MAAM,SAAS,KAAK;AAAA,IACpD;AAAA,IACA,wBAAwB,SAAS;AAC7B,YAAM,iBAAiB,KAAK,gBAAgB,gBAAgB,OAAO;AACnE,YAAM,gBAAgB,KAAK,qBAAqB,OAAO;AACvD,YAAM,sBAAsB,IAAI,gBAAgB,aAAa,EAAE,UAAU,CAAC,CAAC,eAAe,YAAY,MAAM,CAAC,eAAe,eAAe,YAAY,CAAC;AACxJ,UAAI,uBAAuB,IAAI;AAC3B,eAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,MAClB,OACK;AACD,eAAO,CAAC,eAAe,MAAM,mBAAmB,GAAG,cAAc,MAAM,mBAAmB,CAAC;AAAA,MAC/F;AAAA,IACJ;AAAA,IACA,qBAAqB,SAAS;AAC1B,YAAM,gBAAgB,KAAK;AAC3B,YAAM,cAAc,QAAQ,aAAa,aAAa,KAAK;AAC3D,aAAO,iBAAiB,aAAa,SAAS,aAAa;AAAA,IAC/D;AAAA,EACJ;AACA,WAAS,iBAAiB,aAAa,SAAS,eAAe;AAC3D,WAAO,YACF,KAAK,EACL,MAAM,KAAK,EACX,OAAO,CAAC,YAAY,QAAQ,MAAM,EAClC,IAAI,CAAC,SAASI,YAAW,EAAE,SAAS,eAAe,SAAS,OAAAA,OAAM,EAAE;AAAA,EAC7E;AACA,WAAS,IAAI,MAAM,OAAO;AACtB,UAAM,SAAS,KAAK,IAAI,KAAK,QAAQ,MAAM,MAAM;AACjD,WAAO,MAAM,KAAK,EAAE,OAAO,GAAG,CAACC,IAAGD,WAAU,CAAC,KAAKA,MAAK,GAAG,MAAMA,MAAK,CAAC,CAAC;AAAA,EAC3E;AACA,WAAS,eAAe,MAAM,OAAO;AACjC,WAAO,QAAQ,SAAS,KAAK,SAAS,MAAM,SAAS,KAAK,WAAW,MAAM;AAAA,EAC/E;AAEA,MAAM,oBAAN,MAAwB;AAAA,IACpB,YAAY,SAAS,eAAe,UAAU;AAC1C,WAAK,oBAAoB,IAAI,kBAAkB,SAAS,eAAe,IAAI;AAC3E,WAAK,WAAW;AAChB,WAAK,sBAAsB,oBAAI,QAAQ;AACvC,WAAK,yBAAyB,oBAAI,QAAQ;AAAA,IAC9C;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,kBAAkB;AAAA,IAClC;AAAA,IACA,QAAQ;AACJ,WAAK,kBAAkB,MAAM;AAAA,IACjC;AAAA,IACA,OAAO;AACH,WAAK,kBAAkB,KAAK;AAAA,IAChC;AAAA,IACA,UAAU;AACN,WAAK,kBAAkB,QAAQ;AAAA,IACnC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,kBAAkB;AAAA,IAClC;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,KAAK,kBAAkB;AAAA,IAClC;AAAA,IACA,aAAa,OAAO;AAChB,YAAM,EAAE,QAAQ,IAAI;AACpB,YAAM,EAAE,MAAM,IAAI,KAAK,yBAAyB,KAAK;AACrD,UAAI,OAAO;AACP,aAAK,6BAA6B,OAAO,EAAE,IAAI,OAAO,KAAK;AAC3D,aAAK,SAAS,oBAAoB,SAAS,KAAK;AAAA,MACpD;AAAA,IACJ;AAAA,IACA,eAAe,OAAO;AAClB,YAAM,EAAE,QAAQ,IAAI;AACpB,YAAM,EAAE,MAAM,IAAI,KAAK,yBAAyB,KAAK;AACrD,UAAI,OAAO;AACP,aAAK,6BAA6B,OAAO,EAAE,OAAO,KAAK;AACvD,aAAK,SAAS,sBAAsB,SAAS,KAAK;AAAA,MACtD;AAAA,IACJ;AAAA,IACA,yBAAyB,OAAO;AAC5B,UAAI,cAAc,KAAK,oBAAoB,IAAI,KAAK;AACpD,UAAI,CAAC,aAAa;AACd,sBAAc,KAAK,WAAW,KAAK;AACnC,aAAK,oBAAoB,IAAI,OAAO,WAAW;AAAA,MACnD;AACA,aAAO;AAAA,IACX;AAAA,IACA,6BAA6B,SAAS;AAClC,UAAI,gBAAgB,KAAK,uBAAuB,IAAI,OAAO;AAC3D,UAAI,CAAC,eAAe;AAChB,wBAAgB,oBAAI,IAAI;AACxB,aAAK,uBAAuB,IAAI,SAAS,aAAa;AAAA,MAC1D;AACA,aAAO;AAAA,IACX;AAAA,IACA,WAAW,OAAO;AACd,UAAI;AACA,cAAM,QAAQ,KAAK,SAAS,mBAAmB,KAAK;AACpD,eAAO,EAAE,MAAM;AAAA,MACnB,SACOE,QAAO;AACV,eAAO,EAAE,OAAAA,OAAM;AAAA,MACnB;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,kBAAN,MAAsB;AAAA,IAClB,YAAY,SAAS,UAAU;AAC3B,WAAK,UAAU;AACf,WAAK,WAAW;AAChB,WAAK,mBAAmB,oBAAI,IAAI;AAAA,IACpC;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,mBAAmB;AACzB,aAAK,oBAAoB,IAAI,kBAAkB,KAAK,SAAS,KAAK,iBAAiB,IAAI;AACvF,aAAK,kBAAkB,MAAM;AAAA,MACjC;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,mBAAmB;AACxB,aAAK,kBAAkB,KAAK;AAC5B,eAAO,KAAK;AACZ,aAAK,qBAAqB;AAAA,MAC9B;AAAA,IACJ;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,kBAAkB;AAClB,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,WAAW;AACX,aAAO,MAAM,KAAK,KAAK,iBAAiB,OAAO,CAAC;AAAA,IACpD;AAAA,IACA,cAAc,QAAQ;AAClB,YAAM,UAAU,IAAI,QAAQ,KAAK,SAAS,MAAM;AAChD,WAAK,iBAAiB,IAAI,QAAQ,OAAO;AACzC,WAAK,SAAS,iBAAiB,OAAO;AAAA,IAC1C;AAAA,IACA,iBAAiB,QAAQ;AACrB,YAAM,UAAU,KAAK,iBAAiB,IAAI,MAAM;AAChD,UAAI,SAAS;AACT,aAAK,iBAAiB,OAAO,MAAM;AACnC,aAAK,SAAS,oBAAoB,OAAO;AAAA,MAC7C;AAAA,IACJ;AAAA,IACA,uBAAuB;AACnB,WAAK,SAAS,QAAQ,CAAC,YAAY,KAAK,SAAS,oBAAoB,SAAS,IAAI,CAAC;AACnF,WAAK,iBAAiB,MAAM;AAAA,IAChC;AAAA,IACA,mBAAmB,OAAO;AACtB,YAAM,SAAS,OAAO,SAAS,OAAO,KAAK,MAAM;AACjD,UAAI,OAAO,cAAc,KAAK,YAAY;AACtC,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,oBAAoB,SAAS,QAAQ;AACjC,WAAK,cAAc,MAAM;AAAA,IAC7B;AAAA,IACA,sBAAsB,SAAS,QAAQ;AACnC,WAAK,iBAAiB,MAAM;AAAA,IAChC;AAAA,EACJ;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAChB,YAAY,SAAS,UAAU;AAC3B,WAAK,UAAU;AACf,WAAK,WAAW;AAChB,WAAK,oBAAoB,IAAI,kBAAkB,KAAK,SAAS,IAAI;AACjE,WAAK,qBAAqB,KAAK,WAAW;AAAA,IAC9C;AAAA,IACA,QAAQ;AACJ,WAAK,kBAAkB,MAAM;AAC7B,WAAK,uCAAuC;AAAA,IAChD;AAAA,IACA,OAAO;AACH,WAAK,kBAAkB,KAAK;AAAA,IAChC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,4BAA4B,eAAe;AACvC,UAAI,iBAAiB,KAAK,oBAAoB;AAC1C,eAAO,KAAK,mBAAmB,aAAa,EAAE;AAAA,MAClD;AAAA,IACJ;AAAA,IACA,kBAAkB,KAAK,eAAe;AAClC,YAAM,aAAa,KAAK,mBAAmB,aAAa;AACxD,UAAI,CAAC,KAAK,SAAS,GAAG,GAAG;AACrB,aAAK,sBAAsB,KAAK,WAAW,OAAO,KAAK,SAAS,GAAG,CAAC,GAAG,WAAW,OAAO,WAAW,YAAY,CAAC;AAAA,MACrH;AAAA,IACJ;AAAA,IACA,sBAAsB,OAAO,MAAM,UAAU;AACzC,YAAM,aAAa,KAAK,uBAAuB,IAAI;AACnD,UAAI,UAAU;AACV;AACJ,UAAI,aAAa,MAAM;AACnB,mBAAW,WAAW,OAAO,WAAW,YAAY;AAAA,MACxD;AACA,WAAK,sBAAsB,MAAM,OAAO,QAAQ;AAAA,IACpD;AAAA,IACA,oBAAoB,KAAK,eAAe,UAAU;AAC9C,YAAM,aAAa,KAAK,uBAAuB,GAAG;AAClD,UAAI,KAAK,SAAS,GAAG,GAAG;AACpB,aAAK,sBAAsB,KAAK,WAAW,OAAO,KAAK,SAAS,GAAG,CAAC,GAAG,QAAQ;AAAA,MACnF,OACK;AACD,aAAK,sBAAsB,KAAK,WAAW,OAAO,WAAW,YAAY,GAAG,QAAQ;AAAA,MACxF;AAAA,IACJ;AAAA,IACA,yCAAyC;AACrC,iBAAW,EAAE,KAAK,MAAM,cAAc,OAAO,KAAK,KAAK,kBAAkB;AACrE,YAAI,gBAAgB,UAAa,CAAC,KAAK,WAAW,KAAK,IAAI,GAAG,GAAG;AAC7D,eAAK,sBAAsB,MAAM,OAAO,YAAY,GAAG,MAAS;AAAA,QACpE;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,sBAAsB,MAAM,UAAU,aAAa;AAC/C,YAAM,oBAAoB,GAAG,IAAI;AACjC,YAAM,gBAAgB,KAAK,SAAS,iBAAiB;AACrD,UAAI,OAAO,iBAAiB,YAAY;AACpC,cAAM,aAAa,KAAK,uBAAuB,IAAI;AACnD,YAAI;AACA,gBAAM,QAAQ,WAAW,OAAO,QAAQ;AACxC,cAAI,WAAW;AACf,cAAI,aAAa;AACb,uBAAW,WAAW,OAAO,WAAW;AAAA,UAC5C;AACA,wBAAc,KAAK,KAAK,UAAU,OAAO,QAAQ;AAAA,QACrD,SACOA,QAAO;AACV,cAAIA,kBAAiB,WAAW;AAC5B,YAAAA,OAAM,UAAU,mBAAmB,KAAK,QAAQ,UAAU,IAAI,WAAW,IAAI,OAAOA,OAAM,OAAO;AAAA,UACrG;AACA,gBAAMA;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,IAAI,mBAAmB;AACnB,YAAM,EAAE,mBAAmB,IAAI;AAC/B,aAAO,OAAO,KAAK,kBAAkB,EAAE,IAAI,CAAC,QAAQ,mBAAmB,GAAG,CAAC;AAAA,IAC/E;AAAA,IACA,IAAI,yBAAyB;AACzB,YAAMC,eAAc,CAAC;AACrB,aAAO,KAAK,KAAK,kBAAkB,EAAE,QAAQ,CAAC,QAAQ;AAClD,cAAM,aAAa,KAAK,mBAAmB,GAAG;AAC9C,QAAAA,aAAY,WAAW,IAAI,IAAI;AAAA,MACnC,CAAC;AACD,aAAOA;AAAA,IACX;AAAA,IACA,SAAS,eAAe;AACpB,YAAM,aAAa,KAAK,uBAAuB,aAAa;AAC5D,YAAM,gBAAgB,MAAM,WAAW,WAAW,IAAI,CAAC;AACvD,aAAO,KAAK,SAAS,aAAa;AAAA,IACtC;AAAA,EACJ;AAEA,MAAM,iBAAN,MAAqB;AAAA,IACjB,YAAY,SAAS,UAAU;AAC3B,WAAK,UAAU;AACf,WAAK,WAAW;AAChB,WAAK,gBAAgB,IAAI,SAAS;AAAA,IACtC;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,mBAAmB;AACzB,aAAK,oBAAoB,IAAI,kBAAkB,KAAK,SAAS,KAAK,eAAe,IAAI;AACrF,aAAK,kBAAkB,MAAM;AAAA,MACjC;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,mBAAmB;AACxB,aAAK,qBAAqB;AAC1B,aAAK,kBAAkB,KAAK;AAC5B,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,aAAa,EAAE,SAAS,SAAS,KAAK,GAAG;AACrC,UAAI,KAAK,MAAM,gBAAgB,OAAO,GAAG;AACrC,aAAK,cAAc,SAAS,IAAI;AAAA,MACpC;AAAA,IACJ;AAAA,IACA,eAAe,EAAE,SAAS,SAAS,KAAK,GAAG;AACvC,WAAK,iBAAiB,SAAS,IAAI;AAAA,IACvC;AAAA,IACA,cAAc,SAAS,MAAM;AACzB,UAAI;AACJ,UAAI,CAAC,KAAK,cAAc,IAAI,MAAM,OAAO,GAAG;AACxC,aAAK,cAAc,IAAI,MAAM,OAAO;AACpC,SAAC,KAAK,KAAK,uBAAuB,QAAQ,OAAO,SAAS,SAAS,GAAG,MAAM,MAAM,KAAK,SAAS,gBAAgB,SAAS,IAAI,CAAC;AAAA,MAClI;AAAA,IACJ;AAAA,IACA,iBAAiB,SAAS,MAAM;AAC5B,UAAI;AACJ,UAAI,KAAK,cAAc,IAAI,MAAM,OAAO,GAAG;AACvC,aAAK,cAAc,OAAO,MAAM,OAAO;AACvC,SAAC,KAAK,KAAK,uBAAuB,QAAQ,OAAO,SAAS,SAAS,GAAG,MAAM,MAAM,KAAK,SAAS,mBAAmB,SAAS,IAAI,CAAC;AAAA,MACrI;AAAA,IACJ;AAAA,IACA,uBAAuB;AACnB,iBAAW,QAAQ,KAAK,cAAc,MAAM;AACxC,mBAAW,WAAW,KAAK,cAAc,gBAAgB,IAAI,GAAG;AAC5D,eAAK,iBAAiB,SAAS,IAAI;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,QAAQ,KAAK,QAAQ,UAAU;AAAA,IAC1C;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,EACJ;AAEA,WAAS,iCAAiC,aAAa,cAAc;AACjE,UAAM,YAAY,2BAA2B,WAAW;AACxD,WAAO,MAAM,KAAK,UAAU,OAAO,CAAC,QAAQC,iBAAgB;AACxD,8BAAwBA,cAAa,YAAY,EAAE,QAAQ,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC;AACrF,aAAO;AAAA,IACX,GAAG,oBAAI,IAAI,CAAC,CAAC;AAAA,EACjB;AACA,WAAS,iCAAiC,aAAa,cAAc;AACjE,UAAM,YAAY,2BAA2B,WAAW;AACxD,WAAO,UAAU,OAAO,CAAC,OAAOA,iBAAgB;AAC5C,YAAM,KAAK,GAAG,wBAAwBA,cAAa,YAAY,CAAC;AAChE,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;AACA,WAAS,2BAA2B,aAAa;AAC7C,UAAM,YAAY,CAAC;AACnB,WAAO,aAAa;AAChB,gBAAU,KAAK,WAAW;AAC1B,oBAAc,OAAO,eAAe,WAAW;AAAA,IACnD;AACA,WAAO,UAAU,QAAQ;AAAA,EAC7B;AACA,WAAS,wBAAwB,aAAa,cAAc;AACxD,UAAM,aAAa,YAAY,YAAY;AAC3C,WAAO,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC;AAAA,EACrD;AACA,WAAS,wBAAwB,aAAa,cAAc;AACxD,UAAM,aAAa,YAAY,YAAY;AAC3C,WAAO,aAAa,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,EACxF;AAEA,MAAM,iBAAN,MAAqB;AAAA,IACjB,YAAY,SAAS,UAAU;AAC3B,WAAK,UAAU;AACf,WAAK,UAAU;AACf,WAAK,WAAW;AAChB,WAAK,gBAAgB,IAAI,SAAS;AAClC,WAAK,uBAAuB,IAAI,SAAS;AACzC,WAAK,sBAAsB,oBAAI,IAAI;AACnC,WAAK,uBAAuB,oBAAI,IAAI;AAAA,IACxC;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,kBAAkB,QAAQ,CAAC,eAAe;AAC3C,eAAK,+BAA+B,UAAU;AAC9C,eAAK,gCAAgC,UAAU;AAAA,QACnD,CAAC;AACD,aAAK,UAAU;AACf,aAAK,kBAAkB,QAAQ,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAAA,MACjE;AAAA,IACJ;AAAA,IACA,UAAU;AACN,WAAK,oBAAoB,QAAQ,CAAC,aAAa,SAAS,QAAQ,CAAC;AACjE,WAAK,qBAAqB,QAAQ,CAAC,aAAa,SAAS,QAAQ,CAAC;AAAA,IACtE;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,qBAAqB;AAC1B,aAAK,sBAAsB;AAC3B,aAAK,uBAAuB;AAAA,MAChC;AAAA,IACJ;AAAA,IACA,wBAAwB;AACpB,UAAI,KAAK,oBAAoB,OAAO,GAAG;AACnC,aAAK,oBAAoB,QAAQ,CAAC,aAAa,SAAS,KAAK,CAAC;AAC9D,aAAK,oBAAoB,MAAM;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,yBAAyB;AACrB,UAAI,KAAK,qBAAqB,OAAO,GAAG;AACpC,aAAK,qBAAqB,QAAQ,CAAC,aAAa,SAAS,KAAK,CAAC;AAC/D,aAAK,qBAAqB,MAAM;AAAA,MACpC;AAAA,IACJ;AAAA,IACA,gBAAgB,SAAS,WAAW,EAAE,WAAW,GAAG;AAChD,YAAM,SAAS,KAAK,UAAU,SAAS,UAAU;AACjD,UAAI,QAAQ;AACR,aAAK,cAAc,QAAQ,SAAS,UAAU;AAAA,MAClD;AAAA,IACJ;AAAA,IACA,kBAAkB,SAAS,WAAW,EAAE,WAAW,GAAG;AAClD,YAAM,SAAS,KAAK,iBAAiB,SAAS,UAAU;AACxD,UAAI,QAAQ;AACR,aAAK,iBAAiB,QAAQ,SAAS,UAAU;AAAA,MACrD;AAAA,IACJ;AAAA,IACA,qBAAqB,SAAS,EAAE,WAAW,GAAG;AAC1C,YAAM,WAAW,KAAK,SAAS,UAAU;AACzC,YAAM,YAAY,KAAK,UAAU,SAAS,UAAU;AACpD,YAAM,sBAAsB,QAAQ,QAAQ,IAAI,KAAK,OAAO,mBAAmB,KAAK,UAAU,GAAG;AACjG,UAAI,UAAU;AACV,eAAO,aAAa,uBAAuB,QAAQ,QAAQ,QAAQ;AAAA,MACvE,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,wBAAwB,UAAU,eAAe;AAC7C,YAAM,aAAa,KAAK,qCAAqC,aAAa;AAC1E,UAAI,YAAY;AACZ,aAAK,gCAAgC,UAAU;AAAA,MACnD;AAAA,IACJ;AAAA,IACA,6BAA6B,UAAU,eAAe;AAClD,YAAM,aAAa,KAAK,qCAAqC,aAAa;AAC1E,UAAI,YAAY;AACZ,aAAK,gCAAgC,UAAU;AAAA,MACnD;AAAA,IACJ;AAAA,IACA,0BAA0B,UAAU,eAAe;AAC/C,YAAM,aAAa,KAAK,qCAAqC,aAAa;AAC1E,UAAI,YAAY;AACZ,aAAK,gCAAgC,UAAU;AAAA,MACnD;AAAA,IACJ;AAAA,IACA,cAAc,QAAQ,SAAS,YAAY;AACvC,UAAI;AACJ,UAAI,CAAC,KAAK,qBAAqB,IAAI,YAAY,OAAO,GAAG;AACrD,aAAK,cAAc,IAAI,YAAY,MAAM;AACzC,aAAK,qBAAqB,IAAI,YAAY,OAAO;AACjD,SAAC,KAAK,KAAK,oBAAoB,IAAI,UAAU,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,MAAM,MAAM,KAAK,SAAS,gBAAgB,QAAQ,SAAS,UAAU,CAAC;AAAA,MAClK;AAAA,IACJ;AAAA,IACA,iBAAiB,QAAQ,SAAS,YAAY;AAC1C,UAAI;AACJ,UAAI,KAAK,qBAAqB,IAAI,YAAY,OAAO,GAAG;AACpD,aAAK,cAAc,OAAO,YAAY,MAAM;AAC5C,aAAK,qBAAqB,OAAO,YAAY,OAAO;AACpD,SAAC,KAAK,KAAK,oBACN,IAAI,UAAU,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,MAAM,MAAM,KAAK,SAAS,mBAAmB,QAAQ,SAAS,UAAU,CAAC;AAAA,MAC3I;AAAA,IACJ;AAAA,IACA,uBAAuB;AACnB,iBAAW,cAAc,KAAK,qBAAqB,MAAM;AACrD,mBAAW,WAAW,KAAK,qBAAqB,gBAAgB,UAAU,GAAG;AACzE,qBAAW,UAAU,KAAK,cAAc,gBAAgB,UAAU,GAAG;AACjE,iBAAK,iBAAiB,QAAQ,SAAS,UAAU;AAAA,UACrD;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,gCAAgC,YAAY;AACxC,YAAM,WAAW,KAAK,oBAAoB,IAAI,UAAU;AACxD,UAAI,UAAU;AACV,iBAAS,WAAW,KAAK,SAAS,UAAU;AAAA,MAChD;AAAA,IACJ;AAAA,IACA,+BAA+B,YAAY;AACvC,YAAM,WAAW,KAAK,SAAS,UAAU;AACzC,YAAM,mBAAmB,IAAI,iBAAiB,SAAS,MAAM,UAAU,MAAM,EAAE,WAAW,CAAC;AAC3F,WAAK,oBAAoB,IAAI,YAAY,gBAAgB;AACzD,uBAAiB,MAAM;AAAA,IAC3B;AAAA,IACA,gCAAgC,YAAY;AACxC,YAAM,gBAAgB,KAAK,2BAA2B,UAAU;AAChE,YAAM,oBAAoB,IAAI,kBAAkB,KAAK,MAAM,SAAS,eAAe,IAAI;AACvF,WAAK,qBAAqB,IAAI,YAAY,iBAAiB;AAC3D,wBAAkB,MAAM;AAAA,IAC5B;AAAA,IACA,SAAS,YAAY;AACjB,aAAO,KAAK,MAAM,QAAQ,yBAAyB,UAAU;AAAA,IACjE;AAAA,IACA,2BAA2B,YAAY;AACnC,aAAO,KAAK,MAAM,OAAO,wBAAwB,KAAK,YAAY,UAAU;AAAA,IAChF;AAAA,IACA,qCAAqC,eAAe;AAChD,aAAO,KAAK,kBAAkB,KAAK,CAAC,eAAe,KAAK,2BAA2B,UAAU,MAAM,aAAa;AAAA,IACpH;AAAA,IACA,IAAI,qBAAqB;AACrB,YAAM,eAAe,IAAI,SAAS;AAClC,WAAK,OAAO,QAAQ,QAAQ,CAAC,WAAW;AACpC,cAAM,cAAc,OAAO,WAAW;AACtC,cAAM,UAAU,iCAAiC,aAAa,SAAS;AACvE,gBAAQ,QAAQ,CAAC,WAAW,aAAa,IAAI,QAAQ,OAAO,UAAU,CAAC;AAAA,MAC3E,CAAC;AACD,aAAO;AAAA,IACX;AAAA,IACA,IAAI,oBAAoB;AACpB,aAAO,KAAK,mBAAmB,gBAAgB,KAAK,UAAU;AAAA,IAClE;AAAA,IACA,IAAI,iCAAiC;AACjC,aAAO,KAAK,mBAAmB,gBAAgB,KAAK,UAAU;AAAA,IAClE;AAAA,IACA,IAAI,oBAAoB;AACpB,YAAM,cAAc,KAAK;AACzB,aAAO,KAAK,OAAO,SAAS,OAAO,CAAC,YAAY,YAAY,SAAS,QAAQ,UAAU,CAAC;AAAA,IAC5F;AAAA,IACA,UAAU,SAAS,YAAY;AAC3B,aAAO,CAAC,CAAC,KAAK,UAAU,SAAS,UAAU,KAAK,CAAC,CAAC,KAAK,iBAAiB,SAAS,UAAU;AAAA,IAC/F;AAAA,IACA,UAAU,SAAS,YAAY;AAC3B,aAAO,KAAK,YAAY,qCAAqC,SAAS,UAAU;AAAA,IACpF;AAAA,IACA,iBAAiB,SAAS,YAAY;AAClC,aAAO,KAAK,cAAc,gBAAgB,UAAU,EAAE,KAAK,CAAC,WAAW,OAAO,YAAY,OAAO;AAAA,IACrG;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAM,UAAN,MAAc;AAAA,IACV,YAAY,QAAQ,OAAO;AACvB,WAAK,mBAAmB,CAAC,cAAc,SAAS,CAAC,MAAM;AACnD,cAAM,EAAE,YAAY,YAAY,QAAQ,IAAI;AAC5C,iBAAS,OAAO,OAAO,EAAE,YAAY,YAAY,QAAQ,GAAG,MAAM;AAClE,aAAK,YAAY,iBAAiB,KAAK,YAAY,cAAc,MAAM;AAAA,MAC3E;AACA,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,aAAa,IAAI,OAAO,sBAAsB,IAAI;AACvD,WAAK,kBAAkB,IAAI,gBAAgB,MAAM,KAAK,UAAU;AAChE,WAAK,gBAAgB,IAAI,cAAc,MAAM,KAAK,UAAU;AAC5D,WAAK,iBAAiB,IAAI,eAAe,MAAM,IAAI;AACnD,WAAK,iBAAiB,IAAI,eAAe,MAAM,IAAI;AACnD,UAAI;AACA,aAAK,WAAW,WAAW;AAC3B,aAAK,iBAAiB,YAAY;AAAA,MACtC,SACOF,QAAO;AACV,aAAK,YAAYA,QAAO,yBAAyB;AAAA,MACrD;AAAA,IACJ;AAAA,IACA,UAAU;AACN,WAAK,gBAAgB,MAAM;AAC3B,WAAK,cAAc,MAAM;AACzB,WAAK,eAAe,MAAM;AAC1B,WAAK,eAAe,MAAM;AAC1B,UAAI;AACA,aAAK,WAAW,QAAQ;AACxB,aAAK,iBAAiB,SAAS;AAAA,MACnC,SACOA,QAAO;AACV,aAAK,YAAYA,QAAO,uBAAuB;AAAA,MACnD;AAAA,IACJ;AAAA,IACA,UAAU;AACN,WAAK,eAAe,QAAQ;AAAA,IAChC;AAAA,IACA,aAAa;AACT,UAAI;AACA,aAAK,WAAW,WAAW;AAC3B,aAAK,iBAAiB,YAAY;AAAA,MACtC,SACOA,QAAO;AACV,aAAK,YAAYA,QAAO,0BAA0B;AAAA,MACtD;AACA,WAAK,eAAe,KAAK;AACzB,WAAK,eAAe,KAAK;AACzB,WAAK,cAAc,KAAK;AACxB,WAAK,gBAAgB,KAAK;AAAA,IAC9B;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,YAAYA,QAAOG,UAAS,SAAS,CAAC,GAAG;AACrC,YAAM,EAAE,YAAY,YAAY,QAAQ,IAAI;AAC5C,eAAS,OAAO,OAAO,EAAE,YAAY,YAAY,QAAQ,GAAG,MAAM;AAClE,WAAK,YAAY,YAAYH,QAAO,SAASG,QAAO,IAAI,MAAM;AAAA,IAClE;AAAA,IACA,gBAAgB,SAAS,MAAM;AAC3B,WAAK,uBAAuB,GAAG,IAAI,mBAAmB,OAAO;AAAA,IACjE;AAAA,IACA,mBAAmB,SAAS,MAAM;AAC9B,WAAK,uBAAuB,GAAG,IAAI,sBAAsB,OAAO;AAAA,IACpE;AAAA,IACA,gBAAgB,QAAQ,SAAS,MAAM;AACnC,WAAK,uBAAuB,GAAG,kBAAkB,IAAI,CAAC,mBAAmB,QAAQ,OAAO;AAAA,IAC5F;AAAA,IACA,mBAAmB,QAAQ,SAAS,MAAM;AACtC,WAAK,uBAAuB,GAAG,kBAAkB,IAAI,CAAC,sBAAsB,QAAQ,OAAO;AAAA,IAC/F;AAAA,IACA,uBAAuB,eAAe,MAAM;AACxC,YAAM,aAAa,KAAK;AACxB,UAAI,OAAO,WAAW,UAAU,KAAK,YAAY;AAC7C,mBAAW,UAAU,EAAE,GAAG,IAAI;AAAA,MAClC;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,MAAM,aAAa;AACxB,WAAO,OAAO,aAAa,qBAAqB,WAAW,CAAC;AAAA,EAChE;AACA,WAAS,OAAO,aAAa,YAAY;AACrC,UAAM,oBAAoB,OAAO,WAAW;AAC5C,UAAM,mBAAmB,oBAAoB,YAAY,WAAW,UAAU;AAC9E,WAAO,iBAAiB,kBAAkB,WAAW,gBAAgB;AACrE,WAAO;AAAA,EACX;AACA,WAAS,qBAAqB,aAAa;AACvC,UAAM,YAAY,iCAAiC,aAAa,WAAW;AAC3E,WAAO,UAAU,OAAO,CAAC,mBAAmB,aAAa;AACrD,YAAM,aAAa,SAAS,WAAW;AACvC,iBAAW,OAAO,YAAY;AAC1B,cAAM,aAAa,kBAAkB,GAAG,KAAK,CAAC;AAC9C,0BAAkB,GAAG,IAAI,OAAO,OAAO,YAAY,WAAW,GAAG,CAAC;AAAA,MACtE;AACA,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;AACA,WAAS,oBAAoB,WAAW,YAAY;AAChD,WAAO,WAAW,UAAU,EAAE,OAAO,CAAC,kBAAkB,QAAQ;AAC5D,YAAM,aAAa,sBAAsB,WAAW,YAAY,GAAG;AACnE,UAAI,YAAY;AACZ,eAAO,OAAO,kBAAkB,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;AAAA,MACzD;AACA,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;AACA,WAAS,sBAAsB,WAAW,YAAY,KAAK;AACvD,UAAM,sBAAsB,OAAO,yBAAyB,WAAW,GAAG;AAC1E,UAAM,kBAAkB,uBAAuB,WAAW;AAC1D,QAAI,CAAC,iBAAiB;AAClB,YAAM,aAAa,OAAO,yBAAyB,YAAY,GAAG,EAAE;AACpE,UAAI,qBAAqB;AACrB,mBAAW,MAAM,oBAAoB,OAAO,WAAW;AACvD,mBAAW,MAAM,oBAAoB,OAAO,WAAW;AAAA,MAC3D;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,MAAM,cAAc,MAAM;AACtB,QAAI,OAAO,OAAO,yBAAyB,YAAY;AACnD,aAAO,CAAC,WAAW,CAAC,GAAG,OAAO,oBAAoB,MAAM,GAAG,GAAG,OAAO,sBAAsB,MAAM,CAAC;AAAA,IACtG,OACK;AACD,aAAO,OAAO;AAAA,IAClB;AAAA,EACJ,GAAG;AACH,MAAM,UAAU,MAAM;AAClB,aAAS,kBAAkB,aAAa;AACpC,eAAS,WAAW;AAChB,eAAO,QAAQ,UAAU,aAAa,WAAW,UAAU;AAAA,MAC/D;AACA,eAAS,YAAY,OAAO,OAAO,YAAY,WAAW;AAAA,QACtD,aAAa,EAAE,OAAO,SAAS;AAAA,MACnC,CAAC;AACD,cAAQ,eAAe,UAAU,WAAW;AAC5C,aAAO;AAAA,IACX;AACA,aAAS,uBAAuB;AAC5B,YAAMC,KAAI,WAAY;AAClB,aAAK,EAAE,KAAK,IAAI;AAAA,MACpB;AACA,YAAMC,KAAI,kBAAkBD,EAAC;AAC7B,MAAAC,GAAE,UAAU,IAAI,WAAY;AAAA,MAAE;AAC9B,aAAO,IAAIA,GAAE;AAAA,IACjB;AACA,QAAI;AACA,2BAAqB;AACrB,aAAO;AAAA,IACX,SACOL,QAAO;AACV,aAAO,CAAC,gBAAgB,MAAM,iBAAiB,YAAY;AAAA,MAC3D;AAAA,IACJ;AAAA,EACJ,GAAG;AAEH,WAAS,gBAAgB,YAAY;AACjC,WAAO;AAAA,MACH,YAAY,WAAW;AAAA,MACvB,uBAAuB,MAAM,WAAW,qBAAqB;AAAA,IACjE;AAAA,EACJ;AAEA,MAAM,SAAN,MAAa;AAAA,IACT,YAAYM,cAAa,YAAY;AACjC,WAAK,cAAcA;AACnB,WAAK,aAAa,gBAAgB,UAAU;AAC5C,WAAK,kBAAkB,oBAAI,QAAQ;AACnC,WAAK,oBAAoB,oBAAI,IAAI;AAAA,IACrC;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,WAAW;AAAA,IAC3B;AAAA,IACA,IAAI,wBAAwB;AACxB,aAAO,KAAK,WAAW;AAAA,IAC3B;AAAA,IACA,IAAI,WAAW;AACX,aAAO,MAAM,KAAK,KAAK,iBAAiB;AAAA,IAC5C;AAAA,IACA,uBAAuB,OAAO;AAC1B,YAAM,UAAU,KAAK,qBAAqB,KAAK;AAC/C,WAAK,kBAAkB,IAAI,OAAO;AAClC,cAAQ,QAAQ;AAAA,IACpB;AAAA,IACA,0BAA0B,OAAO;AAC7B,YAAM,UAAU,KAAK,gBAAgB,IAAI,KAAK;AAC9C,UAAI,SAAS;AACT,aAAK,kBAAkB,OAAO,OAAO;AACrC,gBAAQ,WAAW;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,qBAAqB,OAAO;AACxB,UAAI,UAAU,KAAK,gBAAgB,IAAI,KAAK;AAC5C,UAAI,CAAC,SAAS;AACV,kBAAU,IAAI,QAAQ,MAAM,KAAK;AACjC,aAAK,gBAAgB,IAAI,OAAO,OAAO;AAAA,MAC3C;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAM,WAAN,MAAe;AAAA,IACX,YAAY,OAAO;AACf,WAAK,QAAQ;AAAA,IACjB;AAAA,IACA,IAAI,MAAM;AACN,aAAO,KAAK,KAAK,IAAI,KAAK,WAAW,IAAI,CAAC;AAAA,IAC9C;AAAA,IACA,IAAI,MAAM;AACN,aAAO,KAAK,OAAO,IAAI,EAAE,CAAC;AAAA,IAC9B;AAAA,IACA,OAAO,MAAM;AACT,YAAM,cAAc,KAAK,KAAK,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK;AAC5D,aAAO,SAAS,WAAW;AAAA,IAC/B;AAAA,IACA,iBAAiB,MAAM;AACnB,aAAO,KAAK,KAAK,uBAAuB,KAAK,WAAW,IAAI,CAAC;AAAA,IACjE;AAAA,IACA,WAAW,MAAM;AACb,aAAO,GAAG,IAAI;AAAA,IAClB;AAAA,IACA,IAAI,OAAO;AACP,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,EACJ;AAEA,MAAM,UAAN,MAAc;AAAA,IACV,YAAY,OAAO;AACf,WAAK,QAAQ;AAAA,IACjB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,KAAK;AACL,YAAM,OAAO,KAAK,uBAAuB,GAAG;AAC5C,aAAO,KAAK,QAAQ,aAAa,IAAI;AAAA,IACzC;AAAA,IACA,IAAI,KAAK,OAAO;AACZ,YAAM,OAAO,KAAK,uBAAuB,GAAG;AAC5C,WAAK,QAAQ,aAAa,MAAM,KAAK;AACrC,aAAO,KAAK,IAAI,GAAG;AAAA,IACvB;AAAA,IACA,IAAI,KAAK;AACL,YAAM,OAAO,KAAK,uBAAuB,GAAG;AAC5C,aAAO,KAAK,QAAQ,aAAa,IAAI;AAAA,IACzC;AAAA,IACA,OAAO,KAAK;AACR,UAAI,KAAK,IAAI,GAAG,GAAG;AACf,cAAM,OAAO,KAAK,uBAAuB,GAAG;AAC5C,aAAK,QAAQ,gBAAgB,IAAI;AACjC,eAAO;AAAA,MACX,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,uBAAuB,KAAK;AACxB,aAAO,QAAQ,KAAK,UAAU,IAAI,UAAU,GAAG,CAAC;AAAA,IACpD;AAAA,EACJ;AAEA,MAAM,QAAN,MAAY;AAAA,IACR,YAAY,QAAQ;AAChB,WAAK,qBAAqB,oBAAI,QAAQ;AACtC,WAAK,SAAS;AAAA,IAClB;AAAA,IACA,KAAK,QAAQ,KAAKH,UAAS;AACvB,UAAI,aAAa,KAAK,mBAAmB,IAAI,MAAM;AACnD,UAAI,CAAC,YAAY;AACb,qBAAa,oBAAI,IAAI;AACrB,aAAK,mBAAmB,IAAI,QAAQ,UAAU;AAAA,MAClD;AACA,UAAI,CAAC,WAAW,IAAI,GAAG,GAAG;AACtB,mBAAW,IAAI,GAAG;AAClB,aAAK,OAAO,KAAKA,UAAS,MAAM;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,4BAA4B,eAAe,OAAO;AACvD,WAAO,IAAI,aAAa,MAAM,KAAK;AAAA,EACvC;AAEA,MAAM,YAAN,MAAgB;AAAA,IACZ,YAAY,OAAO;AACf,WAAK,QAAQ;AAAA,IACjB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,YAAY;AACZ,aAAO,KAAK,KAAK,UAAU,KAAK;AAAA,IACpC;AAAA,IACA,QAAQ,aAAa;AACjB,aAAO,YAAY,OAAO,CAAC,QAAQ,eAAe,UAAU,KAAK,WAAW,UAAU,KAAK,KAAK,iBAAiB,UAAU,GAAG,MAAS;AAAA,IAC3I;AAAA,IACA,WAAW,aAAa;AACpB,aAAO,YAAY,OAAO,CAAC,SAAS,eAAe;AAAA,QAC/C,GAAG;AAAA,QACH,GAAG,KAAK,eAAe,UAAU;AAAA,QACjC,GAAG,KAAK,qBAAqB,UAAU;AAAA,MAC3C,GAAG,CAAC,CAAC;AAAA,IACT;AAAA,IACA,WAAW,YAAY;AACnB,YAAM,WAAW,KAAK,yBAAyB,UAAU;AACzD,aAAO,KAAK,MAAM,YAAY,QAAQ;AAAA,IAC1C;AAAA,IACA,eAAe,YAAY;AACvB,YAAM,WAAW,KAAK,yBAAyB,UAAU;AACzD,aAAO,KAAK,MAAM,gBAAgB,QAAQ;AAAA,IAC9C;AAAA,IACA,yBAAyB,YAAY;AACjC,YAAM,gBAAgB,KAAK,OAAO,wBAAwB,KAAK,UAAU;AACzE,aAAO,4BAA4B,eAAe,UAAU;AAAA,IAChE;AAAA,IACA,iBAAiB,YAAY;AACzB,YAAM,WAAW,KAAK,+BAA+B,UAAU;AAC/D,aAAO,KAAK,UAAU,KAAK,MAAM,YAAY,QAAQ,GAAG,UAAU;AAAA,IACtE;AAAA,IACA,qBAAqB,YAAY;AAC7B,YAAM,WAAW,KAAK,+BAA+B,UAAU;AAC/D,aAAO,KAAK,MAAM,gBAAgB,QAAQ,EAAE,IAAI,CAAC,YAAY,KAAK,UAAU,SAAS,UAAU,CAAC;AAAA,IACpG;AAAA,IACA,+BAA+B,YAAY;AACvC,YAAM,mBAAmB,GAAG,KAAK,UAAU,IAAI,UAAU;AACzD,aAAO,4BAA4B,KAAK,OAAO,iBAAiB,gBAAgB;AAAA,IACpF;AAAA,IACA,UAAU,SAAS,YAAY;AAC3B,UAAI,SAAS;AACT,cAAM,EAAE,WAAW,IAAI;AACvB,cAAM,gBAAgB,KAAK,OAAO;AAClC,cAAM,uBAAuB,KAAK,OAAO,wBAAwB,UAAU;AAC3E,aAAK,MAAM,KAAK,SAAS,UAAU,UAAU,IAAI,kBAAkB,aAAa,KAAK,UAAU,IAAI,UAAU,UAAU,oBAAoB,KAAK,UAAU,UAC/I,aAAa,+EAA+E;AAAA,MAC3G;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,EACJ;AAEA,MAAM,YAAN,MAAgB;AAAA,IACZ,YAAY,OAAO,mBAAmB;AAClC,WAAK,QAAQ;AACb,WAAK,oBAAoB;AAAA,IAC7B;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,YAAY;AACZ,aAAO,KAAK,KAAK,UAAU,KAAK;AAAA,IACpC;AAAA,IACA,QAAQ,aAAa;AACjB,aAAO,YAAY,OAAO,CAAC,QAAQ,eAAe,UAAU,KAAK,WAAW,UAAU,GAAG,MAAS;AAAA,IACtG;AAAA,IACA,WAAW,aAAa;AACpB,aAAO,YAAY,OAAO,CAAC,SAAS,eAAe,CAAC,GAAG,SAAS,GAAG,KAAK,eAAe,UAAU,CAAC,GAAG,CAAC,CAAC;AAAA,IAC3G;AAAA,IACA,yBAAyB,YAAY;AACjC,YAAM,gBAAgB,KAAK,OAAO,wBAAwB,KAAK,YAAY,UAAU;AACrF,aAAO,KAAK,kBAAkB,aAAa,aAAa;AAAA,IAC5D;AAAA,IACA,WAAW,YAAY;AACnB,YAAM,WAAW,KAAK,yBAAyB,UAAU;AACzD,UAAI;AACA,eAAO,KAAK,YAAY,UAAU,UAAU;AAAA,IACpD;AAAA,IACA,eAAe,YAAY;AACvB,YAAM,WAAW,KAAK,yBAAyB,UAAU;AACzD,aAAO,WAAW,KAAK,gBAAgB,UAAU,UAAU,IAAI,CAAC;AAAA,IACpE;AAAA,IACA,YAAY,UAAU,YAAY;AAC9B,YAAMI,YAAW,KAAK,MAAM,cAAc,QAAQ;AAClD,aAAOA,UAAS,OAAO,CAAC,YAAY,KAAK,eAAe,SAAS,UAAU,UAAU,CAAC,EAAE,CAAC;AAAA,IAC7F;AAAA,IACA,gBAAgB,UAAU,YAAY;AAClC,YAAMA,YAAW,KAAK,MAAM,cAAc,QAAQ;AAClD,aAAOA,UAAS,OAAO,CAAC,YAAY,KAAK,eAAe,SAAS,UAAU,UAAU,CAAC;AAAA,IAC1F;AAAA,IACA,eAAe,SAAS,UAAU,YAAY;AAC1C,YAAM,sBAAsB,QAAQ,aAAa,KAAK,MAAM,OAAO,mBAAmB,KAAK;AAC3F,aAAO,QAAQ,QAAQ,QAAQ,KAAK,oBAAoB,MAAM,GAAG,EAAE,SAAS,UAAU;AAAA,IAC1F;AAAA,EACJ;AAEA,MAAM,QAAN,MAAM,OAAM;AAAA,IACR,YAAY,QAAQ,SAAS,YAAY,QAAQ;AAC7C,WAAK,UAAU,IAAI,UAAU,IAAI;AACjC,WAAK,UAAU,IAAI,SAAS,IAAI;AAChC,WAAK,OAAO,IAAI,QAAQ,IAAI;AAC5B,WAAK,kBAAkB,CAACC,aAAY;AAChC,eAAOA,SAAQ,QAAQ,KAAK,kBAAkB,MAAM,KAAK;AAAA,MAC7D;AACA,WAAK,SAAS;AACd,WAAK,UAAU;AACf,WAAK,aAAa;AAClB,WAAK,QAAQ,IAAI,MAAM,MAAM;AAC7B,WAAK,UAAU,IAAI,UAAU,KAAK,eAAe,OAAO;AAAA,IAC5D;AAAA,IACA,YAAY,UAAU;AAClB,aAAO,KAAK,QAAQ,QAAQ,QAAQ,IAAI,KAAK,UAAU,KAAK,cAAc,QAAQ,EAAE,KAAK,KAAK,eAAe;AAAA,IACjH;AAAA,IACA,gBAAgB,UAAU;AACtB,aAAO;AAAA,QACH,GAAI,KAAK,QAAQ,QAAQ,QAAQ,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC;AAAA,QACvD,GAAG,KAAK,cAAc,QAAQ,EAAE,OAAO,KAAK,eAAe;AAAA,MAC/D;AAAA,IACJ;AAAA,IACA,cAAc,UAAU;AACpB,aAAO,MAAM,KAAK,KAAK,QAAQ,iBAAiB,QAAQ,CAAC;AAAA,IAC7D;AAAA,IACA,IAAI,qBAAqB;AACrB,aAAO,4BAA4B,KAAK,OAAO,qBAAqB,KAAK,UAAU;AAAA,IACvF;AAAA,IACA,IAAI,kBAAkB;AAClB,aAAO,KAAK,YAAY,SAAS;AAAA,IACrC;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,KAAK,kBACN,OACA,IAAI,OAAM,KAAK,QAAQ,SAAS,iBAAiB,KAAK,YAAY,KAAK,MAAM,MAAM;AAAA,IAC7F;AAAA,EACJ;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAChB,YAAY,SAAS,QAAQ,UAAU;AACnC,WAAK,UAAU;AACf,WAAK,SAAS;AACd,WAAK,WAAW;AAChB,WAAK,oBAAoB,IAAI,kBAAkB,KAAK,SAAS,KAAK,qBAAqB,IAAI;AAC3F,WAAK,8BAA8B,oBAAI,QAAQ;AAC/C,WAAK,uBAAuB,oBAAI,QAAQ;AAAA,IAC5C;AAAA,IACA,QAAQ;AACJ,WAAK,kBAAkB,MAAM;AAAA,IACjC;AAAA,IACA,OAAO;AACH,WAAK,kBAAkB,KAAK;AAAA,IAChC;AAAA,IACA,IAAI,sBAAsB;AACtB,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,mBAAmB,OAAO;AACtB,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI;AACzC,aAAO,KAAK,kCAAkC,SAAS,UAAU;AAAA,IACrE;AAAA,IACA,kCAAkC,SAAS,YAAY;AACnD,YAAM,qBAAqB,KAAK,kCAAkC,OAAO;AACzE,UAAI,QAAQ,mBAAmB,IAAI,UAAU;AAC7C,UAAI,CAAC,OAAO;AACR,gBAAQ,KAAK,SAAS,mCAAmC,SAAS,UAAU;AAC5E,2BAAmB,IAAI,YAAY,KAAK;AAAA,MAC5C;AACA,aAAO;AAAA,IACX;AAAA,IACA,oBAAoB,SAAS,OAAO;AAChC,YAAM,kBAAkB,KAAK,qBAAqB,IAAI,KAAK,KAAK,KAAK;AACrE,WAAK,qBAAqB,IAAI,OAAO,cAAc;AACnD,UAAI,kBAAkB,GAAG;AACrB,aAAK,SAAS,eAAe,KAAK;AAAA,MACtC;AAAA,IACJ;AAAA,IACA,sBAAsB,SAAS,OAAO;AAClC,YAAM,iBAAiB,KAAK,qBAAqB,IAAI,KAAK;AAC1D,UAAI,gBAAgB;AAChB,aAAK,qBAAqB,IAAI,OAAO,iBAAiB,CAAC;AACvD,YAAI,kBAAkB,GAAG;AACrB,eAAK,SAAS,kBAAkB,KAAK;AAAA,QACzC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,kCAAkC,SAAS;AACvC,UAAI,qBAAqB,KAAK,4BAA4B,IAAI,OAAO;AACrE,UAAI,CAAC,oBAAoB;AACrB,6BAAqB,oBAAI,IAAI;AAC7B,aAAK,4BAA4B,IAAI,SAAS,kBAAkB;AAAA,MACpE;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAM,SAAN,MAAa;AAAA,IACT,YAAYF,cAAa;AACrB,WAAK,cAAcA;AACnB,WAAK,gBAAgB,IAAI,cAAc,KAAK,SAAS,KAAK,QAAQ,IAAI;AACtE,WAAK,qBAAqB,IAAI,SAAS;AACvC,WAAK,sBAAsB,oBAAI,IAAI;AAAA,IACvC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IACA,IAAI,sBAAsB;AACtB,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,MAAM,KAAK,KAAK,oBAAoB,OAAO,CAAC;AAAA,IACvD;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK,QAAQ,OAAO,CAAC,UAAU,WAAW,SAAS,OAAO,OAAO,QAAQ,GAAG,CAAC,CAAC;AAAA,IACzF;AAAA,IACA,QAAQ;AACJ,WAAK,cAAc,MAAM;AAAA,IAC7B;AAAA,IACA,OAAO;AACH,WAAK,cAAc,KAAK;AAAA,IAC5B;AAAA,IACA,eAAe,YAAY;AACvB,WAAK,iBAAiB,WAAW,UAAU;AAC3C,YAAM,SAAS,IAAI,OAAO,KAAK,aAAa,UAAU;AACtD,WAAK,cAAc,MAAM;AACzB,YAAM,YAAY,WAAW,sBAAsB;AACnD,UAAI,WAAW;AACX,kBAAU,KAAK,WAAW,uBAAuB,WAAW,YAAY,KAAK,WAAW;AAAA,MAC5F;AAAA,IACJ;AAAA,IACA,iBAAiB,YAAY;AACzB,YAAM,SAAS,KAAK,oBAAoB,IAAI,UAAU;AACtD,UAAI,QAAQ;AACR,aAAK,iBAAiB,MAAM;AAAA,MAChC;AAAA,IACJ;AAAA,IACA,kCAAkC,SAAS,YAAY;AACnD,YAAM,SAAS,KAAK,oBAAoB,IAAI,UAAU;AACtD,UAAI,QAAQ;AACR,eAAO,OAAO,SAAS,KAAK,CAAC,YAAY,QAAQ,WAAW,OAAO;AAAA,MACvE;AAAA,IACJ;AAAA,IACA,6CAA6C,SAAS,YAAY;AAC9D,YAAM,QAAQ,KAAK,cAAc,kCAAkC,SAAS,UAAU;AACtF,UAAI,OAAO;AACP,aAAK,cAAc,oBAAoB,MAAM,SAAS,KAAK;AAAA,MAC/D,OACK;AACD,gBAAQ,MAAM,kDAAkD,UAAU,kBAAkB,OAAO;AAAA,MACvG;AAAA,IACJ;AAAA,IACA,YAAYN,QAAOG,UAAS,QAAQ;AAChC,WAAK,YAAY,YAAYH,QAAOG,UAAS,MAAM;AAAA,IACvD;AAAA,IACA,mCAAmC,SAAS,YAAY;AACpD,aAAO,IAAI,MAAM,KAAK,QAAQ,SAAS,YAAY,KAAK,MAAM;AAAA,IAClE;AAAA,IACA,eAAe,OAAO;AAClB,WAAK,mBAAmB,IAAI,MAAM,YAAY,KAAK;AACnD,YAAM,SAAS,KAAK,oBAAoB,IAAI,MAAM,UAAU;AAC5D,UAAI,QAAQ;AACR,eAAO,uBAAuB,KAAK;AAAA,MACvC;AAAA,IACJ;AAAA,IACA,kBAAkB,OAAO;AACrB,WAAK,mBAAmB,OAAO,MAAM,YAAY,KAAK;AACtD,YAAM,SAAS,KAAK,oBAAoB,IAAI,MAAM,UAAU;AAC5D,UAAI,QAAQ;AACR,eAAO,0BAA0B,KAAK;AAAA,MAC1C;AAAA,IACJ;AAAA,IACA,cAAc,QAAQ;AAClB,WAAK,oBAAoB,IAAI,OAAO,YAAY,MAAM;AACtD,YAAM,SAAS,KAAK,mBAAmB,gBAAgB,OAAO,UAAU;AACxE,aAAO,QAAQ,CAAC,UAAU,OAAO,uBAAuB,KAAK,CAAC;AAAA,IAClE;AAAA,IACA,iBAAiB,QAAQ;AACrB,WAAK,oBAAoB,OAAO,OAAO,UAAU;AACjD,YAAM,SAAS,KAAK,mBAAmB,gBAAgB,OAAO,UAAU;AACxE,aAAO,QAAQ,CAAC,UAAU,OAAO,0BAA0B,KAAK,CAAC;AAAA,IACrE;AAAA,EACJ;AAEA,MAAM,gBAAgB;AAAA,IAClB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,yBAAyB,CAAC,eAAe,QAAQ,UAAU;AAAA,IAC3D,yBAAyB,CAAC,YAAY,WAAW,QAAQ,UAAU,IAAI,MAAM;AAAA,IAC7E,aAAa,OAAO,OAAO,OAAO,OAAO,EAAE,OAAO,SAAS,KAAK,OAAO,KAAK,UAAU,OAAO,KAAK,IAAI,WAAW,MAAM,aAAa,MAAM,aAAa,OAAO,cAAc,MAAM,QAAQ,KAAK,OAAO,SAAS,UAAU,WAAW,WAAW,GAAG,kBAAkB,6BAA6B,MAAM,EAAE,EAAE,IAAI,CAACM,OAAM,CAACA,IAAGA,EAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,aAAa,MAAM,EAAE,EAAE,IAAI,CAACC,OAAM,CAACA,IAAGA,EAAC,CAAC,CAAC,CAAC;AAAA,EACjY;AACA,WAAS,kBAAkB,OAAO;AAC9B,WAAO,MAAM,OAAO,CAAC,MAAM,CAACC,IAAGC,EAAC,MAAO,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAACD,EAAC,GAAGC,GAAE,CAAC,GAAI,CAAC,CAAC;AAAA,EAClG;AAEA,MAAM,cAAN,MAAkB;AAAA,IACd,YAAY,UAAU,SAAS,iBAAiB,SAAS,eAAe;AACpE,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,mBAAmB,CAAC,YAAY,cAAc,SAAS,CAAC,MAAM;AAC/D,YAAI,KAAK,OAAO;AACZ,eAAK,oBAAoB,YAAY,cAAc,MAAM;AAAA,QAC7D;AAAA,MACJ;AACA,WAAK,UAAU;AACf,WAAK,SAAS;AACd,WAAK,aAAa,IAAI,WAAW,IAAI;AACrC,WAAK,SAAS,IAAI,OAAO,IAAI;AAC7B,WAAK,0BAA0B,OAAO,OAAO,CAAC,GAAG,8BAA8B;AAAA,IACnF;AAAA,IACA,OAAO,MAAM,SAAS,QAAQ;AAC1B,YAAMN,eAAc,IAAI,KAAK,SAAS,MAAM;AAC5C,MAAAA,aAAY,MAAM;AAClB,aAAOA;AAAA,IACX;AAAA,IACA,MAAM,QAAQ;AACV,YAAM,SAAS;AACf,WAAK,iBAAiB,eAAe,UAAU;AAC/C,WAAK,WAAW,MAAM;AACtB,WAAK,OAAO,MAAM;AAClB,WAAK,iBAAiB,eAAe,OAAO;AAAA,IAChD;AAAA,IACA,OAAO;AACH,WAAK,iBAAiB,eAAe,UAAU;AAC/C,WAAK,WAAW,KAAK;AACrB,WAAK,OAAO,KAAK;AACjB,WAAK,iBAAiB,eAAe,MAAM;AAAA,IAC/C;AAAA,IACA,SAAS,YAAY,uBAAuB;AACxC,WAAK,KAAK,EAAE,YAAY,sBAAsB,CAAC;AAAA,IACnD;AAAA,IACA,qBAAqB,MAAM,QAAQ;AAC/B,WAAK,wBAAwB,IAAI,IAAI;AAAA,IACzC;AAAA,IACA,KAAK,SAAS,MAAM;AAChB,YAAM,cAAc,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;AAC/D,kBAAY,QAAQ,CAAC,eAAe;AAChC,YAAI,WAAW,sBAAsB,YAAY;AAC7C,eAAK,OAAO,eAAe,UAAU;AAAA,QACzC;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,IACA,OAAO,SAAS,MAAM;AAClB,YAAM,cAAc,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;AAC/D,kBAAY,QAAQ,CAAC,eAAe,KAAK,OAAO,iBAAiB,UAAU,CAAC;AAAA,IAChF;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,OAAO,SAAS,IAAI,CAAC,YAAY,QAAQ,UAAU;AAAA,IACnE;AAAA,IACA,qCAAqC,SAAS,YAAY;AACtD,YAAM,UAAU,KAAK,OAAO,kCAAkC,SAAS,UAAU;AACjF,aAAO,UAAU,QAAQ,aAAa;AAAA,IAC1C;AAAA,IACA,YAAYN,QAAOG,UAAS,QAAQ;AAChC,UAAI;AACJ,WAAK,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA,KAAkBA,UAASH,QAAO,MAAM;AAC1D,OAAC,KAAK,OAAO,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAK,QAAQG,UAAS,IAAI,GAAG,GAAGH,MAAK;AAAA,IACvG;AAAA,IACA,oBAAoB,YAAY,cAAc,SAAS,CAAC,GAAG;AACvD,eAAS,OAAO,OAAO,EAAE,aAAa,KAAK,GAAG,MAAM;AACpD,WAAK,OAAO,eAAe,GAAG,UAAU,KAAK,YAAY,EAAE;AAC3D,WAAK,OAAO,IAAI,YAAY,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;AACrD,WAAK,OAAO,SAAS;AAAA,IACzB;AAAA,EACJ;AACA,WAAS,WAAW;AAChB,WAAO,IAAI,QAAQ,CAACa,aAAY;AAC5B,UAAI,SAAS,cAAc,WAAW;AAClC,iBAAS,iBAAiB,oBAAoB,MAAMA,SAAQ,CAAC;AAAA,MACjE,OACK;AACD,QAAAA,SAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,WAAS,wBAAwB,aAAa;AAC1C,UAAMC,WAAU,iCAAiC,aAAa,SAAS;AACvE,WAAOA,SAAQ,OAAO,CAAC,YAAY,oBAAoB;AACnD,aAAO,OAAO,OAAO,YAAY,6BAA6B,eAAe,CAAC;AAAA,IAClF,GAAG,CAAC,CAAC;AAAA,EACT;AACA,WAAS,6BAA6B,KAAK;AACvC,WAAO;AAAA,MACH,CAAC,GAAG,GAAG,OAAO,GAAG;AAAA,QACb,MAAM;AACF,gBAAM,EAAE,SAAAA,SAAQ,IAAI;AACpB,cAAIA,SAAQ,IAAI,GAAG,GAAG;AAClB,mBAAOA,SAAQ,IAAI,GAAG;AAAA,UAC1B,OACK;AACD,kBAAM,YAAYA,SAAQ,iBAAiB,GAAG;AAC9C,kBAAM,IAAI,MAAM,sBAAsB,SAAS,GAAG;AAAA,UACtD;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,GAAG,GAAG,SAAS,GAAG;AAAA,QACf,MAAM;AACF,iBAAO,KAAK,QAAQ,OAAO,GAAG;AAAA,QAClC;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,WAAW,GAAG,CAAC,OAAO,GAAG;AAAA,QAC5B,MAAM;AACF,iBAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,QAC/B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,yBAAyB,aAAa;AAC3C,UAAM,UAAU,iCAAiC,aAAa,SAAS;AACvE,WAAO,QAAQ,OAAO,CAAC,YAAY,qBAAqB;AACpD,aAAO,OAAO,OAAO,YAAY,8BAA8B,gBAAgB,CAAC;AAAA,IACpF,GAAG,CAAC,CAAC;AAAA,EACT;AACA,WAAS,oBAAoB,YAAY,SAAS,YAAY;AAC1D,WAAO,WAAW,YAAY,qCAAqC,SAAS,UAAU;AAAA,EAC1F;AACA,WAAS,qCAAqC,YAAY,SAAS,YAAY;AAC3E,QAAI,mBAAmB,oBAAoB,YAAY,SAAS,UAAU;AAC1E,QAAI;AACA,aAAO;AACX,eAAW,YAAY,OAAO,6CAA6C,SAAS,UAAU;AAC9F,uBAAmB,oBAAoB,YAAY,SAAS,UAAU;AACtE,QAAI;AACA,aAAO;AAAA,EACf;AACA,WAAS,8BAA8B,MAAM;AACzC,UAAM,gBAAgB,kBAAkB,IAAI;AAC5C,WAAO;AAAA,MACH,CAAC,GAAG,aAAa,QAAQ,GAAG;AAAA,QACxB,MAAM;AACF,gBAAM,gBAAgB,KAAK,QAAQ,KAAK,IAAI;AAC5C,gBAAM,WAAW,KAAK,QAAQ,yBAAyB,IAAI;AAC3D,cAAI,eAAe;AACf,kBAAM,mBAAmB,qCAAqC,MAAM,eAAe,IAAI;AACvF,gBAAI;AACA,qBAAO;AACX,kBAAM,IAAI,MAAM,gEAAgE,IAAI,mCAAmC,KAAK,UAAU,GAAG;AAAA,UAC7I;AACA,gBAAM,IAAI,MAAM,2BAA2B,IAAI,0BAA0B,KAAK,UAAU,uEAAuE,QAAQ,IAAI;AAAA,QAC/K;AAAA,MACJ;AAAA,MACA,CAAC,GAAG,aAAa,SAAS,GAAG;AAAA,QACzB,MAAM;AACF,gBAAM,UAAU,KAAK,QAAQ,QAAQ,IAAI;AACzC,cAAI,QAAQ,SAAS,GAAG;AACpB,mBAAO,QACF,IAAI,CAAC,kBAAkB;AACxB,oBAAM,mBAAmB,qCAAqC,MAAM,eAAe,IAAI;AACvF,kBAAI;AACA,uBAAO;AACX,sBAAQ,KAAK,gEAAgE,IAAI,mCAAmC,KAAK,UAAU,KAAK,aAAa;AAAA,YACzJ,CAAC,EACI,OAAO,CAAC,eAAe,UAAU;AAAA,UAC1C;AACA,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,MACA,CAAC,GAAG,aAAa,eAAe,GAAG;AAAA,QAC/B,MAAM;AACF,gBAAM,gBAAgB,KAAK,QAAQ,KAAK,IAAI;AAC5C,gBAAM,WAAW,KAAK,QAAQ,yBAAyB,IAAI;AAC3D,cAAI,eAAe;AACf,mBAAO;AAAA,UACX,OACK;AACD,kBAAM,IAAI,MAAM,2BAA2B,IAAI,0BAA0B,KAAK,UAAU,uEAAuE,QAAQ,IAAI;AAAA,UAC/K;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,GAAG,aAAa,gBAAgB,GAAG;AAAA,QAChC,MAAM;AACF,iBAAO,KAAK,QAAQ,QAAQ,IAAI;AAAA,QACpC;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,WAAW,aAAa,CAAC,QAAQ,GAAG;AAAA,QACvC,MAAM;AACF,iBAAO,KAAK,QAAQ,IAAI,IAAI;AAAA,QAChC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,yBAAyB,aAAa;AAC3C,UAAM,UAAU,iCAAiC,aAAa,SAAS;AACvE,WAAO,QAAQ,OAAO,CAAC,YAAY,qBAAqB;AACpD,aAAO,OAAO,OAAO,YAAY,8BAA8B,gBAAgB,CAAC;AAAA,IACpF,GAAG,CAAC,CAAC;AAAA,EACT;AACA,WAAS,8BAA8B,MAAM;AACzC,WAAO;AAAA,MACH,CAAC,GAAG,IAAI,QAAQ,GAAG;AAAA,QACf,MAAM;AACF,gBAAM,SAAS,KAAK,QAAQ,KAAK,IAAI;AACrC,cAAI,QAAQ;AACR,mBAAO;AAAA,UACX,OACK;AACD,kBAAM,IAAI,MAAM,2BAA2B,IAAI,UAAU,KAAK,UAAU,cAAc;AAAA,UAC1F;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,GAAG,IAAI,SAAS,GAAG;AAAA,QAChB,MAAM;AACF,iBAAO,KAAK,QAAQ,QAAQ,IAAI;AAAA,QACpC;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,WAAW,IAAI,CAAC,QAAQ,GAAG;AAAA,QAC9B,MAAM;AACF,iBAAO,KAAK,QAAQ,IAAI,IAAI;AAAA,QAChC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,wBAAwB,aAAa;AAC1C,UAAM,uBAAuB,iCAAiC,aAAa,QAAQ;AACnF,UAAM,wBAAwB;AAAA,MAC1B,oBAAoB;AAAA,QAChB,MAAM;AACF,iBAAO,qBAAqB,OAAO,CAAC,QAAQ,wBAAwB;AAChE,kBAAM,kBAAkB,yBAAyB,qBAAqB,KAAK,UAAU;AACrF,kBAAM,gBAAgB,KAAK,KAAK,uBAAuB,gBAAgB,GAAG;AAC1E,mBAAO,OAAO,OAAO,QAAQ,EAAE,CAAC,aAAa,GAAG,gBAAgB,CAAC;AAAA,UACrE,GAAG,CAAC,CAAC;AAAA,QACT;AAAA,MACJ;AAAA,IACJ;AACA,WAAO,qBAAqB,OAAO,CAAC,YAAY,wBAAwB;AACpE,aAAO,OAAO,OAAO,YAAY,iCAAiC,mBAAmB,CAAC;AAAA,IAC1F,GAAG,qBAAqB;AAAA,EAC5B;AACA,WAAS,iCAAiC,qBAAqB,YAAY;AACvE,UAAM,aAAa,yBAAyB,qBAAqB,UAAU;AAC3E,UAAM,EAAE,KAAK,MAAM,QAAQ,MAAM,QAAQ,MAAM,IAAI;AACnD,WAAO;AAAA,MACH,CAAC,IAAI,GAAG;AAAA,QACJ,MAAM;AACF,gBAAM,QAAQ,KAAK,KAAK,IAAI,GAAG;AAC/B,cAAI,UAAU,MAAM;AAChB,mBAAO,KAAK,KAAK;AAAA,UACrB,OACK;AACD,mBAAO,WAAW;AAAA,UACtB;AAAA,QACJ;AAAA,QACA,IAAI,OAAO;AACP,cAAI,UAAU,QAAW;AACrB,iBAAK,KAAK,OAAO,GAAG;AAAA,UACxB,OACK;AACD,iBAAK,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,UACnC;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,WAAW,IAAI,CAAC,EAAE,GAAG;AAAA,QACxB,MAAM;AACF,iBAAO,KAAK,KAAK,IAAI,GAAG,KAAK,WAAW;AAAA,QAC5C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,yBAAyB,CAAC,OAAO,cAAc,GAAG,YAAY;AACnE,WAAO,yCAAyC;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACA,WAAS,uBAAuB,UAAU;AACtC,YAAQ,UAAU;AAAA,MACd,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,IACf;AAAA,EACJ;AACA,WAAS,sBAAsB,cAAc;AACzC,YAAQ,OAAO,cAAc;AAAA,MACzB,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,IACf;AACA,QAAI,MAAM,QAAQ,YAAY;AAC1B,aAAO;AACX,QAAI,OAAO,UAAU,SAAS,KAAK,YAAY,MAAM;AACjD,aAAO;AAAA,EACf;AACA,WAAS,qBAAqB,SAAS;AACnC,UAAM,EAAE,YAAY,OAAO,WAAW,IAAI;AAC1C,UAAM,UAAU,YAAY,WAAW,IAAI;AAC3C,UAAM,aAAa,YAAY,WAAW,OAAO;AACjD,UAAM,aAAa,WAAW;AAC9B,UAAM,WAAW,WAAW,CAAC;AAC7B,UAAM,cAAc,CAAC,WAAW;AAChC,UAAM,iBAAiB,uBAAuB,WAAW,IAAI;AAC7D,UAAM,uBAAuB,sBAAsB,QAAQ,WAAW,OAAO;AAC7E,QAAI;AACA,aAAO;AACX,QAAI;AACA,aAAO;AACX,QAAI,mBAAmB,sBAAsB;AACzC,YAAM,eAAe,aAAa,GAAG,UAAU,IAAI,KAAK,KAAK;AAC7D,YAAM,IAAI,MAAM,uDAAuD,YAAY,kCAAkC,cAAc,qCAAqC,WAAW,OAAO,iBAAiB,oBAAoB,IAAI;AAAA,IACvO;AACA,QAAI;AACA,aAAO;AAAA,EACf;AACA,WAAS,yBAAyB,SAAS;AACvC,UAAM,EAAE,YAAY,OAAO,eAAe,IAAI;AAC9C,UAAM,aAAa,EAAE,YAAY,OAAO,YAAY,eAAe;AACnE,UAAM,iBAAiB,qBAAqB,UAAU;AACtD,UAAM,uBAAuB,sBAAsB,cAAc;AACjE,UAAM,mBAAmB,uBAAuB,cAAc;AAC9D,UAAM,OAAO,kBAAkB,wBAAwB;AACvD,QAAI;AACA,aAAO;AACX,UAAM,eAAe,aAAa,GAAG,UAAU,IAAI,cAAc,KAAK;AACtE,UAAM,IAAI,MAAM,uBAAuB,YAAY,UAAU,KAAK,SAAS;AAAA,EAC/E;AACA,WAAS,0BAA0B,gBAAgB;AAC/C,UAAM,WAAW,uBAAuB,cAAc;AACtD,QAAI;AACA,aAAO,oBAAoB,QAAQ;AACvC,UAAM,aAAa,YAAY,gBAAgB,SAAS;AACxD,UAAM,UAAU,YAAY,gBAAgB,MAAM;AAClD,UAAM,aAAa;AACnB,QAAI;AACA,aAAO,WAAW;AACtB,QAAI,SAAS;AACT,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,mBAAmB,uBAAuB,IAAI;AACpD,UAAI;AACA,eAAO,oBAAoB,gBAAgB;AAAA,IACnD;AACA,WAAO;AAAA,EACX;AACA,WAAS,yCAAyC,SAAS;AACvD,UAAM,EAAE,OAAO,eAAe,IAAI;AAClC,UAAM,MAAM,GAAG,UAAU,KAAK,CAAC;AAC/B,UAAM,OAAO,yBAAyB,OAAO;AAC7C,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA,MAAM,SAAS,GAAG;AAAA,MAClB,IAAI,eAAe;AACf,eAAO,0BAA0B,cAAc;AAAA,MACnD;AAAA,MACA,IAAI,wBAAwB;AACxB,eAAO,sBAAsB,cAAc,MAAM;AAAA,MACrD;AAAA,MACA,QAAQ,QAAQ,IAAI;AAAA,MACpB,QAAQ,QAAQ,IAAI,KAAK,QAAQ;AAAA,IACrC;AAAA,EACJ;AACA,MAAM,sBAAsB;AAAA,IACxB,IAAI,QAAQ;AACR,aAAO,CAAC;AAAA,IACZ;AAAA,IACA,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,IAAI,SAAS;AACT,aAAO,CAAC;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,EACZ;AACA,MAAM,UAAU;AAAA,IACZ,MAAM,OAAO;AACT,YAAM,QAAQ,KAAK,MAAM,KAAK;AAC9B,UAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,cAAM,IAAI,UAAU,yDAAyD,KAAK,cAAc,sBAAsB,KAAK,CAAC,GAAG;AAAA,MACnI;AACA,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,OAAO;AACX,aAAO,EAAE,SAAS,OAAO,OAAO,KAAK,EAAE,YAAY,KAAK;AAAA,IAC5D;AAAA,IACA,OAAO,OAAO;AACV,aAAO,OAAO,MAAM,QAAQ,MAAM,EAAE,CAAC;AAAA,IACzC;AAAA,IACA,OAAO,OAAO;AACV,YAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,UAAI,WAAW,QAAQ,OAAO,UAAU,YAAY,MAAM,QAAQ,MAAM,GAAG;AACvE,cAAM,IAAI,UAAU,0DAA0D,KAAK,cAAc,sBAAsB,MAAM,CAAC,GAAG;AAAA,MACrI;AACA,aAAO;AAAA,IACX;AAAA,IACA,OAAO,OAAO;AACV,aAAO;AAAA,IACX;AAAA,EACJ;AACA,MAAM,UAAU;AAAA,IACZ,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,EACZ;AACA,WAAS,UAAU,OAAO;AACtB,WAAO,KAAK,UAAU,KAAK;AAAA,EAC/B;AACA,WAAS,YAAY,OAAO;AACxB,WAAO,GAAG,KAAK;AAAA,EACnB;AAEA,MAAM,aAAN,MAAiB;AAAA,IACb,YAAY,SAAS;AACjB,WAAK,UAAU;AAAA,IACnB;AAAA,IACA,WAAW,aAAa;AACpB,aAAO;AAAA,IACX;AAAA,IACA,OAAO,UAAU,aAAa,cAAc;AACxC;AAAA,IACJ;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,IAAI,OAAO;AACP,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,SAAS,WAAW,EAAE,SAAS,KAAK,SAAS,SAAS,CAAC,GAAG,SAAS,KAAK,YAAY,UAAU,MAAM,aAAa,KAAM,IAAI,CAAC,GAAG;AAC3H,YAAM,OAAO,SAAS,GAAG,MAAM,IAAI,SAAS,KAAK;AACjD,YAAMC,SAAQ,IAAI,YAAY,MAAM,EAAE,QAAQ,SAAS,WAAW,CAAC;AACnE,aAAO,cAAcA,MAAK;AAC1B,aAAOA;AAAA,IACX;AAAA,EACJ;AACA,aAAW,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA,aAAW,UAAU,CAAC;AACtB,aAAW,UAAU,CAAC;AACtB,aAAW,SAAS,CAAC;;;AC7/ErB,MAAM,cAAc,YAAY,MAAM;AACtC,SAAO,WAAW;;;ACElB,MAAO,2BAAP,cAA6B,WAAW;AAAA,IACtC,SAAS;AACP,YAAM,OAAO,SAAS;AACtB,YAAM,OAAQ,KAAK,aAAa,YAAY,MAAM,SAAU,UAAU;AACtE,WAAK,aAAa,cAAc,IAAI;AACpC,eAAS,SAAS,YAAY,IAAI;AAAA,IACpC;AAAA,EACF;;;ACTA,MAAO,2BAAP,cAA6B,WAAW;AAAA,IACtC,UAAU;AACR,WAAK,QAAQ,OAAO;AAAA,IACtB;AAAA,EACF;;;ACPA,MAAM,kBAAkB,MAAMC,yBAAwB,WAAW;AAAA,IAC/D,UAAU;AACR,WAAK,YAAY,KAAK,YAAY,IAAI,KAAK,QAAQ;AAAA,IACrD;AAAA,IACA,UAAU;AACR,UAAI,iBAAiB;AACrB,YAAM,OAAO,CAAC,cAAc;AAC1B,2BAAmB,iBAAiB;AACpC,cAAM,UAAU,YAAY,gBAAgB,WAAW,KAAK,IAAI,UAAU,KAAK,eAAe,CAAC;AAC/F,aAAK,QAAQ,YAAY,KAAK,MAAM,YAAY,KAAK,WAAW,KAAK,cAAc,KAAK,UAAU,EAAE,SAAS,GAAG,WAAW,KAAK,OAAO,sBAAsB,IAAI;AAAA,MACnK;AACA,aAAO,sBAAsB,IAAI;AAAA,IACnC;AAAA,IACA,cAAc;AACZ,UAAI,qBAAqB,CAAC,SAAS,cAAc;AAC/C,gBAAQ,QAAQ,CAAC,UAAU;AACzB,gBAAM,mBAAmB,KAAK,QAAQ,GAAG,UAAU,UAAU,MAAM,MAAM;AAAA,QAC3E,CAAC;AAAA,MACH,GAAG,KAAK,kBAAkB,EAAE,QAAQ,KAAK,OAAO;AAAA,IAClD;AAAA;AAAA,IAEA,IAAI,qBAAqB;AACvB,aAAO;AAAA,QACL,WAAW,KAAK;AAAA,QAChB,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACA,kBAAgB,SAAS;AAAA,IACvB,OAAO;AAAA,IACP,KAAK;AAAA,IACL,UAAU;AAAA,IACV,eAAe;AAAA,IACf,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,EACR;AACA,MAAI,iBAAiB;;;ACrCrB,MAAO,sCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,eAAe,OAAO;AAAA,IAExC,eAAeC,QAAO;AACpB,YAAM,SAAS,SAAS,KAAK,kBAAkB,KAAK;AACpD,YAAM,YAAY,KAAK,kBAAkB,QAAQ;AACjD,UAAI,cAAc,KAAK;AAEvB,UAAI,MAAM,MAAM,GAAE;AAChB,aAAK,kBAAkB,UAAU,IAAI,gBAAgB;AACrD,oBAAY,YAAY,GAAG,SAAS;AACpC,QAAAA,OAAM,eAAe;AAAA,MACvB,WACS,UAAS,GAAI;AACpB,aAAK,kBAAkB,UAAU,IAAI,gBAAgB;AACrD,oBAAY,YAAY,GAAG,SAAS;AACpC,QAAAA,OAAM,eAAe;AAAA,MACvB,OAAO;AACL,oBAAY,YAAY;AACxB,aAAK,kBAAkB,UAAU,OAAO,gBAAgB;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;;;ACxBA,mBAAgB;AAIhB,MAAO,yBAAP,cAA6B,WAAW;AAAA,IACtC,UAAU;AACR,iBAAAC,QAAI,KAAK;AAAA,QACP,MAAM;AAAA;AAAA,QACN,UAAU;AAAA;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;;;ACTA,MAAO,+BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAU;AACR,WAAK,eAAe;AAAA,IACtB;AAAA,IAEA,gBAAgB;AACd,WAAK,uBAAuB;AAC5B,WAAK,aAAa;AAClB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,yBAAyB;AACvB,WAAK,yBAAyB,UAAU,OAAO,QAAQ;AACvD,eAAS,eAAe,WAAW,EAAE,aAAa,QAAQ,IAAI;AAAA,IAChE;AAAA,IAEA,eAAe;AACb,YAAM,cAAc,KAAK,WAAW,KAAK,kBAAkB,KAAK;AAChE,YAAM,aAAa,KAAK,WAAW,KAAK,iBAAiB,KAAK;AAC9D,WAAK,yBAAyB,QAAQ,KAAK,aAAa,WAAW;AACnE,WAAK,wBAAwB,QAAQ,KAAK,aAAa,UAAU;AACjE,WAAK,yBAAyB,UAAU;AAAA,IAC1C;AAAA,IAEA,WAAW,OAAO;AAChB,UAAI,cAAc,WAAW,KAAK;AAClC,aAAO,MAAM,WAAW,KAAK,cAAc,IAAI,IAAM;AAAA,IACvD;AAAA,IAEA,aAAa,OAAO;AAClB,aAAO,OAAO,UAAU,KAAK,IAAI,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC;AAAA,IACrE;AAAA,IAEA,yBAAyB;AACvB,YAAM,cAAc,KAAK,WAAW,KAAK,yBAAyB,KAAK;AACvE,YAAM,aAAa,KAAK,WAAW,KAAK,wBAAwB,KAAK;AACrE,YAAM,eAAe,KAAK,yBAAyB;AAEnD,WAAK,eAAe,aAAa,YAAY,YAAY;AAAA,IAC3D;AAAA,IAEA,eAAe,aAAa,YAAY,cAAc;AACpD,UAAI,aAAa,SAAS;AAC1B,UAAI,cAAc;AAChB,kBAAU,cAAe,eAAe,OAAO,MAAM;AACrD,sBAAc,cAAc;AAC5B,oBAAY;AAAA,MACd,OAAO;AACL,kBAAW,cAAc,aAAc;AACvC,sBAAc;AACd,oBAAY,cAAc;AAAA,MAC5B;AACA,WAAK,kBAAkB,aAAa,SAAS,SAAS;AAAA,IACxD;AAAA,IAEA,kBAAkB,aAAa,SAAS,WAAW;AACjD,WAAK,kBAAkB,YAAY,KAAK,aAAa,WAAW;AAChE,WAAK,cAAc,YAAY,KAAK,aAAa,OAAO;AACxD,WAAK,gBAAgB,YAAY,KAAK,aAAa,SAAS;AAAA,IAC9D;AAAA,IAEA,WAAW;AACT,YAAM,qBAAqB,KAAK,WAAW,KAAK,kBAAkB,SAAS;AAC3E,YAAM,kBAAkB,KAAK,WAAW,KAAK,wBAAwB,KAAK;AAC1E,YAAM,eAAe,KAAK,WAAW,KAAK,cAAc,SAAS;AACjE,YAAM,YAAY,KAAK,WAAW,KAAK,gBAAgB,SAAS;AAEhE,WAAK,kBAAkB,QAAQ,KAAK,aAAa,kBAAkB;AACnE,WAAK,iBAAiB,QAAQ,KAAK,aAAa,eAAe;AAC/D,WAAK,kBAAkB,oBAAoB,cAAc,SAAS;AAElE,YAAMC,SAAS,KAAK,QAAQ,cAAc,cAAc;AACxD,UAAGA,UAASA,OAAM,UAAU,KAAK,MAAM,IAAG;AACxC,QAAAA,OAAM,YAAY;AAClB,aAAK,kBAAkB,UAAU,OAAO,gBAAgB;AAAA,MAC1D;AAEA,eAAS,eAAe,WAAW,EAAE,gBAAgB,MAAM;AAAA,IAC7D;AAAA,IAEA,kBAAkB,oBAAoB,cAAc,WAAW;AAC7D,WAAK,uBAAuB,YAAY,KAAK,aAAa,kBAAkB;AAC5E,WAAK,mBAAmB,YAAY,KAAK,aAAa,YAAY;AAClE,WAAK,qBAAqB,YAAY,KAAK,aAAa,SAAS;AAAA,IACnE;AAAA,IAEA,iBAAiB;AACf,YAAM,cAAc,KAAK,WAAW,KAAK,kBAAkB,KAAK;AAChE,YAAM,aAAa,KAAK,WAAW,KAAK,iBAAiB,KAAK;AAC9D,YAAM,UAAW,cAAc,aAAc;AAC7C,YAAM,YAAY,cAAc;AAEhC,WAAK,kBAAkB,aAAa,SAAS,SAAS;AAAA,IACxD;AAAA,EAEF;;;AC/GA,WAASC,UAASC,WAAU,OAAO;AACjC,QAAI;AACJ,WAAO,IAAI,SAAS;AAClB,mBAAa,OAAO,GAAG,UAAU,WAAW,MAAM;AAChD,QAAAA,UAAS,MAAM,MAAM,IAAI;AAAA,MAC3B,GAAG,KAAK;AAAA,IACV;AAAA,EACF;AACA,MAAM,cAAc,MAAMC,qBAAoB,WAAW;AAAA,IACvD,aAAa;AACX,WAAK,SAAS,KAAK,OAAO,KAAK,IAAI;AAAA,IACrC;AAAA,IACA,UAAU;AACR,WAAK,aAAa,MAAM,KAAK,SAASF,UAAS,KAAK,QAAQ,KAAK,UAAU;AAAA,IAC7E;AAAA,IACA,SAAS;AACP,WAAK,QAAQ,cAAc;AAAA,IAC7B;AAAA,EACF;AACA,cAAY,SAAS;AAAA,IACnB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACA,MAAI,aAAa;;;AC1BjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,GAAC,WAAY;AACT,QAAI,OAAO,YAAY,UACnB,OAAO,mBAAmB,UAC1B,OAAO,eAAe,2BAA2B;AACjD;AAAA,IACJ;AACA,UAAM,qBAAqB;AAC3B,UAAM,oBAAoB;AAAA,MACtB,aAAa,SAASG,eAAc;AAChC,eAAO,QAAQ,UAAU,oBAAoB,CAAC,GAAG,KAAK,WAAW;AAAA,MACrE;AAAA,IACJ;AACA,WAAO,cAAc,kBAAkB,aAAa;AACpD,gBAAY,YAAY,mBAAmB;AAC3C,gBAAY,UAAU,cAAc;AACpC,WAAO,eAAe,aAAa,kBAAkB;AAAA,EACzD,GAAG;AA0BH,GAAC,SAAS,WAAW;AACnB,QAAI,OAAO,UAAU,iBAAiB,WAAY;AAElD,cAAU,gBAAgB,SAAS,WAAW;AAC5C,UAAI,WAAW;AACb,0BAAkB,WAAW,IAAI;AACjC,kBAAU,MAAM;AAAA,MAClB,OAAO;AACL,oBAAY,SAAS,cAAc,OAAO;AAC1C,kBAAU,OAAO;AACjB,kBAAU,SAAS;AACnB,aAAK,YAAY,SAAS;AAC1B,kBAAU,MAAM;AAChB,aAAK,YAAY,SAAS;AAAA,MAC5B;AAAA,IACF;AAEA,aAAS,kBAAkB,WAAW,MAAM;AAC1C,2BAAqB,eAAe,MAAM,WAAW,0CAA0C;AAC/F,gBAAU,QAAQ,YAAY,MAAM,WAAW,8CAA8C;AAC7F,gBAAU,QAAQ,QAAQ,MAAM,cAAc,2DAA2D,eAAe;AAAA,IAC1H;AAEA,aAAS,MAAM,kBAAkBC,UAAS,MAAM;AAC9C,YAAM,IAAI,iBAAiB,6DAA6DA,WAAU,KAAK,IAAI;AAAA,IAC7G;AAAA,EACF,GAAG,gBAAgB,SAAS;AAE5B,MAAM,mBAAmB,oBAAI,QAAQ;AACrC,WAAS,6BAA6B,QAAQ;AAC1C,UAAM,UAAU,kBAAkB,UAAU,SAAS,kBAAkB,OAAO,OAAO,gBAAgB;AACrG,UAAM,YAAY,UAAU,QAAQ,QAAQ,eAAe,IAAI;AAC/D,YAAQ,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,SAAS,WAAW,YAAY;AAAA,EAC5G;AACA,WAAS,cAAcC,QAAO;AAC1B,UAAM,YAAY,6BAA6BA,OAAM,MAAM;AAC3D,QAAI,aAAa,UAAU,MAAM;AAC7B,uBAAiB,IAAI,UAAU,MAAM,SAAS;AAAA,IAClD;AAAA,EACJ;AACA,GAAC,WAAY;AACT,QAAI,eAAe,MAAM;AACrB;AACJ,QAAI,YAAY,OAAO,MAAM;AAC7B,QAAI,iBAAiB,UAAU,iBAAiB,KAAK,UAAU,MAAM,GAAG;AACpE,kBAAY,OAAO,YAAY;AAAA,IACnC,WACS,iBAAiB,QAAQ;AAC9B;AAAA,IACJ;AACA,qBAAiB,SAAS,eAAe,IAAI;AAC7C,WAAO,eAAe,WAAW,aAAa;AAAA,MAC1C,MAAM;AACF,YAAI,KAAK,QAAQ,YAAY,KAAK,kBAAkB,iBAAiB;AACjE,iBAAO,iBAAiB,IAAI,KAAK,MAAM;AAAA,QAC3C;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL,GAAG;AAEH,MAAI;AACJ,GAAC,SAAUC,oBAAmB;AAC1B,IAAAA,mBAAkB,OAAO,IAAI;AAC7B,IAAAA,mBAAkB,MAAM,IAAI;AAAA,EAChC,GAAG,sBAAsB,oBAAoB,CAAC,EAAE;AAChD,MAAM,eAAN,MAAM,sBAAqB,YAAY;AAAA,IACnC,WAAW,qBAAqB;AAC5B,aAAO,CAAC,YAAY,YAAY,WAAW,KAAK;AAAA,IACpD;AAAA,IACA,cAAc;AACV,YAAM;AACN,WAAK,SAAS,QAAQ,QAAQ;AAC9B,WAAK,WAAW,IAAI,cAAa,oBAAoB,IAAI;AAAA,IAC7D;AAAA,IACA,oBAAoB;AAChB,WAAK,SAAS,QAAQ;AAAA,IAC1B;AAAA,IACA,uBAAuB;AACnB,WAAK,SAAS,WAAW;AAAA,IAC7B;AAAA,IACA,SAAS;AACL,aAAO,KAAK,SAAS,kBAAkB;AAAA,IAC3C;AAAA,IACA,yBAAyB,MAAM;AAC3B,UAAI,QAAQ,WAAW;AACnB,aAAK,SAAS,oBAAoB;AAAA,MACtC,WACS,QAAQ,YAAY;AACzB,aAAK,SAAS,gBAAgB;AAAA,MAClC,WACS,QAAQ,OAAO;AACpB,aAAK,SAAS,iBAAiB;AAAA,MACnC,OACK;AACD,aAAK,SAAS,gBAAgB;AAAA,MAClC;AAAA,IACJ;AAAA,IACA,IAAI,MAAM;AACN,aAAO,KAAK,aAAa,KAAK;AAAA,IAClC;AAAA,IACA,IAAI,IAAI,OAAO;AACX,UAAI,OAAO;AACP,aAAK,aAAa,OAAO,KAAK;AAAA,MAClC,OACK;AACD,aAAK,gBAAgB,KAAK;AAAA,MAC9B;AAAA,IACJ;AAAA,IACA,IAAI,UAAU;AACV,aAAO,4BAA4B,KAAK,aAAa,SAAS,KAAK,EAAE;AAAA,IACzE;AAAA,IACA,IAAI,QAAQ,OAAO;AACf,UAAI,OAAO;AACP,aAAK,aAAa,WAAW,KAAK;AAAA,MACtC,OACK;AACD,aAAK,gBAAgB,SAAS;AAAA,MAClC;AAAA,IACJ;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK,aAAa,UAAU;AAAA,IACvC;AAAA,IACA,IAAI,SAAS,OAAO;AAChB,UAAI,OAAO;AACP,aAAK,aAAa,YAAY,EAAE;AAAA,MACpC,OACK;AACD,aAAK,gBAAgB,UAAU;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,aAAa,YAAY;AAAA,IACzC;AAAA,IACA,IAAI,WAAW,OAAO;AAClB,UAAI,OAAO;AACP,aAAK,aAAa,cAAc,EAAE;AAAA,MACtC,OACK;AACD,aAAK,gBAAgB,YAAY;AAAA,MACrC;AAAA,IACJ;AAAA,IACA,IAAI,WAAW;AACX,aAAO,CAAC,KAAK,SAAS;AAAA,IAC1B;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK,kBAAkB,YAAY,CAAC,KAAK;AAAA,IACpD;AAAA,IACA,IAAI,YAAY;AACZ,UAAI,IAAI;AACR,cAAQ,MAAM,KAAK,KAAK,mBAAmB,QAAQ,OAAO,SAAS,SAAS,GAAG,qBAAqB,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,oBAAoB;AAAA,IAC7K;AAAA,EACJ;AACA,WAAS,4BAA4B,OAAO;AACxC,YAAQ,MAAM,YAAY,GAAG;AAAA,MACzB,KAAK;AACD,eAAO,kBAAkB;AAAA,MAC7B;AACI,eAAO,kBAAkB;AAAA,IACjC;AAAA,EACJ;AAEA,WAAS,UAAU,WAAW;AAC1B,WAAO,IAAI,IAAI,UAAU,SAAS,GAAG,SAAS,OAAO;AAAA,EACzD;AACA,WAAS,UAAU,KAAK;AACpB,QAAI;AACJ,QAAI,IAAI,MAAM;AACV,aAAO,IAAI,KAAK,MAAM,CAAC;AAAA,IAC3B,WACU,cAAc,IAAI,KAAK,MAAM,QAAQ,GAAI;AAC/C,aAAO,YAAY,CAAC;AAAA,IACxB;AAAA,EACJ;AACA,WAAS,UAAU,MAAM,WAAW;AAChC,UAAM,UAAU,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,YAAY,MAAM,KAAK,aAAa,QAAQ,KAAK,KAAK;AACnJ,WAAO,UAAU,MAAM;AAAA,EAC3B;AACA,WAAS,aAAa,KAAK;AACvB,YAAQ,qBAAqB,GAAG,EAAE,MAAM,UAAU,KAAK,CAAC,GAAG,CAAC,KAAK;AAAA,EACrE;AACA,WAAS,OAAO,KAAK;AACjB,WAAO,CAAC,CAAC,aAAa,GAAG,EAAE,MAAM,iCAAiC;AAAA,EACtE;AACA,WAAS,aAAa,SAAS,KAAK;AAChC,UAAM,SAAS,UAAU,GAAG;AAC5B,WAAO,QAAQ,SAAS,UAAU,MAAM,EAAE,QAAQ,QAAQ,KAAK,WAAW,MAAM;AAAA,EACpF;AACA,WAAS,oBAAoBC,WAAU,cAAc;AACjD,WAAO,aAAaA,WAAU,YAAY,KAAK,OAAOA,SAAQ;AAAA,EAClE;AACA,WAAS,cAAc,KAAK;AACxB,UAAM,SAAS,UAAU,GAAG;AAC5B,WAAO,UAAU,OAAO,IAAI,KAAK,MAAM,GAAG,EAAE,OAAO,SAAS,EAAE,IAAI,IAAI;AAAA,EAC1E;AACA,WAAS,WAAW,KAAK;AACrB,WAAO,cAAc,GAAG;AAAA,EAC5B;AACA,WAAS,aAAa,MAAM,OAAO;AAC/B,WAAO,UAAU,IAAI,EAAE,QAAQ,UAAU,KAAK,EAAE;AAAA,EACpD;AACA,WAAS,kBAAkB,KAAK;AAC5B,WAAO,IAAI,SAAS,MAAM,GAAG,EAAE,MAAM,CAAC;AAAA,EAC1C;AACA,WAAS,qBAAqB,KAAK;AAC/B,WAAO,kBAAkB,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;AAAA,EAC7C;AACA,WAAS,UAAU,KAAK;AACpB,WAAO,iBAAiB,IAAI,SAAS,IAAI,QAAQ;AAAA,EACrD;AACA,WAAS,iBAAiB,OAAO;AAC7B,WAAO,MAAM,SAAS,GAAG,IAAI,QAAQ,QAAQ;AAAA,EACjD;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAChB,YAAY,UAAU;AAClB,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,IAAI,YAAY;AACZ,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,CAAC,KAAK;AAAA,IACjB;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,cAAc,OAAO,KAAK,cAAc;AAAA,IACxD;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,cAAc,OAAO,KAAK,cAAc;AAAA,IACxD;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,IAAI,WAAW;AACX,aAAO,UAAU,KAAK,SAAS,GAAG;AAAA,IACtC;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,eAAe,KAAK,YAAY,MAAM,wDAAwD;AAAA,IAC9G;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,OAAO,cAAc;AAAA,IACrC;AAAA,IACA,IAAI,eAAe;AACf,aAAO,KAAK,SAAS,MAAM,EAAE,KAAK;AAAA,IACtC;AAAA,IACA,IAAI,eAAe;AACf,UAAI,KAAK,QAAQ;AACb,eAAO,KAAK,SAAS,MAAM,EAAE,KAAK;AAAA,MACtC,OACK;AACD,eAAO,QAAQ,QAAQ,MAAS;AAAA,MACpC;AAAA,IACJ;AAAA,IACA,OAAO,MAAM;AACT,aAAO,KAAK,SAAS,QAAQ,IAAI,IAAI;AAAA,IACzC;AAAA,EACJ;AAEA,WAAS,sBAAsB,SAAS;AACpC,QAAI,QAAQ,aAAa,iBAAiB,KAAK,SAAS;AACpD,aAAO;AAAA,IACX,OACK;AACD,YAAM,uBAAuB,SAAS,cAAc,QAAQ;AAC5D,YAAM,WAAW,eAAe,WAAW;AAC3C,UAAI,UAAU;AACV,6BAAqB,QAAQ;AAAA,MACjC;AACA,2BAAqB,cAAc,QAAQ;AAC3C,2BAAqB,QAAQ;AAC7B,4BAAsB,sBAAsB,OAAO;AACnD,aAAO;AAAA,IACX;AAAA,EACJ;AACA,WAAS,sBAAsB,oBAAoB,eAAe;AAC9D,eAAW,EAAE,MAAM,MAAM,KAAK,cAAc,YAAY;AACpD,yBAAmB,aAAa,MAAM,KAAK;AAAA,IAC/C;AAAA,EACJ;AACA,WAAS,uBAAuB,MAAM;AAClC,UAAM,WAAW,SAAS,cAAc,UAAU;AAClD,aAAS,YAAY;AACrB,WAAO,SAAS;AAAA,EACpB;AACA,WAAS,SAAS,WAAW,EAAE,QAAQ,YAAY,OAAO,IAAI,CAAC,GAAG;AAC9D,UAAMF,SAAQ,IAAI,YAAY,WAAW;AAAA,MACrC;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,MACV;AAAA,IACJ,CAAC;AACD,QAAI,UAAU,OAAO,aAAa;AAC9B,aAAO,cAAcA,MAAK;AAAA,IAC9B,OACK;AACD,eAAS,gBAAgB,cAAcA,MAAK;AAAA,IAChD;AACA,WAAOA;AAAA,EACX;AACA,WAAS,qBAAqB;AAC1B,WAAO,IAAI,QAAQ,CAACG,aAAY,sBAAsB,MAAMA,SAAQ,CAAC,CAAC;AAAA,EAC1E;AACA,WAAS,oBAAoB;AACzB,WAAO,IAAI,QAAQ,CAACA,aAAY,WAAW,MAAMA,SAAQ,GAAG,CAAC,CAAC;AAAA,EAClE;AACA,WAAS,gBAAgB;AACrB,WAAO,QAAQ,QAAQ;AAAA,EAC3B;AACA,WAAS,kBAAkB,OAAO,IAAI;AAClC,WAAO,IAAI,UAAU,EAAE,gBAAgB,MAAM,WAAW;AAAA,EAC5D;AACA,WAAS,SAAS,YAAY,QAAQ;AAClC,UAAM,QAAQC,aAAY,SAAS,MAAM,EAAE,QAAQ,OAAO,EAAE,EAAE,MAAM,IAAI;AACxE,UAAMC,SAAQ,MAAM,CAAC,EAAE,MAAM,MAAM;AACnC,UAAM,SAASA,SAAQA,OAAM,CAAC,EAAE,SAAS;AACzC,WAAO,MAAM,IAAI,CAAC,SAAS,KAAK,MAAM,MAAM,CAAC,EAAE,KAAK,IAAI;AAAA,EAC5D;AACA,WAASD,aAAY,SAAS,QAAQ;AAClC,WAAO,QAAQ,OAAO,CAAC,QAAQ,QAAQE,OAAM;AACzC,YAAM,QAAQ,OAAOA,EAAC,KAAK,SAAY,KAAK,OAAOA,EAAC;AACpD,aAAO,SAAS,SAAS;AAAA,IAC7B,GAAG,EAAE;AAAA,EACT;AACA,WAAS,OAAO;AACZ,WAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,EAC3B,IAAI,CAACC,IAAGD,OAAM;AACf,UAAIA,MAAK,KAAKA,MAAK,MAAMA,MAAK,MAAMA,MAAK,IAAI;AACzC,eAAO;AAAA,MACX,WACSA,MAAK,IAAI;AACd,eAAO;AAAA,MACX,WACSA,MAAK,IAAI;AACd,gBAAQ,KAAK,MAAM,KAAK,OAAO,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE;AAAA,MAC1D,OACK;AACD,eAAO,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE;AAAA,MACrD;AAAA,IACJ,CAAC,EACI,KAAK,EAAE;AAAA,EAChB;AACA,WAAS,aAAa,kBAAkBE,WAAU;AAC9C,eAAW,SAASA,UAAS,IAAI,CAAC,YAAY,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,aAAa,aAAa,CAAC,GAAG;AAClI,UAAI,OAAO,SAAS;AAChB,eAAO;AAAA,IACf;AACA,WAAO;AAAA,EACX;AACA,WAAS,aAAa,kBAAkBA,WAAU;AAC9C,WAAOA,UAAS,KAAK,CAAC,YAAY,WAAW,QAAQ,aAAa,aAAa,CAAC;AAAA,EACpF;AACA,WAAS,cAAcA,WAAU;AAC7B,eAAW,WAAWA,WAAU;AAC5B,UAAI,QAAQ,aAAa,eAAe;AACpC,gBAAQ,aAAa,QAAQ,EAAE;AAAA,MACnC;AACA,cAAQ,aAAa,aAAa,MAAM;AAAA,IAC5C;AAAA,EACJ;AACA,WAAS,kBAAkBA,WAAU;AACjC,eAAW,WAAWA,WAAU;AAC5B,UAAI,QAAQ,aAAa,eAAe;AACpC,gBAAQ,gBAAgB,MAAM;AAAA,MAClC;AACA,cAAQ,gBAAgB,WAAW;AAAA,IACvC;AAAA,EACJ;AACA,WAAS,YAAY,SAAS,wBAAwB,KAAM;AACxD,WAAO,IAAI,QAAQ,CAACL,aAAY;AAC5B,YAAM,aAAa,MAAM;AACrB,gBAAQ,oBAAoB,SAAS,UAAU;AAC/C,gBAAQ,oBAAoB,QAAQ,UAAU;AAC9C,QAAAA,SAAQ;AAAA,MACZ;AACA,cAAQ,iBAAiB,QAAQ,YAAY,EAAE,MAAM,KAAK,CAAC;AAC3D,cAAQ,iBAAiB,SAAS,YAAY,EAAE,MAAM,KAAK,CAAC;AAC5D,iBAAWA,UAAS,qBAAqB;AAAA,IAC7C,CAAC;AAAA,EACL;AACA,WAAS,0BAA0B,QAAQ;AACvC,YAAQ,QAAQ;AAAA,MACZ,KAAK;AACD,eAAO,QAAQ;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACD,eAAO,QAAQ;AAAA,IACvB;AAAA,EACJ;AACA,WAAS,SAAS,QAAQ;AACtB,WAAO,UAAU,aAAa,UAAU,aAAa,UAAU;AAAA,EACnE;AACA,WAAS,kBAAkBK,WAAU;AACjC,UAAM,SAAS,aAAa,qBAAqB,GAAGA,SAAQ;AAC5D,WAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EACvC;AACA,WAAS,eAAe,MAAM;AAC1B,WAAO,SAAS,cAAc,cAAc,IAAI,IAAI;AAAA,EACxD;AACA,WAAS,eAAe,MAAM;AAC1B,UAAM,UAAU,eAAe,IAAI;AACnC,WAAO,WAAW,QAAQ;AAAA,EAC9B;AACA,WAAS,eAAe,MAAM,SAAS;AACnC,QAAI,UAAU,eAAe,IAAI;AACjC,QAAI,CAAC,SAAS;AACV,gBAAU,SAAS,cAAc,MAAM;AACvC,cAAQ,aAAa,QAAQ,IAAI;AACjC,eAAS,KAAK,YAAY,OAAO;AAAA,IACrC;AACA,YAAQ,aAAa,WAAW,OAAO;AACvC,WAAO;AAAA,EACX;AACA,WAAS,uBAAuB,SAAS,UAAU;AAC/C,QAAI;AACJ,QAAI,mBAAmB,SAAS;AAC5B,aAAQ,QAAQ,QAAQ,QAAQ,KAC5B,uBAAuB,QAAQ,kBAAkB,KAAK,QAAQ,YAAY,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO,QAAQ;AAAA,IAC5I;AAAA,EACJ;AAEA,MAAI;AACJ,GAAC,SAAUC,cAAa;AACpB,IAAAA,aAAYA,aAAY,KAAK,IAAI,CAAC,IAAI;AACtC,IAAAA,aAAYA,aAAY,MAAM,IAAI,CAAC,IAAI;AACvC,IAAAA,aAAYA,aAAY,KAAK,IAAI,CAAC,IAAI;AACtC,IAAAA,aAAYA,aAAY,OAAO,IAAI,CAAC,IAAI;AACxC,IAAAA,aAAYA,aAAY,QAAQ,IAAI,CAAC,IAAI;AAAA,EAC7C,GAAG,gBAAgB,cAAc,CAAC,EAAE;AACpC,WAAS,sBAAsB,QAAQ;AACnC,YAAQ,OAAO,YAAY,GAAG;AAAA,MAC1B,KAAK;AACD,eAAO,YAAY;AAAA,MACvB,KAAK;AACD,eAAO,YAAY;AAAA,MACvB,KAAK;AACD,eAAO,YAAY;AAAA,MACvB,KAAK;AACD,eAAO,YAAY;AAAA,MACvB,KAAK;AACD,eAAO,YAAY;AAAA,IAC3B;AAAA,EACJ;AACA,MAAM,eAAN,MAAmB;AAAA,IACf,YAAY,UAAU,QAAQP,WAAU,OAAO,IAAI,gBAAgB,GAAG,SAAS,MAAM;AACjF,WAAK,kBAAkB,IAAI,gBAAgB;AAC3C,WAAK,wBAAwB,CAAC,WAAW;AAAA,MAAE;AAC3C,WAAK,WAAW;AAChB,WAAK,SAAS;AACd,WAAK,UAAU,KAAK;AACpB,WAAK,OAAO;AACZ,WAAK,MAAMA;AACX,WAAK,SAAS;AAAA,IAClB;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK;AAAA,IAChB;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,IAAI;AAAA,IACpB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,OAAO,MAAM,KAAK,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC;AAAA,IAC1D;AAAA,IACA,SAAS;AACL,WAAK,gBAAgB,MAAM;AAAA,IAC/B;AAAA,IACA,MAAM,UAAU;AACZ,YAAM,EAAE,aAAa,IAAI;AACzB,WAAK,SAAS,eAAe,IAAI;AACjC,YAAM,KAAK,4BAA4B,YAAY;AACnD,UAAI;AACA,aAAK,SAAS,eAAe,IAAI;AACjC,cAAM,WAAW,MAAM,MAAM,KAAK,IAAI,MAAM,YAAY;AACxD,eAAO,MAAM,KAAK,QAAQ,QAAQ;AAAA,MACtC,SACOQ,QAAO;AACV,YAAIA,OAAM,SAAS,cAAc;AAC7B,cAAI,KAAK,0BAA0BA,MAAK,GAAG;AACvC,iBAAK,SAAS,eAAe,MAAMA,MAAK;AAAA,UAC5C;AACA,gBAAMA;AAAA,QACV;AAAA,MACJ,UACA;AACI,aAAK,SAAS,gBAAgB,IAAI;AAAA,MACtC;AAAA,IACJ;AAAA,IACA,MAAM,QAAQ,UAAU;AACpB,YAAM,gBAAgB,IAAI,cAAc,QAAQ;AAChD,YAAMV,SAAQ,SAAS,+BAA+B;AAAA,QAClD,YAAY;AAAA,QACZ,QAAQ,EAAE,cAAc;AAAA,QACxB,QAAQ,KAAK;AAAA,MACjB,CAAC;AACD,UAAIA,OAAM,kBAAkB;AACxB,aAAK,SAAS,iCAAiC,MAAM,aAAa;AAAA,MACtE,WACS,cAAc,WAAW;AAC9B,aAAK,SAAS,6BAA6B,MAAM,aAAa;AAAA,MAClE,OACK;AACD,aAAK,SAAS,0BAA0B,MAAM,aAAa;AAAA,MAC/D;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,eAAe;AACf,UAAI;AACJ,aAAO;AAAA,QACH,QAAQ,YAAY,KAAK,MAAM,EAAE,YAAY;AAAA,QAC7C,aAAa;AAAA,QACb,SAAS,KAAK;AAAA,QACd,UAAU;AAAA,QACV,MAAM,KAAK,SAAS,OAAO,KAAK;AAAA,QAChC,QAAQ,KAAK;AAAA,QACb,WAAW,KAAK,KAAK,SAAS,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG;AAAA,MACpF;AAAA,IACJ;AAAA,IACA,IAAI,iBAAiB;AACjB,aAAO;AAAA,QACH,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,WAAW,YAAY;AAAA,IACvC;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,gBAAgB;AAAA,IAChC;AAAA,IACA,mBAAmB,UAAU;AACzB,WAAK,QAAQ,QAAQ,IAAI,CAAC,UAAU,KAAK,QAAQ,QAAQ,CAAC,EAAE,KAAK,IAAI;AAAA,IACzE;AAAA,IACA,MAAM,4BAA4B,cAAc;AAC5C,YAAM,sBAAsB,IAAI,QAAQ,CAACG,aAAa,KAAK,wBAAwBA,QAAQ;AAC3F,YAAMH,SAAQ,SAAS,8BAA8B;AAAA,QACjD,YAAY;AAAA,QACZ,QAAQ;AAAA,UACJ;AAAA,UACA,KAAK,KAAK;AAAA,UACV,QAAQ,KAAK;AAAA,QACjB;AAAA,QACA,QAAQ,KAAK;AAAA,MACjB,CAAC;AACD,UAAIA,OAAM;AACN,cAAM;AAAA,IACd;AAAA,IACA,0BAA0BU,QAAO;AAC7B,YAAMV,SAAQ,SAAS,6BAA6B;AAAA,QAChD,QAAQ,KAAK;AAAA,QACb,YAAY;AAAA,QACZ,QAAQ,EAAE,SAAS,MAAM,OAAOU,OAAM;AAAA,MAC1C,CAAC;AACD,aAAO,CAACV,OAAM;AAAA,IAClB;AAAA,EACJ;AAEA,MAAM,qBAAN,MAAyB;AAAA,IACrB,YAAY,UAAU,SAAS;AAC3B,WAAK,UAAU;AACf,WAAK,YAAY,CAAC,YAAY;AAC1B,cAAM,YAAY,QAAQ,MAAM,EAAE,EAAE,CAAC;AACrC,YAAI,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,gBAAgB;AAChF,eAAK,SAAS,0BAA0B,KAAK,OAAO;AAAA,QACxD;AAAA,MACJ;AACA,WAAK,WAAW;AAChB,WAAK,UAAU;AACf,WAAK,uBAAuB,IAAI,qBAAqB,KAAK,SAAS;AAAA,IACvE;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,UAAU;AACf,aAAK,qBAAqB,QAAQ,KAAK,OAAO;AAAA,MAClD;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,qBAAqB,UAAU,KAAK,OAAO;AAAA,MACpD;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAChB,OAAO,KAAKD,UAAS;AACjB,UAAI,OAAOA,YAAW,UAAU;AAC5B,eAAO,IAAI,KAAK,uBAAuBA,QAAO,CAAC;AAAA,MACnD,OACK;AACD,eAAOA;AAAA,MACX;AAAA,IACJ;AAAA,IACA,YAAY,UAAU;AAClB,WAAK,WAAW,qBAAqB,QAAQ;AAAA,IACjD;AAAA,EACJ;AACA,gBAAc,cAAc;AAC5B,WAAS,qBAAqB,UAAU;AACpC,eAAW,WAAW,SAAS,iBAAiB,cAAc,GAAG;AAC7D,YAAM,gBAAgB,SAAS,WAAW,SAAS,IAAI;AACvD,iBAAW,sBAAsB,cAAc,gBAAgB,QAAQ,iBAAiB,QAAQ,GAAG;AAC/F,2BAAmB,YAAY,sBAAsB,kBAAkB,CAAC;AAAA,MAC5E;AACA,cAAQ,YAAY,aAAa;AAAA,IACrC;AACA,WAAO;AAAA,EACX;AAEA,MAAI;AACJ,GAAC,SAAUY,sBAAqB;AAC5B,IAAAA,qBAAoBA,qBAAoB,aAAa,IAAI,CAAC,IAAI;AAC9D,IAAAA,qBAAoBA,qBAAoB,YAAY,IAAI,CAAC,IAAI;AAC7D,IAAAA,qBAAoBA,qBAAoB,SAAS,IAAI,CAAC,IAAI;AAC1D,IAAAA,qBAAoBA,qBAAoB,WAAW,IAAI,CAAC,IAAI;AAC5D,IAAAA,qBAAoBA,qBAAoB,UAAU,IAAI,CAAC,IAAI;AAC3D,IAAAA,qBAAoBA,qBAAoB,SAAS,IAAI,CAAC,IAAI;AAAA,EAC9D,GAAG,wBAAwB,sBAAsB,CAAC,EAAE;AACpD,MAAI;AACJ,GAAC,SAAUC,cAAa;AACpB,IAAAA,aAAY,YAAY,IAAI;AAC5B,IAAAA,aAAY,WAAW,IAAI;AAC3B,IAAAA,aAAY,OAAO,IAAI;AAAA,EAC3B,GAAG,gBAAgB,cAAc,CAAC,EAAE;AACpC,WAAS,sBAAsB,UAAU;AACrC,YAAQ,SAAS,YAAY,GAAG;AAAA,MAC5B,KAAK,YAAY;AACb,eAAO,YAAY;AAAA,MACvB,KAAK,YAAY;AACb,eAAO,YAAY;AAAA,MACvB;AACI,eAAO,YAAY;AAAA,IAC3B;AAAA,EACJ;AACA,MAAM,iBAAN,MAAM,gBAAe;AAAA,IACjB,OAAO,cAAcb,UAAS,UAAU,YAAY;AAChD,aAAO,QAAQ,QAAQ,QAAQA,QAAO,CAAC;AAAA,IAC3C;AAAA,IACA,YAAY,UAAU,aAAa,WAAW,eAAe,OAAO;AAChE,WAAK,QAAQ,oBAAoB;AACjC,WAAK,WAAW;AAChB,WAAK,cAAc;AACnB,WAAK,YAAY;AACjB,WAAK,WAAW,cAAc,aAAa,SAAS;AACpD,WAAK,WAAW,UAAU,KAAK,MAAM;AACrC,UAAI,KAAK,UAAU,YAAY,KAAK;AAChC,6BAAqB,KAAK,UAAU,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC;AAAA,MAChE;AACA,WAAK,eAAe,IAAI,aAAa,MAAM,KAAK,QAAQ,KAAK,UAAU,KAAK,MAAM,KAAK,WAAW;AAClG,WAAK,eAAe;AAAA,IACxB;AAAA,IACA,IAAI,SAAS;AACT,UAAI;AACJ,YAAM,WAAW,KAAK,KAAK,eAAe,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,YAAY,MAAM,KAAK,YAAY,aAAa,QAAQ,KAAK;AACxJ,aAAO,sBAAsB,OAAO,YAAY,CAAC,KAAK,YAAY;AAAA,IACtE;AAAA,IACA,IAAI,SAAS;AACT,UAAI;AACJ,YAAM,oBAAoB,OAAO,KAAK,YAAY,WAAW,WAAW,KAAK,YAAY,SAAS;AAClG,WAAK,KAAK,KAAK,eAAe,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,YAAY,GAAG;AAC1F,eAAO,KAAK,UAAU,aAAa,YAAY,KAAK;AAAA,MACxD,OACK;AACD,eAAO,KAAK,YAAY,aAAa,QAAQ,KAAK,qBAAqB;AAAA,MAC3E;AAAA,IACJ;AAAA,IACA,IAAI,OAAO;AACP,UAAI,KAAK,WAAW,YAAY,cAAc,KAAK,UAAU,YAAY,KAAK;AAC1E,eAAO,IAAI,gBAAgB,KAAK,cAAc;AAAA,MAClD,OACK;AACD,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,IAAI,UAAU;AACV,UAAI;AACJ,aAAO,wBAAwB,KAAK,KAAK,eAAe,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,aAAa,MAAM,KAAK,YAAY,OAAO;AAAA,IACxJ;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,aAAa;AAAA,IAC7B;AAAA,IACA,IAAI,iBAAiB;AACjB,aAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM;AACzD,eAAO,QAAQ,OAAO,OAAO,SAAS,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;AAAA,MACzE,GAAG,CAAC,CAAC;AAAA,IACT;AAAA,IACA,MAAM,QAAQ;AACV,YAAM,EAAE,aAAa,WAAW,IAAI;AACpC,YAAM,sBAAsB,aAAa,sBAAsB,KAAK,WAAW,KAAK,WAAW;AAC/F,UAAI,OAAO,wBAAwB,UAAU;AACzC,cAAM,SAAS,MAAM,gBAAe,cAAc,qBAAqB,KAAK,aAAa,KAAK,SAAS;AACvG,YAAI,CAAC,QAAQ;AACT;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,KAAK,SAAS,aAAa;AAC3B,aAAK,QAAQ;AACb,eAAO,KAAK,aAAa,QAAQ;AAAA,MACrC;AAAA,IACJ;AAAA,IACA,OAAO;AACH,YAAM,EAAE,UAAU,QAAQ,IAAI;AAC9B,UAAI,KAAK,SAAS,YAAY,KAAK,SAAS,SAAS;AACjD,aAAK,QAAQ;AACb,aAAK,aAAa,OAAO;AACzB,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,eAAe,SAAS;AACpB,UAAI,CAAC,QAAQ,QAAQ;AACjB,cAAM,QAAQ,eAAe,eAAe,YAAY,CAAC,KAAK,eAAe,YAAY;AACzF,YAAI,OAAO;AACP,kBAAQ,QAAQ,cAAc,IAAI;AAAA,QACtC;AAAA,MACJ;AACA,UAAI,KAAK,kCAAkC,OAAO,GAAG;AACjD,gBAAQ,mBAAmB,cAAc,WAAW;AAAA,MACxD;AAAA,IACJ;AAAA,IACA,eAAe,UAAU;AACrB,UAAI;AACJ,WAAK,QAAQ,oBAAoB;AACjC,OAAC,KAAK,KAAK,eAAe,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,YAAY,EAAE;AACzF,WAAK,eAAe;AACpB,eAAS,sBAAsB;AAAA,QAC3B,QAAQ,KAAK;AAAA,QACb,QAAQ,EAAE,gBAAgB,KAAK;AAAA,MACnC,CAAC;AACD,WAAK,SAAS,sBAAsB,IAAI;AAAA,IAC5C;AAAA,IACA,iCAAiC,SAAS,UAAU;AAChD,WAAK,SAAS,EAAE,SAAS,SAAS,WAAW,eAAe,SAAS;AAAA,IACzE;AAAA,IACA,6BAA6B,SAAS,UAAU;AAC5C,UAAI,SAAS,eAAe,SAAS,aAAa;AAC9C,aAAK,SAAS,iCAAiC,MAAM,QAAQ;AAAA,MACjE,WACS,KAAK,oBAAoB,OAAO,KAAK,iCAAiC,QAAQ,GAAG;AACtF,cAAMW,SAAQ,IAAI,MAAM,kDAAkD;AAC1E,aAAK,SAAS,sBAAsB,MAAMA,MAAK;AAAA,MACnD,OACK;AACD,aAAK,QAAQ,oBAAoB;AACjC,aAAK,SAAS,EAAE,SAAS,MAAM,eAAe,SAAS;AACvD,aAAK,SAAS,oCAAoC,MAAM,QAAQ;AAAA,MACpE;AAAA,IACJ;AAAA,IACA,0BAA0B,SAAS,UAAU;AACzC,WAAK,SAAS,EAAE,SAAS,OAAO,eAAe,SAAS;AACxD,WAAK,SAAS,iCAAiC,MAAM,QAAQ;AAAA,IACjE;AAAA,IACA,eAAe,SAASA,QAAO;AAC3B,WAAK,SAAS,EAAE,SAAS,OAAO,OAAAA,OAAM;AACtC,WAAK,SAAS,sBAAsB,MAAMA,MAAK;AAAA,IACnD;AAAA,IACA,gBAAgB,UAAU;AACtB,UAAI;AACJ,WAAK,QAAQ,oBAAoB;AACjC,OAAC,KAAK,KAAK,eAAe,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,UAAU;AACxF,WAAK,mBAAmB;AACxB,eAAS,oBAAoB;AAAA,QACzB,QAAQ,KAAK;AAAA,QACb,QAAQ,OAAO,OAAO,EAAE,gBAAgB,KAAK,GAAG,KAAK,MAAM;AAAA,MAC/D,CAAC;AACD,WAAK,SAAS,uBAAuB,IAAI;AAAA,IAC7C;AAAA,IACA,iBAAiB;AACb,UAAI,CAAC,KAAK,aAAa,CAAC,KAAK;AACzB;AACJ,UAAI,KAAK,UAAU,QAAQ,QAAQ,GAAG;AAClC,aAAK,qBAAqB,KAAK,UAAU;AACzC,aAAK,UAAU,YAAY,KAAK;AAAA,MACpC,WACS,KAAK,UAAU,QAAQ,OAAO,GAAG;AACtC,cAAM,QAAQ,KAAK;AACnB,aAAK,qBAAqB,MAAM;AAChC,cAAM,QAAQ,KAAK;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,qBAAqB;AACjB,UAAI,CAAC,KAAK,aAAa,CAAC,KAAK;AACzB;AACJ,UAAI,KAAK,UAAU,QAAQ,QAAQ,GAAG;AAClC,aAAK,UAAU,YAAY,KAAK;AAAA,MACpC,WACS,KAAK,UAAU,QAAQ,OAAO,GAAG;AACtC,cAAM,QAAQ,KAAK;AACnB,cAAM,QAAQ,KAAK;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,oBAAoB,SAAS;AACzB,aAAO,CAAC,QAAQ,UAAU,KAAK;AAAA,IACnC;AAAA,IACA,kCAAkC,SAAS;AACvC,aAAO,CAAC,QAAQ,UAAU,aAAa,qBAAqB,KAAK,WAAW,KAAK,WAAW;AAAA,IAChG;AAAA,IACA,IAAI,cAAc;AACd,UAAI;AACJ,cAAQ,KAAK,KAAK,eAAe,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,yBAAyB;AAAA,IAC/G;AAAA,EACJ;AACA,WAAS,cAAc,aAAa,WAAW;AAC3C,UAAM,WAAW,IAAI,SAAS,WAAW;AACzC,UAAM,OAAO,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,MAAM;AAChG,UAAM,QAAQ,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,OAAO;AAClG,QAAI,MAAM;AACN,eAAS,OAAO,MAAM,SAAS,EAAE;AAAA,IACrC;AACA,WAAO;AAAA,EACX;AACA,WAAS,eAAe,YAAY;AAChC,QAAI,cAAc,MAAM;AACpB,YAAM,UAAU,SAAS,SAAS,SAAS,OAAO,MAAM,IAAI,IAAI,CAAC;AACjE,YAAM,SAAS,QAAQ,KAAK,CAACG,YAAWA,QAAO,WAAW,UAAU,CAAC;AACrE,UAAI,QAAQ;AACR,cAAM,QAAQ,OAAO,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG;AACjD,eAAO,QAAQ,mBAAmB,KAAK,IAAI;AAAA,MAC/C;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,iCAAiC,UAAU;AAChD,WAAO,SAAS,cAAc,OAAO,CAAC,SAAS;AAAA,EACnD;AACA,WAAS,qBAAqB,KAAK,SAAS;AACxC,UAAM,eAAe,IAAI,gBAAgB;AACzC,eAAW,CAAC,MAAM,KAAK,KAAK,SAAS;AACjC,UAAI,iBAAiB;AACjB;AACJ,mBAAa,OAAO,MAAM,KAAK;AAAA,IACnC;AACA,QAAI,SAAS,aAAa,SAAS;AACnC,WAAO;AAAA,EACX;AAEA,MAAM,WAAN,MAAe;AAAA,IACX,YAAY,SAAS;AACjB,WAAK,UAAU;AAAA,IACnB;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,KAAK,QAAQ,cAAc;AAAA,IACtC;AAAA,IACA,IAAI,WAAW;AACX,aAAO,CAAC,GAAG,KAAK,QAAQ,QAAQ;AAAA,IACpC;AAAA,IACA,UAAU,QAAQ;AACd,aAAO,KAAK,oBAAoB,MAAM,KAAK;AAAA,IAC/C;AAAA,IACA,oBAAoB,QAAQ;AACxB,aAAO,SAAS,KAAK,QAAQ,cAAc,QAAQ,MAAM,eAAe,MAAM,IAAI,IAAI;AAAA,IAC1F;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,4BAA4B;AAC5B,YAAM,wBAAwB;AAC9B,iBAAW,WAAW,KAAK,QAAQ,iBAAiB,aAAa,GAAG;AAChE,YAAI,QAAQ,QAAQ,qBAAqB,KAAK;AAC1C,iBAAO;AAAA;AAEP;AAAA,MACR;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,oBAAoB;AACpB,aAAO,0BAA0B,KAAK,OAAO;AAAA,IACjD;AAAA,IACA,wBAAwBC,KAAI;AACxB,aAAO,wBAAwB,KAAK,SAASA,GAAE;AAAA,IACnD;AAAA,IACA,kCAAkC,UAAU;AACxC,YAAM,sBAAsB,CAAC;AAC7B,iBAAW,2BAA2B,KAAK,mBAAmB;AAC1D,cAAM,EAAE,IAAAA,IAAG,IAAI;AACf,cAAM,sBAAsB,SAAS,wBAAwBA,GAAE;AAC/D,YAAI,qBAAqB;AACrB,8BAAoBA,GAAE,IAAI,CAAC,yBAAyB,mBAAmB;AAAA,QAC3E;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,WAAS,wBAAwB,MAAMA,KAAI;AACvC,WAAO,KAAK,cAAc,IAAIA,GAAE,wBAAwB;AAAA,EAC5D;AACA,WAAS,0BAA0B,MAAM;AACrC,WAAO,KAAK,iBAAiB,4BAA4B;AAAA,EAC7D;AAEA,MAAM,qBAAN,MAAyB;AAAA,IACrB,YAAY,UAAU,aAAa;AAC/B,WAAK,UAAU;AACf,WAAK,iBAAiB,MAAM;AACxB,aAAK,YAAY,oBAAoB,UAAU,KAAK,eAAe,KAAK;AACxE,aAAK,YAAY,iBAAiB,UAAU,KAAK,eAAe,KAAK;AAAA,MACzE;AACA,WAAK,gBAAiB,CAACd,WAAU;AAC7B,YAAI,CAACA,OAAM,kBAAkB;AACzB,gBAAM,OAAOA,OAAM,kBAAkB,kBAAkBA,OAAM,SAAS;AACtE,gBAAM,YAAYA,OAAM,aAAa;AACrC,cAAI,QACA,+BAA+B,MAAM,SAAS,KAC9C,8BAA8B,MAAM,SAAS,KAC7C,KAAK,SAAS,eAAe,MAAM,SAAS,GAAG;AAC/C,YAAAA,OAAM,eAAe;AACrB,YAAAA,OAAM,yBAAyB;AAC/B,iBAAK,SAAS,cAAc,MAAM,SAAS;AAAA,UAC/C;AAAA,QACJ;AAAA,MACJ;AACA,WAAK,WAAW;AAChB,WAAK,cAAc;AAAA,IACvB;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,YAAY,iBAAiB,UAAU,KAAK,gBAAgB,IAAI;AACrE,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,YAAY,oBAAoB,UAAU,KAAK,gBAAgB,IAAI;AACxE,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,+BAA+B,MAAM,WAAW;AACrD,UAAM,UAAU,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,YAAY,MAAM,KAAK,aAAa,QAAQ;AACzI,WAAO,UAAU;AAAA,EACrB;AACA,WAAS,8BAA8B,MAAM,WAAW;AACpD,SAAK,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,YAAY,MAAM,KAAK,aAAa,QAAQ,GAAG;AAC7H,YAAM,UAAU,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,YAAY,MAAM,KAAK;AACpH,iBAAW,WAAW,SAAS,kBAAkB,MAAM,GAAG;AACtD,YAAI,mBAAmB;AACnB,iBAAO;AAAA,MACf;AACA,aAAO;AAAA,IACX,OACK;AACD,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAM,OAAN,MAAW;AAAA,IACP,YAAY,UAAU,SAAS;AAC3B,WAAK,uBAAuB,CAAC,WAAW;AAAA,MAAE;AAC1C,WAAK,6BAA6B,CAAC,WAAW;AAAA,MAAE;AAChD,WAAK,WAAW;AAChB,WAAK,UAAU;AAAA,IACnB;AAAA,IACA,eAAe,QAAQ;AACnB,YAAM,UAAU,KAAK,SAAS,oBAAoB,MAAM;AACxD,UAAI,SAAS;AACT,aAAK,gBAAgB,OAAO;AAC5B,aAAK,aAAa,OAAO;AAAA,MAC7B,OACK;AACD,aAAK,iBAAiB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAAA,MACxC;AAAA,IACJ;AAAA,IACA,2BAA2BE,WAAU;AACjC,WAAK,eAAe,UAAUA,SAAQ,CAAC;AAAA,IAC3C;AAAA,IACA,gBAAgB,SAAS;AACrB,cAAQ,eAAe;AAAA,IAC3B;AAAA,IACA,aAAa,SAAS;AAClB,UAAI,mBAAmB,aAAa;AAChC,YAAI,QAAQ,aAAa,UAAU,GAAG;AAClC,kBAAQ,MAAM;AAAA,QAClB,OACK;AACD,kBAAQ,aAAa,YAAY,IAAI;AACrC,kBAAQ,MAAM;AACd,kBAAQ,gBAAgB,UAAU;AAAA,QACtC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,iBAAiB,EAAE,GAAAa,IAAG,GAAAC,GAAE,GAAG;AACvB,WAAK,WAAW,SAASD,IAAGC,EAAC;AAAA,IACjC;AAAA,IACA,cAAc;AACV,WAAK,iBAAiB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAAA,IACxC;AAAA,IACA,IAAI,aAAa;AACb,aAAO;AAAA,IACX;AAAA,IACA,MAAM,OAAO,UAAU;AACnB,YAAM,EAAE,WAAW,cAAc,aAAa,SAAS,IAAI;AAC3D,UAAI,cAAc;AACd,YAAI;AACA,eAAK,gBAAgB,IAAI,QAAQ,CAACb,aAAa,KAAK,uBAAuBA,QAAQ;AACnF,eAAK,WAAW;AAChB,gBAAM,KAAK,wBAAwB,QAAQ;AAC3C,gBAAM,qBAAqB,IAAI,QAAQ,CAACA,aAAa,KAAK,6BAA6BA,QAAQ;AAC/F,gBAAM,UAAU,EAAE,QAAQ,KAAK,4BAA4B,QAAQ,KAAK,SAAS,cAAc;AAC/F,gBAAM,kBAAkB,KAAK,SAAS,sBAAsB,UAAU,OAAO;AAC7E,cAAI,CAAC;AACD,kBAAM;AACV,gBAAM,KAAK,eAAe,QAAQ;AAClC,eAAK,SAAS,qBAAqB,UAAU,SAAS;AACtD,eAAK,SAAS,0BAA0B,KAAK,OAAO;AACpD,eAAK,wBAAwB,QAAQ;AAAA,QACzC,UACA;AACI,iBAAO,KAAK;AACZ,eAAK,qBAAqB,MAAS;AACnC,iBAAO,KAAK;AAAA,QAChB;AAAA,MACJ,OACK;AACD,aAAK,WAAW,SAAS,YAAY;AAAA,MACzC;AAAA,IACJ;AAAA,IACA,WAAW,QAAQ;AACf,WAAK,SAAS,gBAAgB,MAAM;AAAA,IACxC;AAAA,IACA,MAAM,wBAAwB,UAAU;AACpC,WAAK,cAAc,SAAS,SAAS;AACrC,YAAM,SAAS,gBAAgB;AAAA,IACnC;AAAA,IACA,cAAc,WAAW;AACrB,UAAI,WAAW;AACX,aAAK,QAAQ,aAAa,sBAAsB,EAAE;AAAA,MACtD,OACK;AACD,aAAK,QAAQ,gBAAgB,oBAAoB;AAAA,MACrD;AAAA,IACJ;AAAA,IACA,MAAM,eAAe,UAAU;AAC3B,YAAM,SAAS,OAAO;AAAA,IAC1B;AAAA,IACA,wBAAwB,UAAU;AAC9B,eAAS,gBAAgB;AAAA,IAC7B;AAAA,EACJ;AAEA,MAAM,YAAN,cAAwB,KAAK;AAAA,IACzB,UAAU;AACN,WAAK,QAAQ,YAAY;AAAA,IAC7B;AAAA,IACA,IAAI,WAAW;AACX,aAAO,IAAI,SAAS,KAAK,OAAO;AAAA,IACpC;AAAA,EACJ;AAEA,MAAM,kBAAN,MAAsB;AAAA,IAClB,YAAY,UAAU,SAAS;AAC3B,WAAK,eAAe,CAACH,WAAU;AAC3B,YAAI,KAAK,sBAAsBA,OAAM,MAAM,GAAG;AAC1C,eAAK,aAAaA;AAAA,QACtB,OACK;AACD,iBAAO,KAAK;AAAA,QAChB;AAAA,MACJ;AACA,WAAK,cAAe,CAACA,WAAU;AAC3B,YAAI,KAAK,cAAc,KAAK,sBAAsBA,OAAM,MAAM,KAAKA,OAAM,kBAAkB,SAAS;AAChG,cAAI,KAAK,SAAS,yBAAyBA,OAAM,QAAQA,OAAM,OAAO,KAAKA,OAAM,OAAO,aAAa,GAAG;AACpG,iBAAK,WAAW,eAAe;AAC/B,YAAAA,OAAM,eAAe;AACrB,iBAAK,SAAS,qBAAqBA,OAAM,QAAQA,OAAM,OAAO,KAAKA,OAAM,OAAO,aAAa;AAAA,UACjG;AAAA,QACJ;AACA,eAAO,KAAK;AAAA,MAChB;AACA,WAAK,YAAa,CAAC,WAAW;AAC1B,eAAO,KAAK;AAAA,MAChB;AACA,WAAK,WAAW;AAChB,WAAK,UAAU;AAAA,IACnB;AAAA,IACA,QAAQ;AACJ,WAAK,QAAQ,iBAAiB,SAAS,KAAK,YAAY;AACxD,eAAS,iBAAiB,eAAe,KAAK,WAAW;AACzD,eAAS,iBAAiB,sBAAsB,KAAK,SAAS;AAAA,IAClE;AAAA,IACA,OAAO;AACH,WAAK,QAAQ,oBAAoB,SAAS,KAAK,YAAY;AAC3D,eAAS,oBAAoB,eAAe,KAAK,WAAW;AAC5D,eAAS,oBAAoB,sBAAsB,KAAK,SAAS;AAAA,IACrE;AAAA,IACA,sBAAsB,QAAQ;AAC1B,YAAM,UAAU,kBAAkB,UAAU,SAAS,kBAAkB,OAAO,OAAO,gBAAgB;AACrG,aAAO,WAAW,QAAQ,QAAQ,mBAAmB,KAAK,KAAK;AAAA,IACnE;AAAA,EACJ;AAEA,MAAM,oBAAN,MAAwB;AAAA,IACpB,YAAY,UAAU,aAAa;AAC/B,WAAK,UAAU;AACf,WAAK,gBAAgB,MAAM;AACvB,aAAK,YAAY,oBAAoB,SAAS,KAAK,cAAc,KAAK;AACtE,aAAK,YAAY,iBAAiB,SAAS,KAAK,cAAc,KAAK;AAAA,MACvE;AACA,WAAK,eAAe,CAACA,WAAU;AAC3B,YAAIA,kBAAiB,cAAc,KAAK,wBAAwBA,MAAK,GAAG;AACpE,gBAAM,SAAUA,OAAM,gBAAgBA,OAAM,aAAa,EAAE,CAAC,KAAMA,OAAM;AACxE,gBAAM,OAAO,KAAK,wBAAwB,MAAM;AAChD,cAAI,QAAQ,oBAAoB,IAAI,GAAG;AACnC,kBAAME,YAAW,KAAK,mBAAmB,IAAI;AAC7C,gBAAI,KAAK,SAAS,yBAAyB,MAAMA,WAAUF,MAAK,GAAG;AAC/D,cAAAA,OAAM,eAAe;AACrB,mBAAK,SAAS,uBAAuB,MAAME,SAAQ;AAAA,YACvD;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,WAAK,WAAW;AAChB,WAAK,cAAc;AAAA,IACvB;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,YAAY,iBAAiB,SAAS,KAAK,eAAe,IAAI;AACnE,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,YAAY,oBAAoB,SAAS,KAAK,eAAe,IAAI;AACtE,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,wBAAwBF,QAAO;AAC3B,aAAO,EAAGA,OAAM,UAAUA,OAAM,OAAO,qBACnCA,OAAM,oBACNA,OAAM,QAAQ,KACdA,OAAM,UACNA,OAAM,WACNA,OAAM,WACNA,OAAM;AAAA,IACd;AAAA,IACA,wBAAwB,QAAQ;AAC5B,aAAO,uBAAuB,QAAQ,0CAA0C;AAAA,IACpF;AAAA,IACA,mBAAmB,MAAM;AACrB,aAAO,UAAU,KAAK,aAAa,MAAM,KAAK,EAAE;AAAA,IACpD;AAAA,EACJ;AACA,WAAS,oBAAoB,QAAQ;AACjC,QAAI,OAAO,aAAa,QAAQ,GAAG;AAC/B,iBAAW,WAAW,SAAS,kBAAkB,OAAO,MAAM,GAAG;AAC7D,YAAI,mBAAmB;AACnB,iBAAO;AAAA,MACf;AACA,aAAO;AAAA,IACX,OACK;AACD,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAM,wBAAN,MAA4B;AAAA,IACxB,YAAY,UAAU,SAAS;AAC3B,WAAK,WAAW;AAChB,WAAK,kBAAkB,IAAI,kBAAkB,MAAM,OAAO;AAAA,IAC9D;AAAA,IACA,QAAQ;AACJ,WAAK,gBAAgB,MAAM;AAAA,IAC/B;AAAA,IACA,OAAO;AACH,WAAK,gBAAgB,KAAK;AAAA,IAC9B;AAAA,IACA,yBAAyB,MAAME,WAAU,eAAe;AACpD,aAAQ,KAAK,SAAS,6BAA6B,MAAMA,WAAU,aAAa,KAC5E,KAAK,aAAa,mBAAmB;AAAA,IAC7C;AAAA,IACA,uBAAuB,MAAMA,WAAU;AACnC,YAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,YAAM,OAAO;AACb,iBAAW,CAAC,MAAM,KAAK,KAAKA,UAAS,cAAc;AAC/C,aAAK,OAAO,OAAO,OAAO,SAAS,cAAc,OAAO,GAAG,EAAE,MAAM,MAAM,MAAM,CAAC,CAAC;AAAA,MACrF;AACA,YAAM,SAAS,OAAO,OAAOA,WAAU,EAAE,QAAQ,GAAG,CAAC;AACrD,WAAK,aAAa,cAAc,MAAM;AACtC,WAAK,aAAa,UAAU,OAAO,IAAI;AACvC,WAAK,aAAa,UAAU,EAAE;AAC9B,YAAM,SAAS,KAAK,aAAa,mBAAmB;AACpD,UAAI;AACA,aAAK,aAAa,UAAU,MAAM;AACtC,YAAM,aAAa,KAAK,aAAa,kBAAkB;AACvD,UAAI;AACA,aAAK,aAAa,oBAAoB,UAAU;AACpD,YAAM,cAAc,eAAe,IAAI;AACvC,UAAI;AACA,aAAK,aAAa,qBAAqB,WAAW;AACtD,YAAM,eAAe,KAAK,aAAa,oBAAoB;AAC3D,UAAI;AACA,aAAK,aAAa,sBAAsB,YAAY;AACxD,YAAM,cAAc,KAAK,aAAa,mBAAmB;AACzD,UAAI;AACA,aAAK,aAAa,qBAAqB,EAAE;AAC7C,WAAK,SAAS,4BAA4B,MAAMA,WAAU,IAAI;AAC9D,eAAS,KAAK,YAAY,IAAI;AAC9B,WAAK,iBAAiB,oBAAoB,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,KAAK,CAAC;AAC7E,4BAAsB,MAAM,KAAK,cAAc,CAAC;AAAA,IACpD;AAAA,EACJ;AAEA,MAAM,QAAN,MAAY;AAAA,IACR,aAAa,4BAA4B,UAAU,qBAAqBe,WAAU;AAC9E,YAAM,QAAQ,IAAI,KAAK,UAAU,mBAAmB;AACpD,YAAM,MAAM;AACZ,YAAMA,UAAS;AACf,YAAM,MAAM;AAAA,IAChB;AAAA,IACA,YAAY,UAAU,qBAAqB;AACvC,WAAK,WAAW;AAChB,WAAK,sBAAsB;AAAA,IAC/B;AAAA,IACA,QAAQ;AACJ,iBAAWH,OAAM,KAAK,qBAAqB;AACvC,cAAM,CAAC,yBAAyB,mBAAmB,IAAI,KAAK,oBAAoBA,GAAE;AAClF,aAAK,SAAS,cAAc,yBAAyB,mBAAmB;AACxE,aAAK,0CAA0C,mBAAmB;AAAA,MACtE;AAAA,IACJ;AAAA,IACA,QAAQ;AACJ,iBAAWA,OAAM,KAAK,qBAAqB;AACvC,cAAM,CAAC,uBAAuB,IAAI,KAAK,oBAAoBA,GAAE;AAC7D,aAAK,wCAAwC,uBAAuB;AACpE,aAAK,uCAAuC,uBAAuB;AACnE,aAAK,SAAS,aAAa,uBAAuB;AAAA,MACtD;AAAA,IACJ;AAAA,IACA,0CAA0C,kBAAkB;AACxD,YAAM,cAAc,qCAAqC,gBAAgB;AACzE,uBAAiB,YAAY,WAAW;AAAA,IAC5C;AAAA,IACA,wCAAwC,kBAAkB;AACtD,YAAMI,SAAQ,iBAAiB,UAAU,IAAI;AAC7C,uBAAiB,YAAYA,MAAK;AAAA,IACtC;AAAA,IACA,uCAAuC,kBAAkB;AACrD,YAAM,cAAc,KAAK,mBAAmB,iBAAiB,EAAE;AAC/D,sBAAgB,QAAQ,gBAAgB,SAAS,SAAS,YAAY,YAAY,gBAAgB;AAAA,IACtG;AAAA,IACA,mBAAmBJ,KAAI;AACnB,aAAO,KAAK,aAAa,KAAK,CAAC,YAAY,QAAQ,WAAWA,GAAE;AAAA,IACpE;AAAA,IACA,IAAI,eAAe;AACf,aAAO,CAAC,GAAG,SAAS,iBAAiB,iDAAiD,CAAC;AAAA,IAC3F;AAAA,EACJ;AACA,WAAS,qCAAqC,kBAAkB;AAC5D,UAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,YAAQ,aAAa,QAAQ,6BAA6B;AAC1D,YAAQ,aAAa,WAAW,iBAAiB,EAAE;AACnD,WAAO;AAAA,EACX;AAEA,MAAM,WAAN,MAAe;AAAA,IACX,YAAY,iBAAiB,aAAa,eAAe,WAAW,aAAa,MAAM;AACnF,WAAK,gBAAgB;AACrB,WAAK,kBAAkB;AACvB,WAAK,cAAc;AACnB,WAAK,YAAY;AACjB,WAAK,aAAa;AAClB,WAAK,gBAAgB;AACrB,WAAK,UAAU,IAAI,QAAQ,CAACX,UAAS,WAAY,KAAK,qBAAqB,EAAE,SAAAA,UAAS,OAAO,CAAE;AAAA,IACnG;AAAA,IACA,IAAI,eAAe;AACf,aAAO;AAAA,IACX;AAAA,IACA,IAAI,eAAe;AACf;AAAA,IACJ;AAAA,IACA,kBAAkB;AACd;AAAA,IACJ;AAAA,IACA,kBAAkB;AACd,UAAI,KAAK,oBAAoB;AACzB,aAAK,mBAAmB,QAAQ;AAChC,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,MAAM,4BAA4Bc,WAAU;AACxC,YAAM,MAAM,4BAA4B,MAAM,KAAK,qBAAqBA,SAAQ;AAAA,IACpF;AAAA,IACA,iCAAiC;AAC7B,YAAM,UAAU,KAAK,kBAAkB;AACvC,UAAI,mBAAmB,OAAO,GAAG;AAC7B,gBAAQ,MAAM;AAAA,MAClB;AAAA,IACJ;AAAA,IACA,cAAc,yBAAyB;AACnC,UAAI,KAAK;AACL;AACJ,UAAI,wBAAwB,SAAS,KAAK,gBAAgB,aAAa,GAAG;AACtE,aAAK,gBAAgB,KAAK,gBAAgB;AAAA,MAC9C;AAAA,IACJ;AAAA,IACA,aAAa,yBAAyB;AAClC,UAAI,wBAAwB,SAAS,KAAK,aAAa,KAAK,KAAK,yBAAyB,aAAa;AACnG,aAAK,cAAc,MAAM;AACzB,aAAK,gBAAgB;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,IAAI,oBAAoB;AACpB,aAAO,KAAK,YAAY,cAAc,KAAK,cAAc,KAAK;AAAA,IAClE;AAAA,IACA,IAAI,iBAAiB;AACjB,aAAO,KAAK,gBAAgB;AAAA,IAChC;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IACA,IAAI,sBAAsB;AACtB,aAAO,KAAK,gBAAgB,kCAAkC,KAAK,WAAW;AAAA,IAClF;AAAA,EACJ;AACA,WAAS,mBAAmB,SAAS;AACjC,WAAO,WAAW,OAAO,QAAQ,SAAS;AAAA,EAC9C;AAEA,MAAM,gBAAN,cAA4B,SAAS;AAAA,IACjC,OAAO,cAAc,gBAAgB,YAAY;AAC7C,UAAI;AACJ,YAAM,mBAAmB,SAAS,YAAY;AAC9C,uBAAiB,mBAAmB,cAAc;AAClD,uBAAiB,eAAe;AAChC,YAAM,eAAe;AACrB,YAAM,eAAe,KAAK,aAAa,mBAAmB,QAAQ,OAAO,SAAS,SAAS,GAAG,YAAY;AAC1G,UAAI,aAAa;AACb,oBAAY,mBAAmB,YAAY;AAC3C,uBAAe,YAAY,YAAY,gBAAgB,CAAC;AAAA,MAC5D;AAAA,IACJ;AAAA,IACA,YAAY,UAAU,iBAAiB,aAAa,eAAe,WAAW,aAAa,MAAM;AAC7F,YAAM,iBAAiB,aAAa,eAAe,WAAW,UAAU;AACxE,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,IAAI,eAAe;AACf,aAAO;AAAA,IACX;AAAA,IACA,MAAM,SAAS;AACX,YAAM,mBAAmB;AACzB,WAAK,4BAA4B,MAAM;AACnC,aAAK,iBAAiB;AAAA,MAC1B,CAAC;AACD,WAAK,oBAAoB;AACzB,YAAM,mBAAmB;AACzB,WAAK,+BAA+B;AACpC,YAAM,mBAAmB;AACzB,WAAK,uBAAuB;AAAA,IAChC;AAAA,IACA,mBAAmB;AACf,WAAK,SAAS,gBAAgB,KAAK,gBAAgB,KAAK,UAAU;AAClE,WAAK,cAAc,KAAK,gBAAgB,KAAK,UAAU;AAAA,IAC3D;AAAA,IACA,sBAAsB;AAClB,UAAI,KAAK,eAAe,cAAc,KAAK,WAAW,YAAY;AAC9D,cAAM,UAAU,KAAK,eAAe;AACpC,cAAM,QAAQ,0BAA0B,KAAK,eAAe,aAAa,uBAAuB,GAAG,KAAK;AACxG,cAAM,WAAW,mBAAmB,KAAK,eAAe,aAAa,0BAA0B,GAAG,MAAM;AACxG,YAAI,SAAS;AACT,kBAAQ,eAAe,EAAE,OAAO,SAAS,CAAC;AAC1C,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,IACA,yBAAyB;AACrB,iBAAW,sBAAsB,KAAK,mBAAmB;AACrD,cAAM,yBAAyB,sBAAsB,kBAAkB;AACvE,2BAAmB,YAAY,sBAAsB;AAAA,MACzD;AAAA,IACJ;AAAA,IACA,IAAI,oBAAoB;AACpB,aAAO,KAAK,eAAe,iBAAiB,QAAQ;AAAA,IACxD;AAAA,EACJ;AACA,WAAS,0BAA0B,OAAO,cAAc;AACpD,QAAI,SAAS,SAAS,SAAS,WAAW,SAAS,YAAY,SAAS,WAAW;AAC/E,aAAO;AAAA,IACX,OACK;AACD,aAAO;AAAA,IACX;AAAA,EACJ;AACA,WAAS,mBAAmB,OAAO,cAAc;AAC7C,QAAI,SAAS,UAAU,SAAS,UAAU;AACtC,aAAO;AAAA,IACX,OACK;AACD,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAM,cAAN,MAAM,aAAY;AAAA,IACd,WAAW,aAAa;AACpB,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAUG,aAAY,iBAAiB;AAAA,oBAC3B,aAAY,oBAAoB,CAAC,MAAM,aAAY,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA,IAIxF;AAAA,IACA,cAAc;AACV,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,UAAU;AACf,WAAK,UAAU,MAAM;AACjB,aAAK,SAAS,KAAK,QAAQ,KAAK,OAAO,IAAI,GAAG;AAAA,MAClD;AACA,WAAK,oBAAoB,KAAK,wBAAwB;AACtD,WAAK,kBAAkB,KAAK,sBAAsB;AAClD,WAAK,yBAAyB;AAC9B,WAAK,SAAS,CAAC;AAAA,IACnB;AAAA,IACA,OAAO;AACH,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,UAAU;AACf,aAAK,uBAAuB;AAC5B,aAAK,eAAe;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,WAAW,CAAC,KAAK,QAAQ;AAC9B,aAAK,SAAS;AACd,aAAK,oBAAoB,MAAM;AAC3B,eAAK,yBAAyB;AAC9B,eAAK,cAAc;AACnB,eAAK,UAAU;AACf,eAAK,SAAS;AAAA,QAClB,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,IACA,SAAS,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,QAAQ;AAAA,IACjB;AAAA,IACA,2BAA2B;AACvB,eAAS,KAAK,aAAa,KAAK,mBAAmB,SAAS,KAAK,UAAU;AAAA,IAC/E;AAAA,IACA,yBAAyB;AACrB,WAAK,gBAAgB,MAAM,QAAQ;AACnC,WAAK,gBAAgB,MAAM,UAAU;AACrC,eAAS,gBAAgB,aAAa,KAAK,iBAAiB,SAAS,IAAI;AACzE,WAAK,QAAQ;AAAA,IACjB;AAAA,IACA,oBAAoBA,WAAU;AAC1B,WAAK,gBAAgB,MAAM,UAAU;AACrC,iBAAWA,WAAU,aAAY,oBAAoB,GAAG;AAAA,IAC5D;AAAA,IACA,2BAA2B;AACvB,UAAI,KAAK,gBAAgB,YAAY;AACjC,iBAAS,gBAAgB,YAAY,KAAK,eAAe;AAAA,MAC7D;AAAA,IACJ;AAAA,IACA,iBAAiB;AACb,UAAI,CAAC,KAAK,iBAAiB;AACvB,aAAK,kBAAkB,OAAO,YAAY,KAAK,SAAS,aAAY,iBAAiB;AAAA,MACzF;AAAA,IACJ;AAAA,IACA,gBAAgB;AACZ,aAAO,cAAc,KAAK,eAAe;AACzC,aAAO,KAAK;AAAA,IAChB;AAAA,IACA,UAAU;AACN,4BAAsB,MAAM;AACxB,aAAK,gBAAgB,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,EAAE;AAAA,MAC9D,CAAC;AAAA,IACL;AAAA,IACA,0BAA0B;AACtB,YAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,cAAQ,OAAO;AACf,cAAQ,cAAc,aAAY;AAClC,UAAI,KAAK,UAAU;AACf,gBAAQ,QAAQ,KAAK;AAAA,MACzB;AACA,aAAO;AAAA,IACX;AAAA,IACA,wBAAwB;AACpB,YAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAQ,YAAY;AACpB,aAAO;AAAA,IACX;AAAA,IACA,IAAI,WAAW;AACX,aAAO,eAAe,WAAW;AAAA,IACrC;AAAA,EACJ;AACA,cAAY,oBAAoB;AAEhC,MAAM,eAAN,cAA2B,SAAS;AAAA,IAChC,cAAc;AACV,YAAM,GAAG,SAAS;AAClB,WAAK,qBAAqB,KAAK,SAC1B,OAAO,CAAC,YAAY,CAAC,kBAAkB,OAAO,CAAC,EAC/C,IAAI,CAAC,YAAY,oBAAoB,OAAO,CAAC,EAC7C,OAAO,CAAC,QAAQ,YAAY;AAC7B,cAAM,EAAE,UAAU,IAAI;AACtB,cAAM,UAAU,aAAa,SACvB,OAAO,SAAS,IAChB;AAAA,UACE,MAAM,YAAY,OAAO;AAAA,UACzB,SAAS,iBAAiB,OAAO;AAAA,UACjC,UAAU,CAAC;AAAA,QACf;AACJ,eAAO,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,GAAG,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,OAAO,GAAG,EAAE,UAAU,CAAC,GAAG,QAAQ,UAAU,OAAO,EAAE,CAAC,EAAE,CAAC;AAAA,MAC5J,GAAG,CAAC,CAAC;AAAA,IACT;AAAA,IACA,IAAI,0BAA0B;AAC1B,aAAO,OAAO,KAAK,KAAK,kBAAkB,EACrC,OAAO,CAAC,cAAc,KAAK,mBAAmB,SAAS,EAAE,OAAO,EAChE,KAAK,EAAE;AAAA,IAChB;AAAA,IACA,+BAA+B,UAAU;AACrC,aAAO,KAAK,qCAAqC,UAAU,QAAQ;AAAA,IACvE;AAAA,IACA,mCAAmC,UAAU;AACzC,aAAO,KAAK,qCAAqC,cAAc,QAAQ;AAAA,IAC3E;AAAA,IACA,qCAAqC,aAAa,UAAU;AACxD,aAAO,OAAO,KAAK,KAAK,kBAAkB,EACrC,OAAO,CAAC,cAAc,EAAE,aAAa,SAAS,mBAAmB,EACjE,IAAI,CAAC,cAAc,KAAK,mBAAmB,SAAS,CAAC,EACrD,OAAO,CAAC,EAAE,KAAK,MAAM,QAAQ,WAAW,EACxC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,OAAO;AAAA,IACjD;AAAA,IACA,IAAI,sBAAsB;AACtB,aAAO,OAAO,KAAK,KAAK,kBAAkB,EAAE,OAAO,CAAC,QAAQ,cAAc;AACtE,cAAM,EAAE,MAAM,SAAS,UAAAT,UAAS,IAAI,KAAK,mBAAmB,SAAS;AACrE,YAAI,QAAQ,QAAQ,CAAC,SAAS;AAC1B,iBAAO,CAAC,GAAG,QAAQ,GAAGA,SAAQ;AAAA,QAClC,WACSA,UAAS,SAAS,GAAG;AAC1B,iBAAO,CAAC,GAAG,QAAQ,GAAGA,UAAS,MAAM,CAAC,CAAC;AAAA,QAC3C,OACK;AACD,iBAAO;AAAA,QACX;AAAA,MACJ,GAAG,CAAC,CAAC;AAAA,IACT;AAAA,IACA,aAAa,MAAM;AACf,YAAM,UAAU,KAAK,sBAAsB,IAAI;AAC/C,aAAO,UAAU,QAAQ,aAAa,SAAS,IAAI;AAAA,IACvD;AAAA,IACA,sBAAsB,MAAM;AACxB,aAAO,OAAO,KAAK,KAAK,kBAAkB,EAAE,OAAO,CAAC,QAAQ,cAAc;AACtE,cAAM,EAAE,UAAU,CAAC,OAAO,EAAG,IAAI,KAAK,mBAAmB,SAAS;AAClE,eAAO,6BAA6B,SAAS,IAAI,IAAI,UAAU;AAAA,MACnE,GAAG,MAAS;AAAA,IAChB;AAAA,EACJ;AACA,WAAS,YAAY,SAAS;AAC1B,QAAI,gBAAgB,OAAO,GAAG;AAC1B,aAAO;AAAA,IACX,WACS,oBAAoB,OAAO,GAAG;AACnC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,WAAS,iBAAiB,SAAS;AAC/B,WAAO,QAAQ,aAAa,kBAAkB,KAAK;AAAA,EACvD;AACA,WAAS,gBAAgB,SAAS;AAC9B,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW;AAAA,EACtB;AACA,WAAS,kBAAkB,SAAS;AAChC,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW;AAAA,EACtB;AACA,WAAS,oBAAoB,SAAS;AAClC,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW,WAAY,WAAW,UAAU,QAAQ,aAAa,KAAK,KAAK;AAAA,EACtF;AACA,WAAS,6BAA6B,SAAS,MAAM;AACjD,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW,UAAU,QAAQ,aAAa,MAAM,KAAK;AAAA,EAChE;AACA,WAAS,oBAAoB,SAAS;AAClC,QAAI,QAAQ,aAAa,OAAO,GAAG;AAC/B,cAAQ,aAAa,SAAS,EAAE;AAAA,IACpC;AACA,WAAO;AAAA,EACX;AAEA,MAAM,eAAN,MAAM,sBAAqB,SAAS;AAAA,IAChC,OAAO,eAAe,OAAO,IAAI;AAC7B,aAAO,KAAK,aAAa,kBAAkB,IAAI,CAAC;AAAA,IACpD;AAAA,IACA,OAAO,YAAY,SAAS;AACxB,aAAO,KAAK,aAAa,QAAQ,aAAa;AAAA,IAClD;AAAA,IACA,OAAO,aAAa,EAAE,MAAM,KAAK,GAAG;AAChC,aAAO,IAAI,KAAK,MAAM,IAAI,aAAa,IAAI,CAAC;AAAA,IAChD;AAAA,IACA,YAAY,SAAS,cAAc;AAC/B,YAAM,OAAO;AACb,WAAK,eAAe;AAAA,IACxB;AAAA,IACA,QAAQ;AACJ,YAAM,gBAAgB,KAAK,QAAQ,UAAU,IAAI;AACjD,YAAM,iBAAiB,KAAK,QAAQ,iBAAiB,QAAQ;AAC7D,YAAM,uBAAuB,cAAc,iBAAiB,QAAQ;AACpE,iBAAW,CAACW,QAAO,MAAM,KAAK,eAAe,QAAQ,GAAG;AACpD,cAAMD,SAAQ,qBAAqBC,MAAK;AACxC,mBAAWC,WAAUF,OAAM;AACvB,UAAAE,QAAO,WAAW;AACtB,mBAAWA,WAAU,OAAO;AACxB,UAAAF,OAAM,QAAQE,QAAO,KAAK,EAAE,WAAW;AAAA,MAC/C;AACA,iBAAW,uBAAuB,cAAc,iBAAiB,wBAAwB,GAAG;AACxF,4BAAoB,QAAQ;AAAA,MAChC;AACA,aAAO,IAAI,cAAa,eAAe,KAAK,YAAY;AAAA,IAC5D;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,aAAa;AAAA,IAC7B;AAAA,IACA,IAAI,eAAe;AACf,UAAI;AACJ,YAAM,QAAQ,KAAK,KAAK,WAAW,MAAM,OAAO,QAAQ,OAAO,SAAS,KAAK;AAC7E,aAAO,UAAU,IAAI;AAAA,IACzB;AAAA,IACA,IAAI,oBAAoB;AACpB,aAAO,KAAK,WAAW,eAAe;AAAA,IAC1C;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,KAAK,qBAAqB;AAAA,IACrC;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,qBAAqB;AAAA,IACrC;AAAA,IACA,IAAI,cAAc;AACd,aAAO,KAAK,WAAW,eAAe,KAAK;AAAA,IAC/C;AAAA,IACA,WAAW,MAAM;AACb,aAAO,KAAK,aAAa,aAAa,SAAS,IAAI,EAAE;AAAA,IACzD;AAAA,EACJ;AAEA,MAAI;AACJ,GAAC,SAAUC,eAAc;AACrB,IAAAA,cAAa,YAAY,IAAI;AAC7B,IAAAA,cAAa,cAAc,IAAI;AAC/B,IAAAA,cAAa,YAAY,IAAI;AAC7B,IAAAA,cAAa,UAAU,IAAI;AAAA,EAC/B,GAAG,iBAAiB,eAAe,CAAC,EAAE;AACtC,MAAI;AACJ,GAAC,SAAUC,aAAY;AACnB,IAAAA,YAAW,aAAa,IAAI;AAC5B,IAAAA,YAAW,SAAS,IAAI;AACxB,IAAAA,YAAW,UAAU,IAAI;AACzB,IAAAA,YAAW,QAAQ,IAAI;AACvB,IAAAA,YAAW,WAAW,IAAI;AAAA,EAC9B,GAAG,eAAe,aAAa,CAAC,EAAE;AAClC,MAAMC,kBAAiB;AAAA,IACnB,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,qBAAqB,MAAM;AAAA,IAAE;AAAA,IAC7B,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,qBAAqB;AAAA,IACrB,uBAAuB;AAAA,EAC3B;AACA,MAAI;AACJ,GAAC,SAAUC,mBAAkB;AACzB,IAAAA,kBAAiBA,kBAAiB,gBAAgB,IAAI,CAAC,IAAI;AAC3D,IAAAA,kBAAiBA,kBAAiB,gBAAgB,IAAI,EAAE,IAAI;AAC5D,IAAAA,kBAAiBA,kBAAiB,qBAAqB,IAAI,EAAE,IAAI;AAAA,EACrE,GAAG,qBAAqB,mBAAmB,CAAC,EAAE;AAC9C,MAAM,QAAN,MAAY;AAAA,IACR,YAAY,UAAUtB,WAAU,uBAAuB,UAAU,CAAC,GAAG;AACjE,WAAK,aAAa,KAAK;AACvB,WAAK,gBAAgB,CAAC;AACtB,WAAK,mBAAmB;AACxB,WAAK,iBAAiB;AACtB,WAAK,WAAW;AAChB,WAAK,sBAAsB;AAC3B,WAAK,wBAAwB;AAC7B,WAAK,iBAAiB;AACtB,WAAK,QAAQ,WAAW;AACxB,WAAK,WAAW;AAChB,WAAK,WAAWA;AAChB,WAAK,wBAAwB,yBAAyB,KAAK;AAC3D,YAAM,EAAE,QAAQ,gBAAgB,UAAU,UAAU,cAAc,UAAU,qBAAqB,YAAY,eAAe,qBAAqB,sBAAuB,IAAI,OAAO,OAAO,OAAO,OAAO,CAAC,GAAGqB,eAAc,GAAG,OAAO;AACpO,WAAK,SAAS;AACd,WAAK,iBAAiB;AACtB,WAAK,WAAW;AAChB,WAAK,WAAW;AAChB,WAAK,eAAe;AACpB,WAAK,WAAW;AAChB,WAAK,aAAa,KAAK,SAAS,6BAA6B,KAAK,UAAU,KAAK,MAAM;AACvF,WAAK,sBAAsB;AAC3B,WAAK,aAAa;AAClB,WAAK,gBAAgB;AACrB,WAAK,WAAW,CAAC;AACjB,WAAK,sBAAsB;AAC3B,WAAK,wBAAwB;AAAA,IACjC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,IAAI,OAAO;AACP,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,IAAI,kBAAkB;AAClB,aAAO,KAAK,QAAQ,gCAAgC,KAAK,qBAAqB;AAAA,IAClF;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK;AAAA,IAChB;AAAA,IACA,QAAQ;AACJ,UAAI,KAAK,SAAS,WAAW,aAAa;AACtC,aAAK,mBAAmB,aAAa,UAAU;AAC/C,aAAK,QAAQ,WAAW;AACxB,aAAK,QAAQ,aAAa,IAAI;AAC9B,aAAK,SAAS,aAAa,IAAI;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,SAAS;AACL,UAAI,KAAK,SAAS,WAAW,SAAS;AAClC,YAAI,KAAK,SAAS;AACd,eAAK,QAAQ,OAAO;AAAA,QACxB;AACA,aAAK,aAAa;AAClB,aAAK,QAAQ,WAAW;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,WAAW;AACP,UAAI,KAAK,SAAS,WAAW,SAAS;AAClC,aAAK,mBAAmB,aAAa,QAAQ;AAC7C,aAAK,QAAQ,WAAW;AACxB,aAAK,eAAe;AACpB,YAAI,CAAC,KAAK,kBAAkB;AACxB,eAAK,QAAQ,eAAe,IAAI;AAChC,eAAK,SAAS,eAAe,IAAI;AAAA,QACrC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS,WAAW,SAAS;AAClC,aAAK,QAAQ,WAAW;AACxB,aAAK,QAAQ,YAAY,IAAI;AAAA,MACjC;AAAA,IACJ;AAAA,IACA,gBAAgB;AACZ,UAAI;AACJ,UAAI,CAAC,KAAK,kBAAkB,KAAK,eAAe;AAC5C,cAAM,mBAAmB,KAAK,SAAS,WAAW,KAAK,KAAK,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,QAAQ,YAAY,KAAK;AACvI,cAAM,SAAS,0BAA0B,gBAAgB;AACzD,aAAK,QAAQ,OAAO,QAAQ,KAAK,UAAU,KAAK,qBAAqB;AACrE,aAAK,iBAAiB;AAAA,MAC1B;AAAA,IACJ;AAAA,IACA,eAAe;AACX,UAAI,KAAK,qBAAqB,GAAG;AAC7B,aAAK,gBAAgB;AAAA,MACzB,WACS,KAAK,mBAAmB,KAAK,CAAC,KAAK,SAAS;AACjD,aAAK,UAAU,IAAI,aAAa,MAAM,YAAY,KAAK,KAAK,QAAQ;AACpE,aAAK,QAAQ,QAAQ;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,kBAAkB;AACd,UAAI,KAAK,UAAU;AACf,aAAK,aAAa;AAClB,aAAK,eAAe;AACpB,aAAK,cAAc;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,eAAe;AACX,WAAK,mBAAmB,aAAa,YAAY;AACjD,WAAK,QAAQ,oBAAoB,IAAI;AAAA,IACzC;AAAA,IACA,eAAe,WAAW,KAAK,UAAU;AACrC,WAAK,WAAW;AAChB,UAAI,UAAU;AACV,cAAM,EAAE,WAAW,IAAI;AACvB,YAAI,aAAa,UAAU,GAAG;AAC1B,eAAK,QAAQ,sBAAsB,IAAI;AAAA,QAC3C,OACK;AACD,eAAK,QAAQ,iCAAiC,MAAM,UAAU;AAAA,QAClE;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,gBAAgB;AACZ,WAAK,mBAAmB,aAAa,UAAU;AAC/C,WAAK,QAAQ,qBAAqB,IAAI;AAAA,IAC1C;AAAA,IACA,eAAe;AACX,UAAI,KAAK,UAAU;AACf,cAAM,EAAE,YAAY,aAAa,IAAI,KAAK;AAC1C,aAAK,OAAO,YAAY;AACpB,cAAI,KAAK;AACL,iBAAK,cAAc;AACvB,cAAI,KAAK,KAAK;AACV,kBAAM,KAAK,KAAK;AACpB,cAAI,aAAa,UAAU,KAAK,gBAAgB,MAAM;AAClD,kBAAM,KAAK,KAAK,WAAW,aAAa,eAAe,YAAY,GAAG,OAAO,KAAK,YAAY,IAAI;AAClG,iBAAK,cAAc;AACnB,iBAAK,QAAQ,cAAc,IAAI;AAC/B,iBAAK,SAAS;AAAA,UAClB,OACK;AACD,kBAAM,KAAK,KAAK,YAAY,aAAa,eAAe,YAAY,GAAG,IAAI;AAC3E,iBAAK,QAAQ,cAAc,IAAI;AAC/B,iBAAK,KAAK;AAAA,UACd;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,IACA,oBAAoB;AAChB,YAAM,WAAW,KAAK,KAAK,6BAA6B,KAAK,QAAQ,KAAK,KAAK,qBAAqB;AACpG,UAAI,aAAa,CAAC,UAAU,KAAK,QAAQ,KAAK,SAAS,UAAU,UAAU,KAAK,QAAQ,CAAC,IAAI;AACzF,YAAI,KAAK,UAAU,aAAa,SAAS,eAAe;AACpD,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,uBAAuB;AACnB,UAAI,KAAK,cAAc;AACnB,eAAO,aAAa,eAAe,KAAK,YAAY;AAAA,MACxD;AAAA,IACJ;AAAA,IACA,oBAAoB;AAChB,aAAO,KAAK,kBAAkB,KAAK;AAAA,IACvC;AAAA,IACA,qBAAqB;AACjB,YAAM,WAAW,KAAK,kBAAkB;AACxC,UAAI,UAAU;AACV,cAAM,YAAY,KAAK,mBAAmB;AAC1C,aAAK,OAAO,YAAY;AACpB,eAAK,cAAc;AACnB,cAAI,KAAK,YAAY;AACjB,iBAAK,QAAQ,cAAc,IAAI;AAAA,UACnC,OACK;AACD,gBAAI,KAAK,KAAK;AACV,oBAAM,KAAK,KAAK;AACpB,kBAAM,KAAK,KAAK,WAAW,UAAU,WAAW,KAAK,YAAY,IAAI;AACrE,iBAAK,cAAc;AACnB,iBAAK,QAAQ,cAAc,IAAI;AAC/B,gBAAI,CAAC,WAAW;AACZ,mBAAK,SAAS;AAAA,YAClB;AAAA,UACJ;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,IACA,iBAAiB;AACb,UAAI;AACJ,UAAI,KAAK,wBAAwB,CAAC,KAAK,sBAAsB,KAAK,KAAK,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa;AAClI,aAAK,QAAQ,wBAAwB,KAAK,sBAAsB;AAAA,UAC5D,QAAQ;AAAA,UACR,UAAU,KAAK;AAAA,UACf,qBAAqB;AAAA,UACrB,YAAY;AAAA,QAChB,CAAC;AACD,aAAK,mBAAmB;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,qBAAqB;AACjB,UAAI,KAAK,YAAY;AACjB,aAAK,OAAO,YAAY;AACpB,eAAK,cAAc;AACnB,eAAK,cAAc;AACnB,eAAK,cAAc;AACnB,eAAK,QAAQ,cAAc,IAAI;AAAA,QACnC,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,IACA,eAAe,SAAS;AACpB,UAAI,KAAK,uBAAuB;AAC5B,gBAAQ,mBAAmB,cAAc,WAAW;AAAA,MACxD;AAAA,IACJ;AAAA,IACA,iBAAiB;AACb,WAAK,aAAa;AAAA,IACtB;AAAA,IACA,iCAAiC,UAAU,WAAW;AAAA,IAAE;AAAA,IACxD,MAAM,6BAA6B,SAAS,UAAU;AAClD,YAAM,eAAe,MAAM,SAAS;AACpC,YAAM,EAAE,YAAY,WAAW,IAAI;AACnC,UAAI,gBAAgB,QAAW;AAC3B,aAAK,eAAe;AAAA,UAChB,YAAY,iBAAiB;AAAA,UAC7B;AAAA,QACJ,CAAC;AAAA,MACL,OACK;AACD,aAAK,uBAAuB,SAAS,aAAa,SAAS,WAAW;AACtE,aAAK,eAAe,EAAE,YAAwB,cAAc,WAAW,CAAC;AAAA,MAC5E;AAAA,IACJ;AAAA,IACA,MAAM,0BAA0B,SAAS,UAAU;AAC/C,YAAM,eAAe,MAAM,SAAS;AACpC,YAAM,EAAE,YAAY,WAAW,IAAI;AACnC,UAAI,gBAAgB,QAAW;AAC3B,aAAK,eAAe;AAAA,UAChB,YAAY,iBAAiB;AAAA,UAC7B;AAAA,QACJ,CAAC;AAAA,MACL,OACK;AACD,aAAK,eAAe,EAAE,YAAwB,cAAc,WAAW,CAAC;AAAA,MAC5E;AAAA,IACJ;AAAA,IACA,eAAe,UAAU,QAAQ;AAC7B,WAAK,eAAe;AAAA,QAChB,YAAY,iBAAiB;AAAA,QAC7B,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,kBAAkB;AACd,WAAK,cAAc;AAAA,IACvB;AAAA,IACA,gBAAgB;AACZ,UAAI,CAAC,KAAK,YAAY,CAAC,KAAK,KAAK,eAAe;AAC5C,YAAI,KAAK,UAAU,WAAW;AAC1B,eAAK,yBAAyB,KAAK,KAAK,eAAe,KAAK,KAAK,KAAK,YAAY;AAAA,QACtF,OACK;AACD,eAAK,eAAe,KAAK,KAAK,KAAK,YAAY;AAAA,QACnD;AACA,YAAI,KAAK,YAAY;AACjB,eAAK,SAAS,gCAAgC,KAAK,KAAK,sBAAsB,KAAK,QAAQ;AAAA,QAC/F;AACA,aAAK,WAAW;AAAA,MACpB;AAAA,IACJ;AAAA,IACA,2BAA2B;AACvB,YAAM,EAAE,eAAe,IAAI,KAAK;AAChC,UAAI,gBAAgB;AAChB,aAAK,KAAK,iBAAiB,cAAc;AACzC,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,iBAAiB;AACb,YAAM,SAAS,UAAU,KAAK,QAAQ;AACtC,UAAI,UAAU,MAAM;AAChB,aAAK,KAAK,eAAe,MAAM;AAC/B,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,mBAAmB,QAAQ;AACvB,WAAK,cAAc,MAAM,KAAI,oBAAI,KAAK,GAAE,QAAQ;AAAA,IACpD;AAAA,IACA,mBAAmB;AACf,aAAO,OAAO,OAAO,CAAC,GAAG,KAAK,aAAa;AAAA,IAC/C;AAAA,IACA,0BAA0B,QAAQ;AAC9B,cAAQ,QAAQ;AAAA,QACZ,KAAK;AACD,iBAAO,QAAQ;AAAA,QACnB,KAAK;AAAA,QACL,KAAK;AACD,iBAAO,QAAQ;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,uBAAuB;AACnB,aAAO,OAAO,KAAK,YAAY;AAAA,IACnC;AAAA,IACA,qBAAqB;AACjB,UAAI,KAAK,YAAY;AACjB,eAAO;AAAA,MACX,WACS,KAAK,UAAU,WAAW;AAC/B,eAAO,CAAC,KAAK,kBAAkB;AAAA,MACnC,OACK;AACD,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,gBAAgB;AACZ,UAAI,CAAC,KAAK,gBAAgB;AACtB,aAAK,KAAK,cAAc,KAAK,QAAQ,EAAE,KAAK,CAAC,aAAa,YAAY,KAAK,oBAAoB,QAAQ,CAAC;AACxG,aAAK,iBAAiB;AAAA,MAC1B;AAAA,IACJ;AAAA,IACA,MAAM,OAAON,WAAU;AACnB,WAAK,aAAa;AAClB,YAAM,IAAI,QAAQ,CAACd,aAAY;AAC3B,aAAK,QAAQ,sBAAsB,MAAMA,SAAQ,CAAC;AAAA,MACtD,CAAC;AACD,YAAMc,UAAS;AACf,aAAO,KAAK;AAAA,IAChB;AAAA,IACA,eAAe;AACX,UAAI,KAAK,OAAO;AACZ,6BAAqB,KAAK,KAAK;AAC/B,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,aAAa,YAAY;AAC9B,WAAO,cAAc,OAAO,aAAa;AAAA,EAC7C;AAEA,MAAM,iBAAN,MAAqB;AAAA,IACjB,YAAYQ,UAAS;AACjB,WAAK,cAAc,IAAI,YAAY;AACnC,WAAK,kBAAkB,MAAM;AACzB,aAAK,YAAY,KAAK;AAAA,MAC1B;AACA,WAAK,UAAUA;AAAA,IACnB;AAAA,IACA,wBAAwBvB,WAAU,SAAS;AACvC,WAAK,UAAU,WAAWA,YAAW,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,0BAA0B,KAAK,GAAG,OAAO;AAAA,IAC5I;AAAA,IACA,aAAawB,QAAO;AAChB,WAAK,WAAWA,OAAM;AACtB,MAAAA,OAAM,mBAAmB;AACzB,MAAAA,OAAM,aAAa;AACnB,MAAAA,OAAM,mBAAmB;AAAA,IAC7B;AAAA,IACA,oBAAoBA,QAAO;AACvB,WAAK,YAAY,SAAS,CAAC;AAC3B,UAAIA,OAAM,kBAAkB,KAAKA,OAAM,UAAU,WAAW;AACxD,aAAK,+BAA+B;AAAA,MACxC,OACK;AACD,aAAK,gBAAgB;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,sBAAsBA,QAAO;AACzB,MAAAA,OAAM,aAAa;AAAA,IACvB;AAAA,IACA,iCAAiCA,QAAO,YAAY;AAChD,cAAQ,YAAY;AAAA,QAChB,KAAK,iBAAiB;AAAA,QACtB,KAAK,iBAAiB;AAAA,QACtB,KAAK,iBAAiB;AAClB,iBAAO,KAAK,OAAO;AAAA,YACf,QAAQ;AAAA,YACR,SAAS;AAAA,cACL;AAAA,YACJ;AAAA,UACJ,CAAC;AAAA,QACL;AACI,iBAAOA,OAAM,aAAa;AAAA,MAClC;AAAA,IACJ;AAAA,IACA,qBAAqB,QAAQ;AACzB,WAAK,YAAY,SAAS,CAAC;AAC3B,WAAK,qBAAqB;AAAA,IAC9B;AAAA,IACA,eAAe,QAAQ;AAAA,IAAE;AAAA,IACzB,gBAAgB,QAAQ;AACpB,WAAK,OAAO,MAAM;AAAA,IACtB;AAAA,IACA,YAAY,QAAQ;AAAA,IAAE;AAAA,IACtB,cAAc,QAAQ;AAAA,IAAE;AAAA,IACxB,sBAAsB,iBAAiB;AACnC,WAAK,YAAY,SAAS,CAAC;AAC3B,WAAK,8BAA8B;AAAA,IACvC;AAAA,IACA,uBAAuB,iBAAiB;AACpC,WAAK,YAAY,SAAS,CAAC;AAC3B,WAAK,oBAAoB;AAAA,IAC7B;AAAA,IACA,iCAAiC;AAC7B,WAAK,0BAA0B,OAAO,WAAW,KAAK,iBAAiB,KAAK,QAAQ,gBAAgB;AAAA,IACxG;AAAA,IACA,uBAAuB;AACnB,WAAK,YAAY,KAAK;AACtB,UAAI,KAAK,2BAA2B,MAAM;AACtC,eAAO,aAAa,KAAK,uBAAuB;AAChD,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,gCAAgC;AAC5B,UAAI,KAAK,0BAA0B,MAAM;AACrC,aAAK,yBAAyB,OAAO,WAAW,KAAK,iBAAiB,KAAK,QAAQ,gBAAgB;AAAA,MACvG;AAAA,IACJ;AAAA,IACA,sBAAsB;AAClB,WAAK,YAAY,KAAK;AACtB,UAAI,KAAK,0BAA0B,MAAM;AACrC,eAAO,aAAa,KAAK,sBAAsB;AAC/C,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,OAAO,QAAQ;AACX,UAAI;AACJ,eAAS,gBAAgB,EAAE,QAAQ,OAAO,CAAC;AAC3C,aAAO,SAAS,SAAS,KAAK,KAAK,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,SAAS,MAAM,OAAO,SAAS;AAAA,IACxH;AAAA,IACA,IAAI,YAAY;AACZ,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,EACJ;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAChB,cAAc;AACV,WAAK,WAAW;AAChB,WAAK,qBAAqB;AAC1B,WAAK,UAAU;AACf,WAAK,0BAA2B,CAAC,WAAW;AACxC,mBAAW,WAAW,KAAK,mBAAmB;AAC1C,kBAAQ,OAAO;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,UAAU;AACf,yBAAiB,sBAAsB,KAAK,yBAAyB,KAAK;AAAA,MAC9E;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,UAAU;AACf,4BAAoB,sBAAsB,KAAK,yBAAyB,KAAK;AAAA,MACjF;AAAA,IACJ;AAAA,IACA,IAAI,oBAAoB;AACpB,aAAO,CAAC,GAAG,SAAS,iBAAiB,KAAK,QAAQ,GAAG,GAAG,KAAK,gCAAgC;AAAA,IACjG;AAAA,IACA,IAAI,mCAAmC;AACnC,YAAMlB,YAAW,SAAS,iBAAiB,KAAK,kBAAkB;AAClE,UAAIA,UAAS,QAAQ;AACjB,gBAAQ,KAAK,OAAO,KAAK,kBAAkB,wEAAwE,KAAK,QAAQ,WAAW;AAAA,MAC/I;AACA,aAAO,CAAC,GAAGA,SAAQ;AAAA,IACvB;AAAA,EACJ;AAEA,MAAM,kBAAN,MAAsB;AAAA,IAClB,YAAYiB,UAAS,SAAS;AAC1B,WAAK,UAAUA;AACf,WAAK,UAAU;AACf,WAAK,kBAAkB,IAAI,gBAAgB,MAAM,OAAO;AACxD,WAAK,qBAAqB,IAAI,mBAAmB,MAAM,OAAO;AAAA,IAClE;AAAA,IACA,QAAQ;AACJ,WAAK,gBAAgB,MAAM;AAC3B,WAAK,mBAAmB,MAAM;AAAA,IAClC;AAAA,IACA,OAAO;AACH,WAAK,gBAAgB,KAAK;AAC1B,WAAK,mBAAmB,KAAK;AAAA,IACjC;AAAA,IACA,yBAAyB,SAAS,WAAW,QAAQ;AACjD,aAAO,KAAK,eAAe,OAAO;AAAA,IACtC;AAAA,IACA,qBAAqB,SAAS,KAAKzB,QAAO;AACtC,YAAM,QAAQ,KAAK,iBAAiB,OAAO;AAC3C,UAAI,OAAO;AACP,cAAM,SAAS,qBAAqB,SAAS,KAAKA,MAAK;AAAA,MAC3D;AAAA,IACJ;AAAA,IACA,eAAe,SAAS,WAAW;AAC/B,aAAQ,QAAQ,QAAQ,aAAa,KAAK,QACtC,KAAK,aAAa,SAAS,SAAS,KACpC,KAAK,eAAe,SAAS,SAAS;AAAA,IAC9C;AAAA,IACA,cAAc,SAAS,WAAW;AAC9B,YAAM,QAAQ,KAAK,iBAAiB,SAAS,SAAS;AACtD,UAAI,OAAO;AACP,cAAM,SAAS,cAAc,SAAS,SAAS;AAAA,MACnD;AAAA,IACJ;AAAA,IACA,aAAa,MAAM,WAAW;AAC1B,UAAI;AACJ,YAAM,SAAS,UAAU,MAAM,SAAS;AACxC,YAAM,OAAO,KAAK,QAAQ,cAAc,cAAc,yBAAyB;AAC/E,YAAM,eAAe,WAAW,KAAK,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,aAAa,QAAQ,OAAO,SAAS,KAAK,GAAG;AACnI,aAAO,KAAK,eAAe,MAAM,SAAS,KAAK,oBAAoB,QAAQ,YAAY;AAAA,IAC3F;AAAA,IACA,eAAe,SAAS,WAAW;AAC/B,YAAM,gBAAgB,mBAAmB,kBACnC,KAAK,QAAQ,wBAAwB,SAAS,SAAS,IACvD,KAAK,QAAQ,qBAAqB,OAAO;AAC/C,UAAI,eAAe;AACf,cAAM,QAAQ,KAAK,iBAAiB,SAAS,SAAS;AACtD,eAAO,QAAQ,SAAS,QAAQ,QAAQ,aAAa,IAAI;AAAA,MAC7D,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,iBAAiB,SAAS,WAAW;AACjC,YAAMc,OAAM,cAAc,QAAQ,cAAc,SAAS,SAAS,UAAU,aAAa,kBAAkB,MAAM,QAAQ,aAAa,kBAAkB;AACxJ,UAAIA,OAAMA,OAAM,QAAQ;AACpB,cAAM,QAAQ,KAAK,QAAQ,cAAc,IAAIA,GAAE,kBAAkB;AACjE,YAAI,iBAAiB,cAAc;AAC/B,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,UAAN,MAAc;AAAA,IACV,YAAY,UAAU;AAClB,WAAK,wBAAwB,KAAK;AAClC,WAAK,kBAAkB,CAAC;AACxB,WAAK,UAAU;AACf,WAAK,aAAa;AAClB,WAAK,aAAa,CAACd,WAAU;AACzB,YAAI,KAAK,qBAAqB,GAAG;AAC7B,gBAAM,EAAE,MAAM,IAAIA,OAAM,SAAS,CAAC;AAClC,cAAI,OAAO;AACP,iBAAK,WAAW,IAAI,IAAI,OAAO,SAAS,IAAI;AAC5C,kBAAM,EAAE,sBAAsB,IAAI;AAClC,iBAAK,wBAAwB;AAC7B,iBAAK,SAAS,iDAAiD,KAAK,UAAU,qBAAqB;AAAA,UACvG;AAAA,QACJ;AAAA,MACJ;AACA,WAAK,aAAa,OAAO,WAAW;AAChC,cAAM,cAAc;AACpB,aAAK,aAAa;AAAA,MACtB;AACA,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,yBAAiB,YAAY,KAAK,YAAY,KAAK;AACnD,yBAAiB,QAAQ,KAAK,YAAY,KAAK;AAC/C,aAAK,UAAU;AACf,aAAK,QAAQ,IAAI,IAAI,OAAO,SAAS,IAAI,CAAC;AAAA,MAC9C;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,4BAAoB,YAAY,KAAK,YAAY,KAAK;AACtD,4BAAoB,QAAQ,KAAK,YAAY,KAAK;AAClD,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,KAAKE,WAAU,uBAAuB;AAClC,WAAK,OAAO,QAAQ,WAAWA,WAAU,qBAAqB;AAAA,IAClE;AAAA,IACA,QAAQA,WAAU,uBAAuB;AACrC,WAAK,OAAO,QAAQ,cAAcA,WAAU,qBAAqB;AAAA,IACrE;AAAA,IACA,OAAO,QAAQA,WAAU,wBAAwB,KAAK,GAAG;AACrD,YAAM,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE;AACjD,aAAO,KAAK,SAAS,OAAO,IAAIA,UAAS,IAAI;AAC7C,WAAK,WAAWA;AAChB,WAAK,wBAAwB;AAAA,IACjC;AAAA,IACA,gCAAgC,uBAAuB;AACnD,aAAO,KAAK,gBAAgB,qBAAqB,KAAK,CAAC;AAAA,IAC3D;AAAA,IACA,sBAAsB,gBAAgB;AAClC,YAAM,EAAE,sBAAsB,IAAI;AAClC,YAAM,kBAAkB,KAAK,gBAAgB,qBAAqB;AAClE,WAAK,gBAAgB,qBAAqB,IAAI,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,eAAe,GAAG,cAAc;AAAA,IAClH;AAAA,IACA,mCAAmC;AAC/B,UAAI;AACJ,UAAI,CAAC,KAAK,2BAA2B;AACjC,aAAK,6BAA6B,KAAK,QAAQ,uBAAuB,QAAQ,OAAO,SAAS,KAAK;AACnG,gBAAQ,oBAAoB;AAAA,MAChC;AAAA,IACJ;AAAA,IACA,uCAAuC;AACnC,UAAI,KAAK,2BAA2B;AAChC,gBAAQ,oBAAoB,KAAK;AACjC,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,uBAAuB;AACnB,aAAO,KAAK,aAAa;AAAA,IAC7B;AAAA,IACA,eAAe;AACX,aAAO,KAAK,cAAc,SAAS,cAAc;AAAA,IACrD;AAAA,EACJ;AAEA,MAAM,YAAN,MAAgB;AAAA,IACZ,YAAY,UAAU;AAClB,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,aAAaA,WAAU,UAAU,CAAC,GAAG;AACjC,UAAI,KAAK,SAAS,iCAAiCA,WAAU,QAAQ,MAAM,GAAG;AAC1E,YAAI,oBAAoBA,WAAU,KAAK,KAAK,SAAS,YAAY,GAAG;AAChE,eAAK,SAAS,wBAAwBA,WAAU,OAAO;AAAA,QAC3D,OACK;AACD,iBAAO,SAAS,OAAOA,UAAS,SAAS;AAAA,QAC7C;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,WAAW,WAAW,uBAAuB,UAAU,CAAC,GAAG;AACvD,WAAK,KAAK;AACV,WAAK,eAAe,IAAI,MAAM,MAAM,UAAU,SAAS,GAAG,uBAAuB,OAAO,OAAO,EAAE,UAAU,KAAK,SAAS,GAAG,OAAO,CAAC;AACpI,WAAK,aAAa,MAAM;AAAA,IAC5B;AAAA,IACA,WAAW,MAAM,WAAW;AACxB,WAAK,KAAK;AACV,WAAK,iBAAiB,IAAI,eAAe,MAAM,MAAM,WAAW,IAAI;AACpE,WAAK,eAAe,MAAM;AAAA,IAC9B;AAAA,IACA,OAAO;AACH,UAAI,KAAK,gBAAgB;AACrB,aAAK,eAAe,KAAK;AACzB,eAAO,KAAK;AAAA,MAChB;AACA,UAAI,KAAK,cAAc;AACnB,aAAK,aAAa,OAAO;AACzB,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,IAAI,OAAO;AACP,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,sBAAsB,gBAAgB;AAClC,UAAI,OAAO,KAAK,QAAQ,0BAA0B,YAAY;AAC1D,aAAK,QAAQ,sBAAsB,cAAc;AAAA,MACrD;AAAA,IACJ;AAAA,IACA,MAAM,oCAAoC,gBAAgB,eAAe;AACrE,UAAI,kBAAkB,KAAK,gBAAgB;AACvC,cAAM,eAAe,MAAM,cAAc;AACzC,YAAI,cAAc;AACd,gBAAM,sBAAsB,eAAe;AAC3C,cAAI,CAAC,qBAAqB;AACtB,iBAAK,KAAK,mBAAmB;AAAA,UACjC;AACA,gBAAM,EAAE,YAAY,WAAW,IAAI;AACnC,gBAAM,SAAS,KAAK,2BAA2B,cAAc;AAC7D,gBAAM,eAAe;AAAA,YACjB;AAAA,YACA;AAAA,YACA,UAAU,EAAE,YAAY,cAAc,WAAW;AAAA,UACrD;AACA,eAAK,aAAa,cAAc,UAAU,YAAY;AAAA,QAC1D;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,MAAM,iCAAiC,gBAAgB,eAAe;AAClE,YAAM,eAAe,MAAM,cAAc;AACzC,UAAI,cAAc;AACd,cAAM,WAAW,aAAa,eAAe,YAAY;AACzD,YAAI,cAAc,aAAa;AAC3B,gBAAM,KAAK,KAAK,YAAY,UAAU,KAAK,YAAY;AAAA,QAC3D,OACK;AACD,gBAAM,KAAK,KAAK,WAAW,UAAU,OAAO,MAAM,KAAK,YAAY;AAAA,QACvE;AACA,aAAK,KAAK,YAAY;AACtB,aAAK,KAAK,mBAAmB;AAAA,MACjC;AAAA,IACJ;AAAA,IACA,sBAAsB,gBAAgBQ,QAAO;AACzC,cAAQ,MAAMA,MAAK;AAAA,IACvB;AAAA,IACA,uBAAuB,gBAAgB;AACnC,UAAI,OAAO,KAAK,QAAQ,2BAA2B,YAAY;AAC3D,aAAK,QAAQ,uBAAuB,cAAc;AAAA,MACtD;AAAA,IACJ;AAAA,IACA,aAAagB,QAAO;AAChB,WAAK,SAAS,aAAaA,MAAK;AAAA,IACpC;AAAA,IACA,eAAeA,QAAO;AAClB,WAAK,SAAS,eAAeA,MAAK;AAAA,IACtC;AAAA,IACA,6BAA6BxB,WAAU,QAAQ;AAC3C,YAAM,SAAS,UAAUA,SAAQ;AACjC,YAAM,gBAAgB,UAAU,KAAK,KAAK,oBAAoB;AAC9D,YAAM,qBAAqB,WAAW,aAAa,OAAO,WAAW;AACrE,aAAQ,WAAW,aACf,cAAcA,SAAQ,MAAM,cAAc,KAAK,KAAK,oBAAoB,MACvE,sBAAuB,UAAU,QAAQ,WAAW;AAAA,IAC7D;AAAA,IACA,gCAAgC,QAAQ,QAAQ;AAC5C,WAAK,SAAS,gCAAgC,QAAQ,MAAM;AAAA,IAChE;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,wBAAwB;AACxB,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,2BAA2B,EAAE,WAAW,YAAY,GAAG;AACnD,aAAO,eAAe,WAAW,WAAW,KAAK;AAAA,IACrD;AAAA,EACJ;AAEA,MAAI;AACJ,GAAC,SAAUyB,YAAW;AAClB,IAAAA,WAAUA,WAAU,SAAS,IAAI,CAAC,IAAI;AACtC,IAAAA,WAAUA,WAAU,SAAS,IAAI,CAAC,IAAI;AACtC,IAAAA,WAAUA,WAAU,aAAa,IAAI,CAAC,IAAI;AAC1C,IAAAA,WAAUA,WAAU,UAAU,IAAI,CAAC,IAAI;AAAA,EAC3C,GAAG,cAAc,YAAY,CAAC,EAAE;AAChC,MAAM,eAAN,MAAmB;AAAA,IACf,YAAY,UAAU;AAClB,WAAK,QAAQ,UAAU;AACvB,WAAK,UAAU;AACf,WAAK,sBAAsB,MAAM;AAC7B,cAAM,EAAE,WAAW,IAAI;AACvB,YAAI,cAAc,eAAe;AAC7B,eAAK,kBAAkB;AAAA,QAC3B,WACS,cAAc,YAAY;AAC/B,eAAK,eAAe;AAAA,QACxB;AAAA,MACJ;AACA,WAAK,iBAAiB,MAAM;AACxB,aAAK,SAAS,eAAe;AAAA,MACjC;AACA,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,YAAI,KAAK,SAAS,UAAU,SAAS;AACjC,eAAK,QAAQ,UAAU;AAAA,QAC3B;AACA,iBAAS,iBAAiB,oBAAoB,KAAK,qBAAqB,KAAK;AAC7E,yBAAiB,YAAY,KAAK,gBAAgB,KAAK;AACvD,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,iBAAS,oBAAoB,oBAAoB,KAAK,qBAAqB,KAAK;AAChF,4BAAoB,YAAY,KAAK,gBAAgB,KAAK;AAC1D,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,oBAAoB;AAChB,UAAI,KAAK,SAAS,UAAU,SAAS;AACjC,aAAK,QAAQ,UAAU;AACvB,aAAK,SAAS,sBAAsB;AAAA,MACxC;AAAA,IACJ;AAAA,IACA,iBAAiB;AACb,WAAK,kBAAkB;AACvB,UAAI,KAAK,SAAS,UAAU,aAAa;AACrC,aAAK,QAAQ,UAAU;AACvB,aAAK,SAAS,WAAW;AAAA,MAC7B;AAAA,IACJ;AAAA,IACA,IAAI,aAAa;AACb,aAAO,SAAS;AAAA,IACpB;AAAA,EACJ;AAEA,MAAM,iBAAN,MAAqB;AAAA,IACjB,YAAY,UAAU;AAClB,WAAK,UAAU;AACf,WAAK,WAAW,MAAM;AAClB,aAAK,eAAe,EAAE,GAAG,OAAO,aAAa,GAAG,OAAO,YAAY,CAAC;AAAA,MACxE;AACA,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,yBAAiB,UAAU,KAAK,UAAU,KAAK;AAC/C,aAAK,SAAS;AACd,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,4BAAoB,UAAU,KAAK,UAAU,KAAK;AAClD,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,eAAe,UAAU;AACrB,WAAK,SAAS,sBAAsB,QAAQ;AAAA,IAChD;AAAA,EACJ;AAEA,MAAM,wBAAN,MAA4B;AAAA,IACxB,OAAO,EAAE,SAAS,GAAG;AACjB,YAAM,4BAA4B,MAAM,kCAAkC,QAAQ,GAAG,MAAM,SAAS,gBAAgB,YAAY,QAAQ,CAAC;AAAA,IAC7I;AAAA,IACA,cAAc,yBAAyB,qBAAqB;AACxD,0BAAoB,YAAY,wBAAwB,UAAU,IAAI,CAAC;AAAA,IAC3E;AAAA,IACA,eAAe;AAAA,IAAE;AAAA,EACrB;AACA,WAAS,kCAAkC,UAAU;AACjD,UAAM,8BAA8B,0BAA0B,SAAS,eAAe;AACtF,UAAM,sBAAsB,CAAC;AAC7B,eAAW,8BAA8B,6BAA6B;AAClE,YAAM,EAAE,IAAAb,IAAG,IAAI;AACf,iBAAW,iBAAiB,SAAS,iBAAiB,cAAc,GAAG;AACnE,cAAM,kBAAkB,wBAAwB,cAAc,gBAAgB,SAASA,GAAE;AACzF,YAAI,iBAAiB;AACjB,8BAAoBA,GAAE,IAAI,CAAC,4BAA4B,eAAe;AAAA,QAC1E;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAEA,MAAM,iBAAN,MAAqB;AAAA,IACjB,YAAY,UAAU;AAClB,WAAK,UAAU,oBAAI,IAAI;AACvB,WAAK,UAAU;AACf,WAAK,uBAAwB,CAACd,WAAU;AACpC,cAAM,WAAW,uBAAuBA,MAAK;AAC7C,YAAI,YAAY,sBAAsB,QAAQ,GAAG;AAC7C,UAAAA,OAAM,eAAe;AACrB,eAAK,uBAAuB,QAAQ;AAAA,QACxC;AAAA,MACJ;AACA,WAAK,sBAAsB,CAACA,WAAU;AAClC,YAAI,KAAK,WAAW,OAAOA,OAAM,QAAQ,UAAU;AAC/C,eAAK,mBAAmBA,OAAM,IAAI;AAAA,QACtC;AAAA,MACJ;AACA,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,UAAU;AACf,yBAAiB,+BAA+B,KAAK,sBAAsB,KAAK;AAAA,MACpF;AAAA,IACJ;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,UAAU;AACf,4BAAoB,+BAA+B,KAAK,sBAAsB,KAAK;AAAA,MACvF;AAAA,IACJ;AAAA,IACA,oBAAoB,QAAQ;AACxB,UAAI,CAAC,KAAK,wBAAwB,MAAM,GAAG;AACvC,aAAK,QAAQ,IAAI,MAAM;AACvB,eAAO,iBAAiB,WAAW,KAAK,qBAAqB,KAAK;AAAA,MACtE;AAAA,IACJ;AAAA,IACA,uBAAuB,QAAQ;AAC3B,UAAI,KAAK,wBAAwB,MAAM,GAAG;AACtC,aAAK,QAAQ,OAAO,MAAM;AAC1B,eAAO,oBAAoB,WAAW,KAAK,qBAAqB,KAAK;AAAA,MACzE;AAAA,IACJ;AAAA,IACA,wBAAwB,QAAQ;AAC5B,aAAO,KAAK,QAAQ,IAAI,MAAM;AAAA,IAClC;AAAA,IACA,MAAM,uBAAuB,UAAU;AACnC,YAAM,OAAO,MAAM,SAAS;AAC5B,UAAI,MAAM;AACN,aAAK,mBAAmB,IAAI;AAAA,MAChC;AAAA,IACJ;AAAA,IACA,mBAAmB,MAAM;AACrB,WAAK,SAAS,0BAA0B,cAAc,KAAK,IAAI,CAAC;AAAA,IACpE;AAAA,EACJ;AACA,WAAS,uBAAuBA,QAAO;AACnC,QAAI;AACJ,UAAM,iBAAiB,KAAKA,OAAM,YAAY,QAAQ,OAAO,SAAS,SAAS,GAAG;AAClF,QAAI,yBAAyB,eAAe;AACxC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,WAAS,sBAAsB,UAAU;AACrC,QAAI;AACJ,UAAM,eAAe,KAAK,SAAS,iBAAiB,QAAQ,OAAO,SAAS,KAAK;AACjF,WAAO,YAAY,WAAW,cAAc,WAAW;AAAA,EAC3D;AAEA,MAAM,gBAAN,cAA4B,SAAS;AAAA,IACjC,OAAO,cAAc,gBAAgB,YAAY;AAC7C,YAAM,EAAE,iBAAiB,KAAK,IAAI;AAClC,sBAAgB,aAAa,YAAY,IAAI;AAAA,IACjD;AAAA,IACA,MAAM,SAAS;AACX,WAAK,mBAAmB;AACxB,WAAK,uBAAuB;AAAA,IAChC;AAAA,IACA,qBAAqB;AACjB,YAAM,EAAE,iBAAiB,KAAK,IAAI;AAClC,sBAAgB,aAAa,KAAK,SAAS,IAAI;AAC/C,WAAK,cAAc,KAAK,gBAAgB,KAAK,UAAU;AAAA,IAC3D;AAAA,IACA,yBAAyB;AACrB,iBAAW,sBAAsB,KAAK,gBAAgB;AAClD,cAAM,aAAa,mBAAmB;AACtC,YAAI,YAAY;AACZ,gBAAM,UAAU,sBAAsB,kBAAkB;AACxD,qBAAW,aAAa,SAAS,kBAAkB;AAAA,QACvD;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,YAAY,aAAa;AAAA,IACzC;AAAA,IACA,IAAI,iBAAiB;AACjB,aAAO,SAAS,gBAAgB,iBAAiB,QAAQ;AAAA,IAC7D;AAAA,EACJ;AAEA,MAAM,eAAN,cAA2B,SAAS;AAAA,IAChC,OAAO,cAAc,gBAAgB,YAAY;AAC7C,UAAI,SAAS,QAAQ,sBAAsB,iBAAiB;AACxD,iBAAS,KAAK,YAAY,UAAU;AAAA,MACxC,OACK;AACD,iBAAS,gBAAgB,YAAY,UAAU;AAAA,MACnD;AAAA,IACJ;AAAA,IACA,IAAI,eAAe;AACf,aAAO,KAAK,YAAY,eAAe,KAAK;AAAA,IAChD;AAAA,IACA,IAAI,eAAe;AACf,UAAI,CAAC,KAAK,YAAY,aAAa;AAC/B,eAAO;AAAA,UACH,QAAQ;AAAA,QACZ;AAAA,MACJ;AACA,UAAI,CAAC,KAAK,6BAA6B;AACnC,eAAO;AAAA,UACH,QAAQ;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,MAAM,kBAAkB;AACpB,YAAM,KAAK,UAAU;AAAA,IACzB;AAAA,IACA,MAAM,SAAS;AACX,UAAI,KAAK,YAAY;AACjB,cAAM,KAAK,YAAY;AAAA,MAC3B;AAAA,IACJ;AAAA,IACA,kBAAkB;AACd,YAAM,gBAAgB;AACtB,UAAI,CAAC,KAAK,WAAW;AACjB,aAAK,+BAA+B;AAAA,MACxC;AAAA,IACJ;AAAA,IACA,IAAI,sBAAsB;AACtB,aAAO,KAAK,gBAAgB;AAAA,IAChC;AAAA,IACA,IAAI,kBAAkB;AAClB,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IACA,IAAI,aAAa;AACb,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IACA,MAAM,YAAY;AACd,YAAM,qBAAqB,KAAK,yBAAyB;AACzD,YAAM,wBAAwB,KAAK,8BAA8B;AACjE,WAAK,0BAA0B;AAC/B,YAAM;AACN,YAAM;AAAA,IACV;AAAA,IACA,MAAM,cAAc;AAChB,YAAM,KAAK,4BAA4B,YAAY;AAC/C,aAAK,gBAAgB;AACrB,cAAM,KAAK,cAAc;AAAA,MAC7B,CAAC;AAAA,IACL;AAAA,IACA,IAAI,8BAA8B;AAC9B,aAAO,KAAK,oBAAoB,2BAA2B,KAAK,gBAAgB;AAAA,IACpF;AAAA,IACA,MAAM,gCAAgC;AAClC,YAAM,kBAAkB,CAAC;AACzB,iBAAW,WAAW,KAAK,2BAA2B;AAClD,wBAAgB,KAAK,YAAY,OAAO,CAAC;AACzC,iBAAS,KAAK,YAAY,OAAO;AAAA,MACrC;AACA,YAAM,QAAQ,IAAI,eAAe;AAAA,IACrC;AAAA,IACA,4BAA4B;AACxB,iBAAW,WAAW,KAAK,uBAAuB;AAC9C,iBAAS,KAAK,YAAY,sBAAsB,OAAO,CAAC;AAAA,MAC5D;AAAA,IACJ;AAAA,IACA,MAAM,2BAA2B;AAC7B,YAAM,kBAAkB,CAAC,GAAG,KAAK,0BAA0B;AAC3D,iBAAW,WAAW,KAAK,gCAAgC;AACvD,YAAI,CAAC,KAAK,8BAA8B,SAAS,eAAe,GAAG;AAC/D,mBAAS,KAAK,YAAY,OAAO;AAAA,QACrC;AAAA,MACJ;AACA,iBAAW,WAAW,iBAAiB;AACnC,iBAAS,KAAK,YAAY,OAAO;AAAA,MACrC;AAAA,IACJ;AAAA,IACA,8BAA8B,SAAS,aAAa;AAChD,iBAAW,CAACmB,QAAO,UAAU,KAAK,YAAY,QAAQ,GAAG;AACrD,YAAI,QAAQ,WAAW,SAAS;AAC5B,cAAI,WAAW,WAAW,SAAS;AAC/B;AAAA,UACJ;AACA,cAAI,QAAQ,aAAa,WAAW,WAAW;AAC3C,wBAAY,OAAOA,QAAO,CAAC;AAC3B,mBAAO;AAAA,UACX;AAAA,QACJ;AACA,YAAI,WAAW,YAAY,OAAO,GAAG;AACjC,sBAAY,OAAOA,QAAO,CAAC;AAC3B,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,IACA,uCAAuC;AACnC,iBAAW,WAAW,KAAK,gCAAgC;AACvD,iBAAS,KAAK,YAAY,OAAO;AAAA,MACrC;AAAA,IACJ;AAAA,IACA,iCAAiC;AAC7B,iBAAW,WAAW,KAAK,4BAA4B;AACnD,iBAAS,KAAK,YAAY,OAAO;AAAA,MACrC;AAAA,IACJ;AAAA,IACA,kBAAkB;AACd,eAAS,UAAU,KAAK,UAAU;AAClC,WAAK,8BAA8B;AAAA,IACvC;AAAA,IACA,gCAAgC;AAC5B,iBAAW,sBAAsB,KAAK,uBAAuB;AACzD,cAAM,yBAAyB,sBAAsB,kBAAkB;AACvE,2BAAmB,YAAY,sBAAsB;AAAA,MACzD;AAAA,IACJ;AAAA,IACA,MAAM,gBAAgB;AAClB,YAAM,KAAK,cAAc,KAAK,gBAAgB,KAAK,UAAU;AAAA,IACjE;AAAA,IACA,IAAI,4BAA4B;AAC5B,aAAO,KAAK,gBAAgB,mCAAmC,KAAK,mBAAmB;AAAA,IAC3F;AAAA,IACA,IAAI,wBAAwB;AACxB,aAAO,KAAK,gBAAgB,+BAA+B,KAAK,mBAAmB;AAAA,IACvF;AAAA,IACA,IAAI,iCAAiC;AACjC,aAAO,KAAK,oBAAoB;AAAA,IACpC;AAAA,IACA,IAAI,6BAA6B;AAC7B,aAAO,KAAK,gBAAgB;AAAA,IAChC;AAAA,IACA,IAAI,wBAAwB;AACxB,aAAO,KAAK,WAAW,iBAAiB,QAAQ;AAAA,IACpD;AAAA,EACJ;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAChB,YAAY,MAAM;AACd,WAAK,OAAO,CAAC;AACb,WAAK,YAAY,CAAC;AAClB,WAAK,OAAO;AAAA,IAChB;AAAA,IACA,IAAIjB,WAAU;AACV,aAAO,WAAWA,SAAQ,KAAK,KAAK;AAAA,IACxC;AAAA,IACA,IAAIA,WAAU;AACV,UAAI,KAAK,IAAIA,SAAQ,GAAG;AACpB,cAAM,WAAW,KAAK,KAAKA,SAAQ;AACnC,aAAK,MAAMA,SAAQ;AACnB,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,IAAIA,WAAU,UAAU;AACpB,WAAK,MAAMA,WAAU,QAAQ;AAC7B,WAAK,MAAMA,SAAQ;AACnB,aAAO;AAAA,IACX;AAAA,IACA,QAAQ;AACJ,WAAK,YAAY,CAAC;AAAA,IACtB;AAAA,IACA,KAAKA,WAAU;AACX,aAAO,KAAK,UAAU,WAAWA,SAAQ,CAAC;AAAA,IAC9C;AAAA,IACA,MAAMA,WAAU,UAAU;AACtB,WAAK,UAAU,WAAWA,SAAQ,CAAC,IAAI;AAAA,IAC3C;AAAA,IACA,MAAMA,WAAU;AACZ,YAAM,MAAM,WAAWA,SAAQ;AAC/B,YAAMiB,SAAQ,KAAK,KAAK,QAAQ,GAAG;AACnC,UAAIA,SAAQ;AACR,aAAK,KAAK,OAAOA,QAAO,CAAC;AAC7B,WAAK,KAAK,QAAQ,GAAG;AACrB,WAAK,KAAK;AAAA,IACd;AAAA,IACA,OAAO;AACH,iBAAW,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI,GAAG;AAC3C,eAAO,KAAK,UAAU,GAAG;AAAA,MAC7B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,WAAN,cAAuB,KAAK;AAAA,IACxB,cAAc;AACV,YAAM,GAAG,SAAS;AAClB,WAAK,gBAAgB,IAAI,cAAc,EAAE;AACzC,WAAK,uBAAuB,IAAI,IAAI,SAAS,IAAI;AACjD,WAAK,gBAAgB;AAAA,IACzB;AAAA,IACA,WAAW,UAAU,YAAY,OAAO,aAAa,MAAMO,QAAO;AAC9D,YAAM,WAAW,IAAI,aAAa,KAAK,UAAU,UAAU,aAAa,eAAe,WAAW,UAAU;AAC5G,UAAI,CAAC,SAAS,cAAc;AACxB,aAAK,gBAAgB;AAAA,MACzB,OACK;AACD,QAAAA,WAAU,QAAQA,WAAU,SAAS,SAASA,OAAM,cAAc;AAAA,MACtE;AACA,aAAO,KAAK,OAAO,QAAQ;AAAA,IAC/B;AAAA,IACA,YAAY,UAAUA,QAAO;AACzB,MAAAA,WAAU,QAAQA,WAAU,SAAS,SAASA,OAAM,cAAc;AAClE,YAAM,WAAW,IAAI,cAAc,KAAK,UAAU,UAAU,cAAc,eAAe,KAAK;AAC9F,aAAO,KAAK,OAAO,QAAQ;AAAA,IAC/B;AAAA,IACA,qBAAqB;AACjB,WAAK,cAAc,MAAM;AAAA,IAC7B;AAAA,IACA,MAAM,cAAc,WAAW,KAAK,UAAU;AAC1C,UAAI,SAAS,aAAa;AACtB,aAAK,SAAS,sBAAsB;AACpC,cAAM,EAAE,sBAAsBxB,UAAS,IAAI;AAC3C,cAAM,kBAAkB;AACxB,cAAM,iBAAiB,SAAS,MAAM;AACtC,aAAK,cAAc,IAAIA,WAAU,cAAc;AAC/C,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,6BAA6BA,WAAU;AACnC,aAAO,KAAK,cAAc,IAAIA,SAAQ;AAAA,IAC1C;AAAA,IACA,IAAI,WAAW;AACX,aAAO,aAAa,YAAY,KAAK,OAAO;AAAA,IAChD;AAAA,EACJ;AAEA,MAAM,YAAN,MAAgB;AAAA,IACZ,YAAY,UAAU;AAClB,WAAK,WAAW;AAChB,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,IAAI,gBAAgB;AAChB,aAAO,KAAK,SAAS,UAAU,KAAK;AAAA,IACxC;AAAA,IACA,QAAQ;AACJ,UAAI,SAAS,eAAe,WAAW;AACnC,eAAO,SAAS,iBAAiB,oBAAoB,MAAM;AACvD,eAAK,0BAA0B,SAAS,IAAI;AAAA,QAChD,CAAC;AAAA,MACL,OACK;AACD,aAAK,0BAA0B,SAAS,IAAI;AAAA,MAChD;AAAA,IACJ;AAAA,IACA,0BAA0B,SAAS;AAC/B,iBAAW,QAAQ,QAAQ,iBAAiB,KAAK,QAAQ,GAAG;AACxD,aAAK,WAAW,IAAI;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,MAAM,WAAW,MAAM;AACnB,YAAMA,YAAW,IAAI,IAAI,KAAK,IAAI;AAClC,UAAI,KAAK,cAAc,IAAIA,SAAQ,GAAG;AAClC;AAAA,MACJ;AACA,UAAI;AACA,cAAM,WAAW,MAAM,MAAMA,UAAS,SAAS,GAAG,EAAE,SAAS,EAAE,gBAAgB,QAAQ,QAAQ,YAAY,EAAE,CAAC;AAC9G,cAAM,eAAe,MAAM,SAAS,KAAK;AACzC,cAAM,WAAW,aAAa,eAAe,YAAY;AACzD,aAAK,cAAc,IAAIA,WAAU,QAAQ;AAAA,MAC7C,SACOK,IAAG;AAAA,MACV;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,UAAN,MAAc;AAAA,IACV,cAAc;AACV,WAAK,YAAY,IAAI,UAAU,IAAI;AACnC,WAAK,UAAU,IAAI,QAAQ,IAAI;AAC/B,WAAK,YAAY,IAAI,UAAU,IAAI;AACnC,WAAK,OAAO,IAAI,SAAS,MAAM,SAAS,eAAe;AACvD,WAAK,UAAU,IAAI,eAAe,IAAI;AACtC,WAAK,eAAe,IAAI,aAAa,IAAI;AACzC,WAAK,gBAAgB,IAAI,cAAc;AACvC,WAAK,oBAAoB,IAAI,kBAAkB,MAAM,MAAM;AAC3D,WAAK,qBAAqB,IAAI,mBAAmB,MAAM,QAAQ;AAC/D,WAAK,iBAAiB,IAAI,eAAe,IAAI;AAC7C,WAAK,iBAAiB,IAAI,eAAe,IAAI;AAC7C,WAAK,wBAAwB,IAAI,sBAAsB,MAAM,SAAS,eAAe;AACrF,WAAK,kBAAkB,IAAI,gBAAgB,MAAM,SAAS,eAAe;AACzE,WAAK,wBAAwB,IAAI,sBAAsB;AACvD,WAAK,QAAQ;AACb,WAAK,UAAU;AACf,WAAK,mBAAmB;AACxB,WAAK,UAAU;AACf,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,QAAQ;AACJ,UAAI,CAAC,KAAK,SAAS;AACf,aAAK,aAAa,MAAM;AACxB,aAAK,cAAc,MAAM;AACzB,aAAK,sBAAsB,MAAM;AACjC,aAAK,kBAAkB,MAAM;AAC7B,aAAK,mBAAmB,MAAM;AAC9B,aAAK,eAAe,MAAM;AAC1B,aAAK,eAAe,MAAM;AAC1B,aAAK,gBAAgB,MAAM;AAC3B,aAAK,QAAQ,MAAM;AACnB,aAAK,UAAU,MAAM;AACrB,aAAK,UAAU;AACf,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,UAAU;AACN,WAAK,UAAU;AAAA,IACnB;AAAA,IACA,OAAO;AACH,UAAI,KAAK,SAAS;AACd,aAAK,aAAa,KAAK;AACvB,aAAK,cAAc,KAAK;AACxB,aAAK,sBAAsB,KAAK;AAChC,aAAK,kBAAkB,KAAK;AAC5B,aAAK,mBAAmB,KAAK;AAC7B,aAAK,eAAe,KAAK;AACzB,aAAK,eAAe,KAAK;AACzB,aAAK,gBAAgB,KAAK;AAC1B,aAAK,QAAQ,KAAK;AAClB,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,gBAAgB,SAAS;AACrB,WAAK,UAAU;AAAA,IACnB;AAAA,IACA,MAAML,WAAU,UAAU,CAAC,GAAG;AAC1B,YAAM,eAAe,QAAQ,QAAQ,SAAS,eAAe,QAAQ,KAAK,IAAI;AAC9E,UAAI,wBAAwB,cAAc;AACtC,qBAAa,MAAMA,UAAS,SAAS;AACrC,qBAAa;AAAA,MACjB,OACK;AACD,aAAK,UAAU,aAAa,UAAUA,SAAQ,GAAG,OAAO;AAAA,MAC5D;AAAA,IACJ;AAAA,IACA,oBAAoB,QAAQ;AACxB,WAAK,eAAe,oBAAoB,MAAM;AAAA,IAClD;AAAA,IACA,uBAAuB,QAAQ;AAC3B,WAAK,eAAe,uBAAuB,MAAM;AAAA,IACrD;AAAA,IACA,oBAAoBH,UAAS;AACzB,WAAK,sBAAsB,OAAO,cAAc,KAAKA,QAAO,CAAC;AAAA,IACjE;AAAA,IACA,aAAa;AACT,WAAK,KAAK,mBAAmB;AAAA,IACjC;AAAA,IACA,oBAAoB,OAAO;AACvB,WAAK,mBAAmB;AAAA,IAC5B;AAAA,IACA,YAAY,MAAM;AACd,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,wBAAwB;AACxB,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,iDAAiDG,WAAU,uBAAuB;AAC9E,UAAI,KAAK,SAAS;AACd,aAAK,UAAU,WAAWA,WAAU,uBAAuB;AAAA,UACvD,QAAQ;AAAA,UACR,gBAAgB;AAAA,QACpB,CAAC;AAAA,MACL,OACK;AACD,aAAK,QAAQ,gBAAgB;AAAA,UACzB,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,IACA,sBAAsB,UAAU;AAC5B,WAAK,QAAQ,sBAAsB,EAAE,gBAAgB,SAAS,CAAC;AAAA,IACnE;AAAA,IACA,6BAA6B,MAAMA,WAAU;AACzC,aAAO,KAAK,qBAAqB,IAAI,KAAK,oBAAoBA,WAAU,KAAK,SAAS,YAAY;AAAA,IACtG;AAAA,IACA,8BAA8B;AAAA,IAAE;AAAA,IAChC,yBAAyB,MAAMA,WAAUF,QAAO;AAC5C,aAAQ,KAAK,qBAAqB,IAAI,KAClC,oBAAoBE,WAAU,KAAK,SAAS,YAAY,KACxD,KAAK,yCAAyC,MAAMA,WAAUF,MAAK;AAAA,IAC3E;AAAA,IACA,uBAAuB,MAAME,WAAU;AACnC,YAAM,SAAS,KAAK,iBAAiB,IAAI;AACzC,YAAM,wBAAwB,KAAK,aAAa,mBAAmB;AACnE,WAAK,MAAMA,UAAS,MAAM,EAAE,QAAQ,sBAAsB,CAAC;AAAA,IAC/D;AAAA,IACA,iCAAiCA,WAAU,QAAQ;AAC/C,aAAO,KAAK,6BAA6BA,WAAU,MAAM,KAAK,KAAK,kCAAkCA,SAAQ;AAAA,IACjH;AAAA,IACA,wBAAwBA,WAAU,SAAS;AACvC,wCAAkCA,SAAQ;AAC1C,WAAK,QAAQ,wBAAwBA,WAAU,OAAO;AAAA,IAC1D;AAAA,IACA,aAAawB,QAAO;AAChB,UAAI,CAACA,OAAM,uBAAuB;AAC9B,mBAAW,SAAS,eAAe;AAAA,MACvC;AACA,wCAAkCA,OAAM,QAAQ;AAChD,UAAI,CAACA,OAAM,QAAQ;AACf,aAAK,uCAAuCA,OAAM,UAAUA,OAAM,MAAM;AAAA,MAC5E;AAAA,IACJ;AAAA,IACA,eAAeA,QAAO;AAClB,qBAAe,SAAS,eAAe;AACvC,WAAK,+BAA+BA,OAAM,iBAAiB,CAAC;AAAA,IAChE;AAAA,IACA,6BAA6BxB,WAAU,QAAQ;AAC3C,aAAO,KAAK,UAAU,6BAA6BA,WAAU,MAAM;AAAA,IACvE;AAAA,IACA,gCAAgC,QAAQ,QAAQ;AAC5C,WAAK,+CAA+C,QAAQ,MAAM;AAAA,IACtE;AAAA,IACA,eAAe,MAAM,WAAW;AAC5B,YAAM,SAAS,UAAU,MAAM,SAAS;AACxC,aAAQ,KAAK,wBAAwB,MAAM,SAAS,KAChD,oBAAoB,UAAU,MAAM,GAAG,KAAK,SAAS,YAAY;AAAA,IACzE;AAAA,IACA,cAAc,MAAM,WAAW;AAC3B,WAAK,UAAU,WAAW,MAAM,SAAS;AAAA,IAC7C;AAAA,IACA,wBAAwB;AACpB,WAAK,KAAK,uBAAuB,KAAK;AACtC,WAAK,+BAA+B;AAAA,IACxC;AAAA,IACA,aAAa;AACT,WAAK,QAAQ,iCAAiC;AAAA,IAClD;AAAA,IACA,iBAAiB;AACb,WAAK,QAAQ,qCAAqC;AAAA,IACtD;AAAA,IACA,0BAA0BH,UAAS;AAC/B,WAAK,oBAAoBA,QAAO;AAAA,IACpC;AAAA,IACA,wBAAwB;AACpB,UAAI;AACJ,UAAI,GAAG,KAAK,KAAK,UAAU,kBAAkB,QAAQ,OAAO,SAAS,SAAS,GAAG,SAAS;AACtF,aAAK,uCAAuC;AAAA,MAChD;AAAA,IACJ;AAAA,IACA,sBAAsB,EAAE,QAAQ,GAAG,SAAS;AACxC,YAAMC,SAAQ,KAAK,8BAA8B,SAAS,OAAO;AACjE,YAAM,EAAE,kBAAkB,QAAQ,EAAE,OAAO,EAAG,IAAIA;AAClD,UAAI,KAAK,KAAK,YAAY,QAAQ;AAC9B,aAAK,KAAK,SAAS,gBAAgB;AAAA,MACvC;AACA,aAAO,CAAC;AAAA,IACZ;AAAA,IACA,qBAAqB,WAAW,YAAY;AACxC,WAAK,KAAK,uBAAuB,KAAK,QAAQ;AAC9C,WAAK,6BAA6B;AAAA,IACtC;AAAA,IACA,0BAA0B,SAAS;AAC/B,WAAK,UAAU,0BAA0B,OAAO;AAAA,IACpD;AAAA,IACA,gBAAgB,QAAQ;AACpB,WAAK,QAAQ,gBAAgB,MAAM;AAAA,IACvC;AAAA,IACA,YAAY,OAAO;AACf,WAAK,gCAAgC,KAAK;AAAA,IAC9C;AAAA,IACA,cAAc,eAAe,OAAO;AAChC,WAAK,kCAAkC,eAAe,KAAK;AAAA,IAC/D;AAAA,IACA,yCAAyC,MAAME,WAAU,IAAI;AACzD,YAAMF,SAAQ,KAAK,6CAA6C,MAAME,WAAU,EAAE;AAClF,aAAO,CAACF,OAAM;AAAA,IAClB;AAAA,IACA,kCAAkCE,WAAU;AACxC,YAAMF,SAAQ,KAAK,wCAAwCE,SAAQ;AACnE,aAAO,CAACF,OAAM;AAAA,IAClB;AAAA,IACA,6CAA6C,MAAME,WAAUF,QAAO;AAChE,aAAO,SAAS,eAAe;AAAA,QAC3B,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAKE,UAAS,MAAM,eAAeF,OAAM;AAAA,QACnD,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,wCAAwCE,WAAU;AAC9C,aAAO,SAAS,sBAAsB;AAAA,QAClC,QAAQ,EAAE,KAAKA,UAAS,KAAK;AAAA,QAC7B,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,uCAAuCA,WAAU,QAAQ;AACrD,aAAO,SAAS,eAAe,EAAE,QAAQ,EAAE,KAAKA,UAAS,MAAM,OAAO,EAAE,CAAC;AAAA,IAC7E;AAAA,IACA,yCAAyC;AACrC,aAAO,SAAS,oBAAoB;AAAA,IACxC;AAAA,IACA,8BAA8B,SAAS,SAAS;AAC5C,aAAO,SAAS,uBAAuB;AAAA,QACnC,QAAQ,OAAO,OAAO,EAAE,QAAQ,GAAG,OAAO;AAAA,QAC1C,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,+BAA+B;AAC3B,aAAO,SAAS,cAAc;AAAA,IAClC;AAAA,IACA,+BAA+B,SAAS,CAAC,GAAG;AACxC,aAAO,SAAS,cAAc;AAAA,QAC1B,QAAQ,EAAE,KAAK,KAAK,SAAS,MAAM,OAAO;AAAA,MAC9C,CAAC;AAAA,IACL;AAAA,IACA,+CAA+C,QAAQ,QAAQ;AAC3D,oBAAc,IAAI,gBAAgB,cAAc;AAAA,QAC5C,QAAQ,OAAO,SAAS;AAAA,QACxB,QAAQ,OAAO,SAAS;AAAA,MAC5B,CAAC,CAAC;AAAA,IACN;AAAA,IACA,gCAAgC,OAAO;AACnC,aAAO,SAAS,oBAAoB,EAAE,QAAQ,MAAM,CAAC;AAAA,IACzD;AAAA,IACA,kCAAkC,eAAe,OAAO;AACpD,aAAO,SAAS,sBAAsB;AAAA,QAClC,QAAQ,EAAE,cAAc;AAAA,QACxB,QAAQ;AAAA,QACR,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,wBAAwB,MAAM,WAAW;AACrC,UAAI,KAAK,YAAY,OAAO;AACxB,eAAO;AAAA,MACX,OACK;AACD,cAAM,yBAAyB,YAAY,KAAK,qBAAqB,SAAS,IAAI;AAClF,YAAI,KAAK,YAAY,SAAS;AAC1B,iBAAO,0BAA0B,KAAK,QAAQ,qBAAqB,KAAK;AAAA,QAC5E,OACK;AACD,iBAAO,0BAA0B,KAAK,qBAAqB,IAAI;AAAA,QACnE;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,qBAAqB,SAAS;AAC1B,YAAM,YAAY,uBAAuB,SAAS,cAAc;AAChE,YAAM,cAAc,uBAAuB,SAAS,aAAa;AACjE,UAAI,KAAK,SAAS,aAAa;AAC3B,YAAI,WAAW;AACX,iBAAO,UAAU,aAAa,YAAY,KAAK;AAAA,QACnD,OACK;AACD,iBAAO;AAAA,QACX;AAAA,MACJ,OACK;AACD,YAAI,WAAW;AACX,iBAAO,UAAU,aAAa,YAAY,KAAK;AAAA,QACnD,OACK;AACD,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,iBAAiB,MAAM;AACnB,aAAO,eAAe,IAAI,KAAK;AAAA,IACnC;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK,KAAK;AAAA,IACrB;AAAA,EACJ;AACA,WAAS,kCAAkC,KAAK;AAC5C,WAAO,iBAAiB,KAAK,qCAAqC;AAAA,EACtE;AACA,MAAM,wCAAwC;AAAA,IAC1C,aAAa;AAAA,MACT,MAAM;AACF,eAAO,KAAK,SAAS;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,QAAN,MAAY;AAAA,IACR,YAAYuB,UAAS;AACjB,WAAK,UAAUA;AAAA,IACnB;AAAA,IACA,QAAQ;AACJ,WAAK,QAAQ,WAAW;AAAA,IAC5B;AAAA,IACA,oBAAoB;AAChB,WAAK,gBAAgB,EAAE;AAAA,IAC3B;AAAA,IACA,sBAAsB;AAClB,WAAK,gBAAgB,UAAU;AAAA,IACnC;AAAA,IACA,wBAAwB;AACpB,WAAK,gBAAgB,YAAY;AAAA,IACrC;AAAA,IACA,gBAAgB,OAAO;AACnB,qBAAe,uBAAuB,KAAK;AAAA,IAC/C;AAAA,EACJ;AAEA,MAAM,gBAAgB;AAAA,IAClB,QAAQ;AACJ,WAAK,eAAe,QAAQ,CAACG,OAAM;AAAE,YAAI;AAAI,gBAAQ,KAAKA,GAAE,mBAAmB,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,KAAK,iBAAiBA,GAAE,WAAW;AAAA,MAAG,CAAC;AAAA,IAC3K;AAAA,IACA,SAAS;AACL,WAAK,8BAA8B;AACnC,WAAK,eAAe,QAAQ,CAACA,OAAMA,GAAE,OAAO,KAAK,eAAe,CAAC;AAAA,IACrE;AAAA,IACA,SAAS;AACL,WAAK,eAAe,QAAQ,CAACA,OAAM;AAAE,YAAI;AAAI,gBAAQ,KAAKA,GAAE,mBAAmB,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,KAAK,iBAAiBA,EAAC;AAAA,MAAG,CAAC;AAAA,IAC/J;AAAA,IACA,UAAU;AACN,WAAK,8BAA8B;AACnC,WAAK,eAAe,QAAQ,CAACA,OAAMA,GAAE,QAAQ,KAAK,eAAe,CAAC;AAAA,IACtE;AAAA,IACA,SAAS;AACL,WAAK,eAAe,QAAQ,CAACA,OAAMA,GAAE,OAAO,CAAC;AAAA,IACjD;AAAA,IACA,UAAU;AACN,WAAK,eAAe,QAAQ,CAACA,OAAMA,GAAE,YAAY,KAAK,eAAe,CAAC;AAAA,IAC1E;AAAA,IACA,SAAS;AACL,WAAK,eAAe,QAAQ,CAAC,kBAAkB;AAC3C,sBAAc,YAAY;AAC1B,sBAAc,OAAO,KAAK,eAAe;AAAA,MAC7C,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,MAAM,UAAU,IAAI,QAAQ;AAC5B,MAAM,QAAQ,IAAI,MAAM,OAAO;AAC/B,MAAM,EAAE,WAAW,YAAY,IAAI;AACnC,WAAS,QAAQ;AACb,YAAQ,MAAM;AAAA,EAClB;AACA,WAAS,gBAAgB,SAAS;AAC9B,YAAQ,gBAAgB,OAAO;AAAA,EACnC;AACA,WAAS,MAAM1B,WAAU,SAAS;AAC9B,YAAQ,MAAMA,WAAU,OAAO;AAAA,EACnC;AACA,WAAS,oBAAoB,QAAQ;AACjC,YAAQ,oBAAoB,MAAM;AAAA,EACtC;AACA,WAAS,uBAAuB,QAAQ;AACpC,YAAQ,uBAAuB,MAAM;AAAA,EACzC;AACA,WAAS,oBAAoBH,UAAS;AAClC,YAAQ,oBAAoBA,QAAO;AAAA,EACvC;AACA,WAAS,aAAa;AAClB,YAAQ,KAAK,yJAAyJ;AACtK,YAAQ,WAAW;AAAA,EACvB;AACA,WAAS,oBAAoB,OAAO;AAChC,YAAQ,oBAAoB,KAAK;AAAA,EACrC;AACA,WAAS,iBAAiB,eAAe;AACrC,mBAAe,gBAAgB;AAAA,EACnC;AACA,WAAS,YAAY,MAAM;AACvB,YAAQ,YAAY,IAAI;AAAA,EAC5B;AAEA,MAAI8B,SAAqB,uBAAO,OAAO;AAAA,IACnC,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AAED,MAAM,yBAAN,cAAqC,MAAM;AAAA,EAC3C;AAEA,MAAM,kBAAN,MAAsB;AAAA,IAClB,YAAY,SAAS;AACjB,WAAK,sBAAsB,CAAC,mBAAmB;AAAA,MAAE;AACjD,WAAK,sBAAsB;AAC3B,WAAK,sBAAsB,MAAM;AAAA,MAAE;AACnC,WAAK,YAAY;AACjB,WAAK,gBAAgB;AACrB,WAAK,oBAAoB,oBAAI,IAAI;AACjC,WAAK,SAAS;AACd,WAAK,sBAAsB,CAAC,EAAE,SAAAC,SAAQ,MAAM;AACxC,cAAM,QAAQA,SAAQ,cAAc,MAAM,KAAK,QAAQ,EAAE;AACzD,YAAI,SAAS,KAAK,sBAAsB;AACpC,gBAAM,gBAAgB,GAAG,KAAK,qBAAqB,QAAQ;AAAA,QAC/D;AACA,eAAO,KAAK;AAAA,MAChB;AACA,WAAK,UAAU;AACf,WAAK,OAAO,IAAI,UAAU,MAAM,KAAK,OAAO;AAC5C,WAAK,qBAAqB,IAAI,mBAAmB,MAAM,KAAK,OAAO;AACnE,WAAK,wBAAwB,IAAI,sBAAsB,MAAM,KAAK,OAAO;AACzE,WAAK,kBAAkB,IAAI,gBAAgB,MAAM,KAAK,OAAO;AAC7D,WAAK,wBAAwB,KAAK;AAClC,WAAK,qBAAqB,IAAI,mBAAmB,MAAM,KAAK,OAAO;AAAA,IACvE;AAAA,IACA,UAAU;AACN,UAAI,CAAC,KAAK,WAAW;AACjB,aAAK,YAAY;AACjB,YAAI,KAAK,gBAAgB,kBAAkB,MAAM;AAC7C,eAAK,mBAAmB,MAAM;AAAA,QAClC,OACK;AACD,eAAK,cAAc;AAAA,QACvB;AACA,aAAK,sBAAsB,MAAM;AACjC,aAAK,gBAAgB,MAAM;AAC3B,aAAK,mBAAmB,MAAM;AAAA,MAClC;AAAA,IACJ;AAAA,IACA,aAAa;AACT,UAAI,KAAK,WAAW;AAChB,aAAK,YAAY;AACjB,aAAK,mBAAmB,KAAK;AAC7B,aAAK,sBAAsB,KAAK;AAChC,aAAK,gBAAgB,KAAK;AAC1B,aAAK,mBAAmB,KAAK;AAAA,MACjC;AAAA,IACJ;AAAA,IACA,kBAAkB;AACd,UAAI,KAAK,gBAAgB,kBAAkB,OAAO;AAC9C,aAAK,cAAc;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,mBAAmB;AACf,UAAI,KAAK,oBAAoB,KAAK;AAC9B;AACJ,UAAI,KAAK,QAAQ,aAAa;AAC1B,aAAK,WAAW;AAAA,MACpB;AACA,UAAI,KAAK,gBAAgB,kBAAkB,SAAS,KAAK,eAAe;AACpE,aAAK,cAAc;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,oBAAoB;AAChB,YAAM,EAAE,IAAI,IAAI,KAAK;AACrB,WAAK,2BAA2B,YAAY,MAAM;AAC9C,aAAK,QAAQ,gBAAgB,UAAU;AAAA,MAC3C,CAAC;AACD,WAAK,QAAQ,MAAM;AACnB,WAAK,QAAQ,MAAM;AACnB,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,kBAAkB;AACd,UAAI,KAAK,oBAAoB,UAAU;AACnC;AACJ,WAAK,cAAc;AAAA,IACvB;AAAA,IACA,sBAAsB;AAClB,UAAI,KAAK,gBAAgB,kBAAkB,MAAM;AAC7C,aAAK,mBAAmB,MAAM;AAAA,MAClC,OACK;AACD,aAAK,mBAAmB,KAAK;AAC7B,aAAK,cAAc;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,MAAM,gBAAgB;AAClB,UAAI,KAAK,WAAW,KAAK,YAAY,CAAC,KAAK,YAAY,KAAK,WAAW;AACnE,aAAK,QAAQ,SAAS,KAAK,MAAM,UAAU,KAAK,SAAS,CAAC;AAC1D,aAAK,mBAAmB,KAAK;AAC7B,cAAM,KAAK,QAAQ;AACnB,aAAK,gBAAgB;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,MAAM,aAAa,eAAe;AAC9B,UAAI,cAAc,cAAe,cAAc,aAAa,cAAc,QAAS;AAC/E,aAAK,YAAY,cAAc,SAAS;AAAA,MAC5C;AACA,UAAI;AACA,cAAM,OAAO,MAAM,cAAc;AACjC,YAAI,MAAM;AACN,gBAAMC,YAAW,kBAAkB,IAAI;AACvC,gBAAM,eAAe,aAAa,aAAaA,SAAQ;AACvD,cAAI,aAAa,aAAa;AAC1B,kBAAM,KAAK,kBAAkB,eAAeA,SAAQ;AAAA,UACxD,OACK;AACD,kBAAM,KAAK,+BAA+B,aAAa;AAAA,UAC3D;AAAA,QACJ;AAAA,MACJ,UACA;AACI,aAAK,sBAAsB,MAAM;AAAA,QAAE;AAAA,MACvC;AAAA,IACJ;AAAA,IACA,0BAA0B,SAAS;AAC/B,WAAK,kCAAkC,SAAS,OAAO;AACvD,WAAK,cAAc;AAAA,IACvB;AAAA,IACA,6BAA6B,MAAM;AAC/B,aAAO,KAAK,0BAA0B,IAAI;AAAA,IAC9C;AAAA,IACA,4BAA4B,MAAM,WAAW,MAAM;AAC/C,YAAM,QAAQ,KAAK,iBAAiB,IAAI;AACxC,UAAI;AACA,aAAK,aAAa,oBAAoB,MAAM,EAAE;AAAA,IACtD;AAAA,IACA,yBAAyB,SAAS,WAAW,QAAQ;AACjD,aAAO,KAAK,0BAA0B,OAAO;AAAA,IACjD;AAAA,IACA,qBAAqB,SAAS7B,WAAU;AACpC,WAAK,cAAc,SAASA,SAAQ;AAAA,IACxC;AAAA,IACA,eAAe,SAAS,WAAW;AAC/B,aAAO,QAAQ,QAAQ,aAAa,KAAK,KAAK,WAAW,KAAK,0BAA0B,SAAS,SAAS;AAAA,IAC9G;AAAA,IACA,cAAc,SAAS,WAAW;AAC9B,UAAI,KAAK,gBAAgB;AACrB,aAAK,eAAe,KAAK;AAAA,MAC7B;AACA,WAAK,iBAAiB,IAAI,eAAe,MAAM,SAAS,SAAS;AACjE,YAAM,EAAE,aAAa,IAAI,KAAK;AAC9B,WAAK,eAAe,YAAY;AAChC,WAAK,eAAe,MAAM;AAAA,IAC9B;AAAA,IACA,eAAe,SAAS;AACpB,UAAI;AACJ,cAAQ,QAAQ,aAAa,IAAI,KAAK;AACtC,WAAK,KAAK,KAAK,8BAA8B,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,mBAAmB,GAAG;AAChH,gBAAQ,mBAAmB,cAAc,WAAW;AAAA,MACxD;AAAA,IACJ;AAAA,IACA,eAAe,UAAU;AACrB,iBAAW,KAAK,OAAO;AAAA,IAC3B;AAAA,IACA,iCAAiC,UAAU,WAAW;AAClD,WAAK,oBAAoB;AAAA,IAC7B;AAAA,IACA,MAAM,6BAA6B,SAAS,UAAU;AAClD,YAAM,KAAK,aAAa,QAAQ;AAChC,WAAK,oBAAoB;AAAA,IAC7B;AAAA,IACA,MAAM,0BAA0B,SAAS,UAAU;AAC/C,YAAM,KAAK,aAAa,QAAQ;AAChC,WAAK,oBAAoB;AAAA,IAC7B;AAAA,IACA,eAAe,SAASQ,QAAO;AAC3B,cAAQ,MAAMA,MAAK;AACnB,WAAK,oBAAoB;AAAA,IAC7B;AAAA,IACA,gBAAgB,UAAU;AACtB,qBAAe,KAAK,OAAO;AAAA,IAC/B;AAAA,IACA,sBAAsB,EAAE,YAAY,GAAG;AACnC,iBAAW,aAAa,KAAK,iBAAiB,WAAW,CAAC;AAAA,IAC9D;AAAA,IACA,oCAAoC,gBAAgB,UAAU;AAC1D,YAAM,QAAQ,KAAK,iBAAiB,eAAe,aAAa,eAAe,SAAS;AACxF,YAAM,SAAS,kCAAkC,OAAO,eAAe,aAAa,eAAe,SAAS;AAC5G,YAAM,SAAS,aAAa,QAAQ;AACpC,UAAI,CAAC,eAAe,QAAQ;AACxB,gBAAQ,WAAW;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,iCAAiC,gBAAgB,eAAe;AAC5D,WAAK,QAAQ,SAAS,aAAa,aAAa;AAChD,cAAQ,WAAW;AAAA,IACvB;AAAA,IACA,sBAAsB,gBAAgBA,QAAO;AACzC,cAAQ,MAAMA,MAAK;AAAA,IACvB;AAAA,IACA,uBAAuB,EAAE,YAAY,GAAG;AACpC,qBAAe,aAAa,KAAK,iBAAiB,WAAW,CAAC;AAAA,IAClE;AAAA,IACA,sBAAsB,EAAE,SAAS,SAAS,GAAG,SAAS;AAClD,YAAMV,SAAQ,SAAS,6BAA6B;AAAA,QAChD,QAAQ,KAAK;AAAA,QACb,QAAQ,OAAO,OAAO,EAAE,SAAS,GAAG,OAAO;AAAA,QAC3C,YAAY;AAAA,MAChB,CAAC;AACD,YAAM,EAAE,kBAAkB,QAAQ,EAAE,OAAO,EAAG,IAAIA;AAClD,UAAI,KAAK,KAAK,YAAY,QAAQ;AAC9B,aAAK,KAAK,SAAS,gBAAgB;AAAA,MACvC;AACA,aAAO,CAAC;AAAA,IACZ;AAAA,IACA,qBAAqB,WAAW,YAAY;AAAA,IAAE;AAAA,IAC9C,0BAA0B,SAAS;AAC/B,cAAQ,0BAA0B,OAAO;AAAA,IAC7C;AAAA,IACA,kBAAkB;AAAA,IAAE;AAAA,IACpB,gBAAgB,gBAAgB,aAAa;AACzC,WAAK,uBAAuB,eAAe,UAAU,IAAI;AAAA,IAC7D;AAAA,IACA,MAAM,kBAAkB,eAAe+B,WAAU;AAC7C,YAAM,kBAAkB,MAAM,KAAK,2BAA2BA,UAAS,IAAI;AAC3E,UAAI,iBAAiB;AACjB,cAAM,WAAW,IAAI,SAAS,eAAe;AAC7C,cAAM,WAAW,IAAI,cAAc,MAAM,KAAK,KAAK,UAAU,UAAU,cAAc,eAAe,OAAO,KAAK;AAChH,YAAI,KAAK,KAAK;AACV,gBAAM,KAAK,KAAK;AACpB,aAAK,cAAc;AACnB,cAAM,KAAK,KAAK,OAAO,QAAQ;AAC/B,aAAK,WAAW;AAChB,gBAAQ,cAAc,eAAe,KAAK,OAAO;AACjD,gBAAQ,YAAY,KAAK,OAAO;AAChC,aAAK,oBAAoB,aAAa;AAAA,MAC1C,WACS,KAAK,mCAAmC,aAAa,GAAG;AAC7D,aAAK,+BAA+B,aAAa;AAAA,MACrD;AAAA,IACJ;AAAA,IACA,MAAM,MAAM,KAAK;AACb,UAAI;AACJ,YAAM,UAAU,IAAI,aAAa,MAAM,YAAY,KAAK,KAAK,IAAI,gBAAgB,GAAG,KAAK,OAAO;AAChG,OAAC,KAAK,KAAK,yBAAyB,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO;AAC/E,WAAK,sBAAsB;AAC3B,aAAO,IAAI,QAAQ,CAAC5B,aAAY;AAC5B,aAAK,sBAAsB,MAAM;AAC7B,eAAK,sBAAsB,MAAM;AAAA,UAAE;AACnC,eAAK,sBAAsB;AAC3B,UAAAA,SAAQ;AAAA,QACZ;AACA,gBAAQ,QAAQ;AAAA,MACpB,CAAC;AAAA,IACL;AAAA,IACA,cAAc,SAAS,KAAK,WAAW;AACnC,YAAM,QAAQ,KAAK,iBAAiB,SAAS,SAAS;AACtD,YAAM,SAAS,kCAAkC,OAAO,SAAS,SAAS;AAC1E,WAAK,6BAA6B,SAAS,MAAM;AAC7C,cAAM,MAAM;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,kCAAkC,OAAO,SAAS,WAAW;AACzD,WAAK,SAAS,eAAe,WAAW,SAAS,KAAK;AACtD,UAAI,KAAK,QAAQ;AACb,cAAM,eAAe,aAAa,YAAY,KAAK,EAAE,MAAM;AAC3D,cAAM,EAAE,oBAAoB,IAAI,MAAM;AACtC,cAAM,SAAS,sBAAsB,CAAC,kBAAkB;AACpD,cAAI,MAAM,KAAK;AACX,kBAAM,EAAE,YAAY,WAAW,IAAI;AACnC,kBAAM,eAAe,MAAM,cAAc,gBAAgB;AACzD,kBAAM,WAAW,EAAE,YAAY,YAAY,aAAa;AACxD,kBAAM,UAAU;AAAA,cACZ;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,uBAAuB,KAAK;AAAA,cAC5B,UAAU;AAAA,YACd;AACA,gBAAI,KAAK;AACL,sBAAQ,SAAS,KAAK;AAC1B,oBAAQ,MAAM,MAAM,KAAK,OAAO;AAAA,UACpC;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,gBAAgB;AACZ,UAAI,KAAK,QAAQ;AACb,cAAM,SAAS,0BAA0B,KAAK,MAAM;AACpD,gBAAQ,QAAQ,OAAO,QAAQ,UAAU,KAAK,QAAQ,OAAO,EAAE,GAAG,KAAK,qBAAqB;AAAA,MAChG;AAAA,IACJ;AAAA,IACA,MAAM,+BAA+B,eAAe;AAChD,cAAQ,KAAK,iBAAiB,cAAc,UAAU,2BAA2B,KAAK,QAAQ,EAAE,gEAAgE;AAChK,YAAM,KAAK,cAAc,cAAc,QAAQ;AAAA,IACnD;AAAA,IACA,mCAAmC,eAAe;AAC9C,WAAK,QAAQ,aAAa,YAAY,EAAE;AACxC,YAAM,WAAW,cAAc;AAC/B,YAAMuB,SAAQ,OAAO,KAAK,UAAU,CAAC,MAAM;AACvC,YAAI,eAAe,UAAU;AACzB,eAAK,cAAc,GAAG;AAAA,QAC1B,OACK;AACD,kBAAQ,MAAM,KAAK,OAAO;AAAA,QAC9B;AAAA,MACJ;AACA,YAAM1B,SAAQ,SAAS,uBAAuB;AAAA,QAC1C,QAAQ,KAAK;AAAA,QACb,QAAQ,EAAE,UAAU,OAAA0B,OAAM;AAAA,QAC1B,YAAY;AAAA,MAChB,CAAC;AACD,aAAO,CAAC1B,OAAM;AAAA,IAClB;AAAA,IACA,+BAA+B,eAAe;AAC1C,WAAK,KAAK,QAAQ;AAClB,WAAK,uBAAuB,aAAa;AAAA,IAC7C;AAAA,IACA,uBAAuB,eAAe;AAClC,YAAMD,WAAU,iBAAiB,cAAc,UAAU,mDAAmD,KAAK,QAAQ,EAAE;AAC3H,YAAM,IAAI,uBAAuBA,QAAO;AAAA,IAC5C;AAAA,IACA,MAAM,cAAc,UAAU;AAC1B,YAAM,UAAU,IAAI,cAAc,QAAQ;AAC1C,YAAM,eAAe,MAAM,QAAQ;AACnC,YAAM,EAAE,UAAAG,WAAU,YAAY,WAAW,IAAI;AAC7C,aAAO,QAAQ,MAAMA,WAAU,EAAE,UAAU,EAAE,YAAY,YAAY,aAAa,EAAE,CAAC;AAAA,IACzF;AAAA,IACA,iBAAiB,SAAS,WAAW;AACjC,UAAI;AACJ,YAAMY,MAAK,aAAa,oBAAoB,WAAW,OAAO,KAAK,KAAK,QAAQ,aAAa,QAAQ;AACrG,cAAQ,KAAK,oBAAoBA,GAAE,OAAO,QAAQ,OAAO,SAAS,KAAK,KAAK;AAAA,IAChF;AAAA,IACA,MAAM,2BAA2B,WAAW;AACxC,UAAI;AACJ,YAAMA,MAAK,IAAI,OAAO,KAAK,EAAE;AAC7B,UAAI;AACA,kBAAU,gBAAgB,UAAU,cAAc,eAAeA,GAAE,EAAE,GAAG,KAAK,SAAS;AACtF,YAAI,SAAS;AACT,iBAAO;AAAA,QACX;AACA,kBAAU,gBAAgB,UAAU,cAAc,6BAA6BA,GAAE,GAAG,GAAG,KAAK,SAAS;AACrG,YAAI,SAAS;AACT,gBAAM,QAAQ;AACd,iBAAO,MAAM,KAAK,2BAA2B,OAAO;AAAA,QACxD;AAAA,MACJ,SACOJ,QAAO;AACV,gBAAQ,MAAMA,MAAK;AACnB,eAAO,IAAI,aAAa;AAAA,MAC5B;AACA,aAAO;AAAA,IACX;AAAA,IACA,sBAAsB,MAAM,WAAW;AACnC,YAAM,SAAS,UAAU,MAAM,SAAS;AACxC,aAAO,oBAAoB,UAAU,MAAM,GAAG,KAAK,YAAY;AAAA,IACnE;AAAA,IACA,0BAA0B,SAAS,WAAW;AAC1C,YAAMI,MAAK,aAAa,oBAAoB,WAAW,OAAO,KAAK,KAAK,QAAQ,aAAa,QAAQ;AACrG,UAAI,mBAAmB,mBAAmB,CAAC,KAAK,sBAAsB,SAAS,SAAS,GAAG;AACvF,eAAO;AAAA,MACX;AACA,UAAI,CAAC,KAAK,WAAWA,OAAM,QAAQ;AAC/B,eAAO;AAAA,MACX;AACA,UAAIA,KAAI;AACJ,cAAM,eAAe,oBAAoBA,GAAE;AAC3C,YAAI,cAAc;AACd,iBAAO,CAAC,aAAa;AAAA,QACzB;AAAA,MACJ;AACA,UAAI,CAAC,QAAQ,qBAAqB,OAAO,GAAG;AACxC,eAAO;AAAA,MACX;AACA,UAAI,aAAa,CAAC,QAAQ,qBAAqB,SAAS,GAAG;AACvD,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,KAAK;AACL,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,UAAU;AACV,aAAO,CAAC,KAAK,QAAQ;AAAA,IACzB;AAAA,IACA,IAAI,YAAY;AACZ,UAAI,KAAK,QAAQ,KAAK;AAClB,eAAO,KAAK,QAAQ;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,IAAI,UAAU,WAAW;AACrB,WAAK,2BAA2B,OAAO,MAAM;AACzC,aAAK,QAAQ,MAAM,cAAc,QAAQ,cAAc,SAAS,YAAY;AAAA,MAChF,CAAC;AAAA,IACL;AAAA,IACA,IAAI,eAAe;AACf,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IACA,IAAI,YAAY;AACZ,aAAO,KAAK,mBAAmB,UAAa,KAAK,oBAAoB,MAAM;AAAA,IAC/E;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK,QAAQ,aAAa,UAAU;AAAA,IAC/C;AAAA,IACA,IAAI,SAAS,OAAO;AAChB,WAAK,2BAA2B,YAAY,MAAM;AAC9C,YAAI,OAAO;AACP,eAAK,QAAQ,aAAa,YAAY,EAAE;AAAA,QAC5C,OACK;AACD,eAAK,QAAQ,gBAAgB,UAAU;AAAA,QAC3C;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,IACA,IAAI,WAAW;AACX,aAAO,KAAK,QAAQ,YAAY,KAAK;AAAA,IACzC;AAAA,IACA,IAAI,eAAe;AACf,UAAI;AACJ,YAAM,OAAO,KAAK,QAAQ,cAAc,cAAc,yBAAyB;AAC/E,YAAM,QAAQ,KAAK,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,aAAa,QAAQ,OAAO,SAAS,KAAK;AAC9G,aAAO,UAAU,IAAI;AAAA,IACzB;AAAA,IACA,oBAAoB,eAAe;AAC/B,aAAO,KAAK,kBAAkB,IAAI,aAAa;AAAA,IACnD;AAAA,IACA,2BAA2B,eAAeG,WAAU;AAChD,WAAK,kBAAkB,IAAI,aAAa;AACxC,MAAAA,UAAS;AACT,WAAK,kBAAkB,OAAO,aAAa;AAAA,IAC/C;AAAA,IACA,6BAA6B,SAASA,WAAU;AAC5C,WAAK,2BAA2B;AAChC,MAAAA,UAAS;AACT,aAAO,KAAK;AAAA,IAChB;AAAA,EACJ;AACA,WAAS,oBAAoBH,KAAI;AAC7B,QAAIA,OAAM,MAAM;AACZ,YAAM,UAAU,SAAS,eAAeA,GAAE;AAC1C,UAAI,mBAAmB,cAAc;AACjC,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,gBAAgB,SAAS,YAAY;AAC1C,QAAI,SAAS;AACT,YAAM,MAAM,QAAQ,aAAa,KAAK;AACtC,UAAI,OAAO,QAAQ,cAAc,QAAQ,aAAa,KAAK,UAAU,GAAG;AACpE,cAAM,IAAI,MAAM,6BAA6B,QAAQ,EAAE,qDAAqD;AAAA,MAChH;AACA,UAAI,QAAQ,kBAAkB,UAAU;AACpC,kBAAU,SAAS,WAAW,SAAS,IAAI;AAAA,MAC/C;AACA,UAAI,mBAAmB,cAAc;AACjC,gBAAQ,kBAAkB;AAC1B,gBAAQ,qBAAqB;AAC7B,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,gBAAN,MAAM,uBAAsB,YAAY;AAAA,IACpC,aAAa,cAAc,YAAY;AACnC,YAAM,WAAW,cAAc;AAAA,IACnC;AAAA,IACA,MAAM,oBAAoB;AACtB,UAAI;AACA,cAAM,KAAK,OAAO;AAAA,MACtB,SACOJ,QAAO;AACV,gBAAQ,MAAMA,MAAK;AAAA,MACvB,UACA;AACI,aAAK,WAAW;AAAA,MACpB;AAAA,IACJ;AAAA,IACA,MAAM,SAAS;AACX,UAAI;AACJ,cAAS,KAAK,KAAK,mBAAmB,QAAQ,OAAO,SAAS,KAAM,KAAK,iBAAiB,YAAY;AAClG,cAAMV,SAAQ,KAAK;AACnB,YAAI,KAAK,cAAcA,MAAK,GAAG;AAC3B,gBAAM,mBAAmB;AACzB,gBAAMA,OAAM,OAAO,OAAO,IAAI;AAAA,QAClC;AAAA,MACJ,GAAG;AAAA,IACP;AAAA,IACA,aAAa;AACT,UAAI;AACA,aAAK,OAAO;AAAA,MAChB,SACO,IAAI;AAAA,MAAE;AAAA,IACjB;AAAA,IACA,gCAAgC;AAC5B,WAAK,kBAAkB,QAAQ,CAACgC,OAAMA,GAAE,OAAO,CAAC;AAAA,IACpD;AAAA,IACA,IAAI,oBAAoB;AACpB,UAAI;AACJ,YAAM,mBAAmB,KAAK,eAAe,QAAQ,CAACJ,OAAM,CAAC,GAAGA,GAAE,QAAQ,CAAC,EAAE,OAAO,CAACI,OAAM,CAAC,CAACA,GAAE,EAAE;AACjG,YAAM,iBAAiB,CAAC,KAAM,KAAK,KAAK,qBAAqB,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,CAAC,CAAE,EAAE,OAAO,CAACA,OAAM,CAAC,CAACA,GAAE,EAAE,EAAE,IAAI,CAACA,OAAMA,GAAE,EAAE;AACxJ,aAAO,iBAAiB,OAAO,CAACA,OAAM,eAAe,SAASA,GAAE,EAAE,CAAC;AAAA,IACvE;AAAA,IACA,IAAI,gBAAgB;AAChB,UAAI,KAAK,QAAQ;AACb,cAAM,iBAAiB,cAAc,KAAK,MAAM;AAChD,YAAI,gBAAgB;AAChB,iBAAO;AAAA,QACX;AACA,aAAK,MAAM,gBAAgB;AAAA,MAC/B;AACA,WAAK,MAAM,6BAA6B;AAAA,IAC5C;AAAA,IACA,IAAI,iBAAiB;AACjB,UAAI,KAAK,QAAQ;AACb,eAAO,KAAK;AAAA,MAChB,WACS,KAAK,SAAS;AACnB,eAAO,KAAK;AAAA,MAChB,OACK;AACD,aAAK,MAAM,wCAAwC;AAAA,MACvD;AAAA,IACJ;AAAA,IACA,IAAI,kBAAkB;AAClB,aAAO,KAAK,gBAAgB,QAAQ,UAAU,IAAI;AAAA,IACtD;AAAA,IACA,IAAI,kBAAkB;AAClB,UAAI,KAAK,sBAAsB,MAAM;AACjC,cAAM,WAAW,KAAK,cAAc,cAAc,UAAU;AAC5D,aAAK,YAAY,QAAQ;AACzB,eAAO;AAAA,MACX,WACS,KAAK,6BAA6B,qBAAqB;AAC5D,eAAO,KAAK;AAAA,MAChB;AACA,WAAK,MAAM,kDAAkD;AAAA,IACjE;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,aAAa,QAAQ;AAAA,IACrC;AAAA,IACA,IAAI,SAAS;AACT,aAAO,KAAK,aAAa,QAAQ;AAAA,IACrC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,KAAK,aAAa,SAAS;AAAA,IACtC;AAAA,IACA,MAAMjC,UAAS;AACX,YAAM,IAAI,MAAM,GAAG,KAAK,WAAW,KAAKA,QAAO,EAAE;AAAA,IACrD;AAAA,IACA,IAAI,cAAc;AACd,UAAI,IAAI;AACR,cAAQ,OAAO,KAAK,KAAK,UAAU,MAAM,SAAS,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,OAAO,SAAS,KAAK;AAAA,IACnI;AAAA,IACA,IAAI,oBAAoB;AACpB,aAAO,IAAI,YAAY,8BAA8B;AAAA,QACjD,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ,EAAE,WAAW,MAAM,QAAQ,eAAc,cAAc;AAAA,MACnE,CAAC;AAAA,IACL;AAAA,IACA,IAAI,qBAAqB;AACrB,UAAI;AACJ,YAAM,WAAW,KAAK,KAAK,mBAAmB,QAAQ,OAAO,SAAS,SAAS,GAAG,eAAe,KAAK,MAAM;AAC5G,UAAI,YAAY,MAAM;AAClB,eAAO,CAAC,OAAO;AAAA,MACnB,OACK;AACD,eAAO,CAAC;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,IAAI,wBAAwB;AACxB,UAAI;AACJ,YAAMS,aAAY,KAAK,KAAK,mBAAmB,QAAQ,OAAO,SAAS,SAAS,GAAG,iBAAiB,KAAK,OAAO;AAChH,UAAIA,UAAS,WAAW,GAAG;AACvB,eAAO,MAAM,UAAU,MAAM,KAAKA,SAAQ;AAAA,MAC9C,OACK;AACD,eAAO,CAAC;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAM,sBAAN,cAAkC,YAAY;AAAA,IAC1C,cAAc;AACV,YAAM,GAAG,SAAS;AAClB,WAAK,eAAe;AAAA,IACxB;AAAA,IACA,oBAAoB;AAChB,WAAK,eAAe,KAAK,IAAI,MAAM,WAAW,IAAI,IAAI,UAAU,KAAK,GAAG,IAAI,IAAI,YAAY,KAAK,GAAG;AACpG,0BAAoB,KAAK,YAAY;AAAA,IACzC;AAAA,IACA,uBAAuB;AACnB,UAAI,KAAK,cAAc;AACnB,+BAAuB,KAAK,YAAY;AAAA,MAC5C;AAAA,IACJ;AAAA,IACA,IAAI,MAAM;AACN,aAAO,KAAK,aAAa,KAAK,KAAK;AAAA,IACvC;AAAA,EACJ;AAEA,eAAa,sBAAsB;AACnC,MAAI,eAAe,IAAI,aAAa,MAAM,QAAW;AACjD,mBAAe,OAAO,eAAe,YAAY;AAAA,EACrD;AACA,MAAI,eAAe,IAAI,cAAc,MAAM,QAAW;AAClD,mBAAe,OAAO,gBAAgB,aAAa;AAAA,EACvD;AACA,MAAI,eAAe,IAAI,qBAAqB,MAAM,QAAW;AACzD,mBAAe,OAAO,uBAAuB,mBAAmB;AAAA,EACpE;AAEA,GAAC,MAAM;AACH,QAAI,UAAU,SAAS;AACvB,QAAI,CAAC;AACD;AACJ,QAAI,QAAQ,aAAa,6BAA6B;AAClD;AACJ,cAAU,QAAQ;AAClB,WAAO,SAAS;AACZ,UAAI,WAAW,SAAS,MAAM;AAC1B,eAAO,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SASvB,QAAQ,SAAS;AAAA,MAClB;AACA,gBAAU,QAAQ;AAAA,IACtB;AAAA,EACJ,GAAG;AAEH,SAAO,QAAQqB;AACf,QAAM;;;AC93HN,MAAI;AAEJ,iBAAsB,cAAc;AAClC,WAAO,YAAY,YAAYI,gBAAe,EAAE,KAAK,WAAW,CAAC;AAAA,EACnE;AAEO,WAAS,YAAY,aAAa;AACvC,WAAO,WAAW;AAAA,EACpB;AAEA,iBAAsBA,kBAAiB;AACrC,UAAM,EAAE,gBAAAA,gBAAe,IAAI,MAAM;AACjC,WAAOA,gBAAe;AAAA,EACxB;AAEA,iBAAsB,YAAY,SAAS,OAAO;AAChD,UAAM,EAAE,cAAc,IAAI,MAAM,YAAY;AAC5C,WAAO,cAAc,OAAO,SAAS,KAAK;AAAA,EAC5C;;;ACCe,WAAR,KAAuB,KAAK;AAC/B,QAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,QAAI,eAAe,QAAQ,eAAe,OAAQ,QAAO;AACzD,QAAI,MAAM,QAAQ,GAAG,EAAG,QAAO,IAAI,IAAI,IAAI;AAC3C,WAAO,OAAO,KAAK,GAAG,EAAE,OAAO,SAAU,KAAK,KAAK;AAC/C,UAAI,QAAQ,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC,EAAE,QAAQ,aAAa,SAAUC,IAAGC,IAAG;AACjF,eAAO,MAAMA,GAAE,YAAY;AAAA,MAC/B,CAAC;AACD,UAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;AAC1B,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;;;AC1BA,MAAM,gCAAN,cAA4C,YAAY;AAAA,IACtD,MAAM,oBAAoB;AACxB,0BAAoB,IAAI;AACxB,WAAK,eAAe,MAAM,YAAY,KAAK,SAAS;AAAA,QAClD,UAAU,KAAK,qBAAqB,KAAK,IAAI;AAAA,QAC7C,WAAW,KAAK,sBAAsB,KAAK,IAAI;AAAA,QAC/C,cAAc,KAAK,yBAAyB,KAAK,IAAI;AAAA,MACvD,CAAC;AAAA,IACH;AAAA,IAEA,uBAAuB;AACrB,6BAAuB,IAAI;AAC3B,UAAI,KAAK,aAAc,MAAK,aAAa,YAAY;AAAA,IACvD;AAAA,IAEA,qBAAqB,MAAM;AACzB,YAAMC,SAAQ,IAAI,aAAa,WAAW,EAAE,KAAK,CAAC;AAClD,aAAO,KAAK,cAAcA,MAAK;AAAA,IACjC;AAAA,IAEA,wBAAwB;AACtB,WAAK,aAAa,aAAa,EAAE;AAAA,IACnC;AAAA,IAEA,2BAA2B;AACzB,WAAK,gBAAgB,WAAW;AAAA,IAClC;AAAA,IAEA,IAAI,UAAU;AACZ,YAAM,UAAU,KAAK,aAAa,SAAS;AAC3C,YAAM,qBAAqB,KAAK,aAAa,oBAAoB;AACjE,aAAO,EAAE,SAAS,oBAAoB,GAAG,KAAS,EAAE,GAAG,KAAK,QAAQ,CAAC,EAAE;AAAA,IACzE;AAAA,EACF;AAGA,MAAI,eAAe,IAAI,2BAA2B,MAAM,QAAW;AACjE,mBAAe,OAAO,6BAA6B,6BAA6B;AAAA,EAClF;;;AC1CO,WAAS,4BAA4BC,QAAO;AACjD,QAAIA,OAAM,kBAAkB,iBAAiB;AAC3C,YAAM,EAAE,QAAQ,MAAM,QAAQ,EAAE,aAAa,EAAE,IAAIA;AAEnD,WAAK,iBAAiB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,MAAM;AAC7F,cAAM,OAAO,WAAW,aAAa,IAAI,IAAI,aAAa,OAAO,IAAI,gBAAgB;AACrF,cAAM,SAAS,qBAAqB,WAAW,MAAM,IAAI;AAEzD,YAAI,CAAC,OAAO,KAAK,MAAM,GAAG;AACxB,cAAI,QAAQ,KAAK,MAAM,GAAG;AACxB,iBAAK,OAAO,SAAS;AAAA,UACvB,OAAO;AACL,iBAAK,IAAI,WAAW,MAAM;AAAA,UAC5B;AAEA,uBAAa,SAAS;AAAA,QACxB;AAAA,MACF,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,IACnB;AAAA,EACF;AAEA,WAAS,qBAAqB,WAAW,MAAM,MAAM;AACnD,UAAM,aAAa,oBAAoB,SAAS;AAChD,UAAM,iBAAiB,KAAK,IAAI,SAAS;AACzC,UAAM,SAAS,KAAK,aAAa,QAAQ,KAAK;AAE9C,QAAI,OAAO,cAAc,UAAU;AACjC,aAAO;AAAA,IACT,WAAW,OAAO,kBAAkB,UAAU;AAC5C,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,oBAAoB,WAAW;AACtC,QAAI,qBAAqB,qBAAqB,qBAAqB,kBAAkB;AACnF,UAAI,UAAU,aAAa,YAAY,GAAG;AACxC,eAAO,UAAU;AAAA,MACnB,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,WAAW,MAAM;AACxB,WAAO,gBAAgB,YAAY,gBAAgB;AAAA,EACrD;;;ACvCA,mBAAiB,8BAA8B,2BAA2B;;;ACN1E,MAAO,0CAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAE,kBAAkB,iBAAiB,aAAa,wBAAwB,+BAA+B,mBAAmB;AAAA,IAE7I,UAAU;AACR,WAAK,kBAAkB,IAAI,gBAAgB;AAE3C,eAAS,iBAAiB,sBAAsB,MAAM;AACpD,aAAK,kBAAkB;AAAA,MACzB,CAAC;AAAA,IACH;AAAA,IAEA,aAAa;AACX,WAAK,qBAAqB,MAAM;AAChC,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,uBAAuB,UAAU;AAC/B,YAAM,OAAO,CAAC;AACd,eAAS,QAAQ,CAAC,OAAO,QAAQ;AAC/B,YAAI,IAAI,SAAS,IAAI,GAAG;AACpB,gBAAM,CAAC,WAAWC,QAAO,aAAa,IAAI,IAAI,MAAM,OAAO,EAAE,OAAO,OAAO;AAC3E,cAAI,CAAC,KAAK,SAAS,GAAG;AAClB,iBAAK,SAAS,IAAI,CAAC;AAAA,UACvB;AACA,eAAK,SAAS,EAAEA,MAAK,IAAI,KAAK,SAAS,EAAEA,MAAK,KAAK,CAAC;AACpD,eAAK,SAAS,EAAEA,MAAK,EAAE,aAAa,IAAI;AAAA,QAE5C,OAAO;AACL,eAAK,GAAG,IAAI;AAAA,QACd;AAAA,MACF,CAAC;AACD,WAAK,sBAAsB,IAAI,KAAK,wBAAwB;AAC5D,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB,MAAM;AACzB,YAAM,cAAc,UAAQ,SAAS,OAAO,SAAS;AAErD,WAAK,eAAe,KAAK,aAAa,OAAO,CAAC,EAAE,IAAAC,KAAI,aAAa,UAAU,qBAAqB,MAAM;AACpG,cAAM,OAAO,OAAO,oBAAoB;AAExC,YAAI,CAAC,YAAY,IAAI,EAAG,QAAO;AAE/B,YAAIA,OAAM,gBAAgB,QAAW;AACnC,iBAAO,aAAa;AAAA,QACtB;AAEA,eAAO,aAAa;AAAA,MACtB,CAAC;AAED,aAAO;AAAA,IACT;AAAA,IAEA,wBAAwB,iBAAiB;AACvC,aAAQ,gBAAgB,cAAc,EAAE,SAAS,KAAK,CAAC,gBAAgB,cAAc,EAAE,KAAK,iBAAe,YAAY,YAAY,EAAE,MAAO,gBAAgB,iBAAiB,KAAK,UAAU,gBAAgB,qBAAqB,KAAK,UAAW,gBAAgB,iBAAiB,KAAK;AAAA,IACzR;AAAA,IAEA,4BAA4B;AAC1B,UAAI,oBAAoB,KAAK,gBAAgB;AAC7C,YAAM,cAAc,CAAC;AAErB,eAASD,SAAQ,GAAGA,SAAQ,mBAAmBA,UAAS;AACtD,cAAM,OAAO,KAAK,gBAAgBA,MAAK;AACvC,cAAM,WAAW,IAAI,SAAS,IAAI;AAClC,cAAM,OAAO,KAAK,uBAAuB,QAAQ;AACjD,cAAM,kBAAkB,KAAK,qBAAqB,IAAI;AACtD,YAAI,CAAC,KAAK,wBAAwB,eAAe,GAAG;AAClD,sBAAY,KAAKA,MAAK;AAAA,QACxB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,4BAA4BA,QAAO,cAAc,aAAa;AAE5D,UAAI,sBAAsB,KAAK,gBAAgB;AAE/C,UAAI,YAAY,SAASA,MAAK,GAAG;AAC/B,YAAG,sBAAsBA,SAAM,GAAG;AAChC,eAAK,4BAA4BA,SAAM,GAAG,cAAc,WAAW;AAAA,QACrE,OAAO;AACL,eAAK,qBAAqB,MAAM;AAChC,eAAK,aAAa;AAAA,QACpB;AAAA,MACF;AAEA,YAAM,OAAO,KAAK,gBAAgBA,MAAK;AACvC,UAAI,QAAQ,SAAS,kBAAkB,YAAY,EAAE,CAAC,EAAE;AACxD,YAAM,WAAW,IAAI,SAAS,IAAI;AAClC,YAAM,OAAO,KAAK,qBAAqB,KAAK,uBAAuB,QAAQ,CAAC;AAE5E,UAAI,KAAK,wBAAwB,IAAI,KAAK,KAAK,kBAAkB;AAC/D,aAAK,kBAAkB,sBAAsB,YAAY,QAAQ,YAAY;AAC7E,cAAM,KAAK,QAAQ;AAAA,UACjB,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,gBAAgB;AAAA,UAClB;AAAA,UACA,MAAM,KAAK,UAAU;AAAA,YACnB,oBAAoB;AAAA,UACtB,CAAC;AAAA,UACD,QAAQ,KAAK,gBAAgB;AAAA,QAC/B,CAAC,EAAE,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EACpC,KAAK,UAAQ;AACZ,mCAAM,oBAAoB,IAAI;AAC9B,cAAG,sBAAsBA,SAAM,GAAG;AAChC,iBAAK,4BAA4BA,SAAM,GAAG,eAAa,GAAG,WAAW;AAAA,UACvE,OAAO;AACL,iBAAK,qBAAqB,MAAM;AAChC,iBAAK,aAAa;AAAA,UACpB;AAAA,QACF,CAAC,EAAE,MAAM,CAAAE,WAAS;AAAA,QAClB,CAAC;AAAA,MACH;AACA,UAAG,KAAK,oBAAoB,OAAO;AACjC,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAAA,IAEA,SAAS;AACP,UAAI,KAAK,iBAAiB,UAAU,GAAG;AACrC,cAAM,yEAAyE;AAC/E;AAAA,MACF;AAEA,WAAK,mBAAmB;AACxB,WAAK,kBAAkB,KAAK;AAC5B,YAAM,cAAc,KAAK,0BAA0B;AACnD,WAAK,4BAA4B,GAAG,GAAG,WAAW;AAAA,IACpD;AAAA,IAEA,kBAAkB,qBAAoB,eAAe;AACnD,WAAK,2BAA2B,YAAY,GAAG,aAAa,IAAI,mBAAmB;AACnF,WAAK,kCAAkC,MAAM;AAC7C,WAAK,kCAAkC,QAAQ;AAC/C,WAAK,qBAAqB,KAAK;AAAA,IACjC;AAAA,IAEA,OAAO;AACL,YAAM,eAAe,QAAQ;AAAA;AAAA,4BAA4F;AACzH,UAAI,cAAc;AAChB,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF;AAAA,IAEA,eAAe;AACb,YAAM,OAAO,KAAK,gBAAgB,CAAC;AACnC,YAAM,WAAW,IAAI,SAAS,IAAI;AAClC,YAAM,OAAO,KAAK,qBAAqB,KAAK,uBAAuB,QAAQ,CAAC;AAC5E,YAAM,UAAU,yCAAyC,SAAS,KAAK,OAAO,CAAC,CAAC,0BAA0B,KAAK,UAAU,CAAC,UAAU,KAAK,OAAO,CAAC,oBAAoB,KAAK,wBAAwB,CAAC,6BAA6B,KAAK,0BAA0B,CAAC;AAEhQ,YAAM,kBAAkB,KAAK,gBAAgB,SAAS,IAAI,KAAK,gBAAgB,SAAS,KAAK,aAAa,CAAC,CAAC;AAC5G,YAAM,MAAM,GAAG,OAAO,GAAG,eAAe;AACxC,+BAAM,MAAM,KAAK,EAAE,OAAO,KAAK,gBAAgB,SAAS,IAAI,uBAAuB,KAAK,aAAa,EAAE,CAAC;AAAA,IAC1G;AAAA,IAEA,oBAAoB;AAClB,UAAI,KAAK,iBAAiB;AACxB,aAAK,gBAAgB,MAAM;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;;;ACrKA,MAAO,mCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAE,oBAAoB,gBAAgB,wBAAwB,mBAAmB;AAAA,IAClG,UAAU;AAAA,IACV;AAAA,IAEA,mBAAkB;AAChB,YAAM,eAAe,KAAK;AAC1B,UAAI,QAAM;AACV,iBAAW,MAAM,KAAK,yBAAyB;AAC7C,YAAI,EAAE,cAAc,oBAAoB,kBAAkB,IAAI,GAAG;AACjE,YAAI,gBAAgB,SAAS,GAAG,KAAK;AACrC,YAAI,sBAAsB,UAAU,qBAAmB,QAAQ;AAC7D,cAAI,iBAAiB,SAAS,YAAY,GAAG;AAC3C,iBAAK,mBAAmB,UAAU,IAAI,YAAY,cAAc,gBAAgB,mBAAmB;AACnG,iBAAK,2BAA2B,UAAU,OAAO,QAAQ;AACzD,iBAAK,wBAAwB,QAAQ;AACrC;AAAA,UACF,OAAO;AACL;AAAA,UACF;AAAA,QACF,OAAO;AACL,cAAI,gBAAe,CAAE,SAAS,YAAY,GAAG;AAC3C,iBAAK,mBAAmB,UAAU,OAAQ,gBAAgB;AAC1D,iBAAK,mBAAmB,UAAU,IAAI,kBAAkB;AACxD,iBAAK,wBAAwB,QAAQ;AACrC;AAAA,UACF;AAAA,QAEF;AAAA,MAEF;AACA,UAAI,SAAS,aAAa,QAAQ;AAChC,aAAK,mBAAmB,UAAU,OAAO,YAAY,cAAc,gBAAgB,mBAAmB;AACtG,aAAK,mBAAmB,UAAU,IAAI,eAAe;AACrD,aAAK,2BAA2B,UAAU,IAAI,QAAQ;AACtD,aAAK,wBAAwB,QAAQ;AAAA,MACvC;AAAA,IACF;AAAA,IAEA,mBAAkB;AAChB,UAAI,QAAM;AACV,YAAM,eAAe,KAAK;AAC1B,YAAM,qBAAqB,KAAK,uBAAuB,QAAQ;AAC/D,YAAM,oBAAoB,KAAK,uBAAuB,QAAQ;AAC9D,UAAI,sBAAsB,UAAU,qBAAmB,QAAQ;AAC7D,qBAAa,QAAQ,QAAM;AACzB,gBAAM,eAAe,GAAG,QAAQ;AAChC,cAAI,gBAAgB,SAAS,GAAG,KAAK;AACrC,cAAI,iBAAiB,SAAS,YAAY,GAAG;AAC3C,iBAAK,mBAAmB,UAAU,IAAI,YAAY,cAAc,gBAAgB,mBAAmB;AACnG,iBAAK,2BAA2B,UAAU,OAAO,QAAQ;AACzD,iBAAK,wBAAwB,QAAQ;AAAA,UACvC,OAAO;AACL;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MAEH,OAAO;AACL,YAAI,aAAa,MAAM,QAAM,SAAS,GAAG,KAAK,MAAM,CAAC,GAAG;AACtD,eAAK,mBAAmB,UAAU,IAAI,YAAY,cAAc,gBAAgB,gBAAgB;AAChG,eAAK,wBAAwB,QAAQ;AAAA,QACvC;AAAA,MACF;AAEA,UAAI,SAAS,aAAa,QAAO;AAC/B,aAAK,mBAAmB,UAAU,OAAO,YAAY,cAAc,gBAAgB,mBAAqB;AACtG,aAAK,2BAA2B,UAAU,IAAI,QAAQ;AACtD,aAAK,wBAAwB,QAAQ;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,aAAaC,QAAM;AACjB,YAAM,QAAQA,OAAM,OAAO;AAC3B,UAAI,UAAU,IAAI;AAChB,YAAI,WAAW,KAAK,IAAI,WAAWA,OAAM,OAAO,QAAQ,YAAY,GAAE;AACpE,eAAK,iBAAiB;AAAA,QACxB,OAAO;AACL,eAAK,iBAAiB;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;;;ACjFA,MAAO,8BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,mBAAmB,kBAAkB,iBAAiB,iBAAiB,sBAAsB,iBAAiB;AAAA,IAEhI,UAAU;AACR,WAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,aAAaC,QAAO;AAClB,YAAM,QAAQA,OAAM,OAAO;AAC3B,UAAI,UAAU,IAAI;AAChB,cAAM,UAAUA,OAAM,OAAO,QAAQ,eAAe,MAAM,GAAG,EAAE,CAAC;AAChE,cAAM,eAAe,SAASA,OAAM,OAAO,QAAQ,YAAY;AAC/D,YAAI,SAAS,KAAK,IAAI,cAAc;AAClC,eAAK,GAAG,OAAO,WAAW,EAAE,KAAK;AAAA,QACnC,OAAO;AACL,eAAK,GAAG,OAAO,WAAW,EAAE,KAAK;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,mBAAmB,gBAAgB,MAAM;AACvC,UAAI;AACJ,aAAK,sBAAsB,OAAO;AAElC,WAAK,mBAAmB;AACxB,WAAK,0BAA0B;AAAA,IACjC;AAAA,IAEA,mBAAmB,gBAAgB,MAAM;AACvC,UAAI;AACJ,aAAK,sBAAsB,SAAS;AAEpC,WAAK,mBAAmB;AACxB,WAAK,0BAA0B;AAAA,IACjC;AAAA,IAEA,kBAAkB,gBAAgB,MAAM;AACtC,UAAI,yBAAyB,SAAS,KAAK,oBAAoB,QAAQ,mBAAmB;AAC1F,UAAI,mBAAmB,KAAK,sBAAsB;AAElD,UAAI,qBAAqB,SAAS,KAAK,sBAAsB,KAAK;AAClE,UAAI,oBAAoB,SAAS,KAAK,qBAAqB,KAAK;AAEhE,UAAI,6BAA6B,SAAS,KAAK,sBAAsB,QAAQ,YAAY;AACzF,UAAI,4BAA4B,SAAS,KAAK,qBAAqB,QAAQ,YAAY;AACvF,UAAI,eAAc;AAChB,YAAK,oBAAoB,UAAU,oBAAoB,yBAAyB,oBAChF;AAAE,eAAK,qBAAqB,OAAO;AAAA,QAAE,WAC3B,oBAAoB,UAAW,oBAAoB,yBAAyB,6BAA4B,qBAAmB,6BAA6B;AAChK;AAAE,iBAAK,qBAAqB,OAAO;AAAA,UAAE;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,kBAAkB,gBAAgB,MAAM;AACtC,UAAI;AACJ,aAAK,qBAAqB,SAAS;AAEnC,WAAK,0BAA0B;AAAA,IACjC;AAAA,IAEA,qBAAqB;AACnB,UAAI,mBAAmB,SAAS,KAAK,sBAAsB,KAAK;AAChE,UAAI,QAAQ,WAAW,KAAK,oBAAoB,QAAQ,YAAY;AACpE,UAAK,mBAAmB;AACtB,aAAK,yBAAyB,YAAY,iBAAiB,gBAAgB,aAAa,KAAK,gBAAiB,mBAAmB,KAAM;AAAA;AAEzI,aAAK,yBAAyB,YAAY;AAAA,IAC5C;AAAA,IAEA,4BAA4B;AAC1B,YAAM,sBAAsB,KAAK,QAAQ,cAAc,yCAAyC;AAChG,UAAI,qBAAqB;AACvB,YAAI,yBAAyB,SAAS,KAAK,oBAAoB,QAAQ,mBAAmB;AAC1F,YAAI,mBAAmB,KAAK,sBAAsB;AAElD,YAAI,qBAAqB,SAAS,KAAK,sBAAsB,KAAK;AAClE,YAAI,oBAAoB,SAAS,KAAK,qBAAqB,KAAK;AAEhE,YAAI,6BAA6B,SAAS,KAAK,sBAAsB,QAAQ,YAAY;AACzF,YAAI,4BAA4B,SAAS,KAAK,qBAAqB,QAAQ,YAAY;AAEvF,YAAI,oBAAoB,QAAQ;AAC9B,cAAI,yBAAyB,sBAAsB,mBAAkB;AACnE,iBAAK,qBAAqB,UAAU,OAAO,eAAe,UAAU;AACpE,iBAAK,qBAAqB,UAAU,IAAI,eAAe;AAAA,UACzD,OAAO;AACL,iBAAK,qBAAqB,UAAU,IAAI,eAAe,UAAU;AACjE,iBAAK,qBAAqB,UAAU,OAAO,eAAe;AAAA,UAC5D;AAAA,QACF,OAAO;AACH,cAAI,qBAAqB,yBAAyB,6BAA4B,qBAAmB,6BAA6B;AAC5H,iBAAK,qBAAqB,UAAU,OAAO,eAAe,UAAU;AACpE,iBAAK,qBAAqB,UAAU,IAAI,eAAe;AAAA,UACzD,OAAO;AACL,iBAAK,qBAAqB,UAAU,IAAI,eAAe,UAAU;AACjE,iBAAK,qBAAqB,UAAU,OAAO,eAAe;AAAA,UAC5D;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;;;ACrGA,MAAO,4CAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,eAAe,SAAS;AAAA,IAG1C,SAASC,QAAO;AACd,WAAK,SAAS,KAAK;AAEnB,YAAM,cAAc,SAAS,KAAK,cAAc,QAAQ,OAAO;AAE/D,YAAM,eAAe,KAAK,OAAO,QAAQA,OAAM,MAAM;AACrD,UAAIA,OAAM,QAAQ,aAAaA,OAAM,QAAQ,aAAa;AACxD,QAAAA,OAAM,eAAe;AACrB,YAAI,YAAY;AAEhB,YAAIA,OAAM,QAAQ,aAAa,eAAe,GAAG;AAC/C,uBAAa;AAAA,QACf,WAAWA,OAAM,QAAQ,eAAe,eAAe,KAAK,OAAO,SAAS,GAAG;AAC7E,uBAAa;AAAA,QACf;AACA,aAAK,OAAO,SAAS,GAAG,MAAM;AAAA,MAChC;AAAA,IACF;AAAA,EACF;;;ACtBA,MAAO,gDAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,OAAO;AAAA,IAEzB,UAAU;AACR,WAAK,sBAAsB,KAAK,oBAAoB,KAAK,IAAI;AAC7D,eAAS,iBAAiB,SAAS,KAAK,mBAAmB;AAAA,IAC7D;AAAA,IAEA,aAAa;AACX,eAAS,oBAAoB,SAAS,KAAK,mBAAmB;AAAA,IAChE;AAAA,IAEA,SAAS;AACP,WAAK,YAAY,UAAU,OAAO,QAAQ;AAAA,IAC5C;AAAA,IAEA,oBAAoBC,QAAO;AACzB,UAAI,CAAC,KAAK,QAAQ,SAASA,OAAM,MAAM,GAAG;AACxC,aAAK,YAAY,UAAU,IAAI,QAAQ;AAAA,MACzC;AAAA,IACF;AAAA,EACF;;;ACrBA,MAAO,iDAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,eAAe,4BAA4B,yBAAyB,yBAAyB,aAAa;AAAA,IAC5H,UAAU;AAAA,IACV;AAAA,IAEA,SAAQ;AACN,UAAG,KAAK,sBAAqB;AAC3B,aAAK,kBAAkB,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,IAEA,QAAO;AACN,UAAG,KAAK,gCAA+B;AACtC,aAAK,+BAA+B,YAAY;AAChD,cAAM,yBAAyB,KAAK;AACpC,YAAG,KAAK,mCAAkC;AACxC,eAAK,+BAA+B,YAAY,uBAAuB,UAAU,IAAI,CAAC;AAAA,QACxF;AAAA,MACD;AAAA,IACD;AAAA,IAEA,QAAQC,QAAM;AACZ,UAAG,KAAK,gCAA+B;AACrC,aAAK,kBAAkB,YAAY;AACnC,cAAM,wBAAwB,KAAK;AACnC,YAAG,KAAK,sBAAqB;AAC3B,eAAK,kBAAkB,YAAY,sBAAsB,UAAU,IAAI,CAAC;AACxE,UAAAA,OAAM,cAAc,QAAQ,cAAc,EAAE,OAAO;AACnD,gCAAsB,UAAU,IAAI,QAAQ;AAAA,QAC9C;AAAA,MACD;AAAA,IACH;AAAA,IAEA,aAAaA,QAAM;AACjB,MAAAA,OAAM,cAAc,QAAQA,OAAM,cAAc,aAAa,EAAE,aAAa,YAAW,EAAE;AAAA,IAC3F;AAAA,EACF;;;ACpCA,MAAO,qCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,aAAa,WAAW,aAAa,YAAY;AAAA,IAEnE,WAAWC,QAAO;AAEhB,YAAM,YAAY,IAAI,KAAK,KAAK,gBAAgB,KAAK;AACrD,gBAAU,SAAS,GAAG,GAAG,GAAG,CAAC;AAE7B,YAAM,UAAU,IAAI,KAAK,KAAK,cAAc,KAAK;AACjD,cAAQ,SAAS,GAAG,GAAG,GAAG,CAAC;AAE3B,UAAI,YAAYA,OAAM,OAAO,QAAQ;AACrC,WAAK,kBAAkB,WAAW,SAAS,SAAS;AAAA,IACtD;AAAA,IAEA,kBAAkB,WAAW,SAAS,WAAW;AAC/C,UAAI,YAAY,SAAS;AACvB,aAAK,cAAc,UAAU,IAAI,gBAAgB;AACjD,aAAK,cAAc;AAAA,MACrB,OAAO;AACL,aAAK,aAAa;AAClB,aAAK,cAAc,UAAU,OAAO,gBAAgB;AACpD,aAAK,yBAAyB,WAAW,SAAS;AAAA,MACpD;AAAA,IACF;AAAA,IACA,eAAe;AACb,WAAK,gBAAgB,gBAAgB,UAAU;AAAA,IACjD;AAAA,IAEA,gBAAgB;AACd,WAAK,gBAAgB,aAAa,YAAY,UAAU;AAAA,IAC1D;AAAA,IAEA,yBAAyB,WAAW,WAAW;AAC7C,UAAI,cAAc,aAAa;AAC7B,kBAAU,QAAQ,UAAU,QAAQ,IAAI,CAAC;AACzC,aAAK,cAAc,aAAa,OAAO,UAAU,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,MAC9E;AAAA,IACF;AAAA,IAEA,uBAAuBA,QAAO;AAC5B,MAAAA,OAAM,eAAe;AACrB,YAAM,OAAOA,OAAM,cAAc;AACjC,YAAM,QAAQ,SAAS,kBAAkB,YAAY,EAAE,CAAC,EAAE;AAC1D,YAAM,OAAO;AAAA,QACX,WAAW,KAAK,gBAAgB;AAAA,QAChC,SAAS,KAAK,cAAc;AAAA,QAC5B,YAAY,KAAK,iBAAiB,SAAS,KAAK,iBAAiB,QAAQ;AAAA,MAC3E;AAEA,UAAI,OAAO,OAAO,IAAI,EAAE,KAAK,WAAS,UAAU,EAAE,GAAG;AACnD,cAAM,4BAA4B;AAClC;AAAA,MACF;AACA,YAAM,MAAM,kBAAkB,SAAS,KAAK,UAAU,CAAC;AACvD,YAAM,KAAK;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB,YAAY;AAAA,QACd,CAAC;AAAA,MACH,CAAC,EACA,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,cAAY;AAChB,YAAI,SAAS,kBAAkB,SAAS,GAAG;AACzC,cAAI,eAAe,QAAQ;AAAA,wCAAwD,SAAS,iBAAiB;AAAA,wCAA4C;AACzJ,cAAI,CAAC,cAAc;AACjB;AAAA,UACF;AAAA,QACF;AACA,cAAM,UAAU,WAAW,IAAI;AAAA,MACjC,CAAC,EACA,MAAM,CAAAC,WAAS;AACd,gBAAQ,MAAM,UAAUA,MAAK;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,EACF;;;AChFA,MAAO,sCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAY;AAAA,IAC9B,UAAU;AACR,WAAK,qBAAqB,QAAQ,QAAM;AACtC,YAAG,GAAG,SAAS;AACb,eAAK,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,GAAG,QAAQ,UAAU,gBAAgB,GAAG,QAAQ,gBAAgB,eAAe,GAAG,QAAQ,eAAe,YAAY,GAAG,QAAQ,WAAU,EAAE,EAAE,CAAC;AAAA,QACjM;AAAA,MACF,CAAC;AAED,WAAK,qBAAqB,QAAQ,QAAM;AACtC,YAAG,GAAG,SAAS;AACb,eAAK,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,GAAG,QAAQ,UAAU,gBAAgB,GAAG,QAAQ,gBAAgB,eAAe,GAAG,QAAQ,eAAe,YAAY,GAAG,QAAQ,WAAW,EAAE,EAAE,CAAC;AAAA,QAClM;AAAA,MACF,CAAC;AAED,WAAK,oBAAoB,QAAQ,QAAM;AACrC,YAAG,GAAG,SAAS;AACb,eAAK,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,GAAG,QAAQ,UAAU,gBAAgB,GAAG,QAAQ,gBAAgB,eAAe,GAAG,QAAQ,eAAe,YAAY,GAAG,QAAQ,WAAW,EAAE,EAAE,CAAC;AAAA,QACjM;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,UAAUC,QAAO;AACf,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,WAAK,0BAA0B,UAAUA,MAAK;AAC9C,WAAK,gCAAgC,QAAQ;AAC7C,WAAK,yBAAyB,QAAQ;AACtC,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,iBAAiB,UAAUA,MAAK;AACrC,WAAK,0BAA0B,UAAUA,MAAK;AAC9C,WAAK,uBAAuB,QAAQ;AACpC,WAAK,wBAAwB,UAAU,KAAK;AAC5C,WAAK,iBAAiB,UAAU,aAAa,WAAWA,OAAM,OAAO,QAAQ,aAAa,GAAGA,OAAM,OAAO,QAAQ,UAAU;AAC5H,WAAK,uCAAuC,QAAQ;AAAA,IACtD;AAAA,IAEA,UAAUA,QAAM;AACd,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,WAAK,0BAA0B,QAAQ;AACvC,WAAK,gCAAgC,QAAQ;AAC7C,WAAK,yBAAyB,QAAQ;AACtC,WAAK,iBAAiB,UAAUA,MAAK;AACrC,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,0BAA0B,UAAUA,MAAK;AAC9C,WAAK,uBAAuB,QAAQ;AACpC,WAAK,wBAAwB,UAAU,IAAI;AAC3C,WAAK,iBAAiB,UAAU,aAAa,WAAWA,OAAM,OAAO,QAAQ,aAAa,GAAGA,OAAM,OAAO,QAAQ,UAAU;AAC5H,WAAK,iBAAiB,UAAU,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa,GAAGA,OAAM,OAAO,QAAQ,YAAY,MAAM;AACvI,WAAK,uCAAuC,QAAQ;AAAA,IACtD;AAAA,IAEA,SAASA,QAAM;AACb,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,WAAK,yBAAyB,QAAQ;AACtC,WAAK,yBAAyB,QAAQ;AACtC,WAAK,gCAAgC,QAAQ;AAC7C,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,yBAAyB,UAAUA,MAAK;AAC7C,WAAK,uBAAuB,QAAQ;AACpC,WAAK,wBAAwB,UAAU,KAAK;AAC5C,WAAK,iBAAiB,UAAU,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa,GAAGA,OAAM,OAAO,QAAQ,UAAU;AAC/H,WAAK,kCAAkC,QAAQ;AAAA,IACjD;AAAA,IAEA,YAAYA,QAAM;AAChB,UAAI,oBAAoBA,OAAM,OAAO,QAAQ,kBAAkB,KAAK;AACpE,UAAI,YAAYA,OAAM,OAAO,QAAQ,UAAU,KAAK;AACpD,WAAK,4BAA4BA,QAAO,SAAS;AACjD,UAAI,kBAAkB,UAAS,GAAI;AACjC,YAAIA,OAAM,OAAO,WAAS,MAAM;AAC9B,eAAK,wBAAwB,WAAW,OAAO;AAAA,QACjD,OAAO;AACL,eAAK,wBAAwB,WAAW,MAAM;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,WAAWA,QAAM;AACf,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,UAAI,UAAU,KAAK;AACnB,UAAI,QAAQA,OAAM,OAAO;AACzB,WAAK,iBAAiB,SAAS,UAAU,KAAK;AAC9C,WAAK,4BAA4B,UAAU,KAAK;AAAA,IAClD;AAAA,IAEA,4BAA4B,UAAU,YAAY;AAChD,YAAM,aAAa;AAAA,QACjB,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACV;AAEA,iBAAW,QAAQ,QAAM;AACvB,YAAI,GAAG,QAAQ,YAAY,UAAU;AACnC,aAAG,UAAU,OAAO,UAAU,UAAU;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,OAAOA,QAAM;AACX,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,UAAI,UAAU,KAAK;AACnB,UAAI,QAAQA,OAAM,OAAO;AACzB,WAAK,iBAAiB,SAAS,UAAU,KAAK;AAAA,IAChD;AAAA,IAEA,QAAQA,QAAM;AACZ,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,UAAI,UAAU,KAAK;AACnB,UAAI,QAAQA,OAAM,OAAO;AACzB,WAAK,iBAAiB,SAAS,UAAU,KAAK;AAAA,IAChD;AAAA,IAEA,kCAAkC,UAAU;AAC1C,WAAK,iBAAiB,KAAK,sBAAsB,UAAU,KAAK;AAChE,WAAK,aAAa,KAAK,uBAAuB,QAAQ;AACtD,WAAK,4BAA4B,UAAU,KAAK;AAAA,IAClD;AAAA,IAEA,uCAAuC,UAAU;AAC/C,WAAK,8BAA8B,KAAK,uBAAuB,QAAQ;AACvE,YAAM,WAAW,KAAK,sBAAsB,KAAK,QAAM,GAAG,QAAQ,YAAY,QAAQ;AACtF,UAAI,UAAU;AACZ,aAAK,4BAA4B,UAAU,SAAS,OAAO;AAAA,MAC7D;AAAA,IACF;AAAA,IAEA,uBAAuB,UAAS;AAC9B,UAAI,mBAAoB,KAAK;AAC7B,uBAAiB,QAAQ,QAAM;AAC7B,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,UAAU,OAAO,QAAQ;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,uBAAuB,UAAS;AAC9B,UAAI,mBAAoB,KAAK;AAC7B,uBAAiB,QAAQ,QAAM;AAC7B,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,UAAU,IAAI,QAAQ;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgB,UAAU,gBAAgB,kBAAkB;AAC1D,UAAI,mBAAmB,KAAK;AAC5B,uBAAiB,QAAQ,QAAM;AAC7B,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,UAAU,OAAO,gBAAgB;AACpC,aAAG,UAAU,IAAI,cAAc;AAAA,QACjC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,0BAA0B,UAAUA,QAAO;AACzC,WAAK,sBAAsB,UAAU,OAAO;AAC5C,WAAK,uBAAuB,UAAU,OAAO;AAC7C,WAAK,gBAAgB,UAAU,YAAY,kBAAkB;AAC7D,WAAK,gCAAgC,UAAUA,MAAK;AAAA,IACtD;AAAA,IAEA,0BAA0B,UAAU;AAClC,WAAK,sBAAsB,UAAU,MAAM;AAC3C,WAAK,uBAAuB,UAAU,OAAO;AAC7C,WAAK,gBAAgB,UAAU,oBAAoB,UAAU;AAAA,IAC/D;AAAA,IAEA,yBAAyB,UAAU;AACjC,WAAK,sBAAsB,UAAU,OAAO;AAC5C,WAAK,uBAAuB,UAAU,MAAM;AAC5C,WAAK,gBAAgB,UAAU,YAAY,kBAAkB;AAC7D,WAAK,0BAA0B,QAAQ;AAAA,IACzC;AAAA,IAEA,sBAAsB,UAAU,OAAM;AACpC,UAAI,mBAAmB,KAAK;AAC5B,WAAK,iBAAiB,kBAAkB,UAAU,KAAK;AAAA,IACzD;AAAA,IAEA,uBAAuB,UAAU,OAAM;AACrC,UAAI,oBAAoB,KAAK;AAC7B,WAAK,iBAAiB,mBAAmB,UAAU,KAAK;AAAA,IAC1D;AAAA,IAEA,wBAAwB,UAAU,OAAM;AACtC,UAAI,oBAAoB,KAAK;AAC7B,WAAK,iBAAiB,mBAAmB,UAAU,KAAK;AAAA,IAC1D;AAAA,IAEA,gCAAgC,UAAUA,QAAO;AAC/C,YAAM,sBAAsB,KAAK;AACjC,WAAK,iBAAiB,qBAAqB,UAAU,CAAC;AAEtD,YAAM,oBAAoB,KAAK;AAC/B,WAAK,iBAAiB,mBAAmB,UAAU,CAAC;AAAA,IACtD;AAAA,IAEA,0BAA0B,UAAU;AAClC,YAAM,eAAe,KAAK;AAC1B,WAAK,iBAAiB,cAAc,UAAU,CAAC;AAE/C,YAAM,aAAa,KAAK;AACxB,WAAK,iBAAiB,YAAY,UAAU,CAAC;AAE7C,WAAK,iBAAiB,KAAK,yBAAyB,UAAU,CAAC;AAC/D,WAAK,oBAAoB,QAAQ;AAAA,IACnC;AAAA,IAEA,4BAA4BA,QAAO,WAAW;AAC5C,YAAM,0BAA0B,KAAK;AACrC,UAAI,QAAQA,OAAM,OAAO,UAAU,OAAM;AACzC,WAAK,iBAAiB,yBAAyB,WAAW,KAAK;AAAA,IACjE;AAAA,IAEA,0BAA0B,UAAUA,QAAO;AACzC,YAAM,iBAAiBA,OAAM,OAAO,QAAQ;AAC5C,YAAM,eAAe,KAAK;AAC1B,YAAM,aAAa,KAAK;AACxB,WAAK,mBAAmB,cAAc,QAAQ;AAC9C,UAAI,kBAAkB,QAAQ;AAC5B,aAAK,mBAAmB,YAAY,QAAQ;AAAA,MAC9C,OAAO;AACL,aAAK,iBAAiB,YAAY,UAAU,CAAC;AAAA,MAC/C;AACA,WAAK,oBAAoB,QAAQ;AAAA,IACnC;AAAA,IAEA,0BAA0B,UAAUA,QAAO;AACzC,YAAM,iBAAiBA,OAAM,OAAO,QAAQ;AAC5C,YAAM,eAAe,KAAK;AAC1B,YAAM,aAAa,KAAK;AAExB,YAAM,sBAAsB,KAAK;AACjC,YAAM,oBAAoB,KAAK;AAE/B,WAAK,mBAAmB,cAAc,QAAQ;AAC9C,WAAK,mBAAmB,qBAAqB,QAAQ;AACrD,UAAI,kBAAkB,QAAQ;AAC5B,aAAK,mBAAmB,YAAY,QAAQ;AAC5C,aAAK,mBAAmB,mBAAmB,QAAQ;AAAA,MACrD,OAAO;AACL,aAAK,iBAAiB,YAAY,UAAU,CAAC;AAC7C,aAAK,iBAAiB,mBAAmB,UAAU,CAAC;AAAA,MACtD;AACA,WAAK,oBAAoB,QAAQ;AAAA,IACnC;AAAA,IAEA,yBAAyB,UAAUA,QAAO;AACxC,YAAM,iBAAiBA,OAAM,OAAO,QAAQ;AAC5C,YAAM,sBAAsB,KAAK;AACjC,YAAM,oBAAoB,KAAK;AAE/B,WAAK,mBAAmB,qBAAqB,QAAQ;AACrD,UAAI,kBAAkB,QAAQ;AAC5B,aAAK,mBAAmB,mBAAmB,QAAQ;AAAA,MACrD,OAAO;AACL,aAAK,iBAAiB,mBAAmB,UAAU,CAAC;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,mBAAmB,SAAS,UAAU;AACpC,cAAQ,QAAQ,QAAM;AACpB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,QAAQ,GAAG,QAAQ;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,iBAAiB,QAAQ,UAAU,OAAO;AACxC,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,QAAQ;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,gCAAgC,UAAU;AACxC,YAAM,qCAAqC,KAAK;AAChD,WAAK,SAAS,oCAAoC,UAAU,QAAQ;AAAA,IACtE;AAAA,IAEA,yBAAyB,UAAU;AAClC,YAAM,6BAA6B,KAAK;AACxC,WAAK,SAAS,4BAA4B,UAAU,QAAQ;AAAA,IAC7D;AAAA,IAEA,gCAAgC,UAAU;AACxC,YAAM,qCAAqC,KAAK;AAChD,WAAK,YAAY,oCAAoC,UAAU,QAAQ;AAAA,IACzE;AAAA,IAEA,yBAAyB,UAAU;AACjC,YAAM,6BAA6B,KAAK;AACxC,WAAK,YAAY,4BAA4B,UAAU,QAAQ;AAAA,IACjE;AAAA,IAEA,iBAAiB,UAAU;AAC3B,YAAM,qBAAqB,KAAK;AAChC,WAAK,SAAS,oBAAoB,UAAU,QAAQ;AAAA,IACpD;AAAA,IAEA,iBAAiB,UAAU;AAC3B,YAAM,qBAAqB,KAAK;AAChC,WAAK,SAAS,oBAAoB,UAAU,QAAQ;AAAA,IACpD;AAAA,IAEA,iBAAiB,UAAU;AAC3B,YAAM,qBAAqB,KAAK;AAChC,WAAK,YAAY,oBAAoB,UAAU,QAAQ;AAAA,IACvD;AAAA,IAEA,iBAAiB,UAAU;AAC3B,YAAM,qBAAqB,KAAK;AAChC,WAAK,YAAY,oBAAoB,UAAU,QAAQ;AAAA,IACvD;AAAA,IAEA,SAAS,QAAQ,UAAU,gBAAgB;AACzC,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,UAAU,IAAI,cAAc;AAAA,QACjC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,YAAY,QAAQ,UAAU,kBAAkB;AAC9C,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,UAAU,OAAO,gBAAgB;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,aAAa,QAAQ,UAAU;AAC7B,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,aAAa,YAAY,UAAU;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,8BAA8B,QAAQ,UAAU,WAAW;AACzD,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,gBAAgB,UAAU;AAC7B,cAAG,GAAG;AACJ,iBAAK,iBAAiB,KAAK,sBAAsB,UAAU,IAAI;AAAA;AAEjE,iBAAK,iBAAiB,KAAK,sBAAsB,UAAU,KAAK;AAAA,QAClE;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,mBAAmBA,QAAO;AACxB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,WAAK,mBAAmB,QAAQ,QAAM;AACpC,YAAI,GAAG,QAAQ,YAAY,UAAU;AACnC,aAAG,SAAS,CAAC,GAAG;AAChB,cAAI,GAAG,QAAQ;AACb,eAAG,UAAU,IAAI,QAAQ;AACzB,iBAAK,UAAU,KAAK,gBAAgB,QAAQ;AAC5C,iBAAK,UAAU,KAAK,kBAAkB,QAAQ;AAAA,UAChD,OAAO;AACL,eAAG,UAAU,OAAO,QAAQ;AAC5B,iBAAK,UAAU,KAAK,gBAAgB,QAAQ;AAC5C,iBAAK,UAAU,KAAK,kBAAkB,QAAQ;AAAA,UAChD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,UAAU,QAAQ,UAAU;AAC1B,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,UAAU,IAAI,QAAQ;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,UAAU,QAAQ,UAAS;AACzB,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,UAAU,OAAO,QAAQ;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,SAASA,QAAM;AACb,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,eAAe,KAAK;AAC1B,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,WAAK,SAAS,cAAc,QAAQ;AACpC,WAAK,iBAAiB,UAAU,aAAa,eAAe,UAAU;AAAA,IACxE;AAAA,IAEA,SAASA,QAAM;AACb,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,eAAe,KAAK;AAC1B,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,WAAK,SAAS,cAAc,QAAQ;AACpC,WAAK,iBAAiB,UAAU,aAAa,eAAe,UAAU;AAAA,IACxE;AAAA,IAEA,gBAAgBA,QAAO;AACrB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,cAAc,KAAK;AACzB,WAAK,SAAS,aAAa,QAAQ;AAAA,IACrC;AAAA,IAEA,gBAAgBA,QAAO;AACrB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,cAAc,KAAK;AACzB,WAAK,SAAS,aAAa,QAAQ;AAAA,IACrC;AAAA,IAEA,iBAAiBA,QAAO;AACtB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,eAAe,KAAK;AAC1B,WAAK,SAAS,cAAc,QAAQ;AAAA,IACtC;AAAA,IAEA,iBAAiBA,QAAO;AACtB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,eAAe,KAAK;AAC1B,WAAK,SAAS,cAAc,QAAQ;AAAA,IACtC;AAAA,IAEA,OAAOA,QAAM;AACX,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,aAAa,KAAK;AACxB,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,WAAK,SAAS,YAAY,QAAQ;AAClC,WAAK,iBAAiB,UAAU,aAAa,eAAe,UAAU;AACtE,WAAK,oBAAoB,QAAQ;AAAA,IACnC;AAAA,IAEA,OAAOA,QAAM;AACX,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,aAAa,KAAK;AACxB,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,WAAK,SAAS,YAAY,QAAQ;AAClC,WAAK,iBAAiB,UAAU,aAAa,eAAe,UAAU;AACtE,WAAK,oBAAoB,QAAQ;AAAA,IACnC;AAAA,IAEA,eAAeA,QAAM;AACnB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,WAAK,SAAS,KAAK,yBAAyB,QAAQ;AACpD,WAAK,oBAAoB,QAAQ;AAAA,IACnC;AAAA,IAEA,eAAeA,QAAM;AACnB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,WAAK,SAAS,KAAK,yBAAyB,QAAQ;AACpD,WAAK,oBAAoB,QAAQ;AAAA,IACnC;AAAA,IAEA,iBAAiBA,QAAM;AACrB,WAAK,oBAAoBA,OAAM,OAAO,QAAQ,QAAQ;AAAA,IACxD;AAAA,IAEA,oBAAoB,UAAS;AAC3B,YAAM,WAAW,SAAS,KAAK,SAAS,KAAK,iBAAiB,QAAQ,CAAC,KAAK;AAC5E,UAAI,cAAc,SAAS,KAAK,SAAS,KAAK,yBAAyB,QAAQ,CAAC,KAAK;AAErF,UAAI,cAAc,UAAU;AAC1B,sBAAc;AACd,aAAK,iBAAiB,KAAK,yBAAyB,UAAU,WAAW;AAAA,MAC3E;AAEA,WAAK,oBAAoB,QAAQ,QAAM;AACrC,YAAI,GAAG,QAAQ,YAAY,UAAU;AACnC,aAAG,YAAY,uBAAuB,WAAW,WAAW;AAAA,QAC9D;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgBA,QAAM;AACpB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,sBAAsB,KAAK;AACjC,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,YAAM,YAAYA,OAAM,OAAO,QAAQ;AACvC,WAAK,SAAS,qBAAqB,QAAQ;AAC3C,WAAK,iBAAiB,UAAU,gBAAgB,eAAe,YAAY,SAAS;AAAA,IACtF;AAAA,IAEA,gBAAgBA,QAAM;AACpB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,sBAAsB,KAAK;AACjC,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,YAAM,YAAYA,OAAM,OAAO,QAAQ;AACvC,WAAK,SAAS,qBAAqB,QAAQ;AAC3C,WAAK,iBAAiB,UAAU,gBAAgB,eAAe,YAAY,SAAS;AAAA,IACtF;AAAA,IAEA,cAAcA,QAAM;AAClB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,oBAAoB,KAAK;AAC/B,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,YAAM,YAAYA,OAAM,OAAO,QAAQ;AACvC,WAAK,SAAS,mBAAmB,QAAQ;AACzC,WAAK,iBAAiB,UAAU,gBAAgB,eAAe,YAAY,SAAS;AAAA,IACtF;AAAA,IAEA,cAAcA,QAAM;AAClB,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,oBAAoB,KAAK;AAC/B,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,YAAM,YAAYA,OAAM,OAAO,QAAQ;AACvC,WAAK,SAAS,mBAAmB,QAAQ;AACzC,WAAK,iBAAiB,UAAU,gBAAgB,eAAe,YAAY,SAAS;AAAA,IACtF;AAAA,IAEA,SAAS,QAAQ,UAAS;AACxB,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,cAAG,GAAG,QAAQ,gBAAgB,QAAQ;AACpC,eAAG,SAAS,WAAW,GAAG,KAAK,IAAE,GAAG,QAAQ,CAAC;AAAA,UAC/C,OAAO;AACL,eAAG,QAAQ,SAAS,GAAG,KAAK,IAAE;AAAA,UAChC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,SAAS,QAAQ,UAAS;AACxB,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,YAAY,SAAS,GAAG,KAAK,IAAE,GAAG;AAC1D,cAAG,GAAG,QAAQ,gBAAgB,QAAQ;AACpC,eAAG,SAAS,WAAW,GAAG,KAAK,IAAE,GAAG,QAAQ,CAAC;AAAA,UAC/C,OAAO;AACL,eAAG,QAAQ,SAAS,GAAG,KAAK,IAAE;AAAA,UAChC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,SAASA,QAAO;AACd,UAAI,aAAa,KAAK;AACtB,WAAK,sBAAsB,QAAQ,QAAM;AACvC,cAAM,WAAW,GAAG,QAAQ;AAC5B,YAAI,OAAO,CAAC;AACZ,mBAAW,QAAQ,SAAK;AACtB,cAAG,IAAI,QAAQ,YAAY,UAAU;AACnC,iBAAK,KAAK,GAAG;AAAA,UACf;AAAA,QACF,CAAC;AACD,YAAG,GAAG;AACJ,cAAI,KAAK,KAAK,aAAW,QAAQ,OAAO,KAAK,OAAO;AAClD,iBAAK,eAAe,QAAQ;AAC5B,YAAAA,OAAM,eAAe;AAAA,UACvB;AAAA;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,IAEA,eAAe,UAAU;AACvB,WAAK,sBAAsB,QAAQ,QAAI;AACrC,YAAI,GAAG,QAAQ,YAAY,UAAU;AACnC,aAAG,YAAY;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,UAAUA,QAAM;AACd,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,YAAM,aAAYA,OAAM,OAAO,QAAQ;AACvC,YAAM,YAAYA,OAAM,OAAO,QAAQ;AACvC,YAAM,cAAa,CAAC,SAAQ,UAAU,EAAE,SAASA,OAAM,cAAc,QAAQ,qBAAqB,IAAI,cAAc;AACpH,WAAK,iBAAiB,UAAU,aAAa,eAAe,YAAY,SAAS;AAAA,IACnF;AAAA,IAEA,iBAAiB,UAAU,aAAa,eAAe,YAAY,YAAY,SAAS;AACtF,YAAM,cAAe,gBAAgB;AACrC,YAAM,cAAc,cAAc,KAAK,eAAe,KAAK;AAC3D,YAAM,YAAY,cAAc,KAAK,kBAAkB,KAAK;AAC5D,YAAM,oBAAoB,cAAc,KAAK,wBAAwB,KAAK;AAC1E,YAAM,QAAQ,WAAW,KAAK,SAAS,aAAa,QAAQ,CAAC;AAC7D,YAAM,MAAM,WAAW,KAAK,SAAS,WAAW,QAAQ,CAAC;AACzD,WAAK,iBAAiB,mBAAmB,UAAU,OAAO,KAAK,eAAe,YAAY,SAAS;AAAA,IACrG;AAAA,IAEA,SAAS,SAAS,UAAU;AAC1B,YAAM,SAAS,QAAQ,KAAK,QAAM,GAAG,QAAQ,YAAY,QAAQ;AACjE,aAAO,SAAS,OAAO,QAAQ;AAAA,IACjC;AAAA,IAEA,iBAAiB,mBAAmB,UAAU,OAAO,KAAK,eAAe,YAAY,WAAW;AAC9F,cAAQ,MAAM,KAAK,IAAI,IAAI;AAC3B,YAAM,MAAM,GAAG,IAAI,IAAI;AACvB,wBAAkB,QAAQ,QAAM;AAC9B,YAAI,GAAG,QAAQ,YAAY,UAAU;AACnC,cAAG,aAAW,SAAQ;AACpB,gBAAG,cAAc,UAAU,gBAAgB,GAAE;AAC3C,iBAAG,YAAY,6BAAwB,QAAQ,GAAG,aAAQ,QAAQ,MAAM,gBAAc,GAAG,qBAAgB,QAAO,QAAM,gBAAc,OAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,YAC3J,OAAO;AACL,iBAAG,YAAY,6BAAwB,KAAK,MAAM,GAAG,eAAU,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAAA,YACxF;AAAA,UACF,OAAO;AACL,gBAAG,cAAc,UAAU,gBAAgB,GAAE;AAC3C,iBAAG,YAAY,6BAAwB,KAAK,aAAQ,QAAQ,gBAAc,GAAG,oBAAgB,QAAO,QAAM,gBAAc,KAAO,QAAQ,CAAC,CAAC;AAAA,YAC3I,OAAO;AACL,iBAAG,YAAY,8BAAyB,MAAM,QAAQ,CAAC,CAAC;AAAA,YAC1D;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,wBAAwB,UAAU,OAAM;AACtC,YAAM,iBAAiB,CAACC,cAAa;AACnC,QAAAA,UAAS,QAAQ,QAAM;AACrB,cAAI,GAAG,QAAQ,YAAY,UAAU;AACnC,eAAG,QAAQ,YAAY;AAAA,UACzB;AAAA,QACF,CAAC;AAAA,MACH;AAEA,OAAC,KAAK,mBAAmB,KAAK,qBAAqB,KAAK,sBAAsB,EAAE,QAAQ,cAAc;AAAA,IACxG;AAAA,EACF;;;ACzpBA,MAAO,4CAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,iBAAiB,gBAAgB,cAAc,cAAc;AAAA,IAE/E,UAAU;AACR,WAAK,qBAAqB,QAAQ,CAAC,WAAW,KAAK,eAAe,MAAM,CAAC;AAAA,IAC3E;AAAA,IAEA,6BAA6B,QAAQ;AACnC,WAAK,eAAe,MAAM;AAAA,IAC5B;AAAA,IAEA,YAAYC,QAAO;AACjB,WAAK,eAAeA,OAAM,aAAa;AAAA,IACzC;AAAA,IAEA,eAAe,QAAQ;AACrB,YAAMC,SAAQ,KAAK,qBAAqB,QAAQ,MAAM;AACtD,UAAIA,SAAQ,EAAG;AAEf,YAAM,iBAAiB,OAAO,QAAQ,OAAO,aAAa;AAC1D,YAAM,OAAO,gBAAgB,SAAS;AACtC,YAAM,UAAU,gBAAgB,SAAS;AAEzC,WAAK,oBAAoBA,MAAK,EAAE,cAAc,OAAO,OAAO,OAAO,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK;AACxF,WAAK,kBAAkBA,MAAK,EAAE,QAAQ,QAAQ;AAC9C,WAAK,oBAAoBA,MAAK,EAAE,QAAQ,WAAW;AAAA,IACrD;AAAA,EACF;;;AC3BA,MAAO,oDAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MAAc;AAAA,MAAW;AAAA,MAAkB;AAAA,MAC3C;AAAA,MAAa;AAAA,MAAS;AAAA,MAAc;AAAA,MAAgB;AAAA,MAAQ;AAAA,MAC5D;AAAA,MAAoB;AAAA,MAAe;AAAA,MACnC;AAAA,MAAc;AAAA,MAAY;AAAA,MAAc;AAAA,MAAgB;AAAA,MAAc;AAAA,MAAkB;AAAA,MAAY;AAAA,MAAc;AAAA,IACpH;AAAA,IAEA,UAAU;AACR,WAAK,eAAe;AACpB,WAAK,QAAQ;AACb,WAAK,YAAY;AACjB,WAAK,eAAe;AACpB,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,aAAa;AAAA,IACb;AAAA;AAAA,IAIA,SAASC,QAAO;AACd,MAAAA,QAAO,eAAe;AACtB,WAAK,iBAAiB,UAAU,OAAO,kBAAkB;AACzD,WAAK,iBAAiB,UAAU,IAAI,eAAe;AACnD,WAAK,qBAAqB,UAAU,OAAO,QAAQ;AACnD,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA,IAEA,UAAUA,QAAO;AACf,MAAAA,QAAO,eAAe;AACtB,WAAK,iBAAiB,UAAU,IAAI,kBAAkB;AACtD,WAAK,iBAAiB,UAAU,OAAO,eAAe;AACtD,WAAK,qBAAqB,UAAU,IAAI,QAAQ;AAChD,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA;AAAA,IAIA,WAAWA,QAAO;AAChB,MAAAA,OAAM,eAAe;AAErB,YAAM,SAASA,OAAM;AACrB,YAAM,OAAO,OAAO,QAAQ,2BAA2B;AACvD,YAAM,UAAU,KAAK,YAAY,IAAI;AAErC,UAAI,CAAC,QAAS;AAEd,UAAI,CAAC,QAAQ,WAAW,KAAK,GAAG;AAC9B,eAAO,MAAM,8DAA8D;AAC3E,gBAAQ,eAAe,MAAM;AAC7B;AAAA,MACF;AAEA,WAAK,oBAAoB;AAAA,QACvB,WAAW,QAAQ;AAAA,QACnB,aAAa,QAAQ;AAAA,QACrB,OAAO,QAAQ;AAAA,QACf,YAAY,QAAQ;AAAA,QACpB,UAAU,KAAK,gBAAgB,QAAQ,WAAW,QAAQ,UAAU,IAAI;AAAA,MAC1E,CAAC;AAED,WAAK,cAAc,MAAM;AAAA,IAC3B;AAAA,IAEA,cAAcA,QAAO;AACnB,MAAAA,OAAM,eAAe;AAErB,YAAM,OAAOA,OAAM,cAAc,QAAQ,qDAAqD;AAC9F,YAAM,OAAO;AAEb,WAAK,QAAQ;AACb,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,iBAAiBA,QAAO;AACtB,MAAAA,OAAM,eAAe;AAErB,YAAM,UAAU,KAAK,YAAYA,OAAM,cAAc,QAAQ,2BAA2B,CAAC;AACzF,UAAI,CAAC,QAAS;AAEd,UAAI,CAAC,QAAQ,WAAW,KAAK,GAAG;AAC9B,eAAO,MAAM,4DAA4D;AACzE,gBAAQ,eAAe,MAAM;AAC7B;AAAA,MACF;AAEA,WAAK,oBAAoB;AAAA,QACvB,WAAW,QAAQ;AAAA,QACnB,aAAa,QAAQ;AAAA,QACrB,OAAO,QAAQ;AAAA,QACf,YAAY,QAAQ;AAAA,QACpB,UAAU,KAAK,gBAAgB,QAAQ,WAAW,QAAQ,UAAU,IAAI;AAAA,MAC1E,CAAC;AAAA,IACH;AAAA,IAEA,iBAAiBA,QAAO;AACtB,MAAAA,OAAM,eAAe;AAErB,YAAM,UAAU,KAAK,YAAYA,OAAM,cAAc,QAAQ,2BAA2B,CAAC;AACzF,UAAI,CAAC,QAAS;AAEd,UAAI,CAAC,QAAQ,WAAW,KAAK,GAAG;AAC9B,eAAO,MAAM,4DAA4D;AACzE,gBAAQ,eAAe,MAAM;AAC7B;AAAA,MACF;AAEA,WAAK,oBAAoB;AAAA,QACvB,WAAW,QAAQ;AAAA,QACnB,aAAa,QAAQ;AAAA,QACrB,OAAO,QAAQ;AAAA,QACf,YAAY,QAAQ;AAAA,QACpB,UAAU,KAAK,gBAAgB,QAAQ,WAAW,QAAQ,UAAU,IAAI;AAAA,MAC1E,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgBA,QAAO;AACrB,YAAM,OAAOA,QAAO,eAAe,QAAQ,2BAA2B;AACtE,UAAI,CAAC,KAAM;AAEX,WAAK,cAAc,IAAI;AAAA,IACzB;AAAA;AAAA,IAIA,iBAAiB;AACf,YAAM,QAAQ,KAAK,YAAY;AAC/B,UAAI,eAAe;AAEnB,WAAK,mBAAmB,QAAQ,CAAC,SAAS;AACxC,cAAMC,WAAU,KAAK,cAAc,MAAM,KAAK,KAAK,KAAK,cAAc,IAAI;AAC1E,aAAK,UAAU,OAAO,UAAU,CAACA,QAAO;AAExC,YAAIA,SAAS,iBAAgB;AAAA,MAC/B,CAAC;AAED,UAAI,KAAK,wBAAwB;AAC/B,aAAK,oBAAoB,cAAc,GAAG,YAAY,OAAO,KAAK,mBAAmB,MAAM;AAAA,MAC7F;AAEA,UAAI,KAAK,2BAA2B;AAClC,aAAK,uBAAuB,UAAU,OAAO,UAAU,eAAe,CAAC;AAAA,MACzE;AAAA,IACF;AAAA,IAEA,cAAc;AACZ,UAAI,CAAC,KAAK,qBAAsB;AAEhC,WAAK,kBAAkB,QAAQ;AAC/B,WAAK,eAAe;AACpB,WAAK,kBAAkB,MAAM;AAAA,IAC/B;AAAA,IAEA,UAAUD,QAAO;AACf,MAAAA,OAAM,eAAe;AACrB,WAAK,eAAeA,OAAM,cAAc,QAAQ,eAAe;AAC/D,WAAK,oBAAoB;AACzB,WAAK,eAAe;AAAA,IACtB;AAAA;AAAA,IAIA,gBAAgBA,QAAO;AACrB,MAAAA,OAAM,eAAe;AAErB,UAAI,CAAC,KAAK,cAAc,GAAG;AACzB,eAAO,MAAM,yDAAyD;AACtE;AAAA,MACF;AAEA,WAAK,UAAU;AACf,WAAK,SAAS,CAAC;AAAA,IACjB;AAAA,IAEA,UAAUA,QAAO;AACf,MAAAA,QAAO,eAAe;AACtB,WAAK,SAAS,CAAC;AAAA,IACjB;AAAA,IAEA,UAAUA,QAAO;AACf,MAAAA,QAAO,eAAe;AAEtB,UAAI,CAAC,KAAK,cAAc,GAAG;AACzB,eAAO,MAAM,wBAAwB;AACrC;AAAA,MACF;AAEA,WAAK,SAAS,CAAC;AAAA,IACjB;AAAA;AAAA,IAIA,cAAc;AACZ,UAAI,QAAQ;AACZ,YAAM,eAAe,CAAC;AAEtB,WAAK,YAAY,QAAQ,CAAC,SAAS;AACjC,cAAM,gBAAgB,KAAK,cAAc,2BAA2B;AACpE,cAAM,aAAa,KAAK,cAAc,wBAAwB;AAC9D,cAAM,gBAAgB,KAAK,cAAc,8BAA8B;AACvE,cAAM,eAAe,KAAK,cAAc,4DAA4D;AACpG,cAAM,iBAAiB,SAAS,eAAe,SAAS,KAAK,EAAE;AAC/D,cAAM,WAAW,OAAO,MAAM,cAAc,IAAI,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAC9E,cAAM,QAAQ,OAAO,YAAY,SAAS,CAAC;AAC3C,cAAM,WAAW,WAAW;AAC5B,cAAM,YAAY,eAAe;AAEjC,sBAAc,QAAQ;AACtB,YAAI,aAAc,cAAa,cAAc,KAAK,eAAe,QAAQ;AACzE,iBAAS;AAET,YAAI,UAAW,cAAa,KAAK,IAAI,KAAK,SAAS,CAAC;AAAA,MACtD,CAAC;AAED,YAAM,YAAY,KAAK,YAAY;AAGnC,WAAK,aAAa,QAAQ,CAAC,WAAW;AACpC,eAAO,cAAc,OAAO,SAAS;AAAA,MACvC,CAAC;AAGD,UAAI,KAAK,mBAAmB;AAC1B,aAAK,eAAe,cAAc,OAAO,SAAS;AAElD,aAAK,eAAe,UAAU,OAAO,WAAW;AAChD,aAAK,KAAK,eAAe;AACzB,aAAK,eAAe,UAAU,IAAI,WAAW;AAC7C,mBAAW,MAAM,KAAK,eAAe,UAAU,OAAO,WAAW,GAAG,GAAG;AAAA,MACzE;AAGA,WAAK,aAAa,QAAQ,CAAC,WAAW;AACpC,eAAO,cAAc,KAAK,eAAe,KAAK;AAAA,MAChD,CAAC;AAGD,UAAI,KAAK,qBAAqB;AAC5B,aAAK,iBAAiB,UAAU,OAAO,UAAU,YAAY,CAAC;AAAA,MAChE;AAEA,UAAI,KAAK,qBAAqB;AAC5B,aAAK,iBAAiB,cAAc,OAAO,SAAS;AAAA,MACtD;AAEA,UAAI,KAAK,qBAAqB;AAC5B,aAAK,iBAAiB,cAAc,KAAK,eAAe,KAAK;AAAA,MAC/D;AAEA,WAAK,oBAAoB,YAAY;AACrC,WAAK,yBAAyB;AAE9B,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,UAAU;AACR,WAAK,YAAY,QAAQ,CAAC,MAAME,WAAU;AACxC,aAAK,iBAAiB,aAAa,EAAE,QAAQ,CAAC,UAAU;AACtD,gBAAM,OAAO,MAAM,KAAK,QAAQ,WAAW,IAAIA,MAAK,GAAG;AAAA,QACzD,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA;AAAA,IAIA,cAAc,EAAE,OAAAA,QAAO,OAAO,WAAW,aAAa,UAAU,WAAW,GAAG;AAC5E,YAAM,WAAW,CAAC,UAAU,wBAAwBA,MAAK,KAAK,KAAK;AACnE,YAAM,eAAe,KAAK,IAAI,OAAO,SAAS,UAAU,EAAE,KAAK,GAAG,CAAC;AACnE,YAAM,iBAAiB,KAAK,eAAe,KAAK;AAChD,YAAM,gBAAgB,KAAK,eAAe,eAAe,KAAK;AAC9D,YAAM,gBAAgB,KAAK,WAAW,SAAS;AAC/C,YAAM,kBAAkB,KAAK,WAAW,WAAW;AACnD,YAAM,iBAAiB,KAAK,WAAW,UAAU;AACjD,YAAM,oBAAoB;AAE1B,aAAO;AAAA,QACL;AAAA;AAAA;AAAA;AAAA,2BAIqB,aAAa;AAAA;AAAA;AAAA;AAAA,yEAIiC,eAAe;AAAA,kDACtC,cAAc;AAAA;AAAA,YAEpD,KAAK,0BAA0B,CAAC;AAAA;AAAA;AAAA,YAGhC,KAAK,qBAAqB;AAAA,UAC1B,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,OAAO;AAAA,UACP,KAAK;AAAA,UACL,MAAM,SAAS,aAAa;AAAA,UAC5B,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,QACT,CAAC,CAAC;AAAA,YACA,KAAK,qBAAqB;AAAA,UAC1B,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,OAAO;AAAA,UACP,KAAK;AAAA,UACL,MAAM,SAAS,UAAU;AAAA,UACzB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,QACT,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,gBAII,aAAa;AAAA;AAAA;AAAA;AAAA,UAInB,KAAK,kBAAkB,SAAS,YAAY,GAAG,aAAa,CAAC;AAAA,UAC7D,KAAK,kBAAkB,SAAS,OAAO,GAAG,KAAK,CAAC;AAAA,UAChD,KAAK,kBAAkB,SAAS,qBAAqB,GAAG,CAAC,CAAC;AAAA;AAAA;AAAA,MAGhE,EAAE,KAAK,EAAE;AAAA,IACX;AAAA,IAEA,eAAe,QAAQ;AACrB,aAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,CAAC,CAAC;AAAA,IACzC;AAAA,IAEA,qBAAqB,EAAE,QAAQ,SAAAC,UAAS,OAAO,KAAK,MAAM,MAAM,MAAM,MAAM,GAAG;AAC7E,YAAM,aAAa;AAAA,QACjB,SAAS,IAAI;AAAA,QACb,SAAS,KAAK,WAAW,IAAI,CAAC;AAAA,QAC9B,UAAU,KAAK,WAAW,KAAK,CAAC;AAAA,QAChC,UAAUA,QAAO;AAAA,QACjB,gBAAgB,MAAM;AAAA,MACxB;AAEA,UAAI,QAAQ,KAAM,YAAW,KAAK,QAAQ,GAAG,GAAG;AAChD,UAAI,SAAS,KAAM,YAAW,KAAK,SAAS,IAAI,GAAG;AAEnD,aAAO;AAAA;AAAA,qGAE0F,KAAK;AAAA;AAAA,YAE9F,WAAW,KAAK,cAAc,CAAC;AAAA;AAAA;AAAA;AAAA,IAIzC;AAAA,IAEA,kBAAkB,MAAM,OAAO;AAC7B,aAAO,8BAA8B,KAAK,WAAW,IAAI,CAAC,YAAY,KAAK,WAAW,KAAK,CAAC;AAAA,IAC9F;AAAA,IAEA,4BAA4B;AAC1B,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYT;AAAA,IAEA,WAAW,OAAO;AAChB,aAAO,OAAO,SAAS,EAAE,EAAE,QAAQ,YAAY,CAAC,SAAS;AACvD,cAAM,WAAW;AAAA,UACf,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP;AAEA,eAAO,SAAS,IAAI;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IAEA,cAAc;AACZ,cAAQ,KAAK,uBAAuB,KAAK,kBAAkB,QAAQ,IAAI,KAAK,EAAE,YAAY;AAAA,IAC5F;AAAA,IAEA,cAAc,MAAM,OAAO;AACzB,UAAI,CAAC,MAAO,QAAO;AAEnB,YAAM,iBAAiB;AAAA,QACrB,KAAK,QAAQ;AAAA,QACb,KAAK,kBAAkB,KAAK,QAAQ,YAAY;AAAA,QAChD,OAAO,KAAK,QAAQ,eAAe,EAAE,EAAE,QAAQ,KAAK,GAAG;AAAA,MACzD,EAAE,KAAK,GAAG;AAEV,aAAO,eAAe,SAAS,KAAK;AAAA,IACtC;AAAA,IAEA,cAAc,MAAM;AAClB,UAAI,KAAK,iBAAiB,MAAO,QAAO;AACxC,aAAO,KAAK,QAAQ,gBAAgB,KAAK;AAAA,IAC3C;AAAA,IAEA,sBAAsB;AACpB,UAAI,CAAC,KAAK,sBAAuB;AAEjC,WAAK,oBAAoB,QAAQ,CAAC,WAAW;AAC3C,cAAM,SAAS,OAAO,QAAQ,gBAAgB,KAAK;AACnD,eAAO,UAAU,OAAO,cAAc,MAAM;AAC5C,eAAO,UAAU,OAAO,kBAAkB,MAAM;AAChD,eAAO,UAAU,OAAO,cAAc,MAAM;AAC5C,eAAO,UAAU,OAAO,oBAAoB,MAAM;AAElD,eAAO,UAAU,OAAO,YAAY,CAAC,MAAM;AAC3C,eAAO,UAAU,OAAO,oBAAoB,CAAC,MAAM;AACnD,eAAO,UAAU,OAAO,kBAAkB,CAAC,MAAM;AACjD,eAAO,UAAU,OAAO,wBAAwB,CAAC,MAAM;AACvD,eAAO,UAAU,OAAO,sBAAsB,CAAC,MAAM;AAAA,MACvD,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB,OAAO;AACvB,YAAM,SAAS,OAAO,SAAS,CAAC;AAChC,aAAO,OAAO,MAAM,MAAM,IAAI,KAAK,GAAG,OAAO,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAM,MAAM,CAAC;AAAA,IAC/E;AAAA,IAEA,gBAAgB,MAAM;AACpB,UAAI,EAAE,gBAAgB,SAAS,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAG,QAAO;AAEpE,aAAO,IAAI,KAAK,eAAe,SAAS;AAAA,QACtC,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACR,CAAC,EAAE,OAAO,IAAI;AAAA,IAChB;AAAA,IAEA,oBAAoB,cAAc;AAChC,YAAM,aAAa,aAChB,OAAO,CAAC,SAAS,gBAAgB,QAAQ,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,EACtE,KAAK,CAACC,IAAGC,OAAMD,KAAIC,EAAC;AAEvB,YAAM,aAAa,WAAW,SAAS,IAAI,KAAK,gBAAgB,WAAW,CAAC,CAAC,IAAI;AACjF,YAAM,WAAW,WAAW,SAAS,IAAI,KAAK,gBAAgB,WAAW,WAAW,SAAS,CAAC,CAAC,IAAI;AAEnG,UAAI,KAAK,yBAAyB;AAChC,aAAK,sBAAsB,QAAQ,CAAC,WAAW;AAC7C,iBAAO,cAAc;AAAA,QACvB,CAAC;AAAA,MACH;AAEA,UAAI,KAAK,uBAAuB;AAC9B,aAAK,oBAAoB,QAAQ,CAAC,WAAW;AAC3C,iBAAO,cAAc;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,gBAAgB;AACd,aAAO,KAAK,YAAY,SAAS;AAAA,IACnC;AAAA,IAEA,cAAc,QAAQ;AACpB,WAAK,yBAAyB;AAAA,IAChC;AAAA,IAEA,SAAS,YAAY;AACnB,YAAM,YAAY,eAAe;AACjC,WAAK,iBAAiB,UAAU,OAAO,UAAU,CAAC,SAAS;AAC3D,WAAK,iBAAiB,UAAU,OAAO,UAAU,SAAS;AAG1D,UAAI,KAAK,kBAAkB;AACzB,aAAK,cAAc,UAAU,OAAO,UAAU,CAAC,SAAS;AAAA,MAC1D;AAEA,WAAK,eAAe,UAAU,OAAO,eAAe,CAAC,SAAS;AAC9D,WAAK,eAAe,UAAU,OAAO,YAAY,SAAS;AAC1D,WAAK,eAAe,UAAU,OAAO,eAAe,SAAS;AAC7D,WAAK,eAAe,UAAU,OAAO,YAAY,CAAC,SAAS;AAAA,IAC7D;AAAA,IAEA,YAAY;AACV,YAAM,eAAe,KAAK,cAAc;AAExC,WAAK,eAAe,UAAU,OAAO,cAAc,CAAC,YAAY;AAChE,WAAK,eAAe,UAAU,OAAO,sBAAsB,CAAC,YAAY;AACxE,WAAK,oBAAoB;AAEzB,UAAI,CAAC,gBAAgB,CAAC,KAAK,iBAAiB,UAAU,SAAS,QAAQ,GAAG;AACxE,aAAK,SAAS,CAAC;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,YAAY,MAAM;AAChB,UAAI,CAAC,KAAM,QAAO;AAElB,YAAM,gBAAgB,KAAK,cAAc,kEAAkE;AAE3G,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,OAAO,OAAO,KAAK,QAAQ,gBAAgB,CAAC;AAAA,QAC5C,WAAW,OAAO,KAAK,QAAQ,aAAa,EAAE;AAAA,QAC9C,aAAa,KAAK,QAAQ,sBAAsB,KAAK,QAAQ,eAAe;AAAA,QAC5E,YAAY,eAAe,SAAS;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,oBAAoB,EAAE,WAAW,aAAa,OAAO,YAAY,SAAS,GAAG;AAC3E,YAAM,qBAAqB,KAAK,IAAI,OAAO,SAAS,UAAU,EAAE,KAAK,GAAG,CAAC;AACzE,YAAM,eAAe,KAAK,aAAa,WAAW,UAAU;AAE5D,UAAI,sBAAsB,GAAG;AAC3B,sBAAc,OAAO;AACrB,aAAK,QAAQ;AACb,aAAK,YAAY;AACjB;AAAA,MACF;AAEA,UAAI,cAAc;AAChB,cAAM,gBAAgB,aAAa,cAAc,2BAA2B;AAC5E,sBAAc,QAAQ;AACtB,aAAK,YAAY;AACjB;AAAA,MACF;AAEA,YAAMH,SAAQ,KAAK,YAAY;AAC/B,WAAK,gBAAgB,mBAAmB,aAAa,KAAK,cAAc;AAAA,QACtE,OAAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MACF,CAAC,CAAC;AAEF,WAAK,QAAQ;AACb,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,aAAa,WAAW,YAAY;AAClC,aAAO,KAAK,YAAY;AAAA,QAAK,CAAC,SAC5B,KAAK,QAAQ,cAAc,OAAO,SAAS,KAC3C,KAAK,cAAc,8BAA8B,GAAG,UAAU;AAAA,MAChE;AAAA,IACF;AAAA,IAEA,gBAAgB,WAAW,YAAY;AACrC,YAAM,OAAO,KAAK,aAAa,WAAW,UAAU;AACpD,YAAM,gBAAgB,MAAM,cAAc,2BAA2B;AACrE,aAAO,KAAK,IAAI,OAAO,SAAS,eAAe,SAAS,KAAK,EAAE,KAAK,GAAG,CAAC;AAAA,IAC1E;AAAA,IAEA,2BAA2B;AACzB,WAAK,mBAAmB,QAAQ,CAAC,SAAS,KAAK,cAAc,IAAI,CAAC;AAAA,IACpE;AAAA,IAEA,cAAc,MAAM;AAClB,YAAM,UAAU,KAAK,YAAY,IAAI;AACrC,UAAI,CAAC,QAAS;AAEd,YAAM,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,gBAAgB,QAAQ,WAAW,QAAQ,UAAU,IAAI;AAC3G,YAAM,YAAY,KAAK,cAAc,wBAAwB;AAC7D,YAAM,mBAAmB,KAAK,cAAc,+BAA+B;AAC3E,YAAM,gBAAgB,KAAK,cAAc,2BAA2B;AACpE,YAAM,gBAAgB,KAAK,cAAc,wBAAwB;AAEjE,UAAI,eAAe;AACjB,sBAAc,cAAc,OAAO,QAAQ;AAAA,MAC7C;AAEA,UAAI,eAAe;AACjB,sBAAc,cAAc,WAAW,IAAI,GAAG,QAAQ,aAAa;AAAA,MACrE;AAEA,iBAAW,UAAU,OAAO,UAAU,WAAW,CAAC;AAClD,wBAAkB,UAAU,OAAO,UAAU,YAAY,CAAC;AAAA,IAC5D;AAAA,EACF;;;AC3jBA,WAASI,UAAS,KAAK;AACrB,WAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,iBAAiB,OAAO,IAAI,gBAAgB;AAAA,EAChG;AACA,WAASC,QAAO,QAAQ,KAAK;AAC3B,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAC;AAAA,IACZ;AACA,QAAI,QAAQ,QAAQ;AAClB,YAAM,CAAC;AAAA,IACT;AACA,WAAO,KAAK,GAAG,EAAE,QAAQ,SAAO;AAC9B,UAAI,OAAO,OAAO,GAAG,MAAM,YAAa,QAAO,GAAG,IAAI,IAAI,GAAG;AAAA,eAAWD,UAAS,IAAI,GAAG,CAAC,KAAKA,UAAS,OAAO,GAAG,CAAC,KAAK,OAAO,KAAK,IAAI,GAAG,CAAC,EAAE,SAAS,GAAG;AACvJ,QAAAC,QAAO,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC;AAAA,MAC9B;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAM,cAAc;AAAA,IAClB,MAAM,CAAC;AAAA,IACP,mBAAmB;AAAA,IAAC;AAAA,IACpB,sBAAsB;AAAA,IAAC;AAAA,IACvB,eAAe;AAAA,MACb,OAAO;AAAA,MAAC;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,IACA,gBAAgB;AACd,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB;AACjB,aAAO,CAAC;AAAA,IACV;AAAA,IACA,iBAAiB;AACf,aAAO;AAAA,IACT;AAAA,IACA,cAAc;AACZ,aAAO;AAAA,QACL,YAAY;AAAA,QAAC;AAAA,MACf;AAAA,IACF;AAAA,IACA,gBAAgB;AACd,aAAO;AAAA,QACL,UAAU,CAAC;AAAA,QACX,YAAY,CAAC;AAAA,QACb,OAAO,CAAC;AAAA,QACR,eAAe;AAAA,QAAC;AAAA,QAChB,uBAAuB;AACrB,iBAAO,CAAC;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAChB,aAAO,CAAC;AAAA,IACV;AAAA,IACA,aAAa;AACX,aAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAAA,EACF;AACA,WAAS,cAAc;AACrB,UAAM,MAAM,OAAO,aAAa,cAAc,WAAW,CAAC;AAC1D,IAAAA,QAAO,KAAK,WAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAM,YAAY;AAAA,IAChB,UAAU;AAAA,IACV,WAAW;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACP,eAAe;AAAA,MAAC;AAAA,MAChB,YAAY;AAAA,MAAC;AAAA,MACb,KAAK;AAAA,MAAC;AAAA,MACN,OAAO;AAAA,MAAC;AAAA,IACV;AAAA,IACA,aAAa,SAASC,eAAc;AAClC,aAAO;AAAA,IACT;AAAA,IACA,mBAAmB;AAAA,IAAC;AAAA,IACpB,sBAAsB;AAAA,IAAC;AAAA,IACvB,mBAAmB;AACjB,aAAO;AAAA,QACL,mBAAmB;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IAAC;AAAA,IACT,OAAO;AAAA,IAAC;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,aAAa;AAAA,IAAC;AAAA,IACd,eAAe;AAAA,IAAC;AAAA,IAChB,aAAa;AACX,aAAO,CAAC;AAAA,IACV;AAAA,IACA,sBAAsBC,WAAU;AAC9B,UAAI,OAAO,eAAe,aAAa;AACrC,QAAAA,UAAS;AACT,eAAO;AAAA,MACT;AACA,aAAO,WAAWA,WAAU,CAAC;AAAA,IAC/B;AAAA,IACA,qBAAqBC,KAAI;AACvB,UAAI,OAAO,eAAe,aAAa;AACrC;AAAA,MACF;AACA,mBAAaA,GAAE;AAAA,IACjB;AAAA,EACF;AACA,WAAS,YAAY;AACnB,UAAM,MAAM,OAAO,WAAW,cAAc,SAAS,CAAC;AACtD,IAAAH,QAAO,KAAK,SAAS;AACrB,WAAO;AAAA,EACT;;;AC5IA,WAAS,gBAAgBI,UAAS;AAChC,QAAIA,aAAY,QAAQ;AACtB,MAAAA,WAAU;AAAA,IACZ;AACA,WAAOA,SAAQ,KAAK,EAAE,MAAM,GAAG,EAAE,OAAO,CAAAC,OAAK,CAAC,CAACA,GAAE,KAAK,CAAC;AAAA,EACzD;AAEA,WAAS,YAAY,KAAK;AACxB,UAAM,SAAS;AACf,WAAO,KAAK,MAAM,EAAE,QAAQ,SAAO;AACjC,UAAI;AACF,eAAO,GAAG,IAAI;AAAA,MAChB,SAASC,IAAG;AAAA,MAEZ;AACA,UAAI;AACF,eAAO,OAAO,GAAG;AAAA,MACnB,SAASA,IAAG;AAAA,MAEZ;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAAS,SAASC,WAAU,OAAO;AACjC,QAAI,UAAU,QAAQ;AACpB,cAAQ;AAAA,IACV;AACA,WAAO,WAAWA,WAAU,KAAK;AAAA,EACnC;AACA,WAASC,OAAM;AACb,WAAO,KAAK,IAAI;AAAA,EAClB;AACA,WAASC,kBAAiB,IAAI;AAC5B,UAAMC,UAAS,UAAU;AACzB,QAAI;AACJ,QAAIA,QAAO,kBAAkB;AAC3B,cAAQA,QAAO,iBAAiB,IAAI,IAAI;AAAA,IAC1C;AACA,QAAI,CAAC,SAAS,GAAG,cAAc;AAC7B,cAAQ,GAAG;AAAA,IACb;AACA,QAAI,CAAC,OAAO;AACV,cAAQ,GAAG;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACA,WAAS,aAAa,IAAI,MAAM;AAC9B,QAAI,SAAS,QAAQ;AACnB,aAAO;AAAA,IACT;AACA,UAAMA,UAAS,UAAU;AACzB,QAAIC;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,WAAWF,kBAAiB,EAAE;AACpC,QAAIC,QAAO,iBAAiB;AAC1B,qBAAe,SAAS,aAAa,SAAS;AAC9C,UAAI,aAAa,MAAM,GAAG,EAAE,SAAS,GAAG;AACtC,uBAAe,aAAa,MAAM,IAAI,EAAE,IAAI,CAAAE,OAAKA,GAAE,QAAQ,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI;AAAA,MACjF;AAGA,wBAAkB,IAAIF,QAAO,gBAAgB,iBAAiB,SAAS,KAAK,YAAY;AAAA,IAC1F,OAAO;AACL,wBAAkB,SAAS,gBAAgB,SAAS,cAAc,SAAS,eAAe,SAAS,eAAe,SAAS,aAAa,SAAS,iBAAiB,WAAW,EAAE,QAAQ,cAAc,oBAAoB;AACzN,MAAAC,UAAS,gBAAgB,SAAS,EAAE,MAAM,GAAG;AAAA,IAC/C;AACA,QAAI,SAAS,KAAK;AAEhB,UAAID,QAAO,gBAAiB,gBAAe,gBAAgB;AAAA,eAElDC,QAAO,WAAW,GAAI,gBAAe,WAAWA,QAAO,EAAE,CAAC;AAAA,UAE9D,gBAAe,WAAWA,QAAO,CAAC,CAAC;AAAA,IAC1C;AACA,QAAI,SAAS,KAAK;AAEhB,UAAID,QAAO,gBAAiB,gBAAe,gBAAgB;AAAA,eAElDC,QAAO,WAAW,GAAI,gBAAe,WAAWA,QAAO,EAAE,CAAC;AAAA,UAE9D,gBAAe,WAAWA,QAAO,CAAC,CAAC;AAAA,IAC1C;AACA,WAAO,gBAAgB;AAAA,EACzB;AACA,WAASE,UAASC,IAAG;AACnB,WAAO,OAAOA,OAAM,YAAYA,OAAM,QAAQA,GAAE,eAAe,OAAO,UAAU,SAAS,KAAKA,EAAC,EAAE,MAAM,GAAG,EAAE,MAAM;AAAA,EACpH;AACA,WAAS,OAAO,MAAM;AAEpB,QAAI,OAAO,WAAW,eAAe,OAAO,OAAO,gBAAgB,aAAa;AAC9E,aAAO,gBAAgB;AAAA,IACzB;AACA,WAAO,SAAS,KAAK,aAAa,KAAK,KAAK,aAAa;AAAA,EAC3D;AACA,WAASC,UAAS;AAChB,UAAMC,MAAK,OAAO,UAAU,UAAU,IAAI,SAAY,UAAU,CAAC,CAAC;AAClE,UAAM,WAAW,CAAC,aAAa,eAAe,WAAW;AACzD,aAASC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK,GAAG;AAC5C,YAAM,aAAaA,KAAI,KAAK,UAAU,UAAUA,KAAI,SAAY,UAAUA,EAAC;AAC3E,UAAI,eAAe,UAAa,eAAe,QAAQ,CAAC,OAAO,UAAU,GAAG;AAC1E,cAAM,YAAY,OAAO,KAAK,OAAO,UAAU,CAAC,EAAE,OAAO,SAAO,SAAS,QAAQ,GAAG,IAAI,CAAC;AACzF,iBAAS,YAAY,GAAG,MAAM,UAAU,QAAQ,YAAY,KAAK,aAAa,GAAG;AAC/E,gBAAM,UAAU,UAAU,SAAS;AACnC,gBAAM,OAAO,OAAO,yBAAyB,YAAY,OAAO;AAChE,cAAI,SAAS,UAAa,KAAK,YAAY;AACzC,gBAAIJ,UAASG,IAAG,OAAO,CAAC,KAAKH,UAAS,WAAW,OAAO,CAAC,GAAG;AAC1D,kBAAI,WAAW,OAAO,EAAE,YAAY;AAClC,gBAAAG,IAAG,OAAO,IAAI,WAAW,OAAO;AAAA,cAClC,OAAO;AACL,gBAAAD,QAAOC,IAAG,OAAO,GAAG,WAAW,OAAO,CAAC;AAAA,cACzC;AAAA,YACF,WAAW,CAACH,UAASG,IAAG,OAAO,CAAC,KAAKH,UAAS,WAAW,OAAO,CAAC,GAAG;AAClE,cAAAG,IAAG,OAAO,IAAI,CAAC;AACf,kBAAI,WAAW,OAAO,EAAE,YAAY;AAClC,gBAAAA,IAAG,OAAO,IAAI,WAAW,OAAO;AAAA,cAClC,OAAO;AACL,gBAAAD,QAAOC,IAAG,OAAO,GAAG,WAAW,OAAO,CAAC;AAAA,cACzC;AAAA,YACF,OAAO;AACL,cAAAA,IAAG,OAAO,IAAI,WAAW,OAAO;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAOA;AAAA,EACT;AACA,WAAS,eAAe,IAAI,SAAS,UAAU;AAC7C,OAAG,MAAM,YAAY,SAAS,QAAQ;AAAA,EACxC;AACA,WAAS,qBAAqB,MAAM;AAClC,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAMN,UAAS,UAAU;AACzB,UAAM,gBAAgB,CAAC,OAAO;AAC9B,QAAI,YAAY;AAChB,QAAI;AACJ,UAAMQ,YAAW,OAAO,OAAO;AAC/B,WAAO,UAAU,MAAM,iBAAiB;AACxC,IAAAR,QAAO,qBAAqB,OAAO,cAAc;AACjD,UAAM,MAAM,iBAAiB,gBAAgB,SAAS;AACtD,UAAM,eAAe,CAAC,SAAS,WAAW;AACxC,aAAO,QAAQ,UAAU,WAAW,UAAU,QAAQ,UAAU,WAAW;AAAA,IAC7E;AACA,UAAM,UAAU,MAAM;AACpB,cAAO,oBAAI,KAAK,GAAE,QAAQ;AAC1B,UAAI,cAAc,MAAM;AACtB,oBAAY;AAAA,MACd;AACA,YAAM,WAAW,KAAK,IAAI,KAAK,KAAK,OAAO,aAAaQ,WAAU,CAAC,GAAG,CAAC;AACvE,YAAM,eAAe,MAAM,KAAK,IAAI,WAAW,KAAK,EAAE,IAAI;AAC1D,UAAI,kBAAkB,gBAAgB,gBAAgB,iBAAiB;AACvE,UAAI,aAAa,iBAAiB,cAAc,GAAG;AACjD,0BAAkB;AAAA,MACpB;AACA,aAAO,UAAU,SAAS;AAAA,QACxB,CAAC,IAAI,GAAG;AAAA,MACV,CAAC;AACD,UAAI,aAAa,iBAAiB,cAAc,GAAG;AACjD,eAAO,UAAU,MAAM,WAAW;AAClC,eAAO,UAAU,MAAM,iBAAiB;AACxC,mBAAW,MAAM;AACf,iBAAO,UAAU,MAAM,WAAW;AAClC,iBAAO,UAAU,SAAS;AAAA,YACxB,CAAC,IAAI,GAAG;AAAA,UACV,CAAC;AAAA,QACH,CAAC;AACD,QAAAR,QAAO,qBAAqB,OAAO,cAAc;AACjD;AAAA,MACF;AACA,aAAO,iBAAiBA,QAAO,sBAAsB,OAAO;AAAA,IAC9D;AACA,YAAQ;AAAA,EACV;AACA,WAAS,oBAAoB,SAAS;AACpC,WAAO,QAAQ,cAAc,yBAAyB,KAAK,QAAQ,cAAc,QAAQ,WAAW,cAAc,yBAAyB,KAAK;AAAA,EAClJ;AACA,WAAS,gBAAgB,SAAS,UAAU;AAC1C,QAAI,aAAa,QAAQ;AACvB,iBAAW;AAAA,IACb;AACA,UAAMA,UAAS,UAAU;AACzB,UAAM,WAAW,CAAC,GAAG,QAAQ,QAAQ;AACrC,QAAIA,QAAO,mBAAmB,mBAAmB,iBAAiB;AAChE,eAAS,KAAK,GAAG,QAAQ,iBAAiB,CAAC;AAAA,IAC7C;AACA,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,IACT;AACA,WAAO,SAAS,OAAO,QAAM,GAAG,QAAQ,QAAQ,CAAC;AAAA,EACnD;AACA,WAAS,qBAAqB,IAAI,MAAM;AAEtC,UAAM,gBAAgB,CAAC,IAAI;AAC3B,WAAO,cAAc,SAAS,GAAG;AAC/B,YAAM,iBAAiB,cAAc,MAAM;AAC3C,UAAI,OAAO,gBAAgB;AACzB,eAAO;AAAA,MACT;AACA,oBAAc,KAAK,GAAG,eAAe,UAAU,GAAI,eAAe,YAAY,YAAY,CAAC,GAAI,GAAI,eAAe,mBAAmB,KAAK,CAAC,CAAE;AAAA,IAC/I;AAAA,EACF;AACA,WAAS,iBAAiB,IAAI,QAAQ;AACpC,UAAMA,UAAS,UAAU;AACzB,QAAI,UAAU,OAAO,SAAS,EAAE;AAChC,QAAI,CAAC,WAAWA,QAAO,mBAAmB,kBAAkB,iBAAiB;AAC3E,YAAM,WAAW,CAAC,GAAG,OAAO,iBAAiB,CAAC;AAC9C,gBAAU,SAAS,SAAS,EAAE;AAC9B,UAAI,CAAC,SAAS;AACZ,kBAAU,qBAAqB,IAAI,MAAM;AAAA,MAC3C;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,YAAY,MAAM;AACzB,QAAI;AACF,cAAQ,KAAK,IAAI;AACjB;AAAA,IACF,SAAS,KAAK;AAAA,IAEd;AAAA,EACF;AACA,WAAS,cAAc,KAAKN,UAAS;AACnC,QAAIA,aAAY,QAAQ;AACtB,MAAAA,WAAU,CAAC;AAAA,IACb;AACA,UAAM,KAAK,SAAS,cAAc,GAAG;AACrC,OAAG,UAAU,IAAI,GAAI,MAAM,QAAQA,QAAO,IAAIA,WAAU,gBAAgBA,QAAO,CAAE;AACjF,WAAO;AAAA,EACT;AACA,WAAS,cAAc,IAAI;AACzB,UAAMM,UAAS,UAAU;AACzB,UAAMS,YAAW,YAAY;AAC7B,UAAM,MAAM,GAAG,sBAAsB;AACrC,UAAM,OAAOA,UAAS;AACtB,UAAM,YAAY,GAAG,aAAa,KAAK,aAAa;AACpD,UAAM,aAAa,GAAG,cAAc,KAAK,cAAc;AACvD,UAAM,YAAY,OAAOT,UAASA,QAAO,UAAU,GAAG;AACtD,UAAM,aAAa,OAAOA,UAASA,QAAO,UAAU,GAAG;AACvD,WAAO;AAAA,MACL,KAAK,IAAI,MAAM,YAAY;AAAA,MAC3B,MAAM,IAAI,OAAO,aAAa;AAAA,IAChC;AAAA,EACF;AACA,WAAS,eAAe,IAAI,UAAU;AACpC,UAAM,UAAU,CAAC;AACjB,WAAO,GAAG,wBAAwB;AAChC,YAAM,OAAO,GAAG;AAChB,UAAI,UAAU;AACZ,YAAI,KAAK,QAAQ,QAAQ,EAAG,SAAQ,KAAK,IAAI;AAAA,MAC/C,MAAO,SAAQ,KAAK,IAAI;AACxB,WAAK;AAAA,IACP;AACA,WAAO;AAAA,EACT;AACA,WAAS,eAAe,IAAI,UAAU;AACpC,UAAM,UAAU,CAAC;AACjB,WAAO,GAAG,oBAAoB;AAC5B,YAAM,OAAO,GAAG;AAChB,UAAI,UAAU;AACZ,YAAI,KAAK,QAAQ,QAAQ,EAAG,SAAQ,KAAK,IAAI;AAAA,MAC/C,MAAO,SAAQ,KAAK,IAAI;AACxB,WAAK;AAAA,IACP;AACA,WAAO;AAAA,EACT;AACA,WAAS,aAAa,IAAI,MAAM;AAC9B,UAAMA,UAAS,UAAU;AACzB,WAAOA,QAAO,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,IAAI;AAAA,EAChE;AACA,WAAS,aAAa,IAAI;AACxB,QAAI,QAAQ;AACZ,QAAIO;AACJ,QAAI,OAAO;AACT,MAAAA,KAAI;AAEJ,cAAQ,QAAQ,MAAM,qBAAqB,MAAM;AAC/C,YAAI,MAAM,aAAa,EAAG,CAAAA,MAAK;AAAA,MACjC;AACA,aAAOA;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAAS,eAAe,IAAI,UAAU;AACpC,UAAM,UAAU,CAAC;AACjB,QAAI,SAAS,GAAG;AAChB,WAAO,QAAQ;AACb,UAAI,UAAU;AACZ,YAAI,OAAO,QAAQ,QAAQ,EAAG,SAAQ,KAAK,MAAM;AAAA,MACnD,OAAO;AACL,gBAAQ,KAAK,MAAM;AAAA,MACrB;AACA,eAAS,OAAO;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AACA,WAAS,qBAAqB,IAAIV,WAAU;AAC1C,aAAS,aAAaD,IAAG;AACvB,UAAIA,GAAE,WAAW,GAAI;AACrB,MAAAC,UAAS,KAAK,IAAID,EAAC;AACnB,SAAG,oBAAoB,iBAAiB,YAAY;AAAA,IACtD;AACA,QAAIC,WAAU;AACZ,SAAG,iBAAiB,iBAAiB,YAAY;AAAA,IACnD;AAAA,EACF;AACA,WAAS,iBAAiB,IAAI,MAAM,gBAAgB;AAClD,UAAMG,UAAS,UAAU;AACzB,QAAI,gBAAgB;AAClB,aAAO,GAAG,SAAS,UAAU,gBAAgB,cAAc,IAAI,WAAWA,QAAO,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,SAAS,UAAU,iBAAiB,YAAY,CAAC,IAAI,WAAWA,QAAO,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,SAAS,UAAU,gBAAgB,eAAe,CAAC;AAAA,IACrS;AACA,WAAO,GAAG;AAAA,EACZ;AACA,WAAS,kBAAkB,IAAI;AAC7B,YAAQ,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,OAAO,CAAAJ,OAAK,CAAC,CAACA,EAAC;AAAA,EACxD;AACA,WAAS,aAAa,QAAQ;AAC5B,WAAO,CAAAc,OAAK;AACV,UAAI,KAAK,IAAIA,EAAC,IAAI,KAAK,OAAO,WAAW,OAAO,QAAQ,aAAa,KAAK,IAAIA,EAAC,IAAI,OAAO,GAAG;AAC3F,eAAOA,KAAI;AAAA,MACb;AACA,aAAOA;AAAA,IACT;AAAA,EACF;;;ACrUA,MAAI;AACJ,WAAS,cAAc;AACrB,UAAMC,UAAS,UAAU;AACzB,UAAMC,YAAW,YAAY;AAC7B,WAAO;AAAA,MACL,cAAcA,UAAS,mBAAmBA,UAAS,gBAAgB,SAAS,oBAAoBA,UAAS,gBAAgB;AAAA,MACzH,OAAO,CAAC,EAAE,kBAAkBD,WAAUA,QAAO,iBAAiBC,qBAAoBD,QAAO;AAAA,IAC3F;AAAA,EACF;AACA,WAAS,aAAa;AACpB,QAAI,CAAC,SAAS;AACZ,gBAAU,YAAY;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,WAAS,WAAW,OAAO;AACzB,QAAI;AAAA,MACF,WAAAE;AAAA,IACF,IAAI,UAAU,SAAS,CAAC,IAAI;AAC5B,UAAMC,WAAU,WAAW;AAC3B,UAAMH,UAAS,UAAU;AACzB,UAAM,WAAWA,QAAO,UAAU;AAClC,UAAM,KAAKE,cAAaF,QAAO,UAAU;AACzC,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,SAAS;AAAA,IACX;AACA,UAAM,cAAcA,QAAO,OAAO;AAClC,UAAM,eAAeA,QAAO,OAAO;AACnC,UAAM,UAAU,GAAG,MAAM,6BAA6B;AACtD,QAAI,OAAO,GAAG,MAAM,sBAAsB;AAC1C,UAAM,OAAO,GAAG,MAAM,yBAAyB;AAC/C,UAAM,SAAS,CAAC,QAAQ,GAAG,MAAM,4BAA4B;AAC7D,UAAM,UAAU,aAAa;AAC7B,QAAI,QAAQ,aAAa;AAGzB,UAAM,cAAc,CAAC,aAAa,aAAa,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAU;AACrK,QAAI,CAAC,QAAQ,SAASG,SAAQ,SAAS,YAAY,QAAQ,GAAG,WAAW,IAAI,YAAY,EAAE,KAAK,GAAG;AACjG,aAAO,GAAG,MAAM,qBAAqB;AACrC,UAAI,CAAC,KAAM,QAAO,CAAC,GAAG,GAAG,QAAQ;AACjC,cAAQ;AAAA,IACV;AAGA,QAAI,WAAW,CAAC,SAAS;AACvB,aAAO,KAAK;AACZ,aAAO,UAAU;AAAA,IACnB;AACA,QAAI,QAAQ,UAAU,MAAM;AAC1B,aAAO,KAAK;AACZ,aAAO,MAAM;AAAA,IACf;AAGA,WAAO;AAAA,EACT;AACA,WAAS,UAAUC,YAAW;AAC5B,QAAIA,eAAc,QAAQ;AACxB,MAAAA,aAAY,CAAC;AAAA,IACf;AACA,QAAI,CAAC,cAAc;AACjB,qBAAe,WAAWA,UAAS;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,WAAS,cAAc;AACrB,UAAMJ,UAAS,UAAU;AACzB,UAAM,SAAS,UAAU;AACzB,QAAI,qBAAqB;AACzB,aAAS,WAAW;AAClB,YAAM,KAAKA,QAAO,UAAU,UAAU,YAAY;AAClD,aAAO,GAAG,QAAQ,QAAQ,KAAK,KAAK,GAAG,QAAQ,QAAQ,IAAI,KAAK,GAAG,QAAQ,SAAS,IAAI;AAAA,IAC1F;AACA,QAAI,SAAS,GAAG;AACd,YAAM,KAAK,OAAOA,QAAO,UAAU,SAAS;AAC5C,UAAI,GAAG,SAAS,UAAU,GAAG;AAC3B,cAAM,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,SAAO,OAAO,GAAG,CAAC;AAC9F,6BAAqB,QAAQ,MAAM,UAAU,MAAM,QAAQ;AAAA,MAC7D;AAAA,IACF;AACA,UAAM,YAAY,+CAA+C,KAAKA,QAAO,UAAU,SAAS;AAChG,UAAM,kBAAkB,SAAS;AACjC,UAAM,YAAY,mBAAmB,aAAa,OAAO;AACzD,WAAO;AAAA,MACL,UAAU,sBAAsB;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,WAAS,aAAa;AACpB,QAAI,CAAC,SAAS;AACZ,gBAAU,YAAY;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAEA,WAAS,OAAO,MAAM;AACpB,QAAI;AAAA,MACF;AAAA,MACA,IAAAK;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAML,UAAS,UAAU;AACzB,QAAI,WAAW;AACf,QAAI,iBAAiB;AACrB,UAAM,gBAAgB,MAAM;AAC1B,UAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,YAAa;AACxD,WAAK,cAAc;AACnB,WAAK,QAAQ;AAAA,IACf;AACA,UAAM,iBAAiB,MAAM;AAC3B,UAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,YAAa;AACxD,iBAAW,IAAI,eAAe,aAAW;AACvC,yBAAiBA,QAAO,sBAAsB,MAAM;AAClD,gBAAM;AAAA,YACJ;AAAA,YACA;AAAA,UACF,IAAI;AACJ,cAAI,WAAW;AACf,cAAI,YAAY;AAChB,kBAAQ,QAAQ,WAAS;AACvB,gBAAI;AAAA,cACF;AAAA,cACA;AAAA,cACA;AAAA,YACF,IAAI;AACJ,gBAAI,UAAU,WAAW,OAAO,GAAI;AACpC,uBAAW,cAAc,YAAY,SAAS,eAAe,CAAC,KAAK,gBAAgB;AACnF,wBAAY,cAAc,YAAY,UAAU,eAAe,CAAC,KAAK,gBAAgB;AAAA,UACvF,CAAC;AACD,cAAI,aAAa,SAAS,cAAc,QAAQ;AAC9C,0BAAc;AAAA,UAChB;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,eAAS,QAAQ,OAAO,EAAE;AAAA,IAC5B;AACA,UAAM,iBAAiB,MAAM;AAC3B,UAAI,gBAAgB;AAClB,QAAAA,QAAO,qBAAqB,cAAc;AAAA,MAC5C;AACA,UAAI,YAAY,SAAS,aAAa,OAAO,IAAI;AAC/C,iBAAS,UAAU,OAAO,EAAE;AAC5B,mBAAW;AAAA,MACb;AAAA,IACF;AACA,UAAM,2BAA2B,MAAM;AACrC,UAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,YAAa;AACxD,WAAK,mBAAmB;AAAA,IAC1B;AACA,IAAAK,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,kBAAkB,OAAOL,QAAO,mBAAmB,aAAa;AAChF,uBAAe;AACf;AAAA,MACF;AACA,MAAAA,QAAO,iBAAiB,UAAU,aAAa;AAC/C,MAAAA,QAAO,iBAAiB,qBAAqB,wBAAwB;AAAA,IACvE,CAAC;AACD,IAAAK,IAAG,WAAW,MAAM;AAClB,qBAAe;AACf,MAAAL,QAAO,oBAAoB,UAAU,aAAa;AAClD,MAAAA,QAAO,oBAAoB,qBAAqB,wBAAwB;AAAA,IAC1E,CAAC;AAAA,EACH;AAEA,WAAS,SAAS,MAAM;AACtB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAK;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,YAAY,CAAC;AACnB,UAAML,UAAS,UAAU;AACzB,UAAM,SAAS,SAAU,QAAQ,SAAS;AACxC,UAAI,YAAY,QAAQ;AACtB,kBAAU,CAAC;AAAA,MACb;AACA,YAAM,eAAeA,QAAO,oBAAoBA,QAAO;AACvD,YAAM,WAAW,IAAI,aAAa,eAAa;AAI7C,YAAI,OAAO,oBAAqB;AAChC,YAAI,UAAU,WAAW,GAAG;AAC1B,eAAK,kBAAkB,UAAU,CAAC,CAAC;AACnC;AAAA,QACF;AACA,cAAM,iBAAiB,SAASM,kBAAiB;AAC/C,eAAK,kBAAkB,UAAU,CAAC,CAAC;AAAA,QACrC;AACA,YAAIN,QAAO,uBAAuB;AAChC,UAAAA,QAAO,sBAAsB,cAAc;AAAA,QAC7C,OAAO;AACL,UAAAA,QAAO,WAAW,gBAAgB,CAAC;AAAA,QACrC;AAAA,MACF,CAAC;AACD,eAAS,QAAQ,QAAQ;AAAA,QACvB,YAAY,OAAO,QAAQ,eAAe,cAAc,OAAO,QAAQ;AAAA,QACvE,WAAW,OAAO,cAAc,OAAO,QAAQ,cAAc,cAAc,OAAO,SAAS;AAAA,QAC3F,eAAe,OAAO,QAAQ,kBAAkB,cAAc,OAAO,QAAQ;AAAA,MAC/E,CAAC;AACD,gBAAU,KAAK,QAAQ;AAAA,IACzB;AACA,UAAM,OAAO,MAAM;AACjB,UAAI,CAAC,OAAO,OAAO,SAAU;AAC7B,UAAI,OAAO,OAAO,gBAAgB;AAChC,cAAM,mBAAmB,eAAe,OAAO,MAAM;AACrD,iBAASO,KAAI,GAAGA,KAAI,iBAAiB,QAAQA,MAAK,GAAG;AACnD,iBAAO,iBAAiBA,EAAC,CAAC;AAAA,QAC5B;AAAA,MACF;AAEA,aAAO,OAAO,QAAQ;AAAA,QACpB,WAAW,OAAO,OAAO;AAAA,MAC3B,CAAC;AAGD,aAAO,OAAO,WAAW;AAAA,QACvB,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AACA,UAAMC,WAAU,MAAM;AACpB,gBAAU,QAAQ,cAAY;AAC5B,iBAAS,WAAW;AAAA,MACtB,CAAC;AACD,gBAAU,OAAO,GAAG,UAAU,MAAM;AAAA,IACtC;AACA,iBAAa;AAAA,MACX,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,IACxB,CAAC;AACD,IAAAH,IAAG,QAAQ,IAAI;AACf,IAAAA,IAAG,WAAWG,QAAO;AAAA,EACvB;AAIA,MAAI,gBAAgB;AAAA,IAClB,GAAGC,SAAQ,SAAS,UAAU;AAC5B,YAAMC,QAAO;AACb,UAAI,CAACA,MAAK,mBAAmBA,MAAK,UAAW,QAAOA;AACpD,UAAI,OAAO,YAAY,WAAY,QAAOA;AAC1C,YAAM,SAAS,WAAW,YAAY;AACtC,MAAAD,QAAO,MAAM,GAAG,EAAE,QAAQ,CAAAE,WAAS;AACjC,YAAI,CAACD,MAAK,gBAAgBC,MAAK,EAAG,CAAAD,MAAK,gBAAgBC,MAAK,IAAI,CAAC;AACjE,QAAAD,MAAK,gBAAgBC,MAAK,EAAE,MAAM,EAAE,OAAO;AAAA,MAC7C,CAAC;AACD,aAAOD;AAAA,IACT;AAAA,IACA,KAAKD,SAAQ,SAAS,UAAU;AAC9B,YAAMC,QAAO;AACb,UAAI,CAACA,MAAK,mBAAmBA,MAAK,UAAW,QAAOA;AACpD,UAAI,OAAO,YAAY,WAAY,QAAOA;AAC1C,eAAS,cAAc;AACrB,QAAAA,MAAK,IAAID,SAAQ,WAAW;AAC5B,YAAI,YAAY,gBAAgB;AAC9B,iBAAO,YAAY;AAAA,QACrB;AACA,iBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,eAAK,IAAI,IAAI,UAAU,IAAI;AAAA,QAC7B;AACA,gBAAQ,MAAMC,OAAM,IAAI;AAAA,MAC1B;AACA,kBAAY,iBAAiB;AAC7B,aAAOA,MAAK,GAAGD,SAAQ,aAAa,QAAQ;AAAA,IAC9C;AAAA,IACA,MAAM,SAAS,UAAU;AACvB,YAAMC,QAAO;AACb,UAAI,CAACA,MAAK,mBAAmBA,MAAK,UAAW,QAAOA;AACpD,UAAI,OAAO,YAAY,WAAY,QAAOA;AAC1C,YAAM,SAAS,WAAW,YAAY;AACtC,UAAIA,MAAK,mBAAmB,QAAQ,OAAO,IAAI,GAAG;AAChD,QAAAA,MAAK,mBAAmB,MAAM,EAAE,OAAO;AAAA,MACzC;AACA,aAAOA;AAAA,IACT;AAAA,IACA,OAAO,SAAS;AACd,YAAMA,QAAO;AACb,UAAI,CAACA,MAAK,mBAAmBA,MAAK,UAAW,QAAOA;AACpD,UAAI,CAACA,MAAK,mBAAoB,QAAOA;AACrC,YAAME,SAAQF,MAAK,mBAAmB,QAAQ,OAAO;AACrD,UAAIE,UAAS,GAAG;AACd,QAAAF,MAAK,mBAAmB,OAAOE,QAAO,CAAC;AAAA,MACzC;AACA,aAAOF;AAAA,IACT;AAAA,IACA,IAAID,SAAQ,SAAS;AACnB,YAAMC,QAAO;AACb,UAAI,CAACA,MAAK,mBAAmBA,MAAK,UAAW,QAAOA;AACpD,UAAI,CAACA,MAAK,gBAAiB,QAAOA;AAClC,MAAAD,QAAO,MAAM,GAAG,EAAE,QAAQ,CAAAE,WAAS;AACjC,YAAI,OAAO,YAAY,aAAa;AAClC,UAAAD,MAAK,gBAAgBC,MAAK,IAAI,CAAC;AAAA,QACjC,WAAWD,MAAK,gBAAgBC,MAAK,GAAG;AACtC,UAAAD,MAAK,gBAAgBC,MAAK,EAAE,QAAQ,CAAC,cAAcC,WAAU;AAC3D,gBAAI,iBAAiB,WAAW,aAAa,kBAAkB,aAAa,mBAAmB,SAAS;AACtG,cAAAF,MAAK,gBAAgBC,MAAK,EAAE,OAAOC,QAAO,CAAC;AAAA,YAC7C;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AACD,aAAOF;AAAA,IACT;AAAA,IACA,OAAO;AACL,YAAMA,QAAO;AACb,UAAI,CAACA,MAAK,mBAAmBA,MAAK,UAAW,QAAOA;AACpD,UAAI,CAACA,MAAK,gBAAiB,QAAOA;AAClC,UAAID;AACJ,UAAI;AACJ,UAAI;AACJ,eAAS,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,aAAK,KAAK,IAAI,UAAU,KAAK;AAAA,MAC/B;AACA,UAAI,OAAO,KAAK,CAAC,MAAM,YAAY,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AACzD,QAAAA,UAAS,KAAK,CAAC;AACf,eAAO,KAAK,MAAM,GAAG,KAAK,MAAM;AAChC,kBAAUC;AAAA,MACZ,OAAO;AACL,QAAAD,UAAS,KAAK,CAAC,EAAE;AACjB,eAAO,KAAK,CAAC,EAAE;AACf,kBAAU,KAAK,CAAC,EAAE,WAAWC;AAAA,MAC/B;AACA,WAAK,QAAQ,OAAO;AACpB,YAAM,cAAc,MAAM,QAAQD,OAAM,IAAIA,UAASA,QAAO,MAAM,GAAG;AACrE,kBAAY,QAAQ,CAAAE,WAAS;AAC3B,YAAID,MAAK,sBAAsBA,MAAK,mBAAmB,QAAQ;AAC7D,UAAAA,MAAK,mBAAmB,QAAQ,kBAAgB;AAC9C,yBAAa,MAAM,SAAS,CAACC,QAAO,GAAG,IAAI,CAAC;AAAA,UAC9C,CAAC;AAAA,QACH;AACA,YAAID,MAAK,mBAAmBA,MAAK,gBAAgBC,MAAK,GAAG;AACvD,UAAAD,MAAK,gBAAgBC,MAAK,EAAE,QAAQ,kBAAgB;AAClD,yBAAa,MAAM,SAAS,IAAI;AAAA,UAClC,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AACD,aAAOD;AAAA,IACT;AAAA,EACF;AAEA,WAAS,aAAa;AACpB,UAAM,SAAS;AACf,QAAI;AACJ,QAAI;AACJ,UAAM,KAAK,OAAO;AAClB,QAAI,OAAO,OAAO,OAAO,UAAU,eAAe,OAAO,OAAO,UAAU,MAAM;AAC9E,cAAQ,OAAO,OAAO;AAAA,IACxB,OAAO;AACL,cAAQ,GAAG;AAAA,IACb;AACA,QAAI,OAAO,OAAO,OAAO,WAAW,eAAe,OAAO,OAAO,WAAW,MAAM;AAChF,eAAS,OAAO,OAAO;AAAA,IACzB,OAAO;AACL,eAAS,GAAG;AAAA,IACd;AACA,QAAI,UAAU,KAAK,OAAO,aAAa,KAAK,WAAW,KAAK,OAAO,WAAW,GAAG;AAC/E;AAAA,IACF;AAGA,YAAQ,QAAQ,SAAS,aAAa,IAAI,cAAc,KAAK,GAAG,EAAE,IAAI,SAAS,aAAa,IAAI,eAAe,KAAK,GAAG,EAAE;AACzH,aAAS,SAAS,SAAS,aAAa,IAAI,aAAa,KAAK,GAAG,EAAE,IAAI,SAAS,aAAa,IAAI,gBAAgB,KAAK,GAAG,EAAE;AAC3H,QAAI,OAAO,MAAM,KAAK,EAAG,SAAQ;AACjC,QAAI,OAAO,MAAM,MAAM,EAAG,UAAS;AACnC,WAAO,OAAO,QAAQ;AAAA,MACpB;AAAA,MACA;AAAA,MACA,MAAM,OAAO,aAAa,IAAI,QAAQ;AAAA,IACxC,CAAC;AAAA,EACH;AAEA,WAAS,eAAe;AACtB,UAAM,SAAS;AACf,aAAS,0BAA0B,MAAM,OAAO;AAC9C,aAAO,WAAW,KAAK,iBAAiB,OAAO,kBAAkB,KAAK,CAAC,KAAK,CAAC;AAAA,IAC/E;AACA,UAAM,SAAS,OAAO;AACtB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,cAAc;AAAA,MACd;AAAA,IACF,IAAI;AACJ,UAAM,YAAY,OAAO,WAAW,OAAO,QAAQ;AACnD,UAAM,uBAAuB,YAAY,OAAO,QAAQ,OAAO,SAAS,OAAO,OAAO;AACtF,UAAM,SAAS,gBAAgB,UAAU,IAAI,OAAO,OAAO,UAAU,gBAAgB;AACrF,UAAM,eAAe,YAAY,OAAO,QAAQ,OAAO,SAAS,OAAO;AACvE,QAAI,WAAW,CAAC;AAChB,UAAM,aAAa,CAAC;AACpB,UAAM,kBAAkB,CAAC;AACzB,QAAI,eAAe,OAAO;AAC1B,QAAI,OAAO,iBAAiB,YAAY;AACtC,qBAAe,OAAO,mBAAmB,KAAK,MAAM;AAAA,IACtD;AACA,QAAI,cAAc,OAAO;AACzB,QAAI,OAAO,gBAAgB,YAAY;AACrC,oBAAc,OAAO,kBAAkB,KAAK,MAAM;AAAA,IACpD;AACA,UAAM,yBAAyB,OAAO,SAAS;AAC/C,UAAM,2BAA2B,OAAO,WAAW;AACnD,QAAI,eAAe,OAAO;AAC1B,QAAI,gBAAgB,CAAC;AACrB,QAAI,gBAAgB;AACpB,QAAIE,SAAQ;AACZ,QAAI,OAAO,eAAe,aAAa;AACrC;AAAA,IACF;AACA,QAAI,OAAO,iBAAiB,YAAY,aAAa,QAAQ,GAAG,KAAK,GAAG;AACtE,qBAAe,WAAW,aAAa,QAAQ,KAAK,EAAE,CAAC,IAAI,MAAM;AAAA,IACnE,WAAW,OAAO,iBAAiB,UAAU;AAC3C,qBAAe,WAAW,YAAY;AAAA,IACxC;AACA,WAAO,cAAc,CAAC;AAGtB,WAAO,QAAQ,aAAW;AACxB,UAAI,KAAK;AACP,gBAAQ,MAAM,aAAa;AAAA,MAC7B,OAAO;AACL,gBAAQ,MAAM,cAAc;AAAA,MAC9B;AACA,cAAQ,MAAM,eAAe;AAC7B,cAAQ,MAAM,YAAY;AAAA,IAC5B,CAAC;AAGD,QAAI,OAAO,kBAAkB,OAAO,SAAS;AAC3C,qBAAe,WAAW,mCAAmC,EAAE;AAC/D,qBAAe,WAAW,kCAAkC,EAAE;AAAA,IAChE;AACA,UAAM,cAAc,OAAO,QAAQ,OAAO,KAAK,OAAO,KAAK,OAAO;AAClE,QAAI,aAAa;AACf,aAAO,KAAK,WAAW,MAAM;AAAA,IAC/B,WAAW,OAAO,MAAM;AACtB,aAAO,KAAK,YAAY;AAAA,IAC1B;AAGA,QAAI;AACJ,UAAM,uBAAuB,OAAO,kBAAkB,UAAU,OAAO,eAAe,OAAO,KAAK,OAAO,WAAW,EAAE,OAAO,SAAO;AAClI,aAAO,OAAO,OAAO,YAAY,GAAG,EAAE,kBAAkB;AAAA,IAC1D,CAAC,EAAE,SAAS;AACZ,aAASL,KAAI,GAAGA,KAAI,cAAcA,MAAK,GAAG;AACxC,kBAAY;AACZ,UAAIM;AACJ,UAAI,OAAON,EAAC,EAAG,CAAAM,SAAQ,OAAON,EAAC;AAC/B,UAAI,aAAa;AACf,eAAO,KAAK,YAAYA,IAAGM,QAAO,MAAM;AAAA,MAC1C;AACA,UAAI,OAAON,EAAC,KAAK,aAAaM,QAAO,SAAS,MAAM,OAAQ;AAE5D,UAAI,OAAO,kBAAkB,QAAQ;AACnC,YAAI,sBAAsB;AACxB,iBAAON,EAAC,EAAE,MAAM,OAAO,kBAAkB,OAAO,CAAC,IAAI;AAAA,QACvD;AACA,cAAM,cAAc,iBAAiBM,MAAK;AAC1C,cAAM,mBAAmBA,OAAM,MAAM;AACrC,cAAM,yBAAyBA,OAAM,MAAM;AAC3C,YAAI,kBAAkB;AACpB,UAAAA,OAAM,MAAM,YAAY;AAAA,QAC1B;AACA,YAAI,wBAAwB;AAC1B,UAAAA,OAAM,MAAM,kBAAkB;AAAA,QAChC;AACA,YAAI,OAAO,cAAc;AACvB,sBAAY,OAAO,aAAa,IAAI,iBAAiBA,QAAO,SAAS,IAAI,IAAI,iBAAiBA,QAAO,UAAU,IAAI;AAAA,QACrH,OAAO;AAEL,gBAAM,QAAQ,0BAA0B,aAAa,OAAO;AAC5D,gBAAM,cAAc,0BAA0B,aAAa,cAAc;AACzE,gBAAM,eAAe,0BAA0B,aAAa,eAAe;AAC3E,gBAAM,aAAa,0BAA0B,aAAa,aAAa;AACvE,gBAAM,cAAc,0BAA0B,aAAa,cAAc;AACzE,gBAAM,YAAY,YAAY,iBAAiB,YAAY;AAC3D,cAAI,aAAa,cAAc,cAAc;AAC3C,wBAAY,QAAQ,aAAa;AAAA,UACnC,OAAO;AACL,kBAAM;AAAA,cACJ;AAAA,cACA;AAAA,YACF,IAAIA;AACJ,wBAAY,QAAQ,cAAc,eAAe,aAAa,eAAe,cAAc;AAAA,UAC7F;AAAA,QACF;AACA,YAAI,kBAAkB;AACpB,UAAAA,OAAM,MAAM,YAAY;AAAA,QAC1B;AACA,YAAI,wBAAwB;AAC1B,UAAAA,OAAM,MAAM,kBAAkB;AAAA,QAChC;AACA,YAAI,OAAO,aAAc,aAAY,KAAK,MAAM,SAAS;AAAA,MAC3D,OAAO;AACL,qBAAa,cAAc,OAAO,gBAAgB,KAAK,gBAAgB,OAAO;AAC9E,YAAI,OAAO,aAAc,aAAY,KAAK,MAAM,SAAS;AACzD,YAAI,OAAON,EAAC,GAAG;AACb,iBAAOA,EAAC,EAAE,MAAM,OAAO,kBAAkB,OAAO,CAAC,IAAI,GAAG,SAAS;AAAA,QACnE;AAAA,MACF;AACA,UAAI,OAAOA,EAAC,GAAG;AACb,eAAOA,EAAC,EAAE,kBAAkB;AAAA,MAC9B;AACA,sBAAgB,KAAK,SAAS;AAC9B,UAAI,OAAO,gBAAgB;AACzB,wBAAgB,gBAAgB,YAAY,IAAI,gBAAgB,IAAI;AACpE,YAAI,kBAAkB,KAAKA,OAAM,EAAG,iBAAgB,gBAAgB,aAAa,IAAI;AACrF,YAAIA,OAAM,EAAG,iBAAgB,gBAAgB,aAAa,IAAI;AAC9D,YAAI,KAAK,IAAI,aAAa,IAAI,IAAI,IAAM,iBAAgB;AACxD,YAAI,OAAO,aAAc,iBAAgB,KAAK,MAAM,aAAa;AACjE,YAAIK,SAAQ,OAAO,mBAAmB,EAAG,UAAS,KAAK,aAAa;AACpE,mBAAW,KAAK,aAAa;AAAA,MAC/B,OAAO;AACL,YAAI,OAAO,aAAc,iBAAgB,KAAK,MAAM,aAAa;AACjE,aAAKA,SAAQ,KAAK,IAAI,OAAO,OAAO,oBAAoBA,MAAK,KAAK,OAAO,OAAO,mBAAmB,EAAG,UAAS,KAAK,aAAa;AACjI,mBAAW,KAAK,aAAa;AAC7B,wBAAgB,gBAAgB,YAAY;AAAA,MAC9C;AACA,aAAO,eAAe,YAAY;AAClC,sBAAgB;AAChB,MAAAA,UAAS;AAAA,IACX;AACA,WAAO,cAAc,KAAK,IAAI,OAAO,aAAa,UAAU,IAAI;AAChE,QAAI,OAAO,aAAa,OAAO,WAAW,WAAW,OAAO,WAAW,cAAc;AACnF,gBAAU,MAAM,QAAQ,GAAG,OAAO,cAAc,YAAY;AAAA,IAC9D;AACA,QAAI,OAAO,gBAAgB;AACzB,gBAAU,MAAM,OAAO,kBAAkB,OAAO,CAAC,IAAI,GAAG,OAAO,cAAc,YAAY;AAAA,IAC3F;AACA,QAAI,aAAa;AACf,aAAO,KAAK,kBAAkB,WAAW,QAAQ;AAAA,IACnD;AAGA,QAAI,CAAC,OAAO,gBAAgB;AAC1B,YAAM,gBAAgB,CAAC;AACvB,eAASL,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK,GAAG;AAC3C,YAAI,iBAAiB,SAASA,EAAC;AAC/B,YAAI,OAAO,aAAc,kBAAiB,KAAK,MAAM,cAAc;AACnE,YAAI,SAASA,EAAC,KAAK,OAAO,cAAc,YAAY;AAClD,wBAAc,KAAK,cAAc;AAAA,QACnC;AAAA,MACF;AACA,iBAAW;AACX,UAAI,KAAK,MAAM,OAAO,cAAc,UAAU,IAAI,KAAK,MAAM,SAAS,SAAS,SAAS,CAAC,CAAC,IAAI,GAAG;AAC/F,iBAAS,KAAK,OAAO,cAAc,UAAU;AAAA,MAC/C;AAAA,IACF;AACA,QAAI,aAAa,OAAO,MAAM;AAC5B,YAAM,OAAO,gBAAgB,CAAC,IAAI;AAClC,UAAI,OAAO,iBAAiB,GAAG;AAC7B,cAAM,SAAS,KAAK,MAAM,OAAO,QAAQ,eAAe,OAAO,QAAQ,eAAe,OAAO,cAAc;AAC3G,cAAM,YAAY,OAAO,OAAO;AAChC,iBAASA,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAClC,mBAAS,KAAK,SAAS,SAAS,SAAS,CAAC,IAAI,SAAS;AAAA,QACzD;AAAA,MACF;AACA,eAASA,KAAI,GAAGA,KAAI,OAAO,QAAQ,eAAe,OAAO,QAAQ,aAAaA,MAAK,GAAG;AACpF,YAAI,OAAO,mBAAmB,GAAG;AAC/B,mBAAS,KAAK,SAAS,SAAS,SAAS,CAAC,IAAI,IAAI;AAAA,QACpD;AACA,mBAAW,KAAK,WAAW,WAAW,SAAS,CAAC,IAAI,IAAI;AACxD,eAAO,eAAe;AAAA,MACxB;AAAA,IACF;AACA,QAAI,SAAS,WAAW,EAAG,YAAW,CAAC,CAAC;AACxC,QAAI,iBAAiB,GAAG;AACtB,YAAM,MAAM,OAAO,aAAa,KAAK,MAAM,eAAe,OAAO,kBAAkB,aAAa;AAChG,aAAO,OAAO,CAACO,IAAG,eAAe;AAC/B,YAAI,CAAC,OAAO,WAAW,OAAO,KAAM,QAAO;AAC3C,YAAI,eAAe,OAAO,SAAS,GAAG;AACpC,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC,EAAE,QAAQ,aAAW;AACpB,gBAAQ,MAAM,GAAG,IAAI,GAAG,YAAY;AAAA,MACtC,CAAC;AAAA,IACH;AACA,QAAI,OAAO,kBAAkB,OAAO,sBAAsB;AACxD,UAAI,gBAAgB;AACpB,sBAAgB,QAAQ,oBAAkB;AACxC,yBAAiB,kBAAkB,gBAAgB;AAAA,MACrD,CAAC;AACD,uBAAiB;AACjB,YAAM,UAAU,gBAAgB,aAAa,gBAAgB,aAAa;AAC1E,iBAAW,SAAS,IAAI,UAAQ;AAC9B,YAAI,QAAQ,EAAG,QAAO,CAAC;AACvB,YAAI,OAAO,QAAS,QAAO,UAAU;AACrC,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,QAAI,OAAO,0BAA0B;AACnC,UAAI,gBAAgB;AACpB,sBAAgB,QAAQ,oBAAkB;AACxC,yBAAiB,kBAAkB,gBAAgB;AAAA,MACrD,CAAC;AACD,uBAAiB;AACjB,YAAM,cAAc,OAAO,sBAAsB,MAAM,OAAO,qBAAqB;AACnF,UAAI,gBAAgB,aAAa,YAAY;AAC3C,cAAM,mBAAmB,aAAa,gBAAgB,cAAc;AACpE,iBAAS,QAAQ,CAAC,MAAM,cAAc;AACpC,mBAAS,SAAS,IAAI,OAAO;AAAA,QAC/B,CAAC;AACD,mBAAW,QAAQ,CAAC,MAAM,cAAc;AACtC,qBAAW,SAAS,IAAI,OAAO;AAAA,QACjC,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO,OAAO,QAAQ;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,QAAI,OAAO,kBAAkB,OAAO,WAAW,CAAC,OAAO,sBAAsB;AAC3E,qBAAe,WAAW,mCAAmC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI;AAChF,qBAAe,WAAW,kCAAkC,GAAG,OAAO,OAAO,IAAI,gBAAgB,gBAAgB,SAAS,CAAC,IAAI,CAAC,IAAI;AACpI,YAAM,gBAAgB,CAAC,OAAO,SAAS,CAAC;AACxC,YAAM,kBAAkB,CAAC,OAAO,WAAW,CAAC;AAC5C,aAAO,WAAW,OAAO,SAAS,IAAI,CAAAC,OAAKA,KAAI,aAAa;AAC5D,aAAO,aAAa,OAAO,WAAW,IAAI,CAAAA,OAAKA,KAAI,eAAe;AAAA,IACpE;AACA,QAAI,iBAAiB,sBAAsB;AACzC,aAAO,KAAK,oBAAoB;AAAA,IAClC;AACA,QAAI,SAAS,WAAW,wBAAwB;AAC9C,UAAI,OAAO,OAAO,cAAe,QAAO,cAAc;AACtD,aAAO,KAAK,sBAAsB;AAAA,IACpC;AACA,QAAI,WAAW,WAAW,0BAA0B;AAClD,aAAO,KAAK,wBAAwB;AAAA,IACtC;AACA,QAAI,OAAO,qBAAqB;AAC9B,aAAO,mBAAmB;AAAA,IAC5B;AACA,WAAO,KAAK,eAAe;AAC3B,QAAI,CAAC,aAAa,CAAC,OAAO,YAAY,OAAO,WAAW,WAAW,OAAO,WAAW,SAAS;AAC5F,YAAM,sBAAsB,GAAG,OAAO,sBAAsB;AAC5D,YAAM,6BAA6B,OAAO,GAAG,UAAU,SAAS,mBAAmB;AACnF,UAAI,gBAAgB,OAAO,yBAAyB;AAClD,YAAI,CAAC,2BAA4B,QAAO,GAAG,UAAU,IAAI,mBAAmB;AAAA,MAC9E,WAAW,4BAA4B;AACrC,eAAO,GAAG,UAAU,OAAO,mBAAmB;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AAEA,WAAS,iBAAiB,OAAO;AAC/B,UAAM,SAAS;AACf,UAAM,eAAe,CAAC;AACtB,UAAM,YAAY,OAAO,WAAW,OAAO,OAAO,QAAQ;AAC1D,QAAI,YAAY;AAChB,QAAIR;AACJ,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,cAAc,KAAK;AAAA,IAC5B,WAAW,UAAU,MAAM;AACzB,aAAO,cAAc,OAAO,OAAO,KAAK;AAAA,IAC1C;AACA,UAAM,kBAAkB,CAAAK,WAAS;AAC/B,UAAI,WAAW;AACb,eAAO,OAAO,OAAO,OAAO,oBAAoBA,MAAK,CAAC;AAAA,MACxD;AACA,aAAO,OAAO,OAAOA,MAAK;AAAA,IAC5B;AAEA,QAAI,OAAO,OAAO,kBAAkB,UAAU,OAAO,OAAO,gBAAgB,GAAG;AAC7E,UAAI,OAAO,OAAO,gBAAgB;AAChC,SAAC,OAAO,iBAAiB,CAAC,GAAG,QAAQ,CAAAC,WAAS;AAC5C,uBAAa,KAAKA,MAAK;AAAA,QACzB,CAAC;AAAA,MACH,OAAO;AACL,aAAKN,KAAI,GAAGA,KAAI,KAAK,KAAK,OAAO,OAAO,aAAa,GAAGA,MAAK,GAAG;AAC9D,gBAAMK,SAAQ,OAAO,cAAcL;AACnC,cAAIK,SAAQ,OAAO,OAAO,UAAU,CAAC,UAAW;AAChD,uBAAa,KAAK,gBAAgBA,MAAK,CAAC;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,OAAO;AACL,mBAAa,KAAK,gBAAgB,OAAO,WAAW,CAAC;AAAA,IACvD;AAGA,SAAKL,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK,GAAG;AAC3C,UAAI,OAAO,aAAaA,EAAC,MAAM,aAAa;AAC1C,cAAM,SAAS,aAAaA,EAAC,EAAE;AAC/B,oBAAY,SAAS,YAAY,SAAS;AAAA,MAC5C;AAAA,IACF;AAGA,QAAI,aAAa,cAAc,EAAG,QAAO,UAAU,MAAM,SAAS,GAAG,SAAS;AAAA,EAChF;AAEA,WAAS,qBAAqB;AAC5B,UAAM,SAAS;AACf,UAAM,SAAS,OAAO;AAEtB,UAAM,cAAc,OAAO,YAAY,OAAO,aAAa,IAAI,OAAO,UAAU,aAAa,OAAO,UAAU,YAAY;AAC1H,aAASA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,aAAOA,EAAC,EAAE,qBAAqB,OAAO,aAAa,IAAI,OAAOA,EAAC,EAAE,aAAa,OAAOA,EAAC,EAAE,aAAa,cAAc,OAAO,sBAAsB;AAAA,IAClJ;AAAA,EACF;AAEA,MAAM,uBAAuB,CAAC,SAAS,WAAW,cAAc;AAC9D,QAAI,aAAa,CAAC,QAAQ,UAAU,SAAS,SAAS,GAAG;AACvD,cAAQ,UAAU,IAAI,SAAS;AAAA,IACjC,WAAW,CAAC,aAAa,QAAQ,UAAU,SAAS,SAAS,GAAG;AAC9D,cAAQ,UAAU,OAAO,SAAS;AAAA,IACpC;AAAA,EACF;AACA,WAAS,qBAAqBS,YAAW;AACvC,QAAIA,eAAc,QAAQ;AACxB,MAAAA,aAAY,QAAQ,KAAK,aAAa;AAAA,IACxC;AACA,UAAM,SAAS;AACf,UAAM,SAAS,OAAO;AACtB,UAAM;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,WAAW,EAAG;AACzB,QAAI,OAAO,OAAO,CAAC,EAAE,sBAAsB,YAAa,QAAO,mBAAmB;AAClF,QAAI,eAAe,CAACA;AACpB,QAAI,IAAK,gBAAeA;AACxB,WAAO,uBAAuB,CAAC;AAC/B,WAAO,gBAAgB,CAAC;AACxB,QAAI,eAAe,OAAO;AAC1B,QAAI,OAAO,iBAAiB,YAAY,aAAa,QAAQ,GAAG,KAAK,GAAG;AACtE,qBAAe,WAAW,aAAa,QAAQ,KAAK,EAAE,CAAC,IAAI,MAAM,OAAO;AAAA,IAC1E,WAAW,OAAO,iBAAiB,UAAU;AAC3C,qBAAe,WAAW,YAAY;AAAA,IACxC;AACA,aAAST,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,YAAMM,SAAQ,OAAON,EAAC;AACtB,UAAI,cAAcM,OAAM;AACxB,UAAI,OAAO,WAAW,OAAO,gBAAgB;AAC3C,uBAAe,OAAO,CAAC,EAAE;AAAA,MAC3B;AACA,YAAM,iBAAiB,gBAAgB,OAAO,iBAAiB,OAAO,aAAa,IAAI,KAAK,gBAAgBA,OAAM,kBAAkB;AACpI,YAAM,yBAAyB,eAAe,SAAS,CAAC,KAAK,OAAO,iBAAiB,OAAO,aAAa,IAAI,KAAK,gBAAgBA,OAAM,kBAAkB;AAC1J,YAAM,cAAc,EAAE,eAAe;AACrC,YAAM,aAAa,cAAc,OAAO,gBAAgBN,EAAC;AACzD,YAAM,iBAAiB,eAAe,KAAK,eAAe,OAAO,OAAO,OAAO,gBAAgBA,EAAC;AAChG,YAAM,YAAY,eAAe,KAAK,cAAc,OAAO,OAAO,KAAK,aAAa,KAAK,cAAc,OAAO,QAAQ,eAAe,KAAK,cAAc,OAAO;AAC/J,UAAI,WAAW;AACb,eAAO,cAAc,KAAKM,MAAK;AAC/B,eAAO,qBAAqB,KAAKN,EAAC;AAAA,MACpC;AACA,2BAAqBM,QAAO,WAAW,OAAO,iBAAiB;AAC/D,2BAAqBA,QAAO,gBAAgB,OAAO,sBAAsB;AACzE,MAAAA,OAAM,WAAW,MAAM,CAAC,gBAAgB;AACxC,MAAAA,OAAM,mBAAmB,MAAM,CAAC,wBAAwB;AAAA,IAC1D;AAAA,EACF;AAEA,WAAS,eAAeG,YAAW;AACjC,UAAM,SAAS;AACf,QAAI,OAAOA,eAAc,aAAa;AACpC,YAAM,aAAa,OAAO,eAAe,KAAK;AAE9C,MAAAA,aAAY,UAAU,OAAO,aAAa,OAAO,YAAY,cAAc;AAAA,IAC7E;AACA,UAAM,SAAS,OAAO;AACtB,UAAM,iBAAiB,OAAO,aAAa,IAAI,OAAO,aAAa;AACnE,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,eAAe;AACrB,UAAM,SAAS;AACf,QAAI,mBAAmB,GAAG;AACxB,iBAAW;AACX,oBAAc;AACd,cAAQ;AAAA,IACV,OAAO;AACL,kBAAYA,aAAY,OAAO,aAAa,KAAK;AACjD,YAAM,qBAAqB,KAAK,IAAIA,aAAY,OAAO,aAAa,CAAC,IAAI;AACzE,YAAM,eAAe,KAAK,IAAIA,aAAY,OAAO,aAAa,CAAC,IAAI;AACnE,oBAAc,sBAAsB,YAAY;AAChD,cAAQ,gBAAgB,YAAY;AACpC,UAAI,mBAAoB,YAAW;AACnC,UAAI,aAAc,YAAW;AAAA,IAC/B;AACA,QAAI,OAAO,MAAM;AACf,YAAM,kBAAkB,OAAO,oBAAoB,CAAC;AACpD,YAAM,iBAAiB,OAAO,oBAAoB,OAAO,OAAO,SAAS,CAAC;AAC1E,YAAM,sBAAsB,OAAO,WAAW,eAAe;AAC7D,YAAM,qBAAqB,OAAO,WAAW,cAAc;AAC3D,YAAM,eAAe,OAAO,WAAW,OAAO,WAAW,SAAS,CAAC;AACnE,YAAM,eAAe,KAAK,IAAIA,UAAS;AACvC,UAAI,gBAAgB,qBAAqB;AACvC,wBAAgB,eAAe,uBAAuB;AAAA,MACxD,OAAO;AACL,wBAAgB,eAAe,eAAe,sBAAsB;AAAA,MACtE;AACA,UAAI,eAAe,EAAG,iBAAgB;AAAA,IACxC;AACA,WAAO,OAAO,QAAQ;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,QAAI,OAAO,uBAAuB,OAAO,kBAAkB,OAAO,WAAY,QAAO,qBAAqBA,UAAS;AACnH,QAAI,eAAe,CAAC,cAAc;AAChC,aAAO,KAAK,uBAAuB;AAAA,IACrC;AACA,QAAI,SAAS,CAAC,QAAQ;AACpB,aAAO,KAAK,iBAAiB;AAAA,IAC/B;AACA,QAAI,gBAAgB,CAAC,eAAe,UAAU,CAAC,OAAO;AACpD,aAAO,KAAK,UAAU;AAAA,IACxB;AACA,WAAO,KAAK,YAAY,QAAQ;AAAA,EAClC;AAEA,MAAM,qBAAqB,CAAC,SAAS,WAAW,cAAc;AAC5D,QAAI,aAAa,CAAC,QAAQ,UAAU,SAAS,SAAS,GAAG;AACvD,cAAQ,UAAU,IAAI,SAAS;AAAA,IACjC,WAAW,CAAC,aAAa,QAAQ,UAAU,SAAS,SAAS,GAAG;AAC9D,cAAQ,UAAU,OAAO,SAAS;AAAA,IACpC;AAAA,EACF;AACA,WAAS,sBAAsB;AAC7B,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,YAAY,OAAO,WAAW,OAAO,QAAQ;AACnD,UAAM,cAAc,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AACrE,UAAM,mBAAmB,cAAY;AACnC,aAAO,gBAAgB,UAAU,IAAI,OAAO,UAAU,GAAG,QAAQ,iBAAiB,QAAQ,EAAE,EAAE,CAAC;AAAA,IACjG;AACA,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,WAAW;AACb,UAAI,OAAO,MAAM;AACf,YAAI,aAAa,cAAc,OAAO,QAAQ;AAC9C,YAAI,aAAa,EAAG,cAAa,OAAO,QAAQ,OAAO,SAAS;AAChE,YAAI,cAAc,OAAO,QAAQ,OAAO,OAAQ,eAAc,OAAO,QAAQ,OAAO;AACpF,sBAAc,iBAAiB,6BAA6B,UAAU,IAAI;AAAA,MAC5E,OAAO;AACL,sBAAc,iBAAiB,6BAA6B,WAAW,IAAI;AAAA,MAC7E;AAAA,IACF,OAAO;AACL,UAAI,aAAa;AACf,sBAAc,OAAO,KAAK,aAAW,QAAQ,WAAW,WAAW;AACnE,oBAAY,OAAO,KAAK,aAAW,QAAQ,WAAW,cAAc,CAAC;AACrE,oBAAY,OAAO,KAAK,aAAW,QAAQ,WAAW,cAAc,CAAC;AAAA,MACvE,OAAO;AACL,sBAAc,OAAO,WAAW;AAAA,MAClC;AAAA,IACF;AACA,QAAI,aAAa;AACf,UAAI,CAAC,aAAa;AAEhB,oBAAY,eAAe,aAAa,IAAI,OAAO,UAAU,gBAAgB,EAAE,CAAC;AAChF,YAAI,OAAO,QAAQ,CAAC,WAAW;AAC7B,sBAAY,OAAO,CAAC;AAAA,QACtB;AAGA,oBAAY,eAAe,aAAa,IAAI,OAAO,UAAU,gBAAgB,EAAE,CAAC;AAChF,YAAI,OAAO,QAAQ,CAAC,cAAc,GAAG;AACnC,sBAAY,OAAO,OAAO,SAAS,CAAC;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AACA,WAAO,QAAQ,aAAW;AACxB,yBAAmB,SAAS,YAAY,aAAa,OAAO,gBAAgB;AAC5E,yBAAmB,SAAS,YAAY,WAAW,OAAO,cAAc;AACxE,yBAAmB,SAAS,YAAY,WAAW,OAAO,cAAc;AAAA,IAC1E,CAAC;AACD,WAAO,kBAAkB;AAAA,EAC3B;AAEA,MAAM,uBAAuB,CAAC,QAAQ,YAAY;AAChD,QAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,OAAQ;AACnD,UAAM,gBAAgB,MAAM,OAAO,YAAY,iBAAiB,IAAI,OAAO,OAAO,UAAU;AAC5F,UAAM,UAAU,QAAQ,QAAQ,cAAc,CAAC;AAC/C,QAAI,SAAS;AACX,UAAI,SAAS,QAAQ,cAAc,IAAI,OAAO,OAAO,kBAAkB,EAAE;AACzE,UAAI,CAAC,UAAU,OAAO,WAAW;AAC/B,YAAI,QAAQ,YAAY;AACtB,mBAAS,QAAQ,WAAW,cAAc,IAAI,OAAO,OAAO,kBAAkB,EAAE;AAAA,QAClF,OAAO;AAEL,gCAAsB,MAAM;AAC1B,gBAAI,QAAQ,YAAY;AACtB,uBAAS,QAAQ,WAAW,cAAc,IAAI,OAAO,OAAO,kBAAkB,EAAE;AAChF,kBAAI,OAAQ,QAAO,OAAO;AAAA,YAC5B;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,OAAQ,QAAO,OAAO;AAAA,IAC5B;AAAA,EACF;AACA,MAAM,SAAS,CAAC,QAAQJ,WAAU;AAChC,QAAI,CAAC,OAAO,OAAOA,MAAK,EAAG;AAC3B,UAAM,UAAU,OAAO,OAAOA,MAAK,EAAE,cAAc,kBAAkB;AACrE,QAAI,QAAS,SAAQ,gBAAgB,SAAS;AAAA,EAChD;AACA,MAAM,UAAU,YAAU;AACxB,QAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,OAAQ;AACnD,QAAI,SAAS,OAAO,OAAO;AAC3B,UAAM,MAAM,OAAO,OAAO;AAC1B,QAAI,CAAC,OAAO,CAAC,UAAU,SAAS,EAAG;AACnC,aAAS,KAAK,IAAI,QAAQ,GAAG;AAC7B,UAAM,gBAAgB,OAAO,OAAO,kBAAkB,SAAS,OAAO,qBAAqB,IAAI,KAAK,KAAK,OAAO,OAAO,aAAa;AACpI,UAAM,cAAc,OAAO;AAC3B,QAAI,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK,OAAO,GAAG;AACrD,YAAM,eAAe;AACrB,YAAM,iBAAiB,CAAC,eAAe,MAAM;AAC7C,qBAAe,KAAK,GAAG,MAAM,KAAK;AAAA,QAChC,QAAQ;AAAA,MACV,CAAC,EAAE,IAAI,CAACE,IAAGP,OAAM;AACf,eAAO,eAAe,gBAAgBA;AAAA,MACxC,CAAC,CAAC;AACF,aAAO,OAAO,QAAQ,CAAC,SAASA,OAAM;AACpC,YAAI,eAAe,SAAS,QAAQ,MAAM,EAAG,QAAO,QAAQA,EAAC;AAAA,MAC/D,CAAC;AACD;AAAA,IACF;AACA,UAAM,uBAAuB,cAAc,gBAAgB;AAC3D,QAAI,OAAO,OAAO,UAAU,OAAO,OAAO,MAAM;AAC9C,eAASA,KAAI,cAAc,QAAQA,MAAK,uBAAuB,QAAQA,MAAK,GAAG;AAC7E,cAAMU,cAAaV,KAAI,MAAM,OAAO;AACpC,YAAIU,aAAY,eAAeA,aAAY,qBAAsB,QAAO,QAAQA,UAAS;AAAA,MAC3F;AAAA,IACF,OAAO;AACL,eAASV,KAAI,KAAK,IAAI,cAAc,QAAQ,CAAC,GAAGA,MAAK,KAAK,IAAI,uBAAuB,QAAQ,MAAM,CAAC,GAAGA,MAAK,GAAG;AAC7G,YAAIA,OAAM,gBAAgBA,KAAI,wBAAwBA,KAAI,cAAc;AACtE,iBAAO,QAAQA,EAAC;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,0BAA0B,QAAQ;AACzC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAMS,aAAY,OAAO,eAAe,OAAO,YAAY,CAAC,OAAO;AACnE,QAAI;AACJ,aAAST,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK,GAAG;AAC7C,UAAI,OAAO,WAAWA,KAAI,CAAC,MAAM,aAAa;AAC5C,YAAIS,cAAa,WAAWT,EAAC,KAAKS,aAAY,WAAWT,KAAI,CAAC,KAAK,WAAWA,KAAI,CAAC,IAAI,WAAWA,EAAC,KAAK,GAAG;AACzG,wBAAcA;AAAA,QAChB,WAAWS,cAAa,WAAWT,EAAC,KAAKS,aAAY,WAAWT,KAAI,CAAC,GAAG;AACtE,wBAAcA,KAAI;AAAA,QACpB;AAAA,MACF,WAAWS,cAAa,WAAWT,EAAC,GAAG;AACrC,sBAAcA;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,OAAO,qBAAqB;AAC9B,UAAI,cAAc,KAAK,OAAO,gBAAgB,YAAa,eAAc;AAAA,IAC3E;AACA,WAAO;AAAA,EACT;AACA,WAAS,kBAAkB,gBAAgB;AACzC,UAAM,SAAS;AACf,UAAMS,aAAY,OAAO,eAAe,OAAO,YAAY,CAAC,OAAO;AACnE,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,WAAW;AAAA,MACX,WAAW;AAAA,IACb,IAAI;AACJ,QAAI,cAAc;AAClB,QAAI;AACJ,UAAM,sBAAsB,YAAU;AACpC,UAAIC,aAAY,SAAS,OAAO,QAAQ;AACxC,UAAIA,aAAY,GAAG;AACjB,QAAAA,aAAY,OAAO,QAAQ,OAAO,SAASA;AAAA,MAC7C;AACA,UAAIA,cAAa,OAAO,QAAQ,OAAO,QAAQ;AAC7C,QAAAA,cAAa,OAAO,QAAQ,OAAO;AAAA,MACrC;AACA,aAAOA;AAAA,IACT;AACA,QAAI,OAAO,gBAAgB,aAAa;AACtC,oBAAc,0BAA0B,MAAM;AAAA,IAChD;AACA,QAAI,SAAS,QAAQD,UAAS,KAAK,GAAG;AACpC,kBAAY,SAAS,QAAQA,UAAS;AAAA,IACxC,OAAO;AACL,YAAME,QAAO,KAAK,IAAI,OAAO,oBAAoB,WAAW;AAC5D,kBAAYA,QAAO,KAAK,OAAO,cAAcA,SAAQ,OAAO,cAAc;AAAA,IAC5E;AACA,QAAI,aAAa,SAAS,OAAQ,aAAY,SAAS,SAAS;AAChE,QAAI,gBAAgB,iBAAiB,CAAC,OAAO,OAAO,MAAM;AACxD,UAAI,cAAc,mBAAmB;AACnC,eAAO,YAAY;AACnB,eAAO,KAAK,iBAAiB;AAAA,MAC/B;AACA;AAAA,IACF;AACA,QAAI,gBAAgB,iBAAiB,OAAO,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AAC1G,aAAO,YAAY,oBAAoB,WAAW;AAClD;AAAA,IACF;AACA,UAAM,cAAc,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AAGrE,QAAID;AACJ,QAAI,OAAO,WAAW,OAAO,QAAQ,WAAW,OAAO,MAAM;AAC3D,MAAAA,aAAY,oBAAoB,WAAW;AAAA,IAC7C,WAAW,aAAa;AACtB,YAAM,qBAAqB,OAAO,OAAO,KAAK,aAAW,QAAQ,WAAW,WAAW;AACvF,UAAI,mBAAmB,SAAS,mBAAmB,aAAa,yBAAyB,GAAG,EAAE;AAC9F,UAAI,OAAO,MAAM,gBAAgB,GAAG;AAClC,2BAAmB,KAAK,IAAI,OAAO,OAAO,QAAQ,kBAAkB,GAAG,CAAC;AAAA,MAC1E;AACA,MAAAA,aAAY,KAAK,MAAM,mBAAmB,OAAO,KAAK,IAAI;AAAA,IAC5D,WAAW,OAAO,OAAO,WAAW,GAAG;AACrC,YAAM,aAAa,OAAO,OAAO,WAAW,EAAE,aAAa,yBAAyB;AACpF,UAAI,YAAY;AACd,QAAAA,aAAY,SAAS,YAAY,EAAE;AAAA,MACrC,OAAO;AACL,QAAAA,aAAY;AAAA,MACd;AAAA,IACF,OAAO;AACL,MAAAA,aAAY;AAAA,IACd;AACA,WAAO,OAAO,QAAQ;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAAA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,QAAI,OAAO,aAAa;AACtB,cAAQ,MAAM;AAAA,IAChB;AACA,WAAO,KAAK,mBAAmB;AAC/B,WAAO,KAAK,iBAAiB;AAC7B,QAAI,OAAO,eAAe,OAAO,OAAO,oBAAoB;AAC1D,UAAI,sBAAsBA,YAAW;AACnC,eAAO,KAAK,iBAAiB;AAAA,MAC/B;AACA,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,EACF;AAEA,WAAS,mBAAmB,IAAI,MAAM;AACpC,UAAM,SAAS;AACf,UAAM,SAAS,OAAO;AACtB,QAAIJ,SAAQ,GAAG,QAAQ,IAAI,OAAO,UAAU,gBAAgB;AAC5D,QAAI,CAACA,UAAS,OAAO,aAAa,QAAQ,KAAK,SAAS,KAAK,KAAK,SAAS,EAAE,GAAG;AAC9E,OAAC,GAAG,KAAK,MAAM,KAAK,QAAQ,EAAE,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE,QAAQ,YAAU;AACnE,YAAI,CAACA,UAAS,OAAO,WAAW,OAAO,QAAQ,IAAI,OAAO,UAAU,gBAAgB,GAAG;AACrF,UAAAA,SAAQ;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,aAAa;AACjB,QAAI;AACJ,QAAIA,QAAO;AACT,eAASN,KAAI,GAAGA,KAAI,OAAO,OAAO,QAAQA,MAAK,GAAG;AAChD,YAAI,OAAO,OAAOA,EAAC,MAAMM,QAAO;AAC9B,uBAAa;AACb,uBAAaN;AACb;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAIM,UAAS,YAAY;AACvB,aAAO,eAAeA;AACtB,UAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACnD,eAAO,eAAe,SAASA,OAAM,aAAa,yBAAyB,GAAG,EAAE;AAAA,MAClF,OAAO;AACL,eAAO,eAAe;AAAA,MACxB;AAAA,IACF,OAAO;AACL,aAAO,eAAe;AACtB,aAAO,eAAe;AACtB;AAAA,IACF;AACA,QAAI,OAAO,uBAAuB,OAAO,iBAAiB,UAAa,OAAO,iBAAiB,OAAO,aAAa;AACjH,aAAO,oBAAoB;AAAA,IAC7B;AAAA,EACF;AAEA,MAAI,SAAS;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,WAAS,mBAAmB,MAAM;AAChC,QAAI,SAAS,QAAQ;AACnB,aAAO,KAAK,aAAa,IAAI,MAAM;AAAA,IACrC;AACA,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,MACd,WAAAG;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,kBAAkB;AAC3B,aAAO,MAAM,CAACA,aAAYA;AAAA,IAC5B;AACA,QAAI,OAAO,SAAS;AAClB,aAAOA;AAAA,IACT;AACA,QAAI,mBAAmB,aAAa,WAAW,IAAI;AACnD,wBAAoB,OAAO,sBAAsB;AACjD,QAAI,IAAK,oBAAmB,CAAC;AAC7B,WAAO,oBAAoB;AAAA,EAC7B;AAEA,WAAS,aAAaA,YAAW,cAAc;AAC7C,UAAM,SAAS;AACf,UAAM;AAAA,MACJ,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAIG,KAAI;AACR,QAAIC,KAAI;AACR,UAAMC,KAAI;AACV,QAAI,OAAO,aAAa,GAAG;AACzB,MAAAF,KAAI,MAAM,CAACH,aAAYA;AAAA,IACzB,OAAO;AACL,MAAAI,KAAIJ;AAAA,IACN;AACA,QAAI,OAAO,cAAc;AACvB,MAAAG,KAAI,KAAK,MAAMA,EAAC;AAChB,MAAAC,KAAI,KAAK,MAAMA,EAAC;AAAA,IAClB;AACA,WAAO,oBAAoB,OAAO;AAClC,WAAO,YAAY,OAAO,aAAa,IAAID,KAAIC;AAC/C,QAAI,OAAO,SAAS;AAClB,gBAAU,OAAO,aAAa,IAAI,eAAe,WAAW,IAAI,OAAO,aAAa,IAAI,CAACD,KAAI,CAACC;AAAA,IAChG,WAAW,CAAC,OAAO,kBAAkB;AACnC,UAAI,OAAO,aAAa,GAAG;AACzB,QAAAD,MAAK,OAAO,sBAAsB;AAAA,MACpC,OAAO;AACL,QAAAC,MAAK,OAAO,sBAAsB;AAAA,MACpC;AACA,gBAAU,MAAM,YAAY,eAAeD,EAAC,OAAOC,EAAC,OAAOC,EAAC;AAAA,IAC9D;AAGA,QAAI;AACJ,UAAM,iBAAiB,OAAO,aAAa,IAAI,OAAO,aAAa;AACnE,QAAI,mBAAmB,GAAG;AACxB,oBAAc;AAAA,IAChB,OAAO;AACL,qBAAeL,aAAY,OAAO,aAAa,KAAK;AAAA,IACtD;AACA,QAAI,gBAAgB,UAAU;AAC5B,aAAO,eAAeA,UAAS;AAAA,IACjC;AACA,WAAO,KAAK,gBAAgB,OAAO,WAAW,YAAY;AAAA,EAC5D;AAEA,WAAS,eAAe;AACtB,WAAO,CAAC,KAAK,SAAS,CAAC;AAAA,EACzB;AAEA,WAAS,eAAe;AACtB,WAAO,CAAC,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC;AAAA,EAChD;AAEA,WAAS,YAAYA,YAAW,OAAO,cAAc,iBAAiB,UAAU;AAC9E,QAAIA,eAAc,QAAQ;AACxB,MAAAA,aAAY;AAAA,IACd;AACA,QAAI,UAAU,QAAQ;AACpB,cAAQ,KAAK,OAAO;AAAA,IACtB;AACA,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,QAAI,oBAAoB,QAAQ;AAC9B,wBAAkB;AAAA,IACpB;AACA,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,aAAa,OAAO,gCAAgC;AAC7D,aAAO;AAAA,IACT;AACA,UAAMM,gBAAe,OAAO,aAAa;AACzC,UAAMC,gBAAe,OAAO,aAAa;AACzC,QAAI;AACJ,QAAI,mBAAmBP,aAAYM,cAAc,gBAAeA;AAAA,aAAsB,mBAAmBN,aAAYO,cAAc,gBAAeA;AAAA,QAAkB,gBAAeP;AAGnL,WAAO,eAAe,YAAY;AAClC,QAAI,OAAO,SAAS;AAClB,YAAM,MAAM,OAAO,aAAa;AAChC,UAAI,UAAU,GAAG;AACf,kBAAU,MAAM,eAAe,WAAW,IAAI,CAAC;AAAA,MACjD,OAAO;AACL,YAAI,CAAC,OAAO,QAAQ,cAAc;AAChC,+BAAqB;AAAA,YACnB;AAAA,YACA,gBAAgB,CAAC;AAAA,YACjB,MAAM,MAAM,SAAS;AAAA,UACvB,CAAC;AACD,iBAAO;AAAA,QACT;AACA,kBAAU,SAAS;AAAA,UACjB,CAAC,MAAM,SAAS,KAAK,GAAG,CAAC;AAAA,UACzB,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AACA,QAAI,UAAU,GAAG;AACf,aAAO,cAAc,CAAC;AACtB,aAAO,aAAa,YAAY;AAChC,UAAI,cAAc;AAChB,eAAO,KAAK,yBAAyB,OAAO,QAAQ;AACpD,eAAO,KAAK,eAAe;AAAA,MAC7B;AAAA,IACF,OAAO;AACL,aAAO,cAAc,KAAK;AAC1B,aAAO,aAAa,YAAY;AAChC,UAAI,cAAc;AAChB,eAAO,KAAK,yBAAyB,OAAO,QAAQ;AACpD,eAAO,KAAK,iBAAiB;AAAA,MAC/B;AACA,UAAI,CAAC,OAAO,WAAW;AACrB,eAAO,YAAY;AACnB,YAAI,CAAC,OAAO,mCAAmC;AAC7C,iBAAO,oCAAoC,SAASQ,eAAcC,IAAG;AACnE,gBAAI,CAAC,UAAU,OAAO,UAAW;AACjC,gBAAIA,GAAE,WAAW,KAAM;AACvB,mBAAO,UAAU,oBAAoB,iBAAiB,OAAO,iCAAiC;AAC9F,mBAAO,oCAAoC;AAC3C,mBAAO,OAAO;AACd,mBAAO,YAAY;AACnB,gBAAI,cAAc;AAChB,qBAAO,KAAK,eAAe;AAAA,YAC7B;AAAA,UACF;AAAA,QACF;AACA,eAAO,UAAU,iBAAiB,iBAAiB,OAAO,iCAAiC;AAAA,MAC7F;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,YAAY;AAAA,IACd,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,WAAS,cAAcC,WAAU,cAAc;AAC7C,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,OAAO,SAAS;AAC1B,aAAO,UAAU,MAAM,qBAAqB,GAAGA,SAAQ;AACvD,aAAO,UAAU,MAAM,kBAAkBA,cAAa,IAAI,QAAQ;AAAA,IACpE;AACA,WAAO,KAAK,iBAAiBA,WAAU,YAAY;AAAA,EACrD;AAEA,WAAS,eAAe,MAAM;AAC5B,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,MAAM;AACV,QAAI,CAAC,KAAK;AACR,UAAI,cAAc,cAAe,OAAM;AAAA,eAAgB,cAAc,cAAe,OAAM;AAAA,UAAY,OAAM;AAAA,IAC9G;AACA,WAAO,KAAK,aAAa,IAAI,EAAE;AAC/B,QAAI,gBAAgB,gBAAgB,eAAe;AACjD,UAAI,QAAQ,SAAS;AACnB,eAAO,KAAK,uBAAuB,IAAI,EAAE;AACzC;AAAA,MACF;AACA,aAAO,KAAK,wBAAwB,IAAI,EAAE;AAC1C,UAAI,QAAQ,QAAQ;AAClB,eAAO,KAAK,sBAAsB,IAAI,EAAE;AAAA,MAC1C,OAAO;AACL,eAAO,KAAK,sBAAsB,IAAI,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,WAAS,gBAAgB,cAAc,WAAW;AAChD,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,QAAS;AACpB,QAAI,OAAO,YAAY;AACrB,aAAO,iBAAiB;AAAA,IAC1B;AACA,mBAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,WAAS,cAAc,cAAc,WAAW;AAC9C,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,WAAO,YAAY;AACnB,QAAI,OAAO,QAAS;AACpB,WAAO,cAAc,CAAC;AACtB,mBAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,MAAI,aAAa;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,WAAS,QAAQd,QAAO,OAAO,cAAc,UAAU,SAAS;AAC9D,QAAIA,WAAU,QAAQ;AACpB,MAAAA,SAAQ;AAAA,IACV;AACA,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,QAAI,OAAOA,WAAU,UAAU;AAC7B,MAAAA,SAAQ,SAASA,QAAO,EAAE;AAAA,IAC5B;AACA,UAAM,SAAS;AACf,QAAI,aAAaA;AACjB,QAAI,aAAa,EAAG,cAAa;AACjC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,OAAO,aAAa,OAAO,aAAa,OAAO,gCAAgC;AACtH,aAAO;AAAA,IACT;AACA,QAAI,OAAO,UAAU,aAAa;AAChC,cAAQ,OAAO,OAAO;AAAA,IACxB;AACA,UAAMM,QAAO,KAAK,IAAI,OAAO,OAAO,oBAAoB,UAAU;AAClE,QAAI,YAAYA,QAAO,KAAK,OAAO,aAAaA,SAAQ,OAAO,OAAO,cAAc;AACpF,QAAI,aAAa,SAAS,OAAQ,aAAY,SAAS,SAAS;AAChE,UAAMF,aAAY,CAAC,SAAS,SAAS;AAErC,QAAI,OAAO,qBAAqB;AAC9B,eAAST,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK,GAAG;AAC7C,cAAM,sBAAsB,CAAC,KAAK,MAAMS,aAAY,GAAG;AACvD,cAAM,iBAAiB,KAAK,MAAM,WAAWT,EAAC,IAAI,GAAG;AACrD,cAAM,qBAAqB,KAAK,MAAM,WAAWA,KAAI,CAAC,IAAI,GAAG;AAC7D,YAAI,OAAO,WAAWA,KAAI,CAAC,MAAM,aAAa;AAC5C,cAAI,uBAAuB,kBAAkB,sBAAsB,sBAAsB,qBAAqB,kBAAkB,GAAG;AACjI,yBAAaA;AAAA,UACf,WAAW,uBAAuB,kBAAkB,sBAAsB,oBAAoB;AAC5F,yBAAaA,KAAI;AAAA,UACnB;AAAA,QACF,WAAW,uBAAuB,gBAAgB;AAChD,uBAAaA;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAEA,QAAI,OAAO,eAAe,eAAe,aAAa;AACpD,UAAI,CAAC,OAAO,mBAAmB,MAAMS,aAAY,OAAO,aAAaA,aAAY,OAAO,aAAa,IAAIA,aAAY,OAAO,aAAaA,aAAY,OAAO,aAAa,IAAI;AAC3K,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,kBAAkBA,aAAY,OAAO,aAAaA,aAAY,OAAO,aAAa,GAAG;AAC/F,aAAK,eAAe,OAAO,YAAY;AACrC,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,QAAI,gBAAgB,iBAAiB,MAAM,cAAc;AACvD,aAAO,KAAK,wBAAwB;AAAA,IACtC;AAGA,WAAO,eAAeA,UAAS;AAC/B,QAAI;AACJ,QAAI,aAAa,YAAa,aAAY;AAAA,aAAgB,aAAa,YAAa,aAAY;AAAA,QAAY,aAAY;AAGxH,UAAM,YAAY,OAAO,WAAW,OAAO,OAAO,QAAQ;AAC1D,UAAM,mBAAmB,aAAa;AAEtC,QAAI,CAAC,qBAAqB,OAAO,CAACA,eAAc,OAAO,aAAa,CAAC,OAAOA,eAAc,OAAO,YAAY;AAC3G,aAAO,kBAAkB,UAAU;AAEnC,UAAI,OAAO,YAAY;AACrB,eAAO,iBAAiB;AAAA,MAC1B;AACA,aAAO,oBAAoB;AAC3B,UAAI,OAAO,WAAW,SAAS;AAC7B,eAAO,aAAaA,UAAS;AAAA,MAC/B;AACA,UAAI,cAAc,SAAS;AACzB,eAAO,gBAAgB,cAAc,SAAS;AAC9C,eAAO,cAAc,cAAc,SAAS;AAAA,MAC9C;AACA,aAAO;AAAA,IACT;AACA,QAAI,OAAO,SAAS;AAClB,YAAM,MAAM,OAAO,aAAa;AAChC,YAAMW,KAAI,MAAMX,aAAY,CAACA;AAC7B,UAAI,UAAU,GAAG;AACf,YAAI,WAAW;AACb,iBAAO,UAAU,MAAM,iBAAiB;AACxC,iBAAO,oBAAoB;AAAA,QAC7B;AACA,YAAI,aAAa,CAAC,OAAO,6BAA6B,OAAO,OAAO,eAAe,GAAG;AACpF,iBAAO,4BAA4B;AACnC,gCAAsB,MAAM;AAC1B,sBAAU,MAAM,eAAe,WAAW,IAAIW;AAAA,UAChD,CAAC;AAAA,QACH,OAAO;AACL,oBAAU,MAAM,eAAe,WAAW,IAAIA;AAAA,QAChD;AACA,YAAI,WAAW;AACb,gCAAsB,MAAM;AAC1B,mBAAO,UAAU,MAAM,iBAAiB;AACxC,mBAAO,oBAAoB;AAAA,UAC7B,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,YAAI,CAAC,OAAO,QAAQ,cAAc;AAChC,+BAAqB;AAAA,YACnB;AAAA,YACA,gBAAgBA;AAAA,YAChB,MAAM,MAAM,SAAS;AAAA,UACvB,CAAC;AACD,iBAAO;AAAA,QACT;AACA,kBAAU,SAAS;AAAA,UACjB,CAAC,MAAM,SAAS,KAAK,GAAGA;AAAA,UACxB,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AACA,UAAMC,WAAU,WAAW;AAC3B,UAAM,WAAWA,SAAQ;AACzB,QAAI,aAAa,CAAC,WAAW,YAAY,OAAO,WAAW;AACzD,aAAO,QAAQ,OAAO,OAAO,OAAO,UAAU;AAAA,IAChD;AACA,WAAO,cAAc,KAAK;AAC1B,WAAO,aAAaZ,UAAS;AAC7B,WAAO,kBAAkB,UAAU;AACnC,WAAO,oBAAoB;AAC3B,WAAO,KAAK,yBAAyB,OAAO,QAAQ;AACpD,WAAO,gBAAgB,cAAc,SAAS;AAC9C,QAAI,UAAU,GAAG;AACf,aAAO,cAAc,cAAc,SAAS;AAAA,IAC9C,WAAW,CAAC,OAAO,WAAW;AAC5B,aAAO,YAAY;AACnB,UAAI,CAAC,OAAO,+BAA+B;AACzC,eAAO,gCAAgC,SAASQ,eAAcC,IAAG;AAC/D,cAAI,CAAC,UAAU,OAAO,UAAW;AACjC,cAAIA,GAAE,WAAW,KAAM;AACvB,iBAAO,UAAU,oBAAoB,iBAAiB,OAAO,6BAA6B;AAC1F,iBAAO,gCAAgC;AACvC,iBAAO,OAAO;AACd,iBAAO,cAAc,cAAc,SAAS;AAAA,QAC9C;AAAA,MACF;AACA,aAAO,UAAU,iBAAiB,iBAAiB,OAAO,6BAA6B;AAAA,IACzF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,YAAYb,QAAO,OAAO,cAAc,UAAU;AACzD,QAAIA,WAAU,QAAQ;AACpB,MAAAA,SAAQ;AAAA,IACV;AACA,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,QAAI,OAAOA,WAAU,UAAU;AAC7B,YAAM,gBAAgB,SAASA,QAAO,EAAE;AACxC,MAAAA,SAAQ;AAAA,IACV;AACA,UAAM,SAAS;AACf,QAAI,OAAO,UAAW;AACtB,QAAI,OAAO,UAAU,aAAa;AAChC,cAAQ,OAAO,OAAO;AAAA,IACxB;AACA,UAAM,cAAc,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK,OAAO;AACnF,QAAIiB,YAAWjB;AACf,QAAI,OAAO,OAAO,MAAM;AACtB,UAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AAEnD,QAAAiB,YAAWA,YAAW,OAAO,QAAQ;AAAA,MACvC,OAAO;AACL,YAAI;AACJ,YAAI,aAAa;AACf,gBAAM,aAAaA,YAAW,OAAO,OAAO,KAAK;AACjD,6BAAmB,OAAO,OAAO,KAAK,aAAW,QAAQ,aAAa,yBAAyB,IAAI,MAAM,UAAU,EAAE;AAAA,QACvH,OAAO;AACL,6BAAmB,OAAO,oBAAoBA,SAAQ;AAAA,QACxD;AACA,cAAM,OAAO,cAAc,KAAK,KAAK,OAAO,OAAO,SAAS,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO;AACrG,cAAM;AAAA,UACJ;AAAA,QACF,IAAI,OAAO;AACX,YAAI,gBAAgB,OAAO,OAAO;AAClC,YAAI,kBAAkB,QAAQ;AAC5B,0BAAgB,OAAO,qBAAqB;AAAA,QAC9C,OAAO;AACL,0BAAgB,KAAK,KAAK,WAAW,OAAO,OAAO,eAAe,EAAE,CAAC;AACrE,cAAI,kBAAkB,gBAAgB,MAAM,GAAG;AAC7C,4BAAgB,gBAAgB;AAAA,UAClC;AAAA,QACF;AACA,YAAI,cAAc,OAAO,mBAAmB;AAC5C,YAAI,gBAAgB;AAClB,wBAAc,eAAe,mBAAmB,KAAK,KAAK,gBAAgB,CAAC;AAAA,QAC7E;AACA,YAAI,YAAY,kBAAkB,OAAO,OAAO,kBAAkB,UAAU,CAAC,aAAa;AACxF,wBAAc;AAAA,QAChB;AACA,YAAI,aAAa;AACf,gBAAM,YAAY,iBAAiB,mBAAmB,OAAO,cAAc,SAAS,SAAS,mBAAmB,OAAO,cAAc,IAAI,OAAO,OAAO,gBAAgB,SAAS;AAChL,iBAAO,QAAQ;AAAA,YACb;AAAA,YACA,SAAS;AAAA,YACT,kBAAkB,cAAc,SAAS,mBAAmB,IAAI,mBAAmB,OAAO;AAAA,YAC1F,gBAAgB,cAAc,SAAS,OAAO,YAAY;AAAA,UAC5D,CAAC;AAAA,QACH;AACA,YAAI,aAAa;AACf,gBAAM,aAAaA,YAAW,OAAO,OAAO,KAAK;AACjD,UAAAA,YAAW,OAAO,OAAO,KAAK,aAAW,QAAQ,aAAa,yBAAyB,IAAI,MAAM,UAAU,EAAE;AAAA,QAC/G,OAAO;AACL,UAAAA,YAAW,OAAO,oBAAoBA,SAAQ;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AACA,0BAAsB,MAAM;AAC1B,aAAO,QAAQA,WAAU,OAAO,cAAc,QAAQ;AAAA,IACxD,CAAC;AACD,WAAO;AAAA,EACT;AAGA,WAAS,UAAU,OAAO,cAAc,UAAU;AAChD,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,WAAW,OAAO,UAAW,QAAO;AACzC,QAAI,OAAO,UAAU,aAAa;AAChC,cAAQ,OAAO,OAAO;AAAA,IACxB;AACA,QAAI,WAAW,OAAO;AACtB,QAAI,OAAO,kBAAkB,UAAU,OAAO,mBAAmB,KAAK,OAAO,oBAAoB;AAC/F,iBAAW,KAAK,IAAI,OAAO,qBAAqB,WAAW,IAAI,GAAG,CAAC;AAAA,IACrE;AACA,UAAM,YAAY,OAAO,cAAc,OAAO,qBAAqB,IAAI;AACvE,UAAM,YAAY,OAAO,WAAW,OAAO,QAAQ;AACnD,QAAI,OAAO,MAAM;AACf,UAAI,aAAa,CAAC,aAAa,OAAO,oBAAqB,QAAO;AAClE,aAAO,QAAQ;AAAA,QACb,WAAW;AAAA,MACb,CAAC;AAED,aAAO,cAAc,OAAO,UAAU;AACtC,UAAI,OAAO,gBAAgB,OAAO,OAAO,SAAS,KAAK,OAAO,SAAS;AACrE,8BAAsB,MAAM;AAC1B,iBAAO,QAAQ,OAAO,cAAc,WAAW,OAAO,cAAc,QAAQ;AAAA,QAC9E,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,OAAO,UAAU,OAAO,OAAO;AACjC,aAAO,OAAO,QAAQ,GAAG,OAAO,cAAc,QAAQ;AAAA,IACxD;AACA,WAAO,OAAO,QAAQ,OAAO,cAAc,WAAW,OAAO,cAAc,QAAQ;AAAA,EACrF;AAGA,WAAS,UAAU,OAAO,cAAc,UAAU;AAChD,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,WAAW,OAAO,UAAW,QAAO;AACzC,QAAI,OAAO,UAAU,aAAa;AAChC,cAAQ,OAAO,OAAO;AAAA,IACxB;AACA,UAAM,YAAY,OAAO,WAAW,OAAO,QAAQ;AACnD,QAAI,OAAO,MAAM;AACf,UAAI,aAAa,CAAC,aAAa,OAAO,oBAAqB,QAAO;AAClE,aAAO,QAAQ;AAAA,QACb,WAAW;AAAA,MACb,CAAC;AAED,aAAO,cAAc,OAAO,UAAU;AAAA,IACxC;AACA,UAAMb,aAAY,eAAe,OAAO,YAAY,CAAC,OAAO;AAC5D,aAAS,UAAU,KAAK;AACtB,UAAI,MAAM,EAAG,QAAO,CAAC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC;AAC7C,aAAO,KAAK,MAAM,GAAG;AAAA,IACvB;AACA,UAAM,sBAAsB,UAAUA,UAAS;AAC/C,UAAM,qBAAqB,SAAS,IAAI,SAAO,UAAU,GAAG,CAAC;AAC7D,UAAM,aAAa,OAAO,YAAY,OAAO,SAAS;AACtD,QAAI,WAAW,SAAS,mBAAmB,QAAQ,mBAAmB,IAAI,CAAC;AAC3E,QAAI,OAAO,aAAa,gBAAgB,OAAO,WAAW,aAAa;AACrE,UAAI;AACJ,eAAS,QAAQ,CAAC,MAAM,cAAc;AACpC,YAAI,uBAAuB,MAAM;AAE/B,0BAAgB;AAAA,QAClB;AAAA,MACF,CAAC;AACD,UAAI,OAAO,kBAAkB,aAAa;AACxC,mBAAW,aAAa,SAAS,aAAa,IAAI,SAAS,gBAAgB,IAAI,gBAAgB,IAAI,aAAa;AAAA,MAClH;AAAA,IACF;AACA,QAAI,YAAY;AAChB,QAAI,OAAO,aAAa,aAAa;AACnC,kBAAY,WAAW,QAAQ,QAAQ;AACvC,UAAI,YAAY,EAAG,aAAY,OAAO,cAAc;AACpD,UAAI,OAAO,kBAAkB,UAAU,OAAO,mBAAmB,KAAK,OAAO,oBAAoB;AAC/F,oBAAY,YAAY,OAAO,qBAAqB,YAAY,IAAI,IAAI;AACxE,oBAAY,KAAK,IAAI,WAAW,CAAC;AAAA,MACnC;AAAA,IACF;AACA,QAAI,OAAO,UAAU,OAAO,aAAa;AACvC,YAAM,YAAY,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,WAAW,OAAO,UAAU,OAAO,QAAQ,OAAO,SAAS,IAAI,OAAO,OAAO,SAAS;AACvJ,aAAO,OAAO,QAAQ,WAAW,OAAO,cAAc,QAAQ;AAAA,IAChE,WAAW,OAAO,QAAQ,OAAO,gBAAgB,KAAK,OAAO,SAAS;AACpE,4BAAsB,MAAM;AAC1B,eAAO,QAAQ,WAAW,OAAO,cAAc,QAAQ;AAAA,MACzD,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,OAAO,QAAQ,WAAW,OAAO,cAAc,QAAQ;AAAA,EAChE;AAGA,WAAS,WAAW,OAAO,cAAc,UAAU;AACjD,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,UAAM,SAAS;AACf,QAAI,OAAO,UAAW;AACtB,QAAI,OAAO,UAAU,aAAa;AAChC,cAAQ,OAAO,OAAO;AAAA,IACxB;AACA,WAAO,OAAO,QAAQ,OAAO,aAAa,OAAO,cAAc,QAAQ;AAAA,EACzE;AAGA,WAAS,eAAe,OAAO,cAAc,UAAU,WAAW;AAChE,QAAI,iBAAiB,QAAQ;AAC3B,qBAAe;AAAA,IACjB;AACA,QAAI,cAAc,QAAQ;AACxB,kBAAY;AAAA,IACd;AACA,UAAM,SAAS;AACf,QAAI,OAAO,UAAW;AACtB,QAAI,OAAO,UAAU,aAAa;AAChC,cAAQ,OAAO,OAAO;AAAA,IACxB;AACA,QAAIJ,SAAQ,OAAO;AACnB,UAAMM,QAAO,KAAK,IAAI,OAAO,OAAO,oBAAoBN,MAAK;AAC7D,UAAM,YAAYM,QAAO,KAAK,OAAON,SAAQM,SAAQ,OAAO,OAAO,cAAc;AACjF,UAAMF,aAAY,OAAO,eAAe,OAAO,YAAY,CAAC,OAAO;AACnE,QAAIA,cAAa,OAAO,SAAS,SAAS,GAAG;AAG3C,YAAM,cAAc,OAAO,SAAS,SAAS;AAC7C,YAAM,WAAW,OAAO,SAAS,YAAY,CAAC;AAC9C,UAAIA,aAAY,eAAe,WAAW,eAAe,WAAW;AAClE,QAAAJ,UAAS,OAAO,OAAO;AAAA,MACzB;AAAA,IACF,OAAO;AAGL,YAAM,WAAW,OAAO,SAAS,YAAY,CAAC;AAC9C,YAAM,cAAc,OAAO,SAAS,SAAS;AAC7C,UAAII,aAAY,aAAa,cAAc,YAAY,WAAW;AAChE,QAAAJ,UAAS,OAAO,OAAO;AAAA,MACzB;AAAA,IACF;AACA,IAAAA,SAAQ,KAAK,IAAIA,QAAO,CAAC;AACzB,IAAAA,SAAQ,KAAK,IAAIA,QAAO,OAAO,WAAW,SAAS,CAAC;AACpD,WAAO,OAAO,QAAQA,QAAO,OAAO,cAAc,QAAQ;AAAA,EAC5D;AAEA,WAAS,sBAAsB;AAC7B,UAAM,SAAS;AACf,QAAI,OAAO,UAAW;AACtB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,gBAAgB,OAAO,kBAAkB,SAAS,OAAO,qBAAqB,IAAI,OAAO;AAC/F,QAAI,eAAe,OAAO;AAC1B,QAAIK;AACJ,UAAM,gBAAgB,OAAO,YAAY,iBAAiB,IAAI,OAAO,UAAU;AAC/E,QAAI,OAAO,MAAM;AACf,UAAI,OAAO,UAAW;AACtB,MAAAA,aAAY,SAAS,OAAO,aAAa,aAAa,yBAAyB,GAAG,EAAE;AACpF,UAAI,OAAO,gBAAgB;AACzB,YAAI,eAAe,OAAO,eAAe,gBAAgB,KAAK,eAAe,OAAO,OAAO,SAAS,OAAO,eAAe,gBAAgB,GAAG;AAC3I,iBAAO,QAAQ;AACf,yBAAe,OAAO,cAAc,gBAAgB,UAAU,GAAG,aAAa,6BAA6BA,UAAS,IAAI,EAAE,CAAC,CAAC;AAC5H,mBAAS,MAAM;AACb,mBAAO,QAAQ,YAAY;AAAA,UAC7B,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,QAAQ,YAAY;AAAA,QAC7B;AAAA,MACF,WAAW,eAAe,OAAO,OAAO,SAAS,eAAe;AAC9D,eAAO,QAAQ;AACf,uBAAe,OAAO,cAAc,gBAAgB,UAAU,GAAG,aAAa,6BAA6BA,UAAS,IAAI,EAAE,CAAC,CAAC;AAC5H,iBAAS,MAAM;AACb,iBAAO,QAAQ,YAAY;AAAA,QAC7B,CAAC;AAAA,MACH,OAAO;AACL,eAAO,QAAQ,YAAY;AAAA,MAC7B;AAAA,IACF,OAAO;AACL,aAAO,QAAQ,YAAY;AAAA,IAC7B;AAAA,EACF;AAEA,MAAI,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,WAAS,WAAW,gBAAgB;AAClC,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,QAAS;AACrE,UAAM,aAAa,MAAM;AACvB,YAAM,SAAS,gBAAgB,UAAU,IAAI,OAAO,UAAU,gBAAgB;AAC9E,aAAO,QAAQ,CAAC,IAAIL,WAAU;AAC5B,WAAG,aAAa,2BAA2BA,MAAK;AAAA,MAClD,CAAC;AAAA,IACH;AACA,UAAM,cAAc,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AACrE,UAAM,iBAAiB,OAAO,kBAAkB,cAAc,OAAO,KAAK,OAAO;AACjF,UAAM,kBAAkB,OAAO,OAAO,SAAS,mBAAmB;AAClE,UAAM,iBAAiB,eAAe,OAAO,OAAO,SAAS,OAAO,KAAK,SAAS;AAClF,UAAM,iBAAiB,oBAAkB;AACvC,eAASL,KAAI,GAAGA,KAAI,gBAAgBA,MAAK,GAAG;AAC1C,cAAM,UAAU,OAAO,YAAY,cAAc,gBAAgB,CAAC,OAAO,eAAe,CAAC,IAAI,cAAc,OAAO,CAAC,OAAO,YAAY,OAAO,eAAe,CAAC;AAC7J,eAAO,SAAS,OAAO,OAAO;AAAA,MAChC;AAAA,IACF;AACA,QAAI,iBAAiB;AACnB,UAAI,OAAO,oBAAoB;AAC7B,cAAM,cAAc,iBAAiB,OAAO,OAAO,SAAS;AAC5D,uBAAe,WAAW;AAC1B,eAAO,aAAa;AACpB,eAAO,aAAa;AAAA,MACtB,OAAO;AACL,oBAAY,iLAAiL;AAAA,MAC/L;AACA,iBAAW;AAAA,IACb,WAAW,gBAAgB;AACzB,UAAI,OAAO,oBAAoB;AAC7B,cAAM,cAAc,OAAO,KAAK,OAAO,OAAO,OAAO,SAAS,OAAO,KAAK;AAC1E,uBAAe,WAAW;AAC1B,eAAO,aAAa;AACpB,eAAO,aAAa;AAAA,MACtB,OAAO;AACL,oBAAY,4KAA4K;AAAA,MAC1L;AACA,iBAAW;AAAA,IACb,OAAO;AACL,iBAAW;AAAA,IACb;AACA,WAAO,QAAQ;AAAA,MACb;AAAA,MACA,WAAW,OAAO,iBAAiB,SAAY;AAAA,IACjD,CAAC;AAAA,EACH;AAEA,WAAS,QAAQ,OAAO;AACtB,QAAI;AAAA,MACF;AAAA,MACA,SAAAuB,WAAU;AAAA,MACV;AAAA,MACA,cAAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,UAAU,SAAS,CAAC,IAAI;AAC5B,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,OAAO,KAAM;AACzB,WAAO,KAAK,eAAe;AAC3B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,WAAO,iBAAiB;AACxB,WAAO,iBAAiB;AACxB,QAAI,OAAO,WAAW,OAAO,QAAQ,SAAS;AAC5C,UAAID,UAAS;AACX,YAAI,CAAC,OAAO,kBAAkB,OAAO,cAAc,GAAG;AACpD,iBAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,GAAG,OAAO,IAAI;AAAA,QAC7D,WAAW,OAAO,kBAAkB,OAAO,YAAY,OAAO,eAAe;AAC3E,iBAAO,QAAQ,OAAO,QAAQ,OAAO,SAAS,OAAO,WAAW,GAAG,OAAO,IAAI;AAAA,QAChF,WAAW,OAAO,cAAc,OAAO,SAAS,SAAS,GAAG;AAC1D,iBAAO,QAAQ,OAAO,QAAQ,cAAc,GAAG,OAAO,IAAI;AAAA,QAC5D;AAAA,MACF;AACA,aAAO,iBAAiB;AACxB,aAAO,iBAAiB;AACxB,aAAO,KAAK,SAAS;AACrB;AAAA,IACF;AACA,QAAI,gBAAgB,OAAO;AAC3B,QAAI,kBAAkB,QAAQ;AAC5B,sBAAgB,OAAO,qBAAqB;AAAA,IAC9C,OAAO;AACL,sBAAgB,KAAK,KAAK,WAAW,OAAO,eAAe,EAAE,CAAC;AAC9D,UAAI,kBAAkB,gBAAgB,MAAM,GAAG;AAC7C,wBAAgB,gBAAgB;AAAA,MAClC;AAAA,IACF;AACA,UAAM,iBAAiB,OAAO,qBAAqB,gBAAgB,OAAO;AAC1E,QAAI,eAAe;AACnB,QAAI,eAAe,mBAAmB,GAAG;AACvC,sBAAgB,iBAAiB,eAAe;AAAA,IAClD;AACA,oBAAgB,OAAO;AACvB,WAAO,eAAe;AACtB,UAAM,cAAc,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AACrE,QAAI,OAAO,SAAS,gBAAgB,cAAc;AAChD,kBAAY,2OAA2O;AAAA,IACzP,WAAW,eAAe,OAAO,KAAK,SAAS,OAAO;AACpD,kBAAY,yEAAyE;AAAA,IACvF;AACA,UAAM,uBAAuB,CAAC;AAC9B,UAAM,sBAAsB,CAAC;AAC7B,QAAI,cAAc,OAAO;AACzB,QAAI,OAAO,qBAAqB,aAAa;AAC3C,yBAAmB,OAAO,cAAc,OAAO,KAAK,QAAM,GAAG,UAAU,SAAS,OAAO,gBAAgB,CAAC,CAAC;AAAA,IAC3G,OAAO;AACL,oBAAc;AAAA,IAChB;AACA,UAAM,SAAS,cAAc,UAAU,CAAC;AACxC,UAAM,SAAS,cAAc,UAAU,CAAC;AACxC,QAAI,kBAAkB;AACtB,QAAI,iBAAiB;AACrB,UAAM,OAAO,cAAc,KAAK,KAAK,OAAO,SAAS,OAAO,KAAK,IAAI,IAAI,OAAO;AAChF,UAAM,iBAAiB,cAAc,OAAO,gBAAgB,EAAE,SAAS;AACvE,UAAM,0BAA0B,kBAAkB,kBAAkB,OAAOC,kBAAiB,cAAc,CAAC,gBAAgB,IAAI,MAAM;AAErI,QAAI,0BAA0B,cAAc;AAC1C,wBAAkB,KAAK,IAAI,eAAe,yBAAyB,cAAc;AACjF,eAASxB,KAAI,GAAGA,KAAI,eAAe,yBAAyBA,MAAK,GAAG;AAClE,cAAMK,SAAQL,KAAI,KAAK,MAAMA,KAAI,IAAI,IAAI;AACzC,YAAI,aAAa;AACf,gBAAM,oBAAoB,OAAOK,SAAQ;AACzC,mBAASL,KAAI,OAAO,SAAS,GAAGA,MAAK,GAAGA,MAAK,GAAG;AAC9C,gBAAI,OAAOA,EAAC,EAAE,WAAW,kBAAmB,sBAAqB,KAAKA,EAAC;AAAA,UACzE;AAAA,QAIF,OAAO;AACL,+BAAqB,KAAK,OAAOK,SAAQ,CAAC;AAAA,QAC5C;AAAA,MACF;AAAA,IACF,WAAW,0BAA0B,gBAAgB,OAAO,cAAc;AACxE,uBAAiB,KAAK,IAAI,2BAA2B,OAAO,eAAe,IAAI,cAAc;AAC7F,eAASL,KAAI,GAAGA,KAAI,gBAAgBA,MAAK,GAAG;AAC1C,cAAMK,SAAQL,KAAI,KAAK,MAAMA,KAAI,IAAI,IAAI;AACzC,YAAI,aAAa;AACf,iBAAO,QAAQ,CAACM,QAAO,eAAe;AACpC,gBAAIA,OAAM,WAAWD,OAAO,qBAAoB,KAAK,UAAU;AAAA,UACjE,CAAC;AAAA,QACH,OAAO;AACL,8BAAoB,KAAKA,MAAK;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AACA,WAAO,sBAAsB;AAC7B,0BAAsB,MAAM;AAC1B,aAAO,sBAAsB;AAAA,IAC/B,CAAC;AACD,QAAI,QAAQ;AACV,2BAAqB,QAAQ,CAAAA,WAAS;AACpC,eAAOA,MAAK,EAAE,oBAAoB;AAClC,iBAAS,QAAQ,OAAOA,MAAK,CAAC;AAC9B,eAAOA,MAAK,EAAE,oBAAoB;AAAA,MACpC,CAAC;AAAA,IACH;AACA,QAAI,QAAQ;AACV,0BAAoB,QAAQ,CAAAA,WAAS;AACnC,eAAOA,MAAK,EAAE,oBAAoB;AAClC,iBAAS,OAAO,OAAOA,MAAK,CAAC;AAC7B,eAAOA,MAAK,EAAE,oBAAoB;AAAA,MACpC,CAAC;AAAA,IACH;AACA,WAAO,aAAa;AACpB,QAAI,OAAO,kBAAkB,QAAQ;AACnC,aAAO,aAAa;AAAA,IACtB,WAAW,gBAAgB,qBAAqB,SAAS,KAAK,UAAU,oBAAoB,SAAS,KAAK,SAAS;AACjH,aAAO,OAAO,QAAQ,CAACC,QAAO,eAAe;AAC3C,eAAO,KAAK,YAAY,YAAYA,QAAO,OAAO,MAAM;AAAA,MAC1D,CAAC;AAAA,IACH;AACA,QAAI,OAAO,qBAAqB;AAC9B,aAAO,mBAAmB;AAAA,IAC5B;AACA,QAAIiB,UAAS;AACX,UAAI,qBAAqB,SAAS,KAAK,QAAQ;AAC7C,YAAI,OAAO,mBAAmB,aAAa;AACzC,gBAAM,wBAAwB,OAAO,WAAW,WAAW;AAC3D,gBAAM,oBAAoB,OAAO,WAAW,cAAc,eAAe;AACzE,gBAAM,OAAO,oBAAoB;AACjC,cAAI,cAAc;AAChB,mBAAO,aAAa,OAAO,YAAY,IAAI;AAAA,UAC7C,OAAO;AACL,mBAAO,QAAQ,cAAc,KAAK,KAAK,eAAe,GAAG,GAAG,OAAO,IAAI;AACvE,gBAAIC,eAAc;AAChB,qBAAO,gBAAgB,iBAAiB,OAAO,gBAAgB,iBAAiB;AAChF,qBAAO,gBAAgB,mBAAmB,OAAO,gBAAgB,mBAAmB;AAAA,YACtF;AAAA,UACF;AAAA,QACF,OAAO;AACL,cAAIA,eAAc;AAChB,kBAAM,QAAQ,cAAc,qBAAqB,SAAS,OAAO,KAAK,OAAO,qBAAqB;AAClG,mBAAO,QAAQ,OAAO,cAAc,OAAO,GAAG,OAAO,IAAI;AACzD,mBAAO,gBAAgB,mBAAmB,OAAO;AAAA,UACnD;AAAA,QACF;AAAA,MACF,WAAW,oBAAoB,SAAS,KAAK,QAAQ;AACnD,YAAI,OAAO,mBAAmB,aAAa;AACzC,gBAAM,wBAAwB,OAAO,WAAW,WAAW;AAC3D,gBAAM,oBAAoB,OAAO,WAAW,cAAc,cAAc;AACxE,gBAAM,OAAO,oBAAoB;AACjC,cAAI,cAAc;AAChB,mBAAO,aAAa,OAAO,YAAY,IAAI;AAAA,UAC7C,OAAO;AACL,mBAAO,QAAQ,cAAc,gBAAgB,GAAG,OAAO,IAAI;AAC3D,gBAAIA,eAAc;AAChB,qBAAO,gBAAgB,iBAAiB,OAAO,gBAAgB,iBAAiB;AAChF,qBAAO,gBAAgB,mBAAmB,OAAO,gBAAgB,mBAAmB;AAAA,YACtF;AAAA,UACF;AAAA,QACF,OAAO;AACL,gBAAM,QAAQ,cAAc,oBAAoB,SAAS,OAAO,KAAK,OAAO,oBAAoB;AAChG,iBAAO,QAAQ,OAAO,cAAc,OAAO,GAAG,OAAO,IAAI;AAAA,QAC3D;AAAA,MACF;AAAA,IACF;AACA,WAAO,iBAAiB;AACxB,WAAO,iBAAiB;AACxB,QAAI,OAAO,cAAc,OAAO,WAAW,WAAW,CAAC,cAAc;AACnE,YAAM,aAAa;AAAA,QACjB;AAAA,QACA;AAAA,QACA,cAAAA;AAAA,QACA;AAAA,QACA,cAAc;AAAA,MAChB;AACA,UAAI,MAAM,QAAQ,OAAO,WAAW,OAAO,GAAG;AAC5C,eAAO,WAAW,QAAQ,QAAQ,CAAAC,OAAK;AACrC,cAAI,CAACA,GAAE,aAAaA,GAAE,OAAO,KAAM,CAAAA,GAAE,QAAQ;AAAA,YAC3C,GAAG;AAAA,YACH,SAASA,GAAE,OAAO,kBAAkB,OAAO,gBAAgBF,WAAU;AAAA,UACvE,CAAC;AAAA,QACH,CAAC;AAAA,MACH,WAAW,OAAO,WAAW,mBAAmB,OAAO,eAAe,OAAO,WAAW,QAAQ,OAAO,MAAM;AAC3G,eAAO,WAAW,QAAQ,QAAQ;AAAA,UAChC,GAAG;AAAA,UACH,SAAS,OAAO,WAAW,QAAQ,OAAO,kBAAkB,OAAO,gBAAgBA,WAAU;AAAA,QAC/F,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO,KAAK,SAAS;AAAA,EACvB;AAEA,WAAS,cAAc;AACrB,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,QAAS;AACrE,WAAO,aAAa;AACpB,UAAM,iBAAiB,CAAC;AACxB,WAAO,OAAO,QAAQ,aAAW;AAC/B,YAAMlB,SAAQ,OAAO,QAAQ,qBAAqB,cAAc,QAAQ,aAAa,yBAAyB,IAAI,IAAI,QAAQ;AAC9H,qBAAeA,MAAK,IAAI;AAAA,IAC1B,CAAC;AACD,WAAO,OAAO,QAAQ,aAAW;AAC/B,cAAQ,gBAAgB,yBAAyB;AAAA,IACnD,CAAC;AACD,mBAAe,QAAQ,aAAW;AAChC,eAAS,OAAO,OAAO;AAAA,IACzB,CAAC;AACD,WAAO,aAAa;AACpB,WAAO,QAAQ,OAAO,WAAW,CAAC;AAAA,EACpC;AAEA,MAAI,OAAO;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,WAAS,cAAc,QAAQ;AAC7B,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,OAAO,iBAAiB,OAAO,OAAO,iBAAiB,OAAO,YAAY,OAAO,OAAO,QAAS;AAC7G,UAAM,KAAK,OAAO,OAAO,sBAAsB,cAAc,OAAO,KAAK,OAAO;AAChF,QAAI,OAAO,WAAW;AACpB,aAAO,sBAAsB;AAAA,IAC/B;AACA,OAAG,MAAM,SAAS;AAClB,OAAG,MAAM,SAAS,SAAS,aAAa;AACxC,QAAI,OAAO,WAAW;AACpB,4BAAsB,MAAM;AAC1B,eAAO,sBAAsB;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,EACF;AAEA,WAAS,kBAAkB;AACzB,UAAM,SAAS;AACf,QAAI,OAAO,OAAO,iBAAiB,OAAO,YAAY,OAAO,OAAO,SAAS;AAC3E;AAAA,IACF;AACA,QAAI,OAAO,WAAW;AACpB,aAAO,sBAAsB;AAAA,IAC/B;AACA,WAAO,OAAO,OAAO,sBAAsB,cAAc,OAAO,WAAW,EAAE,MAAM,SAAS;AAC5F,QAAI,OAAO,WAAW;AACpB,4BAAsB,MAAM;AAC1B,eAAO,sBAAsB;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,aAAa;AAAA,IACf;AAAA,IACA;AAAA,EACF;AAGA,WAAS,eAAe,UAAU,MAAM;AACtC,QAAI,SAAS,QAAQ;AACnB,aAAO;AAAA,IACT;AACA,aAAS,cAAc,IAAI;AACzB,UAAI,CAAC,MAAM,OAAO,YAAY,KAAK,OAAO,UAAU,EAAG,QAAO;AAC9D,UAAI,GAAG,aAAc,MAAK,GAAG;AAC7B,YAAM,QAAQ,GAAG,QAAQ,QAAQ;AACjC,UAAI,CAAC,SAAS,CAAC,GAAG,aAAa;AAC7B,eAAO;AAAA,MACT;AACA,aAAO,SAAS,cAAc,GAAG,YAAY,EAAE,IAAI;AAAA,IACrD;AACA,WAAO,cAAc,IAAI;AAAA,EAC3B;AACA,WAAS,iBAAiB,QAAQD,QAAO,QAAQ;AAC/C,UAAMX,UAAS,UAAU;AACzB,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM,qBAAqB,OAAO;AAClC,UAAM,qBAAqB,OAAO;AAClC,QAAI,uBAAuB,UAAU,sBAAsB,UAAUA,QAAO,aAAa,qBAAqB;AAC5G,UAAI,uBAAuB,WAAW;AACpC,QAAAW,OAAM,eAAe;AACrB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,WAAS,aAAaA,QAAO;AAC3B,UAAM,SAAS;AACf,UAAMV,YAAW,YAAY;AAC7B,QAAIwB,KAAId;AACR,QAAIc,GAAE,cAAe,CAAAA,KAAIA,GAAE;AAC3B,UAAM,OAAO,OAAO;AACpB,QAAIA,GAAE,SAAS,eAAe;AAC5B,UAAI,KAAK,cAAc,QAAQ,KAAK,cAAcA,GAAE,WAAW;AAC7D;AAAA,MACF;AACA,WAAK,YAAYA,GAAE;AAAA,IACrB,WAAWA,GAAE,SAAS,gBAAgBA,GAAE,cAAc,WAAW,GAAG;AAClE,WAAK,UAAUA,GAAE,cAAc,CAAC,EAAE;AAAA,IACpC;AACA,QAAIA,GAAE,SAAS,cAAc;AAE3B,uBAAiB,QAAQA,IAAGA,GAAE,cAAc,CAAC,EAAE,KAAK;AACpD;AAAA,IACF;AACA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,QAAS;AACd,QAAI,CAAC,OAAO,iBAAiBA,GAAE,gBAAgB,QAAS;AACxD,QAAI,OAAO,aAAa,OAAO,gCAAgC;AAC7D;AAAA,IACF;AACA,QAAI,CAAC,OAAO,aAAa,OAAO,WAAW,OAAO,MAAM;AACtD,aAAO,QAAQ;AAAA,IACjB;AACA,QAAI,WAAWA,GAAE;AACjB,QAAI,OAAO,sBAAsB,WAAW;AAC1C,UAAI,CAAC,iBAAiB,UAAU,OAAO,SAAS,EAAG;AAAA,IACrD;AACA,QAAI,WAAWA,MAAKA,GAAE,UAAU,EAAG;AACnC,QAAI,YAAYA,MAAKA,GAAE,SAAS,EAAG;AACnC,QAAI,KAAK,aAAa,KAAK,QAAS;AAGpC,UAAM,uBAAuB,CAAC,CAAC,OAAO,kBAAkB,OAAO,mBAAmB;AAElF,UAAM,YAAYA,GAAE,eAAeA,GAAE,aAAa,IAAIA,GAAE;AACxD,QAAI,wBAAwBA,GAAE,UAAUA,GAAE,OAAO,cAAc,WAAW;AACxE,iBAAW,UAAU,CAAC;AAAA,IACxB;AACA,UAAM,oBAAoB,OAAO,oBAAoB,OAAO,oBAAoB,IAAI,OAAO,cAAc;AACzG,UAAM,iBAAiB,CAAC,EAAEA,GAAE,UAAUA,GAAE,OAAO;AAG/C,QAAI,OAAO,cAAc,iBAAiB,eAAe,mBAAmB,QAAQ,IAAI,SAAS,QAAQ,iBAAiB,IAAI;AAC5H,aAAO,aAAa;AACpB;AAAA,IACF;AACA,QAAI,OAAO,cAAc;AACvB,UAAI,CAAC,SAAS,QAAQ,OAAO,YAAY,EAAG;AAAA,IAC9C;AACA,YAAQ,WAAWA,GAAE;AACrB,YAAQ,WAAWA,GAAE;AACrB,UAAM,SAAS,QAAQ;AACvB,UAAM,SAAS,QAAQ;AAIvB,QAAI,CAAC,iBAAiB,QAAQA,IAAG,MAAM,GAAG;AACxC;AAAA,IACF;AACA,WAAO,OAAO,MAAM;AAAA,MAClB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,qBAAqB;AAAA,MACrB,aAAa;AAAA,MACb,aAAa;AAAA,IACf,CAAC;AACD,YAAQ,SAAS;AACjB,YAAQ,SAAS;AACjB,SAAK,iBAAiBQ,KAAI;AAC1B,WAAO,aAAa;AACpB,WAAO,WAAW;AAClB,WAAO,iBAAiB;AACxB,QAAI,OAAO,YAAY,EAAG,MAAK,qBAAqB;AACpD,QAAI,iBAAiB;AACrB,QAAI,SAAS,QAAQ,KAAK,iBAAiB,GAAG;AAC5C,uBAAiB;AACjB,UAAI,SAAS,aAAa,UAAU;AAClC,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AACA,QAAIhC,UAAS,iBAAiBA,UAAS,cAAc,QAAQ,KAAK,iBAAiB,KAAKA,UAAS,kBAAkB,aAAawB,GAAE,gBAAgB,WAAWA,GAAE,gBAAgB,WAAW,CAAC,SAAS,QAAQ,KAAK,iBAAiB,IAAI;AACpO,MAAAxB,UAAS,cAAc,KAAK;AAAA,IAC9B;AACA,UAAM,uBAAuB,kBAAkB,OAAO,kBAAkB,OAAO;AAC/E,SAAK,OAAO,iCAAiC,yBAAyB,CAAC,SAAS,mBAAmB;AACjG,MAAAwB,GAAE,eAAe;AAAA,IACnB;AACA,QAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,YAAY,OAAO,aAAa,CAAC,OAAO,SAAS;AACxG,aAAO,SAAS,aAAa;AAAA,IAC/B;AACA,WAAO,KAAK,cAAcA,EAAC;AAAA,EAC7B;AAEA,WAAS,YAAYd,QAAO;AAC1B,UAAMV,YAAW,YAAY;AAC7B,UAAM,SAAS;AACf,UAAM,OAAO,OAAO;AACpB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,QAAS;AACd,QAAI,CAAC,OAAO,iBAAiBU,OAAM,gBAAgB,QAAS;AAC5D,QAAIc,KAAId;AACR,QAAIc,GAAE,cAAe,CAAAA,KAAIA,GAAE;AAC3B,QAAIA,GAAE,SAAS,eAAe;AAC5B,UAAI,KAAK,YAAY,KAAM;AAC3B,YAAMS,MAAKT,GAAE;AACb,UAAIS,QAAO,KAAK,UAAW;AAAA,IAC7B;AACA,QAAI;AACJ,QAAIT,GAAE,SAAS,aAAa;AAC1B,oBAAc,CAAC,GAAGA,GAAE,cAAc,EAAE,KAAK,CAAAE,OAAKA,GAAE,eAAe,KAAK,OAAO;AAC3E,UAAI,CAAC,eAAe,YAAY,eAAe,KAAK,QAAS;AAAA,IAC/D,OAAO;AACL,oBAAcF;AAAA,IAChB;AACA,QAAI,CAAC,KAAK,WAAW;AACnB,UAAI,KAAK,eAAe,KAAK,aAAa;AACxC,eAAO,KAAK,qBAAqBA,EAAC;AAAA,MACpC;AACA;AAAA,IACF;AACA,UAAM,QAAQ,YAAY;AAC1B,UAAM,QAAQ,YAAY;AAC1B,QAAIA,GAAE,yBAAyB;AAC7B,cAAQ,SAAS;AACjB,cAAQ,SAAS;AACjB;AAAA,IACF;AACA,QAAI,CAAC,OAAO,gBAAgB;AAC1B,UAAI,CAACA,GAAE,OAAO,QAAQ,KAAK,iBAAiB,GAAG;AAC7C,eAAO,aAAa;AAAA,MACtB;AACA,UAAI,KAAK,WAAW;AAClB,eAAO,OAAO,SAAS;AAAA,UACrB,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,UAAU;AAAA,QACZ,CAAC;AACD,aAAK,iBAAiBQ,KAAI;AAAA,MAC5B;AACA;AAAA,IACF;AACA,QAAI,OAAO,uBAAuB,CAAC,OAAO,MAAM;AAC9C,UAAI,OAAO,WAAW,GAAG;AAEvB,YAAI,QAAQ,QAAQ,UAAU,OAAO,aAAa,OAAO,aAAa,KAAK,QAAQ,QAAQ,UAAU,OAAO,aAAa,OAAO,aAAa,GAAG;AAC9I,eAAK,YAAY;AACjB,eAAK,UAAU;AACf;AAAA,QACF;AAAA,MACF,WAAW,QAAQ,QAAQ,UAAU,OAAO,aAAa,OAAO,aAAa,KAAK,QAAQ,QAAQ,UAAU,OAAO,aAAa,OAAO,aAAa,GAAG;AACrJ;AAAA,MACF;AAAA,IACF;AACA,QAAIhC,UAAS,iBAAiBA,UAAS,cAAc,QAAQ,KAAK,iBAAiB,KAAKA,UAAS,kBAAkBwB,GAAE,UAAUA,GAAE,gBAAgB,SAAS;AACxJ,MAAAxB,UAAS,cAAc,KAAK;AAAA,IAC9B;AACA,QAAIA,UAAS,eAAe;AAC1B,UAAIwB,GAAE,WAAWxB,UAAS,iBAAiBwB,GAAE,OAAO,QAAQ,KAAK,iBAAiB,GAAG;AACnF,aAAK,UAAU;AACf,eAAO,aAAa;AACpB;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK,qBAAqB;AAC5B,aAAO,KAAK,aAAaA,EAAC;AAAA,IAC5B;AACA,YAAQ,YAAY,QAAQ;AAC5B,YAAQ,YAAY,QAAQ;AAC5B,YAAQ,WAAW;AACnB,YAAQ,WAAW;AACnB,UAAM,QAAQ,QAAQ,WAAW,QAAQ;AACzC,UAAM,QAAQ,QAAQ,WAAW,QAAQ;AACzC,QAAI,OAAO,OAAO,aAAa,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,OAAO,OAAO,UAAW;AAC7F,QAAI,OAAO,KAAK,gBAAgB,aAAa;AAC3C,UAAI;AACJ,UAAI,OAAO,aAAa,KAAK,QAAQ,aAAa,QAAQ,UAAU,OAAO,WAAW,KAAK,QAAQ,aAAa,QAAQ,QAAQ;AAC9H,aAAK,cAAc;AAAA,MACrB,OAAO;AAEL,YAAI,QAAQ,QAAQ,QAAQ,SAAS,IAAI;AACvC,uBAAa,KAAK,MAAM,KAAK,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK;AACvE,eAAK,cAAc,OAAO,aAAa,IAAI,aAAa,OAAO,aAAa,KAAK,aAAa,OAAO;AAAA,QACvG;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK,aAAa;AACpB,aAAO,KAAK,qBAAqBA,EAAC;AAAA,IACpC;AACA,QAAI,OAAO,KAAK,gBAAgB,aAAa;AAC3C,UAAI,QAAQ,aAAa,QAAQ,UAAU,QAAQ,aAAa,QAAQ,QAAQ;AAC9E,aAAK,cAAc;AAAA,MACrB;AAAA,IACF;AACA,QAAI,KAAK,eAAeA,GAAE,SAAS,eAAe,KAAK,iCAAiC;AACtF,WAAK,YAAY;AACjB;AAAA,IACF;AACA,QAAI,CAAC,KAAK,aAAa;AACrB;AAAA,IACF;AACA,WAAO,aAAa;AACpB,QAAI,CAAC,OAAO,WAAWA,GAAE,YAAY;AACnC,MAAAA,GAAE,eAAe;AAAA,IACnB;AACA,QAAI,OAAO,4BAA4B,CAAC,OAAO,QAAQ;AACrD,MAAAA,GAAE,gBAAgB;AAAA,IACpB;AACA,QAAI,OAAO,OAAO,aAAa,IAAI,QAAQ;AAC3C,QAAI,cAAc,OAAO,aAAa,IAAI,QAAQ,WAAW,QAAQ,YAAY,QAAQ,WAAW,QAAQ;AAC5G,QAAI,OAAO,gBAAgB;AACzB,aAAO,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI;AACnC,oBAAc,KAAK,IAAI,WAAW,KAAK,MAAM,IAAI;AAAA,IACnD;AACA,YAAQ,OAAO;AACf,YAAQ,OAAO;AACf,QAAI,KAAK;AACP,aAAO,CAAC;AACR,oBAAc,CAAC;AAAA,IACjB;AACA,UAAM,uBAAuB,OAAO;AACpC,WAAO,iBAAiB,OAAO,IAAI,SAAS;AAC5C,WAAO,mBAAmB,cAAc,IAAI,SAAS;AACrD,UAAM,SAAS,OAAO,OAAO,QAAQ,CAAC,OAAO;AAC7C,UAAM,eAAe,OAAO,qBAAqB,UAAU,OAAO,kBAAkB,OAAO,qBAAqB,UAAU,OAAO;AACjI,QAAI,CAAC,KAAK,SAAS;AACjB,UAAI,UAAU,cAAc;AAC1B,eAAO,QAAQ;AAAA,UACb,WAAW,OAAO;AAAA,QACpB,CAAC;AAAA,MACH;AACA,WAAK,iBAAiB,OAAO,aAAa;AAC1C,aAAO,cAAc,CAAC;AACtB,UAAI,OAAO,WAAW;AACpB,cAAM,MAAM,IAAI,OAAO,YAAY,iBAAiB;AAAA,UAClD,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,QAAQ;AAAA,YACN,mBAAmB;AAAA,UACrB;AAAA,QACF,CAAC;AACD,eAAO,UAAU,cAAc,GAAG;AAAA,MACpC;AACA,WAAK,sBAAsB;AAE3B,UAAI,OAAO,eAAe,OAAO,mBAAmB,QAAQ,OAAO,mBAAmB,OAAO;AAC3F,eAAO,cAAc,IAAI;AAAA,MAC3B;AACA,aAAO,KAAK,mBAAmBA,EAAC;AAAA,IAClC;AACA,QAAI;AACJ,yBAAI,KAAK,GAAE,QAAQ;AACnB,QAAI,OAAO,mBAAmB,SAAS,KAAK,WAAW,KAAK,sBAAsB,yBAAyB,OAAO,oBAAoB,UAAU,gBAAgB,KAAK,IAAI,IAAI,KAAK,GAAG;AACnL,aAAO,OAAO,SAAS;AAAA,QACrB,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,QACV,gBAAgB,KAAK;AAAA,MACvB,CAAC;AACD,WAAK,gBAAgB;AACrB,WAAK,iBAAiB,KAAK;AAC3B;AAAA,IACF;AACA,WAAO,KAAK,cAAcA,EAAC;AAC3B,SAAK,UAAU;AACf,SAAK,mBAAmB,OAAO,KAAK;AACpC,QAAI,sBAAsB;AAC1B,QAAI,kBAAkB,OAAO;AAC7B,QAAI,OAAO,qBAAqB;AAC9B,wBAAkB;AAAA,IACpB;AACA,QAAI,OAAO,GAAG;AACZ,UAAI,UAAU,gBAAgB,CAAC,aAAa,KAAK,sBAAsB,KAAK,oBAAoB,OAAO,iBAAiB,OAAO,aAAa,IAAI,OAAO,gBAAgB,OAAO,cAAc,CAAC,KAAK,OAAO,kBAAkB,UAAU,OAAO,OAAO,SAAS,OAAO,iBAAiB,IAAI,OAAO,gBAAgB,OAAO,cAAc,CAAC,IAAI,OAAO,OAAO,eAAe,KAAK,OAAO,OAAO,eAAe,OAAO,aAAa,IAAI;AAC9Z,eAAO,QAAQ;AAAA,UACb,WAAW;AAAA,UACX,cAAc;AAAA,UACd,kBAAkB;AAAA,QACpB,CAAC;AAAA,MACH;AACA,UAAI,KAAK,mBAAmB,OAAO,aAAa,GAAG;AACjD,8BAAsB;AACtB,YAAI,OAAO,YAAY;AACrB,eAAK,mBAAmB,OAAO,aAAa,IAAI,KAAK,CAAC,OAAO,aAAa,IAAI,KAAK,iBAAiB,SAAS;AAAA,QAC/G;AAAA,MACF;AAAA,IACF,WAAW,OAAO,GAAG;AACnB,UAAI,UAAU,gBAAgB,CAAC,aAAa,KAAK,sBAAsB,KAAK,oBAAoB,OAAO,iBAAiB,OAAO,aAAa,IAAI,OAAO,gBAAgB,OAAO,gBAAgB,SAAS,CAAC,IAAI,OAAO,OAAO,gBAAgB,OAAO,kBAAkB,UAAU,OAAO,OAAO,SAAS,OAAO,iBAAiB,IAAI,OAAO,gBAAgB,OAAO,gBAAgB,SAAS,CAAC,IAAI,OAAO,OAAO,eAAe,KAAK,OAAO,aAAa,IAAI;AACpb,eAAO,QAAQ;AAAA,UACb,WAAW;AAAA,UACX,cAAc;AAAA,UACd,kBAAkB,OAAO,OAAO,UAAU,OAAO,kBAAkB,SAAS,OAAO,qBAAqB,IAAI,KAAK,KAAK,WAAW,OAAO,eAAe,EAAE,CAAC;AAAA,QAC5J,CAAC;AAAA,MACH;AACA,UAAI,KAAK,mBAAmB,OAAO,aAAa,GAAG;AACjD,8BAAsB;AACtB,YAAI,OAAO,YAAY;AACrB,eAAK,mBAAmB,OAAO,aAAa,IAAI,KAAK,OAAO,aAAa,IAAI,KAAK,iBAAiB,SAAS;AAAA,QAC9G;AAAA,MACF;AAAA,IACF;AACA,QAAI,qBAAqB;AACvB,MAAAA,GAAE,0BAA0B;AAAA,IAC9B;AAGA,QAAI,CAAC,OAAO,kBAAkB,OAAO,mBAAmB,UAAU,KAAK,mBAAmB,KAAK,gBAAgB;AAC7G,WAAK,mBAAmB,KAAK;AAAA,IAC/B;AACA,QAAI,CAAC,OAAO,kBAAkB,OAAO,mBAAmB,UAAU,KAAK,mBAAmB,KAAK,gBAAgB;AAC7G,WAAK,mBAAmB,KAAK;AAAA,IAC/B;AACA,QAAI,CAAC,OAAO,kBAAkB,CAAC,OAAO,gBAAgB;AACpD,WAAK,mBAAmB,KAAK;AAAA,IAC/B;AAGA,QAAI,OAAO,YAAY,GAAG;AACxB,UAAI,KAAK,IAAI,IAAI,IAAI,OAAO,aAAa,KAAK,oBAAoB;AAChE,YAAI,CAAC,KAAK,oBAAoB;AAC5B,eAAK,qBAAqB;AAC1B,kBAAQ,SAAS,QAAQ;AACzB,kBAAQ,SAAS,QAAQ;AACzB,eAAK,mBAAmB,KAAK;AAC7B,kBAAQ,OAAO,OAAO,aAAa,IAAI,QAAQ,WAAW,QAAQ,SAAS,QAAQ,WAAW,QAAQ;AACtG;AAAA,QACF;AAAA,MACF,OAAO;AACL,aAAK,mBAAmB,KAAK;AAC7B;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,OAAO,gBAAgB,OAAO,QAAS;AAG5C,QAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,YAAY,OAAO,qBAAqB;AAC/F,aAAO,kBAAkB;AACzB,aAAO,oBAAoB;AAAA,IAC7B;AACA,QAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,UAAU;AACjE,aAAO,SAAS,YAAY;AAAA,IAC9B;AAEA,WAAO,eAAe,KAAK,gBAAgB;AAE3C,WAAO,aAAa,KAAK,gBAAgB;AAAA,EAC3C;AAEA,WAAS,WAAWd,QAAO;AACzB,UAAM,SAAS;AACf,UAAM,OAAO,OAAO;AACpB,QAAIc,KAAId;AACR,QAAIc,GAAE,cAAe,CAAAA,KAAIA,GAAE;AAC3B,QAAI;AACJ,UAAM,eAAeA,GAAE,SAAS,cAAcA,GAAE,SAAS;AACzD,QAAI,CAAC,cAAc;AACjB,UAAI,KAAK,YAAY,KAAM;AAC3B,UAAIA,GAAE,cAAc,KAAK,UAAW;AACpC,oBAAcA;AAAA,IAChB,OAAO;AACL,oBAAc,CAAC,GAAGA,GAAE,cAAc,EAAE,KAAK,CAAAE,OAAKA,GAAE,eAAe,KAAK,OAAO;AAC3E,UAAI,CAAC,eAAe,YAAY,eAAe,KAAK,QAAS;AAAA,IAC/D;AACA,QAAI,CAAC,iBAAiB,cAAc,gBAAgB,aAAa,EAAE,SAASF,GAAE,IAAI,GAAG;AACnF,YAAM,UAAU,CAAC,iBAAiB,aAAa,EAAE,SAASA,GAAE,IAAI,MAAM,OAAO,QAAQ,YAAY,OAAO,QAAQ;AAChH,UAAI,CAAC,SAAS;AACZ;AAAA,MACF;AAAA,IACF;AACA,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,QAAS;AACd,QAAI,CAAC,OAAO,iBAAiBA,GAAE,gBAAgB,QAAS;AACxD,QAAI,KAAK,qBAAqB;AAC5B,aAAO,KAAK,YAAYA,EAAC;AAAA,IAC3B;AACA,SAAK,sBAAsB;AAC3B,QAAI,CAAC,KAAK,WAAW;AACnB,UAAI,KAAK,WAAW,OAAO,YAAY;AACrC,eAAO,cAAc,KAAK;AAAA,MAC5B;AACA,WAAK,UAAU;AACf,WAAK,cAAc;AACnB;AAAA,IACF;AAGA,QAAI,OAAO,cAAc,KAAK,WAAW,KAAK,cAAc,OAAO,mBAAmB,QAAQ,OAAO,mBAAmB,OAAO;AAC7H,aAAO,cAAc,KAAK;AAAA,IAC5B;AAGA,UAAM,eAAeQ,KAAI;AACzB,UAAM,WAAW,eAAe,KAAK;AAGrC,QAAI,OAAO,YAAY;AACrB,YAAM,WAAWR,GAAE,QAAQA,GAAE,gBAAgBA,GAAE,aAAa;AAC5D,aAAO,mBAAmB,YAAY,SAAS,CAAC,KAAKA,GAAE,QAAQ,QAAQ;AACvE,aAAO,KAAK,aAAaA,EAAC;AAC1B,UAAI,WAAW,OAAO,eAAe,KAAK,gBAAgB,KAAK;AAC7D,eAAO,KAAK,yBAAyBA,EAAC;AAAA,MACxC;AAAA,IACF;AACA,SAAK,gBAAgBQ,KAAI;AACzB,aAAS,MAAM;AACb,UAAI,CAAC,OAAO,UAAW,QAAO,aAAa;AAAA,IAC7C,CAAC;AACD,QAAI,CAAC,KAAK,aAAa,CAAC,KAAK,WAAW,CAAC,OAAO,kBAAkB,QAAQ,SAAS,KAAK,CAAC,KAAK,iBAAiB,KAAK,qBAAqB,KAAK,kBAAkB,CAAC,KAAK,eAAe;AACnL,WAAK,YAAY;AACjB,WAAK,UAAU;AACf,WAAK,cAAc;AACnB;AAAA,IACF;AACA,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,QAAI;AACJ,QAAI,OAAO,cAAc;AACvB,mBAAa,MAAM,OAAO,YAAY,CAAC,OAAO;AAAA,IAChD,OAAO;AACL,mBAAa,CAAC,KAAK;AAAA,IACrB;AACA,QAAI,OAAO,SAAS;AAClB;AAAA,IACF;AACA,QAAI,OAAO,YAAY,OAAO,SAAS,SAAS;AAC9C,aAAO,SAAS,WAAW;AAAA,QACzB;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAGA,UAAM,cAAc,cAAc,CAAC,OAAO,aAAa,KAAK,CAAC,OAAO,OAAO;AAC3E,QAAI,YAAY;AAChB,QAAI,YAAY,OAAO,gBAAgB,CAAC;AACxC,aAAS1B,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAKA,KAAI,OAAO,qBAAqB,IAAI,OAAO,gBAAgB;AACrG,YAAM4B,aAAY5B,KAAI,OAAO,qBAAqB,IAAI,IAAI,OAAO;AACjE,UAAI,OAAO,WAAWA,KAAI4B,UAAS,MAAM,aAAa;AACpD,YAAI,eAAe,cAAc,WAAW5B,EAAC,KAAK,aAAa,WAAWA,KAAI4B,UAAS,GAAG;AACxF,sBAAY5B;AACZ,sBAAY,WAAWA,KAAI4B,UAAS,IAAI,WAAW5B,EAAC;AAAA,QACtD;AAAA,MACF,WAAW,eAAe,cAAc,WAAWA,EAAC,GAAG;AACrD,oBAAYA;AACZ,oBAAY,WAAW,WAAW,SAAS,CAAC,IAAI,WAAW,WAAW,SAAS,CAAC;AAAA,MAClF;AAAA,IACF;AACA,QAAI,mBAAmB;AACvB,QAAI,kBAAkB;AACtB,QAAI,OAAO,QAAQ;AACjB,UAAI,OAAO,aAAa;AACtB,0BAAkB,OAAO,WAAW,OAAO,QAAQ,WAAW,OAAO,UAAU,OAAO,QAAQ,OAAO,SAAS,IAAI,OAAO,OAAO,SAAS;AAAA,MAC3I,WAAW,OAAO,OAAO;AACvB,2BAAmB;AAAA,MACrB;AAAA,IACF;AAEA,UAAM,SAAS,aAAa,WAAW,SAAS,KAAK;AACrD,UAAM,YAAY,YAAY,OAAO,qBAAqB,IAAI,IAAI,OAAO;AACzE,QAAI,WAAW,OAAO,cAAc;AAElC,UAAI,CAAC,OAAO,YAAY;AACtB,eAAO,QAAQ,OAAO,WAAW;AACjC;AAAA,MACF;AACA,UAAI,OAAO,mBAAmB,QAAQ;AACpC,YAAI,SAAS,OAAO,gBAAiB,QAAO,QAAQ,OAAO,UAAU,OAAO,QAAQ,mBAAmB,YAAY,SAAS;AAAA,YAAO,QAAO,QAAQ,SAAS;AAAA,MAC7J;AACA,UAAI,OAAO,mBAAmB,QAAQ;AACpC,YAAI,QAAQ,IAAI,OAAO,iBAAiB;AACtC,iBAAO,QAAQ,YAAY,SAAS;AAAA,QACtC,WAAW,oBAAoB,QAAQ,QAAQ,KAAK,KAAK,IAAI,KAAK,IAAI,OAAO,iBAAiB;AAC5F,iBAAO,QAAQ,eAAe;AAAA,QAChC,OAAO;AACL,iBAAO,QAAQ,SAAS;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,OAAO;AAEL,UAAI,CAAC,OAAO,aAAa;AACvB,eAAO,QAAQ,OAAO,WAAW;AACjC;AAAA,MACF;AACA,YAAM,oBAAoB,OAAO,eAAekB,GAAE,WAAW,OAAO,WAAW,UAAUA,GAAE,WAAW,OAAO,WAAW;AACxH,UAAI,CAAC,mBAAmB;AACtB,YAAI,OAAO,mBAAmB,QAAQ;AACpC,iBAAO,QAAQ,qBAAqB,OAAO,mBAAmB,YAAY,SAAS;AAAA,QACrF;AACA,YAAI,OAAO,mBAAmB,QAAQ;AACpC,iBAAO,QAAQ,oBAAoB,OAAO,kBAAkB,SAAS;AAAA,QACvE;AAAA,MACF,WAAWA,GAAE,WAAW,OAAO,WAAW,QAAQ;AAChD,eAAO,QAAQ,YAAY,SAAS;AAAA,MACtC,OAAO;AACL,eAAO,QAAQ,SAAS;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAEA,WAAS,WAAW;AAClB,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,MAAM,GAAG,gBAAgB,EAAG;AAGhC,QAAI,OAAO,aAAa;AACtB,aAAO,cAAc;AAAA,IACvB;AAGA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,YAAY,OAAO,WAAW,OAAO,OAAO,QAAQ;AAG1D,WAAO,iBAAiB;AACxB,WAAO,iBAAiB;AACxB,WAAO,WAAW;AAClB,WAAO,aAAa;AACpB,WAAO,oBAAoB;AAC3B,UAAM,gBAAgB,aAAa,OAAO;AAC1C,SAAK,OAAO,kBAAkB,UAAU,OAAO,gBAAgB,MAAM,OAAO,SAAS,CAAC,OAAO,eAAe,CAAC,OAAO,OAAO,kBAAkB,CAAC,eAAe;AAC3J,aAAO,QAAQ,OAAO,OAAO,SAAS,GAAG,GAAG,OAAO,IAAI;AAAA,IACzD,OAAO;AACL,UAAI,OAAO,OAAO,QAAQ,CAAC,WAAW;AACpC,eAAO,YAAY,OAAO,WAAW,GAAG,OAAO,IAAI;AAAA,MACrD,OAAO;AACL,eAAO,QAAQ,OAAO,aAAa,GAAG,OAAO,IAAI;AAAA,MACnD;AAAA,IACF;AACA,QAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,SAAS,QAAQ;AACxE,mBAAa,OAAO,SAAS,aAAa;AAC1C,aAAO,SAAS,gBAAgB,WAAW,MAAM;AAC/C,YAAI,OAAO,YAAY,OAAO,SAAS,WAAW,OAAO,SAAS,QAAQ;AACxE,iBAAO,SAAS,OAAO;AAAA,QACzB;AAAA,MACF,GAAG,GAAG;AAAA,IACR;AAEA,WAAO,iBAAiB;AACxB,WAAO,iBAAiB;AACxB,QAAI,OAAO,OAAO,iBAAiB,aAAa,OAAO,UAAU;AAC/D,aAAO,cAAc;AAAA,IACvB;AAAA,EACF;AAEA,WAAS,QAAQA,IAAG;AAClB,UAAM,SAAS;AACf,QAAI,CAAC,OAAO,QAAS;AACrB,QAAI,CAAC,OAAO,YAAY;AACtB,UAAI,OAAO,OAAO,cAAe,CAAAA,GAAE,eAAe;AAClD,UAAI,OAAO,OAAO,4BAA4B,OAAO,WAAW;AAC9D,QAAAA,GAAE,gBAAgB;AAClB,QAAAA,GAAE,yBAAyB;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAEA,WAAS,WAAW;AAClB,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,QAAS;AACd,WAAO,oBAAoB,OAAO;AAClC,QAAI,OAAO,aAAa,GAAG;AACzB,aAAO,YAAY,CAAC,UAAU;AAAA,IAChC,OAAO;AACL,aAAO,YAAY,CAAC,UAAU;AAAA,IAChC;AAEA,QAAI,OAAO,cAAc,EAAG,QAAO,YAAY;AAC/C,WAAO,kBAAkB;AACzB,WAAO,oBAAoB;AAC3B,QAAI;AACJ,UAAM,iBAAiB,OAAO,aAAa,IAAI,OAAO,aAAa;AACnE,QAAI,mBAAmB,GAAG;AACxB,oBAAc;AAAA,IAChB,OAAO;AACL,qBAAe,OAAO,YAAY,OAAO,aAAa,KAAK;AAAA,IAC7D;AACA,QAAI,gBAAgB,OAAO,UAAU;AACnC,aAAO,eAAe,eAAe,CAAC,OAAO,YAAY,OAAO,SAAS;AAAA,IAC3E;AACA,WAAO,KAAK,gBAAgB,OAAO,WAAW,KAAK;AAAA,EACrD;AAEA,WAAS,OAAOA,IAAG;AACjB,UAAM,SAAS;AACf,yBAAqB,QAAQA,GAAE,MAAM;AACrC,QAAI,OAAO,OAAO,WAAW,OAAO,OAAO,kBAAkB,UAAU,CAAC,OAAO,OAAO,YAAY;AAChG;AAAA,IACF;AACA,WAAO,OAAO;AAAA,EAChB;AAEA,WAAS,uBAAuB;AAC9B,UAAM,SAAS;AACf,QAAI,OAAO,8BAA+B;AAC1C,WAAO,gCAAgC;AACvC,QAAI,OAAO,OAAO,qBAAqB;AACrC,aAAO,GAAG,MAAM,cAAc;AAAA,IAChC;AAAA,EACF;AAEA,MAAM,SAAS,CAAC,QAAQ,WAAW;AACjC,UAAMxB,YAAW,YAAY;AAC7B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,UAAU,CAAC,CAAC,OAAO;AACzB,UAAM,YAAY,WAAW,OAAO,qBAAqB;AACzD,UAAM,eAAe;AACrB,QAAI,CAAC,MAAM,OAAO,OAAO,SAAU;AAGnC,IAAAA,UAAS,SAAS,EAAE,cAAc,OAAO,sBAAsB;AAAA,MAC7D,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AACD,OAAG,SAAS,EAAE,cAAc,OAAO,cAAc;AAAA,MAC/C,SAAS;AAAA,IACX,CAAC;AACD,OAAG,SAAS,EAAE,eAAe,OAAO,cAAc;AAAA,MAChD,SAAS;AAAA,IACX,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,aAAa,OAAO,aAAa;AAAA,MACnD,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,eAAe,OAAO,aAAa;AAAA,MACrD,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,YAAY,OAAO,YAAY;AAAA,MACjD,SAAS;AAAA,IACX,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,aAAa,OAAO,YAAY;AAAA,MAClD,SAAS;AAAA,IACX,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,iBAAiB,OAAO,YAAY;AAAA,MACtD,SAAS;AAAA,IACX,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,eAAe,OAAO,YAAY;AAAA,MACpD,SAAS;AAAA,IACX,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,cAAc,OAAO,YAAY;AAAA,MACnD,SAAS;AAAA,IACX,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,gBAAgB,OAAO,YAAY;AAAA,MACrD,SAAS;AAAA,IACX,CAAC;AACD,IAAAA,UAAS,SAAS,EAAE,eAAe,OAAO,YAAY;AAAA,MACpD,SAAS;AAAA,IACX,CAAC;AAGD,QAAI,OAAO,iBAAiB,OAAO,0BAA0B;AAC3D,SAAG,SAAS,EAAE,SAAS,OAAO,SAAS,IAAI;AAAA,IAC7C;AACA,QAAI,OAAO,SAAS;AAClB,gBAAU,SAAS,EAAE,UAAU,OAAO,QAAQ;AAAA,IAChD;AAGA,QAAI,OAAO,sBAAsB;AAC/B,aAAO,YAAY,EAAE,OAAO,OAAO,OAAO,UAAU,4CAA4C,yBAAyB,UAAU,IAAI;AAAA,IACzI,OAAO;AACL,aAAO,YAAY,EAAE,kBAAkB,UAAU,IAAI;AAAA,IACvD;AAGA,OAAG,SAAS,EAAE,QAAQ,OAAO,QAAQ;AAAA,MACnC,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,WAAS,eAAe;AACtB,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,WAAO,eAAe,aAAa,KAAK,MAAM;AAC9C,WAAO,cAAc,YAAY,KAAK,MAAM;AAC5C,WAAO,aAAa,WAAW,KAAK,MAAM;AAC1C,WAAO,uBAAuB,qBAAqB,KAAK,MAAM;AAC9D,QAAI,OAAO,SAAS;AAClB,aAAO,WAAW,SAAS,KAAK,MAAM;AAAA,IACxC;AACA,WAAO,UAAU,QAAQ,KAAK,MAAM;AACpC,WAAO,SAAS,OAAO,KAAK,MAAM;AAClC,WAAO,QAAQ,IAAI;AAAA,EACrB;AACA,WAAS,eAAe;AACtB,UAAM,SAAS;AACf,WAAO,QAAQ,KAAK;AAAA,EACtB;AACA,MAAI,WAAW;AAAA,IACb;AAAA,IACA;AAAA,EACF;AAEA,MAAM,gBAAgB,CAAC,QAAQ,WAAW;AACxC,WAAO,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AAAA,EAC1D;AACA,WAAS,gBAAgB;AACvB,UAAM,SAAS;AACf,UAAM;AAAA,MACJ,WAAAgB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAMmB,eAAc,OAAO;AAC3B,QAAI,CAACA,gBAAeA,gBAAe,OAAO,KAAKA,YAAW,EAAE,WAAW,EAAG;AAC1E,UAAMnC,YAAW,YAAY;AAG7B,UAAM,kBAAkB,OAAO,oBAAoB,YAAY,CAAC,OAAO,kBAAkB,OAAO,kBAAkB;AAClH,UAAM,sBAAsB,CAAC,UAAU,WAAW,EAAE,SAAS,OAAO,eAAe,KAAK,CAAC,OAAO,kBAAkB,OAAO,KAAKA,UAAS,cAAc,OAAO,eAAe;AAC3K,UAAM,aAAa,OAAO,cAAcmC,cAAa,iBAAiB,mBAAmB;AACzF,QAAI,CAAC,cAAc,OAAO,sBAAsB,WAAY;AAC5D,UAAM,uBAAuB,cAAcA,eAAcA,aAAY,UAAU,IAAI;AACnF,UAAM,mBAAmB,wBAAwB,OAAO;AACxD,UAAM,cAAc,cAAc,QAAQ,MAAM;AAChD,UAAM,aAAa,cAAc,QAAQ,gBAAgB;AACzD,UAAM,gBAAgB,OAAO,OAAO;AACpC,UAAM,eAAe,iBAAiB;AACtC,UAAM,aAAa,OAAO;AAC1B,QAAI,eAAe,CAAC,YAAY;AAC9B,SAAG,UAAU,OAAO,GAAG,OAAO,sBAAsB,QAAQ,GAAG,OAAO,sBAAsB,aAAa;AACzG,aAAO,qBAAqB;AAAA,IAC9B,WAAW,CAAC,eAAe,YAAY;AACrC,SAAG,UAAU,IAAI,GAAG,OAAO,sBAAsB,MAAM;AACvD,UAAI,iBAAiB,KAAK,QAAQ,iBAAiB,KAAK,SAAS,YAAY,CAAC,iBAAiB,KAAK,QAAQ,OAAO,KAAK,SAAS,UAAU;AACzI,WAAG,UAAU,IAAI,GAAG,OAAO,sBAAsB,aAAa;AAAA,MAChE;AACA,aAAO,qBAAqB;AAAA,IAC9B;AACA,QAAI,iBAAiB,CAAC,cAAc;AAClC,aAAO,gBAAgB;AAAA,IACzB,WAAW,CAAC,iBAAiB,cAAc;AACzC,aAAO,cAAc;AAAA,IACvB;AAGA,KAAC,cAAc,cAAc,WAAW,EAAE,QAAQ,UAAQ;AACxD,UAAI,OAAO,iBAAiB,IAAI,MAAM,YAAa;AACnD,YAAM,mBAAmB,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE;AACtD,YAAM,kBAAkB,iBAAiB,IAAI,KAAK,iBAAiB,IAAI,EAAE;AACzE,UAAI,oBAAoB,CAAC,iBAAiB;AACxC,eAAO,IAAI,EAAE,QAAQ;AAAA,MACvB;AACA,UAAI,CAAC,oBAAoB,iBAAiB;AACxC,eAAO,IAAI,EAAE,OAAO;AAAA,MACtB;AAAA,IACF,CAAC;AACD,UAAM,mBAAmB,iBAAiB,aAAa,iBAAiB,cAAc,OAAO;AAC7F,UAAM,cAAc,OAAO,SAAS,iBAAiB,kBAAkB,OAAO,iBAAiB;AAC/F,UAAM,UAAU,OAAO;AACvB,QAAI,oBAAoB,aAAa;AACnC,aAAO,gBAAgB;AAAA,IACzB;AACA,IAAAC,QAAO,OAAO,QAAQ,gBAAgB;AACtC,UAAM,YAAY,OAAO,OAAO;AAChC,UAAM,UAAU,OAAO,OAAO;AAC9B,WAAO,OAAO,QAAQ;AAAA,MACpB,gBAAgB,OAAO,OAAO;AAAA,MAC9B,gBAAgB,OAAO,OAAO;AAAA,MAC9B,gBAAgB,OAAO,OAAO;AAAA,IAChC,CAAC;AACD,QAAI,cAAc,CAAC,WAAW;AAC5B,aAAO,QAAQ;AAAA,IACjB,WAAW,CAAC,cAAc,WAAW;AACnC,aAAO,OAAO;AAAA,IAChB;AACA,WAAO,oBAAoB;AAC3B,WAAO,KAAK,qBAAqB,gBAAgB;AACjD,QAAI,aAAa;AACf,UAAI,aAAa;AACf,eAAO,YAAY;AACnB,eAAO,WAAWpB,UAAS;AAC3B,eAAO,aAAa;AAAA,MACtB,WAAW,CAAC,WAAW,SAAS;AAC9B,eAAO,WAAWA,UAAS;AAC3B,eAAO,aAAa;AAAA,MACtB,WAAW,WAAW,CAAC,SAAS;AAC9B,eAAO,YAAY;AAAA,MACrB;AAAA,IACF;AACA,WAAO,KAAK,cAAc,gBAAgB;AAAA,EAC5C;AAEA,WAAS,cAAcmB,cAAa,MAAM,aAAa;AACrD,QAAI,SAAS,QAAQ;AACnB,aAAO;AAAA,IACT;AACA,QAAI,CAACA,gBAAe,SAAS,eAAe,CAAC,YAAa,QAAO;AACjE,QAAI,aAAa;AACjB,UAAMpC,UAAS,UAAU;AACzB,UAAM,gBAAgB,SAAS,WAAWA,QAAO,cAAc,YAAY;AAC3E,UAAM,SAAS,OAAO,KAAKoC,YAAW,EAAE,IAAI,WAAS;AACnD,UAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,GAAG,MAAM,GAAG;AACzD,cAAM,WAAW,WAAW,MAAM,OAAO,CAAC,CAAC;AAC3C,cAAM,QAAQ,gBAAgB;AAC9B,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,QACL,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO,KAAK,CAACE,IAAGC,OAAM,SAASD,GAAE,OAAO,EAAE,IAAI,SAASC,GAAE,OAAO,EAAE,CAAC;AACnE,aAAShC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,OAAOA,EAAC;AACZ,UAAI,SAAS,UAAU;AACrB,YAAIP,QAAO,WAAW,eAAe,KAAK,KAAK,EAAE,SAAS;AACxD,uBAAa;AAAA,QACf;AAAA,MACF,WAAW,SAAS,YAAY,aAAa;AAC3C,qBAAa;AAAA,MACf;AAAA,IACF;AACA,WAAO,cAAc;AAAA,EACvB;AAEA,MAAI,cAAc;AAAA,IAChB;AAAA,IACA;AAAA,EACF;AAEA,WAAS,eAAe,SAAS,QAAQ;AACvC,UAAM,gBAAgB,CAAC;AACvB,YAAQ,QAAQ,UAAQ;AACtB,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,KAAK,IAAI,EAAE,QAAQ,gBAAc;AACtC,cAAI,KAAK,UAAU,GAAG;AACpB,0BAAc,KAAK,SAAS,UAAU;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH,WAAW,OAAO,SAAS,UAAU;AACnC,sBAAc,KAAK,SAAS,IAAI;AAAA,MAClC;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AACA,WAAS,aAAa;AACpB,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,UAAM,WAAW,eAAe,CAAC,eAAe,OAAO,WAAW;AAAA,MAChE,aAAa,OAAO,OAAO,YAAY,OAAO,SAAS;AAAA,IACzD,GAAG;AAAA,MACD,cAAc,OAAO;AAAA,IACvB,GAAG;AAAA,MACD,OAAO;AAAA,IACT,GAAG;AAAA,MACD,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AAAA,IAC5C,GAAG;AAAA,MACD,eAAe,OAAO,QAAQ,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,SAAS;AAAA,IAC7E,GAAG;AAAA,MACD,WAAW,OAAO;AAAA,IACpB,GAAG;AAAA,MACD,OAAO,OAAO;AAAA,IAChB,GAAG;AAAA,MACD,YAAY,OAAO;AAAA,IACrB,GAAG;AAAA,MACD,YAAY,OAAO,WAAW,OAAO;AAAA,IACvC,GAAG;AAAA,MACD,kBAAkB,OAAO;AAAA,IAC3B,CAAC,GAAG,OAAO,sBAAsB;AACjC,eAAW,KAAK,GAAG,QAAQ;AAC3B,OAAG,UAAU,IAAI,GAAG,UAAU;AAC9B,WAAO,qBAAqB;AAAA,EAC9B;AAEA,WAAS,gBAAgB;AACvB,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC,MAAM,OAAO,OAAO,SAAU;AACnC,OAAG,UAAU,OAAO,GAAG,UAAU;AACjC,WAAO,qBAAqB;AAAA,EAC9B;AAEA,MAAI,UAAU;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AAEA,WAAS,gBAAgB;AACvB,UAAM,SAAS;AACf,UAAM;AAAA,MACJ,UAAU;AAAA,MACV;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,QAAI,oBAAoB;AACtB,YAAM,iBAAiB,OAAO,OAAO,SAAS;AAC9C,YAAM,qBAAqB,OAAO,WAAW,cAAc,IAAI,OAAO,gBAAgB,cAAc,IAAI,qBAAqB;AAC7H,aAAO,WAAW,OAAO,OAAO;AAAA,IAClC,OAAO;AACL,aAAO,WAAW,OAAO,SAAS,WAAW;AAAA,IAC/C;AACA,QAAI,OAAO,mBAAmB,MAAM;AAClC,aAAO,iBAAiB,CAAC,OAAO;AAAA,IAClC;AACA,QAAI,OAAO,mBAAmB,MAAM;AAClC,aAAO,iBAAiB,CAAC,OAAO;AAAA,IAClC;AACA,QAAI,aAAa,cAAc,OAAO,UAAU;AAC9C,aAAO,QAAQ;AAAA,IACjB;AACA,QAAI,cAAc,OAAO,UAAU;AACjC,aAAO,KAAK,OAAO,WAAW,SAAS,QAAQ;AAAA,IACjD;AAAA,EACF;AACA,MAAI,kBAAkB;AAAA,IACpB;AAAA,EACF;AAEA,MAAIwC,YAAW;AAAA,IACb,MAAM;AAAA,IACN,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,OAAO;AAAA,IACP,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,mBAAmB;AAAA;AAAA,IAEnB,OAAO;AAAA,IACP,QAAQ;AAAA;AAAA,IAER,gCAAgC;AAAA;AAAA,IAEhC,WAAW;AAAA,IACX,KAAK;AAAA;AAAA,IAEL,oBAAoB;AAAA,IACpB,oBAAoB;AAAA;AAAA,IAEpB,YAAY;AAAA;AAAA,IAEZ,gBAAgB;AAAA;AAAA,IAEhB,kBAAkB;AAAA;AAAA,IAElB,QAAQ;AAAA;AAAA;AAAA,IAIR,aAAa;AAAA,IACb,iBAAiB;AAAA;AAAA,IAEjB,cAAc;AAAA,IACd,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IACpB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA;AAAA,IAEpB,mBAAmB;AAAA;AAAA,IAEnB,qBAAqB;AAAA,IACrB,0BAA0B;AAAA;AAAA,IAE1B,eAAe;AAAA;AAAA,IAEf,cAAc;AAAA;AAAA,IAEd,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,0BAA0B;AAAA,IAC1B,0BAA0B;AAAA,IAC1B,+BAA+B;AAAA,IAC/B,qBAAqB;AAAA;AAAA,IAErB,mBAAmB;AAAA;AAAA,IAEnB,YAAY;AAAA,IACZ,iBAAiB;AAAA;AAAA,IAEjB,qBAAqB;AAAA;AAAA,IAErB,YAAY;AAAA;AAAA,IAEZ,eAAe;AAAA,IACf,0BAA0B;AAAA,IAC1B,qBAAqB;AAAA;AAAA,IAErB,MAAM;AAAA,IACN,oBAAoB;AAAA,IACpB,sBAAsB;AAAA,IACtB,qBAAqB;AAAA;AAAA,IAErB,QAAQ;AAAA;AAAA,IAER,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,cAAc;AAAA;AAAA,IAEd,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,mBAAmB;AAAA;AAAA,IAEnB,kBAAkB;AAAA,IAClB,yBAAyB;AAAA;AAAA,IAEzB,wBAAwB;AAAA;AAAA,IAExB,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,qBAAqB;AAAA;AAAA,IAErB,oBAAoB;AAAA;AAAA,IAEpB,cAAc;AAAA,EAChB;AAEA,WAAS,mBAAmB,QAAQ,kBAAkB;AACpD,WAAO,SAAS,aAAa,KAAK;AAChC,UAAI,QAAQ,QAAQ;AAClB,cAAM,CAAC;AAAA,MACT;AACA,YAAM,kBAAkB,OAAO,KAAK,GAAG,EAAE,CAAC;AAC1C,YAAM,eAAe,IAAI,eAAe;AACxC,UAAI,OAAO,iBAAiB,YAAY,iBAAiB,MAAM;AAC7D,QAAAH,QAAO,kBAAkB,GAAG;AAC5B;AAAA,MACF;AACA,UAAI,OAAO,eAAe,MAAM,MAAM;AACpC,eAAO,eAAe,IAAI;AAAA,UACxB,SAAS;AAAA,QACX;AAAA,MACF;AACA,UAAI,oBAAoB,gBAAgB,OAAO,eAAe,KAAK,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,eAAe,EAAE,QAAQ;AACxK,eAAO,eAAe,EAAE,OAAO;AAAA,MACjC;AACA,UAAI,CAAC,cAAc,WAAW,EAAE,QAAQ,eAAe,KAAK,KAAK,OAAO,eAAe,KAAK,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,IAAI;AAC1J,eAAO,eAAe,EAAE,OAAO;AAAA,MACjC;AACA,UAAI,EAAE,mBAAmB,UAAU,aAAa,eAAe;AAC7D,QAAAA,QAAO,kBAAkB,GAAG;AAC5B;AAAA,MACF;AACA,UAAI,OAAO,OAAO,eAAe,MAAM,YAAY,EAAE,aAAa,OAAO,eAAe,IAAI;AAC1F,eAAO,eAAe,EAAE,UAAU;AAAA,MACpC;AACA,UAAI,CAAC,OAAO,eAAe,EAAG,QAAO,eAAe,IAAI;AAAA,QACtD,SAAS;AAAA,MACX;AACA,MAAAA,QAAO,kBAAkB,GAAG;AAAA,IAC9B;AAAA,EACF;AAGA,MAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,eAAe;AAAA,IACf;AAAA,EACF;AACA,MAAM,mBAAmB,CAAC;AAC1B,MAAM,SAAN,MAAM,QAAO;AAAA,IACX,cAAc;AACZ,UAAI;AACJ,UAAI;AACJ,eAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,aAAK,IAAI,IAAI,UAAU,IAAI;AAAA,MAC7B;AACA,UAAI,KAAK,WAAW,KAAK,KAAK,CAAC,EAAE,eAAe,OAAO,UAAU,SAAS,KAAK,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM,UAAU;AACjH,iBAAS,KAAK,CAAC;AAAA,MACjB,OAAO;AACL,SAAC,IAAI,MAAM,IAAI;AAAA,MACjB;AACA,UAAI,CAAC,OAAQ,UAAS,CAAC;AACvB,eAASA,QAAO,CAAC,GAAG,MAAM;AAC1B,UAAI,MAAM,CAAC,OAAO,GAAI,QAAO,KAAK;AAClC,YAAMpC,YAAW,YAAY;AAC7B,UAAI,OAAO,MAAM,OAAO,OAAO,OAAO,YAAYA,UAAS,iBAAiB,OAAO,EAAE,EAAE,SAAS,GAAG;AACjG,cAAM,UAAU,CAAC;AACjB,QAAAA,UAAS,iBAAiB,OAAO,EAAE,EAAE,QAAQ,iBAAe;AAC1D,gBAAM,YAAYoC,QAAO,CAAC,GAAG,QAAQ;AAAA,YACnC,IAAI;AAAA,UACN,CAAC;AACD,kBAAQ,KAAK,IAAI,QAAO,SAAS,CAAC;AAAA,QACpC,CAAC;AAED,eAAO;AAAA,MACT;AAGA,YAAM,SAAS;AACf,aAAO,aAAa;AACpB,aAAO,UAAU,WAAW;AAC5B,aAAO,SAAS,UAAU;AAAA,QACxB,WAAW,OAAO;AAAA,MACpB,CAAC;AACD,aAAO,UAAU,WAAW;AAC5B,aAAO,kBAAkB,CAAC;AAC1B,aAAO,qBAAqB,CAAC;AAC7B,aAAO,UAAU,CAAC,GAAG,OAAO,WAAW;AACvC,UAAI,OAAO,WAAW,MAAM,QAAQ,OAAO,OAAO,GAAG;AACnD,eAAO,QAAQ,KAAK,GAAG,OAAO,OAAO;AAAA,MACvC;AACA,YAAM,mBAAmB,CAAC;AAC1B,aAAO,QAAQ,QAAQ,SAAO;AAC5B,YAAI;AAAA,UACF;AAAA,UACA;AAAA,UACA,cAAc,mBAAmB,QAAQ,gBAAgB;AAAA,UACzD,IAAI,OAAO,GAAG,KAAK,MAAM;AAAA,UACzB,MAAM,OAAO,KAAK,KAAK,MAAM;AAAA,UAC7B,KAAK,OAAO,IAAI,KAAK,MAAM;AAAA,UAC3B,MAAM,OAAO,KAAK,KAAK,MAAM;AAAA,QAC/B,CAAC;AAAA,MACH,CAAC;AAGD,YAAM,eAAeA,QAAO,CAAC,GAAGG,WAAU,gBAAgB;AAG1D,aAAO,SAASH,QAAO,CAAC,GAAG,cAAc,kBAAkB,MAAM;AACjE,aAAO,iBAAiBA,QAAO,CAAC,GAAG,OAAO,MAAM;AAChD,aAAO,eAAeA,QAAO,CAAC,GAAG,MAAM;AAGvC,UAAI,OAAO,UAAU,OAAO,OAAO,IAAI;AACrC,eAAO,KAAK,OAAO,OAAO,EAAE,EAAE,QAAQ,eAAa;AACjD,iBAAO,GAAG,WAAW,OAAO,OAAO,GAAG,SAAS,CAAC;AAAA,QAClD,CAAC;AAAA,MACH;AACA,UAAI,OAAO,UAAU,OAAO,OAAO,OAAO;AACxC,eAAO,MAAM,OAAO,OAAO,KAAK;AAAA,MAClC;AAGA,aAAO,OAAO,QAAQ;AAAA,QACpB,SAAS,OAAO,OAAO;AAAA,QACvB;AAAA;AAAA,QAEA,YAAY,CAAC;AAAA;AAAA,QAEb,QAAQ,CAAC;AAAA,QACT,YAAY,CAAC;AAAA,QACb,UAAU,CAAC;AAAA,QACX,iBAAiB,CAAC;AAAA;AAAA,QAElB,eAAe;AACb,iBAAO,OAAO,OAAO,cAAc;AAAA,QACrC;AAAA,QACA,aAAa;AACX,iBAAO,OAAO,OAAO,cAAc;AAAA,QACrC;AAAA;AAAA,QAEA,aAAa;AAAA,QACb,WAAW;AAAA;AAAA,QAEX,aAAa;AAAA,QACb,OAAO;AAAA;AAAA,QAEP,WAAW;AAAA,QACX,mBAAmB;AAAA,QACnB,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WAAW;AAAA,QACX,wBAAwB;AAGtB,iBAAO,KAAK,MAAM,KAAK,YAAY,KAAK,EAAE,IAAI,KAAK;AAAA,QACrD;AAAA;AAAA,QAEA,gBAAgB,OAAO,OAAO;AAAA,QAC9B,gBAAgB,OAAO,OAAO;AAAA;AAAA,QAE9B,iBAAiB;AAAA,UACf,WAAW;AAAA,UACX,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,aAAa;AAAA,UACb,kBAAkB;AAAA,UAClB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA;AAAA,UAEpB,mBAAmB,OAAO,OAAO;AAAA;AAAA,UAEjC,eAAe;AAAA,UACf,cAAc;AAAA;AAAA,UAEd,YAAY,CAAC;AAAA,UACb,qBAAqB;AAAA,UACrB,aAAa;AAAA,UACb,WAAW;AAAA,UACX,SAAS;AAAA,QACX;AAAA;AAAA,QAEA,YAAY;AAAA;AAAA,QAEZ,gBAAgB,OAAO,OAAO;AAAA,QAC9B,SAAS;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,UAAU;AAAA,UACV,MAAM;AAAA,QACR;AAAA;AAAA,QAEA,cAAc,CAAC;AAAA,QACf,cAAc;AAAA,MAChB,CAAC;AACD,aAAO,KAAK,SAAS;AAGrB,UAAI,OAAO,OAAO,MAAM;AACtB,eAAO,KAAK;AAAA,MACd;AAIA,aAAO;AAAA,IACT;AAAA,IACA,kBAAkB,UAAU;AAC1B,UAAI,KAAK,aAAa,GAAG;AACvB,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,eAAe;AAAA,MACjB,EAAE,QAAQ;AAAA,IACZ;AAAA,IACA,cAAc,SAAS;AACrB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,SAAS,gBAAgB,UAAU,IAAI,OAAO,UAAU,gBAAgB;AAC9E,YAAM,kBAAkB,aAAa,OAAO,CAAC,CAAC;AAC9C,aAAO,aAAa,OAAO,IAAI;AAAA,IACjC;AAAA,IACA,oBAAoBzB,QAAO;AACzB,aAAO,KAAK,cAAc,KAAK,OAAO,KAAK,aAAW,QAAQ,aAAa,yBAAyB,IAAI,MAAMA,MAAK,CAAC;AAAA,IACtH;AAAA,IACA,eAAe;AACb,YAAM,SAAS;AACf,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,aAAO,SAAS,gBAAgB,UAAU,IAAI,OAAO,UAAU,gBAAgB;AAAA,IACjF;AAAA,IACA,SAAS;AACP,YAAM,SAAS;AACf,UAAI,OAAO,QAAS;AACpB,aAAO,UAAU;AACjB,UAAI,OAAO,OAAO,YAAY;AAC5B,eAAO,cAAc;AAAA,MACvB;AACA,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,UAAU;AACR,YAAM,SAAS;AACf,UAAI,CAAC,OAAO,QAAS;AACrB,aAAO,UAAU;AACjB,UAAI,OAAO,OAAO,YAAY;AAC5B,eAAO,gBAAgB;AAAA,MACzB;AACA,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IACA,YAAY,UAAU,OAAO;AAC3B,YAAM,SAAS;AACf,iBAAW,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC;AAC5C,YAAM,MAAM,OAAO,aAAa;AAChC,YAAM,MAAM,OAAO,aAAa;AAChC,YAAM,WAAW,MAAM,OAAO,WAAW;AACzC,aAAO,YAAY,SAAS,OAAO,UAAU,cAAc,IAAI,KAAK;AACpE,aAAO,kBAAkB;AACzB,aAAO,oBAAoB;AAAA,IAC7B;AAAA,IACA,uBAAuB;AACrB,YAAM,SAAS;AACf,UAAI,CAAC,OAAO,OAAO,gBAAgB,CAAC,OAAO,GAAI;AAC/C,YAAM,MAAM,OAAO,GAAG,UAAU,MAAM,GAAG,EAAE,OAAO,eAAa;AAC7D,eAAO,UAAU,QAAQ,QAAQ,MAAM,KAAK,UAAU,QAAQ,OAAO,OAAO,sBAAsB,MAAM;AAAA,MAC1G,CAAC;AACD,aAAO,KAAK,qBAAqB,IAAI,KAAK,GAAG,CAAC;AAAA,IAChD;AAAA,IACA,gBAAgB,SAAS;AACvB,YAAM,SAAS;AACf,UAAI,OAAO,UAAW,QAAO;AAC7B,aAAO,QAAQ,UAAU,MAAM,GAAG,EAAE,OAAO,eAAa;AACtD,eAAO,UAAU,QAAQ,cAAc,MAAM,KAAK,UAAU,QAAQ,OAAO,OAAO,UAAU,MAAM;AAAA,MACpG,CAAC,EAAE,KAAK,GAAG;AAAA,IACb;AAAA,IACA,oBAAoB;AAClB,YAAM,SAAS;AACf,UAAI,CAAC,OAAO,OAAO,gBAAgB,CAAC,OAAO,GAAI;AAC/C,YAAM,UAAU,CAAC;AACjB,aAAO,OAAO,QAAQ,aAAW;AAC/B,cAAM,aAAa,OAAO,gBAAgB,OAAO;AACjD,gBAAQ,KAAK;AAAA,UACX;AAAA,UACA;AAAA,QACF,CAAC;AACD,eAAO,KAAK,eAAe,SAAS,UAAU;AAAA,MAChD,CAAC;AACD,aAAO,KAAK,iBAAiB,OAAO;AAAA,IACtC;AAAA,IACA,qBAAqB,MAAM,OAAO;AAChC,UAAI,SAAS,QAAQ;AACnB,eAAO;AAAA,MACT;AACA,UAAI,UAAU,QAAQ;AACpB,gBAAQ;AAAA,MACV;AACA,YAAM,SAAS;AACf,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MACF,IAAI;AACJ,UAAI,MAAM;AACV,UAAI,OAAO,OAAO,kBAAkB,SAAU,QAAO,OAAO;AAC5D,UAAI,OAAO,gBAAgB;AACzB,YAAI,YAAY,OAAO,WAAW,IAAI,KAAK,KAAK,OAAO,WAAW,EAAE,eAAe,IAAI;AACvF,YAAI;AACJ,iBAASL,KAAI,cAAc,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACvD,cAAI,OAAOA,EAAC,KAAK,CAAC,WAAW;AAC3B,yBAAa,KAAK,KAAK,OAAOA,EAAC,EAAE,eAAe;AAChD,mBAAO;AACP,gBAAI,YAAY,WAAY,aAAY;AAAA,UAC1C;AAAA,QACF;AACA,iBAASA,KAAI,cAAc,GAAGA,MAAK,GAAGA,MAAK,GAAG;AAC5C,cAAI,OAAOA,EAAC,KAAK,CAAC,WAAW;AAC3B,yBAAa,OAAOA,EAAC,EAAE;AACvB,mBAAO;AACP,gBAAI,YAAY,WAAY,aAAY;AAAA,UAC1C;AAAA,QACF;AAAA,MACF,OAAO;AAEL,YAAI,SAAS,WAAW;AACtB,mBAASA,KAAI,cAAc,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACvD,kBAAM,cAAc,QAAQ,WAAWA,EAAC,IAAI,gBAAgBA,EAAC,IAAI,WAAW,WAAW,IAAI,aAAa,WAAWA,EAAC,IAAI,WAAW,WAAW,IAAI;AAClJ,gBAAI,aAAa;AACf,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF,OAAO;AAEL,mBAASA,KAAI,cAAc,GAAGA,MAAK,GAAGA,MAAK,GAAG;AAC5C,kBAAM,cAAc,WAAW,WAAW,IAAI,WAAWA,EAAC,IAAI;AAC9D,gBAAI,aAAa;AACf,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,YAAM,SAAS;AACf,UAAI,CAAC,UAAU,OAAO,UAAW;AACjC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AAEJ,UAAI,OAAO,aAAa;AACtB,eAAO,cAAc;AAAA,MACvB;AACA,OAAC,GAAG,OAAO,GAAG,iBAAiB,kBAAkB,CAAC,EAAE,QAAQ,aAAW;AACrE,YAAI,QAAQ,UAAU;AACpB,+BAAqB,QAAQ,OAAO;AAAA,QACtC;AAAA,MACF,CAAC;AACD,aAAO,WAAW;AAClB,aAAO,aAAa;AACpB,aAAO,eAAe;AACtB,aAAO,oBAAoB;AAC3B,eAASwB,gBAAe;AACtB,cAAM,iBAAiB,OAAO,eAAe,OAAO,YAAY,KAAK,OAAO;AAC5E,cAAM,eAAe,KAAK,IAAI,KAAK,IAAI,gBAAgB,OAAO,aAAa,CAAC,GAAG,OAAO,aAAa,CAAC;AACpG,eAAO,aAAa,YAAY;AAChC,eAAO,kBAAkB;AACzB,eAAO,oBAAoB;AAAA,MAC7B;AACA,UAAI;AACJ,UAAI,OAAO,YAAY,OAAO,SAAS,WAAW,CAAC,OAAO,SAAS;AACjE,QAAAA,cAAa;AACb,YAAI,OAAO,YAAY;AACrB,iBAAO,iBAAiB;AAAA,QAC1B;AAAA,MACF,OAAO;AACL,aAAK,OAAO,kBAAkB,UAAU,OAAO,gBAAgB,MAAM,OAAO,SAAS,CAAC,OAAO,gBAAgB;AAC3G,gBAAM,SAAS,OAAO,WAAW,OAAO,QAAQ,UAAU,OAAO,QAAQ,SAAS,OAAO;AACzF,uBAAa,OAAO,QAAQ,OAAO,SAAS,GAAG,GAAG,OAAO,IAAI;AAAA,QAC/D,OAAO;AACL,uBAAa,OAAO,QAAQ,OAAO,aAAa,GAAG,OAAO,IAAI;AAAA,QAChE;AACA,YAAI,CAAC,YAAY;AACf,UAAAA,cAAa;AAAA,QACf;AAAA,MACF;AACA,UAAI,OAAO,iBAAiB,aAAa,OAAO,UAAU;AACxD,eAAO,cAAc;AAAA,MACvB;AACA,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,gBAAgB,cAAc,YAAY;AACxC,UAAI,eAAe,QAAQ;AACzB,qBAAa;AAAA,MACf;AACA,YAAM,SAAS;AACf,YAAM,mBAAmB,OAAO,OAAO;AACvC,UAAI,CAAC,cAAc;AAEjB,uBAAe,qBAAqB,eAAe,aAAa;AAAA,MAClE;AACA,UAAI,iBAAiB,oBAAoB,iBAAiB,gBAAgB,iBAAiB,YAAY;AACrG,eAAO;AAAA,MACT;AACA,aAAO,GAAG,UAAU,OAAO,GAAG,OAAO,OAAO,sBAAsB,GAAG,gBAAgB,EAAE;AACvF,aAAO,GAAG,UAAU,IAAI,GAAG,OAAO,OAAO,sBAAsB,GAAG,YAAY,EAAE;AAChF,aAAO,qBAAqB;AAC5B,aAAO,OAAO,YAAY;AAC1B,aAAO,OAAO,QAAQ,aAAW;AAC/B,YAAI,iBAAiB,YAAY;AAC/B,kBAAQ,MAAM,QAAQ;AAAA,QACxB,OAAO;AACL,kBAAQ,MAAM,SAAS;AAAA,QACzB;AAAA,MACF,CAAC;AACD,aAAO,KAAK,iBAAiB;AAC7B,UAAI,WAAY,QAAO,OAAO;AAC9B,aAAO;AAAA,IACT;AAAA,IACA,wBAAwB,WAAW;AACjC,YAAM,SAAS;AACf,UAAI,OAAO,OAAO,cAAc,SAAS,CAAC,OAAO,OAAO,cAAc,MAAO;AAC7E,aAAO,MAAM,cAAc;AAC3B,aAAO,eAAe,OAAO,OAAO,cAAc,gBAAgB,OAAO;AACzE,UAAI,OAAO,KAAK;AACd,eAAO,GAAG,UAAU,IAAI,GAAG,OAAO,OAAO,sBAAsB,KAAK;AACpE,eAAO,GAAG,MAAM;AAAA,MAClB,OAAO;AACL,eAAO,GAAG,UAAU,OAAO,GAAG,OAAO,OAAO,sBAAsB,KAAK;AACvE,eAAO,GAAG,MAAM;AAAA,MAClB;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,MAAM,SAAS;AACb,YAAM,SAAS;AACf,UAAI,OAAO,QAAS,QAAO;AAG3B,UAAI,KAAK,WAAW,OAAO,OAAO;AAClC,UAAI,OAAO,OAAO,UAAU;AAC1B,aAAK,SAAS,cAAc,EAAE;AAAA,MAChC;AACA,UAAI,CAAC,IAAI;AACP,eAAO;AAAA,MACT;AACA,SAAG,SAAS;AACZ,UAAI,GAAG,cAAc,GAAG,WAAW,QAAQ,GAAG,WAAW,KAAK,aAAa,OAAO,OAAO,sBAAsB,YAAY,GAAG;AAC5H,eAAO,YAAY;AAAA,MACrB;AACA,YAAM,qBAAqB,MAAM;AAC/B,eAAO,KAAK,OAAO,OAAO,gBAAgB,IAAI,KAAK,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,CAAC;AAAA,MAC3E;AACA,YAAM,aAAa,MAAM;AACvB,YAAI,MAAM,GAAG,cAAc,GAAG,WAAW,eAAe;AACtD,gBAAM,MAAM,GAAG,WAAW,cAAc,mBAAmB,CAAC;AAE5D,iBAAO;AAAA,QACT;AACA,eAAO,gBAAgB,IAAI,mBAAmB,CAAC,EAAE,CAAC;AAAA,MACpD;AAEA,UAAI,YAAY,WAAW;AAC3B,UAAI,CAAC,aAAa,OAAO,OAAO,gBAAgB;AAC9C,oBAAY,cAAc,OAAO,OAAO,OAAO,YAAY;AAC3D,WAAG,OAAO,SAAS;AACnB,wBAAgB,IAAI,IAAI,OAAO,OAAO,UAAU,EAAE,EAAE,QAAQ,aAAW;AACrE,oBAAU,OAAO,OAAO;AAAA,QAC1B,CAAC;AAAA,MACH;AACA,aAAO,OAAO,QAAQ;AAAA,QACpB;AAAA,QACA;AAAA,QACA,UAAU,OAAO,aAAa,CAAC,GAAG,WAAW,KAAK,aAAa,GAAG,WAAW,OAAO;AAAA,QACpF,QAAQ,OAAO,YAAY,GAAG,WAAW,OAAO;AAAA,QAChD,SAAS;AAAA;AAAA,QAET,KAAK,GAAG,IAAI,YAAY,MAAM,SAAS,aAAa,IAAI,WAAW,MAAM;AAAA,QACzE,cAAc,OAAO,OAAO,cAAc,iBAAiB,GAAG,IAAI,YAAY,MAAM,SAAS,aAAa,IAAI,WAAW,MAAM;AAAA,QAC/H,UAAU,aAAa,WAAW,SAAS,MAAM;AAAA,MACnD,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,KAAK,IAAI;AACP,YAAM,SAAS;AACf,UAAI,OAAO,YAAa,QAAO;AAC/B,YAAM,UAAU,OAAO,MAAM,EAAE;AAC/B,UAAI,YAAY,MAAO,QAAO;AAC9B,aAAO,KAAK,YAAY;AAGxB,UAAI,OAAO,OAAO,aAAa;AAC7B,eAAO,cAAc;AAAA,MACvB;AAGA,aAAO,WAAW;AAGlB,aAAO,WAAW;AAGlB,aAAO,aAAa;AACpB,UAAI,OAAO,OAAO,eAAe;AAC/B,eAAO,cAAc;AAAA,MACvB;AAGA,UAAI,OAAO,OAAO,cAAc,OAAO,SAAS;AAC9C,eAAO,cAAc;AAAA,MACvB;AAGA,UAAI,OAAO,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACzE,eAAO,QAAQ,OAAO,OAAO,eAAe,OAAO,QAAQ,cAAc,GAAG,OAAO,OAAO,oBAAoB,OAAO,IAAI;AAAA,MAC3H,OAAO;AACL,eAAO,QAAQ,OAAO,OAAO,cAAc,GAAG,OAAO,OAAO,oBAAoB,OAAO,IAAI;AAAA,MAC7F;AAGA,UAAI,OAAO,OAAO,MAAM;AACtB,eAAO,WAAW;AAAA,MACpB;AAGA,aAAO,aAAa;AACpB,YAAM,eAAe,CAAC,GAAG,OAAO,GAAG,iBAAiB,kBAAkB,CAAC;AACvE,UAAI,OAAO,WAAW;AACpB,qBAAa,KAAK,GAAG,OAAO,OAAO,iBAAiB,kBAAkB,CAAC;AAAA,MACzE;AACA,mBAAa,QAAQ,aAAW;AAC9B,YAAI,QAAQ,UAAU;AACpB,+BAAqB,QAAQ,OAAO;AAAA,QACtC,OAAO;AACL,kBAAQ,iBAAiB,QAAQ,CAAAN,OAAK;AACpC,iCAAqB,QAAQA,GAAE,MAAM;AAAA,UACvC,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AACD,cAAQ,MAAM;AAGd,aAAO,cAAc;AACrB,cAAQ,MAAM;AAGd,aAAO,KAAK,MAAM;AAClB,aAAO,KAAK,WAAW;AACvB,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,gBAAgB,aAAa;AACnC,UAAI,mBAAmB,QAAQ;AAC7B,yBAAiB;AAAA,MACnB;AACA,UAAI,gBAAgB,QAAQ;AAC1B,sBAAc;AAAA,MAChB;AACA,YAAM,SAAS;AACf,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,UAAI,OAAO,OAAO,WAAW,eAAe,OAAO,WAAW;AAC5D,eAAO;AAAA,MACT;AACA,aAAO,KAAK,eAAe;AAG3B,aAAO,cAAc;AAGrB,aAAO,aAAa;AAGpB,UAAI,OAAO,MAAM;AACf,eAAO,YAAY;AAAA,MACrB;AAGA,UAAI,aAAa;AACf,eAAO,cAAc;AACrB,YAAI,MAAM,OAAO,OAAO,UAAU;AAChC,aAAG,gBAAgB,OAAO;AAAA,QAC5B;AACA,YAAI,WAAW;AACb,oBAAU,gBAAgB,OAAO;AAAA,QACnC;AACA,YAAI,UAAU,OAAO,QAAQ;AAC3B,iBAAO,QAAQ,aAAW;AACxB,oBAAQ,UAAU,OAAO,OAAO,mBAAmB,OAAO,wBAAwB,OAAO,kBAAkB,OAAO,gBAAgB,OAAO,cAAc;AACvJ,oBAAQ,gBAAgB,OAAO;AAC/B,oBAAQ,gBAAgB,yBAAyB;AAAA,UACnD,CAAC;AAAA,QACH;AAAA,MACF;AACA,aAAO,KAAK,SAAS;AAGrB,aAAO,KAAK,OAAO,eAAe,EAAE,QAAQ,eAAa;AACvD,eAAO,IAAI,SAAS;AAAA,MACtB,CAAC;AACD,UAAI,mBAAmB,OAAO;AAC5B,YAAI,OAAO,MAAM,OAAO,OAAO,OAAO,UAAU;AAC9C,iBAAO,GAAG,SAAS;AAAA,QACrB;AACA,oBAAY,MAAM;AAAA,MACpB;AACA,aAAO,YAAY;AACnB,aAAO;AAAA,IACT;AAAA,IACA,OAAO,eAAe,aAAa;AACjC,MAAAY,QAAO,kBAAkB,WAAW;AAAA,IACtC;AAAA,IACA,WAAW,mBAAmB;AAC5B,aAAO;AAAA,IACT;AAAA,IACA,WAAW,WAAW;AACpB,aAAOG;AAAA,IACT;AAAA,IACA,OAAO,cAAc,KAAK;AACxB,UAAI,CAAC,QAAO,UAAU,YAAa,SAAO,UAAU,cAAc,CAAC;AACnE,YAAMC,WAAU,QAAO,UAAU;AACjC,UAAI,OAAO,QAAQ,cAAcA,SAAQ,QAAQ,GAAG,IAAI,GAAG;AACzD,QAAAA,SAAQ,KAAK,GAAG;AAAA,MAClB;AAAA,IACF;AAAA,IACA,OAAO,IAAI,QAAQ;AACjB,UAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,eAAO,QAAQ,CAAAC,OAAK,QAAO,cAAcA,EAAC,CAAC;AAC3C,eAAO;AAAA,MACT;AACA,cAAO,cAAc,MAAM;AAC3B,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,KAAK,UAAU,EAAE,QAAQ,oBAAkB;AAChD,WAAO,KAAK,WAAW,cAAc,CAAC,EAAE,QAAQ,iBAAe;AAC7D,aAAO,UAAU,WAAW,IAAI,WAAW,cAAc,EAAE,WAAW;AAAA,IACxE,CAAC;AAAA,EACH,CAAC;AACD,SAAO,IAAI,CAAC,QAAQ,QAAQ,CAAC;;;AC30H7B,WAAS,QAAQ,MAAM;AACrB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAC;AAAA,MACA;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,SAAS;AAAA,QACP,SAAS;AAAA,QACT,QAAQ,CAAC;AAAA,QACT,OAAO;AAAA,QACP,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AACD,QAAI;AACJ,UAAMC,YAAW,YAAY;AAC7B,WAAO,UAAU;AAAA,MACf,OAAO,CAAC;AAAA,MACR,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,QAAQ,CAAC;AAAA,MACT,QAAQ;AAAA,MACR,YAAY,CAAC;AAAA,IACf;AACA,UAAM,UAAUA,UAAS,cAAc,KAAK;AAC5C,aAAS,YAAYC,QAAOC,QAAO;AACjC,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,OAAO,SAAS,OAAO,QAAQ,MAAMA,MAAK,GAAG;AAC/C,eAAO,OAAO,QAAQ,MAAMA,MAAK;AAAA,MACnC;AAEA,UAAI;AACJ,UAAI,OAAO,aAAa;AACtB,kBAAU,OAAO,YAAY,KAAK,QAAQD,QAAOC,MAAK;AACtD,YAAI,OAAO,YAAY,UAAU;AAC/B,kBAAQ,YAAY;AACpB,oBAAU,QAAQ,SAAS,CAAC;AAAA,QAC9B;AAAA,MACF,WAAW,OAAO,WAAW;AAC3B,kBAAU,cAAc,cAAc;AAAA,MACxC,OAAO;AACL,kBAAU,cAAc,OAAO,OAAO,OAAO,UAAU;AAAA,MACzD;AACA,cAAQ,aAAa,2BAA2BA,MAAK;AACrD,UAAI,CAAC,OAAO,aAAa;AACvB,gBAAQ,YAAYD;AAAA,MACtB;AACA,UAAI,OAAO,OAAO;AAChB,eAAO,QAAQ,MAAMC,MAAK,IAAI;AAAA,MAChC;AACA,aAAO;AAAA,IACT;AACA,aAASC,QAAO,OAAO,YAAY,kBAAkB;AACnD,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MACF,IAAI,OAAO;AACX,UAAI,cAAc,CAAC,UAAU,eAAe,GAAG;AAC7C;AAAA,MACF;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,OAAO,OAAO;AAClB,YAAM;AAAA,QACJ,MAAM;AAAA,QACN,IAAI;AAAA,QACJ;AAAA,QACA,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV,IAAI,OAAO;AACX,UAAI,CAAC,OAAO,OAAO,SAAS;AAC1B,eAAO,kBAAkB;AAAA,MAC3B;AACA,YAAM,cAAc,OAAO,qBAAqB,cAAc,OAAO,eAAe,IAAI;AACxF,UAAI;AACJ,UAAI,OAAO,aAAc,cAAa;AAAA,UAAa,cAAa,OAAO,aAAa,IAAI,SAAS;AACjG,UAAI;AACJ,UAAI;AACJ,UAAI,gBAAgB;AAClB,sBAAc,KAAK,MAAM,gBAAgB,CAAC,IAAI,iBAAiB;AAC/D,uBAAe,KAAK,MAAM,gBAAgB,CAAC,IAAI,iBAAiB;AAAA,MAClE,OAAO;AACL,sBAAc,iBAAiB,iBAAiB,KAAK;AACrD,wBAAgB,SAAS,gBAAgB,kBAAkB;AAAA,MAC7D;AACA,UAAIC,QAAO,cAAc;AACzB,UAAIC,MAAK,cAAc;AACvB,UAAI,CAAC,QAAQ;AACX,QAAAD,QAAO,KAAK,IAAIA,OAAM,CAAC;AACvB,QAAAC,MAAK,KAAK,IAAIA,KAAI,OAAO,SAAS,CAAC;AAAA,MACrC;AACA,UAAI,UAAU,OAAO,WAAWD,KAAI,KAAK,MAAM,OAAO,WAAW,CAAC,KAAK;AACvE,UAAI,UAAU,eAAe,cAAc;AACzC,QAAAA,SAAQ;AACR,YAAI,CAAC,eAAgB,WAAU,OAAO,WAAW,CAAC;AAAA,MACpD,WAAW,UAAU,cAAc,cAAc;AAC/C,QAAAA,QAAO,CAAC;AACR,YAAI,eAAgB,WAAU,OAAO,WAAW,CAAC;AAAA,MACnD;AACA,aAAO,OAAO,OAAO,SAAS;AAAA,QAC5B,MAAAA;AAAA,QACA,IAAAC;AAAA,QACA;AAAA,QACA,YAAY,OAAO;AAAA,QACnB;AAAA,QACA;AAAA,MACF,CAAC;AACD,eAAS,aAAa;AACpB,eAAO,aAAa;AACpB,eAAO,eAAe;AACtB,eAAO,oBAAoB;AAC3B,aAAK,eAAe;AAAA,MACtB;AACA,UAAI,iBAAiBD,SAAQ,eAAeC,OAAM,CAAC,OAAO;AACxD,YAAI,OAAO,eAAe,sBAAsB,WAAW,gBAAgB;AACzE,iBAAO,OAAO,QAAQ,aAAW;AAC/B,oBAAQ,MAAM,UAAU,IAAI,GAAG,SAAS,KAAK,IAAI,OAAO,sBAAsB,CAAC,CAAC;AAAA,UAClF,CAAC;AAAA,QACH;AACA,eAAO,eAAe;AACtB,aAAK,eAAe;AACpB;AAAA,MACF;AACA,UAAI,OAAO,OAAO,QAAQ,gBAAgB;AACxC,eAAO,OAAO,QAAQ,eAAe,KAAK,QAAQ;AAAA,UAChD;AAAA,UACA,MAAAD;AAAA,UACA,IAAAC;AAAA,UACA,QAAQ,SAAS,YAAY;AAC3B,kBAAM,iBAAiB,CAAC;AACxB,qBAASC,KAAIF,OAAME,MAAKD,KAAIC,MAAK,GAAG;AAClC,6BAAe,KAAK,OAAOA,EAAC,CAAC;AAAA,YAC/B;AACA,mBAAO;AAAA,UACT,EAAE;AAAA,QACJ,CAAC;AACD,YAAI,OAAO,OAAO,QAAQ,sBAAsB;AAC9C,qBAAW;AAAA,QACb,OAAO;AACL,eAAK,eAAe;AAAA,QACtB;AACA;AAAA,MACF;AACA,YAAM,iBAAiB,CAAC;AACxB,YAAM,gBAAgB,CAAC;AACvB,YAAM,gBAAgB,CAAAJ,WAAS;AAC7B,YAAI,aAAaA;AACjB,YAAIA,SAAQ,GAAG;AACb,uBAAa,OAAO,SAASA;AAAA,QAC/B,WAAW,cAAc,OAAO,QAAQ;AAEtC,uBAAa,aAAa,OAAO;AAAA,QACnC;AACA,eAAO;AAAA,MACT;AACA,UAAI,OAAO;AACT,eAAO,OAAO,OAAO,QAAM,GAAG,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB,CAAC,EAAE,QAAQ,aAAW;AACtG,kBAAQ,OAAO;AAAA,QACjB,CAAC;AAAA,MACH,OAAO;AACL,iBAASI,KAAI,cAAcA,MAAK,YAAYA,MAAK,GAAG;AAClD,cAAIA,KAAIF,SAAQE,KAAID,KAAI;AACtB,kBAAM,aAAa,cAAcC,EAAC;AAClC,mBAAO,OAAO,OAAO,QAAM,GAAG,QAAQ,IAAI,OAAO,OAAO,UAAU,6BAA6B,UAAU,6CAA6C,UAAU,IAAI,CAAC,EAAE,QAAQ,aAAW;AACxL,sBAAQ,OAAO;AAAA,YACjB,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AACA,YAAM,WAAW,SAAS,CAAC,OAAO,SAAS;AAC3C,YAAM,SAAS,SAAS,OAAO,SAAS,IAAI,OAAO;AACnD,eAASA,KAAI,UAAUA,KAAI,QAAQA,MAAK,GAAG;AACzC,YAAIA,MAAKF,SAAQE,MAAKD,KAAI;AACxB,gBAAM,aAAa,cAAcC,EAAC;AAClC,cAAI,OAAO,eAAe,eAAe,OAAO;AAC9C,0BAAc,KAAK,UAAU;AAAA,UAC/B,OAAO;AACL,gBAAIA,KAAI,WAAY,eAAc,KAAK,UAAU;AACjD,gBAAIA,KAAI,aAAc,gBAAe,KAAK,UAAU;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AACA,oBAAc,QAAQ,CAAAJ,WAAS;AAC7B,eAAO,SAAS,OAAO,YAAY,OAAOA,MAAK,GAAGA,MAAK,CAAC;AAAA,MAC1D,CAAC;AACD,UAAI,QAAQ;AACV,iBAASI,KAAI,eAAe,SAAS,GAAGA,MAAK,GAAGA,MAAK,GAAG;AACtD,gBAAMJ,SAAQ,eAAeI,EAAC;AAC9B,iBAAO,SAAS,QAAQ,YAAY,OAAOJ,MAAK,GAAGA,MAAK,CAAC;AAAA,QAC3D;AAAA,MACF,OAAO;AACL,uBAAe,KAAK,CAACK,IAAGC,OAAMA,KAAID,EAAC;AACnC,uBAAe,QAAQ,CAAAL,WAAS;AAC9B,iBAAO,SAAS,QAAQ,YAAY,OAAOA,MAAK,GAAGA,MAAK,CAAC;AAAA,QAC3D,CAAC;AAAA,MACH;AACA,sBAAgB,OAAO,UAAU,6BAA6B,EAAE,QAAQ,aAAW;AACjF,gBAAQ,MAAM,UAAU,IAAI,GAAG,SAAS,KAAK,IAAI,OAAO,sBAAsB,CAAC,CAAC;AAAA,MAClF,CAAC;AACD,iBAAW;AAAA,IACb;AACA,aAASO,aAAY,QAAQ;AAC3B,UAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AACpD,iBAASH,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,cAAI,OAAOA,EAAC,EAAG,QAAO,QAAQ,OAAO,KAAK,OAAOA,EAAC,CAAC;AAAA,QACrD;AAAA,MACF,OAAO;AACL,eAAO,QAAQ,OAAO,KAAK,MAAM;AAAA,MACnC;AACA,MAAAH,QAAO,IAAI;AAAA,IACb;AACA,aAASO,cAAa,QAAQ;AAC5B,YAAM,cAAc,OAAO;AAC3B,UAAI,iBAAiB,cAAc;AACnC,UAAI,oBAAoB;AACxB,UAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,iBAASJ,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,cAAI,OAAOA,EAAC,EAAG,QAAO,QAAQ,OAAO,QAAQ,OAAOA,EAAC,CAAC;AAAA,QACxD;AACA,yBAAiB,cAAc,OAAO;AACtC,4BAAoB,OAAO;AAAA,MAC7B,OAAO;AACL,eAAO,QAAQ,OAAO,QAAQ,MAAM;AAAA,MACtC;AACA,UAAI,OAAO,OAAO,QAAQ,OAAO;AAC/B,cAAMK,SAAQ,OAAO,QAAQ;AAC7B,cAAM,WAAW,CAAC;AAClB,eAAO,KAAKA,MAAK,EAAE,QAAQ,iBAAe;AACxC,gBAAM,WAAWA,OAAM,WAAW;AAClC,gBAAM,gBAAgB,SAAS,aAAa,yBAAyB;AACrE,cAAI,eAAe;AACjB,qBAAS,aAAa,2BAA2B,SAAS,eAAe,EAAE,IAAI,iBAAiB;AAAA,UAClG;AACA,mBAAS,SAAS,aAAa,EAAE,IAAI,iBAAiB,IAAI;AAAA,QAC5D,CAAC;AACD,eAAO,QAAQ,QAAQ;AAAA,MACzB;AACA,MAAAR,QAAO,IAAI;AACX,aAAO,QAAQ,gBAAgB,CAAC;AAAA,IAClC;AACA,aAASS,aAAY,eAAe;AAClC,UAAI,OAAO,kBAAkB,eAAe,kBAAkB,KAAM;AACpE,UAAI,cAAc,OAAO;AACzB,UAAI,MAAM,QAAQ,aAAa,GAAG;AAChC,iBAASN,KAAI,cAAc,SAAS,GAAGA,MAAK,GAAGA,MAAK,GAAG;AACrD,cAAI,OAAO,OAAO,QAAQ,OAAO;AAC/B,mBAAO,OAAO,QAAQ,MAAM,cAAcA,EAAC,CAAC;AAE5C,mBAAO,KAAK,OAAO,QAAQ,KAAK,EAAE,QAAQ,SAAO;AAC/C,kBAAI,MAAM,eAAe;AACvB,uBAAO,QAAQ,MAAM,MAAM,CAAC,IAAI,OAAO,QAAQ,MAAM,GAAG;AACxD,uBAAO,QAAQ,MAAM,MAAM,CAAC,EAAE,aAAa,2BAA2B,MAAM,CAAC;AAC7E,uBAAO,OAAO,QAAQ,MAAM,GAAG;AAAA,cACjC;AAAA,YACF,CAAC;AAAA,UACH;AACA,iBAAO,QAAQ,OAAO,OAAO,cAAcA,EAAC,GAAG,CAAC;AAChD,cAAI,cAAcA,EAAC,IAAI,YAAa,gBAAe;AACnD,wBAAc,KAAK,IAAI,aAAa,CAAC;AAAA,QACvC;AAAA,MACF,OAAO;AACL,YAAI,OAAO,OAAO,QAAQ,OAAO;AAC/B,iBAAO,OAAO,QAAQ,MAAM,aAAa;AAEzC,iBAAO,KAAK,OAAO,QAAQ,KAAK,EAAE,QAAQ,SAAO;AAC/C,gBAAI,MAAM,eAAe;AACvB,qBAAO,QAAQ,MAAM,MAAM,CAAC,IAAI,OAAO,QAAQ,MAAM,GAAG;AACxD,qBAAO,QAAQ,MAAM,MAAM,CAAC,EAAE,aAAa,2BAA2B,MAAM,CAAC;AAC7E,qBAAO,OAAO,QAAQ,MAAM,GAAG;AAAA,YACjC;AAAA,UACF,CAAC;AAAA,QACH;AACA,eAAO,QAAQ,OAAO,OAAO,eAAe,CAAC;AAC7C,YAAI,gBAAgB,YAAa,gBAAe;AAChD,sBAAc,KAAK,IAAI,aAAa,CAAC;AAAA,MACvC;AACA,MAAAH,QAAO,IAAI;AACX,aAAO,QAAQ,aAAa,CAAC;AAAA,IAC/B;AACA,aAASU,mBAAkB;AACzB,aAAO,QAAQ,SAAS,CAAC;AACzB,UAAI,OAAO,OAAO,QAAQ,OAAO;AAC/B,eAAO,QAAQ,QAAQ,CAAC;AAAA,MAC1B;AACA,MAAAV,QAAO,IAAI;AACX,aAAO,QAAQ,GAAG,CAAC;AAAA,IACrB;AACA,IAAAJ,IAAG,cAAc,MAAM;AACrB,UAAI,CAAC,OAAO,OAAO,QAAQ,QAAS;AACpC,UAAI;AACJ,UAAI,OAAO,OAAO,aAAa,QAAQ,WAAW,aAAa;AAC7D,cAAM,SAAS,CAAC,GAAG,OAAO,SAAS,QAAQ,EAAE,OAAO,QAAM,GAAG,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB,CAAC;AAClH,YAAI,UAAU,OAAO,QAAQ;AAC3B,iBAAO,QAAQ,SAAS,CAAC,GAAG,MAAM;AAClC,8BAAoB;AACpB,iBAAO,QAAQ,CAAC,SAAS,eAAe;AACtC,oBAAQ,aAAa,2BAA2B,UAAU;AAC1D,mBAAO,QAAQ,MAAM,UAAU,IAAI;AACnC,oBAAQ,OAAO;AAAA,UACjB,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,CAAC,mBAAmB;AACtB,eAAO,QAAQ,SAAS,OAAO,OAAO,QAAQ;AAAA,MAChD;AACA,aAAO,WAAW,KAAK,GAAG,OAAO,OAAO,sBAAsB,SAAS;AACvE,aAAO,OAAO,sBAAsB;AACpC,aAAO,eAAe,sBAAsB;AAC5C,MAAAI,QAAO,OAAO,IAAI;AAAA,IACpB,CAAC;AACD,IAAAJ,IAAG,gBAAgB,MAAM;AACvB,UAAI,CAAC,OAAO,OAAO,QAAQ,QAAS;AACpC,UAAI,OAAO,OAAO,WAAW,CAAC,OAAO,mBAAmB;AACtD,qBAAa,cAAc;AAC3B,yBAAiB,WAAW,MAAM;AAChC,UAAAI,QAAO;AAAA,QACT,GAAG,GAAG;AAAA,MACR,OAAO;AACL,QAAAA,QAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAJ,IAAG,sBAAsB,MAAM;AAC7B,UAAI,CAAC,OAAO,OAAO,QAAQ,QAAS;AACpC,UAAI,OAAO,OAAO,SAAS;AACzB,uBAAe,OAAO,WAAW,yBAAyB,GAAG,OAAO,WAAW,IAAI;AAAA,MACrF;AAAA,IACF,CAAC;AACD,WAAO,OAAO,OAAO,SAAS;AAAA,MAC5B,aAAAU;AAAA,MACA,cAAAC;AAAA,MACA,aAAAE;AAAA,MACA,iBAAAC;AAAA,MACA,QAAAV;AAAA,IACF,CAAC;AAAA,EACH;;;ACtVA,WAAS,SAAS,MAAM;AACtB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAW;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAMC,YAAW,YAAY;AAC7B,UAAMC,UAAS,UAAU;AACzB,WAAO,WAAW;AAAA,MAChB,SAAS;AAAA,IACX;AACA,iBAAa;AAAA,MACX,UAAU;AAAA,QACR,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,YAAY;AAAA,MACd;AAAA,IACF,CAAC;AACD,aAAS,OAAOC,QAAO;AACrB,UAAI,CAAC,OAAO,QAAS;AACrB,YAAM;AAAA,QACJ,cAAc;AAAA,MAChB,IAAI;AACJ,UAAIC,KAAID;AACR,UAAIC,GAAE,cAAe,CAAAA,KAAIA,GAAE;AAC3B,YAAM,KAAKA,GAAE,WAAWA,GAAE;AAC1B,YAAM,aAAa,OAAO,OAAO,SAAS;AAC1C,YAAM,WAAW,cAAc,OAAO;AACtC,YAAM,aAAa,cAAc,OAAO;AACxC,YAAM,cAAc,OAAO;AAC3B,YAAM,eAAe,OAAO;AAC5B,YAAM,YAAY,OAAO;AACzB,YAAM,cAAc,OAAO;AAE3B,UAAI,CAAC,OAAO,mBAAmB,OAAO,aAAa,KAAK,gBAAgB,OAAO,WAAW,KAAK,eAAe,aAAa;AACzH,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,mBAAmB,OAAO,aAAa,KAAK,eAAe,OAAO,WAAW,KAAK,aAAa,WAAW;AACpH,eAAO;AAAA,MACT;AACA,UAAIA,GAAE,YAAYA,GAAE,UAAUA,GAAE,WAAWA,GAAE,SAAS;AACpD,eAAO;AAAA,MACT;AACA,UAAIH,UAAS,iBAAiBA,UAAS,cAAc,aAAaA,UAAS,cAAc,SAAS,YAAY,MAAM,WAAWA,UAAS,cAAc,SAAS,YAAY,MAAM,aAAa;AAC5L,eAAO;AAAA,MACT;AACA,UAAI,OAAO,OAAO,SAAS,mBAAmB,YAAY,cAAc,eAAe,gBAAgB,aAAa,cAAc;AAChI,YAAI,SAAS;AAEb,YAAI,eAAe,OAAO,IAAI,IAAI,OAAO,OAAO,UAAU,gBAAgB,EAAE,SAAS,KAAK,eAAe,OAAO,IAAI,IAAI,OAAO,OAAO,gBAAgB,EAAE,EAAE,WAAW,GAAG;AACtK,iBAAO;AAAA,QACT;AACA,cAAM,KAAK,OAAO;AAClB,cAAM,cAAc,GAAG;AACvB,cAAM,eAAe,GAAG;AACxB,cAAM,cAAcC,QAAO;AAC3B,cAAM,eAAeA,QAAO;AAC5B,cAAM,eAAe,cAAc,EAAE;AACrC,YAAI,IAAK,cAAa,QAAQ,GAAG;AACjC,cAAM,cAAc,CAAC,CAAC,aAAa,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,OAAO,aAAa,aAAa,GAAG,GAAG,CAAC,aAAa,MAAM,aAAa,MAAM,YAAY,GAAG,CAAC,aAAa,OAAO,aAAa,aAAa,MAAM,YAAY,CAAC;AACzO,iBAASG,KAAI,GAAGA,KAAI,YAAY,QAAQA,MAAK,GAAG;AAC9C,gBAAM,QAAQ,YAAYA,EAAC;AAC3B,cAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,eAAe,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,cAAc;AACzF,gBAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAG;AACtC,qBAAS;AAAA,UACX;AAAA,QACF;AACA,YAAI,CAAC,OAAQ,QAAO;AAAA,MACtB;AACA,UAAI,OAAO,aAAa,GAAG;AACzB,YAAI,YAAY,cAAc,eAAe,cAAc;AACzD,cAAID,GAAE,eAAgB,CAAAA,GAAE,eAAe;AAAA,cAAO,CAAAA,GAAE,cAAc;AAAA,QAChE;AACA,aAAK,cAAc,iBAAiB,CAAC,QAAQ,YAAY,gBAAgB,IAAK,QAAO,UAAU;AAC/F,aAAK,YAAY,gBAAgB,CAAC,QAAQ,cAAc,iBAAiB,IAAK,QAAO,UAAU;AAAA,MACjG,OAAO;AACL,YAAI,YAAY,cAAc,aAAa,aAAa;AACtD,cAAIA,GAAE,eAAgB,CAAAA,GAAE,eAAe;AAAA,cAAO,CAAAA,GAAE,cAAc;AAAA,QAChE;AACA,YAAI,cAAc,YAAa,QAAO,UAAU;AAChD,YAAI,YAAY,UAAW,QAAO,UAAU;AAAA,MAC9C;AACA,WAAK,YAAY,EAAE;AACnB,aAAO;AAAA,IACT;AACA,aAASE,UAAS;AAChB,UAAI,OAAO,SAAS,QAAS;AAC7B,MAAAL,UAAS,iBAAiB,WAAW,MAAM;AAC3C,aAAO,SAAS,UAAU;AAAA,IAC5B;AACA,aAASM,WAAU;AACjB,UAAI,CAAC,OAAO,SAAS,QAAS;AAC9B,MAAAN,UAAS,oBAAoB,WAAW,MAAM;AAC9C,aAAO,SAAS,UAAU;AAAA,IAC5B;AACA,IAAAD,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,SAAS,SAAS;AAClC,QAAAM,QAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAN,IAAG,WAAW,MAAM;AAClB,UAAI,OAAO,SAAS,SAAS;AAC3B,QAAAO,SAAQ;AAAA,MACV;AAAA,IACF,CAAC;AACD,WAAO,OAAO,OAAO,UAAU;AAAA,MAC7B,QAAAD;AAAA,MACA,SAAAC;AAAA,IACF,CAAC;AAAA,EACH;;;AC9GA,WAAS,WAAW,MAAM;AACxB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAC;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAMC,UAAS,UAAU;AACzB,iBAAa;AAAA,MACX,YAAY;AAAA,QACV,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,aAAa;AAAA,QACb,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,mBAAmB;AAAA,MACrB;AAAA,IACF,CAAC;AACD,WAAO,aAAa;AAAA,MAClB,SAAS;AAAA,IACX;AACA,QAAI;AACJ,QAAI,iBAAiBC,KAAI;AACzB,QAAI;AACJ,UAAM,oBAAoB,CAAC;AAC3B,aAAS,UAAUC,IAAG;AAEpB,YAAM,aAAa;AACnB,YAAMC,eAAc;AACpB,YAAM,cAAc;AACpB,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,KAAK;AAGT,UAAI,YAAYD,IAAG;AACjB,aAAKA,GAAE;AAAA,MACT;AACA,UAAI,gBAAgBA,IAAG;AACrB,aAAK,CAACA,GAAE,aAAa;AAAA,MACvB;AACA,UAAI,iBAAiBA,IAAG;AACtB,aAAK,CAACA,GAAE,cAAc;AAAA,MACxB;AACA,UAAI,iBAAiBA,IAAG;AACtB,aAAK,CAACA,GAAE,cAAc;AAAA,MACxB;AAGA,UAAI,UAAUA,MAAKA,GAAE,SAASA,GAAE,iBAAiB;AAC/C,aAAK;AACL,aAAK;AAAA,MACP;AACA,WAAK,KAAK;AACV,WAAK,KAAK;AACV,UAAI,YAAYA,IAAG;AACjB,aAAKA,GAAE;AAAA,MACT;AACA,UAAI,YAAYA,IAAG;AACjB,aAAKA,GAAE;AAAA,MACT;AACA,UAAIA,GAAE,YAAY,CAAC,IAAI;AAErB,aAAK;AACL,aAAK;AAAA,MACP;AACA,WAAK,MAAM,OAAOA,GAAE,WAAW;AAC7B,YAAIA,GAAE,cAAc,GAAG;AAErB,gBAAMC;AACN,gBAAMA;AAAA,QACR,OAAO;AAEL,gBAAM;AACN,gBAAM;AAAA,QACR;AAAA,MACF;AAGA,UAAI,MAAM,CAAC,IAAI;AACb,aAAK,KAAK,IAAI,KAAK;AAAA,MACrB;AACA,UAAI,MAAM,CAAC,IAAI;AACb,aAAK,KAAK,IAAI,KAAK;AAAA,MACrB;AACA,aAAO;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF;AACA,aAAS,mBAAmB;AAC1B,UAAI,CAAC,OAAO,QAAS;AACrB,aAAO,eAAe;AAAA,IACxB;AACA,aAAS,mBAAmB;AAC1B,UAAI,CAAC,OAAO,QAAS;AACrB,aAAO,eAAe;AAAA,IACxB;AACA,aAAS,cAAc,UAAU;AAC/B,UAAI,OAAO,OAAO,WAAW,kBAAkB,SAAS,QAAQ,OAAO,OAAO,WAAW,gBAAgB;AAEvG,eAAO;AAAA,MACT;AACA,UAAI,OAAO,OAAO,WAAW,iBAAiBF,KAAI,IAAI,iBAAiB,OAAO,OAAO,WAAW,eAAe;AAE7G,eAAO;AAAA,MACT;AAKA,UAAI,SAAS,SAAS,KAAKA,KAAI,IAAI,iBAAiB,IAAI;AAEtD,eAAO;AAAA,MACT;AAaA,UAAI,SAAS,YAAY,GAAG;AAC1B,aAAK,CAAC,OAAO,SAAS,OAAO,OAAO,SAAS,CAAC,OAAO,WAAW;AAC9D,iBAAO,UAAU;AACjB,eAAK,UAAU,SAAS,GAAG;AAAA,QAC7B;AAAA,MACF,YAAY,CAAC,OAAO,eAAe,OAAO,OAAO,SAAS,CAAC,OAAO,WAAW;AAC3E,eAAO,UAAU;AACjB,aAAK,UAAU,SAAS,GAAG;AAAA,MAC7B;AAEA,uBAAiB,IAAID,QAAO,KAAK,EAAE,QAAQ;AAE3C,aAAO;AAAA,IACT;AACA,aAAS,cAAc,UAAU;AAC/B,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,SAAS,YAAY,GAAG;AAC1B,YAAI,OAAO,SAAS,CAAC,OAAO,OAAO,QAAQ,OAAO,gBAAgB;AAEhE,iBAAO;AAAA,QACT;AAAA,MACF,WAAW,OAAO,eAAe,CAAC,OAAO,OAAO,QAAQ,OAAO,gBAAgB;AAE7E,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,aAAS,OAAOI,QAAO;AACrB,UAAIF,KAAIE;AACR,UAAI,sBAAsB;AAC1B,UAAI,CAAC,OAAO,QAAS;AAGrB,UAAIA,OAAM,OAAO,QAAQ,IAAI,OAAO,OAAO,WAAW,iBAAiB,EAAE,EAAG;AAC5E,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,OAAO,OAAO,SAAS;AACzB,QAAAF,GAAE,eAAe;AAAA,MACnB;AACA,UAAI,WAAW,OAAO;AACtB,UAAI,OAAO,OAAO,WAAW,iBAAiB,aAAa;AACzD,mBAAW,SAAS,cAAc,OAAO,OAAO,WAAW,YAAY;AAAA,MACzE;AACA,YAAM,yBAAyB,YAAY,SAAS,SAASA,GAAE,MAAM;AACrE,UAAI,CAAC,OAAO,gBAAgB,CAAC,0BAA0B,CAAC,OAAO,eAAgB,QAAO;AACtF,UAAIA,GAAE,cAAe,CAAAA,KAAIA,GAAE;AAC3B,UAAI,QAAQ;AACZ,YAAM,YAAY,OAAO,eAAe,KAAK;AAC7C,YAAM,OAAO,UAAUA,EAAC;AACxB,UAAI,OAAO,aAAa;AACtB,YAAI,OAAO,aAAa,GAAG;AACzB,cAAI,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,MAAM,EAAG,SAAQ,CAAC,KAAK,SAAS;AAAA,cAAe,QAAO;AAAA,QAClG,WAAW,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,MAAM,EAAG,SAAQ,CAAC,KAAK;AAAA,YAAY,QAAO;AAAA,MAC7F,OAAO;AACL,gBAAQ,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,SAAS,YAAY,CAAC,KAAK;AAAA,MAC3F;AACA,UAAI,UAAU,EAAG,QAAO;AACxB,UAAI,OAAO,OAAQ,SAAQ,CAAC;AAG5B,UAAIG,aAAY,OAAO,aAAa,IAAI,QAAQ,OAAO;AACvD,UAAIA,cAAa,OAAO,aAAa,EAAG,CAAAA,aAAY,OAAO,aAAa;AACxE,UAAIA,cAAa,OAAO,aAAa,EAAG,CAAAA,aAAY,OAAO,aAAa;AASxE,4BAAsB,OAAO,OAAO,OAAO,OAAO,EAAEA,eAAc,OAAO,aAAa,KAAKA,eAAc,OAAO,aAAa;AAC7H,UAAI,uBAAuB,OAAO,OAAO,OAAQ,CAAAH,GAAE,gBAAgB;AACnE,UAAI,CAAC,OAAO,OAAO,YAAY,CAAC,OAAO,OAAO,SAAS,SAAS;AAE9D,cAAM,WAAW;AAAA,UACf,MAAMD,KAAI;AAAA,UACV,OAAO,KAAK,IAAI,KAAK;AAAA,UACrB,WAAW,KAAK,KAAK,KAAK;AAAA,UAC1B,KAAKG;AAAA,QACP;AAGA,YAAI,kBAAkB,UAAU,GAAG;AACjC,4BAAkB,MAAM;AAAA,QAC1B;AAEA,cAAM,YAAY,kBAAkB,SAAS,kBAAkB,kBAAkB,SAAS,CAAC,IAAI;AAC/F,0BAAkB,KAAK,QAAQ;AAQ/B,YAAI,WAAW;AACb,cAAI,SAAS,cAAc,UAAU,aAAa,SAAS,QAAQ,UAAU,SAAS,SAAS,OAAO,UAAU,OAAO,KAAK;AAC1H,0BAAc,QAAQ;AAAA,UACxB;AAAA,QACF,OAAO;AACL,wBAAc,QAAQ;AAAA,QACxB;AAIA,YAAI,cAAc,QAAQ,GAAG;AAC3B,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AAOL,cAAM,WAAW;AAAA,UACf,MAAMH,KAAI;AAAA,UACV,OAAO,KAAK,IAAI,KAAK;AAAA,UACrB,WAAW,KAAK,KAAK,KAAK;AAAA,QAC5B;AACA,cAAM,oBAAoB,uBAAuB,SAAS,OAAO,oBAAoB,OAAO,OAAO,SAAS,SAAS,oBAAoB,SAAS,SAAS,cAAc,oBAAoB;AAC7L,YAAI,CAAC,mBAAmB;AACtB,gCAAsB;AACtB,cAAI,WAAW,OAAO,aAAa,IAAI,QAAQ,OAAO;AACtD,gBAAM,eAAe,OAAO;AAC5B,gBAAM,SAAS,OAAO;AACtB,cAAI,YAAY,OAAO,aAAa,EAAG,YAAW,OAAO,aAAa;AACtE,cAAI,YAAY,OAAO,aAAa,EAAG,YAAW,OAAO,aAAa;AACtE,iBAAO,cAAc,CAAC;AACtB,iBAAO,aAAa,QAAQ;AAC5B,iBAAO,eAAe;AACtB,iBAAO,kBAAkB;AACzB,iBAAO,oBAAoB;AAC3B,cAAI,CAAC,gBAAgB,OAAO,eAAe,CAAC,UAAU,OAAO,OAAO;AAClE,mBAAO,oBAAoB;AAAA,UAC7B;AACA,cAAI,OAAO,OAAO,MAAM;AACtB,mBAAO,QAAQ;AAAA,cACb,WAAW,SAAS,YAAY,IAAI,SAAS;AAAA,cAC7C,cAAc;AAAA,YAChB,CAAC;AAAA,UACH;AACA,cAAI,OAAO,OAAO,SAAS,QAAQ;AAYjC,yBAAa,OAAO;AACpB,sBAAU;AACV,gBAAI,kBAAkB,UAAU,IAAI;AAClC,gCAAkB,MAAM;AAAA,YAC1B;AAEA,kBAAM,YAAY,kBAAkB,SAAS,kBAAkB,kBAAkB,SAAS,CAAC,IAAI;AAC/F,kBAAM,aAAa,kBAAkB,CAAC;AACtC,8BAAkB,KAAK,QAAQ;AAC/B,gBAAI,cAAc,SAAS,QAAQ,UAAU,SAAS,SAAS,cAAc,UAAU,YAAY;AAEjG,gCAAkB,OAAO,CAAC;AAAA,YAC5B,WAAW,kBAAkB,UAAU,MAAM,SAAS,OAAO,WAAW,OAAO,OAAO,WAAW,QAAQ,SAAS,SAAS,KAAK,SAAS,SAAS,GAAG;AAOnJ,oBAAM,kBAAkB,QAAQ,IAAI,MAAM;AAC1C,oCAAsB;AACtB,gCAAkB,OAAO,CAAC;AAC1B,wBAAU,SAAS,MAAM;AACvB,oBAAI,OAAO,aAAa,CAAC,OAAO,OAAQ;AACxC,uBAAO,eAAe,OAAO,OAAO,OAAO,MAAM,QAAW,eAAe;AAAA,cAC7E,GAAG,CAAC;AAAA,YACN;AAEA,gBAAI,CAAC,SAAS;AAIZ,wBAAU,SAAS,MAAM;AACvB,oBAAI,OAAO,aAAa,CAAC,OAAO,OAAQ;AACxC,sBAAM,kBAAkB;AACxB,sCAAsB;AACtB,kCAAkB,OAAO,CAAC;AAC1B,uBAAO,eAAe,OAAO,OAAO,OAAO,MAAM,QAAW,eAAe;AAAA,cAC7E,GAAG,GAAG;AAAA,YACR;AAAA,UACF;AAGA,cAAI,CAAC,kBAAmB,MAAK,UAAUC,EAAC;AAGxC,cAAI,OAAO,OAAO,YAAY,OAAO,OAAO,SAAS,qBAAsB,QAAO,SAAS,KAAK;AAEhG,cAAI,OAAO,mBAAmB,aAAa,OAAO,aAAa,KAAK,aAAa,OAAO,aAAa,IAAI;AACvG,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,UAAIA,GAAE,eAAgB,CAAAA,GAAE,eAAe;AAAA,UAAO,CAAAA,GAAE,cAAc;AAC9D,aAAO;AAAA,IACT;AACA,aAASI,QAAO,QAAQ;AACtB,UAAI,WAAW,OAAO;AACtB,UAAI,OAAO,OAAO,WAAW,iBAAiB,aAAa;AACzD,mBAAW,SAAS,cAAc,OAAO,OAAO,WAAW,YAAY;AAAA,MACzE;AACA,eAAS,MAAM,EAAE,cAAc,gBAAgB;AAC/C,eAAS,MAAM,EAAE,cAAc,gBAAgB;AAC/C,eAAS,MAAM,EAAE,SAAS,MAAM;AAAA,IAClC;AACA,aAASC,UAAS;AAChB,UAAI,OAAO,OAAO,SAAS;AACzB,eAAO,UAAU,oBAAoB,SAAS,MAAM;AACpD,eAAO;AAAA,MACT;AACA,UAAI,OAAO,WAAW,QAAS,QAAO;AACtC,MAAAD,QAAO,kBAAkB;AACzB,aAAO,WAAW,UAAU;AAC5B,aAAO;AAAA,IACT;AACA,aAASE,WAAU;AACjB,UAAI,OAAO,OAAO,SAAS;AACzB,eAAO,UAAU,iBAAiB,OAAO,MAAM;AAC/C,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAO,WAAW,QAAS,QAAO;AACvC,MAAAF,QAAO,qBAAqB;AAC5B,aAAO,WAAW,UAAU;AAC5B,aAAO;AAAA,IACT;AACA,IAAAP,IAAG,QAAQ,MAAM;AACf,UAAI,CAAC,OAAO,OAAO,WAAW,WAAW,OAAO,OAAO,SAAS;AAC9D,QAAAS,SAAQ;AAAA,MACV;AACA,UAAI,OAAO,OAAO,WAAW,QAAS,CAAAD,QAAO;AAAA,IAC/C,CAAC;AACD,IAAAR,IAAG,WAAW,MAAM;AAClB,UAAI,OAAO,OAAO,SAAS;AACzB,QAAAQ,QAAO;AAAA,MACT;AACA,UAAI,OAAO,WAAW,QAAS,CAAAC,SAAQ;AAAA,IACzC,CAAC;AACD,WAAO,OAAO,OAAO,YAAY;AAAA,MAC/B,QAAAD;AAAA,MACA,SAAAC;AAAA,IACF,CAAC;AAAA,EACH;;;ACtYA,WAAS,0BAA0B,QAAQ,gBAAgB,QAAQ,YAAY;AAC7E,QAAI,OAAO,OAAO,gBAAgB;AAChC,aAAO,KAAK,UAAU,EAAE,QAAQ,SAAO;AACrC,YAAI,CAAC,OAAO,GAAG,KAAK,OAAO,SAAS,MAAM;AACxC,cAAI,UAAU,gBAAgB,OAAO,IAAI,IAAI,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC;AACjE,cAAI,CAAC,SAAS;AACZ,sBAAU,cAAc,OAAO,WAAW,GAAG,CAAC;AAC9C,oBAAQ,YAAY,WAAW,GAAG;AAClC,mBAAO,GAAG,OAAO,OAAO;AAAA,UAC1B;AACA,iBAAO,GAAG,IAAI;AACd,yBAAe,GAAG,IAAI;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;;;ACfA,WAAS,WAAW,MAAM;AACxB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAC;AAAA,MACA;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,eAAe;AAAA,QACf,aAAa;AAAA,QACb,WAAW;AAAA,QACX,yBAAyB;AAAA,MAC3B;AAAA,IACF,CAAC;AACD,WAAO,aAAa;AAAA,MAClB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AACA,aAAS,MAAM,IAAI;AACjB,UAAI;AACJ,UAAI,MAAM,OAAO,OAAO,YAAY,OAAO,WAAW;AACpD,cAAM,OAAO,GAAG,cAAc,EAAE,KAAK,OAAO,OAAO,cAAc,EAAE;AACnE,YAAI,IAAK,QAAO;AAAA,MAClB;AACA,UAAI,IAAI;AACN,YAAI,OAAO,OAAO,SAAU,OAAM,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAAC;AACnE,YAAI,OAAO,OAAO,qBAAqB,OAAO,OAAO,YAAY,OAAO,IAAI,SAAS,KAAK,OAAO,GAAG,iBAAiB,EAAE,EAAE,WAAW,GAAG;AACrI,gBAAM,OAAO,GAAG,cAAc,EAAE;AAAA,QAClC,WAAW,OAAO,IAAI,WAAW,GAAG;AAClC,gBAAM,IAAI,CAAC;AAAA,QACb;AAAA,MACF;AACA,UAAI,MAAM,CAAC,IAAK,QAAO;AAEvB,aAAO;AAAA,IACT;AACA,aAAS,SAAS,IAAI,UAAU;AAC9B,YAAM,SAAS,OAAO,OAAO;AAC7B,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,YAAI,OAAO;AACT,gBAAM,UAAU,WAAW,QAAQ,QAAQ,EAAE,GAAG,OAAO,cAAc,MAAM,GAAG,CAAC;AAC/E,cAAI,MAAM,YAAY,SAAU,OAAM,WAAW;AACjD,cAAI,OAAO,OAAO,iBAAiB,OAAO,SAAS;AACjD,kBAAM,UAAU,OAAO,WAAW,QAAQ,QAAQ,EAAE,OAAO,SAAS;AAAA,UACtE;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,aAASC,UAAS;AAEhB,YAAM;AAAA,QACJ,QAAAC;AAAA,QACA;AAAA,MACF,IAAI,OAAO;AACX,UAAI,OAAO,OAAO,MAAM;AACtB,iBAAS,QAAQ,KAAK;AACtB,iBAASA,SAAQ,KAAK;AACtB;AAAA,MACF;AACA,eAAS,QAAQ,OAAO,eAAe,CAAC,OAAO,OAAO,MAAM;AAC5D,eAASA,SAAQ,OAAO,SAAS,CAAC,OAAO,OAAO,MAAM;AAAA,IACxD;AACA,aAAS,YAAYC,IAAG;AACtB,MAAAA,GAAE,eAAe;AACjB,UAAI,OAAO,eAAe,CAAC,OAAO,OAAO,QAAQ,CAAC,OAAO,OAAO,OAAQ;AACxE,aAAO,UAAU;AACjB,WAAK,gBAAgB;AAAA,IACvB;AACA,aAAS,YAAYA,IAAG;AACtB,MAAAA,GAAE,eAAe;AACjB,UAAI,OAAO,SAAS,CAAC,OAAO,OAAO,QAAQ,CAAC,OAAO,OAAO,OAAQ;AAClE,aAAO,UAAU;AACjB,WAAK,gBAAgB;AAAA,IACvB;AACA,aAAS,OAAO;AACd,YAAM,SAAS,OAAO,OAAO;AAC7B,aAAO,OAAO,aAAa,0BAA0B,QAAQ,OAAO,eAAe,YAAY,OAAO,OAAO,YAAY;AAAA,QACvH,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV,CAAC;AACD,UAAI,EAAE,OAAO,UAAU,OAAO,QAAS;AACvC,UAAID,UAAS,MAAM,OAAO,MAAM;AAChC,UAAI,SAAS,MAAM,OAAO,MAAM;AAChC,aAAO,OAAO,OAAO,YAAY;AAAA,QAC/B,QAAAA;AAAA,QACA;AAAA,MACF,CAAC;AACD,MAAAA,UAAS,kBAAkBA,OAAM;AACjC,eAAS,kBAAkB,MAAM;AACjC,YAAM,aAAa,CAAC,IAAI,QAAQ;AAC9B,YAAI,IAAI;AACN,aAAG,iBAAiB,SAAS,QAAQ,SAAS,cAAc,WAAW;AAAA,QACzE;AACA,YAAI,CAAC,OAAO,WAAW,IAAI;AACzB,aAAG,UAAU,IAAI,GAAG,OAAO,UAAU,MAAM,GAAG,CAAC;AAAA,QACjD;AAAA,MACF;AACA,MAAAA,QAAO,QAAQ,QAAM,WAAW,IAAI,MAAM,CAAC;AAC3C,aAAO,QAAQ,QAAM,WAAW,IAAI,MAAM,CAAC;AAAA,IAC7C;AACA,aAASE,WAAU;AACjB,UAAI;AAAA,QACF,QAAAF;AAAA,QACA;AAAA,MACF,IAAI,OAAO;AACX,MAAAA,UAAS,kBAAkBA,OAAM;AACjC,eAAS,kBAAkB,MAAM;AACjC,YAAM,gBAAgB,CAAC,IAAI,QAAQ;AACjC,WAAG,oBAAoB,SAAS,QAAQ,SAAS,cAAc,WAAW;AAC1E,WAAG,UAAU,OAAO,GAAG,OAAO,OAAO,WAAW,cAAc,MAAM,GAAG,CAAC;AAAA,MAC1E;AACA,MAAAA,QAAO,QAAQ,QAAM,cAAc,IAAI,MAAM,CAAC;AAC9C,aAAO,QAAQ,QAAM,cAAc,IAAI,MAAM,CAAC;AAAA,IAChD;AACA,IAAAF,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,WAAW,YAAY,OAAO;AAE9C,QAAAK,SAAQ;AAAA,MACV,OAAO;AACL,aAAK;AACL,QAAAJ,QAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAD,IAAG,+BAA+B,MAAM;AACtC,MAAAC,QAAO;AAAA,IACT,CAAC;AACD,IAAAD,IAAG,WAAW,MAAM;AAClB,MAAAI,SAAQ;AAAA,IACV,CAAC;AACD,IAAAJ,IAAG,kBAAkB,MAAM;AACzB,UAAI;AAAA,QACF,QAAAE;AAAA,QACA;AAAA,MACF,IAAI,OAAO;AACX,MAAAA,UAAS,kBAAkBA,OAAM;AACjC,eAAS,kBAAkB,MAAM;AACjC,UAAI,OAAO,SAAS;AAClB,QAAAD,QAAO;AACP;AAAA,MACF;AACA,OAAC,GAAGC,SAAQ,GAAG,MAAM,EAAE,OAAO,QAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,QAAM,GAAG,UAAU,IAAI,OAAO,OAAO,WAAW,SAAS,CAAC;AAAA,IAC9G,CAAC;AACD,IAAAF,IAAG,SAAS,CAAC,IAAIG,OAAM;AACrB,UAAI;AAAA,QACF,QAAAD;AAAA,QACA;AAAA,MACF,IAAI,OAAO;AACX,MAAAA,UAAS,kBAAkBA,OAAM;AACjC,eAAS,kBAAkB,MAAM;AACjC,YAAM,WAAWC,GAAE;AACnB,UAAI,iBAAiB,OAAO,SAAS,QAAQ,KAAKD,QAAO,SAAS,QAAQ;AAC1E,UAAI,OAAO,aAAa,CAAC,gBAAgB;AACvC,cAAM,OAAOC,GAAE,QAAQA,GAAE,gBAAgBA,GAAE,aAAa;AACxD,YAAI,MAAM;AACR,2BAAiB,KAAK,KAAK,YAAUD,QAAO,SAAS,MAAM,KAAK,OAAO,SAAS,MAAM,CAAC;AAAA,QACzF;AAAA,MACF;AACA,UAAI,OAAO,OAAO,WAAW,eAAe,CAAC,gBAAgB;AAC3D,YAAI,OAAO,cAAc,OAAO,OAAO,cAAc,OAAO,OAAO,WAAW,cAAc,OAAO,WAAW,OAAO,YAAY,OAAO,WAAW,GAAG,SAAS,QAAQ,GAAI;AAC3K,YAAI;AACJ,YAAIA,QAAO,QAAQ;AACjB,qBAAWA,QAAO,CAAC,EAAE,UAAU,SAAS,OAAO,OAAO,WAAW,WAAW;AAAA,QAC9E,WAAW,OAAO,QAAQ;AACxB,qBAAW,OAAO,CAAC,EAAE,UAAU,SAAS,OAAO,OAAO,WAAW,WAAW;AAAA,QAC9E;AACA,YAAI,aAAa,MAAM;AACrB,eAAK,gBAAgB;AAAA,QACvB,OAAO;AACL,eAAK,gBAAgB;AAAA,QACvB;AACA,SAAC,GAAGA,SAAQ,GAAG,MAAM,EAAE,OAAO,QAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,QAAM,GAAG,UAAU,OAAO,OAAO,OAAO,WAAW,WAAW,CAAC;AAAA,MACnH;AAAA,IACF,CAAC;AACD,UAAMI,UAAS,MAAM;AACnB,aAAO,GAAG,UAAU,OAAO,GAAG,OAAO,OAAO,WAAW,wBAAwB,MAAM,GAAG,CAAC;AACzF,WAAK;AACL,MAAAL,QAAO;AAAA,IACT;AACA,UAAMI,WAAU,MAAM;AACpB,aAAO,GAAG,UAAU,IAAI,GAAG,OAAO,OAAO,WAAW,wBAAwB,MAAM,GAAG,CAAC;AACtF,MAAAD,SAAQ;AAAA,IACV;AACA,WAAO,OAAO,OAAO,YAAY;AAAA,MAC/B,QAAAE;AAAA,MACA,SAAAD;AAAA,MACA,QAAAJ;AAAA,MACA;AAAA,MACA,SAAAG;AAAA,IACF,CAAC;AAAA,EACH;;;ACrMA,WAAS,kBAAkBG,UAAS;AAClC,QAAIA,aAAY,QAAQ;AACtB,MAAAA,WAAU;AAAA,IACZ;AACA,WAAO,IAAIA,SAAQ,KAAK,EAAE,QAAQ,gBAAgB,MAAM,EACvD,QAAQ,MAAM,GAAG,CAAC;AAAA,EACrB;;;ACFA,WAAS,WAAW,MAAM;AACxB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAC;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,MAAM;AACZ,iBAAa;AAAA,MACX,YAAY;AAAA,QACV,IAAI;AAAA,QACJ,eAAe;AAAA,QACf,WAAW;AAAA,QACX,aAAa;AAAA,QACb,cAAc;AAAA,QACd,mBAAmB;AAAA,QACnB,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,qBAAqB;AAAA,QACrB,MAAM;AAAA;AAAA,QAEN,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,QACpB,uBAAuB,YAAU;AAAA,QACjC,qBAAqB,YAAU;AAAA,QAC/B,aAAa,GAAG,GAAG;AAAA,QACnB,mBAAmB,GAAG,GAAG;AAAA,QACzB,eAAe,GAAG,GAAG;AAAA,QACrB,cAAc,GAAG,GAAG;AAAA,QACpB,YAAY,GAAG,GAAG;AAAA,QAClB,aAAa,GAAG,GAAG;AAAA,QACnB,sBAAsB,GAAG,GAAG;AAAA,QAC5B,0BAA0B,GAAG,GAAG;AAAA,QAChC,gBAAgB,GAAG,GAAG;AAAA,QACtB,WAAW,GAAG,GAAG;AAAA,QACjB,iBAAiB,GAAG,GAAG;AAAA,QACvB,eAAe,GAAG,GAAG;AAAA,QACrB,yBAAyB,GAAG,GAAG;AAAA,MACjC;AAAA,IACF,CAAC;AACD,WAAO,aAAa;AAAA,MAClB,IAAI;AAAA,MACJ,SAAS,CAAC;AAAA,IACZ;AACA,QAAI;AACJ,QAAI,qBAAqB;AACzB,aAAS,uBAAuB;AAC9B,aAAO,CAAC,OAAO,OAAO,WAAW,MAAM,CAAC,OAAO,WAAW,MAAM,MAAM,QAAQ,OAAO,WAAW,EAAE,KAAK,OAAO,WAAW,GAAG,WAAW;AAAA,IACzI;AACA,aAAS,eAAe,UAAU,UAAU;AAC1C,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,OAAO,OAAO;AAClB,UAAI,CAAC,SAAU;AACf,iBAAW,SAAS,GAAG,aAAa,SAAS,aAAa,MAAM,gBAAgB;AAChF,UAAI,UAAU;AACZ,iBAAS,UAAU,IAAI,GAAG,iBAAiB,IAAI,QAAQ,EAAE;AACzD,mBAAW,SAAS,GAAG,aAAa,SAAS,aAAa,MAAM,gBAAgB;AAChF,YAAI,UAAU;AACZ,mBAAS,UAAU,IAAI,GAAG,iBAAiB,IAAI,QAAQ,IAAI,QAAQ,EAAE;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AACA,aAAS,iBAAiB,WAAW,WAAW,QAAQ;AACtD,kBAAY,YAAY;AACxB,kBAAY,YAAY;AACxB,UAAI,cAAc,YAAY,GAAG;AAC/B,eAAO;AAAA,MACT,WAAW,cAAc,YAAY,GAAG;AACtC,eAAO;AAAA,MACT;AACA;AAAA,IACF;AACA,aAAS,cAAcC,IAAG;AACxB,YAAM,WAAWA,GAAE,OAAO,QAAQ,kBAAkB,OAAO,OAAO,WAAW,WAAW,CAAC;AACzF,UAAI,CAAC,UAAU;AACb;AAAA,MACF;AACA,MAAAA,GAAE,eAAe;AACjB,YAAMC,SAAQ,aAAa,QAAQ,IAAI,OAAO,OAAO;AACrD,UAAI,OAAO,OAAO,MAAM;AACtB,YAAI,OAAO,cAAcA,OAAO;AAChC,cAAM,gBAAgB,iBAAiB,OAAO,WAAWA,QAAO,OAAO,OAAO,MAAM;AACpF,YAAI,kBAAkB,QAAQ;AAC5B,iBAAO,UAAU;AAAA,QACnB,WAAW,kBAAkB,YAAY;AACvC,iBAAO,UAAU;AAAA,QACnB,OAAO;AACL,iBAAO,YAAYA,MAAK;AAAA,QAC1B;AAAA,MACF,OAAO;AACL,eAAO,QAAQA,MAAK;AAAA,MACtB;AAAA,IACF;AACA,aAASC,UAAS;AAEhB,YAAM,MAAM,OAAO;AACnB,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,qBAAqB,EAAG;AAC5B,UAAI,KAAK,OAAO,WAAW;AAC3B,WAAK,kBAAkB,EAAE;AAEzB,UAAI;AACJ,UAAI;AACJ,YAAM,eAAe,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,OAAO,SAAS,OAAO,OAAO;AACpH,YAAM,QAAQ,OAAO,OAAO,OAAO,KAAK,KAAK,eAAe,OAAO,OAAO,cAAc,IAAI,OAAO,SAAS;AAC5G,UAAI,OAAO,OAAO,MAAM;AACtB,wBAAgB,OAAO,qBAAqB;AAC5C,kBAAU,OAAO,OAAO,iBAAiB,IAAI,KAAK,MAAM,OAAO,YAAY,OAAO,OAAO,cAAc,IAAI,OAAO;AAAA,MACpH,WAAW,OAAO,OAAO,cAAc,aAAa;AAClD,kBAAU,OAAO;AACjB,wBAAgB,OAAO;AAAA,MACzB,OAAO;AACL,wBAAgB,OAAO,iBAAiB;AACxC,kBAAU,OAAO,eAAe;AAAA,MAClC;AAEA,UAAI,OAAO,SAAS,aAAa,OAAO,WAAW,WAAW,OAAO,WAAW,QAAQ,SAAS,GAAG;AAClG,cAAM,UAAU,OAAO,WAAW;AAClC,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI,OAAO,gBAAgB;AACzB,uBAAa,iBAAiB,QAAQ,CAAC,GAAG,OAAO,aAAa,IAAI,UAAU,UAAU,IAAI;AAC1F,aAAG,QAAQ,WAAS;AAClB,kBAAM,MAAM,OAAO,aAAa,IAAI,UAAU,QAAQ,IAAI,GAAG,cAAc,OAAO,qBAAqB,EAAE;AAAA,UAC3G,CAAC;AACD,cAAI,OAAO,qBAAqB,KAAK,kBAAkB,QAAW;AAChE,kCAAsB,WAAW,iBAAiB;AAClD,gBAAI,qBAAqB,OAAO,qBAAqB,GAAG;AACtD,mCAAqB,OAAO,qBAAqB;AAAA,YACnD,WAAW,qBAAqB,GAAG;AACjC,mCAAqB;AAAA,YACvB;AAAA,UACF;AACA,uBAAa,KAAK,IAAI,UAAU,oBAAoB,CAAC;AACrD,sBAAY,cAAc,KAAK,IAAI,QAAQ,QAAQ,OAAO,kBAAkB,IAAI;AAChF,sBAAY,YAAY,cAAc;AAAA,QACxC;AACA,gBAAQ,QAAQ,cAAY;AAC1B,gBAAM,kBAAkB,CAAC,GAAG,CAAC,IAAI,SAAS,cAAc,SAAS,cAAc,OAAO,EAAE,IAAI,YAAU,GAAG,OAAO,iBAAiB,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,CAAAC,OAAK,OAAOA,OAAM,YAAYA,GAAE,SAAS,GAAG,IAAIA,GAAE,MAAM,GAAG,IAAIA,EAAC,EAAE,KAAK;AAC1N,mBAAS,UAAU,OAAO,GAAG,eAAe;AAAA,QAC9C,CAAC;AACD,YAAI,GAAG,SAAS,GAAG;AACjB,kBAAQ,QAAQ,YAAU;AACxB,kBAAM,cAAc,aAAa,MAAM;AACvC,gBAAI,gBAAgB,SAAS;AAC3B,qBAAO,UAAU,IAAI,GAAG,OAAO,kBAAkB,MAAM,GAAG,CAAC;AAAA,YAC7D,WAAW,OAAO,WAAW;AAC3B,qBAAO,aAAa,QAAQ,QAAQ;AAAA,YACtC;AACA,gBAAI,OAAO,gBAAgB;AACzB,kBAAI,eAAe,cAAc,eAAe,WAAW;AACzD,uBAAO,UAAU,IAAI,GAAG,GAAG,OAAO,iBAAiB,QAAQ,MAAM,GAAG,CAAC;AAAA,cACvE;AACA,kBAAI,gBAAgB,YAAY;AAC9B,+BAAe,QAAQ,MAAM;AAAA,cAC/B;AACA,kBAAI,gBAAgB,WAAW;AAC7B,+BAAe,QAAQ,MAAM;AAAA,cAC/B;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,gBAAM,SAAS,QAAQ,OAAO;AAC9B,cAAI,QAAQ;AACV,mBAAO,UAAU,IAAI,GAAG,OAAO,kBAAkB,MAAM,GAAG,CAAC;AAAA,UAC7D;AACA,cAAI,OAAO,WAAW;AACpB,oBAAQ,QAAQ,CAAC,UAAU,gBAAgB;AACzC,uBAAS,aAAa,QAAQ,gBAAgB,UAAU,kBAAkB,QAAQ;AAAA,YACpF,CAAC;AAAA,UACH;AACA,cAAI,OAAO,gBAAgB;AACzB,kBAAM,uBAAuB,QAAQ,UAAU;AAC/C,kBAAM,sBAAsB,QAAQ,SAAS;AAC7C,qBAASC,KAAI,YAAYA,MAAK,WAAWA,MAAK,GAAG;AAC/C,kBAAI,QAAQA,EAAC,GAAG;AACd,wBAAQA,EAAC,EAAE,UAAU,IAAI,GAAG,GAAG,OAAO,iBAAiB,QAAQ,MAAM,GAAG,CAAC;AAAA,cAC3E;AAAA,YACF;AACA,2BAAe,sBAAsB,MAAM;AAC3C,2BAAe,qBAAqB,MAAM;AAAA,UAC5C;AAAA,QACF;AACA,YAAI,OAAO,gBAAgB;AACzB,gBAAM,uBAAuB,KAAK,IAAI,QAAQ,QAAQ,OAAO,qBAAqB,CAAC;AACnF,gBAAM,iBAAiB,aAAa,uBAAuB,cAAc,IAAI,WAAW;AACxF,gBAAM,aAAa,MAAM,UAAU;AACnC,kBAAQ,QAAQ,YAAU;AACxB,mBAAO,MAAM,OAAO,aAAa,IAAI,aAAa,KAAK,IAAI,GAAG,aAAa;AAAA,UAC7E,CAAC;AAAA,QACH;AAAA,MACF;AACA,SAAG,QAAQ,CAAC,OAAO,eAAe;AAChC,YAAI,OAAO,SAAS,YAAY;AAC9B,gBAAM,iBAAiB,kBAAkB,OAAO,YAAY,CAAC,EAAE,QAAQ,gBAAc;AACnF,uBAAW,cAAc,OAAO,sBAAsB,UAAU,CAAC;AAAA,UACnE,CAAC;AACD,gBAAM,iBAAiB,kBAAkB,OAAO,UAAU,CAAC,EAAE,QAAQ,aAAW;AAC9E,oBAAQ,cAAc,OAAO,oBAAoB,KAAK;AAAA,UACxD,CAAC;AAAA,QACH;AACA,YAAI,OAAO,SAAS,eAAe;AACjC,cAAI;AACJ,cAAI,OAAO,qBAAqB;AAC9B,mCAAuB,OAAO,aAAa,IAAI,aAAa;AAAA,UAC9D,OAAO;AACL,mCAAuB,OAAO,aAAa,IAAI,eAAe;AAAA,UAChE;AACA,gBAAM,SAAS,UAAU,KAAK;AAC9B,cAAI,SAAS;AACb,cAAI,SAAS;AACb,cAAI,yBAAyB,cAAc;AACzC,qBAAS;AAAA,UACX,OAAO;AACL,qBAAS;AAAA,UACX;AACA,gBAAM,iBAAiB,kBAAkB,OAAO,oBAAoB,CAAC,EAAE,QAAQ,gBAAc;AAC3F,uBAAW,MAAM,YAAY,6BAA6B,MAAM,YAAY,MAAM;AAClF,uBAAW,MAAM,qBAAqB,GAAG,OAAO,OAAO,KAAK;AAAA,UAC9D,CAAC;AAAA,QACH;AACA,YAAI,OAAO,SAAS,YAAY,OAAO,cAAc;AACnD,gBAAM,YAAY,OAAO,aAAa,QAAQ,UAAU,GAAG,KAAK;AAChE,cAAI,eAAe,EAAG,MAAK,oBAAoB,KAAK;AAAA,QACtD,OAAO;AACL,cAAI,eAAe,EAAG,MAAK,oBAAoB,KAAK;AACpD,eAAK,oBAAoB,KAAK;AAAA,QAChC;AACA,YAAI,OAAO,OAAO,iBAAiB,OAAO,SAAS;AACjD,gBAAM,UAAU,OAAO,WAAW,QAAQ,QAAQ,EAAE,OAAO,SAAS;AAAA,QACtE;AAAA,MACF,CAAC;AAAA,IACH;AACA,aAAS,SAAS;AAEhB,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,qBAAqB,EAAG;AAC5B,YAAM,eAAe,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,OAAO,SAAS,OAAO,QAAQ,OAAO,OAAO,KAAK,OAAO,IAAI,OAAO,OAAO,SAAS,KAAK,KAAK,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO;AAC7N,UAAI,KAAK,OAAO,WAAW;AAC3B,WAAK,kBAAkB,EAAE;AACzB,UAAI,iBAAiB;AACrB,UAAI,OAAO,SAAS,WAAW;AAC7B,YAAI,kBAAkB,OAAO,OAAO,OAAO,KAAK,KAAK,eAAe,OAAO,OAAO,cAAc,IAAI,OAAO,SAAS;AACpH,YAAI,OAAO,OAAO,YAAY,OAAO,OAAO,SAAS,WAAW,kBAAkB,cAAc;AAC9F,4BAAkB;AAAA,QACpB;AACA,iBAASA,KAAI,GAAGA,KAAI,iBAAiBA,MAAK,GAAG;AAC3C,cAAI,OAAO,cAAc;AACvB,8BAAkB,OAAO,aAAa,KAAK,QAAQA,IAAG,OAAO,WAAW;AAAA,UAC1E,OAAO;AAEL,8BAAkB,IAAI,OAAO,aAAa,IAAI,OAAO,YAAY,kBAAkB,EAAE,WAAW,OAAO,WAAW,OAAO,OAAO,aAAa;AAAA,UAC/I;AAAA,QACF;AAAA,MACF;AACA,UAAI,OAAO,SAAS,YAAY;AAC9B,YAAI,OAAO,gBAAgB;AACzB,2BAAiB,OAAO,eAAe,KAAK,QAAQ,OAAO,cAAc,OAAO,UAAU;AAAA,QAC5F,OAAO;AACL,2BAAiB,gBAAgB,OAAO,YAAY,4BAAsC,OAAO,UAAU;AAAA,QAC7G;AAAA,MACF;AACA,UAAI,OAAO,SAAS,eAAe;AACjC,YAAI,OAAO,mBAAmB;AAC5B,2BAAiB,OAAO,kBAAkB,KAAK,QAAQ,OAAO,oBAAoB;AAAA,QACpF,OAAO;AACL,2BAAiB,gBAAgB,OAAO,oBAAoB;AAAA,QAC9D;AAAA,MACF;AACA,aAAO,WAAW,UAAU,CAAC;AAC7B,SAAG,QAAQ,WAAS;AAClB,YAAI,OAAO,SAAS,UAAU;AAC5B,gBAAM,YAAY,kBAAkB;AAAA,QACtC;AACA,YAAI,OAAO,SAAS,WAAW;AAC7B,iBAAO,WAAW,QAAQ,KAAK,GAAG,MAAM,iBAAiB,kBAAkB,OAAO,WAAW,CAAC,CAAC;AAAA,QACjG;AAAA,MACF,CAAC;AACD,UAAI,OAAO,SAAS,UAAU;AAC5B,aAAK,oBAAoB,GAAG,CAAC,CAAC;AAAA,MAChC;AAAA,IACF;AACA,aAAS,OAAO;AACd,aAAO,OAAO,aAAa,0BAA0B,QAAQ,OAAO,eAAe,YAAY,OAAO,OAAO,YAAY;AAAA,QACvH,IAAI;AAAA,MACN,CAAC;AACD,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,CAAC,OAAO,GAAI;AAChB,UAAI;AACJ,UAAI,OAAO,OAAO,OAAO,YAAY,OAAO,WAAW;AACrD,aAAK,OAAO,GAAG,cAAc,OAAO,EAAE;AAAA,MACxC;AACA,UAAI,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU;AACxC,aAAK,CAAC,GAAG,SAAS,iBAAiB,OAAO,EAAE,CAAC;AAAA,MAC/C;AACA,UAAI,CAAC,IAAI;AACP,aAAK,OAAO;AAAA,MACd;AACA,UAAI,CAAC,MAAM,GAAG,WAAW,EAAG;AAC5B,UAAI,OAAO,OAAO,qBAAqB,OAAO,OAAO,OAAO,YAAY,MAAM,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG;AAC1G,aAAK,CAAC,GAAG,OAAO,GAAG,iBAAiB,OAAO,EAAE,CAAC;AAE9C,YAAI,GAAG,SAAS,GAAG;AACjB,eAAK,GAAG,KAAK,WAAS;AACpB,gBAAI,eAAe,OAAO,SAAS,EAAE,CAAC,MAAM,OAAO,GAAI,QAAO;AAC9D,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,MAAM,QAAQ,EAAE,KAAK,GAAG,WAAW,EAAG,MAAK,GAAG,CAAC;AACnD,aAAO,OAAO,OAAO,YAAY;AAAA,QAC/B;AAAA,MACF,CAAC;AACD,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,YAAI,OAAO,SAAS,aAAa,OAAO,WAAW;AACjD,gBAAM,UAAU,IAAI,IAAI,OAAO,kBAAkB,IAAI,MAAM,GAAG,CAAC;AAAA,QACjE;AACA,cAAM,UAAU,IAAI,OAAO,gBAAgB,OAAO,IAAI;AACtD,cAAM,UAAU,IAAI,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AACzF,YAAI,OAAO,SAAS,aAAa,OAAO,gBAAgB;AACtD,gBAAM,UAAU,IAAI,GAAG,OAAO,aAAa,GAAG,OAAO,IAAI,UAAU;AACnE,+BAAqB;AACrB,cAAI,OAAO,qBAAqB,GAAG;AACjC,mBAAO,qBAAqB;AAAA,UAC9B;AAAA,QACF;AACA,YAAI,OAAO,SAAS,iBAAiB,OAAO,qBAAqB;AAC/D,gBAAM,UAAU,IAAI,OAAO,wBAAwB;AAAA,QACrD;AACA,YAAI,OAAO,WAAW;AACpB,gBAAM,iBAAiB,SAAS,aAAa;AAAA,QAC/C;AACA,YAAI,CAAC,OAAO,SAAS;AACnB,gBAAM,UAAU,IAAI,OAAO,SAAS;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AACA,aAASC,WAAU;AACjB,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,qBAAqB,EAAG;AAC5B,UAAI,KAAK,OAAO,WAAW;AAC3B,UAAI,IAAI;AACN,aAAK,kBAAkB,EAAE;AACzB,WAAG,QAAQ,WAAS;AAClB,gBAAM,UAAU,OAAO,OAAO,WAAW;AACzC,gBAAM,UAAU,OAAO,OAAO,gBAAgB,OAAO,IAAI;AACzD,gBAAM,UAAU,OAAO,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AAC5F,cAAI,OAAO,WAAW;AACpB,kBAAM,UAAU,OAAO,IAAI,OAAO,kBAAkB,IAAI,MAAM,GAAG,CAAC;AAClE,kBAAM,oBAAoB,SAAS,aAAa;AAAA,UAClD;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,OAAO,WAAW,QAAS,QAAO,WAAW,QAAQ,QAAQ,WAAS,MAAM,UAAU,OAAO,GAAG,OAAO,kBAAkB,MAAM,GAAG,CAAC,CAAC;AAAA,IAC1I;AACA,IAAAN,IAAG,mBAAmB,MAAM;AAC1B,UAAI,CAAC,OAAO,cAAc,CAAC,OAAO,WAAW,GAAI;AACjD,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI;AAAA,QACF;AAAA,MACF,IAAI,OAAO;AACX,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,UAAU,OAAO,OAAO,iBAAiB,OAAO,aAAa;AACnE,cAAM,UAAU,IAAI,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AAAA,MAC3F,CAAC;AAAA,IACH,CAAC;AACD,IAAAA,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,WAAW,YAAY,OAAO;AAE9C,QAAAO,SAAQ;AAAA,MACV,OAAO;AACL,aAAK;AACL,eAAO;AACP,QAAAJ,QAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAH,IAAG,qBAAqB,MAAM;AAC5B,UAAI,OAAO,OAAO,cAAc,aAAa;AAC3C,QAAAG,QAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAH,IAAG,mBAAmB,MAAM;AAC1B,MAAAG,QAAO;AAAA,IACT,CAAC;AACD,IAAAH,IAAG,wBAAwB,MAAM;AAC/B,aAAO;AACP,MAAAG,QAAO;AAAA,IACT,CAAC;AACD,IAAAH,IAAG,WAAW,MAAM;AAClB,MAAAM,SAAQ;AAAA,IACV,CAAC;AACD,IAAAN,IAAG,kBAAkB,MAAM;AACzB,UAAI;AAAA,QACF;AAAA,MACF,IAAI,OAAO;AACX,UAAI,IAAI;AACN,aAAK,kBAAkB,EAAE;AACzB,WAAG,QAAQ,WAAS,MAAM,UAAU,OAAO,UAAU,WAAW,KAAK,EAAE,OAAO,OAAO,WAAW,SAAS,CAAC;AAAA,MAC5G;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,eAAe,MAAM;AACtB,MAAAG,QAAO;AAAA,IACT,CAAC;AACD,IAAAH,IAAG,SAAS,CAAC,IAAIC,OAAM;AACrB,YAAM,WAAWA,GAAE;AACnB,YAAM,KAAK,kBAAkB,OAAO,WAAW,EAAE;AACjD,UAAI,OAAO,OAAO,WAAW,MAAM,OAAO,OAAO,WAAW,eAAe,MAAM,GAAG,SAAS,KAAK,CAAC,SAAS,UAAU,SAAS,OAAO,OAAO,WAAW,WAAW,GAAG;AACpK,YAAI,OAAO,eAAe,OAAO,WAAW,UAAU,aAAa,OAAO,WAAW,UAAU,OAAO,WAAW,UAAU,aAAa,OAAO,WAAW,QAAS;AACnK,cAAM,WAAW,GAAG,CAAC,EAAE,UAAU,SAAS,OAAO,OAAO,WAAW,WAAW;AAC9E,YAAI,aAAa,MAAM;AACrB,eAAK,gBAAgB;AAAA,QACvB,OAAO;AACL,eAAK,gBAAgB;AAAA,QACvB;AACA,WAAG,QAAQ,WAAS,MAAM,UAAU,OAAO,OAAO,OAAO,WAAW,WAAW,CAAC;AAAA,MAClF;AAAA,IACF,CAAC;AACD,UAAMO,UAAS,MAAM;AACnB,aAAO,GAAG,UAAU,OAAO,OAAO,OAAO,WAAW,uBAAuB;AAC3E,UAAI;AAAA,QACF;AAAA,MACF,IAAI,OAAO;AACX,UAAI,IAAI;AACN,aAAK,kBAAkB,EAAE;AACzB,WAAG,QAAQ,WAAS,MAAM,UAAU,OAAO,OAAO,OAAO,WAAW,uBAAuB,CAAC;AAAA,MAC9F;AACA,WAAK;AACL,aAAO;AACP,MAAAL,QAAO;AAAA,IACT;AACA,UAAMI,WAAU,MAAM;AACpB,aAAO,GAAG,UAAU,IAAI,OAAO,OAAO,WAAW,uBAAuB;AACxE,UAAI;AAAA,QACF;AAAA,MACF,IAAI,OAAO;AACX,UAAI,IAAI;AACN,aAAK,kBAAkB,EAAE;AACzB,WAAG,QAAQ,WAAS,MAAM,UAAU,IAAI,OAAO,OAAO,WAAW,uBAAuB,CAAC;AAAA,MAC3F;AACA,MAAAD,SAAQ;AAAA,IACV;AACA,WAAO,OAAO,OAAO,YAAY;AAAA,MAC/B,QAAAE;AAAA,MACA,SAAAD;AAAA,MACA;AAAA,MACA,QAAAJ;AAAA,MACA;AAAA,MACA,SAAAG;AAAA,IACF,CAAC;AAAA,EACH;;;ACpcA,WAAS,UAAU,MAAM;AACvB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAG;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAMC,YAAW,YAAY;AAC7B,QAAI,YAAY;AAChB,QAAI,UAAU;AACd,QAAI,cAAc;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,iBAAa;AAAA,MACX,WAAW;AAAA,QACT,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,MAAM;AAAA,QACN,WAAW;AAAA,QACX,eAAe;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,QACX,wBAAwB;AAAA,QACxB,iBAAiB;AAAA,QACjB,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO,YAAY;AAAA,MACjB,IAAI;AAAA,MACJ,QAAQ;AAAA,IACV;AACA,aAASC,gBAAe;AACtB,UAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,YAAM;AAAA,QACJ;AAAA,QACA,cAAc;AAAA,MAChB,IAAI;AACJ,YAAM;AAAA,QACJ,QAAAC;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,WAAW,OAAO,OAAO,OAAO,OAAO,eAAe,OAAO;AACnE,UAAI,UAAU;AACd,UAAI,UAAU,YAAY,YAAY;AACtC,UAAI,KAAK;AACP,iBAAS,CAAC;AACV,YAAI,SAAS,GAAG;AACd,oBAAU,WAAW;AACrB,mBAAS;AAAA,QACX,WAAW,CAAC,SAAS,WAAW,WAAW;AACzC,oBAAU,YAAY;AAAA,QACxB;AAAA,MACF,WAAW,SAAS,GAAG;AACrB,kBAAU,WAAW;AACrB,iBAAS;AAAA,MACX,WAAW,SAAS,WAAW,WAAW;AACxC,kBAAU,YAAY;AAAA,MACxB;AACA,UAAI,OAAO,aAAa,GAAG;AACzB,QAAAA,QAAO,MAAM,YAAY,eAAe,MAAM;AAC9C,QAAAA,QAAO,MAAM,QAAQ,GAAG,OAAO;AAAA,MACjC,OAAO;AACL,QAAAA,QAAO,MAAM,YAAY,oBAAoB,MAAM;AACnD,QAAAA,QAAO,MAAM,SAAS,GAAG,OAAO;AAAA,MAClC;AACA,UAAI,OAAO,MAAM;AACf,qBAAa,OAAO;AACpB,WAAG,MAAM,UAAU;AACnB,kBAAU,WAAW,MAAM;AACzB,aAAG,MAAM,UAAU;AACnB,aAAG,MAAM,qBAAqB;AAAA,QAChC,GAAG,GAAI;AAAA,MACT;AAAA,IACF;AACA,aAASC,eAAcC,WAAU;AAC/B,UAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,aAAO,UAAU,OAAO,MAAM,qBAAqB,GAAGA,SAAQ;AAAA,IAChE;AACA,aAASC,cAAa;AACpB,UAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,YAAM;AAAA,QACJ,QAAAH;AAAA,QACA;AAAA,MACF,IAAI;AACJ,MAAAA,QAAO,MAAM,QAAQ;AACrB,MAAAA,QAAO,MAAM,SAAS;AACtB,kBAAY,OAAO,aAAa,IAAI,GAAG,cAAc,GAAG;AACxD,gBAAU,OAAO,QAAQ,OAAO,cAAc,OAAO,OAAO,sBAAsB,OAAO,OAAO,iBAAiB,OAAO,SAAS,CAAC,IAAI;AACtI,UAAI,OAAO,OAAO,UAAU,aAAa,QAAQ;AAC/C,mBAAW,YAAY;AAAA,MACzB,OAAO;AACL,mBAAW,SAAS,OAAO,OAAO,UAAU,UAAU,EAAE;AAAA,MAC1D;AACA,UAAI,OAAO,aAAa,GAAG;AACzB,QAAAA,QAAO,MAAM,QAAQ,GAAG,QAAQ;AAAA,MAClC,OAAO;AACL,QAAAA,QAAO,MAAM,SAAS,GAAG,QAAQ;AAAA,MACnC;AACA,UAAI,WAAW,GAAG;AAChB,WAAG,MAAM,UAAU;AAAA,MACrB,OAAO;AACL,WAAG,MAAM,UAAU;AAAA,MACrB;AACA,UAAI,OAAO,OAAO,UAAU,MAAM;AAChC,WAAG,MAAM,UAAU;AAAA,MACrB;AACA,UAAI,OAAO,OAAO,iBAAiB,OAAO,SAAS;AACjD,kBAAU,GAAG,UAAU,OAAO,WAAW,QAAQ,QAAQ,EAAE,OAAO,OAAO,UAAU,SAAS;AAAA,MAC9F;AAAA,IACF;AACA,aAAS,mBAAmBI,IAAG;AAC7B,aAAO,OAAO,aAAa,IAAIA,GAAE,UAAUA,GAAE;AAAA,IAC/C;AACA,aAAS,gBAAgBA,IAAG;AAC1B,YAAM;AAAA,QACJ;AAAA,QACA,cAAc;AAAA,MAChB,IAAI;AACJ,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,UAAI;AACJ,uBAAiB,mBAAmBA,EAAC,IAAI,cAAc,EAAE,EAAE,OAAO,aAAa,IAAI,SAAS,KAAK,KAAK,iBAAiB,OAAO,eAAe,WAAW,OAAO,YAAY;AAC3K,sBAAgB,KAAK,IAAI,KAAK,IAAI,eAAe,CAAC,GAAG,CAAC;AACtD,UAAI,KAAK;AACP,wBAAgB,IAAI;AAAA,MACtB;AACA,YAAM,WAAW,OAAO,aAAa,KAAK,OAAO,aAAa,IAAI,OAAO,aAAa,KAAK;AAC3F,aAAO,eAAe,QAAQ;AAC9B,aAAO,aAAa,QAAQ;AAC5B,aAAO,kBAAkB;AACzB,aAAO,oBAAoB;AAAA,IAC7B;AACA,aAAS,YAAYA,IAAG;AACtB,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM;AAAA,QACJ;AAAA,QACA,QAAAJ;AAAA,MACF,IAAI;AACJ,kBAAY;AACZ,qBAAeI,GAAE,WAAWJ,UAAS,mBAAmBI,EAAC,IAAIA,GAAE,OAAO,sBAAsB,EAAE,OAAO,aAAa,IAAI,SAAS,KAAK,IAAI;AACxI,MAAAA,GAAE,eAAe;AACjB,MAAAA,GAAE,gBAAgB;AAClB,gBAAU,MAAM,qBAAqB;AACrC,MAAAJ,QAAO,MAAM,qBAAqB;AAClC,sBAAgBI,EAAC;AACjB,mBAAa,WAAW;AACxB,SAAG,MAAM,qBAAqB;AAC9B,UAAI,OAAO,MAAM;AACf,WAAG,MAAM,UAAU;AAAA,MACrB;AACA,UAAI,OAAO,OAAO,SAAS;AACzB,eAAO,UAAU,MAAM,kBAAkB,IAAI;AAAA,MAC/C;AACA,WAAK,sBAAsBA,EAAC;AAAA,IAC9B;AACA,aAAS,WAAWA,IAAG;AACrB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM;AAAA,QACJ;AAAA,QACA,QAAAJ;AAAA,MACF,IAAI;AACJ,UAAI,CAAC,UAAW;AAChB,UAAII,GAAE,kBAAkBA,GAAE,WAAY,CAAAA,GAAE,eAAe;AAAA,UAAO,CAAAA,GAAE,cAAc;AAC9E,sBAAgBA,EAAC;AACjB,gBAAU,MAAM,qBAAqB;AACrC,SAAG,MAAM,qBAAqB;AAC9B,MAAAJ,QAAO,MAAM,qBAAqB;AAClC,WAAK,qBAAqBI,EAAC;AAAA,IAC7B;AACA,aAAS,UAAUA,IAAG;AACpB,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,UAAI,CAAC,UAAW;AAChB,kBAAY;AACZ,UAAI,OAAO,OAAO,SAAS;AACzB,eAAO,UAAU,MAAM,kBAAkB,IAAI;AAC7C,kBAAU,MAAM,qBAAqB;AAAA,MACvC;AACA,UAAI,OAAO,MAAM;AACf,qBAAa,WAAW;AACxB,sBAAc,SAAS,MAAM;AAC3B,aAAG,MAAM,UAAU;AACnB,aAAG,MAAM,qBAAqB;AAAA,QAChC,GAAG,GAAI;AAAA,MACT;AACA,WAAK,oBAAoBA,EAAC;AAC1B,UAAI,OAAO,eAAe;AACxB,eAAO,eAAe;AAAA,MACxB;AAAA,IACF;AACA,aAASC,QAAO,QAAQ;AACtB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,KAAK,UAAU;AACrB,UAAI,CAAC,GAAI;AACT,YAAM,SAAS;AACf,YAAM,iBAAiB,OAAO,mBAAmB;AAAA,QAC/C,SAAS;AAAA,QACT,SAAS;AAAA,MACX,IAAI;AACJ,YAAM,kBAAkB,OAAO,mBAAmB;AAAA,QAChD,SAAS;AAAA,QACT,SAAS;AAAA,MACX,IAAI;AACJ,UAAI,CAAC,OAAQ;AACb,YAAM,cAAc,WAAW,OAAO,qBAAqB;AAC3D,aAAO,WAAW,EAAE,eAAe,aAAa,cAAc;AAC9D,MAAAP,UAAS,WAAW,EAAE,eAAe,YAAY,cAAc;AAC/D,MAAAA,UAAS,WAAW,EAAE,aAAa,WAAW,eAAe;AAAA,IAC/D;AACA,aAAS,kBAAkB;AACzB,UAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,MAAAO,QAAO,IAAI;AAAA,IACb;AACA,aAAS,mBAAmB;AAC1B,UAAI,CAAC,OAAO,OAAO,UAAU,MAAM,CAAC,OAAO,UAAU,GAAI;AACzD,MAAAA,QAAO,KAAK;AAAA,IACd;AACA,aAAS,OAAO;AACd,YAAM;AAAA,QACJ;AAAA,QACA,IAAI;AAAA,MACN,IAAI;AACJ,aAAO,OAAO,YAAY,0BAA0B,QAAQ,OAAO,eAAe,WAAW,OAAO,OAAO,WAAW;AAAA,QACpH,IAAI;AAAA,MACN,CAAC;AACD,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,CAAC,OAAO,GAAI;AAChB,UAAI;AACJ,UAAI,OAAO,OAAO,OAAO,YAAY,OAAO,WAAW;AACrD,aAAK,OAAO,GAAG,cAAc,OAAO,EAAE;AAAA,MACxC;AACA,UAAI,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU;AACxC,aAAKP,UAAS,iBAAiB,OAAO,EAAE;AACxC,YAAI,CAAC,GAAG,OAAQ;AAAA,MAClB,WAAW,CAAC,IAAI;AACd,aAAK,OAAO;AAAA,MACd;AACA,UAAI,OAAO,OAAO,qBAAqB,OAAO,OAAO,OAAO,YAAY,GAAG,SAAS,KAAK,SAAS,iBAAiB,OAAO,EAAE,EAAE,WAAW,GAAG;AAC1I,aAAK,SAAS,cAAc,OAAO,EAAE;AAAA,MACvC;AACA,UAAI,GAAG,SAAS,EAAG,MAAK,GAAG,CAAC;AAC5B,SAAG,UAAU,IAAI,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AACtF,UAAIE;AACJ,UAAI,IAAI;AACN,QAAAA,UAAS,GAAG,cAAc,kBAAkB,OAAO,OAAO,UAAU,SAAS,CAAC;AAC9E,YAAI,CAACA,SAAQ;AACX,UAAAA,UAAS,cAAc,OAAO,OAAO,OAAO,UAAU,SAAS;AAC/D,aAAG,OAAOA,OAAM;AAAA,QAClB;AAAA,MACF;AACA,aAAO,OAAO,WAAW;AAAA,QACvB;AAAA,QACA,QAAAA;AAAA,MACF,CAAC;AACD,UAAI,OAAO,WAAW;AACpB,wBAAgB;AAAA,MAClB;AACA,UAAI,IAAI;AACN,WAAG,UAAU,OAAO,UAAU,WAAW,KAAK,EAAE,GAAG,gBAAgB,OAAO,OAAO,UAAU,SAAS,CAAC;AAAA,MACvG;AAAA,IACF;AACA,aAASM,WAAU;AACjB,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,KAAK,OAAO,UAAU;AAC5B,UAAI,IAAI;AACN,WAAG,UAAU,OAAO,GAAG,gBAAgB,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa,CAAC;AAAA,MAC/G;AACA,uBAAiB;AAAA,IACnB;AACA,IAAAT,IAAG,mBAAmB,MAAM;AAC1B,UAAI,CAAC,OAAO,aAAa,CAAC,OAAO,UAAU,GAAI;AAC/C,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI;AAAA,QACF;AAAA,MACF,IAAI,OAAO;AACX,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,UAAU,OAAO,OAAO,iBAAiB,OAAO,aAAa;AACnE,cAAM,UAAU,IAAI,OAAO,aAAa,IAAI,OAAO,kBAAkB,OAAO,aAAa;AAAA,MAC3F,CAAC;AAAA,IACH,CAAC;AACD,IAAAA,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,UAAU,YAAY,OAAO;AAE7C,QAAAU,SAAQ;AAAA,MACV,OAAO;AACL,aAAK;AACL,QAAAJ,YAAW;AACX,QAAAJ,cAAa;AAAA,MACf;AAAA,IACF,CAAC;AACD,IAAAF,IAAG,4DAA4D,MAAM;AACnE,MAAAM,YAAW;AAAA,IACb,CAAC;AACD,IAAAN,IAAG,gBAAgB,MAAM;AACvB,MAAAE,cAAa;AAAA,IACf,CAAC;AACD,IAAAF,IAAG,iBAAiB,CAAC,IAAIK,cAAa;AACpC,MAAAD,eAAcC,SAAQ;AAAA,IACxB,CAAC;AACD,IAAAL,IAAG,kBAAkB,MAAM;AACzB,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,OAAO;AACX,UAAI,IAAI;AACN,WAAG,UAAU,OAAO,UAAU,WAAW,KAAK,EAAE,GAAG,gBAAgB,OAAO,OAAO,UAAU,SAAS,CAAC;AAAA,MACvG;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,WAAW,MAAM;AAClB,MAAAS,SAAQ;AAAA,IACV,CAAC;AACD,UAAME,UAAS,MAAM;AACnB,aAAO,GAAG,UAAU,OAAO,GAAG,gBAAgB,OAAO,OAAO,UAAU,sBAAsB,CAAC;AAC7F,UAAI,OAAO,UAAU,IAAI;AACvB,eAAO,UAAU,GAAG,UAAU,OAAO,GAAG,gBAAgB,OAAO,OAAO,UAAU,sBAAsB,CAAC;AAAA,MACzG;AACA,WAAK;AACL,MAAAL,YAAW;AACX,MAAAJ,cAAa;AAAA,IACf;AACA,UAAMQ,WAAU,MAAM;AACpB,aAAO,GAAG,UAAU,IAAI,GAAG,gBAAgB,OAAO,OAAO,UAAU,sBAAsB,CAAC;AAC1F,UAAI,OAAO,UAAU,IAAI;AACvB,eAAO,UAAU,GAAG,UAAU,IAAI,GAAG,gBAAgB,OAAO,OAAO,UAAU,sBAAsB,CAAC;AAAA,MACtG;AACA,MAAAD,SAAQ;AAAA,IACV;AACA,WAAO,OAAO,OAAO,WAAW;AAAA,MAC9B,QAAAE;AAAA,MACA,SAAAD;AAAA,MACA,YAAAJ;AAAA,MACA,cAAAJ;AAAA,MACA;AAAA,MACA,SAAAO;AAAA,IACF,CAAC;AAAA,EACH;;;ACzWA,WAAS,SAAS,MAAM;AACtB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAG;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,UAAU;AAAA,QACR,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,UAAM,mBAAmB;AACzB,UAAM,eAAe,CAAC,IAAI,aAAa;AACrC,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,YAAM,YAAY,MAAM,KAAK;AAC7B,YAAMC,KAAI,GAAG,aAAa,sBAAsB,KAAK;AACrD,UAAIC,KAAI,GAAG,aAAa,wBAAwB;AAChD,UAAIC,KAAI,GAAG,aAAa,wBAAwB;AAChD,YAAM,QAAQ,GAAG,aAAa,4BAA4B;AAC1D,YAAM,UAAU,GAAG,aAAa,8BAA8B;AAC9D,YAAMC,UAAS,GAAG,aAAa,6BAA6B;AAC5D,UAAIF,MAAKC,IAAG;AACV,QAAAD,KAAIA,MAAK;AACT,QAAAC,KAAIA,MAAK;AAAA,MACX,WAAW,OAAO,aAAa,GAAG;AAChC,QAAAD,KAAID;AACJ,QAAAE,KAAI;AAAA,MACN,OAAO;AACL,QAAAA,KAAIF;AACJ,QAAAC,KAAI;AAAA,MACN;AACA,UAAIA,GAAE,QAAQ,GAAG,KAAK,GAAG;AACvB,QAAAA,KAAI,GAAG,SAASA,IAAG,EAAE,IAAI,WAAW,SAAS;AAAA,MAC/C,OAAO;AACL,QAAAA,KAAI,GAAGA,KAAI,WAAW,SAAS;AAAA,MACjC;AACA,UAAIC,GAAE,QAAQ,GAAG,KAAK,GAAG;AACvB,QAAAA,KAAI,GAAG,SAASA,IAAG,EAAE,IAAI,QAAQ;AAAA,MACnC,OAAO;AACL,QAAAA,KAAI,GAAGA,KAAI,QAAQ;AAAA,MACrB;AACA,UAAI,OAAO,YAAY,eAAe,YAAY,MAAM;AACtD,cAAM,iBAAiB,WAAW,UAAU,MAAM,IAAI,KAAK,IAAI,QAAQ;AACvE,WAAG,MAAM,UAAU;AAAA,MACrB;AACA,UAAI,YAAY,eAAeD,EAAC,KAAKC,EAAC;AACtC,UAAI,OAAO,UAAU,eAAe,UAAU,MAAM;AAClD,cAAM,eAAe,SAAS,QAAQ,MAAM,IAAI,KAAK,IAAI,QAAQ;AACjE,qBAAa,UAAU,YAAY;AAAA,MACrC;AACA,UAAIC,WAAU,OAAOA,YAAW,eAAeA,YAAW,MAAM;AAC9D,cAAM,gBAAgBA,UAAS,WAAW;AAC1C,qBAAa,WAAW,aAAa;AAAA,MACvC;AACA,SAAG,MAAM,YAAY;AAAA,IACvB;AACA,UAAMC,gBAAe,MAAM;AACzB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAMC,YAAW,gBAAgB,IAAI,gBAAgB;AACrD,UAAI,OAAO,WAAW;AACpB,QAAAA,UAAS,KAAK,GAAG,gBAAgB,OAAO,QAAQ,gBAAgB,CAAC;AAAA,MACnE;AACA,MAAAA,UAAS,QAAQ,WAAS;AACxB,qBAAa,OAAO,QAAQ;AAAA,MAC9B,CAAC;AACD,aAAO,QAAQ,CAAC,SAAS,eAAe;AACtC,YAAI,gBAAgB,QAAQ;AAC5B,YAAI,OAAO,OAAO,iBAAiB,KAAK,OAAO,OAAO,kBAAkB,QAAQ;AAC9E,2BAAiB,KAAK,KAAK,aAAa,CAAC,IAAI,YAAY,SAAS,SAAS;AAAA,QAC7E;AACA,wBAAgB,KAAK,IAAI,KAAK,IAAI,eAAe,EAAE,GAAG,CAAC;AACvD,gBAAQ,iBAAiB,GAAG,gBAAgB,iCAAiC,EAAE,QAAQ,WAAS;AAC9F,uBAAa,OAAO,aAAa;AAAA,QACnC,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AACA,UAAMC,iBAAgB,SAAUC,WAAU;AACxC,UAAIA,cAAa,QAAQ;AACvB,QAAAA,YAAW,OAAO,OAAO;AAAA,MAC3B;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAMF,YAAW,CAAC,GAAG,GAAG,iBAAiB,gBAAgB,CAAC;AAC1D,UAAI,OAAO,WAAW;AACpB,QAAAA,UAAS,KAAK,GAAG,OAAO,iBAAiB,gBAAgB,CAAC;AAAA,MAC5D;AACA,MAAAA,UAAS,QAAQ,gBAAc;AAC7B,YAAI,mBAAmB,SAAS,WAAW,aAAa,+BAA+B,GAAG,EAAE,KAAKE;AACjG,YAAIA,cAAa,EAAG,oBAAmB;AACvC,mBAAW,MAAM,qBAAqB,GAAG,gBAAgB;AAAA,MAC3D,CAAC;AAAA,IACH;AACA,IAAAR,IAAG,cAAc,MAAM;AACrB,UAAI,CAAC,OAAO,OAAO,SAAS,QAAS;AACrC,aAAO,OAAO,sBAAsB;AACpC,aAAO,eAAe,sBAAsB;AAAA,IAC9C,CAAC;AACD,IAAAA,IAAG,QAAQ,MAAM;AACf,UAAI,CAAC,OAAO,OAAO,SAAS,QAAS;AACrC,MAAAK,cAAa;AAAA,IACf,CAAC;AACD,IAAAL,IAAG,gBAAgB,MAAM;AACvB,UAAI,CAAC,OAAO,OAAO,SAAS,QAAS;AACrC,MAAAK,cAAa;AAAA,IACf,CAAC;AACD,IAAAL,IAAG,iBAAiB,CAAC,SAASQ,cAAa;AACzC,UAAI,CAAC,OAAO,OAAO,SAAS,QAAS;AACrC,MAAAD,eAAcC,SAAQ;AAAA,IACxB,CAAC;AAAA,EACH;;;ACtHA,WAAS,KAAK,MAAM;AAClB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAC;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAMC,UAAS,UAAU;AACzB,iBAAa;AAAA,MACX,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,qBAAqB;AAAA,QACrB,UAAU;AAAA,QACV,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,MACpB;AAAA,IACF,CAAC;AACD,WAAO,OAAO;AAAA,MACZ,SAAS;AAAA,IACX;AACA,QAAI,eAAe;AACnB,QAAI,YAAY;AAChB,QAAI,qBAAqB;AACzB,QAAI,gBAAgB;AAAA,MAClB,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AACA,UAAM,sBAAsB;AAC5B,QAAI;AACJ,QAAI;AACJ,UAAM,UAAU,CAAC;AACjB,UAAM,UAAU;AAAA,MACd,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AACA,UAAM,QAAQ;AAAA,MACZ,WAAW;AAAA,MACX,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,cAAc,CAAC;AAAA,MACf,gBAAgB,CAAC;AAAA,IACnB;AACA,UAAM,WAAW;AAAA,MACf,GAAG;AAAA,MACH,GAAG;AAAA,MACH,eAAe;AAAA,MACf,eAAe;AAAA,MACf,UAAU;AAAA,IACZ;AACA,QAAI,QAAQ;AACZ,WAAO,eAAe,OAAO,MAAM,SAAS;AAAA,MAC1C,MAAM;AACJ,eAAO;AAAA,MACT;AAAA,MACA,IAAI,OAAO;AACT,YAAI,UAAU,OAAO;AACnB,gBAAM,UAAU,QAAQ;AACxB,gBAAM,UAAU,QAAQ;AACxB,eAAK,cAAc,OAAO,SAAS,OAAO;AAAA,QAC5C;AACA,gBAAQ;AAAA,MACV;AAAA,IACF,CAAC;AACD,aAAS,4BAA4B;AACnC,UAAI,QAAQ,SAAS,EAAG,QAAO;AAC/B,YAAM,KAAK,QAAQ,CAAC,EAAE;AACtB,YAAM,KAAK,QAAQ,CAAC,EAAE;AACtB,YAAM,KAAK,QAAQ,CAAC,EAAE;AACtB,YAAM,KAAK,QAAQ,CAAC,EAAE;AACtB,YAAM,WAAW,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,OAAO,CAAC;AAC1D,aAAO;AAAA,IACT;AACA,aAAS,cAAc;AACrB,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,WAAW,QAAQ,YAAY,aAAa,kBAAkB,KAAK,OAAO;AAChF,UAAI,OAAO,uBAAuB,QAAQ,WAAW,QAAQ,QAAQ,cAAc;AACjF,cAAM,gBAAgB,QAAQ,QAAQ,eAAe,QAAQ,QAAQ;AACrE,eAAO,KAAK,IAAI,eAAe,QAAQ;AAAA,MACzC;AACA,aAAO;AAAA,IACT;AACA,aAAS,iBAAiB;AACxB,UAAI,QAAQ,SAAS,EAAG,QAAO;AAAA,QAC7B,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AACA,YAAM,MAAM,QAAQ,QAAQ,sBAAsB;AAClD,aAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,EAAE,QAAQ,QAAQ,CAAC,EAAE,SAAS,IAAI,IAAI,IAAIA,QAAO,WAAW,eAAe,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,EAAE,QAAQ,QAAQ,CAAC,EAAE,SAAS,IAAI,IAAI,IAAIA,QAAO,WAAW,YAAY;AAAA,IACxN;AACA,aAAS,mBAAmB;AAC1B,aAAO,OAAO,YAAY,iBAAiB,IAAI,OAAO,OAAO,UAAU;AAAA,IACzE;AACA,aAAS,iBAAiBC,IAAG;AAC3B,YAAM,gBAAgB,iBAAiB;AACvC,UAAIA,GAAE,OAAO,QAAQ,aAAa,EAAG,QAAO;AAC5C,UAAI,OAAO,OAAO,OAAO,aAAW,QAAQ,SAASA,GAAE,MAAM,CAAC,EAAE,SAAS,EAAG,QAAO;AACnF,aAAO;AAAA,IACT;AACA,aAAS,yBAAyBA,IAAG;AACnC,YAAM,WAAW,IAAI,OAAO,OAAO,KAAK,cAAc;AACtD,UAAIA,GAAE,OAAO,QAAQ,QAAQ,EAAG,QAAO;AACvC,UAAI,CAAC,GAAG,OAAO,OAAO,iBAAiB,QAAQ,CAAC,EAAE,OAAO,iBAAe,YAAY,SAASA,GAAE,MAAM,CAAC,EAAE,SAAS,EAAG,QAAO;AAC3H,aAAO;AAAA,IACT;AAGA,aAAS,eAAeA,IAAG;AACzB,UAAIA,GAAE,gBAAgB,SAAS;AAC7B,gBAAQ,OAAO,GAAG,QAAQ,MAAM;AAAA,MAClC;AACA,UAAI,CAAC,iBAAiBA,EAAC,EAAG;AAC1B,YAAM,SAAS,OAAO,OAAO;AAC7B,2BAAqB;AACrB,yBAAmB;AACnB,cAAQ,KAAKA,EAAC;AACd,UAAI,QAAQ,SAAS,GAAG;AACtB;AAAA,MACF;AACA,2BAAqB;AACrB,cAAQ,aAAa,0BAA0B;AAC/C,UAAI,CAAC,QAAQ,SAAS;AACpB,gBAAQ,UAAUA,GAAE,OAAO,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB;AAC/E,YAAI,CAAC,QAAQ,QAAS,SAAQ,UAAU,OAAO,OAAO,OAAO,WAAW;AACxE,YAAI,UAAU,QAAQ,QAAQ,cAAc,IAAI,OAAO,cAAc,EAAE;AACvE,YAAI,SAAS;AACX,oBAAU,QAAQ,iBAAiB,gDAAgD,EAAE,CAAC;AAAA,QACxF;AACA,gBAAQ,UAAU;AAClB,YAAI,SAAS;AACX,kBAAQ,cAAc,eAAe,QAAQ,SAAS,IAAI,OAAO,cAAc,EAAE,EAAE,CAAC;AAAA,QACtF,OAAO;AACL,kBAAQ,cAAc;AAAA,QACxB;AACA,YAAI,CAAC,QAAQ,aAAa;AACxB,kBAAQ,UAAU;AAClB;AAAA,QACF;AACA,gBAAQ,WAAW,YAAY;AAAA,MACjC;AACA,UAAI,QAAQ,SAAS;AACnB,cAAM,CAAC,SAAS,OAAO,IAAI,eAAe;AAC1C,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAClB,gBAAQ,QAAQ,MAAM,qBAAqB;AAAA,MAC7C;AACA,kBAAY;AAAA,IACd;AACA,aAAS,gBAAgBA,IAAG;AAC1B,UAAI,CAAC,iBAAiBA,EAAC,EAAG;AAC1B,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,OAAO,OAAO;AACpB,YAAM,eAAe,QAAQ,UAAU,cAAY,SAAS,cAAcA,GAAE,SAAS;AACrF,UAAI,gBAAgB,EAAG,SAAQ,YAAY,IAAIA;AAC/C,UAAI,QAAQ,SAAS,GAAG;AACtB;AAAA,MACF;AACA,yBAAmB;AACnB,cAAQ,YAAY,0BAA0B;AAC9C,UAAI,CAAC,QAAQ,SAAS;AACpB;AAAA,MACF;AACA,WAAK,QAAQ,QAAQ,YAAY,QAAQ,aAAa;AACtD,UAAI,KAAK,QAAQ,QAAQ,UAAU;AACjC,aAAK,QAAQ,QAAQ,WAAW,KAAK,KAAK,QAAQ,QAAQ,WAAW,MAAM;AAAA,MAC7E;AACA,UAAI,KAAK,QAAQ,OAAO,UAAU;AAChC,aAAK,QAAQ,OAAO,WAAW,KAAK,OAAO,WAAW,KAAK,QAAQ,MAAM;AAAA,MAC3E;AACA,cAAQ,QAAQ,MAAM,YAAY,4BAA4B,KAAK,KAAK;AAAA,IAC1E;AACA,aAAS,aAAaA,IAAG;AACvB,UAAI,CAAC,iBAAiBA,EAAC,EAAG;AAC1B,UAAIA,GAAE,gBAAgB,WAAWA,GAAE,SAAS,aAAc;AAC1D,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,OAAO,OAAO;AACpB,YAAM,eAAe,QAAQ,UAAU,cAAY,SAAS,cAAcA,GAAE,SAAS;AACrF,UAAI,gBAAgB,EAAG,SAAQ,OAAO,cAAc,CAAC;AACrD,UAAI,CAAC,sBAAsB,CAAC,kBAAkB;AAC5C;AAAA,MACF;AACA,2BAAqB;AACrB,yBAAmB;AACnB,UAAI,CAAC,QAAQ,QAAS;AACtB,WAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,OAAO,QAAQ,QAAQ,GAAG,OAAO,QAAQ;AAC7E,cAAQ,QAAQ,MAAM,qBAAqB,GAAG,OAAO,OAAO,KAAK;AACjE,cAAQ,QAAQ,MAAM,YAAY,4BAA4B,KAAK,KAAK;AACxE,qBAAe,KAAK;AACpB,kBAAY;AACZ,UAAI,KAAK,QAAQ,KAAK,QAAQ,SAAS;AACrC,gBAAQ,QAAQ,UAAU,IAAI,GAAG,OAAO,gBAAgB,EAAE;AAAA,MAC5D,WAAW,KAAK,SAAS,KAAK,QAAQ,SAAS;AAC7C,gBAAQ,QAAQ,UAAU,OAAO,GAAG,OAAO,gBAAgB,EAAE;AAAA,MAC/D;AACA,UAAI,KAAK,UAAU,GAAG;AACpB,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAAA,MACpB;AAAA,IACF;AACA,QAAI;AACJ,aAAS,iBAAiB;AACxB,aAAO,gBAAgB,kCAAkC;AAAA,IAC3D;AACA,aAAS,mBAAmB;AAC1B,mBAAa,qBAAqB;AAClC,aAAO,gBAAgB,kCAAkC;AACzD,8BAAwB,WAAW,MAAM;AACvC,YAAI,OAAO,UAAW;AACtB,uBAAe;AAAA,MACjB,CAAC;AAAA,IACH;AACA,aAASC,cAAaD,IAAG;AACvB,YAAM,SAAS,OAAO;AACtB,UAAI,CAAC,QAAQ,QAAS;AACtB,UAAI,MAAM,UAAW;AACrB,UAAI,OAAO,WAAWA,GAAE,WAAY,CAAAA,GAAE,eAAe;AACrD,YAAM,YAAY;AAClB,YAAME,SAAQ,QAAQ,SAAS,IAAI,QAAQ,CAAC,IAAIF;AAChD,YAAM,aAAa,IAAIE,OAAM;AAC7B,YAAM,aAAa,IAAIA,OAAM;AAAA,IAC/B;AACA,aAASC,aAAYH,IAAG;AACtB,YAAM,eAAeA,GAAE,gBAAgB;AACvC,YAAM,aAAa,gBAAgB,OAAO,OAAO,KAAK;AACtD,UAAI,CAAC,iBAAiBA,EAAC,KAAK,CAAC,yBAAyBA,EAAC,GAAG;AACxD;AAAA,MACF;AACA,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,QAAQ,SAAS;AACpB;AAAA,MACF;AACA,UAAI,CAAC,MAAM,aAAa,CAAC,QAAQ,SAAS;AACxC,YAAI,WAAY,aAAYA,EAAC;AAC7B;AAAA,MACF;AACA,UAAI,YAAY;AACd,oBAAYA,EAAC;AACb;AAAA,MACF;AACA,UAAI,CAAC,MAAM,SAAS;AAClB,cAAM,QAAQ,QAAQ,QAAQ,eAAe,QAAQ,QAAQ;AAC7D,cAAM,SAAS,QAAQ,QAAQ,gBAAgB,QAAQ,QAAQ;AAC/D,cAAM,SAAS,aAAa,QAAQ,aAAa,GAAG,KAAK;AACzD,cAAM,SAAS,aAAa,QAAQ,aAAa,GAAG,KAAK;AACzD,gBAAQ,aAAa,QAAQ,QAAQ;AACrC,gBAAQ,cAAc,QAAQ,QAAQ;AACtC,gBAAQ,YAAY,MAAM,qBAAqB;AAAA,MACjD;AAEA,YAAM,cAAc,MAAM,QAAQ,KAAK;AACvC,YAAM,eAAe,MAAM,SAAS,KAAK;AACzC,YAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,IAAI,cAAc,GAAG,CAAC;AACjE,YAAM,OAAO,CAAC,MAAM;AACpB,YAAM,OAAO,KAAK,IAAI,QAAQ,cAAc,IAAI,eAAe,GAAG,CAAC;AACnE,YAAM,OAAO,CAAC,MAAM;AACpB,YAAM,eAAe,IAAI,QAAQ,SAAS,IAAI,QAAQ,CAAC,EAAE,QAAQA,GAAE;AACnE,YAAM,eAAe,IAAI,QAAQ,SAAS,IAAI,QAAQ,CAAC,EAAE,QAAQA,GAAE;AACnE,YAAM,cAAc,KAAK,IAAI,KAAK,IAAI,MAAM,eAAe,IAAI,MAAM,aAAa,CAAC,GAAG,KAAK,IAAI,MAAM,eAAe,IAAI,MAAM,aAAa,CAAC,CAAC;AAC7I,UAAI,cAAc,GAAG;AACnB,eAAO,aAAa;AAAA,MACtB;AACA,UAAI,CAAC,MAAM,WAAW,CAAC,WAAW;AAChC,YAAI,OAAO,aAAa,MAAM,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,eAAe,IAAI,MAAM,aAAa,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI;AAC3O,gBAAM,YAAY;AAClB,yBAAe;AACf;AAAA,QACF;AACA,YAAI,CAAC,OAAO,aAAa,MAAM,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,eAAe,IAAI,MAAM,aAAa,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI;AAC5O,gBAAM,YAAY;AAClB,yBAAe;AACf;AAAA,QACF;AAAA,MACF;AACA,UAAIA,GAAE,YAAY;AAChB,QAAAA,GAAE,eAAe;AAAA,MACnB;AACA,MAAAA,GAAE,gBAAgB;AAClB,uBAAiB;AACjB,YAAM,UAAU;AAChB,YAAM,cAAc,KAAK,QAAQ,iBAAiB,QAAQ,WAAW,OAAO,OAAO,KAAK;AACxF,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,WAAW,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI,MAAM,SAAS,cAAc,MAAM,QAAQ,UAAU;AACtH,YAAM,WAAW,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI,MAAM,SAAS,cAAc,MAAM,SAAS,UAAU;AACvH,UAAI,MAAM,WAAW,MAAM,MAAM;AAC/B,cAAM,WAAW,MAAM,OAAO,KAAK,MAAM,OAAO,MAAM,WAAW,MAAM;AAAA,MACzE;AACA,UAAI,MAAM,WAAW,MAAM,MAAM;AAC/B,cAAM,WAAW,MAAM,OAAO,KAAK,MAAM,WAAW,MAAM,OAAO,MAAM;AAAA,MACzE;AACA,UAAI,MAAM,WAAW,MAAM,MAAM;AAC/B,cAAM,WAAW,MAAM,OAAO,KAAK,MAAM,OAAO,MAAM,WAAW,MAAM;AAAA,MACzE;AACA,UAAI,MAAM,WAAW,MAAM,MAAM;AAC/B,cAAM,WAAW,MAAM,OAAO,KAAK,MAAM,WAAW,MAAM,OAAO,MAAM;AAAA,MACzE;AAGA,UAAI,CAAC,SAAS,cAAe,UAAS,gBAAgB,MAAM,eAAe;AAC3E,UAAI,CAAC,SAAS,cAAe,UAAS,gBAAgB,MAAM,eAAe;AAC3E,UAAI,CAAC,SAAS,SAAU,UAAS,WAAW,KAAK,IAAI;AACrD,eAAS,KAAK,MAAM,eAAe,IAAI,SAAS,kBAAkB,KAAK,IAAI,IAAI,SAAS,YAAY;AACpG,eAAS,KAAK,MAAM,eAAe,IAAI,SAAS,kBAAkB,KAAK,IAAI,IAAI,SAAS,YAAY;AACpG,UAAI,KAAK,IAAI,MAAM,eAAe,IAAI,SAAS,aAAa,IAAI,EAAG,UAAS,IAAI;AAChF,UAAI,KAAK,IAAI,MAAM,eAAe,IAAI,SAAS,aAAa,IAAI,EAAG,UAAS,IAAI;AAChF,eAAS,gBAAgB,MAAM,eAAe;AAC9C,eAAS,gBAAgB,MAAM,eAAe;AAC9C,eAAS,WAAW,KAAK,IAAI;AAC7B,cAAQ,YAAY,MAAM,YAAY,eAAe,MAAM,QAAQ,OAAO,MAAM,QAAQ;AAAA,IAC1F;AACA,aAASI,cAAa;AACpB,YAAM,OAAO,OAAO;AACpB,cAAQ,SAAS;AACjB,UAAI,CAAC,QAAQ,QAAS;AACtB,UAAI,CAAC,MAAM,aAAa,CAAC,MAAM,SAAS;AACtC,cAAM,YAAY;AAClB,cAAM,UAAU;AAChB;AAAA,MACF;AACA,YAAM,YAAY;AAClB,YAAM,UAAU;AAChB,UAAI,oBAAoB;AACxB,UAAI,oBAAoB;AACxB,YAAM,oBAAoB,SAAS,IAAI;AACvC,YAAM,eAAe,MAAM,WAAW;AACtC,YAAM,oBAAoB,SAAS,IAAI;AACvC,YAAM,eAAe,MAAM,WAAW;AAGtC,UAAI,SAAS,MAAM,EAAG,qBAAoB,KAAK,KAAK,eAAe,MAAM,YAAY,SAAS,CAAC;AAC/F,UAAI,SAAS,MAAM,EAAG,qBAAoB,KAAK,KAAK,eAAe,MAAM,YAAY,SAAS,CAAC;AAC/F,YAAM,mBAAmB,KAAK,IAAI,mBAAmB,iBAAiB;AACtE,YAAM,WAAW;AACjB,YAAM,WAAW;AAEjB,YAAM,cAAc,MAAM,QAAQ,KAAK;AACvC,YAAM,eAAe,MAAM,SAAS,KAAK;AACzC,YAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,IAAI,cAAc,GAAG,CAAC;AACjE,YAAM,OAAO,CAAC,MAAM;AACpB,YAAM,OAAO,KAAK,IAAI,QAAQ,cAAc,IAAI,eAAe,GAAG,CAAC;AACnE,YAAM,OAAO,CAAC,MAAM;AACpB,YAAM,WAAW,KAAK,IAAI,KAAK,IAAI,MAAM,UAAU,MAAM,IAAI,GAAG,MAAM,IAAI;AAC1E,YAAM,WAAW,KAAK,IAAI,KAAK,IAAI,MAAM,UAAU,MAAM,IAAI,GAAG,MAAM,IAAI;AAC1E,cAAQ,YAAY,MAAM,qBAAqB,GAAG,gBAAgB;AAClE,cAAQ,YAAY,MAAM,YAAY,eAAe,MAAM,QAAQ,OAAO,MAAM,QAAQ;AAAA,IAC1F;AACA,aAAS,kBAAkB;AACzB,YAAM,OAAO,OAAO;AACpB,UAAI,QAAQ,WAAW,OAAO,gBAAgB,OAAO,OAAO,QAAQ,QAAQ,OAAO,GAAG;AACpF,YAAI,QAAQ,SAAS;AACnB,kBAAQ,QAAQ,MAAM,YAAY;AAAA,QACpC;AACA,YAAI,QAAQ,aAAa;AACvB,kBAAQ,YAAY,MAAM,YAAY;AAAA,QACxC;AACA,gBAAQ,QAAQ,UAAU,OAAO,GAAG,OAAO,OAAO,KAAK,gBAAgB,EAAE;AACzE,aAAK,QAAQ;AACb,uBAAe;AACf,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAClB,gBAAQ,cAAc;AACtB,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAAA,MACpB;AAAA,IACF;AACA,aAAS,YAAYJ,IAAG;AAEtB,UAAI,gBAAgB,KAAK,CAAC,QAAQ,YAAa;AAC/C,UAAI,CAAC,iBAAiBA,EAAC,KAAK,CAAC,yBAAyBA,EAAC,EAAG;AAC1D,YAAM,mBAAmBD,QAAO,iBAAiB,QAAQ,WAAW,EAAE;AACtE,YAAMM,UAAS,IAAIN,QAAO,UAAU,gBAAgB;AACpD,UAAI,CAAC,oBAAoB;AACvB,6BAAqB;AACrB,sBAAc,IAAIC,GAAE;AACpB,sBAAc,IAAIA,GAAE;AACpB,cAAM,SAASK,QAAO;AACtB,cAAM,SAASA,QAAO;AACtB,cAAM,QAAQ,QAAQ,QAAQ,eAAe,QAAQ,QAAQ;AAC7D,cAAM,SAAS,QAAQ,QAAQ,gBAAgB,QAAQ,QAAQ;AAC/D,gBAAQ,aAAa,QAAQ,QAAQ;AACrC,gBAAQ,cAAc,QAAQ,QAAQ;AACtC;AAAA,MACF;AACA,YAAM,UAAUL,GAAE,UAAU,cAAc,KAAK;AAC/C,YAAM,UAAUA,GAAE,UAAU,cAAc,KAAK;AAC/C,YAAM,cAAc,MAAM,QAAQ;AAClC,YAAM,eAAe,MAAM,SAAS;AACpC,YAAM,aAAa,QAAQ;AAC3B,YAAM,cAAc,QAAQ;AAC5B,YAAM,OAAO,KAAK,IAAI,aAAa,IAAI,cAAc,GAAG,CAAC;AACzD,YAAM,OAAO,CAAC;AACd,YAAM,OAAO,KAAK,IAAI,cAAc,IAAI,eAAe,GAAG,CAAC;AAC3D,YAAM,OAAO,CAAC;AACd,YAAM,OAAO,KAAK,IAAI,KAAK,IAAI,MAAM,SAAS,QAAQ,IAAI,GAAG,IAAI;AACjE,YAAM,OAAO,KAAK,IAAI,KAAK,IAAI,MAAM,SAAS,QAAQ,IAAI,GAAG,IAAI;AACjE,cAAQ,YAAY,MAAM,qBAAqB;AAC/C,cAAQ,YAAY,MAAM,YAAY,eAAe,IAAI,OAAO,IAAI;AACpE,oBAAc,IAAIA,GAAE;AACpB,oBAAc,IAAIA,GAAE;AACpB,YAAM,SAAS;AACf,YAAM,SAAS;AAAA,IACjB;AACA,aAAS,OAAOA,IAAG;AACjB,YAAM,OAAO,OAAO;AACpB,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,CAAC,QAAQ,SAAS;AACpB,YAAIA,MAAKA,GAAE,QAAQ;AACjB,kBAAQ,UAAUA,GAAE,OAAO,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB;AAAA,QACjF;AACA,YAAI,CAAC,QAAQ,SAAS;AACpB,cAAI,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,WAAW,OAAO,SAAS;AAC5E,oBAAQ,UAAU,gBAAgB,OAAO,UAAU,IAAI,OAAO,OAAO,gBAAgB,EAAE,EAAE,CAAC;AAAA,UAC5F,OAAO;AACL,oBAAQ,UAAU,OAAO,OAAO,OAAO,WAAW;AAAA,UACpD;AAAA,QACF;AACA,YAAI,UAAU,QAAQ,QAAQ,cAAc,IAAI,OAAO,cAAc,EAAE;AACvE,YAAI,SAAS;AACX,oBAAU,QAAQ,iBAAiB,gDAAgD,EAAE,CAAC;AAAA,QACxF;AACA,gBAAQ,UAAU;AAClB,YAAI,SAAS;AACX,kBAAQ,cAAc,eAAe,QAAQ,SAAS,IAAI,OAAO,cAAc,EAAE,EAAE,CAAC;AAAA,QACtF,OAAO;AACL,kBAAQ,cAAc;AAAA,QACxB;AAAA,MACF;AACA,UAAI,CAAC,QAAQ,WAAW,CAAC,QAAQ,YAAa;AAC9C,UAAI,OAAO,OAAO,SAAS;AACzB,eAAO,UAAU,MAAM,WAAW;AAClC,eAAO,UAAU,MAAM,cAAc;AAAA,MACvC;AACA,cAAQ,QAAQ,UAAU,IAAI,GAAG,OAAO,gBAAgB,EAAE;AAC1D,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,OAAO,MAAM,aAAa,MAAM,eAAeA,IAAG;AACpD,iBAASA,GAAE;AACX,iBAASA,GAAE;AAAA,MACb,OAAO;AACL,iBAAS,MAAM,aAAa;AAC5B,iBAAS,MAAM,aAAa;AAAA,MAC9B;AACA,YAAM,iBAAiB,OAAOA,OAAM,WAAWA,KAAI;AACnD,UAAI,iBAAiB,KAAK,gBAAgB;AACxC,iBAAS;AACT,iBAAS;AACT,cAAM,aAAa,IAAI;AACvB,cAAM,aAAa,IAAI;AAAA,MACzB;AACA,YAAM,WAAW,YAAY;AAC7B,WAAK,QAAQ,kBAAkB;AAC/B,qBAAe,kBAAkB;AACjC,UAAIA,MAAK,EAAE,iBAAiB,KAAK,iBAAiB;AAChD,qBAAa,QAAQ,QAAQ;AAC7B,sBAAc,QAAQ,QAAQ;AAC9B,kBAAU,cAAc,QAAQ,OAAO,EAAE,OAAOD,QAAO;AACvD,kBAAU,cAAc,QAAQ,OAAO,EAAE,MAAMA,QAAO;AACtD,gBAAQ,UAAU,aAAa,IAAI;AACnC,gBAAQ,UAAU,cAAc,IAAI;AACpC,qBAAa,QAAQ,QAAQ,eAAe,QAAQ,QAAQ;AAC5D,sBAAc,QAAQ,QAAQ,gBAAgB,QAAQ,QAAQ;AAC9D,sBAAc,aAAa,KAAK;AAChC,uBAAe,cAAc,KAAK;AAClC,wBAAgB,KAAK,IAAI,aAAa,IAAI,cAAc,GAAG,CAAC;AAC5D,wBAAgB,KAAK,IAAI,cAAc,IAAI,eAAe,GAAG,CAAC;AAC9D,wBAAgB,CAAC;AACjB,wBAAgB,CAAC;AACjB,qBAAa,QAAQ,KAAK;AAC1B,qBAAa,QAAQ,KAAK;AAC1B,YAAI,aAAa,eAAe;AAC9B,uBAAa;AAAA,QACf;AACA,YAAI,aAAa,eAAe;AAC9B,uBAAa;AAAA,QACf;AACA,YAAI,aAAa,eAAe;AAC9B,uBAAa;AAAA,QACf;AACA,YAAI,aAAa,eAAe;AAC9B,uBAAa;AAAA,QACf;AAAA,MACF,OAAO;AACL,qBAAa;AACb,qBAAa;AAAA,MACf;AACA,UAAI,kBAAkB,KAAK,UAAU,GAAG;AACtC,gBAAQ,UAAU;AAClB,gBAAQ,UAAU;AAAA,MACpB;AACA,cAAQ,YAAY,MAAM,qBAAqB;AAC/C,cAAQ,YAAY,MAAM,YAAY,eAAe,UAAU,OAAO,UAAU;AAChF,cAAQ,QAAQ,MAAM,qBAAqB;AAC3C,cAAQ,QAAQ,MAAM,YAAY,4BAA4B,KAAK,KAAK;AAAA,IAC1E;AACA,aAAS,UAAU;AACjB,YAAM,OAAO,OAAO;AACpB,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,CAAC,QAAQ,SAAS;AACpB,YAAI,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,WAAW,OAAO,SAAS;AAC5E,kBAAQ,UAAU,gBAAgB,OAAO,UAAU,IAAI,OAAO,OAAO,gBAAgB,EAAE,EAAE,CAAC;AAAA,QAC5F,OAAO;AACL,kBAAQ,UAAU,OAAO,OAAO,OAAO,WAAW;AAAA,QACpD;AACA,YAAI,UAAU,QAAQ,QAAQ,cAAc,IAAI,OAAO,cAAc,EAAE;AACvE,YAAI,SAAS;AACX,oBAAU,QAAQ,iBAAiB,gDAAgD,EAAE,CAAC;AAAA,QACxF;AACA,gBAAQ,UAAU;AAClB,YAAI,SAAS;AACX,kBAAQ,cAAc,eAAe,QAAQ,SAAS,IAAI,OAAO,cAAc,EAAE,EAAE,CAAC;AAAA,QACtF,OAAO;AACL,kBAAQ,cAAc;AAAA,QACxB;AAAA,MACF;AACA,UAAI,CAAC,QAAQ,WAAW,CAAC,QAAQ,YAAa;AAC9C,UAAI,OAAO,OAAO,SAAS;AACzB,eAAO,UAAU,MAAM,WAAW;AAClC,eAAO,UAAU,MAAM,cAAc;AAAA,MACvC;AACA,WAAK,QAAQ;AACb,qBAAe;AACf,YAAM,aAAa,IAAI;AACvB,YAAM,aAAa,IAAI;AACvB,cAAQ,YAAY,MAAM,qBAAqB;AAC/C,cAAQ,YAAY,MAAM,YAAY;AACtC,cAAQ,QAAQ,MAAM,qBAAqB;AAC3C,cAAQ,QAAQ,MAAM,YAAY;AAClC,cAAQ,QAAQ,UAAU,OAAO,GAAG,OAAO,gBAAgB,EAAE;AAC7D,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAClB,UAAI,OAAO,OAAO,KAAK,gBAAgB;AACrC,wBAAgB;AAAA,UACd,GAAG;AAAA,UACH,GAAG;AAAA,QACL;AACA,YAAI,oBAAoB;AACtB,+BAAqB;AACrB,gBAAM,SAAS;AACf,gBAAM,SAAS;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAGA,aAAS,WAAWC,IAAG;AACrB,YAAM,OAAO,OAAO;AACpB,UAAI,KAAK,SAAS,KAAK,UAAU,GAAG;AAElC,gBAAQ;AAAA,MACV,OAAO;AAEL,eAAOA,EAAC;AAAA,MACV;AAAA,IACF;AACA,aAAS,eAAe;AACtB,YAAM,kBAAkB,OAAO,OAAO,mBAAmB;AAAA,QACvD,SAAS;AAAA,QACT,SAAS;AAAA,MACX,IAAI;AACJ,YAAM,4BAA4B,OAAO,OAAO,mBAAmB;AAAA,QACjE,SAAS;AAAA,QACT,SAAS;AAAA,MACX,IAAI;AACJ,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAGA,aAASM,UAAS;AAChB,YAAM,OAAO,OAAO;AACpB,UAAI,KAAK,QAAS;AAClB,WAAK,UAAU;AACf,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,aAAa;AAGjB,aAAO,UAAU,iBAAiB,eAAe,gBAAgB,eAAe;AAChF,aAAO,UAAU,iBAAiB,eAAe,iBAAiB,yBAAyB;AAC3F,OAAC,aAAa,iBAAiB,YAAY,EAAE,QAAQ,eAAa;AAChE,eAAO,UAAU,iBAAiB,WAAW,cAAc,eAAe;AAAA,MAC5E,CAAC;AAGD,aAAO,UAAU,iBAAiB,eAAeH,cAAa,yBAAyB;AAAA,IACzF;AACA,aAASI,WAAU;AACjB,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,KAAK,QAAS;AACnB,WAAK,UAAU;AACf,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,aAAa;AAGjB,aAAO,UAAU,oBAAoB,eAAe,gBAAgB,eAAe;AACnF,aAAO,UAAU,oBAAoB,eAAe,iBAAiB,yBAAyB;AAC9F,OAAC,aAAa,iBAAiB,YAAY,EAAE,QAAQ,eAAa;AAChE,eAAO,UAAU,oBAAoB,WAAW,cAAc,eAAe;AAAA,MAC/E,CAAC;AAGD,aAAO,UAAU,oBAAoB,eAAeJ,cAAa,yBAAyB;AAAA,IAC5F;AACA,IAAAL,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,KAAK,SAAS;AAC9B,QAAAQ,QAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAR,IAAG,WAAW,MAAM;AAClB,MAAAS,SAAQ;AAAA,IACV,CAAC;AACD,IAAAT,IAAG,cAAc,CAAC,IAAIE,OAAM;AAC1B,UAAI,CAAC,OAAO,KAAK,QAAS;AAC1B,MAAAC,cAAaD,EAAC;AAAA,IAChB,CAAC;AACD,IAAAF,IAAG,YAAY,CAAC,IAAIE,OAAM;AACxB,UAAI,CAAC,OAAO,KAAK,QAAS;AAC1B,MAAAI,YAAW;AAAA,IACb,CAAC;AACD,IAAAN,IAAG,aAAa,CAAC,IAAIE,OAAM;AACzB,UAAI,CAAC,OAAO,aAAa,OAAO,OAAO,KAAK,WAAW,OAAO,KAAK,WAAW,OAAO,OAAO,KAAK,QAAQ;AACvG,mBAAWA,EAAC;AAAA,MACd;AAAA,IACF,CAAC;AACD,IAAAF,IAAG,iBAAiB,MAAM;AACxB,UAAI,OAAO,KAAK,WAAW,OAAO,OAAO,KAAK,SAAS;AACrD,wBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,eAAe,MAAM;AACtB,UAAI,OAAO,KAAK,WAAW,OAAO,OAAO,KAAK,WAAW,OAAO,OAAO,SAAS;AAC9E,wBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AACD,WAAO,OAAO,OAAO,MAAM;AAAA,MACzB,QAAAQ;AAAA,MACA,SAAAC;AAAA,MACA,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;;;AC3qBA,WAASC,YAAW,MAAM;AACxB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAC;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,YAAY;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA,QACT,IAAI;AAAA;AAAA,MACN;AAAA,IACF,CAAC;AAED,WAAO,aAAa;AAAA,MAClB,SAAS;AAAA,IACX;AACA,aAAS,aAAaC,IAAGC,IAAG;AAC1B,YAAMC,gBAAe,yBAAS,SAAS;AACrC,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,eAAO,CAAC,OAAO,QAAQ;AACrB,qBAAW;AACX,qBAAW,MAAM;AACjB,iBAAO,WAAW,WAAW,GAAG;AAC9B,oBAAQ,WAAW,YAAY;AAC/B,gBAAI,MAAM,KAAK,KAAK,KAAK;AACvB,yBAAW;AAAA,YACb,OAAO;AACL,yBAAW;AAAA,YACb;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF,EAAE;AACF,WAAK,IAAIF;AACT,WAAK,IAAIC;AACT,WAAK,YAAYD,GAAE,SAAS;AAI5B,UAAI;AACJ,UAAI;AACJ,WAAK,cAAc,SAASG,aAAYC,KAAI;AAC1C,YAAI,CAACA,IAAI,QAAO;AAGhB,aAAKF,cAAa,KAAK,GAAGE,GAAE;AAC5B,aAAK,KAAK;AAIV,gBAAQA,MAAK,KAAK,EAAE,EAAE,MAAM,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,MAAM,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,KAAK,EAAE,EAAE;AAAA,MAC9F;AACA,aAAO;AAAA,IACT;AACA,aAAS,uBAAuBC,IAAG;AACjC,aAAO,WAAW,SAAS,OAAO,OAAO,OAAO,IAAI,aAAa,OAAO,YAAYA,GAAE,UAAU,IAAI,IAAI,aAAa,OAAO,UAAUA,GAAE,QAAQ;AAAA,IAClJ;AACA,aAASC,cAAaC,KAAI,cAAc;AACtC,YAAM,aAAa,OAAO,WAAW;AACrC,UAAI;AACJ,UAAI;AACJ,YAAMC,UAAS,OAAO;AACtB,eAAS,uBAAuBH,IAAG;AACjC,YAAIA,GAAE,UAAW;AAMjB,cAAMI,aAAY,OAAO,eAAe,CAAC,OAAO,YAAY,OAAO;AACnE,YAAI,OAAO,OAAO,WAAW,OAAO,SAAS;AAC3C,iCAAuBJ,EAAC;AAGxB,gCAAsB,CAAC,OAAO,WAAW,OAAO,YAAY,CAACI,UAAS;AAAA,QACxE;AACA,YAAI,CAAC,uBAAuB,OAAO,OAAO,WAAW,OAAO,aAAa;AACvE,wBAAcJ,GAAE,aAAa,IAAIA,GAAE,aAAa,MAAM,OAAO,aAAa,IAAI,OAAO,aAAa;AAClG,cAAI,OAAO,MAAM,UAAU,KAAK,CAAC,OAAO,SAAS,UAAU,GAAG;AAC5D,yBAAa;AAAA,UACf;AACA,iCAAuBI,aAAY,OAAO,aAAa,KAAK,aAAaJ,GAAE,aAAa;AAAA,QAC1F;AACA,YAAI,OAAO,OAAO,WAAW,SAAS;AACpC,gCAAsBA,GAAE,aAAa,IAAI;AAAA,QAC3C;AACA,QAAAA,GAAE,eAAe,mBAAmB;AACpC,QAAAA,GAAE,aAAa,qBAAqB,MAAM;AAC1C,QAAAA,GAAE,kBAAkB;AACpB,QAAAA,GAAE,oBAAoB;AAAA,MACxB;AACA,UAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,iBAASK,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK,GAAG;AAC7C,cAAI,WAAWA,EAAC,MAAM,gBAAgB,WAAWA,EAAC,aAAaF,SAAQ;AACrE,mCAAuB,WAAWE,EAAC,CAAC;AAAA,UACtC;AAAA,QACF;AAAA,MACF,WAAW,sBAAsBF,WAAU,iBAAiB,YAAY;AACtE,+BAAuB,UAAU;AAAA,MACnC;AAAA,IACF;AACA,aAASG,eAAcC,WAAU,cAAc;AAC7C,YAAMJ,UAAS,OAAO;AACtB,YAAM,aAAa,OAAO,WAAW;AACrC,UAAIE;AACJ,eAAS,wBAAwBL,IAAG;AAClC,YAAIA,GAAE,UAAW;AACjB,QAAAA,GAAE,cAAcO,WAAU,MAAM;AAChC,YAAIA,cAAa,GAAG;AAClB,UAAAP,GAAE,gBAAgB;AAClB,cAAIA,GAAE,OAAO,YAAY;AACvB,qBAAS,MAAM;AACb,cAAAA,GAAE,iBAAiB;AAAA,YACrB,CAAC;AAAA,UACH;AACA,+BAAqBA,GAAE,WAAW,MAAM;AACtC,gBAAI,CAAC,WAAY;AACjB,YAAAA,GAAE,cAAc;AAAA,UAClB,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,aAAKK,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK,GAAG;AACzC,cAAI,WAAWA,EAAC,MAAM,gBAAgB,WAAWA,EAAC,aAAaF,SAAQ;AACrE,oCAAwB,WAAWE,EAAC,CAAC;AAAA,UACvC;AAAA,QACF;AAAA,MACF,WAAW,sBAAsBF,WAAU,iBAAiB,YAAY;AACtE,gCAAwB,UAAU;AAAA,MACpC;AAAA,IACF;AACA,aAAS,eAAe;AACtB,UAAI,CAAC,OAAO,WAAW,QAAS;AAChC,UAAI,OAAO,WAAW,QAAQ;AAC5B,eAAO,WAAW,SAAS;AAC3B,eAAO,OAAO,WAAW;AAAA,MAC3B;AAAA,IACF;AACA,IAAAT,IAAG,cAAc,MAAM;AACrB,UAAI,OAAO,WAAW;AAAA,OAEtB,OAAO,OAAO,OAAO,WAAW,YAAY,YAAY,OAAO,OAAO,WAAW,mBAAmB,cAAc;AAChH,cAAM,kBAAkB,OAAO,OAAO,OAAO,WAAW,YAAY,WAAW,CAAC,GAAG,SAAS,iBAAiB,OAAO,OAAO,WAAW,OAAO,CAAC,IAAI,CAAC,OAAO,OAAO,WAAW,OAAO;AACnL,wBAAgB,QAAQ,oBAAkB;AACxC,cAAI,CAAC,OAAO,WAAW,QAAS,QAAO,WAAW,UAAU,CAAC;AAC7D,cAAI,kBAAkB,eAAe,QAAQ;AAC3C,mBAAO,WAAW,QAAQ,KAAK,eAAe,MAAM;AAAA,UACtD,WAAW,gBAAgB;AACzB,kBAAM,YAAY,GAAG,OAAO,OAAO,YAAY;AAC/C,kBAAM,qBAAqB,CAAAc,OAAK;AAC9B,qBAAO,WAAW,QAAQ,KAAKA,GAAE,OAAO,CAAC,CAAC;AAC1C,qBAAO,OAAO;AACd,6BAAe,oBAAoB,WAAW,kBAAkB;AAAA,YAClE;AACA,2BAAe,iBAAiB,WAAW,kBAAkB;AAAA,UAC/D;AAAA,QACF,CAAC;AACD;AAAA,MACF;AACA,aAAO,WAAW,UAAU,OAAO,OAAO,WAAW;AAAA,IACvD,CAAC;AACD,IAAAd,IAAG,UAAU,MAAM;AACjB,mBAAa;AAAA,IACf,CAAC;AACD,IAAAA,IAAG,UAAU,MAAM;AACjB,mBAAa;AAAA,IACf,CAAC;AACD,IAAAA,IAAG,kBAAkB,MAAM;AACzB,mBAAa;AAAA,IACf,CAAC;AACD,IAAAA,IAAG,gBAAgB,CAAC,IAAIU,YAAW,iBAAiB;AAClD,UAAI,CAAC,OAAO,WAAW,WAAW,OAAO,WAAW,QAAQ,UAAW;AACvE,aAAO,WAAW,aAAaA,YAAW,YAAY;AAAA,IACxD,CAAC;AACD,IAAAV,IAAG,iBAAiB,CAAC,IAAIa,WAAU,iBAAiB;AAClD,UAAI,CAAC,OAAO,WAAW,WAAW,OAAO,WAAW,QAAQ,UAAW;AACvE,aAAO,WAAW,cAAcA,WAAU,YAAY;AAAA,IACxD,CAAC;AACD,WAAO,OAAO,OAAO,YAAY;AAAA,MAC/B,cAAAN;AAAA,MACA,eAAAK;AAAA,IACF,CAAC;AAAA,EACH;;;ACxLA,WAAS,KAAK,MAAM;AAClB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAG;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,yBAAyB;AAAA,QACzB,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,iCAAiC;AAAA,QACjC,eAAe;AAAA,QACf,4BAA4B;AAAA,QAC5B,WAAW;AAAA,QACX,IAAI;AAAA,QACJ,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO,OAAO;AAAA,MACZ,SAAS;AAAA,IACX;AACA,QAAI,aAAa;AACjB,QAAI;AACJ,QAAI;AACJ,QAAI,8BAA6B,oBAAI,KAAK,GAAE,QAAQ;AACpD,aAASC,QAAOC,UAAS;AACvB,YAAM,eAAe;AACrB,UAAI,aAAa,WAAW,EAAG;AAC/B,mBAAa,YAAY;AACzB,mBAAa,YAAYA;AAAA,IAC3B;AACA,aAAS,gBAAgB,MAAM;AAC7B,UAAI,SAAS,QAAQ;AACnB,eAAO;AAAA,MACT;AACA,YAAM,aAAa,MAAM,KAAK,MAAM,KAAK,KAAK,OAAO,CAAC,EAAE,SAAS,EAAE;AACnE,aAAO,IAAI,OAAO,IAAI,EAAE,QAAQ,MAAM,UAAU;AAAA,IAClD;AACA,aAAS,gBAAgB,IAAI;AAC3B,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,YAAY,GAAG;AAAA,MACpC,CAAC;AAAA,IACH;AACA,aAAS,mBAAmB,IAAI;AAC9B,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,YAAY,IAAI;AAAA,MACrC,CAAC;AAAA,IACH;AACA,aAAS,UAAU,IAAI,MAAM;AAC3B,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,QAAQ,IAAI;AAAA,MACjC,CAAC;AAAA,IACH;AACA,aAAS,qBAAqB,IAAI,aAAa;AAC7C,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,wBAAwB,WAAW;AAAA,MACxD,CAAC;AAAA,IACH;AACA,aAAS,cAAc,IAAI,UAAU;AACnC,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,iBAAiB,QAAQ;AAAA,MAC9C,CAAC;AAAA,IACH;AACA,aAAS,WAAW,IAAI,OAAO;AAC7B,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,cAAc,KAAK;AAAA,MACxC,CAAC;AAAA,IACH;AACA,aAAS,QAAQ,IAAIC,KAAI;AACvB,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,MAAMA,GAAE;AAAA,MAC7B,CAAC;AAAA,IACH;AACA,aAAS,UAAU,IAAI,MAAM;AAC3B,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,aAAa,IAAI;AAAA,MACtC,CAAC;AAAA,IACH;AACA,aAAS,UAAU,IAAI;AACrB,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,iBAAiB,IAAI;AAAA,MAC1C,CAAC;AAAA,IACH;AACA,aAAS,SAAS,IAAI;AACpB,WAAK,kBAAkB,EAAE;AACzB,SAAG,QAAQ,WAAS;AAClB,cAAM,aAAa,iBAAiB,KAAK;AAAA,MAC3C,CAAC;AAAA,IACH;AACA,aAAS,kBAAkBC,IAAG;AAC5B,UAAIA,GAAE,YAAY,MAAMA,GAAE,YAAY,GAAI;AAC1C,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,WAAWA,GAAE;AACnB,UAAI,OAAO,cAAc,OAAO,WAAW,OAAO,aAAa,OAAO,WAAW,MAAM,OAAO,WAAW,GAAG,SAASA,GAAE,MAAM,IAAI;AAC/H,YAAI,CAACA,GAAE,OAAO,QAAQ,kBAAkB,OAAO,OAAO,WAAW,WAAW,CAAC,EAAG;AAAA,MAClF;AACA,UAAI,OAAO,cAAc,OAAO,WAAW,UAAU,OAAO,WAAW,QAAQ;AAC7E,cAAM,UAAU,kBAAkB,OAAO,WAAW,MAAM;AAC1D,cAAM,UAAU,kBAAkB,OAAO,WAAW,MAAM;AAC1D,YAAI,QAAQ,SAAS,QAAQ,GAAG;AAC9B,cAAI,EAAE,OAAO,SAAS,CAAC,OAAO,OAAO,OAAO;AAC1C,mBAAO,UAAU;AAAA,UACnB;AACA,cAAI,OAAO,OAAO;AAChB,YAAAH,QAAO,OAAO,gBAAgB;AAAA,UAChC,OAAO;AACL,YAAAA,QAAO,OAAO,gBAAgB;AAAA,UAChC;AAAA,QACF;AACA,YAAI,QAAQ,SAAS,QAAQ,GAAG;AAC9B,cAAI,EAAE,OAAO,eAAe,CAAC,OAAO,OAAO,OAAO;AAChD,mBAAO,UAAU;AAAA,UACnB;AACA,cAAI,OAAO,aAAa;AACtB,YAAAA,QAAO,OAAO,iBAAiB;AAAA,UACjC,OAAO;AACL,YAAAA,QAAO,OAAO,gBAAgB;AAAA,UAChC;AAAA,QACF;AAAA,MACF;AACA,UAAI,OAAO,cAAc,SAAS,QAAQ,kBAAkB,OAAO,OAAO,WAAW,WAAW,CAAC,GAAG;AAClG,iBAAS,MAAM;AAAA,MACjB;AAAA,IACF;AACA,aAAS,mBAAmB;AAC1B,UAAI,OAAO,OAAO,QAAQ,OAAO,OAAO,UAAU,CAAC,OAAO,WAAY;AACtE,YAAM;AAAA,QACJ,QAAAI;AAAA,QACA;AAAA,MACF,IAAI,OAAO;AACX,UAAI,QAAQ;AACV,YAAI,OAAO,aAAa;AACtB,oBAAU,MAAM;AAChB,6BAAmB,MAAM;AAAA,QAC3B,OAAO;AACL,mBAAS,MAAM;AACf,0BAAgB,MAAM;AAAA,QACxB;AAAA,MACF;AACA,UAAIA,SAAQ;AACV,YAAI,OAAO,OAAO;AAChB,oBAAUA,OAAM;AAChB,6BAAmBA,OAAM;AAAA,QAC3B,OAAO;AACL,mBAASA,OAAM;AACf,0BAAgBA,OAAM;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AACA,aAAS,gBAAgB;AACvB,aAAO,OAAO,cAAc,OAAO,WAAW,WAAW,OAAO,WAAW,QAAQ;AAAA,IACrF;AACA,aAAS,yBAAyB;AAChC,aAAO,cAAc,KAAK,OAAO,OAAO,WAAW;AAAA,IACrD;AACA,aAAS,mBAAmB;AAC1B,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,CAAC,cAAc,EAAG;AACtB,aAAO,WAAW,QAAQ,QAAQ,cAAY;AAC5C,YAAI,OAAO,OAAO,WAAW,WAAW;AACtC,0BAAgB,QAAQ;AACxB,cAAI,CAAC,OAAO,OAAO,WAAW,cAAc;AAC1C,sBAAU,UAAU,QAAQ;AAC5B,uBAAW,UAAU,OAAO,wBAAwB,QAAQ,iBAAiB,aAAa,QAAQ,IAAI,CAAC,CAAC;AAAA,UAC1G;AAAA,QACF;AACA,YAAI,SAAS,QAAQ,kBAAkB,OAAO,OAAO,WAAW,iBAAiB,CAAC,GAAG;AACnF,mBAAS,aAAa,gBAAgB,MAAM;AAAA,QAC9C,OAAO;AACL,mBAAS,gBAAgB,cAAc;AAAA,QACzC;AAAA,MACF,CAAC;AAAA,IACH;AACA,UAAM,YAAY,CAAC,IAAI,WAAWH,aAAY;AAC5C,sBAAgB,EAAE;AAClB,UAAI,GAAG,YAAY,UAAU;AAC3B,kBAAU,IAAI,QAAQ;AACtB,WAAG,iBAAiB,WAAW,iBAAiB;AAAA,MAClD;AACA,iBAAW,IAAIA,QAAO;AACtB,oBAAc,IAAI,SAAS;AAAA,IAC7B;AACA,UAAM,oBAAoB,CAAAE,OAAK;AAC7B,UAAI,sBAAsB,uBAAuBA,GAAE,UAAU,CAAC,mBAAmB,SAASA,GAAE,MAAM,GAAG;AACnG,8BAAsB;AAAA,MACxB;AACA,aAAO,KAAK,UAAU;AAAA,IACxB;AACA,UAAM,kBAAkB,MAAM;AAC5B,4BAAsB;AACtB,4BAAsB,MAAM;AAC1B,8BAAsB,MAAM;AAC1B,cAAI,CAAC,OAAO,WAAW;AACrB,mBAAO,KAAK,UAAU;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AACA,UAAM,qBAAqB,CAAAA,OAAK;AAC9B,oCAA6B,oBAAI,KAAK,GAAE,QAAQ;AAAA,IAClD;AACA,UAAM,cAAc,CAAAA,OAAK;AACvB,UAAI,OAAO,KAAK,WAAW,CAAC,OAAO,OAAO,KAAK,cAAe;AAC9D,WAAI,oBAAI,KAAK,GAAE,QAAQ,IAAI,6BAA6B,IAAK;AAC7D,YAAM,UAAUA,GAAE,OAAO,QAAQ,IAAI,OAAO,OAAO,UAAU,gBAAgB;AAC7E,UAAI,CAAC,WAAW,CAAC,OAAO,OAAO,SAAS,OAAO,EAAG;AAClD,2BAAqB;AACrB,YAAM,WAAW,OAAO,OAAO,QAAQ,OAAO,MAAM,OAAO;AAC3D,YAAM,YAAY,OAAO,OAAO,uBAAuB,OAAO,iBAAiB,OAAO,cAAc,SAAS,OAAO;AACpH,UAAI,YAAY,UAAW;AAC3B,UAAIA,GAAE,sBAAsBA,GAAE,mBAAmB,iBAAkB;AACnE,UAAI,OAAO,aAAa,GAAG;AACzB,eAAO,GAAG,aAAa;AAAA,MACzB,OAAO;AACL,eAAO,GAAG,YAAY;AAAA,MACxB;AACA,4BAAsB,MAAM;AAC1B,YAAI,oBAAqB;AACzB,YAAI,OAAO,OAAO,MAAM;AACtB,iBAAO,YAAY,SAAS,QAAQ,aAAa,yBAAyB,CAAC,GAAG,CAAC;AAAA,QACjF,OAAO;AACL,iBAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO,GAAG,CAAC;AAAA,QAClD;AACA,8BAAsB;AAAA,MACxB,CAAC;AAAA,IACH;AACA,UAAM,aAAa,MAAM;AACvB,YAAM,SAAS,OAAO,OAAO;AAC7B,UAAI,OAAO,4BAA4B;AACrC,6BAAqB,OAAO,QAAQ,OAAO,0BAA0B;AAAA,MACvE;AACA,UAAI,OAAO,WAAW;AACpB,kBAAU,OAAO,QAAQ,OAAO,SAAS;AAAA,MAC3C;AACA,YAAM,eAAe,OAAO,OAAO;AACnC,UAAI,OAAO,mBAAmB;AAC5B,eAAO,OAAO,QAAQ,CAAC,SAASE,WAAU;AACxC,gBAAM,aAAa,OAAO,OAAO,OAAO,SAAS,QAAQ,aAAa,yBAAyB,GAAG,EAAE,IAAIA;AACxG,gBAAM,mBAAmB,OAAO,kBAAkB,QAAQ,iBAAiB,aAAa,CAAC,EAAE,QAAQ,wBAAwB,YAAY;AACvI,qBAAW,SAAS,gBAAgB;AAAA,QACtC,CAAC;AAAA,MACH;AAAA,IACF;AACA,UAAM,OAAO,MAAM;AACjB,YAAM,SAAS,OAAO,OAAO;AAC7B,aAAO,GAAG,OAAO,UAAU;AAG3B,YAAM,cAAc,OAAO;AAC3B,UAAI,OAAO,iCAAiC;AAC1C,6BAAqB,aAAa,OAAO,+BAA+B;AAAA,MAC1E;AACA,UAAI,OAAO,kBAAkB;AAC3B,mBAAW,aAAa,OAAO,gBAAgB;AAAA,MACjD;AACA,UAAI,OAAO,eAAe;AACxB,kBAAU,aAAa,OAAO,aAAa;AAAA,MAC7C;AAGA,YAAM,YAAY,OAAO;AACzB,YAAM,YAAY,OAAO,MAAM,UAAU,aAAa,IAAI,KAAK,kBAAkB,gBAAgB,EAAE,CAAC;AACpG,YAAM,OAAO,OAAO,OAAO,YAAY,OAAO,OAAO,SAAS,UAAU,QAAQ;AAChF,cAAQ,WAAW,SAAS;AAC5B,gBAAU,WAAW,IAAI;AAGzB,iBAAW;AAGX,UAAI;AAAA,QACF,QAAAD;AAAA,QACA;AAAA,MACF,IAAI,OAAO,aAAa,OAAO,aAAa,CAAC;AAC7C,MAAAA,UAAS,kBAAkBA,OAAM;AACjC,eAAS,kBAAkB,MAAM;AACjC,UAAIA,SAAQ;AACV,QAAAA,QAAO,QAAQ,QAAM,UAAU,IAAI,WAAW,OAAO,gBAAgB,CAAC;AAAA,MACxE;AACA,UAAI,QAAQ;AACV,eAAO,QAAQ,QAAM,UAAU,IAAI,WAAW,OAAO,gBAAgB,CAAC;AAAA,MACxE;AAGA,UAAI,uBAAuB,GAAG;AAC5B,cAAM,eAAe,kBAAkB,OAAO,WAAW,EAAE;AAC3D,qBAAa,QAAQ,QAAM;AACzB,aAAG,iBAAiB,WAAW,iBAAiB;AAAA,QAClD,CAAC;AAAA,MACH;AAGA,YAAME,YAAW,YAAY;AAC7B,MAAAA,UAAS,iBAAiB,oBAAoB,kBAAkB;AAChE,aAAO,GAAG,iBAAiB,SAAS,aAAa,IAAI;AACrD,aAAO,GAAG,iBAAiB,SAAS,aAAa,IAAI;AACrD,aAAO,GAAG,iBAAiB,eAAe,mBAAmB,IAAI;AACjE,aAAO,GAAG,iBAAiB,aAAa,iBAAiB,IAAI;AAAA,IAC/D;AACA,aAASC,WAAU;AACjB,UAAI,WAAY,YAAW,OAAO;AAClC,UAAI;AAAA,QACF,QAAAH;AAAA,QACA;AAAA,MACF,IAAI,OAAO,aAAa,OAAO,aAAa,CAAC;AAC7C,MAAAA,UAAS,kBAAkBA,OAAM;AACjC,eAAS,kBAAkB,MAAM;AACjC,UAAIA,SAAQ;AACV,QAAAA,QAAO,QAAQ,QAAM,GAAG,oBAAoB,WAAW,iBAAiB,CAAC;AAAA,MAC3E;AACA,UAAI,QAAQ;AACV,eAAO,QAAQ,QAAM,GAAG,oBAAoB,WAAW,iBAAiB,CAAC;AAAA,MAC3E;AAGA,UAAI,uBAAuB,GAAG;AAC5B,cAAM,eAAe,kBAAkB,OAAO,WAAW,EAAE;AAC3D,qBAAa,QAAQ,QAAM;AACzB,aAAG,oBAAoB,WAAW,iBAAiB;AAAA,QACrD,CAAC;AAAA,MACH;AACA,YAAME,YAAW,YAAY;AAC7B,MAAAA,UAAS,oBAAoB,oBAAoB,kBAAkB;AAEnE,UAAI,OAAO,MAAM,OAAO,OAAO,OAAO,UAAU;AAC9C,eAAO,GAAG,oBAAoB,SAAS,aAAa,IAAI;AACxD,eAAO,GAAG,oBAAoB,eAAe,mBAAmB,IAAI;AACpE,eAAO,GAAG,oBAAoB,aAAa,iBAAiB,IAAI;AAAA,MAClE;AAAA,IACF;AACA,IAAAP,IAAG,cAAc,MAAM;AACrB,mBAAa,cAAc,QAAQ,OAAO,OAAO,KAAK,iBAAiB;AACvE,iBAAW,aAAa,aAAa,WAAW;AAChD,iBAAW,aAAa,eAAe,MAAM;AAAA,IAC/C,CAAC;AACD,IAAAA,IAAG,aAAa,MAAM;AACpB,UAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,WAAK;AAAA,IACP,CAAC;AACD,IAAAA,IAAG,kEAAkE,MAAM;AACzE,UAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,iBAAW;AAAA,IACb,CAAC;AACD,IAAAA,IAAG,yCAAyC,MAAM;AAChD,UAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,uBAAiB;AAAA,IACnB,CAAC;AACD,IAAAA,IAAG,oBAAoB,MAAM;AAC3B,UAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,uBAAiB;AAAA,IACnB,CAAC;AACD,IAAAA,IAAG,WAAW,MAAM;AAClB,UAAI,CAAC,OAAO,OAAO,KAAK,QAAS;AACjC,MAAAQ,SAAQ;AAAA,IACV,CAAC;AAAA,EACH;;;ACrXA,WAASC,SAAQ,MAAM;AACrB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAC;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,cAAc;AAAA,QACd,KAAK;AAAA,QACL,WAAW;AAAA,MACb;AAAA,IACF,CAAC;AACD,QAAI,cAAc;AAClB,QAAI,QAAQ,CAAC;AACb,UAAM,UAAU,UAAQ;AACtB,aAAO,KAAK,SAAS,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,YAAY,EAAE,EAAE,QAAQ,QAAQ,GAAG,EAAE,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAO,EAAE;AAAA,IAC/H;AACA,UAAM,gBAAgB,iBAAe;AACnC,YAAMC,UAAS,UAAU;AACzB,UAAIC;AACJ,UAAI,aAAa;AACf,QAAAA,YAAW,IAAI,IAAI,WAAW;AAAA,MAChC,OAAO;AACL,QAAAA,YAAWD,QAAO;AAAA,MACpB;AACA,YAAM,YAAYC,UAAS,SAAS,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,OAAO,UAAQ,SAAS,EAAE;AAClF,YAAM,QAAQ,UAAU;AACxB,YAAM,MAAM,UAAU,QAAQ,CAAC;AAC/B,YAAM,QAAQ,UAAU,QAAQ,CAAC;AACjC,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,UAAM,aAAa,CAAC,KAAKC,WAAU;AACjC,YAAMF,UAAS,UAAU;AACzB,UAAI,CAAC,eAAe,CAAC,OAAO,OAAO,QAAQ,QAAS;AACpD,UAAIC;AACJ,UAAI,OAAO,OAAO,KAAK;AACrB,QAAAA,YAAW,IAAI,IAAI,OAAO,OAAO,GAAG;AAAA,MACtC,OAAO;AACL,QAAAA,YAAWD,QAAO;AAAA,MACpB;AACA,YAAMG,SAAQ,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,SAAS,cAAc,6BAA6BD,MAAK,IAAI,IAAI,OAAO,OAAOA,MAAK;AAC3J,UAAI,QAAQ,QAAQC,OAAM,aAAa,cAAc,CAAC;AACtD,UAAI,OAAO,OAAO,QAAQ,KAAK,SAAS,GAAG;AACzC,YAAI,OAAO,OAAO,OAAO,QAAQ;AACjC,YAAI,KAAK,KAAK,SAAS,CAAC,MAAM,IAAK,QAAO,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC;AACvE,gBAAQ,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,KAAK;AAAA,MACjD,WAAW,CAACF,UAAS,SAAS,SAAS,GAAG,GAAG;AAC3C,gBAAQ,GAAG,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,KAAK;AAAA,MACzC;AACA,UAAI,OAAO,OAAO,QAAQ,WAAW;AACnC,iBAASA,UAAS;AAAA,MACpB;AACA,YAAM,eAAeD,QAAO,QAAQ;AACpC,UAAI,gBAAgB,aAAa,UAAU,OAAO;AAChD;AAAA,MACF;AACA,UAAI,OAAO,OAAO,QAAQ,cAAc;AACtC,QAAAA,QAAO,QAAQ,aAAa;AAAA,UAC1B;AAAA,QACF,GAAG,MAAM,KAAK;AAAA,MAChB,OAAO;AACL,QAAAA,QAAO,QAAQ,UAAU;AAAA,UACvB;AAAA,QACF,GAAG,MAAM,KAAK;AAAA,MAChB;AAAA,IACF;AACA,UAAM,gBAAgB,CAAC,OAAO,OAAO,iBAAiB;AACpD,UAAI,OAAO;AACT,iBAASI,KAAI,GAAG,SAAS,OAAO,OAAO,QAAQA,KAAI,QAAQA,MAAK,GAAG;AACjE,gBAAMD,SAAQ,OAAO,OAAOC,EAAC;AAC7B,gBAAM,eAAe,QAAQD,OAAM,aAAa,cAAc,CAAC;AAC/D,cAAI,iBAAiB,OAAO;AAC1B,kBAAMD,SAAQ,OAAO,cAAcC,MAAK;AACxC,mBAAO,QAAQD,QAAO,OAAO,YAAY;AAAA,UAC3C;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO,QAAQ,GAAG,OAAO,YAAY;AAAA,MACvC;AAAA,IACF;AACA,UAAM,qBAAqB,MAAM;AAC/B,cAAQ,cAAc,OAAO,OAAO,GAAG;AACvC,oBAAc,OAAO,OAAO,OAAO,MAAM,OAAO,KAAK;AAAA,IACvD;AACA,UAAM,OAAO,MAAM;AACjB,YAAMF,UAAS,UAAU;AACzB,UAAI,CAAC,OAAO,OAAO,QAAS;AAC5B,UAAI,CAACA,QAAO,WAAW,CAACA,QAAO,QAAQ,WAAW;AAChD,eAAO,OAAO,QAAQ,UAAU;AAChC,eAAO,OAAO,eAAe,UAAU;AACvC;AAAA,MACF;AACA,oBAAc;AACd,cAAQ,cAAc,OAAO,OAAO,GAAG;AACvC,UAAI,CAAC,MAAM,OAAO,CAAC,MAAM,OAAO;AAC9B,YAAI,CAAC,OAAO,OAAO,QAAQ,cAAc;AACvC,UAAAA,QAAO,iBAAiB,YAAY,kBAAkB;AAAA,QACxD;AACA;AAAA,MACF;AACA,oBAAc,GAAG,MAAM,OAAO,OAAO,OAAO,kBAAkB;AAC9D,UAAI,CAAC,OAAO,OAAO,QAAQ,cAAc;AACvC,QAAAA,QAAO,iBAAiB,YAAY,kBAAkB;AAAA,MACxD;AAAA,IACF;AACA,UAAMK,WAAU,MAAM;AACpB,YAAML,UAAS,UAAU;AACzB,UAAI,CAAC,OAAO,OAAO,QAAQ,cAAc;AACvC,QAAAA,QAAO,oBAAoB,YAAY,kBAAkB;AAAA,MAC3D;AAAA,IACF;AACA,IAAAD,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,QAAQ,SAAS;AACjC,aAAK;AAAA,MACP;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,WAAW,MAAM;AAClB,UAAI,OAAO,OAAO,QAAQ,SAAS;AACjC,QAAAM,SAAQ;AAAA,MACV;AAAA,IACF,CAAC;AACD,IAAAN,IAAG,4CAA4C,MAAM;AACnD,UAAI,aAAa;AACf,mBAAW,OAAO,OAAO,QAAQ,KAAK,OAAO,WAAW;AAAA,MAC1D;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,eAAe,MAAM;AACtB,UAAI,eAAe,OAAO,OAAO,SAAS;AACxC,mBAAW,OAAO,OAAO,QAAQ,KAAK,OAAO,WAAW;AAAA,MAC1D;AAAA,IACF,CAAC;AAAA,EACH;;;ACxIA,WAAS,eAAe,MAAM;AAC5B,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAAO;AAAA,IACF,IAAI;AACJ,QAAI,cAAc;AAClB,UAAMC,YAAW,YAAY;AAC7B,UAAMC,UAAS,UAAU;AACzB,iBAAa;AAAA,MACX,gBAAgB;AAAA,QACd,SAAS;AAAA,QACT,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,cAAc,IAAI,MAAM;AACtB,cAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACnD,kBAAM,gBAAgB,OAAO,OAAO,KAAK,aAAW,QAAQ,aAAa,WAAW,MAAM,IAAI;AAC9F,gBAAI,CAAC,cAAe,QAAO;AAC3B,kBAAMC,SAAQ,SAAS,cAAc,aAAa,yBAAyB,GAAG,EAAE;AAChF,mBAAOA;AAAA,UACT;AACA,iBAAO,OAAO,cAAc,gBAAgB,OAAO,UAAU,IAAI,OAAO,OAAO,UAAU,eAAe,IAAI,+BAA+B,IAAI,IAAI,EAAE,CAAC,CAAC;AAAA,QACzJ;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,eAAe,MAAM;AACzB,WAAK,YAAY;AACjB,YAAM,UAAUF,UAAS,SAAS,KAAK,QAAQ,KAAK,EAAE;AACtD,YAAM,gBAAgB,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,SAAS,cAAc,6BAA6B,OAAO,WAAW,IAAI,IAAI,OAAO,OAAO,OAAO,WAAW;AAC7L,YAAM,kBAAkB,gBAAgB,cAAc,aAAa,WAAW,IAAI;AAClF,UAAI,YAAY,iBAAiB;AAC/B,cAAMG,YAAW,OAAO,OAAO,eAAe,cAAc,QAAQ,OAAO;AAC3E,YAAI,OAAOA,cAAa,eAAe,OAAO,MAAMA,SAAQ,EAAG;AAC/D,eAAO,QAAQA,SAAQ;AAAA,MACzB;AAAA,IACF;AACA,UAAM,UAAU,MAAM;AACpB,UAAI,CAAC,eAAe,CAAC,OAAO,OAAO,eAAe,QAAS;AAC3D,YAAM,gBAAgB,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,SAAS,cAAc,6BAA6B,OAAO,WAAW,IAAI,IAAI,OAAO,OAAO,OAAO,WAAW;AAC7L,YAAM,kBAAkB,gBAAgB,cAAc,aAAa,WAAW,KAAK,cAAc,aAAa,cAAc,IAAI;AAChI,UAAI,OAAO,OAAO,eAAe,gBAAgBF,QAAO,WAAWA,QAAO,QAAQ,cAAc;AAC9F,QAAAA,QAAO,QAAQ,aAAa,MAAM,MAAM,IAAI,eAAe,MAAM,EAAE;AACnE,aAAK,SAAS;AAAA,MAChB,OAAO;AACL,QAAAD,UAAS,SAAS,OAAO,mBAAmB;AAC5C,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AACA,UAAM,OAAO,MAAM;AACjB,UAAI,CAAC,OAAO,OAAO,eAAe,WAAW,OAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,QAAS;AACrG,oBAAc;AACd,YAAM,OAAOA,UAAS,SAAS,KAAK,QAAQ,KAAK,EAAE;AACnD,UAAI,MAAM;AACR,cAAM,QAAQ;AACd,cAAME,SAAQ,OAAO,OAAO,eAAe,cAAc,QAAQ,IAAI;AACrE,eAAO,QAAQA,UAAS,GAAG,OAAO,OAAO,OAAO,oBAAoB,IAAI;AAAA,MAC1E;AACA,UAAI,OAAO,OAAO,eAAe,YAAY;AAC3C,QAAAD,QAAO,iBAAiB,cAAc,YAAY;AAAA,MACpD;AAAA,IACF;AACA,UAAMG,WAAU,MAAM;AACpB,UAAI,OAAO,OAAO,eAAe,YAAY;AAC3C,QAAAH,QAAO,oBAAoB,cAAc,YAAY;AAAA,MACvD;AAAA,IACF;AACA,IAAAF,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,eAAe,SAAS;AACxC,aAAK;AAAA,MACP;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,WAAW,MAAM;AAClB,UAAI,OAAO,OAAO,eAAe,SAAS;AACxC,QAAAK,SAAQ;AAAA,MACV;AAAA,IACF,CAAC;AACD,IAAAL,IAAG,4CAA4C,MAAM;AACnD,UAAI,aAAa;AACf,gBAAQ;AAAA,MACV;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,eAAe,MAAM;AACtB,UAAI,eAAe,OAAO,OAAO,SAAS;AACxC,gBAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;;;ACtFA,WAAS,SAAS,MAAM;AACtB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAM;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,WAAO,WAAW;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AACA,iBAAa;AAAA,MACX,UAAU;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,mBAAmB;AAAA,QACnB,sBAAsB;AAAA,QACtB,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,MACrB;AAAA,IACF,CAAC;AACD,QAAI;AACJ,QAAI;AACJ,QAAI,qBAAqB,UAAU,OAAO,WAAW,OAAO,SAAS,QAAQ;AAC7E,QAAI,uBAAuB,UAAU,OAAO,WAAW,OAAO,SAAS,QAAQ;AAC/E,QAAI;AACJ,QAAI,qBAAoB,oBAAI,KAAK,GAAE,QAAQ;AAC3C,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,aAAS,gBAAgBC,IAAG;AAC1B,UAAI,CAAC,UAAU,OAAO,aAAa,CAAC,OAAO,UAAW;AACtD,UAAIA,GAAE,WAAW,OAAO,UAAW;AACnC,aAAO,UAAU,oBAAoB,iBAAiB,eAAe;AACrE,UAAI,wBAAwBA,GAAE,UAAUA,GAAE,OAAO,mBAAmB;AAClE;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,UAAM,eAAe,MAAM;AACzB,UAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,UAAI,OAAO,SAAS,QAAQ;AAC1B,oBAAY;AAAA,MACd,WAAW,WAAW;AACpB,+BAAuB;AACvB,oBAAY;AAAA,MACd;AACA,YAAM,WAAW,OAAO,SAAS,SAAS,mBAAmB,oBAAoB,wBAAuB,oBAAI,KAAK,GAAE,QAAQ;AAC3H,aAAO,SAAS,WAAW;AAC3B,WAAK,oBAAoB,UAAU,WAAW,kBAAkB;AAChE,YAAM,sBAAsB,MAAM;AAChC,qBAAa;AAAA,MACf,CAAC;AAAA,IACH;AACA,UAAM,gBAAgB,MAAM;AAC1B,UAAI;AACJ,UAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS;AACnD,wBAAgB,OAAO,OAAO,KAAK,aAAW,QAAQ,UAAU,SAAS,qBAAqB,CAAC;AAAA,MACjG,OAAO;AACL,wBAAgB,OAAO,OAAO,OAAO,WAAW;AAAA,MAClD;AACA,UAAI,CAAC,cAAe,QAAO;AAC3B,YAAM,oBAAoB,SAAS,cAAc,aAAa,sBAAsB,GAAG,EAAE;AACzF,aAAO;AAAA,IACT;AACA,UAAM,MAAM,gBAAc;AACxB,UAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,2BAAqB,GAAG;AACxB,mBAAa;AACb,UAAI,QAAQ,OAAO,eAAe,cAAc,OAAO,OAAO,SAAS,QAAQ;AAC/E,2BAAqB,OAAO,OAAO,SAAS;AAC5C,6BAAuB,OAAO,OAAO,SAAS;AAC9C,YAAM,oBAAoB,cAAc;AACxC,UAAI,CAAC,OAAO,MAAM,iBAAiB,KAAK,oBAAoB,KAAK,OAAO,eAAe,aAAa;AAClG,gBAAQ;AACR,6BAAqB;AACrB,+BAAuB;AAAA,MACzB;AACA,yBAAmB;AACnB,YAAM,QAAQ,OAAO,OAAO;AAC5B,YAAM,UAAU,MAAM;AACpB,YAAI,CAAC,UAAU,OAAO,UAAW;AACjC,YAAI,OAAO,OAAO,SAAS,kBAAkB;AAC3C,cAAI,CAAC,OAAO,eAAe,OAAO,OAAO,QAAQ,OAAO,OAAO,QAAQ;AACrE,mBAAO,UAAU,OAAO,MAAM,IAAI;AAClC,iBAAK,UAAU;AAAA,UACjB,WAAW,CAAC,OAAO,OAAO,SAAS,iBAAiB;AAClD,mBAAO,QAAQ,OAAO,OAAO,SAAS,GAAG,OAAO,MAAM,IAAI;AAC1D,iBAAK,UAAU;AAAA,UACjB;AAAA,QACF,OAAO;AACL,cAAI,CAAC,OAAO,SAAS,OAAO,OAAO,QAAQ,OAAO,OAAO,QAAQ;AAC/D,mBAAO,UAAU,OAAO,MAAM,IAAI;AAClC,iBAAK,UAAU;AAAA,UACjB,WAAW,CAAC,OAAO,OAAO,SAAS,iBAAiB;AAClD,mBAAO,QAAQ,GAAG,OAAO,MAAM,IAAI;AACnC,iBAAK,UAAU;AAAA,UACjB;AAAA,QACF;AACA,YAAI,OAAO,OAAO,SAAS;AACzB,+BAAoB,oBAAI,KAAK,GAAE,QAAQ;AACvC,gCAAsB,MAAM;AAC1B,gBAAI;AAAA,UACN,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,QAAQ,GAAG;AACb,qBAAa,OAAO;AACpB,kBAAU,WAAW,MAAM;AACzB,kBAAQ;AAAA,QACV,GAAG,KAAK;AAAA,MACV,OAAO;AACL,8BAAsB,MAAM;AAC1B,kBAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAGA,aAAO;AAAA,IACT;AACA,UAAMC,SAAQ,MAAM;AAClB,2BAAoB,oBAAI,KAAK,GAAE,QAAQ;AACvC,aAAO,SAAS,UAAU;AAC1B,UAAI;AACJ,WAAK,eAAe;AAAA,IACtB;AACA,UAAM,OAAO,MAAM;AACjB,aAAO,SAAS,UAAU;AAC1B,mBAAa,OAAO;AACpB,2BAAqB,GAAG;AACxB,WAAK,cAAc;AAAA,IACrB;AACA,UAAM,QAAQ,CAAC,UAAU,UAAU;AACjC,UAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,mBAAa,OAAO;AACpB,UAAI,CAAC,UAAU;AACb,8BAAsB;AAAA,MACxB;AACA,YAAM,UAAU,MAAM;AACpB,aAAK,eAAe;AACpB,YAAI,OAAO,OAAO,SAAS,mBAAmB;AAC5C,iBAAO,UAAU,iBAAiB,iBAAiB,eAAe;AAAA,QACpE,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO,SAAS,SAAS;AACzB,UAAI,OAAO;AACT,YAAI,cAAc;AAChB,6BAAmB,OAAO,OAAO,SAAS;AAAA,QAC5C;AACA,uBAAe;AACf,gBAAQ;AACR;AAAA,MACF;AACA,YAAM,QAAQ,oBAAoB,OAAO,OAAO,SAAS;AACzD,yBAAmB,UAAS,oBAAI,KAAK,GAAE,QAAQ,IAAI;AACnD,UAAI,OAAO,SAAS,mBAAmB,KAAK,CAAC,OAAO,OAAO,KAAM;AACjE,UAAI,mBAAmB,EAAG,oBAAmB;AAC7C,cAAQ;AAAA,IACV;AACA,UAAM,SAAS,MAAM;AACnB,UAAI,OAAO,SAAS,mBAAmB,KAAK,CAAC,OAAO,OAAO,QAAQ,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AACjH,2BAAoB,oBAAI,KAAK,GAAE,QAAQ;AACvC,UAAI,qBAAqB;AACvB,8BAAsB;AACtB,YAAI,gBAAgB;AAAA,MACtB,OAAO;AACL,YAAI;AAAA,MACN;AACA,aAAO,SAAS,SAAS;AACzB,WAAK,gBAAgB;AAAA,IACvB;AACA,UAAM,qBAAqB,MAAM;AAC/B,UAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,YAAMC,YAAW,YAAY;AAC7B,UAAIA,UAAS,oBAAoB,UAAU;AACzC,8BAAsB;AACtB,cAAM,IAAI;AAAA,MACZ;AACA,UAAIA,UAAS,oBAAoB,WAAW;AAC1C,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,iBAAiB,CAAAF,OAAK;AAC1B,UAAIA,GAAE,gBAAgB,QAAS;AAC/B,4BAAsB;AACtB,6BAAuB;AACvB,UAAI,OAAO,aAAa,OAAO,SAAS,OAAQ;AAChD,YAAM,IAAI;AAAA,IACZ;AACA,UAAM,iBAAiB,CAAAA,OAAK;AAC1B,UAAIA,GAAE,gBAAgB,QAAS;AAC/B,6BAAuB;AACvB,UAAI,OAAO,SAAS,QAAQ;AAC1B,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,oBAAoB,MAAM;AAC9B,UAAI,OAAO,OAAO,SAAS,mBAAmB;AAC5C,eAAO,GAAG,iBAAiB,gBAAgB,cAAc;AACzD,eAAO,GAAG,iBAAiB,gBAAgB,cAAc;AAAA,MAC3D;AAAA,IACF;AACA,UAAM,oBAAoB,MAAM;AAC9B,UAAI,OAAO,MAAM,OAAO,OAAO,OAAO,UAAU;AAC9C,eAAO,GAAG,oBAAoB,gBAAgB,cAAc;AAC5D,eAAO,GAAG,oBAAoB,gBAAgB,cAAc;AAAA,MAC9D;AAAA,IACF;AACA,UAAM,uBAAuB,MAAM;AACjC,YAAME,YAAW,YAAY;AAC7B,MAAAA,UAAS,iBAAiB,oBAAoB,kBAAkB;AAAA,IAClE;AACA,UAAM,uBAAuB,MAAM;AACjC,YAAMA,YAAW,YAAY;AAC7B,MAAAA,UAAS,oBAAoB,oBAAoB,kBAAkB;AAAA,IACrE;AACA,IAAAH,IAAG,QAAQ,MAAM;AACf,UAAI,OAAO,OAAO,SAAS,SAAS;AAClC,0BAAkB;AAClB,6BAAqB;AACrB,QAAAE,OAAM;AAAA,MACR;AAAA,IACF,CAAC;AACD,IAAAF,IAAG,WAAW,MAAM;AAClB,wBAAkB;AAClB,2BAAqB;AACrB,UAAI,OAAO,SAAS,SAAS;AAC3B,aAAK;AAAA,MACP;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,0BAA0B,MAAM;AACjC,UAAI,iBAAiB,qBAAqB;AACxC,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,8BAA8B,MAAM;AACrC,UAAI,CAAC,OAAO,OAAO,SAAS,sBAAsB;AAChD,cAAM,MAAM,IAAI;AAAA,MAClB,OAAO;AACL,aAAK;AAAA,MACP;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,yBAAyB,CAAC,IAAI,OAAO,aAAa;AACnD,UAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,UAAI,YAAY,CAAC,OAAO,OAAO,SAAS,sBAAsB;AAC5D,cAAM,MAAM,IAAI;AAAA,MAClB,OAAO;AACL,aAAK;AAAA,MACP;AAAA,IACF,CAAC;AACD,IAAAA,IAAG,mBAAmB,MAAM;AAC1B,UAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,UAAI,OAAO,OAAO,SAAS,sBAAsB;AAC/C,aAAK;AACL;AAAA,MACF;AACA,kBAAY;AACZ,sBAAgB;AAChB,4BAAsB;AACtB,0BAAoB,WAAW,MAAM;AACnC,8BAAsB;AACtB,wBAAgB;AAChB,cAAM,IAAI;AAAA,MACZ,GAAG,GAAG;AAAA,IACR,CAAC;AACD,IAAAA,IAAG,YAAY,MAAM;AACnB,UAAI,OAAO,aAAa,CAAC,OAAO,SAAS,WAAW,CAAC,UAAW;AAChE,mBAAa,iBAAiB;AAC9B,mBAAa,OAAO;AACpB,UAAI,OAAO,OAAO,SAAS,sBAAsB;AAC/C,wBAAgB;AAChB,oBAAY;AACZ;AAAA,MACF;AACA,UAAI,iBAAiB,OAAO,OAAO,QAAS,QAAO;AACnD,sBAAgB;AAChB,kBAAY;AAAA,IACd,CAAC;AACD,IAAAA,IAAG,eAAe,MAAM;AACtB,UAAI,OAAO,aAAa,CAAC,OAAO,SAAS,QAAS;AAClD,qBAAe;AAAA,IACjB,CAAC;AACD,WAAO,OAAO,OAAO,UAAU;AAAA,MAC7B,OAAAE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;;;AC1SA,WAAS,MAAM,MAAM;AACnB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,sBAAsB;AAAA,QACtB,kBAAkB;AAAA,QAClB,uBAAuB;AAAA,QACvB,sBAAsB;AAAA,MACxB;AAAA,IACF,CAAC;AACD,QAAI,cAAc;AAClB,QAAI,gBAAgB;AACpB,WAAO,SAAS;AAAA,MACd,QAAQ;AAAA,IACV;AACA,aAAS,eAAe;AACtB,YAAM,eAAe,OAAO,OAAO;AACnC,UAAI,CAAC,gBAAgB,aAAa,UAAW;AAC7C,YAAM,eAAe,aAAa;AAClC,YAAM,eAAe,aAAa;AAClC,UAAI,gBAAgB,aAAa,UAAU,SAAS,OAAO,OAAO,OAAO,qBAAqB,EAAG;AACjG,UAAI,OAAO,iBAAiB,eAAe,iBAAiB,KAAM;AAClE,UAAI;AACJ,UAAI,aAAa,OAAO,MAAM;AAC5B,uBAAe,SAAS,aAAa,aAAa,aAAa,yBAAyB,GAAG,EAAE;AAAA,MAC/F,OAAO;AACL,uBAAe;AAAA,MACjB;AACA,UAAI,OAAO,OAAO,MAAM;AACtB,eAAO,YAAY,YAAY;AAAA,MACjC,OAAO;AACL,eAAO,QAAQ,YAAY;AAAA,MAC7B;AAAA,IACF;AACA,aAAS,OAAO;AACd,YAAM;AAAA,QACJ,QAAQ;AAAA,MACV,IAAI,OAAO;AACX,UAAI,YAAa,QAAO;AACxB,oBAAc;AACd,YAAM,cAAc,OAAO;AAC3B,UAAI,aAAa,kBAAkB,aAAa;AAC9C,eAAO,OAAO,SAAS,aAAa;AACpC,eAAO,OAAO,OAAO,OAAO,OAAO,gBAAgB;AAAA,UACjD,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,QACvB,CAAC;AACD,eAAO,OAAO,OAAO,OAAO,OAAO,QAAQ;AAAA,UACzC,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,QACvB,CAAC;AACD,eAAO,OAAO,OAAO,OAAO;AAAA,MAC9B,WAAWC,UAAS,aAAa,MAAM,GAAG;AACxC,cAAM,qBAAqB,OAAO,OAAO,CAAC,GAAG,aAAa,MAAM;AAChE,eAAO,OAAO,oBAAoB;AAAA,UAChC,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,QACvB,CAAC;AACD,eAAO,OAAO,SAAS,IAAI,YAAY,kBAAkB;AACzD,wBAAgB;AAAA,MAClB;AACA,aAAO,OAAO,OAAO,GAAG,UAAU,IAAI,OAAO,OAAO,OAAO,oBAAoB;AAC/E,aAAO,OAAO,OAAO,GAAG,OAAO,YAAY;AAC3C,aAAO;AAAA,IACT;AACA,aAASC,QAAO,SAAS;AACvB,YAAM,eAAe,OAAO,OAAO;AACnC,UAAI,CAAC,gBAAgB,aAAa,UAAW;AAC7C,YAAM,gBAAgB,aAAa,OAAO,kBAAkB,SAAS,aAAa,qBAAqB,IAAI,aAAa,OAAO;AAG/H,UAAI,mBAAmB;AACvB,YAAM,mBAAmB,OAAO,OAAO,OAAO;AAC9C,UAAI,OAAO,OAAO,gBAAgB,KAAK,CAAC,OAAO,OAAO,gBAAgB;AACpE,2BAAmB,OAAO,OAAO;AAAA,MACnC;AACA,UAAI,CAAC,OAAO,OAAO,OAAO,sBAAsB;AAC9C,2BAAmB;AAAA,MACrB;AACA,yBAAmB,KAAK,MAAM,gBAAgB;AAC9C,mBAAa,OAAO,QAAQ,aAAW,QAAQ,UAAU,OAAO,gBAAgB,CAAC;AACjF,UAAI,aAAa,OAAO,QAAQ,aAAa,OAAO,WAAW,aAAa,OAAO,QAAQ,SAAS;AAClG,iBAASC,KAAI,GAAGA,KAAI,kBAAkBA,MAAK,GAAG;AAC5C,0BAAgB,aAAa,UAAU,6BAA6B,OAAO,YAAYA,EAAC,IAAI,EAAE,QAAQ,aAAW;AAC/G,oBAAQ,UAAU,IAAI,gBAAgB;AAAA,UACxC,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,iBAASA,KAAI,GAAGA,KAAI,kBAAkBA,MAAK,GAAG;AAC5C,cAAI,aAAa,OAAO,OAAO,YAAYA,EAAC,GAAG;AAC7C,yBAAa,OAAO,OAAO,YAAYA,EAAC,EAAE,UAAU,IAAI,gBAAgB;AAAA,UAC1E;AAAA,QACF;AAAA,MACF;AACA,YAAM,mBAAmB,OAAO,OAAO,OAAO;AAC9C,YAAM,YAAY,oBAAoB,CAAC,aAAa,OAAO;AAC3D,UAAI,OAAO,cAAc,aAAa,aAAa,WAAW;AAC5D,cAAM,qBAAqB,aAAa;AACxC,YAAI;AACJ,YAAI;AACJ,YAAI,aAAa,OAAO,MAAM;AAC5B,gBAAM,iBAAiB,aAAa,OAAO,KAAK,aAAW,QAAQ,aAAa,yBAAyB,MAAM,GAAG,OAAO,SAAS,EAAE;AACpI,2BAAiB,aAAa,OAAO,QAAQ,cAAc;AAC3D,sBAAY,OAAO,cAAc,OAAO,gBAAgB,SAAS;AAAA,QACnE,OAAO;AACL,2BAAiB,OAAO;AACxB,sBAAY,iBAAiB,OAAO,gBAAgB,SAAS;AAAA,QAC/D;AACA,YAAI,WAAW;AACb,4BAAkB,cAAc,SAAS,mBAAmB,KAAK;AAAA,QACnE;AACA,YAAI,aAAa,wBAAwB,aAAa,qBAAqB,QAAQ,cAAc,IAAI,GAAG;AACtG,cAAI,aAAa,OAAO,gBAAgB;AACtC,gBAAI,iBAAiB,oBAAoB;AACvC,+BAAiB,iBAAiB,KAAK,MAAM,gBAAgB,CAAC,IAAI;AAAA,YACpE,OAAO;AACL,+BAAiB,iBAAiB,KAAK,MAAM,gBAAgB,CAAC,IAAI;AAAA,YACpE;AAAA,UACF,WAAW,iBAAiB,sBAAsB,aAAa,OAAO,mBAAmB,EAAG;AAC5F,uBAAa,QAAQ,gBAAgB,UAAU,IAAI,MAAS;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AACA,IAAAH,IAAG,cAAc,MAAM;AACrB,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,OAAO;AACX,UAAI,CAAC,UAAU,CAAC,OAAO,OAAQ;AAC/B,UAAI,OAAO,OAAO,WAAW,YAAY,OAAO,kBAAkB,aAAa;AAC7E,cAAMI,YAAW,YAAY;AAC7B,cAAM,0BAA0B,MAAM;AACpC,gBAAM,gBAAgB,OAAO,OAAO,WAAW,WAAWA,UAAS,cAAc,OAAO,MAAM,IAAI,OAAO;AACzG,cAAI,iBAAiB,cAAc,QAAQ;AACzC,mBAAO,SAAS,cAAc;AAC9B,iBAAK;AACL,YAAAF,QAAO,IAAI;AAAA,UACb,WAAW,eAAe;AACxB,kBAAM,YAAY,GAAG,OAAO,OAAO,YAAY;AAC/C,kBAAM,iBAAiB,CAAAG,OAAK;AAC1B,qBAAO,SAASA,GAAE,OAAO,CAAC;AAC1B,4BAAc,oBAAoB,WAAW,cAAc;AAC3D,mBAAK;AACL,cAAAH,QAAO,IAAI;AACX,qBAAO,OAAO,OAAO;AACrB,qBAAO,OAAO;AAAA,YAChB;AACA,0BAAc,iBAAiB,WAAW,cAAc;AAAA,UAC1D;AACA,iBAAO;AAAA,QACT;AACA,cAAM,yBAAyB,MAAM;AACnC,cAAI,OAAO,UAAW;AACtB,gBAAM,gBAAgB,wBAAwB;AAC9C,cAAI,CAAC,eAAe;AAClB,kCAAsB,sBAAsB;AAAA,UAC9C;AAAA,QACF;AACA,8BAAsB,sBAAsB;AAAA,MAC9C,OAAO;AACL,aAAK;AACL,QAAAA,QAAO,IAAI;AAAA,MACb;AAAA,IACF,CAAC;AACD,IAAAF,IAAG,4CAA4C,MAAM;AACnD,MAAAE,QAAO;AAAA,IACT,CAAC;AACD,IAAAF,IAAG,iBAAiB,CAAC,IAAIM,cAAa;AACpC,YAAM,eAAe,OAAO,OAAO;AACnC,UAAI,CAAC,gBAAgB,aAAa,UAAW;AAC7C,mBAAa,cAAcA,SAAQ;AAAA,IACrC,CAAC;AACD,IAAAN,IAAG,iBAAiB,MAAM;AACxB,YAAM,eAAe,OAAO,OAAO;AACnC,UAAI,CAAC,gBAAgB,aAAa,UAAW;AAC7C,UAAI,eAAe;AACjB,qBAAa,QAAQ;AAAA,MACvB;AAAA,IACF,CAAC;AACD,WAAO,OAAO,OAAO,QAAQ;AAAA,MAC3B;AAAA,MACA,QAAAE;AAAA,IACF,CAAC;AAAA,EACH;;;AC5LA,WAAS,SAAS,MAAM;AACtB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,UAAU;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,uBAAuB;AAAA,QACvB,QAAQ;AAAA,QACR,iBAAiB;AAAA,MACnB;AAAA,IACF,CAAC;AACD,aAASK,gBAAe;AACtB,UAAI,OAAO,OAAO,QAAS;AAC3B,YAAMC,aAAY,OAAO,aAAa;AACtC,aAAO,aAAaA,UAAS;AAC7B,aAAO,cAAc,CAAC;AACtB,aAAO,gBAAgB,WAAW,SAAS;AAC3C,aAAO,SAAS,WAAW;AAAA,QACzB,YAAY,OAAO,MAAM,OAAO,YAAY,CAAC,OAAO;AAAA,MACtD,CAAC;AAAA,IACH;AACA,aAASC,eAAc;AACrB,UAAI,OAAO,OAAO,QAAS;AAC3B,YAAM;AAAA,QACJ,iBAAiB;AAAA,QACjB;AAAA,MACF,IAAI;AAEJ,UAAI,KAAK,WAAW,WAAW,GAAG;AAChC,aAAK,WAAW,KAAK;AAAA,UACnB,UAAU,QAAQ,OAAO,aAAa,IAAI,WAAW,QAAQ;AAAA,UAC7D,MAAM,KAAK;AAAA,QACb,CAAC;AAAA,MACH;AACA,WAAK,WAAW,KAAK;AAAA,QACnB,UAAU,QAAQ,OAAO,aAAa,IAAI,aAAa,UAAU;AAAA,QACjE,MAAMC,KAAI;AAAA,MACZ,CAAC;AAAA,IACH;AACA,aAASC,YAAW,OAAO;AACzB,UAAI;AAAA,QACF;AAAA,MACF,IAAI;AACJ,UAAI,OAAO,OAAO,QAAS;AAC3B,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd;AAAA,QACA,iBAAiB;AAAA,MACnB,IAAI;AAEJ,YAAM,eAAeD,KAAI;AACzB,YAAM,WAAW,eAAe,KAAK;AACrC,UAAI,aAAa,CAAC,OAAO,aAAa,GAAG;AACvC,eAAO,QAAQ,OAAO,WAAW;AACjC;AAAA,MACF;AACA,UAAI,aAAa,CAAC,OAAO,aAAa,GAAG;AACvC,YAAI,OAAO,OAAO,SAAS,SAAS,QAAQ;AAC1C,iBAAO,QAAQ,SAAS,SAAS,CAAC;AAAA,QACpC,OAAO;AACL,iBAAO,QAAQ,OAAO,OAAO,SAAS,CAAC;AAAA,QACzC;AACA;AAAA,MACF;AACA,UAAI,OAAO,SAAS,UAAU;AAC5B,YAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,gBAAM,gBAAgB,KAAK,WAAW,IAAI;AAC1C,gBAAM,gBAAgB,KAAK,WAAW,IAAI;AAC1C,gBAAM,WAAW,cAAc,WAAW,cAAc;AACxD,gBAAM,OAAO,cAAc,OAAO,cAAc;AAChD,iBAAO,WAAW,WAAW;AAC7B,iBAAO,YAAY;AACnB,cAAI,KAAK,IAAI,OAAO,QAAQ,IAAI,OAAO,SAAS,iBAAiB;AAC/D,mBAAO,WAAW;AAAA,UACpB;AAGA,cAAI,OAAO,OAAOA,KAAI,IAAI,cAAc,OAAO,KAAK;AAClD,mBAAO,WAAW;AAAA,UACpB;AAAA,QACF,OAAO;AACL,iBAAO,WAAW;AAAA,QACpB;AACA,eAAO,YAAY,OAAO,SAAS;AACnC,aAAK,WAAW,SAAS;AACzB,YAAI,mBAAmB,MAAO,OAAO,SAAS;AAC9C,cAAM,mBAAmB,OAAO,WAAW;AAC3C,YAAI,cAAc,OAAO,YAAY;AACrC,YAAI,IAAK,eAAc,CAAC;AACxB,YAAI,WAAW;AACf,YAAI;AACJ,cAAM,eAAe,KAAK,IAAI,OAAO,QAAQ,IAAI,KAAK,OAAO,SAAS;AACtE,YAAI;AACJ,YAAI,cAAc,OAAO,aAAa,GAAG;AACvC,cAAI,OAAO,SAAS,gBAAgB;AAClC,gBAAI,cAAc,OAAO,aAAa,IAAI,CAAC,cAAc;AACvD,4BAAc,OAAO,aAAa,IAAI;AAAA,YACxC;AACA,kCAAsB,OAAO,aAAa;AAC1C,uBAAW;AACX,iBAAK,sBAAsB;AAAA,UAC7B,OAAO;AACL,0BAAc,OAAO,aAAa;AAAA,UACpC;AACA,cAAI,OAAO,QAAQ,OAAO,eAAgB,gBAAe;AAAA,QAC3D,WAAW,cAAc,OAAO,aAAa,GAAG;AAC9C,cAAI,OAAO,SAAS,gBAAgB;AAClC,gBAAI,cAAc,OAAO,aAAa,IAAI,cAAc;AACtD,4BAAc,OAAO,aAAa,IAAI;AAAA,YACxC;AACA,kCAAsB,OAAO,aAAa;AAC1C,uBAAW;AACX,iBAAK,sBAAsB;AAAA,UAC7B,OAAO;AACL,0BAAc,OAAO,aAAa;AAAA,UACpC;AACA,cAAI,OAAO,QAAQ,OAAO,eAAgB,gBAAe;AAAA,QAC3D,WAAW,OAAO,SAAS,QAAQ;AACjC,cAAI;AACJ,mBAASE,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK,GAAG;AAC3C,gBAAI,SAASA,EAAC,IAAI,CAAC,aAAa;AAC9B,0BAAYA;AACZ;AAAA,YACF;AAAA,UACF;AACA,cAAI,KAAK,IAAI,SAAS,SAAS,IAAI,WAAW,IAAI,KAAK,IAAI,SAAS,YAAY,CAAC,IAAI,WAAW,KAAK,OAAO,mBAAmB,QAAQ;AACrI,0BAAc,SAAS,SAAS;AAAA,UAClC,OAAO;AACL,0BAAc,SAAS,YAAY,CAAC;AAAA,UACtC;AACA,wBAAc,CAAC;AAAA,QACjB;AACA,YAAI,cAAc;AAChB,eAAK,iBAAiB,MAAM;AAC1B,mBAAO,QAAQ;AAAA,UACjB,CAAC;AAAA,QACH;AAEA,YAAI,OAAO,aAAa,GAAG;AACzB,cAAI,KAAK;AACP,+BAAmB,KAAK,KAAK,CAAC,cAAc,OAAO,aAAa,OAAO,QAAQ;AAAA,UACjF,OAAO;AACL,+BAAmB,KAAK,KAAK,cAAc,OAAO,aAAa,OAAO,QAAQ;AAAA,UAChF;AACA,cAAI,OAAO,SAAS,QAAQ;AAQ1B,kBAAM,eAAe,KAAK,KAAK,MAAM,CAAC,cAAc,eAAe,OAAO,SAAS;AACnF,kBAAM,mBAAmB,OAAO,gBAAgB,OAAO,WAAW;AAClE,gBAAI,eAAe,kBAAkB;AACnC,iCAAmB,OAAO;AAAA,YAC5B,WAAW,eAAe,IAAI,kBAAkB;AAC9C,iCAAmB,OAAO,QAAQ;AAAA,YACpC,OAAO;AACL,iCAAmB,OAAO,QAAQ;AAAA,YACpC;AAAA,UACF;AAAA,QACF,WAAW,OAAO,SAAS,QAAQ;AACjC,iBAAO,eAAe;AACtB;AAAA,QACF;AACA,YAAI,OAAO,SAAS,kBAAkB,UAAU;AAC9C,iBAAO,eAAe,mBAAmB;AACzC,iBAAO,cAAc,gBAAgB;AACrC,iBAAO,aAAa,WAAW;AAC/B,iBAAO,gBAAgB,MAAM,OAAO,cAAc;AAClD,iBAAO,YAAY;AACnB,+BAAqB,WAAW,MAAM;AACpC,gBAAI,CAAC,UAAU,OAAO,aAAa,CAAC,KAAK,oBAAqB;AAC9D,iBAAK,gBAAgB;AACrB,mBAAO,cAAc,OAAO,KAAK;AACjC,uBAAW,MAAM;AACf,qBAAO,aAAa,mBAAmB;AACvC,mCAAqB,WAAW,MAAM;AACpC,oBAAI,CAAC,UAAU,OAAO,UAAW;AACjC,uBAAO,cAAc;AAAA,cACvB,CAAC;AAAA,YACH,GAAG,CAAC;AAAA,UACN,CAAC;AAAA,QACH,WAAW,OAAO,UAAU;AAC1B,eAAK,4BAA4B;AACjC,iBAAO,eAAe,WAAW;AACjC,iBAAO,cAAc,gBAAgB;AACrC,iBAAO,aAAa,WAAW;AAC/B,iBAAO,gBAAgB,MAAM,OAAO,cAAc;AAClD,cAAI,CAAC,OAAO,WAAW;AACrB,mBAAO,YAAY;AACnB,iCAAqB,WAAW,MAAM;AACpC,kBAAI,CAAC,UAAU,OAAO,UAAW;AACjC,qBAAO,cAAc;AAAA,YACvB,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AACL,iBAAO,eAAe,WAAW;AAAA,QACnC;AACA,eAAO,kBAAkB;AACzB,eAAO,oBAAoB;AAAA,MAC7B,WAAW,OAAO,SAAS,QAAQ;AACjC,eAAO,eAAe;AACtB;AAAA,MACF,WAAW,OAAO,UAAU;AAC1B,aAAK,4BAA4B;AAAA,MACnC;AACA,UAAI,CAAC,OAAO,SAAS,YAAY,YAAY,OAAO,cAAc;AAChE,aAAK,wBAAwB;AAC7B,eAAO,eAAe;AACtB,eAAO,kBAAkB;AACzB,eAAO,oBAAoB;AAAA,MAC7B;AAAA,IACF;AACA,WAAO,OAAO,QAAQ;AAAA,MACpB,UAAU;AAAA,QACR,cAAAL;AAAA,QACA,aAAAE;AAAA,QACA,YAAAE;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;;;AC1OA,WAAS,KAAK,MAAM;AAClB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AACD,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,kBAAkB,MAAM;AAC5B,UAAI,eAAe,OAAO,OAAO;AACjC,UAAI,OAAO,iBAAiB,YAAY,aAAa,QAAQ,GAAG,KAAK,GAAG;AACtE,uBAAe,WAAW,aAAa,QAAQ,KAAK,EAAE,CAAC,IAAI,MAAM,OAAO;AAAA,MAC1E,WAAW,OAAO,iBAAiB,UAAU;AAC3C,uBAAe,WAAW,YAAY;AAAA,MACxC;AACA,aAAO;AAAA,IACT;AACA,UAAM,aAAa,YAAU;AAC3B,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,OAAO;AACX,YAAM;AAAA,QACJ;AAAA,QACA,MAAAC;AAAA,MACF,IAAI,OAAO,OAAO;AAClB,YAAM,eAAe,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,OAAO,SAAS,OAAO;AAC7G,uBAAiB,KAAK,MAAM,eAAe,IAAI;AAC/C,UAAI,KAAK,MAAM,eAAe,IAAI,MAAM,eAAe,MAAM;AAC3D,iCAAyB;AAAA,MAC3B,OAAO;AACL,iCAAyB,KAAK,KAAK,eAAe,IAAI,IAAI;AAAA,MAC5D;AACA,UAAI,kBAAkB,UAAUA,UAAS,OAAO;AAC9C,iCAAyB,KAAK,IAAI,wBAAwB,gBAAgB,IAAI;AAAA,MAChF;AACA,qBAAe,yBAAyB;AAAA,IAC1C;AACA,UAAM,cAAc,MAAM;AACxB,UAAI,OAAO,QAAQ;AACjB,eAAO,OAAO,QAAQ,CAAAC,WAAS;AAC7B,cAAIA,OAAM,oBAAoB;AAC5B,YAAAA,OAAM,MAAM,SAAS;AACrB,YAAAA,OAAM,MAAM,OAAO,kBAAkB,YAAY,CAAC,IAAI;AAAA,UACxD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,UAAM,cAAc,CAACC,IAAGD,QAAO,WAAW;AACxC,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,OAAO;AACX,YAAM,eAAe,gBAAgB;AACrC,YAAM;AAAA,QACJ;AAAA,QACA,MAAAD;AAAA,MACF,IAAI,OAAO,OAAO;AAClB,YAAM,eAAe,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,OAAO,SAAS,OAAO;AAE7G,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAIA,UAAS,SAAS,iBAAiB,GAAG;AACxC,cAAM,aAAa,KAAK,MAAME,MAAK,iBAAiB,KAAK;AACzD,cAAM,oBAAoBA,KAAI,OAAO,iBAAiB;AACtD,cAAM,iBAAiB,eAAe,IAAI,iBAAiB,KAAK,IAAI,KAAK,MAAM,eAAe,aAAa,OAAO,kBAAkB,IAAI,GAAG,cAAc;AACzJ,cAAM,KAAK,MAAM,oBAAoB,cAAc;AACnD,iBAAS,oBAAoB,MAAM,iBAAiB,aAAa;AACjE,6BAAqB,SAAS,MAAM,yBAAyB;AAC7D,QAAAD,OAAM,MAAM,QAAQ;AAAA,MACtB,WAAWD,UAAS,UAAU;AAC5B,iBAAS,KAAK,MAAME,KAAI,IAAI;AAC5B,cAAMA,KAAI,SAAS;AACnB,YAAI,SAAS,kBAAkB,WAAW,kBAAkB,QAAQ,OAAO,GAAG;AAC5E,iBAAO;AACP,cAAI,OAAO,MAAM;AACf,kBAAM;AACN,sBAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF,OAAO;AACL,cAAM,KAAK,MAAMA,KAAI,YAAY;AACjC,iBAASA,KAAI,MAAM;AAAA,MACrB;AACA,MAAAD,OAAM,MAAM;AACZ,MAAAA,OAAM,SAAS;AACf,MAAAA,OAAM,MAAM,SAAS,iBAAiB,OAAO,KAAK,YAAY,SAAS,IAAI;AAC3E,MAAAA,OAAM,MAAM,OAAO,kBAAkB,YAAY,CAAC,IAAI,QAAQ,IAAI,gBAAgB,GAAG,YAAY,OAAO;AACxG,MAAAA,OAAM,qBAAqB;AAAA,IAC7B;AACA,UAAM,oBAAoB,CAAC,WAAW,aAAa;AACjD,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,OAAO;AACX,YAAM,eAAe,gBAAgB;AACrC,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,OAAO,OAAO;AAClB,aAAO,eAAe,YAAY,gBAAgB;AAClD,aAAO,cAAc,KAAK,KAAK,OAAO,cAAc,IAAI,IAAI;AAC5D,UAAI,CAAC,OAAO,OAAO,SAAS;AAC1B,eAAO,UAAU,MAAM,OAAO,kBAAkB,OAAO,CAAC,IAAI,GAAG,OAAO,cAAc,YAAY;AAAA,MAClG;AACA,UAAI,gBAAgB;AAClB,cAAM,gBAAgB,CAAC;AACvB,iBAASC,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK,GAAG;AAC3C,cAAI,iBAAiB,SAASA,EAAC;AAC/B,cAAI,aAAc,kBAAiB,KAAK,MAAM,cAAc;AAC5D,cAAI,SAASA,EAAC,IAAI,OAAO,cAAc,SAAS,CAAC,EAAG,eAAc,KAAK,cAAc;AAAA,QACvF;AACA,iBAAS,OAAO,GAAG,SAAS,MAAM;AAClC,iBAAS,KAAK,GAAG,aAAa;AAAA,MAChC;AAAA,IACF;AACA,UAAM,SAAS,MAAM;AACnB,oBAAc,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK,OAAO;AAAA,IAChE;AACA,UAAM,WAAW,MAAM;AACrB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,aAAa,OAAO,QAAQ,OAAO,KAAK,OAAO;AACrD,UAAI,eAAe,CAAC,YAAY;AAC9B,WAAG,UAAU,OAAO,GAAG,OAAO,sBAAsB,QAAQ,GAAG,OAAO,sBAAsB,aAAa;AACzG,yBAAiB;AACjB,eAAO,qBAAqB;AAAA,MAC9B,WAAW,CAAC,eAAe,YAAY;AACrC,WAAG,UAAU,IAAI,GAAG,OAAO,sBAAsB,MAAM;AACvD,YAAI,OAAO,KAAK,SAAS,UAAU;AACjC,aAAG,UAAU,IAAI,GAAG,OAAO,sBAAsB,aAAa;AAAA,QAChE;AACA,eAAO,qBAAqB;AAAA,MAC9B;AACA,oBAAc;AAAA,IAChB;AACA,IAAAH,IAAG,QAAQ,MAAM;AACjB,IAAAA,IAAG,UAAU,QAAQ;AACrB,WAAO,OAAO;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;ACxJA,WAAS,YAAY,QAAQ;AAC3B,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,MAAM;AACf,aAAO,YAAY;AAAA,IACrB;AACA,UAAM,gBAAgB,aAAW;AAC/B,UAAI,OAAO,YAAY,UAAU;AAC/B,cAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,gBAAQ,YAAY;AACpB,iBAAS,OAAO,QAAQ,SAAS,CAAC,CAAC;AACnC,gBAAQ,YAAY;AAAA,MACtB,OAAO;AACL,iBAAS,OAAO,OAAO;AAAA,MACzB;AAAA,IACF;AACA,QAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AACpD,eAASI,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,YAAI,OAAOA,EAAC,EAAG,eAAc,OAAOA,EAAC,CAAC;AAAA,MACxC;AAAA,IACF,OAAO;AACL,oBAAc,MAAM;AAAA,IACtB;AACA,WAAO,aAAa;AACpB,QAAI,OAAO,MAAM;AACf,aAAO,WAAW;AAAA,IACpB;AACA,QAAI,CAAC,OAAO,YAAY,OAAO,WAAW;AACxC,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,aAAa,QAAQ;AAC5B,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,OAAO,MAAM;AACf,aAAO,YAAY;AAAA,IACrB;AACA,QAAI,iBAAiB,cAAc;AACnC,UAAM,iBAAiB,aAAW;AAChC,UAAI,OAAO,YAAY,UAAU;AAC/B,cAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,gBAAQ,YAAY;AACpB,iBAAS,QAAQ,QAAQ,SAAS,CAAC,CAAC;AACpC,gBAAQ,YAAY;AAAA,MACtB,OAAO;AACL,iBAAS,QAAQ,OAAO;AAAA,MAC1B;AAAA,IACF;AACA,QAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AACpD,eAASA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,YAAI,OAAOA,EAAC,EAAG,gBAAe,OAAOA,EAAC,CAAC;AAAA,MACzC;AACA,uBAAiB,cAAc,OAAO;AAAA,IACxC,OAAO;AACL,qBAAe,MAAM;AAAA,IACvB;AACA,WAAO,aAAa;AACpB,QAAI,OAAO,MAAM;AACf,aAAO,WAAW;AAAA,IACpB;AACA,QAAI,CAAC,OAAO,YAAY,OAAO,WAAW;AACxC,aAAO,OAAO;AAAA,IAChB;AACA,WAAO,QAAQ,gBAAgB,GAAG,KAAK;AAAA,EACzC;AAEA,WAAS,SAASC,QAAO,QAAQ;AAC/B,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,oBAAoB;AACxB,QAAI,OAAO,MAAM;AACf,2BAAqB,OAAO;AAC5B,aAAO,YAAY;AACnB,aAAO,aAAa;AAAA,IACtB;AACA,UAAM,aAAa,OAAO,OAAO;AACjC,QAAIA,UAAS,GAAG;AACd,aAAO,aAAa,MAAM;AAC1B;AAAA,IACF;AACA,QAAIA,UAAS,YAAY;AACvB,aAAO,YAAY,MAAM;AACzB;AAAA,IACF;AACA,QAAI,iBAAiB,oBAAoBA,SAAQ,oBAAoB,IAAI;AACzE,UAAM,eAAe,CAAC;AACtB,aAASD,KAAI,aAAa,GAAGA,MAAKC,QAAOD,MAAK,GAAG;AAC/C,YAAM,eAAe,OAAO,OAAOA,EAAC;AACpC,mBAAa,OAAO;AACpB,mBAAa,QAAQ,YAAY;AAAA,IACnC;AACA,QAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AACpD,eAASA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,YAAI,OAAOA,EAAC,EAAG,UAAS,OAAO,OAAOA,EAAC,CAAC;AAAA,MAC1C;AACA,uBAAiB,oBAAoBC,SAAQ,oBAAoB,OAAO,SAAS;AAAA,IACnF,OAAO;AACL,eAAS,OAAO,MAAM;AAAA,IACxB;AACA,aAASD,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK,GAAG;AAC/C,eAAS,OAAO,aAAaA,EAAC,CAAC;AAAA,IACjC;AACA,WAAO,aAAa;AACpB,QAAI,OAAO,MAAM;AACf,aAAO,WAAW;AAAA,IACpB;AACA,QAAI,CAAC,OAAO,YAAY,OAAO,WAAW;AACxC,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,OAAO,MAAM;AACf,aAAO,QAAQ,iBAAiB,OAAO,cAAc,GAAG,KAAK;AAAA,IAC/D,OAAO;AACL,aAAO,QAAQ,gBAAgB,GAAG,KAAK;AAAA,IACzC;AAAA,EACF;AAEA,WAAS,YAAY,eAAe;AAClC,UAAM,SAAS;AACf,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,oBAAoB;AACxB,QAAI,OAAO,MAAM;AACf,2BAAqB,OAAO;AAC5B,aAAO,YAAY;AAAA,IACrB;AACA,QAAI,iBAAiB;AACrB,QAAI;AACJ,QAAI,OAAO,kBAAkB,YAAY,YAAY,eAAe;AAClE,eAASA,KAAI,GAAGA,KAAI,cAAc,QAAQA,MAAK,GAAG;AAChD,wBAAgB,cAAcA,EAAC;AAC/B,YAAI,OAAO,OAAO,aAAa,EAAG,QAAO,OAAO,aAAa,EAAE,OAAO;AACtE,YAAI,gBAAgB,eAAgB,mBAAkB;AAAA,MACxD;AACA,uBAAiB,KAAK,IAAI,gBAAgB,CAAC;AAAA,IAC7C,OAAO;AACL,sBAAgB;AAChB,UAAI,OAAO,OAAO,aAAa,EAAG,QAAO,OAAO,aAAa,EAAE,OAAO;AACtE,UAAI,gBAAgB,eAAgB,mBAAkB;AACtD,uBAAiB,KAAK,IAAI,gBAAgB,CAAC;AAAA,IAC7C;AACA,WAAO,aAAa;AACpB,QAAI,OAAO,MAAM;AACf,aAAO,WAAW;AAAA,IACpB;AACA,QAAI,CAAC,OAAO,YAAY,OAAO,WAAW;AACxC,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,OAAO,MAAM;AACf,aAAO,QAAQ,iBAAiB,OAAO,cAAc,GAAG,KAAK;AAAA,IAC/D,OAAO;AACL,aAAO,QAAQ,gBAAgB,GAAG,KAAK;AAAA,IACzC;AAAA,EACF;AAEA,WAAS,kBAAkB;AACzB,UAAM,SAAS;AACf,UAAM,gBAAgB,CAAC;AACvB,aAASA,KAAI,GAAGA,KAAI,OAAO,OAAO,QAAQA,MAAK,GAAG;AAChD,oBAAc,KAAKA,EAAC;AAAA,IACtB;AACA,WAAO,YAAY,aAAa;AAAA,EAClC;AAEA,WAAS,aAAa,MAAM;AAC1B,QAAI;AAAA,MACF;AAAA,IACF,IAAI;AACJ,WAAO,OAAO,QAAQ;AAAA,MACpB,aAAa,YAAY,KAAK,MAAM;AAAA,MACpC,cAAc,aAAa,KAAK,MAAM;AAAA,MACtC,UAAU,SAAS,KAAK,MAAM;AAAA,MAC9B,aAAa,YAAY,KAAK,MAAM;AAAA,MACpC,iBAAiB,gBAAgB,KAAK,MAAM;AAAA,IAC9C,CAAC;AAAA,EACH;;;AC5LA,WAAS,WAAW,QAAQ;AAC1B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,MACA,cAAAC;AAAA,MACA,eAAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,IAAAF,IAAG,cAAc,MAAM;AACrB,UAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,aAAO,WAAW,KAAK,GAAG,OAAO,OAAO,sBAAsB,GAAG,MAAM,EAAE;AACzE,UAAI,eAAe,YAAY,GAAG;AAChC,eAAO,WAAW,KAAK,GAAG,OAAO,OAAO,sBAAsB,IAAI;AAAA,MACpE;AACA,YAAM,wBAAwB,kBAAkB,gBAAgB,IAAI,CAAC;AACrE,aAAO,OAAO,OAAO,QAAQ,qBAAqB;AAClD,aAAO,OAAO,OAAO,gBAAgB,qBAAqB;AAAA,IAC5D,CAAC;AACD,IAAAA,IAAG,gBAAgB,MAAM;AACvB,UAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,MAAAC,cAAa;AAAA,IACf,CAAC;AACD,IAAAD,IAAG,iBAAiB,CAAC,IAAIG,cAAa;AACpC,UAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,MAAAD,eAAcC,SAAQ;AAAA,IACxB,CAAC;AACD,IAAAH,IAAG,iBAAiB,MAAM;AACxB,UAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,UAAI,iBAAiB;AACnB,YAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,aAAc;AAEzD,eAAO,OAAO,QAAQ,aAAW;AAC/B,kBAAQ,iBAAiB,8GAA8G,EAAE,QAAQ,cAAY,SAAS,OAAO,CAAC;AAAA,QAChL,CAAC;AAED,wBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AACD,QAAI;AACJ,IAAAA,IAAG,iBAAiB,MAAM;AACxB,UAAI,OAAO,OAAO,WAAW,OAAQ;AACrC,UAAI,CAAC,OAAO,OAAO,QAAQ;AACzB,iCAAyB;AAAA,MAC3B;AACA,4BAAsB,MAAM;AAC1B,YAAI,0BAA0B,OAAO,UAAU,OAAO,OAAO,QAAQ;AACnE,UAAAC,cAAa;AACb,mCAAyB;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;;;ACrDA,WAAS,aAAa,cAAc,SAAS;AAC3C,UAAM,cAAc,oBAAoB,OAAO;AAC/C,QAAI,gBAAgB,SAAS;AAC3B,kBAAY,MAAM,qBAAqB;AACvC,kBAAY,MAAM,6BAA6B,IAAI;AAAA,IACrD;AACA,WAAO;AAAA,EACT;;;ACPA,WAAS,2BAA2B,MAAM;AACxC,QAAI;AAAA,MACF;AAAA,MACA,UAAAG;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM;AAAA,MACJ;AAAA,IACF,IAAI;AACJ,UAAM,WAAW,QAAM;AACrB,UAAI,CAAC,GAAG,eAAe;AAErB,cAAMC,SAAQ,OAAO,OAAO,KAAK,aAAW,QAAQ,cAAc,QAAQ,eAAe,GAAG,UAAU;AACtG,eAAOA;AAAA,MACT;AACA,aAAO,GAAG;AAAA,IACZ;AACA,QAAI,OAAO,OAAO,oBAAoBD,cAAa,GAAG;AACpD,UAAI,iBAAiB;AACrB,UAAI;AACJ,UAAI,WAAW;AACb,8BAAsB;AAAA,MACxB,OAAO;AACL,8BAAsB,kBAAkB,OAAO,iBAAe;AAC5D,gBAAM,KAAK,YAAY,UAAU,SAAS,wBAAwB,IAAI,SAAS,WAAW,IAAI;AAC9F,iBAAO,OAAO,cAAc,EAAE,MAAM;AAAA,QACtC,CAAC;AAAA,MACH;AACA,0BAAoB,QAAQ,QAAM;AAChC,6BAAqB,IAAI,MAAM;AAC7B,cAAI,eAAgB;AACpB,cAAI,CAAC,UAAU,OAAO,UAAW;AACjC,2BAAiB;AACjB,iBAAO,YAAY;AACnB,gBAAM,MAAM,IAAI,OAAO,YAAY,iBAAiB;AAAA,YAClD,SAAS;AAAA,YACT,YAAY;AAAA,UACd,CAAC;AACD,iBAAO,UAAU,cAAc,GAAG;AAAA,QACpC,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;;;ACxCA,WAAS,WAAW,MAAM;AACxB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,YAAY;AAAA,QACV,WAAW;AAAA,MACb;AAAA,IACF,CAAC;AACD,UAAMC,gBAAe,MAAM;AACzB,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,YAAM,SAAS,OAAO,OAAO;AAC7B,eAASC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,cAAM,UAAU,OAAO,OAAOA,EAAC;AAC/B,cAAM,SAAS,QAAQ;AACvB,YAAI,KAAK,CAAC;AACV,YAAI,CAAC,OAAO,OAAO,iBAAkB,OAAM,OAAO;AAClD,YAAI,KAAK;AACT,YAAI,CAAC,OAAO,aAAa,GAAG;AAC1B,eAAK;AACL,eAAK;AAAA,QACP;AACA,cAAM,eAAe,OAAO,OAAO,WAAW,YAAY,KAAK,IAAI,IAAI,KAAK,IAAI,QAAQ,QAAQ,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,EAAE,GAAG,CAAC;AACtJ,cAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,iBAAS,MAAM,UAAU;AACzB,iBAAS,MAAM,YAAY,eAAe,EAAE,OAAO,EAAE;AAAA,MACvD;AAAA,IACF;AACA,UAAMC,iBAAgB,CAAAC,cAAY;AAChC,YAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,wBAAkB,QAAQ,QAAM;AAC9B,WAAG,MAAM,qBAAqB,GAAGA,SAAQ;AAAA,MAC3C,CAAC;AACD,iCAA2B;AAAA,QACzB;AAAA,QACA,UAAAA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AACA,eAAW;AAAA,MACT,QAAQ;AAAA,MACR;AAAA,MACA,IAAAJ;AAAA,MACA,cAAAC;AAAA,MACA,eAAAE;AAAA,MACA,iBAAiB,OAAO;AAAA,QACtB,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,cAAc;AAAA,QACd,kBAAkB,CAAC,OAAO,OAAO;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACH;;;AC5DA,WAAS,WAAW,MAAM;AACxB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,YAAY;AAAA,QACV,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,aAAa;AAAA,MACf;AAAA,IACF,CAAC;AACD,UAAM,qBAAqB,CAAC,SAAS,UAAU,iBAAiB;AAC9D,UAAI,eAAe,eAAe,QAAQ,cAAc,2BAA2B,IAAI,QAAQ,cAAc,0BAA0B;AACvI,UAAI,cAAc,eAAe,QAAQ,cAAc,4BAA4B,IAAI,QAAQ,cAAc,6BAA6B;AAC1I,UAAI,CAAC,cAAc;AACjB,uBAAe,cAAc,OAAO,gDAAgD,eAAe,SAAS,KAAK,GAAG,MAAM,GAAG,CAAC;AAC9H,gBAAQ,OAAO,YAAY;AAAA,MAC7B;AACA,UAAI,CAAC,aAAa;AAChB,sBAAc,cAAc,OAAO,gDAAgD,eAAe,UAAU,QAAQ,GAAG,MAAM,GAAG,CAAC;AACjI,gBAAQ,OAAO,WAAW;AAAA,MAC5B;AACA,UAAI,aAAc,cAAa,MAAM,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;AACpE,UAAI,YAAa,aAAY,MAAM,UAAU,KAAK,IAAI,UAAU,CAAC;AAAA,IACnE;AACA,UAAM,kBAAkB,MAAM;AAE5B,YAAM,eAAe,OAAO,aAAa;AACzC,aAAO,OAAO,QAAQ,aAAW;AAC/B,cAAM,WAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,GAAG,EAAE;AAC3D,2BAAmB,SAAS,UAAU,YAAY;AAAA,MACpD,CAAC;AAAA,IACH;AACA,UAAMC,gBAAe,MAAM;AACzB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,MAAM;AAAA,QACN,SAAAC;AAAA,MACF,IAAI;AACJ,YAAMC,KAAI,aAAa,MAAM;AAC7B,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,eAAe,OAAO,aAAa;AACzC,YAAM,YAAY,OAAO,WAAW,OAAO,OAAO,QAAQ;AAC1D,UAAI,gBAAgB;AACpB,UAAI;AACJ,UAAI,OAAO,QAAQ;AACjB,YAAI,cAAc;AAChB,yBAAe,OAAO,UAAU,cAAc,qBAAqB;AACnE,cAAI,CAAC,cAAc;AACjB,2BAAe,cAAc,OAAO,oBAAoB;AACxD,mBAAO,UAAU,OAAO,YAAY;AAAA,UACtC;AACA,uBAAa,MAAM,SAAS,GAAG,WAAW;AAAA,QAC5C,OAAO;AACL,yBAAe,GAAG,cAAc,qBAAqB;AACrD,cAAI,CAAC,cAAc;AACjB,2BAAe,cAAc,OAAO,oBAAoB;AACxD,eAAG,OAAO,YAAY;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AACA,eAASC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,cAAM,UAAU,OAAOA,EAAC;AACxB,YAAI,aAAaA;AACjB,YAAI,WAAW;AACb,uBAAa,SAAS,QAAQ,aAAa,yBAAyB,GAAG,EAAE;AAAA,QAC3E;AACA,YAAI,aAAa,aAAa;AAC9B,YAAIC,SAAQ,KAAK,MAAM,aAAa,GAAG;AACvC,YAAI,KAAK;AACP,uBAAa,CAAC;AACd,UAAAA,SAAQ,KAAK,MAAM,CAAC,aAAa,GAAG;AAAA,QACtC;AACA,cAAM,WAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,GAAG,EAAE;AAC3D,YAAI,KAAK;AACT,YAAI,KAAK;AACT,YAAI,KAAK;AACT,YAAI,aAAa,MAAM,GAAG;AACxB,eAAK,CAACA,SAAQ,IAAI;AAClB,eAAK;AAAA,QACP,YAAY,aAAa,KAAK,MAAM,GAAG;AACrC,eAAK;AACL,eAAK,CAACA,SAAQ,IAAI;AAAA,QACpB,YAAY,aAAa,KAAK,MAAM,GAAG;AACrC,eAAK,aAAaA,SAAQ,IAAI;AAC9B,eAAK;AAAA,QACP,YAAY,aAAa,KAAK,MAAM,GAAG;AACrC,eAAK,CAAC;AACN,eAAK,IAAI,aAAa,aAAa,IAAIA;AAAA,QACzC;AACA,YAAI,KAAK;AACP,eAAK,CAAC;AAAA,QACR;AACA,YAAI,CAAC,cAAc;AACjB,eAAK;AACL,eAAK;AAAA,QACP;AACA,cAAM,YAAY,WAAWF,GAAE,eAAe,IAAI,CAAC,UAAU,CAAC,gBAAgBA,GAAE,eAAe,aAAa,CAAC,CAAC,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE;AACtJ,YAAI,YAAY,KAAK,WAAW,IAAI;AAClC,0BAAgB,aAAa,KAAK,WAAW;AAC7C,cAAI,IAAK,iBAAgB,CAAC,aAAa,KAAK,WAAW;AAAA,QACzD;AACA,gBAAQ,MAAM,YAAY;AAC1B,YAAI,OAAO,cAAc;AACvB,6BAAmB,SAAS,UAAU,YAAY;AAAA,QACpD;AAAA,MACF;AACA,gBAAU,MAAM,kBAAkB,YAAY,aAAa,CAAC;AAC5D,gBAAU,MAAM,0BAA0B,IAAI,YAAY,aAAa,CAAC;AACxE,UAAI,OAAO,QAAQ;AACjB,YAAI,cAAc;AAChB,uBAAa,MAAM,YAAY,oBAAoB,cAAc,IAAI,OAAO,YAAY,OAAO,CAAC,cAAc,CAAC,6CAA6C,OAAO,WAAW;AAAA,QAChL,OAAO;AACL,gBAAM,cAAc,KAAK,IAAI,aAAa,IAAI,KAAK,MAAM,KAAK,IAAI,aAAa,IAAI,EAAE,IAAI;AACzF,gBAAM,aAAa,OAAO,KAAK,IAAI,cAAc,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,KAAK,GAAG,IAAI;AACtH,gBAAM,SAAS,OAAO;AACtB,gBAAM,SAAS,OAAO,cAAc;AACpC,gBAAM,SAAS,OAAO;AACtB,uBAAa,MAAM,YAAY,WAAW,MAAM,QAAQ,MAAM,sBAAsB,eAAe,IAAI,MAAM,OAAO,CAAC,eAAe,IAAI,MAAM;AAAA,QAChJ;AAAA,MACF;AACA,YAAM,WAAWD,SAAQ,YAAYA,SAAQ,cAAcA,SAAQ,qBAAqB,CAAC,aAAa,IAAI;AAC1G,gBAAU,MAAM,YAAY,qBAAqB,OAAO,eAAeC,GAAE,OAAO,aAAa,IAAI,IAAI,aAAa,CAAC,gBAAgBA,GAAE,OAAO,aAAa,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChL,gBAAU,MAAM,YAAY,6BAA6B,GAAG,OAAO,IAAI;AAAA,IACzE;AACA,UAAMG,iBAAgB,CAAAC,cAAY;AAChC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,aAAO,QAAQ,aAAW;AACxB,gBAAQ,MAAM,qBAAqB,GAAGA,SAAQ;AAC9C,gBAAQ,iBAAiB,8GAA8G,EAAE,QAAQ,WAAS;AACxJ,gBAAM,MAAM,qBAAqB,GAAGA,SAAQ;AAAA,QAC9C,CAAC;AAAA,MACH,CAAC;AACD,UAAI,OAAO,OAAO,WAAW,UAAU,CAAC,OAAO,aAAa,GAAG;AAC7D,cAAM,WAAW,GAAG,cAAc,qBAAqB;AACvD,YAAI,SAAU,UAAS,MAAM,qBAAqB,GAAGA,SAAQ;AAAA,MAC/D;AAAA,IACF;AACA,eAAW;AAAA,MACT,QAAQ;AAAA,MACR;AAAA,MACA,IAAAP;AAAA,MACA,cAAAC;AAAA,MACA,eAAAK;AAAA,MACA;AAAA,MACA,iBAAiB,MAAM,OAAO,OAAO;AAAA,MACrC,aAAa,MAAM;AAAA,MACnB,iBAAiB,OAAO;AAAA,QACtB,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,iBAAiB;AAAA,QACjB,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,MACpB;AAAA,IACF,CAAC;AAAA,EACH;;;ACzKA,WAAS,aAAa,QAAQ,SAAS,MAAM;AAC3C,UAAM,cAAc,sBAAsB,OAAO,IAAI,IAAI,KAAK,EAAE,GAAG,SAAS,wBAAwB,MAAM,KAAK,EAAE;AACjH,UAAM,kBAAkB,oBAAoB,OAAO;AACnD,QAAI,WAAW,gBAAgB,cAAc,IAAI,YAAY,MAAM,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE;AACnF,QAAI,CAAC,UAAU;AACb,iBAAW,cAAc,OAAO,YAAY,MAAM,GAAG,CAAC;AACtD,sBAAgB,OAAO,QAAQ;AAAA,IACjC;AACA,WAAO;AAAA,EACT;;;ACLA,WAAS,WAAW,MAAM;AACxB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,YAAY;AAAA,QACV,cAAc;AAAA,QACd,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AACD,UAAM,qBAAqB,CAAC,SAAS,aAAa;AAChD,UAAI,eAAe,OAAO,aAAa,IAAI,QAAQ,cAAc,2BAA2B,IAAI,QAAQ,cAAc,0BAA0B;AAChJ,UAAI,cAAc,OAAO,aAAa,IAAI,QAAQ,cAAc,4BAA4B,IAAI,QAAQ,cAAc,6BAA6B;AACnJ,UAAI,CAAC,cAAc;AACjB,uBAAe,aAAa,QAAQ,SAAS,OAAO,aAAa,IAAI,SAAS,KAAK;AAAA,MACrF;AACA,UAAI,CAAC,aAAa;AAChB,sBAAc,aAAa,QAAQ,SAAS,OAAO,aAAa,IAAI,UAAU,QAAQ;AAAA,MACxF;AACA,UAAI,aAAc,cAAa,MAAM,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;AACpE,UAAI,YAAa,aAAY,MAAM,UAAU,KAAK,IAAI,UAAU,CAAC;AAAA,IACnE;AACA,UAAM,kBAAkB,MAAM;AAE5B,aAAO,OAAO;AACd,aAAO,OAAO,QAAQ,aAAW;AAC/B,YAAI,WAAW,QAAQ;AACvB,YAAI,OAAO,OAAO,WAAW,eAAe;AAC1C,qBAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,GAAG,EAAE;AAAA,QACvD;AACA,2BAAmB,SAAS,QAAQ;AAAA,MACtC,CAAC;AAAA,IACH;AACA,UAAMC,gBAAe,MAAM;AACzB,YAAM;AAAA,QACJ;AAAA,QACA,cAAc;AAAA,MAChB,IAAI;AACJ,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,YAAY,aAAa,MAAM;AACrC,eAASC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,cAAM,UAAU,OAAOA,EAAC;AACxB,YAAI,WAAW,QAAQ;AACvB,YAAI,OAAO,OAAO,WAAW,eAAe;AAC1C,qBAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,GAAG,EAAE;AAAA,QACvD;AACA,cAAM,SAAS,QAAQ;AACvB,cAAMC,UAAS,OAAO;AACtB,YAAI,UAAUA;AACd,YAAI,UAAU;AACd,YAAI,KAAK,OAAO,OAAO,UAAU,CAAC,SAAS,OAAO,YAAY,CAAC;AAC/D,YAAI,KAAK;AACT,YAAI,CAAC,OAAO,aAAa,GAAG;AAC1B,eAAK;AACL,eAAK;AACL,oBAAU,CAAC;AACX,oBAAU;AAAA,QACZ,WAAW,KAAK;AACd,oBAAU,CAAC;AAAA,QACb;AACA,gBAAQ,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC,IAAI,OAAO;AAChE,YAAI,OAAO,cAAc;AACvB,6BAAmB,SAAS,QAAQ;AAAA,QACtC;AACA,cAAM,YAAY,eAAe,EAAE,OAAO,EAAE,oBAAoB,UAAU,OAAO,CAAC,gBAAgB,UAAU,OAAO,CAAC;AACpH,cAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,iBAAS,MAAM,YAAY;AAAA,MAC7B;AAAA,IACF;AACA,UAAMC,iBAAgB,CAAAC,cAAY;AAChC,YAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,wBAAkB,QAAQ,QAAM;AAC9B,WAAG,MAAM,qBAAqB,GAAGA,SAAQ;AACzC,WAAG,iBAAiB,8GAA8G,EAAE,QAAQ,cAAY;AACtJ,mBAAS,MAAM,qBAAqB,GAAGA,SAAQ;AAAA,QACjD,CAAC;AAAA,MACH,CAAC;AACD,iCAA2B;AAAA,QACzB;AAAA,QACA,UAAAA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AACA,eAAW;AAAA,MACT,QAAQ;AAAA,MACR;AAAA,MACA,IAAAL;AAAA,MACA,cAAAC;AAAA,MACA,eAAAG;AAAA,MACA;AAAA,MACA,iBAAiB,MAAM,OAAO,OAAO;AAAA,MACrC,aAAa,MAAM;AAAA,MACnB,iBAAiB,OAAO;AAAA,QACtB,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,cAAc;AAAA,QACd,kBAAkB,CAAC,OAAO,OAAO;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACH;;;ACvGA,WAAS,gBAAgB,MAAM;AAC7B,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,iBAAiB;AAAA,QACf,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,IACF,CAAC;AACD,UAAMC,gBAAe,MAAM;AACzB,YAAM;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM,eAAe,OAAO,aAAa;AACzC,YAAM,YAAY,OAAO;AACzB,YAAM,SAAS,eAAe,CAAC,YAAY,cAAc,IAAI,CAAC,YAAY,eAAe;AACzF,YAAMC,UAAS,eAAe,OAAO,SAAS,CAAC,OAAO;AACtD,YAAMC,aAAY,OAAO;AACzB,YAAMC,KAAI,aAAa,MAAM;AAE7B,eAASC,KAAI,GAAG,SAAS,OAAO,QAAQA,KAAI,QAAQA,MAAK,GAAG;AAC1D,cAAM,UAAU,OAAOA,EAAC;AACxB,cAAM,YAAY,gBAAgBA,EAAC;AACnC,cAAM,cAAc,QAAQ;AAC5B,cAAM,gBAAgB,SAAS,cAAc,YAAY,KAAK;AAC9D,cAAM,mBAAmB,OAAO,OAAO,aAAa,aAAa,OAAO,SAAS,YAAY,IAAI,eAAe,OAAO;AACvH,YAAI,UAAU,eAAeH,UAAS,mBAAmB;AACzD,YAAI,UAAU,eAAe,IAAIA,UAAS;AAE1C,YAAI,aAAa,CAACC,aAAY,KAAK,IAAI,gBAAgB;AACvD,YAAI,UAAU,OAAO;AAErB,YAAI,OAAO,YAAY,YAAY,QAAQ,QAAQ,GAAG,MAAM,IAAI;AAC9D,oBAAU,WAAW,OAAO,OAAO,IAAI,MAAM;AAAA,QAC/C;AACA,YAAI,aAAa,eAAe,IAAI,UAAU;AAC9C,YAAI,aAAa,eAAe,UAAU,mBAAmB;AAC7D,YAAI,QAAQ,KAAK,IAAI,OAAO,SAAS,KAAK,IAAI,gBAAgB;AAG9D,YAAI,KAAK,IAAI,UAAU,IAAI,KAAO,cAAa;AAC/C,YAAI,KAAK,IAAI,UAAU,IAAI,KAAO,cAAa;AAC/C,YAAI,KAAK,IAAI,UAAU,IAAI,KAAO,cAAa;AAC/C,YAAI,KAAK,IAAI,OAAO,IAAI,KAAO,WAAU;AACzC,YAAI,KAAK,IAAI,OAAO,IAAI,KAAO,WAAU;AACzC,YAAI,KAAK,IAAI,KAAK,IAAI,KAAO,SAAQ;AACrC,cAAM,iBAAiB,eAAe,UAAU,MAAM,UAAU,MAAM,UAAU,gBAAgBC,GAAE,OAAO,CAAC,gBAAgBA,GAAE,OAAO,CAAC,cAAc,KAAK;AACvJ,cAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,iBAAS,MAAM,YAAY;AAC3B,gBAAQ,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,MAAM,gBAAgB,CAAC,IAAI;AACjE,YAAI,OAAO,cAAc;AAEvB,cAAI,iBAAiB,eAAe,QAAQ,cAAc,2BAA2B,IAAI,QAAQ,cAAc,0BAA0B;AACzI,cAAI,gBAAgB,eAAe,QAAQ,cAAc,4BAA4B,IAAI,QAAQ,cAAc,6BAA6B;AAC5I,cAAI,CAAC,gBAAgB;AACnB,6BAAiB,aAAa,aAAa,SAAS,eAAe,SAAS,KAAK;AAAA,UACnF;AACA,cAAI,CAAC,eAAe;AAClB,4BAAgB,aAAa,aAAa,SAAS,eAAe,UAAU,QAAQ;AAAA,UACtF;AACA,cAAI,eAAgB,gBAAe,MAAM,UAAU,mBAAmB,IAAI,mBAAmB;AAC7F,cAAI,cAAe,eAAc,MAAM,UAAU,CAAC,mBAAmB,IAAI,CAAC,mBAAmB;AAAA,QAC/F;AAAA,MACF;AAAA,IACF;AACA,UAAME,iBAAgB,CAAAC,cAAY;AAChC,YAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,wBAAkB,QAAQ,QAAM;AAC9B,WAAG,MAAM,qBAAqB,GAAGA,SAAQ;AACzC,WAAG,iBAAiB,8GAA8G,EAAE,QAAQ,cAAY;AACtJ,mBAAS,MAAM,qBAAqB,GAAGA,SAAQ;AAAA,QACjD,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AACA,eAAW;AAAA,MACT,QAAQ;AAAA,MACR;AAAA,MACA,IAAAP;AAAA,MACA,cAAAC;AAAA,MACA,eAAAK;AAAA,MACA,aAAa,MAAM;AAAA,MACnB,iBAAiB,OAAO;AAAA,QACtB,qBAAqB;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,EACH;;;AC/FA,WAAS,eAAe,MAAM;AAC5B,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,gBAAgB;AAAA,QACd,eAAe;AAAA,QACf,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,aAAa;AAAA,QACb,MAAM;AAAA,UACJ,WAAW,CAAC,GAAG,GAAG,CAAC;AAAA,UACnB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,UAChB,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,QACA,MAAM;AAAA,UACJ,WAAW,CAAC,GAAG,GAAG,CAAC;AAAA,UACnB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,UAChB,SAAS;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,oBAAoB,WAAS;AACjC,UAAI,OAAO,UAAU,SAAU,QAAO;AACtC,aAAO,GAAG,KAAK;AAAA,IACjB;AACA,UAAMC,gBAAe,MAAM;AACzB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM;AAAA,QACJ,oBAAoB;AAAA,MACtB,IAAI;AACJ,YAAM,mBAAmB,OAAO,OAAO;AACvC,YAAM,YAAY,aAAa,MAAM;AACrC,UAAI,kBAAkB;AACpB,cAAM,SAAS,gBAAgB,CAAC,IAAI,IAAI,OAAO,OAAO,sBAAsB;AAC5E,kBAAU,MAAM,YAAY,yBAAyB,MAAM;AAAA,MAC7D;AACA,eAASC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,cAAM,UAAU,OAAOA,EAAC;AACxB,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,WAAW,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,OAAO,aAAa,GAAG,OAAO,aAAa;AACjG,YAAI,mBAAmB;AACvB,YAAI,CAAC,kBAAkB;AACrB,6BAAmB,KAAK,IAAI,KAAK,IAAI,QAAQ,kBAAkB,CAAC,OAAO,aAAa,GAAG,OAAO,aAAa;AAAA,QAC7G;AACA,cAAM,SAAS,QAAQ;AACvB,cAAMC,KAAI,CAAC,OAAO,OAAO,UAAU,CAAC,SAAS,OAAO,YAAY,CAAC,QAAQ,GAAG,CAAC;AAC7E,cAAMC,KAAI,CAAC,GAAG,GAAG,CAAC;AAClB,YAAI,SAAS;AACb,YAAI,CAAC,OAAO,aAAa,GAAG;AAC1B,UAAAD,GAAE,CAAC,IAAIA,GAAE,CAAC;AACV,UAAAA,GAAE,CAAC,IAAI;AAAA,QACT;AACA,YAAI,OAAO;AAAA,UACT,WAAW,CAAC,GAAG,GAAG,CAAC;AAAA,UACnB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,UAChB,OAAO;AAAA,UACP,SAAS;AAAA,QACX;AACA,YAAI,WAAW,GAAG;AAChB,iBAAO,OAAO;AACd,mBAAS;AAAA,QACX,WAAW,WAAW,GAAG;AACvB,iBAAO,OAAO;AACd,mBAAS;AAAA,QACX;AAEA,QAAAA,GAAE,QAAQ,CAAC,OAAOE,WAAU;AAC1B,UAAAF,GAAEE,MAAK,IAAI,QAAQ,KAAK,SAAS,kBAAkB,KAAK,UAAUA,MAAK,CAAC,CAAC,MAAM,KAAK,IAAI,WAAW,UAAU,CAAC;AAAA,QAChH,CAAC;AAED,QAAAD,GAAE,QAAQ,CAAC,OAAOC,WAAU;AAC1B,cAAI,MAAM,KAAK,OAAOA,MAAK,IAAI,KAAK,IAAI,WAAW,UAAU;AAC7D,UAAAD,GAAEC,MAAK,IAAI;AAAA,QACb,CAAC;AACD,gBAAQ,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,MAAM,aAAa,CAAC,IAAI,OAAO;AACrE,cAAM,kBAAkBF,GAAE,KAAK,IAAI;AACnC,cAAM,eAAe,WAAW,UAAUC,GAAE,CAAC,CAAC,CAAC,gBAAgB,UAAUA,GAAE,CAAC,CAAC,CAAC,gBAAgB,UAAUA,GAAE,CAAC,CAAC,CAAC;AAC7G,cAAM,cAAc,mBAAmB,IAAI,SAAS,KAAK,IAAI,KAAK,SAAS,mBAAmB,UAAU,MAAM,SAAS,KAAK,IAAI,KAAK,SAAS,mBAAmB,UAAU;AAC3K,cAAM,gBAAgB,mBAAmB,IAAI,KAAK,IAAI,KAAK,WAAW,mBAAmB,aAAa,KAAK,IAAI,KAAK,WAAW,mBAAmB;AAClJ,cAAM,YAAY,eAAe,eAAe,KAAK,YAAY,IAAI,WAAW;AAGhF,YAAI,UAAU,KAAK,UAAU,CAAC,QAAQ;AACpC,cAAI,WAAW,QAAQ,cAAc,sBAAsB;AAC3D,cAAI,CAAC,YAAY,KAAK,QAAQ;AAC5B,uBAAW,aAAa,YAAY,OAAO;AAAA,UAC7C;AACA,cAAI,UAAU;AACZ,kBAAM,gBAAgB,OAAO,oBAAoB,YAAY,IAAI,OAAO,iBAAiB;AACzF,qBAAS,MAAM,UAAU,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,aAAa,GAAG,CAAC,GAAG,CAAC;AAAA,UAC3E;AAAA,QACF;AACA,cAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,iBAAS,MAAM,YAAY;AAC3B,iBAAS,MAAM,UAAU;AACzB,YAAI,KAAK,QAAQ;AACf,mBAAS,MAAM,kBAAkB,KAAK;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AACA,UAAME,iBAAgB,CAAAC,cAAY;AAChC,YAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,wBAAkB,QAAQ,QAAM;AAC9B,WAAG,MAAM,qBAAqB,GAAGA,SAAQ;AACzC,WAAG,iBAAiB,sBAAsB,EAAE,QAAQ,cAAY;AAC9D,mBAAS,MAAM,qBAAqB,GAAGA,SAAQ;AAAA,QACjD,CAAC;AAAA,MACH,CAAC;AACD,iCAA2B;AAAA,QACzB;AAAA,QACA,UAAAA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AACA,eAAW;AAAA,MACT,QAAQ;AAAA,MACR;AAAA,MACA,IAAAP;AAAA,MACA,cAAAC;AAAA,MACA,eAAAK;AAAA,MACA,aAAa,MAAM,OAAO,OAAO,eAAe;AAAA,MAChD,iBAAiB,OAAO;AAAA,QACtB,qBAAqB;AAAA,QACrB,kBAAkB,CAAC,OAAO,OAAO;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACH;;;ACzIA,WAAS,YAAY,MAAM;AACzB,QAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,IAAAE;AAAA,IACF,IAAI;AACJ,iBAAa;AAAA,MACX,aAAa;AAAA,QACX,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AACD,UAAMC,gBAAe,MAAM;AACzB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,cAAc;AAAA,MAChB,IAAI;AACJ,YAAM,SAAS,OAAO,OAAO;AAC7B,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,OAAO;AACX,YAAM,mBAAmB,MAAM,CAAC,OAAO,YAAY,OAAO;AAC1D,eAASC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK,GAAG;AACzC,cAAM,UAAU,OAAOA,EAAC;AACxB,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,WAAW,KAAK,IAAI,KAAK,IAAI,eAAe,EAAE,GAAG,CAAC;AACxD,YAAI,SAAS,QAAQ;AACrB,YAAI,OAAO,OAAO,kBAAkB,CAAC,OAAO,OAAO,SAAS;AAC1D,iBAAO,UAAU,MAAM,YAAY,cAAc,OAAO,aAAa,CAAC;AAAA,QACxE;AACA,YAAI,OAAO,OAAO,kBAAkB,OAAO,OAAO,SAAS;AACzD,oBAAU,OAAO,CAAC,EAAE;AAAA,QACtB;AACA,YAAI,KAAK,OAAO,OAAO,UAAU,CAAC,SAAS,OAAO,YAAY,CAAC;AAC/D,YAAI,KAAK;AACT,cAAM,KAAK,OAAO,KAAK,IAAI,QAAQ;AACnC,YAAI,QAAQ;AACZ,YAAIC,UAAS,CAAC,OAAO,iBAAiB;AACtC,YAAI,QAAQ,OAAO,iBAAiB,KAAK,IAAI,QAAQ,IAAI;AACzD,cAAM,aAAa,OAAO,WAAW,OAAO,OAAO,QAAQ,UAAU,OAAO,QAAQ,OAAOD,KAAIA;AAC/F,cAAM,iBAAiB,eAAe,eAAe,eAAe,cAAc,MAAM,WAAW,KAAK,WAAW,MAAM,aAAa,OAAO,OAAO,YAAY,mBAAmB;AACnL,cAAM,iBAAiB,eAAe,eAAe,eAAe,cAAc,MAAM,WAAW,KAAK,WAAW,OAAO,aAAa,OAAO,OAAO,YAAY,mBAAmB;AACpL,YAAI,iBAAiB,eAAe;AAClC,gBAAM,eAAe,IAAI,KAAK,KAAK,KAAK,IAAI,QAAQ,IAAI,OAAO,GAAG,MAAM;AACxE,UAAAC,WAAU,MAAM,WAAW;AAC3B,mBAAS,OAAO;AAChB,mBAAS,KAAK;AACd,eAAK,GAAG,MAAM,cAAc,KAAK,IAAI,QAAQ,CAAC;AAAA,QAChD;AACA,YAAI,WAAW,GAAG;AAEhB,eAAK,QAAQ,EAAE,MAAM,MAAM,MAAM,GAAG,KAAK,QAAQ,KAAK,IAAI,QAAQ,CAAC;AAAA,QACrE,WAAW,WAAW,GAAG;AAEvB,eAAK,QAAQ,EAAE,MAAM,MAAM,MAAM,GAAG,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AAAA,QACtE,OAAO;AACL,eAAK,GAAG,EAAE;AAAA,QACZ;AACA,YAAI,CAAC,OAAO,aAAa,GAAG;AAC1B,gBAAM,QAAQ;AACd,eAAK;AACL,eAAK;AAAA,QACP;AACA,cAAM,cAAc,WAAW,IAAI,GAAG,KAAK,IAAI,SAAS,QAAQ,KAAK,GAAG,KAAK,IAAI,SAAS,QAAQ;AAGlG,cAAM,YAAY;AAAA,sBACF,EAAE,KAAK,EAAE,KAAK,EAAE;AAAA,kBACpB,OAAO,SAAS,MAAM,CAACA,UAASA,UAAS,CAAC;AAAA,gBAC5C,WAAW;AAAA;AAIrB,YAAI,OAAO,cAAc;AAEvB,cAAI,WAAW,QAAQ,cAAc,sBAAsB;AAC3D,cAAI,CAAC,UAAU;AACb,uBAAW,aAAa,SAAS,OAAO;AAAA,UAC1C;AACA,cAAI,SAAU,UAAS,MAAM,UAAU,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC;AAAA,QAClG;AACA,gBAAQ,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,MAAM,aAAa,CAAC,IAAI,OAAO;AACrE,cAAM,WAAW,aAAa,QAAQ,OAAO;AAC7C,iBAAS,MAAM,YAAY;AAAA,MAC7B;AAAA,IACF;AACA,UAAMC,iBAAgB,CAAAC,cAAY;AAChC,YAAM,oBAAoB,OAAO,OAAO,IAAI,aAAW,oBAAoB,OAAO,CAAC;AACnF,wBAAkB,QAAQ,QAAM;AAC9B,WAAG,MAAM,qBAAqB,GAAGA,SAAQ;AACzC,WAAG,iBAAiB,sBAAsB,EAAE,QAAQ,cAAY;AAC9D,mBAAS,MAAM,qBAAqB,GAAGA,SAAQ;AAAA,QACjD,CAAC;AAAA,MACH,CAAC;AACD,iCAA2B;AAAA,QACzB;AAAA,QACA,UAAAA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AACA,eAAW;AAAA,MACT,QAAQ;AAAA,MACR;AAAA,MACA,IAAAL;AAAA,MACA,cAAAC;AAAA,MACA,eAAAG;AAAA,MACA,aAAa,MAAM;AAAA,MACnB,iBAAiB,OAAO;AAAA,QACtB,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,sBAAsB;AAAA,QACtB,gBAAgB;AAAA,QAChB,kBAAkB,CAAC,OAAO,OAAO;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,EACH;;;ACvFA,MAAM,UAAU,CAAC,SAAS,UAAU,YAAY,YAAY,YAAY,WAAW,UAAU,MAAME,aAAY,MAAMC,UAAS,gBAAgB,UAAU,OAAO,UAAU,MAAM,cAAc,YAAY,YAAY,YAAY,iBAAiB,gBAAgB,WAAW;AAC7Q,SAAO,IAAI,OAAO;;;ACrClB,MAAM,YAAY,MAAMC,mBAAkB,WAAW;AAAA,IACnD,UAAU;AACR,WAAK,SAAS,IAAI,OAAO,KAAK,SAAS;AAAA,QACrC,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACV,CAAC;AAAA,IACH;AAAA,IACA,aAAa;AACX,WAAK,OAAO,QAAQ,GAAG,KAAK,SAAS;AAAA,IACvC;AAAA,IACA,IAAI,iBAAiB;AACnB,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AACA,YAAU,SAAS;AAAA,IACjB,SAAS;AAAA,EACX;AACA,MAAI,WAAW;;;AClBf,MAAM,aAAa,MAAMC,oBAAmB,WAAW;AAAA,IACrD,UAAU;AACR,WAAK,oBAAoB,KAAK,kBAAkB,KAAK,aAAa;AAAA,IACpE;AAAA,IACA,KAAKC,QAAO;AACV,MAAAA,OAAM,eAAe;AACrB,YAAM,OAAO,KAAK,aAAa,aAAa,KAAK,aAAa;AAC9D,gBAAU,UAAU,UAAU,IAAI,EAAE,KAAK,MAAM,KAAK,OAAO,CAAC;AAAA,IAC9D;AAAA,IACA,SAAS;AACP,WAAK,oBAAoB,KAAK,WAAW,aAAa,KAAK,OAAO,GAAG,KAAK,aAAa,YAAY,KAAK,qBAAqB,KAAK,UAAU,WAAW,MAAM;AAC3J,aAAK,aAAa,YAAY,KAAK;AAAA,MACrC,GAAG,KAAK,oBAAoB;AAAA,IAC9B;AAAA,EACF;AACA,aAAW,UAAU,CAAC,UAAU,QAAQ,GAAG,WAAW,SAAS;AAAA,IAC7D,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACA,MAAI,YAAY;;;ACpBhB,MAAO,gCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,aAAa,WAAW,aAAa,eAAe;AAAA,IAEtE,WAAWC,QAAO;AAChB,YAAM,YAAY,IAAI,KAAKA,OAAM,OAAO,KAAK;AAC7C,gBAAU,SAAS,GAAG,GAAG,GAAG,CAAC;AAE7B,UAAI,aAAa,oBAAI,KAAK;AAC1B,UAAI,KAAK,cAAc,QAAQ,eAAe,QAAQ;AACpD,qBAAa,IAAI,KAAK,WAAW,aAAa,WAAW,WAAW,GAAG,CAAC;AAAA,MAC1E;AACA,iBAAW,SAAS,GAAG,GAAG,GAAG,CAAC;AAE9B,YAAM,YAAY,IAAI,KAAK,KAAK,gBAAgB,KAAK;AACrD,gBAAU,SAAS,GAAG,GAAG,GAAG,CAAC;AAE7B,YAAM,UAAU,IAAI,KAAK,KAAK,cAAc,KAAK;AACjD,cAAQ,SAAS,GAAG,GAAG,GAAG,CAAC;AAE3B,YAAM,YAAYA,OAAM,OAAO,QAAQ;AACvC,YAAM,eAAe,KAAK,gBAAgB,QAAQ,iBAAiB,SAAS,OAAO;AACnF,WAAK,mBAAmB,WAAW,WAAW,YAAY,WAAW,SAAS,YAAY;AAAA,IAC5F;AAAA,IAEA,mBAAmB,WAAW,WAAW,YAAY,WAAW,SAAS,cAAc;AACrF,YAAM,gBACJ,cAAc,cAAc,KAAK,kBAAkB,KAAK;AAC1D,YAAM,eAAe,YAAY;AAEjC,UAAI,gBAAgB,CAAC,cAAc;AACjC,aAAK,cAAc;AACnB,sBAAc,UAAU,IAAI,gBAAgB;AAAA,MAC9C,OAAO;AACL,YAAG,cAAc,aAAY;AAC3B,eAAK,yBAAyB,SAAS;AAAA,QACzC,OAAO;AACL,eAAK,2BAA2B,SAAS;AAAA,QAC3C;AACA,aAAK,kBAAkB,YAAY,WAAW,SAAS,YAAY;AAAA,MACrE;AAAA,IACF;AAAA,IAEA,kBAAkB,YAAY,WAAW,SAAS,cAAc;AAC9D,UAAI,eAAe,YAAY,UAAW,YAAY,WAAW,UAAU,YAAa;AACtF,aAAK,cAAc,UAAU,IAAI,gBAAgB;AACjD,aAAK,cAAc;AAAA,MACrB,OAAO;AACL,aAAK,aAAa;AAClB,aAAK,gBAAgB,UAAU,OAAO,gBAAgB;AACtD,aAAK,cAAc,UAAU,OAAO,gBAAgB;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,sBAAuB;AACrB,UAAI,YAAY,IAAI,KAAK,KAAK,gBAAgB,KAAK;AACnD,UAAI,UAAU,IAAI,KAAK,KAAK,cAAc,KAAK;AAC/C,YAAM,aAAa,oBAAI,KAAK;AAE5B,UAAI,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,OAAO,GAAG;AACxC,YAAI,cAAc,UAAU,cAAc,MAAO,KAAK,KAAK;AAC3D,YAAI,aAAa,IAAI,KAAK,SAAS;AACnC,mBAAW,QAAQ,UAAU,QAAQ,IAAI,GAAG;AAE5C,YAAI,aAAa,KAAK;AAEpB,eAAK,cAAc,QAAQ,WAAW,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAChE,eAAK,cAAc,MAAM,UAAU,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAC7D,eAAK,cAAc,MAAM,WAAW,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAC9D,eAAK,gBAAgB,MAAM,WAAW,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,QAElE,OAAO;AACL,eAAK,cAAc,MAAM,UAAU,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAC7D,gBAAM,UAAW,cAAc,aAAc,aAAa;AAC1D,eAAK,cAAc,MAAM,QAAQ,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,QAC7D;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe;AACb,WAAK,gBAAgB,gBAAgB,UAAU;AAC/C,WAAK,oBAAoB,gBAAgB,UAAU;AAAA,IACrD;AAAA,IAEA,gBAAgB;AACd,WAAK,gBAAgB,aAAa,YAAY,UAAU;AACxD,WAAK,oBAAoB,aAAa,YAAY,UAAU;AAAA,IAC9D;AAAA,IACA,yBAAyB,WAAW;AAClC,gBAAU,QAAQ,UAAU,QAAQ,IAAI,CAAC;AACzC,WAAK,cAAc;AAAA,QACjB;AAAA,QACA,UAAU,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,MACtC;AAAA,IACF;AAAA,IACA,2BAA2B,WAAW;AACpC,gBAAU,QAAQ,UAAU,QAAQ,IAAI,CAAC;AACzC,WAAK,gBAAgB;AAAA,QACnB;AAAA,QACA,UAAU,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,MACtC;AAAA,IACF;AAAA,EACF;;;ACpGA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,gBAAe,YAAY;AAAA,IAC7C,UAAU;AAAA,IACV;AAAA,IACA,WAAWC,QACX;AACE,MAAAA,OAAM,eAAe;AACrB,WAAK,iBAAiB,UAAU,OAAO,SAAS,aAAa;AAC7D,WAAK,iBAAiB,YAAW;AACjC,YAAM,OAAOA,OAAM,cAAc;AACjC,YAAM,YAAY,KAAK,mBAAmB;AAC1C,YAAM,MAAK,6BAA6B,SAAS;AACjD,YAAM,KAAI;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,MACF,CAAC,EAAE,KAAK,cAAU,SAAS,KAAK,CAAC,EAChC,KAAK,cAAY;AAChB,YAAI,SAAS,SAAS;AACtB,gBAAM,cAAc,SAAS,cAAc,SAAS,cAAa;AACjE,cAAK,eAAgB,QAAQ,SAAS,SAAS,KAAK,IAAI;AAAA,mBAAuB,SAAS,SAAS;AAAA,iBAAqB,WAAW;AAAA,UAAc,SAAS,IAAI,EAAE;AAC5J,cAAI,CAAC,cAAc;AACjB;AAAA,UACF;AACF,eAAK,SAAS,sBAAsB,SAAS,KAAK,EAAE;AACpD,gBAAM,UAAU,WAAW,IAAI;AAAA,QAC/B,OAAK;AACH,eAAK,iBAAiB,UAAU,IAAI,SAAQ,aAAa;AACzD,eAAK,iBAAiB,YAAW,SAAS;AAAA,QAC5C;AAAA,MACD,CAAC;AAAA,IACJ;AAAA,EACF;;;AClCA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,SAAS,EAAE,UAAU,OAAO;AAAA,IAEnC,IAAI,SAAS;AACX,aAAO,SAAS,eAAe,KAAK,aAAa;AAAA,IACnD;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,UAAU,CAAC,KAAK,OAAO,MAAM;AACpC,aAAK,OAAO,UAAU;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,QAAQ;AACN,UAAI,KAAK,UAAU,KAAK,OAAO,MAAM;AACnC,aAAK,OAAO,MAAM;AAAA,MACpB;AAAA,IACF;AAAA,EACF;;;ACjBA,MAAO,8BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,SAAS,WAAW,aAAa;AAAA,IAEnD,UAAW;AAET,eAAS,iBAAiB,SAAS,KAAK,cAAc,KAAK,IAAI,CAAC;AAAA,IAClE;AAAA,IAEA,iBAAkB;AAChB,WAAK,cAAc,UAAU,OAAO,QAAQ;AAAA,IAC9C;AAAA,IAEA,aAAcC,IAAG;AACf,YAAM,gBAAgBA,GAAE,cAAc,cAAc,iBAAiB;AACrE,WAAK,YAAY,cAAc,cAAc,YAAY,KAAK;AAC9D,WAAK,kBAAkB,QAAQ,cAAc,QAAQ;AACrD,WAAK,eAAe;AAAA,IACtB;AAAA,IAEA,cAAeC,QAAO;AACpB,UAAI,CAAC,KAAK,QAAQ,SAASA,OAAM,MAAM,GAAG;AACxC,aAAK,cAAc,UAAU,IAAI,QAAQ;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;;;ACxBA,MAAO,uCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,eAAe,aAAa,qBAAqB;AAAA,IACnE,UAAS;AACP,WAAK,WAAW;AAAA,IAClB;AAAA,IACA,aAAc;AACZ,YAAM,kBAAkB,KAAK,QAAQ,cAAc,6BAA6B,EAAE;AAClF,YAAM,YAAY,oBAAoB;AACtC,WAAK,kBAAkB,cAAc,YACjC,KAAK,gBAAgB,QAAQ,kBAC7B;AACJ,WAAK,gBAAgB,UAAU,OAAO,UAAU,SAAS;AACzD,WAAK,kBAAkB,UAAU,OAAO,UAAU,CAAC,SAAS;AAE5D,UAAG,WAAU;AACZ,aAAK,0BAA0B,cAAc;AAAA,MAC9C,WAAU,oBAAoB,WAAU;AACtC,aAAK,0BAA0B,cAAc;AAAA,MAC/C,OAAK;AACH,aAAK,0BAA0B,cAAc;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;;;ACtBA,MAAO,4CAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,UAAU,iBAAiB,OAAO;AAAA,IACpD,UAAU;AAAA,IACV;AAAA,IAEA,yBAAyBC,QAAM;AAC7B,YAAM,YAAY,SAAS,KAAK,aAAa,KAAK;AAClD,YAAM,gBAAgB,SAAS,KAAK,oBAAoB,QAAQ,aAAa;AAE7E,UAAG,iBAAiB,aAAa,YAAY,GAAG;AAC9C,YAAI,eAAe,QAAQ;AAAA,mBAAmC,aAAa,wBAAwB,SAAS;AAAA,oCAAwC,SAAS,GAAG;AAEhK,YAAI,CAAC,cAAc;AACjB,UAAAA,OAAM,eAAe;AAAA,QACvB;AAAA,MACF,OAAO;AACL,aAAK,YAAYA,MAAK;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,YAAYA,QAAM;AAChB,YAAM,YAAY,SAAS,KAAK,aAAa,KAAK;AAClD,UAAI,YAAY,GAAI;AAClB,aAAK,YAAY,YAAY;AAC7B,aAAK,aAAa,UAAU,IAAI,gBAAgB;AAChD,QAAAA,OAAM,eAAe;AAAA,MACvB,OAAO;AACL,aAAK,YAAY,YAAY;AAC7B,aAAK,aAAa,UAAU,OAAO,gBAAgB;AAAA,MAAM;AAAA,IAC7D;AAAA,EACF;;;AC9BA,MAAO,2BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAW;AAAA,IAAC;AAAA,IAEZ,sBAAsBC,QAAO;AAC3B,YAAM,EAAE,QAAQ,SAAS,KAAK,IAAIA,OAAM,cAAc;AACtD,WAAK,UAAU,QAAQ,SAAS,IAAI;AAAA,IACtC;AAAA,IAEA,oBAAoB;AAClB,YAAM,eACJ,KAAK,mBAAmB,QAAQ,KAAK,mBAAmB,aAAa,EAClE;AACL,UAAI,iBAAiB,OAAO;AAC1B,aAAK,uBAAuB;AAC5B,aAAK,iBAAiB,MAAM,KAAK;AACjC,aAAK,UAAU;AACf,aAAK,gBAAgB,WAAS;AAAA,MAChC,OAAO;AACL,aAAK,gBAAgB,WAAS;AAC9B,aAAK,UAAU;AACf,aAAK,iBAAiB,OAAO,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,UAAU,SAAS,IAAI,UAAU,IAAI,OAAO,IAAI;AAC9C,WAAK,eAAe,QAAQ;AAC5B,WAAK,cAAc,QAAQ;AAC3B,WAAK,gBAAgB,QAAQ;AAAA,IAC/B;AAAA,IAEA,iBAAiB,WAAW,SAAS;AACnC,WAAK,gBAAgB,UAAU,OAAO,UAAU,SAAS;AACzD,WAAK,cAAc,UAAU,OAAO,UAAU,OAAO;AAAA,IACvD;AAAA,IAEA,yBAAwB;AACtB,WAAK,QAAQ,cAAc,6BAA6B,EAAE,QAAQ;AAClE,WAAK,QAAQ,cAAc,uBAAuB,EAAE,YAAY;AAChE,YAAMC,YAAW,KAAK,QAAQ,iBAAiB,mBAAmB;AAClE,MAAAA,UAAS,QAAQ,aAAW;AAC1B,gBAAQ,UAAU,IAAI,QAAQ;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,EACF;;;ACnDA,MAAO,uCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAU;AAAA,IAAE;AAAA,IAEZ,eAAe;AACb,YAAM,kBACJ,KAAK,oBAAoB,QAAQ,KAAK,oBAAoB,aAAa,EACpE;AACL,YAAM,UAAU,KAAK,oBAAoB,QAAQ;AACjD,WAAK,oBAAoB,gBAAgB;AAEzC,YAAM,wBAAwB,KAAK,iBAAiB;AAAA,QAClD,CAAC,OAAO,GAAG,UAAU;AAAA,MACvB;AAEA,UAAI,uBAAuB;AACzB,aAAK,iBAAiB,kCAAkC;AAAA,MAC1D,OAAO;AACL,cAAM,eAAe,KAAK,QAAQ,cAAc,gBAAgB;AAChE,qBAAa,YAAY;AACzB,qBAAa,UAAU,OAAO,SAAS,eAAe,YAAY;AAClE,YAAI,iBAAiB;AACnB,eAAK,MAAM,eAAe,OAAO,+CAA+C,eAAe;AAC/F,eAAK,eAAe,KAAK,GAAG;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAAA,IAEA,cAAcC,QAAO;AACnB,YAAM,cAAcA,OAAM,cAAc,QAAQ;AAChD,UACE;AAAA,QACE;AAAA,6BAA6C,WAAW;AAAA,MAC1D,GACA;AACA,cAAM,WAAWA,OAAM,cAAc,QAAQ;AAC7C,cAAM,cAAcA,OAAM,cAAc,QAAQ;AAChD,cAAMC,MAAK,mEAAmE,WAAW;AACzF,cAAM,UAAU,KAAK,QAAQ,cAAc,IAAIA,GAAE,EAAE;AACnD,cAAM,eAAe,SAASD,OAAM,cAAc,QAAQ,YAAY;AACtE,YAAI,iBAAiB,GAAG;AACtB,eAAK,iBAAiB,gDAAgD;AACtE,UAAAA,OAAM,eAAe;AAAA,QACvB,OAAO;AACL,eAAK,eAAe,SAAS,KAAK,qBAAqB,QAAQ;AAAA,QACjE;AAAA,MACF,OAAO;AACL,QAAAA,OAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,eAAeA,QAAO;AACpB,YAAM,aAAa,KAAK,QAAQ;AAAA,QAC9B;AAAA,MACF;AACA,UAAI,WAAW,UAAU,IAAI;AAC3B,aAAK,QAAQ,cAAc,yBAAyB,EAAE,YACpD;AACF,QAAAA,OAAM,eAAe;AAAA,MACvB,OAAO;AACL,cAAM,eAAe,KAAK,QAAQ,cAAc,iBAAiB;AACjE,YAAI,aAAa,qBAAqB,GAAG;AACvC,eAAK,iBAAiB,6BAA6B;AACnD,UAAAA,OAAM,eAAe;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,WAAK,QAAQ,cAAc,yBAAyB,EAAE,YAAY;AAAA,IACpE;AAAA,IAEA,iBAAiBE,UAAS;AACxB,YAAM,eAAe,KAAK,QAAQ,cAAc,gBAAgB;AAChE,mBAAa,UAAU,IAAI,SAAS,eAAe,YAAY;AAC/D,mBAAa,YAAY,6BAA6BA,QAAO;AAC7D,mBAAa;AAAA,QACX,CAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAE;AAAA,QACjC,EAAE,UAAU,IAAK;AAAA,MACnB,EAAE,WAAW,MAAM;AACjB,qBAAa,YAAY;AACzB,qBAAa,UAAU,OAAO,SAAS,eAAe,YAAY;AAAA,MACpE;AAAA,IACF;AAAA,IACA,eAAe,KAAK;AAClB,YAAM,KAAK;AAAA,QACT,SAAS;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,MACF,CAAC,EACE,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,SAAS,MAAM,oBAAoB,IAAI,CAAC;AAAA,IACnD;AAAA,IAEA,eAAe,SAAS,qBAAqB,UAAU;AACrD,UAAI,SAAS;AACX,gBAAQ,OAAO;AACf,4BAAoB,QAAQ,CAAC,OAAO;AAClC,aAAG,QAAQ,eAAe,GAAG,QAAQ,eAAe;AAAA,QACtD,CAAC;AAAA,MACH,OACA;AACE,aAAK,qBAAqB,KAAK,CAAC,OAAO,GAAG,OAAO,QAAQ,GAAG,OAAO;AAAA,MACrE;AAAA,IACF;AAAA,EACF;;;AC9GA,MAAO,6BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,eAAe,iBAAiB,gBAAgB;AAAA,IAElE,UAAS;AAAA,IAET;AAAA,IAEA,aAAaC,QAAO;AAClB,YAAM,kBAAkBA,OAAM,OAAO;AAErC,WAAK,kBAAkB,UAAU,IAAI,QAAQ;AAC7C,WAAK,oBAAoB,UAAU,IAAI,QAAQ;AAC/C,WAAK,qBAAqB,UAAU,IAAI,QAAQ;AAEhD,UAAI,oBAAoB,SAAS;AAC/B,aAAK,kBAAkB,UAAU,OAAO,QAAQ;AAAA,MAClD,WAAW,oBAAoB,WAAW;AACxC,aAAK,oBAAoB,UAAU,OAAO,QAAQ;AAAA,MACpD,WAAW,oBAAoB,YAAY;AACzC,aAAK,qBAAqB,UAAU,OAAO,QAAQ;AAAA,MACrD;AAAA,IACF;AAAA,EACF;;;ACvBA,MAAO,yCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,cAAc,SAAS,OAAO;AAAA,IAEhD,eAAeC,QAAO;AACpB,YAAM,UAAU;AAAA,QACd,EAAE,QAAQ,KAAK,aAAa,SAAS,uBAAuB;AAAA,QAC5D,EAAE,QAAQ,KAAK,aAAa,SAAS,uBAAuB;AAAA,QAC5D,EAAE,QAAQ,KAAK,kBAAkB,SAAS,+BAA+B;AAAA,MAC3E;AAEA,cAAQ,QAAQ,CAAC,EAAE,QAAQ,SAAAC,SAAQ,MAAM;AACvC,YAAI,OAAO,UAAU,IAAI;AACvB,gBAAMA,QAAO;AACb,UAAAD,OAAM,eAAe;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EAEF;;;ACjBA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,WAAW,eAAe;AAAA,IAE5C,UAAU;AACR,eAAS,iBAAiB,SAAS,KAAK,mBAAmB,KAAK,IAAI,CAAC;AACrE,WAAK,gBAAgB;AAAA,IACvB;AAAA,IAEA,aAAa;AACX,eAAS,oBAAoB,SAAS,KAAK,mBAAmB,KAAK,IAAI,CAAC;AAAA,IAC1E;AAAA,IAEA,SAAS;AACP,WAAK,cAAc,UAAU,OAAO,QAAQ;AAAA,IAC9C;AAAA,IAEA,kBAAkB;AAChB,YAAM,aAAa,KAAK,cAAc,iBAAiB,wBAAwB;AAC/E,YAAM,WAAW,MAAM,KAAK,UAAU,EACnC,OAAO,cAAY,SAAS,OAAO,EACnC,IAAI,cAAY,SAAS,KAAK;AACjC,WAAK,oBAAoB,QAAQ,SAAS,SAAS,SAAS,KAAK,IAAI,IAAI;AAAA,IAC3E;AAAA,IAEA,mBAAmBE,QAAO;AACxB,UAAI,CAAC,KAAK,QAAQ,SAASA,OAAM,MAAM,GAAG;AACxC,aAAK,cAAc,UAAU,IAAI,QAAQ;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;;;AC7BA,MAAO,yCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAS,CAAC,aAAY,UAAU;AAAA,IACvC,UAAU;AAAA,IACV;AAAA,IAEA,iBAAiB;AACf,UAAI,KAAK,gBAAgB,SAAS;AAChC,aAAK,gBAAgB,IAAI,CAAAC,OAAKA,GAAE,UAAU,IAAI;AAAA,MAChD,OAAO;AACL,aAAK,gBAAgB,IAAI,CAAAA,OAAKA,GAAE,UAAU,KAAK;AAAA,MACjD;AAAA,IACF;AAAA,IAEA,eAAe;AACb,UAAI,KAAK,gBAAgB,IAAI,CAAAA,OAAKA,GAAE,OAAO,EAAE,SAAS,KAAK,GAAG;AAC5D,aAAK,gBAAgB,UAAU;AAAA,MACjC,OAAO;AACL,aAAK,gBAAgB,UAAU;AAAA,MACjC;AAAA,IACF;AAAA,EACF;;;ACpBA,MAAO,6BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,gBAAgB,YAAY;AAAA,IAE9C,aAAaC,QAAO;AAClB,YAAM,cAAc,IAAI,KAAK,KAAK,mBAAmB,KAAK;AAC1D,kBAAY,SAAS,GAAG,GAAG,GAAG,CAAC;AAE/B,YAAM,aAAa,oBAAI,KAAK;AAC5B,iBAAW,SAAS,GAAG,GAAG,GAAG,CAAC;AAE9B,WAAK,mBAAmB,aAAa,UAAU;AAAA,IACjD;AAAA,IAEA,mBAAmB,aAAa,YAAY;AAC1C,UAAI,aAAa,aAAa;AAC5B,aAAK,mBAAmB,UAAU,IAAI,gBAAgB;AACtD,aAAK,cAAc;AAAA,MACrB,OAAO;AACL,aAAK,aAAa;AAClB,aAAK,mBAAmB,UAAU,OAAO,gBAAgB;AAAA,MAC3D;AAAA,IACF;AAAA,IAEA,eAAe;AACb,WAAK,iBAAiB,gBAAgB,UAAU;AAAA,IAClD;AAAA,IAEA,gBAAgB;AACd,WAAK,iBAAiB,aAAa,YAAY,UAAU;AAAA,IAC3D;AAAA,EACF;;;AC9BA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,QAAQ,QAAQ,YAAY,SAAS,aAAa;AAAA,IAEpE,UAAU;AACR,WAAK,eAAe;AACpB,eAAS,iBAAiB,SAAS,KAAK,mBAAmB,KAAK,IAAI,CAAC;AACrE,WAAK,cAAc;AACnB,WAAK,2BAA2B;AAAA,IAClC;AAAA,IAEA,SAAS;AACP,WAAK,WAAW,UAAU,OAAO,QAAQ;AACzC,WAAK,eAAe,UAAU,OAAO,YAAY,CAAC,KAAK,WAAW,UAAU,SAAS,QAAQ,CAAC;AAC9F,WAAK,eAAe,UAAU,OAAO,mBAAmB,CAAC,KAAK,WAAW,UAAU,SAAS,QAAQ,CAAC;AAAA,IACvG;AAAA,IAEA,OAAOC,QAAO;AACZ,YAAM,eAAeA,OAAM;AAC3B,YAAMC,MAAK,aAAa,QAAQ;AAEhC,WAAK,qBAAqB,YAAY;AACtC,WAAK,YAAY,QAAQA;AACzB,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,OAAOD,QAAO;AACZ,YAAM,cAAcA,OAAM,OAAO,MAAM,YAAY;AACnD,WAAK,cAAc;AAEnB,WAAK,YAAY,QAAQ,CAAC,SAAS;AACjC,cAAM,WAAW,KAAK,cAAc,YAAY,EAAE,YAAY,YAAY;AAC1E,aAAK,UAAU,OAAO,UAAU,CAAC,SAAS,SAAS,WAAW,CAAC;AAAA,MACjE,CAAC;AAAA,IACH;AAAA,IAEA,YAAY;AACV,WAAK,kBAAkB,QAAQ;AAC/B,WAAK,YAAY,QAAQ,UAAQ,KAAK,UAAU,OAAO,QAAQ,CAAC;AAAA,IAClE;AAAA,IAEA,iBAAiB;AACf,WAAK,YAAY,QAAQ;AACzB,WAAK,eAAe,YAAY,KAAK,eAAe,QAAQ;AAC5D,WAAK,WAAW;AAChB,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,iBAAiB;AACf,YAAM,gBAAgB,KAAK,YAAY,MAAM,KAAK;AAClD,UAAI,eAAe;AACjB,cAAM,eAAe,KAAK,YAAY,KAAK,UAAQ,KAAK,QAAQ,OAAO,aAAa;AACpF,YAAI,cAAc;AAChB,eAAK,qBAAqB,YAAY;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,mBAAmBA,QAAO;AACxB,UAAI,CAAC,KAAK,QAAQ,SAASA,OAAM,MAAM,GAAG;AACxC,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAAA,IAEA,SAASA,QAAO;AACd,YAAM,MAAMA,OAAM;AAClB,WAAK,2BAA2B;AAEhC,UAAI,QAAQ,aAAa;AACvB,QAAAA,OAAM,eAAe;AACrB,aAAK,kBAAkB,CAAC;AAAA,MAC1B,WAAW,QAAQ,WAAW;AAC5B,QAAAA,OAAM,eAAe;AACrB,aAAK,kBAAkB,EAAE;AAAA,MAC3B,WAAW,QAAQ,WAAW,KAAK,eAAe,GAAG;AACnD,QAAAA,OAAM,eAAe;AACrB,aAAK,WAAW,KAAK,WAAW;AAAA,MAClC,WAAW,QAAQ,UAAU;AAC3B,aAAK,MAAM;AAAA,MACb;AAGA,iBAAW,MAAM,KAAK,2BAA2B,OAAO,CAAC;AAAA,IAC3D;AAAA,IAEA,kBAAkBE,QAAO;AACvB,YAAM,eAAe,KAAK;AAC1B,WAAK,cAAc,KAAK,IAAI,KAAK,IAAI,KAAK,cAAcA,QAAO,CAAC,GAAG,aAAa,SAAS,CAAC;AAC1F,WAAK,iBAAiB,YAAY;AAAA,IACpC;AAAA,IAEA,iBAAiB,cAAc;AAC7B,WAAK,WAAW;AAChB,YAAM,aAAa,KAAK,YAAY,aAAa,KAAK,WAAW,CAAC;AAClE,UAAI,YAAY;AACd,mBAAW,UAAU,IAAI,iBAAiB,YAAY;AACtD,mBAAW,eAAe,EAAE,OAAO,UAAU,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,WAAWA,QAAO;AAChB,YAAM,eAAe,KAAK,YAAY,KAAK,aAAaA,MAAK,CAAC;AAC9D,mBAAa,MAAM;AAAA,IACrB;AAAA,IAEA,qBAAqB,MAAM;AACzB,WAAK,eAAe,YAAY,KAAK,cAAc,mBAAmB,EAAE;AACxE,WAAK,WAAW;AAChB,WAAK,UAAU,IAAI,iBAAiB,YAAY;AAChD,WAAK,cAAc,mBAAmB,EAAE,UAAU,IAAI,eAAe;AACrE,WAAK,cAAc,mBAAmB,EAAE,UAAU,OAAO,QAAQ;AAAA,IACnE;AAAA,IAEA,aAAa;AACX,WAAK,YAAY,QAAQ,UAAQ;AAC/B,aAAK,UAAU,OAAO,iBAAiB,YAAY;AACnD,aAAK,cAAc,mBAAmB,EAAE,UAAU,OAAO,eAAe;AACxE,aAAK,cAAc,mBAAmB,EAAE,UAAU,IAAI,QAAQ;AAAA,MAChE,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO,KAAK,YAAY,OAAO,CAAC,SAAS,MAAMA,WAAU;AACvD,YAAI,CAAC,KAAK,UAAU,SAAS,QAAQ,EAAG,SAAQ,KAAKA,MAAK;AAC1D,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,IAEA,QAAQ;AACN,WAAK,WAAW,UAAU,IAAI,QAAQ;AACtC,WAAK,eAAe,UAAU,OAAO,YAAY,iBAAiB;AAAA,IACpE;AAAA,IAEA,MAAMF,QAAO;AACX,UAAI,CAAC,KAAK,0BAA0B;AAClC,cAAM,cAAcA,OAAM;AAC1B,cAAME,SAAQ,KAAK,YAAY,QAAQ,WAAW;AAClD,YAAIA,WAAU,IAAI;AAChB,eAAK,cAAc,KAAK,aAAa,QAAQA,MAAK;AAClD,eAAK,iBAAiB,KAAK,YAAY;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,EACF;;;AC9IA,MAAO,uCAAP,cAA6B,WAAW;AAAA,IACtC,UAAW;AACT,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,SAAS;AACP,YAAM,iBAAiB,KAAK,QAAQ,QAAQ,KAAK,QAAQ,aAAa,EAAE;AACxE,WAAK,MAAM,mBAAmB,cAAc;AAE5C,YAAM,KAAK,KAAK;AAAA,QACd,SAAS;AAAA,UACP,QAAQ;AAAA,QACV;AAAA,MACF,CAAC,EAAE,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EACpC,KAAK,UAAQ,MAAM,oBAAoB,IAAI,CAAC;AAAA,IAC/C;AAAA,EACF;;;AChBA,MAAO,oCAAP,cAA6B,WAAW;AAAA,IACtC,UAAW;AAAA,IACX;AAAA,IAEA,gBAAiBC,QAAO;AACtB,YAAM,mBAAmBA,OAAM,cAAc,QAAQ;AACrD,UAAI,kBAAkB;AACpB,aAAK,MAAM,kBAAkB,gBAAgB;AAC7C,cAAM,KAAK,KAAK;AAAA,UACd,SAAS;AAAA,YACP,QAAQ;AAAA,UACV;AAAA,QACF,CAAC,EACE,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,UAAQ,MAAM,oBAAoB,IAAI,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,IAEA,iBAAgB;AACd,WAAK,QAAQ,cAAc,gBAAgB,EAAE,YAAY;AAAA,IAC3D;AAAA,EACF;;;ACrBA,MAAO,kDAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAQ,CAAC,kBAAkB;AAAA,IAClC,UAAU;AAAA,IACV;AAAA,IACA,gBAAe;AACb,YAAM,mBAAmB,KAAK,uBAAuB,QAAQ,KAAK,uBAAuB,aAAa,EAAE;AACxG,YAAM,WAAS,KAAK,uBAAuB,QAAQ;AACnD,UAAI,kBAAkB;AACtB,aAAK,MAAM,eAAe,QAAQ,sEAAsE,gBAAgB;AACxH,cAAM,KAAK,KAAK;AAAA,UACd,SAAS;AAAA,YACP,QAAQ;AAAA,UACV;AAAA,QACF,CAAC,EACE,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,UAAQ,MAAM,oBAAoB,IAAI,CAAC;AAAA,MACjD;AAAA,IACA;AAAA,EACF;;;AClBA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IACtC,YAAY;AAAA;AAAA,IAEZ,UAAW;AACT,WAAK,YAAa,WAAW,MAAM;AACjC,aAAK,QAAQ;AAAA,MACf,GAAG,IAAI;AAAA,IACT;AAAA,IACA,UAAW;AACT,WAAK,QAAQ,OAAO;AAAA,IACtB;AAAA,IAEA,aAAa;AACX,UAAI,KAAK,cAAc,MAAM;AAC3B,qBAAa,KAAK,SAAS;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;;;AClBA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,QAAQ;AAAA,IAE1B,UAAS;AACP,WAAK,aAAa;AAAA,IACpB;AAAA,IAEA,iBAAiBC,QAAO;AACtB,WAAK,aAAa;AAClB,YAAM,kBAAkBA,OAAM,cAAc,QAAQ;AAEpD,UAAI,iBAAiB;AACnB,cAAM,kBAAkB,KAAK,eAAe;AAC5C,QAAAA,OAAM,cAAc,YAAY;AAChC,QAAAA,OAAM,cAAc,UAAU,OAAO,WAAW,gBAAgB;AAAA,MAClE;AAAA,IACF;AAAA,IAEA,eAAc;AACZ,WAAK,cAAc,QAAQ,aAAW;AACpC,gBAAQ,YAAY;AACpB,gBAAQ,UAAU,IAAI,WAAW,gBAAgB;AAAA,MACnD,CAAC;AAAA,IACH;AAAA,EACF;;;ACvBA,MAAO,yCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,WAAW;AAAA,IAC7B,SAASC,QAAO;AACd,UAAIA,OAAM,OAAO,UAAU,MAAM,WAAW,KAAKA,OAAM,OAAO,MAAM,QAAQ,OAAO,EAAE,CAAC,GAAG;AACvF,QAAAA,OAAM,OAAO,UAAU,OAAO,gBAAgB;AAC9C,aAAK,aAAa;AAAA,MACpB,OAAO;AACL,QAAAA,OAAM,OAAO,UAAU,IAAI,gBAAgB;AAC3C,aAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,eAAe;AACb,WAAK,gBAAgB,gBAAgB,UAAU;AAAA,IACjD;AAAA,IAEA,gBAAgB;AACd,WAAK,gBAAgB,aAAa,YAAY,UAAU;AAAA,IAC1D;AAAA,EACF;;;ACXA,MAAO,0CAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MAAY;AAAA,MAAU;AAAA,MACtB;AAAA,MACA;AAAA,MAAW;AAAA,MAAa;AAAA,MACxB;AAAA,MAAa;AAAA,MAAc;AAAA,MAAa;AAAA,MAAa;AAAA,MACrD;AAAA,MAAY;AAAA,MACZ;AAAA,MAAS;AAAA,MAAU;AAAA,MAAe;AAAA,IACpC;AAAA,IACA,OAAO,SAAS;AAAA,MACd,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AAAA,IAEA,UAAU;AACR,WAAK,gBAAgB,KAAK,eAAe,KAAK,IAAI;AAClD,WAAK,qBAAqB,KAAK,oBAAoB,KAAK,IAAI;AAC5D,WAAK,sBAAsB,KAAK,eAAe,KAAK,IAAI;AACxD,aAAO,iBAAiB,sBAAsB,KAAK,kBAAkB;AAErE,eAAS,iBAAiB,SAAS,KAAK,qBAAqB,IAAI;AAAA,IACnE;AAAA,IAEA,aAAa;AACX,aAAO,oBAAoB,sBAAsB,KAAK,kBAAkB;AACxE,eAAS,oBAAoB,SAAS,KAAK,qBAAqB,IAAI;AACpE,eAAS,oBAAoB,WAAW,KAAK,aAAa;AAC1D,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA,IAEA,eAAeC,IAAG;AAChB,YAAM,KAAKA,GAAE,OAAO,QAAQ,wBAAwB;AACpD,UAAI,CAAC,GAAI;AACT,MAAAA,GAAE,eAAe;AACjB,WAAK,gBAAgB;AAAA,QACnB,KAAK,GAAG,QAAQ,iBAAiB,GAAG,QAAQ,SAAS;AAAA,QACrD,cAAc,GAAG,QAAQ,qBAAqB;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoBA,IAAG;AACrB,YAAM,SAAUA,MAAKA,GAAE,UAAW,CAAC;AACnC,WAAK,gBAAgB;AAAA,QACnB,KAAK,OAAO,OAAO;AAAA,QACnB,cAAc,CAAC,CAAC,OAAO;AAAA,MACzB,CAAC;AAAA,IACH;AAAA,IAEA,KAAKC,QAAO;AACV,YAAM,MAAOA,UAASA,OAAM,UAAUA,OAAM,OAAO,OAC7CA,UAASA,OAAM,iBAAiBA,OAAM,cAAc,QAAQ,8BAC5DA,UAASA,OAAM,iBAAiBA,OAAM,cAAc,QAAQ,iBAC7D;AACL,YAAM,eAAe,CAAC,EAAEA,UAASA,OAAM,UAAUA,OAAM,OAAO;AAC9D,WAAK,gBAAgB,EAAE,KAAK,cAAc,SAASA,UAASA,OAAM,cAAc,CAAC;AAAA,IACnF;AAAA,IAEA,gBAAgB,EAAE,KAAK,cAAc,QAAQ,IAAI,CAAC,GAAG;AACnD,WAAK,eAAe,WAAW,SAAS;AACxC,WAAK,OAAO;AAEZ,UAAI,KAAK,mBAAoB,MAAK,gBAAgB,QAAQ,OAAO;AACjE,UAAI,KAAK,oBAAqB,MAAK,iBAAiB,QAAQ,OAAO,SAAS,YAAY;AAExF,YAAM,MAAM,KAAK,cAAc;AAC/B,UAAI,KAAK,mBAAoB,MAAK,gBAAgB,QAAQ,IAAI;AAC9D,UAAI,KAAK,mBAAoB,MAAK,gBAAgB,QAAQ,IAAI;AAC9D,UAAI,KAAK,qBAAsB,MAAK,kBAAkB,QAAQ,IAAI;AAElE,UAAI,KAAK,kBAAmB,MAAK,eAAe,QAAQ,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC;AAE5F,UAAI,KAAK,kBAAkB;AACzB,aAAK,cAAc,UAAU,OAAO,UAAU,CAAC,YAAY;AAC3D,YAAI,KAAK,oBAAoB;AAC3B,eAAK,gBAAgB,WAAW,CAAC,CAAC;AAClC,eAAK,gBAAgB,cAAc,eAAe,cAAc;AAAA,QAClE;AAAA,MACF;AAEA,WAAK,eAAe,UAAU,OAAO,QAAQ;AAC7C,WAAK,aAAa,UAAU,OAAO,QAAQ;AAC3C,WAAK,aAAa,UAAU,IAAI,MAAM;AACtC,eAAS,KAAK,MAAM,WAAW;AAC/B,eAAS,iBAAiB,WAAW,KAAK,aAAa;AAGvD,iBAAW,MAAM;AACf,YAAI,KAAK,qBAAsB,MAAK,kBAAkB,MAAM;AAAA,MAC9D,GAAG,EAAE;AAEL,WAAK,SAAS,mBAAmB,EAAE,IAAI,CAAC;AAAA,IAC1C;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,aAAa,UAAU,SAAS,QAAQ,GAAG;AACnD,iBAAS,oBAAoB,WAAW,KAAK,aAAa;AAC1D,aAAK,eAAe,UAAU,IAAI,QAAQ;AAC1C,aAAK,aAAa,UAAU,IAAI,QAAQ;AACxC,aAAK,aAAa,UAAU,OAAO,MAAM;AACzC,iBAAS,KAAK,MAAM,WAAW;AAE/B,YAAI,KAAK,gBAAgB,OAAO,KAAK,aAAa,UAAU,YAAY;AACtE,cAAI;AAAE,iBAAK,aAAa,MAAM;AAAA,UAAE,SAASC,KAAI;AAAA,UAAC;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,aAAaD,QAAO;AAClB,MAAAA,OAAM,gBAAgB;AAAA,IACxB;AAAA,IAEA,eAAeD,IAAG;AAChB,UAAIA,GAAE,QAAQ,UAAU;AACtB,aAAK,MAAM;AAAA,MACb,WAAWA,GAAE,QAAQ,OAAO;AAC1B,aAAK,WAAWA,EAAC;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,WAAWA,IAAG;AACZ,UAAI,CAAC,KAAK,eAAgB;AAC1B,YAAM,aAAa,KAAK,YAAY;AAAA,QAClC;AAAA,MACF;AACA,UAAI,CAAC,WAAW,OAAQ;AACxB,YAAM,QAAQ,WAAW,CAAC;AAC1B,YAAM,OAAO,WAAW,WAAW,SAAS,CAAC;AAC7C,UAAIA,GAAE,YAAY,SAAS,kBAAkB,OAAO;AAClD,QAAAA,GAAE,eAAe;AACjB,aAAK,MAAM;AAAA,MACb,WAAW,CAACA,GAAE,YAAY,SAAS,kBAAkB,MAAM;AACzD,QAAAA,GAAE,eAAe;AACjB,cAAM,MAAM;AAAA,MACd;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAOC,QAAO;AACZ,MAAAA,OAAM,eAAe;AACrB,WAAK,YAAY;AAEjB,YAAM,SAAS,KAAK,kBAAkB;AACtC,UAAI,CAAC,eAAe,KAAK,MAAM,GAAG;AAChC,aAAK,WAAW,qDAAqD;AACrE,YAAI,KAAK,qBAAsB,MAAK,kBAAkB,MAAM;AAC5D;AAAA,MACF;AACA,YAAM,OAAO,KAAK,qBAAqB,KAAK,gBAAgB,MAAM,KAAK,IAAI;AAC3E,UAAI,KAAK,sBAAsB,KAAK,gBAAgB,YAAY,CAAC,MAAM;AACrE,aAAK,WAAW,yBAAyB;AACzC,aAAK,gBAAgB,MAAM;AAC3B;AAAA,MACF;AAKA,aAAO,KAAK,KAAK,kBAAkB,QAAQ,IAAI,GAAG,UAAU,UAAU;AAGtE,WAAK,UAAU;AAAA,QACb,gBAAgB;AAAA,UACd;AAAA,UACA,WAAW;AAAA,UACX,aAAa,KAAK,iBAAiB;AAAA,UACnC,YAAY,KAAK,gBAAgB;AAAA,UACjC,YAAY,KAAK,gBAAgB;AAAA,UACjC,YAAY,KAAK,gBAAgB;AAAA,UACjC,cAAc,KAAK,kBAAkB;AAAA,QACvC;AAAA,QACA,UAAU,KAAK,oBAAoB,KAAK,eAAe,QAAQ;AAAA,QAC/D,WAAW,SAAS,KAAK,eAAe,SAAS,KAAK,EAAE;AAAA,MAC1D,CAAC;AAED,WAAK,SAAS,eAAe,EAAE,KAAK,KAAK,gBAAgB,OAAO,QAAQ,oBAAoB,CAAC;AAG7F,WAAK,MAAM;AAAA,IACb;AAAA,IAEA,UAAU,SAAS;AACjB,UAAI;AACF,cAAM,KAAK,eAAe;AAAA,UACxB,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,WAAW;AAAA,UACX,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,UAAU;AAAA,YACV,gBAAgB,KAAK,WAAW;AAAA,UAClC;AAAA,UACA,MAAM,KAAK,UAAU,OAAO;AAAA,QAC9B,CAAC,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MACnB,SAASC,KAAI;AAAA,MAAC;AAAA,IAChB;AAAA,IAEA,kBAAkB,QAAQ,MAAM;AAC9B,YAAM,QAAQ,OAAO,0BAA0B,IAAI,OAAO;AAC1D,YAAM,OAAO,GAAG,KAAK,cAAc,MAAM;AACzC,aAAO,mCAAmC,mBAAmB,IAAI,CAAC;AAAA,IACpE;AAAA,IAEA,SAAS;AACP,UAAI,KAAK,cAAe,MAAK,WAAW,MAAM;AAC9C,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,oBAAoB;AAClB,UAAI,CAAC,KAAK,qBAAsB,QAAO;AACvC,UAAI,OAAO,KAAK,kBAAkB,SAAS,IAAI,QAAQ,OAAO,EAAE;AAChE,YAAM,IAAI,QAAQ,gBAAgB,IAAI;AACtC,YAAM,IAAI,QAAQ,eAAe,IAAI;AACrC,aAAO;AAAA,IACT;AAAA,IAEA,WAAW,KAAK;AACd,UAAI,CAAC,KAAK,eAAgB;AAC1B,WAAK,YAAY,cAAc;AAC/B,WAAK,YAAY,UAAU,OAAO,QAAQ;AAAA,IAC5C;AAAA,IAEA,cAAc;AACZ,UAAI,CAAC,KAAK,eAAgB;AAC1B,WAAK,YAAY,cAAc;AAC/B,WAAK,YAAY,UAAU,IAAI,QAAQ;AAAA,IACzC;AAAA,IAEA,aAAa;AACX,YAAM,OAAO,SAAS,cAAc,yBAAyB;AAC7D,aAAO,OAAO,KAAK,aAAa,SAAS,IAAI;AAAA,IAC/C;AAAA,IAEA,gBAAgB;AACd,YAAM,MAAM,EAAE,YAAY,IAAI,YAAY,IAAI,cAAc,GAAG;AAC/D,UAAI;AACF,cAAM,KAAK,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACrD,YAAI,aAAa,GAAG,IAAI,YAAY,KAAK;AACzC,YAAI,aAAa,GAAG,IAAI,YAAY,KAAK;AACzC,YAAI,eAAe,GAAG,IAAI,cAAc,KAAK;AAAA,MAC/C,SAASA,KAAI;AAAA,MAAC;AACd,aAAO;AAAA,IACT;AAAA,IAEA,SAASD,QAAO,QAAQ;AACtB,UAAI,OAAO,OAAO,SAAS,WAAY;AACvC,UAAI;AAAE,eAAO,KAAK,SAASA,QAAO,UAAU,CAAC,CAAC;AAAA,MAAE,SAASC,KAAI;AAAA,MAAC;AAAA,IAChE;AAAA,EACF;;;ACrQA,MAAO,mCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,WAAW,WAAW;AAAA,IAExC,QAAQC,QAAO;AACb,YAAM,QAAQA,OAAM;AACpB,YAAM,aAAa,MAAM,QAAQ,mBAAmB,GAAG,OAAO,SAAS,MAAM;AAC7E,YAAM,YAAY,MAAM,QAAQ,kBAAkB;AAClD,YAAM,OAAO,MAAM,MAAM,CAAC;AAE1B,UAAI,MAAM;AACR,cAAM,SAAS,IAAI,WAAW;AAC9B,eAAO,SAAS,CAACC,OAAM;AACrB,eAAK,cAAc,MAAMA,GAAE,OAAO;AAClC,eAAK,gBAAgB,YAAY,SAAS;AAAA,QAC5C;AACA,eAAO,cAAc,IAAI;AAAA,MAC3B,OAAO;AACL,aAAK,aAAa,UAAU;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,gBAAgB,YAAY,YAAY;AACtC,UAAI,CAAC,KAAK,mBAAoB;AAC9B,UAAI,KAAK,gBAAgB,cAAc,cAAc,gBAAgB,EAAG;AAExE,YAAM,MAAM,SAAS,cAAc,QAAQ;AAC3C,UAAI,OAAO;AACX,UAAI,YAAY;AAChB,UAAI,YAAY;AAEhB,UAAI,iBAAiB,SAAS,CAACA,OAAM;AACnC,QAAAA,GAAE,eAAe;AACjB,aAAK,aAAa,UAAU;AAAA,MAC9B,CAAC;AAED,WAAK,gBAAgB,sBAAsB,YAAY,GAAG;AAAA,IAC5D;AAAA,IAEA,aAAa,YAAY;AACvB,WAAK,gBAAgB,QAAQ;AAC7B,WAAK,cAAc,MAAM;AAEzB,YAAM,MAAM,KAAK,gBAAgB,cAAc,cAAc,gBAAgB;AAC7E,UAAI,IAAK,KAAI,OAAO;AAAA,IACtB;AAAA,EACF;;;AC9CA,MAAO,gCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,YAAY,eAAe,cAAc;AAAA,IAE3D,UAAW;AACT,WAAK,iBAAiB,KAAK,eAAe,QAAQ,kBAAkB,MAAM;AAC1E,eAAS,iBAAiB,SAAS,KAAK,mBAAmB,KAAK,IAAI,CAAC;AAAA,IACvE;AAAA,IAEA,cAAe;AACb,WAAK,iBAAiB,IAAI;AAAA,IAC5B;AAAA,IAEA,gBAAiB;AACf,YAAM,WAAY,KAAK,eAAe,SAAS,CAAC,KAAK,eAAe;AACpE,WAAK,iBAAiB,QAAQ;AAAA,IAChC;AAAA,IAEA,iBAAkB,UAAU;AAC1B,YAAM,EAAE,gBAAgB,oBAAoB,kBAAkB,IAAI;AAElE,qBAAe,SAAS;AACxB,qBAAe,UAAU,OAAO,UAAU,QAAQ;AAClD,yBAAmB,UAAU,OAAO,UAAU,CAAC,QAAQ;AACvD,wBAAkB,UAAU,OAAO,UAAU,QAAQ;AAAA,IACvD;AAAA,IAEA,mBAAmBC,QAAO;AACxB,UAAI,CAAC,KAAK,QAAQ,SAASA,OAAM,MAAM,GAAG;AACxC,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA,EACF;;;AC5BA,MAAO,0BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,OAAO,OAAO;AAAA,IAEhC,UAAU;AACR,YAAM,QAAQ,OAAO,SAAS,QAAQ,IAAI,QAAQ,KAAK,EAAE;AACzD,YAAM,QAAQ,KAAK,WAAW,KAAK,CAACC,OAAMA,GAAE,QAAQ,QAAQ,IAAI;AAChE,YAAM,UAAU,QAAQ,OAAO,KAAK,WAAW,CAAC,GAAG,QAAQ;AAC3D,UAAI,QAAS,MAAK,SAAS,SAAS,KAAK;AAAA,IAC3C;AAAA,IAEA,OAAOC,QAAO;AACZ,WAAK,SAASA,OAAM,cAAc,QAAQ,KAAK,IAAI;AAAA,IACrD;AAAA,IAEA,SAAS,MAAM,YAAY;AACzB,WAAK,WAAW,QAAQ,CAACD,OAAM;AAC7B,cAAM,SAASA,GAAE,QAAQ,QAAQ;AACjC,QAAAA,GAAE,UAAU,OAAO,iBAAiB,MAAM;AAC1C,QAAAA,GAAE,aAAa,iBAAiB,SAAS,SAAS,OAAO;AAAA,MAC3D,CAAC;AACD,WAAK,aAAa,QAAQ,CAACE,OAAM;AAC/B,QAAAA,GAAE,UAAU,OAAO,UAAUA,GAAE,QAAQ,QAAQ,IAAI;AAAA,MACrD,CAAC;AACD,UAAI,YAAY;AACd,gBAAQ,aAAa,MAAM,IAAI,IAAI,IAAI,EAAE;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;;;AC9BA,MAAO,gDAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,UAAU,YAAY;AAAA,IAExC,UAAW;AACT,WAAK,YAAY,SAAS,eAAe,WAAW;AAAA,IACtD;AAAA,IAEA,gBAAiBC,QAAO;AACtB,YAAM,gBAAgBA,OAAM,cAAc,QAAQ;AAClD,YAAM,eAAe,SAAS,eAAe,aAAa;AAC1D,YAAM,sBAAsB,CAAC,SAAS,YAAY,EAAE,SAAS,aAAa,QAAQ,UAAU;AAC5F,YAAM,MAAM,KAAK,aAAa,YAAY;AAE1C,UAAI,aAAa,WAAW,aAAa,KAAK,KAAK,KAAK;AACxD,UAAI,QAAQ,QAAQ,YAAY,KAAK;AACnC,oBAAY;AAAA,MACd;AAEA,mBAAa,QAAQ,sBAAsB,UAAU,QAAQ,CAAC,IAAI;AAClE,mBAAa,UAAU,OAAO,gBAAgB;AAC9C,WAAK,iBAAiB,YAAY;AAClC,WAAK,eAAe;AACpB,WAAK,eAAeA,MAAK;AAAA,IAC3B;AAAA,IAEA,gBAAiBA,QAAO;AACtB,YAAM,gBAAgBA,OAAM,cAAc,QAAQ;AAClD,YAAM,eAAe,SAAS,eAAe,aAAa;AAE1D,UAAI,aAAa,SAAS,aAAa,OAAO,IAAI;AAChD,cAAM,sBAAsB,CAAC,SAAS,YAAY,EAAE,SAAS,aAAa,QAAQ,UAAU;AAE5F,YAAI,qBAAqB;AACvB,uBAAa,SAAS,WAAW,aAAa,KAAK,IAAI,GAAG,QAAQ,CAAC;AAAA,QACrE,OAAO;AACL,uBAAa,QAAQ,WAAW,aAAa,KAAK,IAAE;AAAA,QACtD;AACA,aAAK,iBAAiB,YAAY;AAClC,aAAK,eAAe;AACpB,aAAK,eAAeA,MAAK;AAAA,MAC3B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAc,IAAI;AAChB,UAAI,GAAG,QAAQ,eAAe;AAK5B,cAAM,OAAO,WAAW,GAAG,QAAQ,OAAO,KAAK;AAC/C,cAAM,SAAS,SAAS,eAAe,GAAG,QAAQ,aAAa;AAC/D,cAAM,cAAc,SAAU,WAAW,OAAO,KAAK,KAAK,IAAK;AAC/D,eAAO,KAAK,IAAI,GAAG,OAAO,WAAW;AAAA,MACvC;AACA,aAAO,GAAG,QAAQ,KAAK,WAAW,GAAG,GAAG,IAAI;AAAA,IAC9C;AAAA;AAAA;AAAA,IAIA,iBAAkB,UAAU;AAC1B,WAAK,cAAc,QAAQ,QAAM;AAC/B,YAAI,GAAG,QAAQ,kBAAkB,SAAS,GAAI;AAE9C,cAAM,MAAM,KAAK,aAAa,EAAE;AAChC,YAAI,QAAQ,QAAQ,WAAW,GAAG,KAAK,IAAI,KAAK;AAC9C,aAAG,QAAQ;AACX,aAAG,UAAU,OAAO,gBAAgB;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,eAAgBA,QAAO;AACrB,UAAIA,UAASA,OAAM,QAAQ;AACzB,aAAK,iBAAiBA,OAAM,MAAM;AAAA,MACpC;AAEA,UAAIC,WAAU;AACd,WAAK,cAAc,QAAQ,QAAM;AAC/B,cAAM,MAAM,KAAK,aAAa,EAAE;AAChC,cAAM,UAAU,QAAQ,QAAQ,WAAW,GAAG,KAAK,IAAI;AACvD,YAAI,GAAG,SAAS,GAAG,OAAO,MAAM,SAAS;AACvC,UAAAA,WAAU;AACV,aAAG,UAAU,IAAI,gBAAgB;AACjC,cAAGD,QAAM;AACP,YAAAA,OAAM,eAAe;AAAA,UACvB;AAAA,QACF,OAAO;AACL,aAAG,UAAU,OAAO,gBAAgB;AAAA,QACtC;AAAA,MACF,CAAC;AAED,UAAI,KAAK,WAAW;AAClB,aAAK,UAAU,WAAW,CAACC;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,0BAA0BD,QAAO;AACjC,YAAM,oBAAoB,KAAK,cAAc,KAAK,QAAM,GAAG,QAAQ,CAAC;AAEpE,WAAK,cAAc,QAAQ,QAAM;AAC/B,YAAI,mBAAmB;AACrB,aAAG,UAAU,OAAO,gBAAgB;AAAA,QACtC,OAAO;AACL,aAAG,UAAU,IAAI,gBAAgB;AAAA,QACnC;AAAA,MACF,CAAC;AAED,UAAI,KAAK,WAAW;AAClB,aAAK,UAAU,WAAW,CAAC;AAAA,MAC7B;AAEA,UAAIA,UAAS,CAAC,mBAAmB;AAC/B,QAAAA,OAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAAA,IAEE,eAAeA,QAAM;AACnB,UAAI,KAAK,qBAAqB;AAC5B,cAAM,YAAY,SAASA,OAAM,OAAO,QAAQ,SAAS;AACzD,cAAM,eAAe,SAAS,eAAe,GAAG,SAAS,QAAQ;AACjE,cAAM,aAAa,SAAS,eAAe,GAAG,SAAS,WAAW;AAClE,cAAM,QAAQ,WAAW,aAAa,SAAS,aAAa,aAAa,OAAO,CAAC;AACjF,cAAM,MAAM,WAAW,WAAW,SAAS,WAAW,aAAa,OAAO,CAAC;AAC3E,cAAM,gBAAgB,WAAWA,OAAM,OAAO,QAAQ,aAAa;AACnE,aAAK,kBAAkB,WAAW,OAAO,KAAK,aAAa;AAAA,MAC7D;AAAA,IACF;AAAA,IAEA,eAAe,WAAW;AACxB,aAAO,KAAK,cAAc,KAAK,YAAU,OAAO,MAAM,SAAS;AAAA,IACjE;AAAA,IAEA,kBAAkB,WAAW,OAAO,KAAK,eAAc;AACrD,YAAM,cAAc,KAAK,kBAAkB,KAAK,YAAU,OAAO,MAAM,SAAS;AAChF,UAAI,gBAAgB,GAAE;AACpB,oBAAY,YAAY,8BAAyB,QAAQ,KAAK,QAAQ,CAAC,CAAC,cAAS,QAAQ,MAAM,gBAAc,KAAK,QAAQ,CAAC,CAAC,qBAAgB,QAAO,QAAM,gBAAc,OAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,MAC9L,OAAO;AACL,oBAAY,YAAY,6BAAwB,MAAM,QAAQ,CAAC,CAAC,MAAM,GAAG,eAAU,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAAA,MAC5G;AAAA,IACF;AAAA,EACF;;;AC/IA,MAAO,sCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,aAAa,YAAY,OAAO;AAAA,IAClD,UAAU;AACR,eAAS,iBAAiB,SAAS,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,IAChE;AAAA,IACA,sCAAsCE,QAAO;AAC3C,YAAM,aAAaA,OAAM,OAAO;AAChC,UAAG,KAAK,YAAY,UAAU,GAAG;AAC/B,aAAK,iBAAiB,QAAQ,QAAM;AAClC,aAAG,QAAQ;AAAA,QACb,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,YAAYA,QAAO;AACjB,UAAIA,OAAM,OAAO,QAAQ,UAAU,oCAAoC;AACrE,aAAK,YAAY,YAAW;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,YAAY,YAAY;AACtB,YAAM,OAAO,IAAI,KAAK,UAAU;AAChC,aAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,KAAK,KAAK,YAAY,EAAE,MAAM,GAAG,EAAE,MAAM;AAAA,IACvE;AAAA,IAEA,OAAOA,QAAM;AACX,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,aAAa,KAAK;AACxB,WAAK,SAAS,YAAY,QAAQ;AAAA,IACpC;AAAA,IAEA,OAAOA,QAAM;AACX,YAAM,WAAWA,OAAM,OAAO,QAAQ;AACtC,YAAM,aAAa,KAAK;AACxB,WAAK,SAAS,YAAY,QAAQ;AAAA,IACpC;AAAA,IAEA,SAAS,QAAQ,UAAS;AACxB,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,QAAQ,SAAS,GAAG,KAAK,IAAE;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,SAAS,QAAQ,UAAS;AACxB,aAAO,QAAQ,QAAM;AACnB,YAAG,GAAG,QAAQ,YAAY,YAAY,SAAS,GAAG,KAAK,IAAE,GAAG;AAC1D,aAAG,QAAS,WAAW,GAAG,KAAK,IAAE;AAAA,QACnC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,SAASA,QAAO;AACd,UAAI,kBAAkB,KAAK;AAC3B,UAAI,gBAAgB,MAAM,aAAW,QAAQ,SAAS,CAAC,GAAG;AACxD,aAAK,eAAe,qCAAqC;AACzD,QAAAA,OAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,eAAe,KAAK;AAClB,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,EACF;;;AChEA,MAAO,oCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,qBAAqB,iBAAiB,iBAAiB,WAAW;AAAA,IAEpF,UAAW;AACT,UAAI,KAAK,oBAAoB,SAAS;AACpC,aAAK,sBAAsB;AAAA,MAC7B,OAAO;AACL,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,WAAK,oBAAoB,UAAU,OAAO,QAAQ;AAClD,WAAK,wBAAwB,UAAU,IAAI,QAAQ;AAAA,IACrD;AAAA,IAEA,wBAAwB;AACtB,WAAK,wBAAwB,UAAU,OAAO,QAAQ;AACtD,WAAK,oBAAoB,UAAU,IAAI,QAAQ;AAAA,IACjD;AAAA,EAEF;;;ACrBA,MAAO,sCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAO;AAAA,IACzB,UAAU;AACR,UAAI,KAAK,qBAAqB,SAAS;AACrC,aAAK,SAAS;AAAA,MAChB,WAAW,KAAK,oBAAoB,SAAS;AAC3C,aAAK,QAAQ;AAAA,MACf,OACK;AACH,aAAK,kBAAkB,UAAQ;AAC/B,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAAA,IAEA,QAAQ;AACN,WAAK,eAAe,UAAU,IAAI,QAAQ;AAC1C,WAAK,gBAAgB,UAAU,IAAI,QAAQ;AAC3C,YAAM,QAAQ,IAAI,KAAK,KAAK,gBAAgB,KAAK;AACjD,YAAM,QAAQ,KAAK,cAAc,OAAO,CAAC;AACzC,WAAK,gBAAgB,YAAY,MAAM,KAAK,IAAI;AAChD,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,IAEA,WAAW;AACT,WAAK,eAAe,UAAU,OAAO,QAAQ;AAC7C,WAAK,gBAAgB,UAAU,IAAI,QAAQ;AAC3C,WAAK,oBAAoB;AACzB,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,IAEA,UAAU;AACR,WAAK,eAAe,UAAU,IAAI,QAAQ;AAC1C,WAAK,gBAAgB,UAAU,OAAO,QAAQ;AAC9C,WAAK,mBAAmB;AACxB,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,IAEA,cAAc,OAAO,MAAM;AACzB,aAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAACC,IAAG,QAAQ;AAC3C,cAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,aAAK,QAAQ,MAAM,QAAQ,IAAI,MAAM,IAAI;AACzC,eAAO,KAAK,mBAAmB,SAAS,EAAE,KAAK,WAAW,OAAO,QAAQ,CAAC;AAAA,MAC5E,CAAC;AACD,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,IAEA,aAAa;AACX,UAAI,KAAK,kBAAkB,SAAS;AAClC,aAAK,YAAY,YAAY;AAC7B,aAAK,MAAM;AAAA,MACb,WAAW,KAAK,qBAAqB,SAAS;AAC5C,aAAK,YAAY,YAAY;AAC7B,aAAK,SAAS;AAAA,MAChB,OAAO;AACL,aAAK,YAAY,YAAY;AAC7B,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,IAEA,sBAAsB;AACpB,YAAM,aAAa,KAAK,gBAAgB;AACxC,UAAI,OAAO,CAAC;AACZ,WAAK,mBAAmB,QAAQ,QAAM;AACpC,YAAI,GAAG,SAAS;AACd,eAAK,KAAK,GAAG,QAAQ,IAAI;AAAA,QAC3B;AAAA,MACF,CAAC;AACD,UAAI,SAAS,KAAK,iBAAiB,MAAM,UAAU;AACnD,WAAK,gBAAgB,YAAY,OAAO,KAAK,IAAI;AACjD,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,IAEA,iBAAiB,UAAU,YAAY;AACrC,YAAM,aAAa,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAGhG,UAAI,cAAc,IAAI,KAAK,UAAU;AACrC,kBAAY,QAAQ,YAAY,QAAQ,IAAI,CAAC;AAE7C,UAAI,gBAAgB,CAAC;AACrB,UAAI,eAAe,CAAC;AAGpB,eAAS,QAAQ,aAAW;AACxB,YAAI,gBAAgB,WAAW,QAAQ,OAAO;AAC9C,YAAI,kBAAkB,IAAI;AACtB,uBAAa,KAAK,aAAa;AAAA,QACnC;AAAA,MACJ,CAAC;AAGD,UAAI,cAAc,KAAK,KAAK,IAAI,aAAa,MAAM;AAGnD,mBAAa,QAAQ,mBAAiB;AAElC,YAAI,gBAAgB,gBAAgB,YAAY,OAAO;AACvD,YAAI,gBAAgB,GAAG;AACnB,2BAAiB;AAAA,QACrB;AAGA,iBAASC,KAAI,GAAGA,KAAI,aAAaA,MAAK;AAClC,cAAI,eAAe,IAAI,KAAK,WAAW;AACvC,uBAAa,QAAQ,YAAY,QAAQ,IAAI,gBAAiBA,KAAI,CAAE;AACpE,wBAAc,KAAK,aAAa,mBAAmB,SAAS,EAAE,KAAK,WAAW,OAAO,QAAQ,CAAC,CAAC;AAAA,QACnG;AAAA,MACJ,CAAC;AAGD,aAAO,KAAK,WAAW,aAAa,EAAE,MAAM,GAAG,CAAC;AAAA,IAClD;AAAA,IAEA,WAAW,eAAe;AACxB,oBAAc,KAAK,CAACC,IAAGC,OAAM;AAC3B,cAAMC,aAAY,CAAC,YAAY,oBAAI,KAAK,GAAG,OAAO,KAAI,oBAAI,KAAK,GAAE,YAAY,CAAC,EAAE;AAChF,eAAOA,WAAUF,EAAC,IAAIE,WAAUD,EAAC;AAAA,MACnC,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IAEA,qBAAqB;AACnB,UAAI,eAAe,CAAC;AACpB,YAAM,eAAe,KAAK,gBAAgB;AAC1C,WAAK,mBAAmB,QAAQ,QAAM;AACpC,YAAI,GAAG,SAAS;AACd,uBAAa,KAAK,GAAG,QAAQ,IAAI;AAAA,QACnC;AAAA,MACF,CAAC;AACD,YAAM,YAAY,IAAI,KAAK,YAAY;AACvC,UAAI,SAAS,KAAK,sBAAsB,cAAc,SAAS;AAE/D,eAAS,KAAK,oBAAoB,QAAQ,SAAS;AACnD,eAAS,KAAK,wBAAwB,MAAM;AAC5C,WAAK,gBAAgB,YAAY,OAAO,KAAK,IAAI;AACjD,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,IAEA,sBAAsB,cAAc,WAAU;AAC5C,YAAM,eAAe,UAAU,SAAS;AACxC,YAAM,cAAc,UAAU,YAAY;AAC1C,UAAI,SAAS,CAAC;AACd,UAAI,cAAc;AAClB,mBAAa,QAAQ,iBAAe;AAClC,iBAASF,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1B,wBAAc;AACd,gBAAM,SAAS,eAAeA,MAAK;AACnC,gBAAM,OAAO,cAAc,KAAK,OAAO,eAAeA,MAAK,EAAE;AAC7D,gBAAM,iBAAiB,IAAI,KAAK,MAAM,QAAM,GAAG,CAAC,EAAE,QAAQ;AAC1D,cAAI,eAAe,IAAG;AACrB,0BAAc,eAAe,SAAS;AAAA,UACvC;AACA,cAAI,SAAS,WAAW,KAAK,kBAAkB,cAAc,GAAI;AAC/D,kBAAM,OAAO,cAAc,IAAI,IAAI,KAAK,MAAM,OAAO,WAAW,IAAI,IAAI,KAAK,MAAM,OAAO,WAAW;AACrG,mBAAO,KAAK,EAAC,KAAU,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IAEA,oBAAoB,QAAQ,WAAW;AACrC,gBAAU,SAAS,GAAG,GAAG,GAAG,CAAC;AAC7B,eAAS,OAAO,OAAO,UAAQ,KAAK,QAAQ,SAAS;AAErD,aAAO,KAAK,SAASC,IAAEC,IAAE;AACvB,eAAO,IAAI,KAAKD,GAAE,IAAI,IAAE,IAAI,KAAKC,GAAE,IAAI;AAAA,MACzC,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IAEA,wBAAwB,QAAQ;AAG9B,YAAM,aAAa;AAAA,QAAC;AAAA,QAAW;AAAA,QAAY;AAAA,QAAS;AAAA,QAAS;AAAA,QAAO;AAAA,QAChE;AAAA,QAAQ;AAAA,QAAU;AAAA,QAAa;AAAA,QAAW;AAAA,QAAY;AAAA,MAC1D;AAGA,YAAM,sBAAsB,OAC3B;AAAA,QAAO,CAAC,MAAME,QAAOC,UAClBD,WAAUC,MAAK,UAAU,SAAO,IAAI,KAAK,QAAQ,MAAM,KAAK,KAAK,QAAQ,CAAC;AAAA,MAC9E,EACC,MAAM,GAAG,CAAC,EACV,IAAI,UAAQ;AACT,cAAM,OAAO,KAAK,KAAK,QAAQ;AAC/B,cAAM,QAAQ,WAAW,KAAK,KAAK,SAAS,CAAC;AAC7C,eAAO,GAAG,IAAI,IAAI,KAAK;AAAA,MAC3B,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,SAASC,QAAO;AACd,UAAI,oBAAoB,KAAK;AAC7B,UAAI,qBAAqB,KAAK;AAC9B,UAAI,KAAK,qBAAqB,SAAS;AACrC,YAAI,kBAAkB,KAAK,aAAW,QAAQ,OAAO,KAAK,OAAO;AAC/D,eAAK,eAAe,uBAAuB;AAC3C,UAAAA,OAAM,eAAe;AAAA,QACvB;AAAA,MACF,WAAU,KAAK,oBAAoB,SAAS;AAC1C,YAAI,mBAAmB,KAAK,aAAW,QAAQ,OAAO,KAAK,OAAO;AAChE,eAAK,eAAe,wBAAwB;AAC5C,UAAAA,OAAM,eAAe;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,eAAe,KAAK;AAClB,WAAK,YAAY,YAAY;AAAA,IAC/B;AAAA,EACF;;;AC5NA,MAAO,mCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,UAAU,UAAU;AAAA,IACtC,UAAU;AAAA,IAAE;AAAA,IAEZ,MAAM,SAASC,QAAO;AACpB,YAAM,gBAAgB,KAAK,aAAa;AACxC,YAAM,gBAAgB,SAAS;AAC/B,YAAM,WAAW,KAAK,aAAa,QAAQ;AAC3C,YAAM,cAAcA,OAAM,cAAc,QAAQ;AAEhD,YAAM,iBAAiB,SAAS,cAAc,KAAK;AACnD,qBAAe,YAAY;AAE3B,qBAAe,UAAU,IAAI,YAAY;AAGzC,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,YAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKN,WAAW;AAAA;AAAA;AAAA;AAAA;AAKvB,eAAS,KAAK,YAAY,KAAK;AAE/B,eAAS,KAAK,YAAY,cAAc;AAExC,eAAS,QAAQ;AAGjB,YAAM,IAAI,QAAQ,CAACC,aAAY;AAC7B,eAAO,eAAe,MAAM;AAC1B,UAAAA,SAAQ;AAAA,QACV;AACA,eAAO,MAAM;AAAA,MACf,CAAC;AAED,eAAS,QAAQ;AACjB,eAAS,KAAK,YAAY,cAAc;AACxC,eAAS,KAAK,YAAY,KAAK;AAAA,IACjC;AAAA,EACF;;;AC7CA,MAAO,yCAAP,cAA6B,WAAW;AAAA,IACtC,OAAOC,QAAO;AACZ,MAAAA,OAAM,eAAe;AAErB,YAAM,OAAO,KAAK;AAClB,YAAM,aAAa,SAAS,eAAe,oBAAoB;AAC/D,YAAM,mBAAmB,KAAK,cAAc,eAAe;AAC3D,YAAM,mBAAmB,KAAK,cAAc,eAAe;AAC3D,YAAM,qBAAqB,KAAK,cAAc,qBAAqB;AACnE,YAAM,cAAc,KAAK,SAAS,iBAAiB,KAAK;AACxD,YAAM,cAAc,WAAW,iBAAiB,KAAK,EAAE,QAAQ,CAAC;AAChE,YAAM,eAAe,mBAAmB;AACxC,YAAM,iBAAiB,WAAW,cAAc,kBAAkB;AAClE,YAAM,cAAc,KAAK,oBAAoB,aAAa,YAAY;AAEtE,WAAK,iBAAiB;AACtB,WAAK,uBAAuB,YAAY,aAAa,aAAa,aAAa,cAAc,gBAAgB,IAAI;AAAA,IACnH;AAAA,IACA,mBAAmB;AACjB,eAAS,eAAe,gBAAgB,EAAE,aAAa,QAAQ,IAAI;AAAA,IACrE;AAAA,IAEA,uBAAuB,YAAY,aAAa,aAAa,aAAa,cAAc,gBAAgB,MAAM;AAC5G,iBAAW,UAAU,OAAO,QAAQ;AACpC,WAAK,sBAAsB,gBAAgB,YAAY;AACvD,WAAK,0BAA0B,YAAY,aAAa,aAAa,WAAW;AAChF,WAAK,8BAA8B,YAAY,IAAI;AAAA,IACrD;AAAA,IAEA,sBAAsB,gBAAgB,cAAc;AAClD,qBAAe,UAAU,OAAO,UAAU,CAAC,YAAY;AAAA,IACzD;AAAA,IAEA,0BAA0B,YAAY,aAAa,aAAa,aAAa;AAC3E,iBAAW,cAAc,eAAe,EAAE,cAAc;AACxD,iBAAW,cAAc,eAAe,EAAE,cAAc,SAAS,WAAW;AAC5E,iBAAW,cAAc,eAAe,EAAE,cAAc;AAAA,IAC1D;AAAA,IAEA,8BAA8B,YAAY,MAAM;AAC9C,iBAAW,iBAAiB,aAAa,MAAM;AAC7C,iCAAM,UAAU,WAAW,IAAI;AAAA,MACjC,CAAC;AAED,iBAAW,iBAAiB,YAAY,MAAM;AAC5C,mBAAW,UAAU,IAAI,QAAQ;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB,aAAa,cAAc;AAC7C,YAAM,sBAAsB,eAAe,eAAe;AAC1D,YAAM,sBAAsB,eAAe,SAAS;AACpD,YAAM,UAAU,eAAe,OAAO;AAEtC,aAAO,OAAO,WAAW,6BAA6B,mBAAmB,qBAAqB,mBAAmB,SAAS,OAAO;AAAA,IACnI;AAAA,IAEA,UAAU;AACR,WAAK,eAAe;AACpB,WAAK,0BAA0B,WAAW;AAAA,IAC5C;AAAA,IAEA,SAAS;AACP,WAAK,eAAe;AACpB,WAAK,0BAA0B,UAAU;AAAA,IAC3C;AAAA,IAEA,iBAAiB;AACf,WAAK,QAAQ,UAAU,IAAI,QAAQ;AAAA,IACrC;AAAA,IAEA,0BAA0B,WAAW;AACnC,WAAK,QAAQ,cAAc,IAAI,YAAY,SAAS,CAAC;AAAA,IACvD;AAAA,IAEA,SAAS,KAAK;AACZ,aAAO,IAAI,YAAY,EAAE,QAAQ,iBAAiB,CAACC,WAAUA,OAAM,YAAY,CAAC;AAAA,IAClF;AAAA,EACF;;;AC9EA,MAAO,4CAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,oBAAoB,OAAO;AAAA,IAE7C,QAAQC,QAAO;AACb,YAAM,QAAQA,OAAM;AACpB,YAAM,QAAQ,MAAM;AAEpB,WAAK,uBAAuB,YAAY;AAExC,YAAM,KAAK,KAAK,EAAE,QAAQ,CAAC,MAAMC,WAAU;AACzC,YAAI,KAAK,KAAK,WAAW,QAAQ,GAAG;AAClC,gBAAM,SAAS,IAAI,WAAW;AAC9B,iBAAO,SAAS,CAACC,OAAM;AACrB,kBAAM,eAAe,SAAS,cAAc,KAAK;AACjD,yBAAa,YAAY;AAEzB,kBAAM,MAAM,SAAS,cAAc,KAAK;AACxC,gBAAI,MAAMA,GAAE,OAAO;AACnB,gBAAI,YAAY;AAChB,yBAAa,YAAY,GAAG;AAE5B,kBAAM,YAAY,SAAS,cAAc,QAAQ;AACjD,sBAAU,YAAY;AAEtB,kBAAM,aAAa,SAAS,cAAc,KAAK;AAC/C,uBAAW,MAAM;AACjB,uBAAW,YAAY;AACvB,sBAAU,YAAY,UAAU;AAEhC,sBAAU,QAAQ,QAAQD;AAC1B,sBAAU,iBAAiB,SAAS,MAAM,KAAK,YAAYA,MAAK,CAAC;AACjE,yBAAa,YAAY,SAAS;AAElC,iBAAK,uBAAuB,YAAY,YAAY;AAAA,UACtD;AACA,iBAAO,cAAc,IAAI;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,YAAYA,QAAO;AAEjB,YAAM,aAAa,MAAM,KAAK,KAAK,uBAAuB,QAAQ;AAClE,YAAM,aAAa,WAAWA,MAAK;AAEnC,UAAI,YAAY;AACd,aAAK,uBAAuB,YAAY,UAAU;AAAA,MACpD;AAGA,YAAM,eAAe,IAAI,aAAa;AACtC,YAAM,aAAa,MAAM,KAAK,KAAK,YAAY,KAAK;AAEpD,iBAAW,QAAQ,CAAC,MAAME,OAAM;AAC9B,YAAIA,OAAMF,QAAO;AACf,uBAAa,MAAM,IAAI,IAAI;AAAA,QAC7B;AAAA,MACF,CAAC;AAED,WAAK,YAAY,QAAQ,aAAa;AAGtC,WAAK,QAAQ,EAAE,QAAQ,KAAK,YAAY,CAAC;AAAA,IAC3C;AAAA,EACF;;;AChEA,MAAO,8BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,aAAa,oBAAoB,gBAAgB,gBAAgB,2BAA2B;AAAA,IAC9G,UAAU;AAAA,IACV;AAAA,IAEA,kBAAkBG,QAAM;AACtB,YAAM,YAAY,KAAK,gBAAgB;AACvC,YAAM,mBAAmB,KAAK,gBAAgB,QAAQ;AACtD,WAAK,8BAA8B,WAAW,kBAAiBA,MAAK;AAAA,IACtE;AAAA,IAEA,8BAA8B,WAAW,kBAAkBA,QAAM;AAC/D,YAAM,yBAAyB,KAAK;AACpC,UAAK,cAAc,kBAAoB;AACrC,+BAAuB,UAAU,IAAI,QAAQ;AAC7C,aAAK,iBAAiB;AACtB,aAAK,SAAS,EAAE;AAAA,MAClB,WAAW,cAAc,KAAK,uBAAuB,OAAQ;AAC3D,aAAK,iBAAiB;AACtB,aAAK,SAAS,EAAE;AAAA,MAClB,OAAO;AACL,+BAAuB,UAAU,OAAO,QAAQ;AAChD,aAAK,SAAS,6BAA6B;AAC3C,QAAAA,OAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAAA,IAGA,mBAAkB;AAChB,WAAK,mBAAmB,WAAW;AAAA,IACrC;AAAA,IAEA,mBAAkB;AAChB,WAAK,mBAAmB,WAAW;AAAA,IACrC;AAAA,IAEA,SAAS,KAAI;AACX,WAAK,mBAAmB,cAAc;AAAA,IACxC;AAAA,EACF;;;ACvCA,MAAO,uCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,oBAAmB,mBAAkB,kBAAiB,mBAAkB,gBAAe,eAAc,SAAS;AAAA,IAChI,UAAU;AAAA,IACV;AAAA,IAEA,gBAAgB,cAAc,gBAAgB,wBAAwB,kBAAkB;AACtF,YAAM,aAAa,eAAe,yBAAyB;AAE3D,UAAI,eAAe,KAAK,MAAM,UAAU,GAAG;AACzC,yBAAiB,UAAU,IAAI,QAAQ;AAAA,MACzC,OAAO;AACL,yBAAiB,cAAc,WAAW,EAAE,YAAY;AACxD,yBAAiB,UAAU,OAAO,QAAQ;AAAA,MAE5C;AAAA,IACF;AAAA,IAEA,wBAAwB;AACtB,YAAM,eAAe,SAAS,KAAK,cAAc,OAAO,EAAE;AAC1D,YAAM,kBAAkB,SAAS,KAAK,sBAAsB,OAAO,EAAE;AACrE,YAAM,eAAe,SAAS,KAAK,mBAAmB,WAAW,EAAE;AAEnE,WAAK,gBAAgB,cAAc,iBAAiB,cAAc,KAAK,sBAAsB;AAAA,IAC/F;AAAA,IAEA,uBAAuB;AACrB,YAAM,cAAc,SAAS,KAAK,kBAAkB,aAAa,EAAE;AACnE,YAAM,iBAAiB,SAAS,KAAK,qBAAqB,OAAO,EAAE;AACnE,WAAK,gBAAgB,aAAa,gBAAgB,GAAG,KAAK,qBAAqB;AAAA,IACjF;AAAA,EAEF;;;AC/BA,MAAO,qCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAU;AAAA,IAEV;AAAA,IAEA,eAAe;AACb,UAAI,KAAK,mBAAmB,SAAS;AACnC,aAAK,oBAAoB;AAAA,MAC3B,OAAO;AACL,aAAK,gBAAgB;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,sBAAsB;AAEpB,WAAK,qBAAqB,UAAU,IAAI,QAAQ;AAChD,WAAK,iBAAiB,WAAW;AAGjC,WAAK,yBAAyB,UAAU,OAAO,QAAQ;AACvD,WAAK,gBAAgB,QAAQ,WAAS,MAAM,WAAW,KAAK;AAAA,IAC9D;AAAA,IAEA,kBAAkB;AAEhB,WAAK,yBAAyB,UAAU,IAAI,QAAQ;AACpD,WAAK,gBAAgB,QAAQ,WAAS,MAAM,WAAW,IAAI;AAG3D,WAAK,qBAAqB,UAAU,OAAO,QAAQ;AACnD,WAAK,iBAAiB,WAAW;AAAA,IACnC;AAAA,IAEA,IAAI,kBAAkB;AACpB,aAAO,KAAK;AAAA,IACd;AAAA,EACF;;;AC3CA,MAAO,yCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,qBAAqB,eAAe,sBAAsB,mBAAmB,wBAAwB,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAS3I,cAAcC,QAAO;AAEjB,YAAM,cAAc,KAAK;AACzB,YAAM,qBAAqB,KAAK;AAChC,UAAI,YAAY,SAAS,YAAY,MAAM,SAAO,IAAG;AACnD,oBAAY,UAAU,IAAI,gBAAgB;AAC1C,QAAAA,OAAM,eAAe;AAAA,MACvB;AAEA,UAAI,mBAAmB,SAAS,mBAAmB,MAAM,SAAO,IAAG;AACjE,2BAAmB,UAAU,IAAI,gBAAgB;AACjD,QAAAA,OAAM,eAAe;AAAA,MACvB;AAAA,IAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYA,qBAAoB;AAClB,YAAM,cAAc,KAAK;AACzB,YAAM,qBAAqB,KAAK;AAChC,YAAM,kBAAkB,KAAK;AAC7B,UAAG,gBAAgB,WAAW,YAAY,UAAU,IAAI;AACtD,2BAAmB,QAAQ,YAAY;AAAA,MACzC,OAAO;AACL,2BAAmB,QAAQ,mBAAmB,QAAQ;AACtD,wBAAgB,UAAU;AAAA,MAC5B;AAAA,IACF;AAAA,IAEA,uBAAsB;AACpB,YAAM,cAAc,KAAK;AACzB,YAAM,qBAAqB,KAAK;AAChC,YAAM,kBAAkB,KAAK;AAC7B,UAAG,YAAY,SAAS,mBAAmB,OAAO;AAChD,wBAAgB,UAAU;AAAA,MAC5B,OAAO;AACL,wBAAgB,UAAU;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;;;AC1DA,MAAO,sCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAQ,CAAC,mBAAmB;AAAA,IAEnC,eAAeC,QAAM;AACnB,UAAI,uBAAuB,CAAC,mBAAmB,kBAAkB,sBAAsB,oBAAoB;AAC3G,UAAG,qBAAqB,SAASA,OAAM,OAAO,KAAK,GAAE;AACnD,aAAK,wBAAwB,UAAU,OAAO,QAAQ;AAAA,MACxD,OAAO;AACL,aAAK,wBAAwB,UAAU,IAAI,QAAQ;AAAA,MACrD;AAAA,IACF;AAAA,EACF;;;ACXA,MAAO,6BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,iBAAiB;AAAA,IACnC,UAAW;AACT,WAAK,iBAAiB;AAAA,IACxB;AAAA,IAEA,mBAAoB;AAClB,UAAI,iBAAiB,KAAK,sBAAsB;AAChD,WAAK,QAAQ,SAAS,gBAAgB,cAAc;AAAA,IACtD;AAAA,EACF;;;ACVA,MAAO,qCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,cAAc,QAAQ;AAAA,IACxC,UAAW;AACT,WAAK,WAAW;AAAA,IAClB;AAAA,IAEA,aAAc;AACZ,YAAM,iBACJ,KAAK,iBAAiB,QAAQ,KAAK,iBAAiB,aAAa,EAAE;AAErE,cAAQ,gBAAgB;AAAA,QACtB,KAAK;AACH,eAAK,aAAa,cAChB;AACF;AAAA,QAEF,KAAK;AACH,eAAK,aAAa,cAChB;AACF;AAAA,QAEF,KAAK;AACH,eAAK,aAAa,cAChB;AACF;AAAA,QAEF,KAAK;AACH,eAAK,aAAa,cAChB;AACF;AAAA,QAEF,KAAK;AACH,eAAK,aAAa,cAChB;AACF;AAAA,QAEF,KAAK;AACH,eAAK,aAAa,cAChB;AACF;AAAA,QAEF,KAAK;AACH,eAAK,aAAa,cAChB;AACF;AAAA,QAEF,KAAK;AACD,eAAK,aAAa,cAChB;AACJ;AAAA,QACF;AAAQ,eAAK,aAAa,cAAY;AAAA,MACxC;AAAA,IACF;AAAA,EACF;;;ACrDA,MAAO,uCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,aAAa,aAAa,YAAY,eAAe,mBAAmB,kBAAkB,eAAc,iBAAiB,gBAAgB;AAAA,IAC3J,UAAU;AACR,UAAG,KAAK,kBAAkB,SAAS;AACjC,aAAK,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,kBAAkB,QAAQ,SAAS,EAAE,EAAE,CAAC;AAAA,MAC3F,WAAU,KAAK,sBAAsB,SAAS;AAC5C,aAAK,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,sBAAsB,QAAQ,SAAS,EAAE,EAAE,CAAC;AAAA,MACnG,OAAO;AACL,aAAK,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,qBAAqB,QAAQ,SAAS,EAAE,EAAE,CAAC;AAAA,MACjG;AAAA,IACF;AAAA,IAEA,MAAMC,QAAO;AACX,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,WAAK,eAAe,UAAU,IAAI,QAAQ;AAC1C,YAAM,QAAQ,IAAI,KAAK,KAAK,gBAAgB,KAAK;AACjD,YAAM,QAAQ,KAAK,cAAc,OAAO,CAAC;AACzC,WAAK,gBAAgB,YAAY,MAAM,KAAK,IAAI;AAChD,WAAK,sCAAsC,UAAU,OAAO;AAAA,IAC9D;AAAA,IAEA,UAAUA,QAAO;AACf,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,WAAK,eAAe,UAAU,IAAI,QAAQ;AAC1C,YAAM,QAAQ,IAAI,KAAK,KAAK,gBAAgB,KAAK;AACjD,YAAM,QAAQ,KAAK,cAAc,OAAO,CAAC;AACzC,WAAK,gBAAgB,YAAY,MAAM,KAAK,IAAI;AAChD,WAAK,sCAAsC,UAAU,WAAW;AAAA,IAClE;AAAA,IAEA,SAASA,QAAO;AACd,UAAI,WAAWA,OAAM,OAAO,QAAQ;AACpC,WAAK,eAAe,UAAU,OAAO,QAAQ;AAC7C,WAAK,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,kBAAkB,QAAQ,SAAS,EAAE,EAAE,CAAC;AAC/F,WAAK,sCAAsC,UAAU,QAAQ;AAAA,IAC/D;AAAA,IAEA,cAAc,OAAO,MAAM;AACzB,aAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAACC,IAAG,QAAQ;AAC3C,cAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,aAAK,QAAQ,MAAM,QAAQ,IAAI,MAAM,IAAI;AACzC,eAAO,KAAK,mBAAmB,SAAS,EAAE,KAAK,WAAW,OAAO,QAAQ,CAAC;AAAA,MAC5E,CAAC;AAAA,IACH;AAAA,IAEA,aAAa;AACX,UAAI,KAAK,kBAAkB,SAAS;AAClC,aAAK,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,kBAAkB,QAAQ,SAAS,EAAE,EAAE,CAAC;AAAA,MAC3F,WAAW,KAAK,sBAAsB,SAAS;AAC7C,aAAK,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,sBAAsB,QAAQ,SAAS,EAAE,EAAE,CAAC;AAAA,MACnG,OAAO;AACL,aAAK,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,kBAAkB,QAAQ,SAAS,EAAE,EAAE,CAAC;AAAA,MACjG;AAAA,IACF;AAAA,IAEA,YAAYD,QAAO;AACjB,YAAM,aAAa,KAAK,gBAAgB;AACxC,UAAI,OAAO,CAAC;AACZ,WAAK,mBAAmB,QAAQ,QAAM;AACpC,YAAI,GAAG,SAAS;AACd,eAAK,KAAK,GAAG,QAAQ,IAAI;AAAA,QAC3B;AAAA,MACF,CAAC;AACD,UAAI,SAAS,KAAK,iBAAiB,MAAM,UAAU;AACnD,WAAK,gBAAgB,YAAY,OAAO,KAAK,IAAI;AACjD,WAAK,eAAeA,OAAM,OAAO,QAAQ,QAAQ;AAAA,IACnD;AAAA,IAEA,iBAAiB,UAAU,YAAY;AACrC,YAAM,aAAa,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAGhG,UAAI,cAAc,IAAI,KAAK,UAAU;AACrC,kBAAY,QAAQ,YAAY,QAAQ,IAAI,CAAC;AAE7C,UAAI,gBAAgB,CAAC;AACrB,UAAI,eAAe,CAAC;AAGpB,eAAS,QAAQ,aAAW;AACxB,YAAI,gBAAgB,WAAW,QAAQ,OAAO;AAC9C,YAAI,kBAAkB,IAAI;AACtB,uBAAa,KAAK,aAAa;AAAA,QACnC;AAAA,MACJ,CAAC;AAGD,UAAI,cAAc,KAAK,KAAK,IAAI,aAAa,MAAM;AAGnD,mBAAa,QAAQ,mBAAiB;AAElC,YAAI,gBAAgB,gBAAgB,YAAY,OAAO;AACvD,YAAI,gBAAgB,GAAG;AACnB,2BAAiB;AAAA,QACrB;AAGA,iBAASE,KAAI,GAAGA,KAAI,aAAaA,MAAK;AAClC,cAAI,eAAe,IAAI,KAAK,WAAW;AACvC,uBAAa,QAAQ,YAAY,QAAQ,IAAI,gBAAiBA,KAAI,CAAE;AACpE,wBAAc,KAAK,aAAa,mBAAmB,SAAS,EAAE,KAAK,WAAW,OAAO,QAAQ,CAAC,CAAC;AAAA,QACnG;AAAA,MACJ,CAAC;AAGD,aAAO,cAAc,KAAK,EAAE,MAAM,GAAG,CAAC;AAAA,IACxC;AAAA,IAEA,sCAAsC,UAAU,OAAO;AACrD,UAAI,uBAAuB,KAAK;AAChC,2BAAqB,QAAQ,QAAM;AACjC,YAAG,GAAG,QAAQ,YAAY,UAAU;AAClC,aAAG,QAAQ;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,eAAe,UAAU;AACvB,WAAK,sBAAsB,QAAQ,QAAI;AACrC,YAAI,GAAG,QAAQ,YAAY,UAAU;AACnC,aAAG,YAAY;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;;;AC7HA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,OAAO;AAAA,IAEzB,UAAU;AACR,YAAMC,MAAK,KAAK,QAAQ,cAAc,6BAA6B,EAAE,UACjE,+BACA;AACJ,WAAK,eAAe,EAAE,QAAQ,EAAE,IAAAA,IAAG,EAAE,CAAC;AAAA,IACxC;AAAA,IAEA,YAAW;AACT,YAAM,cAAc,KAAK;AACzB,UAAG,YAAY,SAAS,IAAG;AACzB,oBAAY,QAAQ;AAAA,MACtB;AACA,kBAAY,OAAO;AACnB,WAAK,SAAS;AAAA,IAChB;AAAA,IAEA,YAAW;AACT,YAAM,cAAc,KAAK;AACzB,UAAG,YAAY,SAAS,IAAG;AACzB,oBAAY,QAAQ;AAAA,MACtB;AACA,kBAAY,SAAS;AACrB,WAAK,SAAS;AAAA,IAChB;AAAA,IAEA,WAAU;AACR,YAAM,cAAc,KAAK;AACzB,UAAK,SAAS,YAAY,KAAK,KAAK,GAAE;AACpC,oBAAY,UAAU,OAAO,gBAAgB;AAAA,MAC/C,OAAO;AACL,oBAAY,UAAU,IAAI,gBAAgB;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,eAAeC,QAAM;AACnB,YAAM,eAAgB,KAAK,QAAQ,cAAc,gBAAgB;AACjE,UAAIA,OAAM,OAAO,GAAG,MAAM,EAAE,KAAK,MAAK;AACpC,qBAAa,UAAU,IAAI,QAAQ;AAAA,MACrC,OAAO;AACL,qBAAa,UAAU,OAAO,QAAQ;AAAA,MACxC;AAAA,IACF;AAAA,EACF;;;AC9CA,MAAO,mCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,MAAM;AAAA,IACxB,UAAW;AAAA,IACX;AAAA,IAEA,OAAQC,QAAO;AACb,YAAM,cAAcA,OAAM,OAAO,MAAM,YAAY;AAEnD,WAAK,YAAY,QAAQ,UAAQ;AAC/B,cAAM,WAAW,KACd,cAAc,YAAY,EAC1B,YAAY,YAAY;AAE3B,YAAI,SAAS,SAAS,WAAW,GAAG;AAClC,eAAK,UAAU,OAAO,QAAQ;AAAA,QAChC,OAAO;AACL,eAAK,UAAU,IAAI,QAAQ;AAAA,QAC7B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;;;ACnBA,MAAO,wCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,QAAQ;AAAA,IAE1B,UAAU;AACR,WAAK,WAAW;AAChB,eAAS,iBAAiB,8BAA8B,KAAK,WAAW,KAAK,IAAI,CAAC;AAClF,eAAS,iBAAiB,sBAAsB,KAAK,WAAW,KAAK,IAAI,CAAC;AAC1E,eAAS,iBAAiB,cAAc,KAAK,WAAW,KAAK,IAAI,CAAC;AAAA,IACpE;AAAA,IAEA,aAAa;AACX,eAAS,oBAAoB,8BAA8B,KAAK,WAAW,KAAK,IAAI,CAAC;AACrF,eAAS,oBAAoB,sBAAsB,KAAK,WAAW,KAAK,IAAI,CAAC;AAC7E,eAAS,oBAAoB,cAAc,KAAK,WAAW,KAAK,IAAI,CAAC;AAAA,IACvE;AAAA,IAGA,aAAa;AACX,WAAK,aAAa,UAAU,OAAO,QAAQ;AAAA,IAC7C;AAAA,IAEA,aAAa;AACX,WAAK,aAAa,UAAU,IAAI,QAAQ;AAAA,IAC1C;AAAA,EACF;;;ACxBA,MAAO,4BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,QAAQ;AAAA,IAC1B,UAAU;AAAA,IACV;AAAA,IAEA,OAAO;AACL,WAAK,aAAa,UAAU,OAAO,QAAQ;AAAA,IAC7C;AAAA,IAEA,OAAO;AACL,WAAK,aAAa,UAAU,IAAI,QAAQ;AAAA,IAC1C;AAAA,EAEF;;;ACVA,WAAS,QAAQ,QAAQ,gBAAgB;AACvC,QAAI,OAAO,OAAO,KAAK,MAAM;AAC7B,QAAI,OAAO,uBAAuB;AAChC,UAAI,UAAU,OAAO,sBAAsB,MAAM;AACjD,UAAI,gBAAgB;AAClB,kBAAU,QAAQ,OAAO,SAAU,KAAK;AACtC,iBAAO,OAAO,yBAAyB,QAAQ,GAAG,EAAE;AAAA,QACtD,CAAC;AAAA,MACH;AACA,WAAK,KAAK,MAAM,MAAM,OAAO;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AACA,WAAS,eAAe,QAAQ;AAC9B,aAASC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,UAAI,SAAS,UAAUA,EAAC,KAAK,OAAO,UAAUA,EAAC,IAAI,CAAC;AACpD,UAAIA,KAAI,GAAG;AACT,gBAAQ,OAAO,MAAM,GAAG,IAAI,EAAE,QAAQ,SAAU,KAAK;AACnD,0BAAgB,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,QAC1C,CAAC;AAAA,MACH,WAAW,OAAO,2BAA2B;AAC3C,eAAO,iBAAiB,QAAQ,OAAO,0BAA0B,MAAM,CAAC;AAAA,MAC1E,OAAO;AACL,gBAAQ,OAAO,MAAM,CAAC,EAAE,QAAQ,SAAU,KAAK;AAC7C,iBAAO,eAAe,QAAQ,KAAK,OAAO,yBAAyB,QAAQ,GAAG,CAAC;AAAA,QACjF,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,QAAQ,KAAK;AACpB;AAEA,QAAI,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,UAAU;AACvE,gBAAU,SAAUC,MAAK;AACvB,eAAO,OAAOA;AAAA,MAChB;AAAA,IACF,OAAO;AACL,gBAAU,SAAUA,MAAK;AACvB,eAAOA,QAAO,OAAO,WAAW,cAAcA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;AAAA,MAC3H;AAAA,IACF;AACA,WAAO,QAAQ,GAAG;AAAA,EACpB;AACA,WAAS,gBAAgB,KAAK,KAAK,OAAO;AACxC,QAAI,OAAO,KAAK;AACd,aAAO,eAAe,KAAK,KAAK;AAAA,QAC9B;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,UAAU;AAAA,MACZ,CAAC;AAAA,IACH,OAAO;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACA,WAAS,WAAW;AAClB,eAAW,OAAO,UAAU,SAAU,QAAQ;AAC5C,eAASD,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,YAAI,SAAS,UAAUA,EAAC;AACxB,iBAAS,OAAO,QAAQ;AACtB,cAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrD,mBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,WAAO,SAAS,MAAM,MAAM,SAAS;AAAA,EACvC;AACA,WAAS,8BAA8B,QAAQ,UAAU;AACvD,QAAI,UAAU,KAAM,QAAO,CAAC;AAC5B,QAAI,SAAS,CAAC;AACd,QAAI,aAAa,OAAO,KAAK,MAAM;AACnC,QAAI,KAAKA;AACT,SAAKA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACtC,YAAM,WAAWA,EAAC;AAClB,UAAI,SAAS,QAAQ,GAAG,KAAK,EAAG;AAChC,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AACA,WAAS,yBAAyB,QAAQ,UAAU;AAClD,QAAI,UAAU,KAAM,QAAO,CAAC;AAC5B,QAAI,SAAS,8BAA8B,QAAQ,QAAQ;AAC3D,QAAI,KAAKA;AACT,QAAI,OAAO,uBAAuB;AAChC,UAAI,mBAAmB,OAAO,sBAAsB,MAAM;AAC1D,WAAKA,KAAI,GAAGA,KAAI,iBAAiB,QAAQA,MAAK;AAC5C,cAAM,iBAAiBA,EAAC;AACxB,YAAI,SAAS,QAAQ,GAAG,KAAK,EAAG;AAChC,YAAI,CAAC,OAAO,UAAU,qBAAqB,KAAK,QAAQ,GAAG,EAAG;AAC9D,eAAO,GAAG,IAAI,OAAO,GAAG;AAAA,MAC1B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AA2BA,MAAIE,WAAU;AAEd,WAAS,UAAU,SAAS;AAC1B,QAAI,OAAO,WAAW,eAAe,OAAO,WAAW;AACrD,aAAO,CAAC,CAAe,0BAAU,UAAU,MAAM,OAAO;AAAA,IAC1D;AAAA,EACF;AACA,MAAI,aAAa,UAAU,uDAAuD;AAClF,MAAI,OAAO,UAAU,OAAO;AAC5B,MAAI,UAAU,UAAU,UAAU;AAClC,MAAI,SAAS,UAAU,SAAS,KAAK,CAAC,UAAU,SAAS,KAAK,CAAC,UAAU,UAAU;AACnF,MAAI,MAAM,UAAU,iBAAiB;AACrC,MAAI,mBAAmB,UAAU,SAAS,KAAK,UAAU,UAAU;AAEnE,MAAI,cAAc;AAAA,IAChB,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACA,WAAS,GAAG,IAAIC,QAAOC,KAAI;AACzB,OAAG,iBAAiBD,QAAOC,KAAI,CAAC,cAAc,WAAW;AAAA,EAC3D;AACA,WAAS,IAAI,IAAID,QAAOC,KAAI;AAC1B,OAAG,oBAAoBD,QAAOC,KAAI,CAAC,cAAc,WAAW;AAAA,EAC9D;AACA,WAAS,QAAyB,IAAe,UAAU;AACzD,QAAI,CAAC,SAAU;AACf,aAAS,CAAC,MAAM,QAAQ,WAAW,SAAS,UAAU,CAAC;AACvD,QAAI,IAAI;AACN,UAAI;AACF,YAAI,GAAG,SAAS;AACd,iBAAO,GAAG,QAAQ,QAAQ;AAAA,QAC5B,WAAW,GAAG,mBAAmB;AAC/B,iBAAO,GAAG,kBAAkB,QAAQ;AAAA,QACtC,WAAW,GAAG,uBAAuB;AACnC,iBAAO,GAAG,sBAAsB,QAAQ;AAAA,QAC1C;AAAA,MACF,SAASC,IAAG;AACV,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,gBAAgB,IAAI;AAC3B,WAAO,GAAG,QAAQ,OAAO,YAAY,GAAG,KAAK,WAAW,GAAG,OAAO,GAAG;AAAA,EACvE;AACA,WAAS,QAAyB,IAAe,UAA0B,KAAK,YAAY;AAC1F,QAAI,IAAI;AACN,YAAM,OAAO;AACb,SAAG;AACD,YAAI,YAAY,SAAS,SAAS,CAAC,MAAM,MAAM,GAAG,eAAe,OAAO,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,MAAM,cAAc,OAAO,KAAK;AAClJ,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,IAAK;AAAA,MAElB,SAAS,KAAK,gBAAgB,EAAE;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AACA,MAAI,UAAU;AACd,WAAS,YAAY,IAAI,MAAM,OAAO;AACpC,QAAI,MAAM,MAAM;AACd,UAAI,GAAG,WAAW;AAChB,WAAG,UAAU,QAAQ,QAAQ,QAAQ,EAAE,IAAI;AAAA,MAC7C,OAAO;AACL,YAAI,aAAa,MAAM,GAAG,YAAY,KAAK,QAAQ,SAAS,GAAG,EAAE,QAAQ,MAAM,OAAO,KAAK,GAAG;AAC9F,WAAG,aAAa,aAAa,QAAQ,MAAM,OAAO,KAAK,QAAQ,SAAS,GAAG;AAAA,MAC7E;AAAA,IACF;AAAA,EACF;AACA,WAAS,IAAI,IAAI,MAAM,KAAK;AAC1B,QAAI,QAAQ,MAAM,GAAG;AACrB,QAAI,OAAO;AACT,UAAI,QAAQ,QAAQ;AAClB,YAAI,SAAS,eAAe,SAAS,YAAY,kBAAkB;AACjE,gBAAM,SAAS,YAAY,iBAAiB,IAAI,EAAE;AAAA,QACpD,WAAW,GAAG,cAAc;AAC1B,gBAAM,GAAG;AAAA,QACX;AACA,eAAO,SAAS,SAAS,MAAM,IAAI,IAAI;AAAA,MACzC,OAAO;AACL,YAAI,EAAE,QAAQ,UAAU,KAAK,QAAQ,QAAQ,MAAM,IAAI;AACrD,iBAAO,aAAa;AAAA,QACtB;AACA,cAAM,IAAI,IAAI,OAAO,OAAO,QAAQ,WAAW,KAAK;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACA,WAAS,OAAO,IAAI,UAAU;AAC5B,QAAI,oBAAoB;AACxB,QAAI,OAAO,OAAO,UAAU;AAC1B,0BAAoB;AAAA,IACtB,OAAO;AACL,SAAG;AACD,YAAI,YAAY,IAAI,IAAI,WAAW;AACnC,YAAI,aAAa,cAAc,QAAQ;AACrC,8BAAoB,YAAY,MAAM;AAAA,QACxC;AAAA,MAEF,SAAS,CAAC,aAAa,KAAK,GAAG;AAAA,IACjC;AACA,QAAI,WAAW,OAAO,aAAa,OAAO,mBAAmB,OAAO,aAAa,OAAO;AAExF,WAAO,YAAY,IAAI,SAAS,iBAAiB;AAAA,EACnD;AACA,WAAS,KAAK,KAAK,SAAS,UAAU;AACpC,QAAI,KAAK;AACP,UAAI,OAAO,IAAI,qBAAqB,OAAO,GACzCC,KAAI,GACJC,KAAI,KAAK;AACX,UAAI,UAAU;AACZ,eAAOD,KAAIC,IAAGD,MAAK;AACjB,mBAAS,KAAKA,EAAC,GAAGA,EAAC;AAAA,QACrB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,WAAO,CAAC;AAAA,EACV;AACA,WAAS,4BAA4B;AACnC,QAAI,mBAAmB,SAAS;AAChC,QAAI,kBAAkB;AACpB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAWA,WAAS,QAAQ,IAAI,2BAA2B,2BAA2B,WAAW,WAAW;AAC/F,QAAI,CAAC,GAAG,yBAAyB,OAAO,OAAQ;AAChD,QAAI,QAAQ,KAAK,MAAM,QAAQ,OAAO,QAAQ;AAC9C,QAAI,OAAO,UAAU,GAAG,cAAc,OAAO,0BAA0B,GAAG;AACxE,eAAS,GAAG,sBAAsB;AAClC,YAAM,OAAO;AACb,aAAO,OAAO;AACd,eAAS,OAAO;AAChB,cAAQ,OAAO;AACf,eAAS,OAAO;AAChB,cAAQ,OAAO;AAAA,IACjB,OAAO;AACL,YAAM;AACN,aAAO;AACP,eAAS,OAAO;AAChB,cAAQ,OAAO;AACf,eAAS,OAAO;AAChB,cAAQ,OAAO;AAAA,IACjB;AACA,SAAK,6BAA6B,8BAA8B,OAAO,QAAQ;AAE7E,kBAAY,aAAa,GAAG;AAI5B,UAAI,CAAC,YAAY;AACf,WAAG;AACD,cAAI,aAAa,UAAU,0BAA0B,IAAI,WAAW,WAAW,MAAM,UAAU,6BAA6B,IAAI,WAAW,UAAU,MAAM,WAAW;AACpK,gBAAI,gBAAgB,UAAU,sBAAsB;AAGpD,mBAAO,cAAc,MAAM,SAAS,IAAI,WAAW,kBAAkB,CAAC;AACtE,oBAAQ,cAAc,OAAO,SAAS,IAAI,WAAW,mBAAmB,CAAC;AACzE,qBAAS,MAAM,OAAO;AACtB,oBAAQ,OAAO,OAAO;AACtB;AAAA,UACF;AAAA,QAEF,SAAS,YAAY,UAAU;AAAA,MACjC;AAAA,IACF;AACA,QAAI,aAAa,OAAO,QAAQ;AAE9B,UAAI,WAAW,OAAO,aAAa,EAAE,GACnC,SAAS,YAAY,SAAS,GAC9B,SAAS,YAAY,SAAS;AAChC,UAAI,UAAU;AACZ,eAAO;AACP,gBAAQ;AACR,iBAAS;AACT,kBAAU;AACV,iBAAS,MAAM;AACf,gBAAQ,OAAO;AAAA,MACjB;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AASA,WAAS,eAAe,IAAI,QAAQ,YAAY;AAC9C,QAAI,SAAS,2BAA2B,IAAI,IAAI,GAC9C,YAAY,QAAQ,EAAE,EAAE,MAAM;AAGhC,WAAO,QAAQ;AACb,UAAI,gBAAgB,QAAQ,MAAM,EAAE,UAAU,GAC5C,UAAU;AACZ,UAAI,eAAe,SAAS,eAAe,QAAQ;AACjD,kBAAU,aAAa;AAAA,MACzB,OAAO;AACL,kBAAU,aAAa;AAAA,MACzB;AACA,UAAI,CAAC,QAAS,QAAO;AACrB,UAAI,WAAW,0BAA0B,EAAG;AAC5C,eAAS,2BAA2B,QAAQ,KAAK;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAUA,WAAS,SAAS,IAAI,UAAU,SAAS,eAAe;AACtD,QAAI,eAAe,GACjBA,KAAI,GACJ,WAAW,GAAG;AAChB,WAAOA,KAAI,SAAS,QAAQ;AAC1B,UAAI,SAASA,EAAC,EAAE,MAAM,YAAY,UAAU,SAASA,EAAC,MAAM,SAAS,UAAU,iBAAiB,SAASA,EAAC,MAAM,SAAS,YAAY,QAAQ,SAASA,EAAC,GAAG,QAAQ,WAAW,IAAI,KAAK,GAAG;AACvL,YAAI,iBAAiB,UAAU;AAC7B,iBAAO,SAASA,EAAC;AAAA,QACnB;AACA;AAAA,MACF;AACA,MAAAA;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAQA,WAAS,UAAU,IAAI,UAAU;AAC/B,QAAI,OAAO,GAAG;AACd,WAAO,SAAS,SAAS,SAAS,SAAS,IAAI,MAAM,SAAS,MAAM,UAAU,YAAY,CAAC,QAAQ,MAAM,QAAQ,IAAI;AACnH,aAAO,KAAK;AAAA,IACd;AACA,WAAO,QAAQ;AAAA,EACjB;AASA,WAASE,OAAM,IAAI,UAAU;AAC3B,QAAIA,SAAQ;AACZ,QAAI,CAAC,MAAM,CAAC,GAAG,YAAY;AACzB,aAAO;AAAA,IACT;AAGA,WAAO,KAAK,GAAG,wBAAwB;AACrC,UAAI,GAAG,SAAS,YAAY,MAAM,cAAc,OAAO,SAAS,UAAU,CAAC,YAAY,QAAQ,IAAI,QAAQ,IAAI;AAC7G,QAAAA;AAAA,MACF;AAAA,IACF;AACA,WAAOA;AAAA,EACT;AAQA,WAAS,wBAAwB,IAAI;AACnC,QAAI,aAAa,GACf,YAAY,GACZ,cAAc,0BAA0B;AAC1C,QAAI,IAAI;AACN,SAAG;AACD,YAAI,WAAW,OAAO,EAAE,GACtB,SAAS,SAAS,GAClB,SAAS,SAAS;AACpB,sBAAc,GAAG,aAAa;AAC9B,qBAAa,GAAG,YAAY;AAAA,MAC9B,SAAS,OAAO,gBAAgB,KAAK,GAAG;AAAA,IAC1C;AACA,WAAO,CAAC,YAAY,SAAS;AAAA,EAC/B;AAQA,WAAS,cAAc,KAAK,KAAK;AAC/B,aAASF,MAAK,KAAK;AACjB,UAAI,CAAC,IAAI,eAAeA,EAAC,EAAG;AAC5B,eAAS,OAAO,KAAK;AACnB,YAAI,IAAI,eAAe,GAAG,KAAK,IAAI,GAAG,MAAM,IAAIA,EAAC,EAAE,GAAG,EAAG,QAAO,OAAOA,EAAC;AAAA,MAC1E;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,2BAA2B,IAAI,aAAa;AAEnD,QAAI,CAAC,MAAM,CAAC,GAAG,sBAAuB,QAAO,0BAA0B;AACvE,QAAI,OAAO;AACX,QAAI,UAAU;AACd,OAAG;AAED,UAAI,KAAK,cAAc,KAAK,eAAe,KAAK,eAAe,KAAK,cAAc;AAChF,YAAI,UAAU,IAAI,IAAI;AACtB,YAAI,KAAK,cAAc,KAAK,gBAAgB,QAAQ,aAAa,UAAU,QAAQ,aAAa,aAAa,KAAK,eAAe,KAAK,iBAAiB,QAAQ,aAAa,UAAU,QAAQ,aAAa,WAAW;AACpN,cAAI,CAAC,KAAK,yBAAyB,SAAS,SAAS,KAAM,QAAO,0BAA0B;AAC5F,cAAI,WAAW,YAAa,QAAO;AACnC,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,IAEF,SAAS,OAAO,KAAK;AACrB,WAAO,0BAA0B;AAAA,EACnC;AACA,WAASG,QAAO,KAAK,KAAK;AACxB,QAAI,OAAO,KAAK;AACd,eAAS,OAAO,KAAK;AACnB,YAAI,IAAI,eAAe,GAAG,GAAG;AAC3B,cAAI,GAAG,IAAI,IAAI,GAAG;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,YAAY,OAAO,OAAO;AACjC,WAAO,KAAK,MAAM,MAAM,GAAG,MAAM,KAAK,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,IAAI,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK;AAAA,EAC5N;AACA,MAAI;AACJ,WAAS,SAASC,WAAU,IAAI;AAC9B,WAAO,WAAY;AACjB,UAAI,CAAC,kBAAkB;AACrB,YAAI,OAAO,WACT,QAAQ;AACV,YAAI,KAAK,WAAW,GAAG;AACrB,UAAAA,UAAS,KAAK,OAAO,KAAK,CAAC,CAAC;AAAA,QAC9B,OAAO;AACL,UAAAA,UAAS,MAAM,OAAO,IAAI;AAAA,QAC5B;AACA,2BAAmB,WAAW,WAAY;AACxC,6BAAmB;AAAA,QACrB,GAAG,EAAE;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,WAAS,iBAAiB;AACxB,iBAAa,gBAAgB;AAC7B,uBAAmB;AAAA,EACrB;AACA,WAAS,SAAS,IAAIC,IAAGC,IAAG;AAC1B,OAAG,cAAcD;AACjB,OAAG,aAAaC;AAAA,EAClB;AACA,WAASC,OAAM,IAAI;AACjB,QAAI,UAAU,OAAO;AACrB,QAAIC,KAAI,OAAO,UAAU,OAAO;AAChC,QAAI,WAAW,QAAQ,KAAK;AAC1B,aAAO,QAAQ,IAAI,EAAE,EAAE,UAAU,IAAI;AAAA,IACvC,WAAWA,IAAG;AACZ,aAAOA,GAAE,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC;AAAA,IAC5B,OAAO;AACL,aAAO,GAAG,UAAU,IAAI;AAAA,IAC1B;AAAA,EACF;AAeA,WAAS,kCAAkC,WAAW,SAASC,UAAS;AACtE,QAAI,OAAO,CAAC;AACZ,UAAM,KAAK,UAAU,QAAQ,EAAE,QAAQ,SAAU,OAAO;AACtD,UAAI,YAAY,WAAW,aAAa;AACxC,UAAI,CAAC,QAAQ,OAAO,QAAQ,WAAW,WAAW,KAAK,KAAK,MAAM,YAAY,UAAUA,SAAS;AACjG,UAAI,YAAY,QAAQ,KAAK;AAC7B,WAAK,OAAO,KAAK,KAAK,aAAa,KAAK,UAAU,QAAQ,eAAe,SAAS,aAAa,UAAU,UAAU,IAAI;AACvH,WAAK,MAAM,KAAK,KAAK,YAAY,KAAK,SAAS,QAAQ,cAAc,SAAS,YAAY,UAAU,UAAU,GAAG;AACjH,WAAK,QAAQ,KAAK,KAAK,cAAc,KAAK,WAAW,QAAQ,gBAAgB,SAAS,cAAc,WAAW,UAAU,KAAK;AAC9H,WAAK,SAAS,KAAK,KAAK,eAAe,KAAK,YAAY,QAAQ,iBAAiB,SAAS,eAAe,WAAW,UAAU,MAAM;AAAA,IACtI,CAAC;AACD,SAAK,QAAQ,KAAK,QAAQ,KAAK;AAC/B,SAAK,SAAS,KAAK,SAAS,KAAK;AACjC,SAAK,IAAI,KAAK;AACd,SAAK,IAAI,KAAK;AACd,WAAO;AAAA,EACT;AACA,MAAI,UAAU,cAAa,oBAAI,KAAK,GAAE,QAAQ;AAE9C,WAAS,wBAAwB;AAC/B,QAAI,kBAAkB,CAAC,GACrB;AACF,WAAO;AAAA,MACL,uBAAuB,SAAS,wBAAwB;AACtD,0BAAkB,CAAC;AACnB,YAAI,CAAC,KAAK,QAAQ,UAAW;AAC7B,YAAI,WAAW,CAAC,EAAE,MAAM,KAAK,KAAK,GAAG,QAAQ;AAC7C,iBAAS,QAAQ,SAAU,OAAO;AAChC,cAAI,IAAI,OAAO,SAAS,MAAM,UAAU,UAAU,SAAS,MAAO;AAClE,0BAAgB,KAAK;AAAA,YACnB,QAAQ;AAAA,YACR,MAAM,QAAQ,KAAK;AAAA,UACrB,CAAC;AACD,cAAI,WAAW,eAAe,CAAC,GAAG,gBAAgB,gBAAgB,SAAS,CAAC,EAAE,IAAI;AAGlF,cAAI,MAAM,uBAAuB;AAC/B,gBAAI,cAAc,OAAO,OAAO,IAAI;AACpC,gBAAI,aAAa;AACf,uBAAS,OAAO,YAAY;AAC5B,uBAAS,QAAQ,YAAY;AAAA,YAC/B;AAAA,UACF;AACA,gBAAM,WAAW;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,MACA,mBAAmB,SAAS,kBAAkB,OAAO;AACnD,wBAAgB,KAAK,KAAK;AAAA,MAC5B;AAAA,MACA,sBAAsB,SAAS,qBAAqB,QAAQ;AAC1D,wBAAgB,OAAO,cAAc,iBAAiB;AAAA,UACpD;AAAA,QACF,CAAC,GAAG,CAAC;AAAA,MACP;AAAA,MACA,YAAY,SAAS,WAAWC,WAAU;AACxC,YAAI,QAAQ;AACZ,YAAI,CAAC,KAAK,QAAQ,WAAW;AAC3B,uBAAa,mBAAmB;AAChC,cAAI,OAAOA,cAAa,WAAY,CAAAA,UAAS;AAC7C;AAAA,QACF;AACA,YAAI,YAAY,OACd,gBAAgB;AAClB,wBAAgB,QAAQ,SAAU,OAAO;AACvC,cAAI,OAAO,GACT,SAAS,MAAM,QACf,WAAW,OAAO,UAClB,SAAS,QAAQ,MAAM,GACvB,eAAe,OAAO,cACtB,aAAa,OAAO,YACpB,gBAAgB,MAAM,MACtB,eAAe,OAAO,QAAQ,IAAI;AACpC,cAAI,cAAc;AAEhB,mBAAO,OAAO,aAAa;AAC3B,mBAAO,QAAQ,aAAa;AAAA,UAC9B;AACA,iBAAO,SAAS;AAChB,cAAI,OAAO,uBAAuB;AAEhC,gBAAI,YAAY,cAAc,MAAM,KAAK,CAAC,YAAY,UAAU,MAAM;AAAA,aAErE,cAAc,MAAM,OAAO,QAAQ,cAAc,OAAO,OAAO,WAAW,SAAS,MAAM,OAAO,QAAQ,SAAS,OAAO,OAAO,OAAO;AAErI,qBAAO,kBAAkB,eAAe,cAAc,YAAY,MAAM,OAAO;AAAA,YACjF;AAAA,UACF;AAGA,cAAI,CAAC,YAAY,QAAQ,QAAQ,GAAG;AAClC,mBAAO,eAAe;AACtB,mBAAO,aAAa;AACpB,gBAAI,CAAC,MAAM;AACT,qBAAO,MAAM,QAAQ;AAAA,YACvB;AACA,kBAAM,QAAQ,QAAQ,eAAe,QAAQ,IAAI;AAAA,UACnD;AACA,cAAI,MAAM;AACR,wBAAY;AACZ,4BAAgB,KAAK,IAAI,eAAe,IAAI;AAC5C,yBAAa,OAAO,mBAAmB;AACvC,mBAAO,sBAAsB,WAAW,WAAY;AAClD,qBAAO,gBAAgB;AACvB,qBAAO,eAAe;AACtB,qBAAO,WAAW;AAClB,qBAAO,aAAa;AACpB,qBAAO,wBAAwB;AAAA,YACjC,GAAG,IAAI;AACP,mBAAO,wBAAwB;AAAA,UACjC;AAAA,QACF,CAAC;AACD,qBAAa,mBAAmB;AAChC,YAAI,CAAC,WAAW;AACd,cAAI,OAAOA,cAAa,WAAY,CAAAA,UAAS;AAAA,QAC/C,OAAO;AACL,gCAAsB,WAAW,WAAY;AAC3C,gBAAI,OAAOA,cAAa,WAAY,CAAAA,UAAS;AAAA,UAC/C,GAAG,aAAa;AAAA,QAClB;AACA,0BAAkB,CAAC;AAAA,MACrB;AAAA,MACA,SAAS,SAAS,QAAQ,QAAQ,aAAa,QAAQC,WAAU;AAC/D,YAAIA,WAAU;AACZ,cAAI,QAAQ,cAAc,EAAE;AAC5B,cAAI,QAAQ,aAAa,EAAE;AAC3B,cAAI,WAAW,OAAO,KAAK,EAAE,GAC3B,SAAS,YAAY,SAAS,GAC9B,SAAS,YAAY,SAAS,GAC9B,cAAc,YAAY,OAAO,OAAO,SAAS,UAAU,IAC3D,cAAc,YAAY,MAAM,OAAO,QAAQ,UAAU;AAC3D,iBAAO,aAAa,CAAC,CAAC;AACtB,iBAAO,aAAa,CAAC,CAAC;AACtB,cAAI,QAAQ,aAAa,iBAAiB,aAAa,QAAQ,aAAa,OAAO;AACnF,eAAK,kBAAkB,QAAQ,MAAM;AAErC,cAAI,QAAQ,cAAc,eAAeA,YAAW,QAAQ,KAAK,QAAQ,SAAS,MAAM,KAAK,QAAQ,SAAS,GAAG;AACjH,cAAI,QAAQ,aAAa,oBAAoB;AAC7C,iBAAO,OAAO,aAAa,YAAY,aAAa,OAAO,QAAQ;AACnE,iBAAO,WAAW,WAAW,WAAY;AACvC,gBAAI,QAAQ,cAAc,EAAE;AAC5B,gBAAI,QAAQ,aAAa,EAAE;AAC3B,mBAAO,WAAW;AAClB,mBAAO,aAAa;AACpB,mBAAO,aAAa;AAAA,UACtB,GAAGA,SAAQ;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS,QAAQ,QAAQ;AACvB,WAAO,OAAO;AAAA,EAChB;AACA,WAAS,kBAAkB,eAAe,UAAU,QAAQ,SAAS;AACnE,WAAO,KAAK,KAAK,KAAK,IAAI,SAAS,MAAM,cAAc,KAAK,CAAC,IAAI,KAAK,IAAI,SAAS,OAAO,cAAc,MAAM,CAAC,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,SAAS,MAAM,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,SAAS,OAAO,OAAO,MAAM,CAAC,CAAC,IAAI,QAAQ;AAAA,EAC7N;AAEA,MAAIC,WAAU,CAAC;AACf,MAAIC,YAAW;AAAA,IACb,qBAAqB;AAAA,EACvB;AACA,MAAI,gBAAgB;AAAA,IAClB,OAAO,SAAS,MAAM,QAAQ;AAE5B,eAASC,WAAUD,WAAU;AAC3B,YAAIA,UAAS,eAAeC,OAAM,KAAK,EAAEA,WAAU,SAAS;AAC1D,iBAAOA,OAAM,IAAID,UAASC,OAAM;AAAA,QAClC;AAAA,MACF;AACA,MAAAF,SAAQ,QAAQ,SAAUG,IAAG;AAC3B,YAAIA,GAAE,eAAe,OAAO,YAAY;AACtC,gBAAM,iCAAiC,OAAO,OAAO,YAAY,iBAAiB;AAAA,QACpF;AAAA,MACF,CAAC;AACD,MAAAH,SAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,IACA,aAAa,SAAS,YAAY,WAAW,UAAU,KAAK;AAC1D,UAAI,QAAQ;AACZ,WAAK,gBAAgB;AACrB,UAAI,SAAS,WAAY;AACvB,cAAM,gBAAgB;AAAA,MACxB;AACA,UAAI,kBAAkB,YAAY;AAClC,MAAAA,SAAQ,QAAQ,SAAU,QAAQ;AAChC,YAAI,CAAC,SAAS,OAAO,UAAU,EAAG;AAElC,YAAI,SAAS,OAAO,UAAU,EAAE,eAAe,GAAG;AAChD,mBAAS,OAAO,UAAU,EAAE,eAAe,EAAE,eAAe;AAAA,YAC1D;AAAA,UACF,GAAG,GAAG,CAAC;AAAA,QACT;AAIA,YAAI,SAAS,QAAQ,OAAO,UAAU,KAAK,SAAS,OAAO,UAAU,EAAE,SAAS,GAAG;AACjF,mBAAS,OAAO,UAAU,EAAE,SAAS,EAAE,eAAe;AAAA,YACpD;AAAA,UACF,GAAG,GAAG,CAAC;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,mBAAmB,SAAS,kBAAkB,UAAU,IAAIC,WAAU,SAAS;AAC7E,MAAAD,SAAQ,QAAQ,SAAU,QAAQ;AAChC,YAAI,aAAa,OAAO;AACxB,YAAI,CAAC,SAAS,QAAQ,UAAU,KAAK,CAAC,OAAO,oBAAqB;AAClE,YAAI,cAAc,IAAI,OAAO,UAAU,IAAI,SAAS,OAAO;AAC3D,oBAAY,WAAW;AACvB,oBAAY,UAAU,SAAS;AAC/B,iBAAS,UAAU,IAAI;AAGvB,iBAASC,WAAU,YAAY,QAAQ;AAAA,MACzC,CAAC;AACD,eAASC,WAAU,SAAS,SAAS;AACnC,YAAI,CAAC,SAAS,QAAQ,eAAeA,OAAM,EAAG;AAC9C,YAAI,WAAW,KAAK,aAAa,UAAUA,SAAQ,SAAS,QAAQA,OAAM,CAAC;AAC3E,YAAI,OAAO,aAAa,aAAa;AACnC,mBAAS,QAAQA,OAAM,IAAI;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,SAAS,mBAAmB,MAAM,UAAU;AAC9D,UAAI,kBAAkB,CAAC;AACvB,MAAAF,SAAQ,QAAQ,SAAU,QAAQ;AAChC,YAAI,OAAO,OAAO,oBAAoB,WAAY;AAClD,iBAAS,iBAAiB,OAAO,gBAAgB,KAAK,SAAS,OAAO,UAAU,GAAG,IAAI,CAAC;AAAA,MAC1F,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,cAAc,SAAS,aAAa,UAAU,MAAM,OAAO;AACzD,UAAI;AACJ,MAAAA,SAAQ,QAAQ,SAAU,QAAQ;AAEhC,YAAI,CAAC,SAAS,OAAO,UAAU,EAAG;AAGlC,YAAI,OAAO,mBAAmB,OAAO,OAAO,gBAAgB,IAAI,MAAM,YAAY;AAChF,0BAAgB,OAAO,gBAAgB,IAAI,EAAE,KAAK,SAAS,OAAO,UAAU,GAAG,KAAK;AAAA,QACtF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAASI,eAAc,MAAM;AAC3B,QAAI,WAAW,KAAK,UAClBC,UAAS,KAAK,QACd,OAAO,KAAK,MACZ,WAAW,KAAK,UAChBC,WAAU,KAAK,SACf,OAAO,KAAK,MACZ,SAAS,KAAK,QACdC,YAAW,KAAK,UAChBC,YAAW,KAAK,UAChBC,qBAAoB,KAAK,mBACzBC,qBAAoB,KAAK,mBACzB,gBAAgB,KAAK,eACrBC,eAAc,KAAK,aACnB,uBAAuB,KAAK;AAC9B,eAAW,YAAYN,WAAUA,QAAO,OAAO;AAC/C,QAAI,CAAC,SAAU;AACf,QAAI,KACF,UAAU,SAAS,SACnB,SAAS,OAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,OAAO,CAAC;AAE9D,QAAI,OAAO,eAAe,CAAC,cAAc,CAAC,MAAM;AAC9C,YAAM,IAAI,YAAY,MAAM;AAAA,QAC1B,SAAS;AAAA,QACT,YAAY;AAAA,MACd,CAAC;AAAA,IACH,OAAO;AACL,YAAM,SAAS,YAAY,OAAO;AAClC,UAAI,UAAU,MAAM,MAAM,IAAI;AAAA,IAChC;AACA,QAAI,KAAK,QAAQA;AACjB,QAAI,OAAO,UAAUA;AACrB,QAAI,OAAO,YAAYA;AACvB,QAAI,QAAQC;AACZ,QAAI,WAAWC;AACf,QAAI,WAAWC;AACf,QAAI,oBAAoBC;AACxB,QAAI,oBAAoBC;AACxB,QAAI,gBAAgB;AACpB,QAAI,WAAWC,eAAcA,aAAY,cAAc;AACvD,QAAI,qBAAqB,eAAe,eAAe,CAAC,GAAG,oBAAoB,GAAG,cAAc,mBAAmB,MAAM,QAAQ,CAAC;AAClI,aAAST,WAAU,oBAAoB;AACrC,UAAIA,OAAM,IAAI,mBAAmBA,OAAM;AAAA,IACzC;AACA,QAAIG,SAAQ;AACV,MAAAA,QAAO,cAAc,GAAG;AAAA,IAC1B;AACA,QAAI,QAAQ,MAAM,GAAG;AACnB,cAAQ,MAAM,EAAE,KAAK,UAAU,GAAG;AAAA,IACpC;AAAA,EACF;AAEA,MAAI,YAAY,CAAC,KAAK;AACtB,MAAIO,eAAc,SAASA,aAAY,WAAW,UAAU;AAC1D,QAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC9E,gBAAgB,KAAK,KACrB,OAAO,yBAAyB,MAAM,SAAS;AACjD,kBAAc,YAAY,KAAK,QAAQ,EAAE,WAAW,UAAU,eAAe;AAAA,MAC3E;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA,gBAAgB,SAAS;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,gBAAgB,SAAS,iBAAiB;AACxC,sBAAc;AAAA,MAChB;AAAA,MACA,eAAe,SAAS,gBAAgB;AACtC,sBAAc;AAAA,MAChB;AAAA,MACA,uBAAuB,SAAS,sBAAsB,MAAM;AAC1D,uBAAe;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAAG,IAAI,CAAC;AAAA,EACV;AACA,WAAS,eAAe,MAAM;AAC5B,IAAAR,eAAc,eAAe;AAAA,MAC3B;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,GAAG,IAAI,CAAC;AAAA,EACV;AACA,MAAI;AAAJ,MACE;AADF,MAEE;AAFF,MAGE;AAHF,MAIE;AAJF,MAKE;AALF,MAME;AANF,MAOE;AAPF,MAQE;AARF,MASE;AATF,MAUE;AAVF,MAWE;AAXF,MAYE;AAZF,MAaE;AAbF,MAcE,sBAAsB;AAdxB,MAeE,kBAAkB;AAfpB,MAgBE,YAAY,CAAC;AAhBf,MAiBE;AAjBF,MAkBE;AAlBF,MAmBE;AAnBF,MAoBE;AApBF,MAqBE;AArBF,MAsBE;AAtBF,MAuBE;AAvBF,MAwBE;AAxBF,MAyBE;AAzBF,MA0BE,wBAAwB;AA1B1B,MA2BE,yBAAyB;AA3B3B,MA4BE;AA5BF,MA8BE;AA9BF,MA+BE,mCAAmC,CAAC;AA/BtC,MAkCE,UAAU;AAlCZ,MAmCE,oBAAoB,CAAC;AAGvB,MAAI,iBAAiB,OAAO,aAAa;AAAzC,MACE,0BAA0B;AAD5B,MAEE,mBAAmB,QAAQ,aAAa,aAAa;AAFvD,MAIE,mBAAmB,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,eAAe,SAAS,cAAc,KAAK;AAJ/G,MAKE,0BAA0B,WAAY;AACpC,QAAI,CAAC,eAAgB;AAErB,QAAI,YAAY;AACd,aAAO;AAAA,IACT;AACA,QAAI,KAAK,SAAS,cAAc,GAAG;AACnC,OAAG,MAAM,UAAU;AACnB,WAAO,GAAG,MAAM,kBAAkB;AAAA,EACpC,EAAE;AAdJ,MAeE,mBAAmB,SAASS,kBAAiB,IAAI,SAAS;AACxD,QAAI,QAAQ,IAAI,EAAE,GAChB,UAAU,SAAS,MAAM,KAAK,IAAI,SAAS,MAAM,WAAW,IAAI,SAAS,MAAM,YAAY,IAAI,SAAS,MAAM,eAAe,IAAI,SAAS,MAAM,gBAAgB,GAChK,SAAS,SAAS,IAAI,GAAG,OAAO,GAChC,SAAS,SAAS,IAAI,GAAG,OAAO,GAChC,gBAAgB,UAAU,IAAI,MAAM,GACpC,iBAAiB,UAAU,IAAI,MAAM,GACrC,kBAAkB,iBAAiB,SAAS,cAAc,UAAU,IAAI,SAAS,cAAc,WAAW,IAAI,QAAQ,MAAM,EAAE,OAC9H,mBAAmB,kBAAkB,SAAS,eAAe,UAAU,IAAI,SAAS,eAAe,WAAW,IAAI,QAAQ,MAAM,EAAE;AACpI,QAAI,MAAM,YAAY,QAAQ;AAC5B,aAAO,MAAM,kBAAkB,YAAY,MAAM,kBAAkB,mBAAmB,aAAa;AAAA,IACrG;AACA,QAAI,MAAM,YAAY,QAAQ;AAC5B,aAAO,MAAM,oBAAoB,MAAM,GAAG,EAAE,UAAU,IAAI,aAAa;AAAA,IACzE;AACA,QAAI,UAAU,cAAc,OAAO,KAAK,cAAc,OAAO,MAAM,QAAQ;AACzE,UAAI,qBAAqB,cAAc,OAAO,MAAM,SAAS,SAAS;AACtE,aAAO,WAAW,eAAe,UAAU,UAAU,eAAe,UAAU,sBAAsB,aAAa;AAAA,IACnH;AACA,WAAO,WAAW,cAAc,YAAY,WAAW,cAAc,YAAY,UAAU,cAAc,YAAY,WAAW,cAAc,YAAY,UAAU,mBAAmB,WAAW,MAAM,gBAAgB,MAAM,UAAU,UAAU,MAAM,gBAAgB,MAAM,UAAU,kBAAkB,mBAAmB,WAAW,aAAa;AAAA,EACvV;AAnCF,MAoCE,qBAAqB,SAASC,oBAAmB,UAAU,YAAY,UAAU;AAC/E,QAAI,cAAc,WAAW,SAAS,OAAO,SAAS,KACpD,cAAc,WAAW,SAAS,QAAQ,SAAS,QACnD,kBAAkB,WAAW,SAAS,QAAQ,SAAS,QACvD,cAAc,WAAW,WAAW,OAAO,WAAW,KACtD,cAAc,WAAW,WAAW,QAAQ,WAAW,QACvD,kBAAkB,WAAW,WAAW,QAAQ,WAAW;AAC7D,WAAO,gBAAgB,eAAe,gBAAgB,eAAe,cAAc,kBAAkB,MAAM,cAAc,kBAAkB;AAAA,EAC7I;AA5CF,MAmDE,8BAA8B,SAASC,6BAA4BC,IAAGC,IAAG;AACvE,QAAI;AACJ,cAAU,KAAK,SAAU,UAAU;AACjC,UAAI,YAAY,SAAS,OAAO,EAAE,QAAQ;AAC1C,UAAI,CAAC,aAAa,UAAU,QAAQ,EAAG;AACvC,UAAI,OAAO,QAAQ,QAAQ,GACzB,qBAAqBD,MAAK,KAAK,OAAO,aAAaA,MAAK,KAAK,QAAQ,WACrE,mBAAmBC,MAAK,KAAK,MAAM,aAAaA,MAAK,KAAK,SAAS;AACrE,UAAI,sBAAsB,kBAAkB;AAC1C,eAAO,MAAM;AAAA,MACf;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAhEF,MAiEE,gBAAgB,SAASC,eAAc,SAAS;AAC9C,aAAS,KAAK,OAAO,MAAM;AACzB,aAAO,SAAUC,KAAIC,OAAMC,SAAQ,KAAK;AACtC,YAAI,YAAYF,IAAG,QAAQ,MAAM,QAAQC,MAAK,QAAQ,MAAM,QAAQD,IAAG,QAAQ,MAAM,SAASC,MAAK,QAAQ,MAAM;AACjH,YAAI,SAAS,SAAS,QAAQ,YAAY;AAGxC,iBAAO;AAAA,QACT,WAAW,SAAS,QAAQ,UAAU,OAAO;AAC3C,iBAAO;AAAA,QACT,WAAW,QAAQ,UAAU,SAAS;AACpC,iBAAO;AAAA,QACT,WAAW,OAAO,UAAU,YAAY;AACtC,iBAAO,KAAK,MAAMD,KAAIC,OAAMC,SAAQ,GAAG,GAAG,IAAI,EAAEF,KAAIC,OAAMC,SAAQ,GAAG;AAAA,QACvE,OAAO;AACL,cAAI,cAAc,OAAOF,MAAKC,OAAM,QAAQ,MAAM;AAClD,iBAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,UAAU,cAAc,MAAM,QAAQ,MAAM,QAAQ,UAAU,IAAI;AAAA,QAC1H;AAAA,MACF;AAAA,IACF;AACA,QAAI,QAAQ,CAAC;AACb,QAAI,gBAAgB,QAAQ;AAC5B,QAAI,CAAC,iBAAiB,QAAQ,aAAa,KAAK,UAAU;AACxD,sBAAgB;AAAA,QACd,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,OAAO,cAAc;AAC3B,UAAM,YAAY,KAAK,cAAc,MAAM,IAAI;AAC/C,UAAM,WAAW,KAAK,cAAc,GAAG;AACvC,UAAM,cAAc,cAAc;AAClC,YAAQ,QAAQ;AAAA,EAClB;AAjGF,MAkGE,sBAAsB,SAASE,uBAAsB;AACnD,QAAI,CAAC,2BAA2B,SAAS;AACvC,UAAI,SAAS,WAAW,MAAM;AAAA,IAChC;AAAA,EACF;AAtGF,MAuGE,wBAAwB,SAASC,yBAAwB;AACvD,QAAI,CAAC,2BAA2B,SAAS;AACvC,UAAI,SAAS,WAAW,EAAE;AAAA,IAC5B;AAAA,EACF;AAGF,MAAI,kBAAkB,CAAC,kBAAkB;AACvC,aAAS,iBAAiB,SAAS,SAAU,KAAK;AAChD,UAAI,iBAAiB;AACnB,YAAI,eAAe;AACnB,YAAI,mBAAmB,IAAI,gBAAgB;AAC3C,YAAI,4BAA4B,IAAI,yBAAyB;AAC7D,0BAAkB;AAClB,eAAO;AAAA,MACT;AAAA,IACF,GAAG,IAAI;AAAA,EACT;AACA,MAAI,gCAAgC,SAASC,+BAA8B,KAAK;AAC9E,QAAI,QAAQ;AACV,YAAM,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI;AACrC,UAAI,UAAU,4BAA4B,IAAI,SAAS,IAAI,OAAO;AAClE,UAAI,SAAS;AAEX,YAAIC,SAAQ,CAAC;AACb,iBAASC,MAAK,KAAK;AACjB,cAAI,IAAI,eAAeA,EAAC,GAAG;AACzB,YAAAD,OAAMC,EAAC,IAAI,IAAIA,EAAC;AAAA,UAClB;AAAA,QACF;AACA,QAAAD,OAAM,SAASA,OAAM,SAAS;AAC9B,QAAAA,OAAM,iBAAiB;AACvB,QAAAA,OAAM,kBAAkB;AACxB,gBAAQ,OAAO,EAAE,YAAYA,MAAK;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACA,MAAI,wBAAwB,SAASE,uBAAsB,KAAK;AAC9D,QAAI,QAAQ;AACV,aAAO,WAAW,OAAO,EAAE,iBAAiB,IAAI,MAAM;AAAA,IACxD;AAAA,EACF;AAOA,WAAS,SAAS,IAAI,SAAS;AAC7B,QAAI,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,IAAI;AAC7C,YAAM,8CAA8C,OAAO,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;AAAA,IACjF;AACA,SAAK,KAAK;AACV,SAAK,UAAU,UAAU,SAAS,CAAC,GAAG,OAAO;AAG7C,OAAG,OAAO,IAAI;AACd,QAAI1B,YAAW;AAAA,MACb,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW,WAAW,KAAK,GAAG,QAAQ,IAAI,QAAQ;AAAA,MAClD,eAAe;AAAA;AAAA,MAEf,YAAY;AAAA;AAAA,MAEZ,uBAAuB;AAAA;AAAA,MAEvB,mBAAmB;AAAA,MACnB,WAAW,SAAS,YAAY;AAC9B,eAAO,iBAAiB,IAAI,KAAK,OAAO;AAAA,MAC1C;AAAA,MACA,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS,SAAS,QAAQ,cAAcoB,SAAQ;AAC9C,qBAAa,QAAQ,QAAQA,QAAO,WAAW;AAAA,MACjD;AAAA,MACA,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,kBAAkB;AAAA,MAClB,sBAAsB,OAAO,WAAW,SAAS,QAAQ,SAAS,OAAO,kBAAkB,EAAE,KAAK;AAAA,MAClG,eAAe;AAAA,MACf,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,mBAAmB;AAAA,MACnB,gBAAgB;AAAA,QACd,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA;AAAA,MAEA,gBAAgB,SAAS,mBAAmB,SAAS,kBAAkB,WAAW,CAAC,UAAU;AAAA,MAC7F,sBAAsB;AAAA,IACxB;AACA,kBAAc,kBAAkB,MAAM,IAAIpB,SAAQ;AAGlD,aAAS,QAAQA,WAAU;AACzB,QAAE,QAAQ,aAAa,QAAQ,IAAI,IAAIA,UAAS,IAAI;AAAA,IACtD;AACA,kBAAc,OAAO;AAGrB,aAAS2B,OAAM,MAAM;AACnB,UAAIA,IAAG,OAAO,CAAC,MAAM,OAAO,OAAO,KAAKA,GAAE,MAAM,YAAY;AAC1D,aAAKA,GAAE,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAI;AAAA,MAC/B;AAAA,IACF;AAGA,SAAK,kBAAkB,QAAQ,gBAAgB,QAAQ;AACvD,QAAI,KAAK,iBAAiB;AAExB,WAAK,QAAQ,sBAAsB;AAAA,IACrC;AAGA,QAAI,QAAQ,gBAAgB;AAC1B,SAAG,IAAI,eAAe,KAAK,WAAW;AAAA,IACxC,OAAO;AACL,SAAG,IAAI,aAAa,KAAK,WAAW;AACpC,SAAG,IAAI,cAAc,KAAK,WAAW;AAAA,IACvC;AACA,QAAI,KAAK,iBAAiB;AACxB,SAAG,IAAI,YAAY,IAAI;AACvB,SAAG,IAAI,aAAa,IAAI;AAAA,IAC1B;AACA,cAAU,KAAK,KAAK,EAAE;AAGtB,YAAQ,SAAS,QAAQ,MAAM,OAAO,KAAK,KAAK,QAAQ,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC;AAG7E,aAAS,MAAM,sBAAsB,CAAC;AAAA,EACxC;AACA,WAAS;AAAA,EAA4C;AAAA,IACnD,aAAa;AAAA,IACb,kBAAkB,SAAS,iBAAiB,QAAQ;AAClD,UAAI,CAAC,KAAK,GAAG,SAAS,MAAM,KAAK,WAAW,KAAK,IAAI;AACnD,qBAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA,eAAe,SAAS,cAAc,KAAK,QAAQ;AACjD,aAAO,OAAO,KAAK,QAAQ,cAAc,aAAa,KAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,QAAQ,MAAM,IAAI,KAAK,QAAQ;AAAA,IAC9H;AAAA,IACA,aAAa,SAAS,YAAoC,KAAK;AAC7D,UAAI,CAAC,IAAI,WAAY;AACrB,UAAI,QAAQ,MACV,KAAK,KAAK,IACV,UAAU,KAAK,SACf,kBAAkB,QAAQ,iBAC1B,OAAO,IAAI,MACX,QAAQ,IAAI,WAAW,IAAI,QAAQ,CAAC,KAAK,IAAI,eAAe,IAAI,gBAAgB,WAAW,KAC3F,UAAU,SAAS,KAAK,QACxB,iBAAiB,IAAI,OAAO,eAAe,IAAI,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,gBAAgB,IAAI,aAAa,EAAE,CAAC,MAAM,QACpH,SAAS,QAAQ;AACnB,6BAAuB,EAAE;AAGzB,UAAI,QAAQ;AACV;AAAA,MACF;AACA,UAAI,wBAAwB,KAAK,IAAI,KAAK,IAAI,WAAW,KAAK,QAAQ,UAAU;AAC9E;AAAA,MACF;AAGA,UAAI,eAAe,mBAAmB;AACpC;AAAA,MACF;AAGA,UAAI,CAAC,KAAK,mBAAmB,UAAU,UAAU,OAAO,QAAQ,YAAY,MAAM,UAAU;AAC1F;AAAA,MACF;AACA,eAAS,QAAQ,QAAQ,QAAQ,WAAW,IAAI,KAAK;AACrD,UAAI,UAAU,OAAO,UAAU;AAC7B;AAAA,MACF;AACA,UAAI,eAAe,QAAQ;AAEzB;AAAA,MACF;AAGA,iBAAWC,OAAM,MAAM;AACvB,0BAAoBA,OAAM,QAAQ,QAAQ,SAAS;AAGnD,UAAI,OAAO,WAAW,YAAY;AAChC,YAAI,OAAO,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAG;AACxC,yBAAe;AAAA,YACb,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,UAAU;AAAA,YACV,MAAM;AAAA,YACN,QAAQ;AAAA,UACV,CAAC;AACD,UAAAjB,aAAY,UAAU,OAAO;AAAA,YAC3B;AAAA,UACF,CAAC;AACD,6BAAmB,IAAI,eAAe;AACtC;AAAA,QACF;AAAA,MACF,WAAW,QAAQ;AACjB,iBAAS,OAAO,MAAM,GAAG,EAAE,KAAK,SAAU,UAAU;AAClD,qBAAW,QAAQ,gBAAgB,SAAS,KAAK,GAAG,IAAI,KAAK;AAC7D,cAAI,UAAU;AACZ,2BAAe;AAAA,cACb,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,MAAM;AAAA,YACR,CAAC;AACD,YAAAA,aAAY,UAAU,OAAO;AAAA,cAC3B;AAAA,YACF,CAAC;AACD,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,YAAI,QAAQ;AACV,6BAAmB,IAAI,eAAe;AACtC;AAAA,QACF;AAAA,MACF;AACA,UAAI,QAAQ,UAAU,CAAC,QAAQ,gBAAgB,QAAQ,QAAQ,IAAI,KAAK,GAAG;AACzE;AAAA,MACF;AAGA,WAAK,kBAAkB,KAAK,OAAO,MAAM;AAAA,IAC3C;AAAA,IACA,mBAAmB,SAAS,kBAA+B,KAAiB,OAAyB,QAAQ;AAC3G,UAAI,QAAQ,MACV,KAAK,MAAM,IACX,UAAU,MAAM,SAChB,gBAAgB,GAAG,eACnB;AACF,UAAI,UAAU,CAAC,UAAU,OAAO,eAAe,IAAI;AACjD,YAAI,WAAW,QAAQ,MAAM;AAC7B,iBAAS;AACT,iBAAS;AACT,mBAAW,OAAO;AAClB,iBAAS,OAAO;AAChB,qBAAa;AACb,sBAAc,QAAQ;AACtB,iBAAS,UAAU;AACnB,iBAAS;AAAA,UACP,QAAQ;AAAA,UACR,UAAU,SAAS,KAAK;AAAA,UACxB,UAAU,SAAS,KAAK;AAAA,QAC1B;AACA,0BAAkB,OAAO,UAAU,SAAS;AAC5C,yBAAiB,OAAO,UAAU,SAAS;AAC3C,aAAK,UAAU,SAAS,KAAK;AAC7B,aAAK,UAAU,SAAS,KAAK;AAC7B,eAAO,MAAM,aAAa,IAAI;AAC9B,sBAAc,SAASkB,eAAc;AACnC,UAAAlB,aAAY,cAAc,OAAO;AAAA,YAC/B;AAAA,UACF,CAAC;AACD,cAAI,SAAS,eAAe;AAC1B,kBAAM,QAAQ;AACd;AAAA,UACF;AAGA,gBAAM,0BAA0B;AAChC,cAAI,CAAC,WAAW,MAAM,iBAAiB;AACrC,mBAAO,YAAY;AAAA,UACrB;AAGA,gBAAM,kBAAkB,KAAK,KAAK;AAGlC,yBAAe;AAAA,YACb,UAAU;AAAA,YACV,MAAM;AAAA,YACN,eAAe;AAAA,UACjB,CAAC;AAGD,sBAAY,QAAQ,QAAQ,aAAa,IAAI;AAAA,QAC/C;AAGA,gBAAQ,OAAO,MAAM,GAAG,EAAE,QAAQ,SAAU,UAAU;AACpD,eAAK,QAAQ,SAAS,KAAK,GAAG,iBAAiB;AAAA,QACjD,CAAC;AACD,WAAG,eAAe,YAAY,6BAA6B;AAC3D,WAAG,eAAe,aAAa,6BAA6B;AAC5D,WAAG,eAAe,aAAa,6BAA6B;AAC5D,YAAI,QAAQ,gBAAgB;AAC1B,aAAG,eAAe,aAAa,MAAM,OAAO;AAE5C,WAAC,KAAK,mBAAmB,GAAG,eAAe,iBAAiB,MAAM,OAAO;AAAA,QAC3E,OAAO;AACL,aAAG,eAAe,WAAW,MAAM,OAAO;AAC1C,aAAG,eAAe,YAAY,MAAM,OAAO;AAC3C,aAAG,eAAe,eAAe,MAAM,OAAO;AAAA,QAChD;AAGA,YAAI,WAAW,KAAK,iBAAiB;AACnC,eAAK,QAAQ,sBAAsB;AACnC,iBAAO,YAAY;AAAA,QACrB;AACA,QAAAA,aAAY,cAAc,MAAM;AAAA,UAC9B;AAAA,QACF,CAAC;AAGD,YAAI,QAAQ,UAAU,CAAC,QAAQ,oBAAoB,WAAW,CAAC,KAAK,mBAAmB,EAAE,QAAQ,cAAc;AAC7G,cAAI,SAAS,eAAe;AAC1B,iBAAK,QAAQ;AACb;AAAA,UACF;AAIA,cAAI,QAAQ,gBAAgB;AAC1B,eAAG,eAAe,aAAa,MAAM,mBAAmB;AACxD,eAAG,eAAe,iBAAiB,MAAM,mBAAmB;AAAA,UAC9D,OAAO;AACL,eAAG,eAAe,WAAW,MAAM,mBAAmB;AACtD,eAAG,eAAe,YAAY,MAAM,mBAAmB;AACvD,eAAG,eAAe,eAAe,MAAM,mBAAmB;AAAA,UAC5D;AACA,aAAG,eAAe,aAAa,MAAM,4BAA4B;AACjE,aAAG,eAAe,aAAa,MAAM,4BAA4B;AACjE,kBAAQ,kBAAkB,GAAG,eAAe,eAAe,MAAM,4BAA4B;AAC7F,gBAAM,kBAAkB,WAAW,aAAa,QAAQ,KAAK;AAAA,QAC/D,OAAO;AACL,sBAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,IACA,8BAA8B,SAAS,6BAA6DmB,IAAG;AACrG,UAAI,QAAQA,GAAE,UAAUA,GAAE,QAAQ,CAAC,IAAIA;AACvC,UAAI,KAAK,IAAI,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,GAAG,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,CAAC,KAAK,KAAK,MAAM,KAAK,QAAQ,uBAAuB,KAAK,mBAAmB,OAAO,oBAAoB,EAAE,GAAG;AACnM,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,qBAAqB,SAAS,sBAAsB;AAClD,gBAAU,kBAAkB,MAAM;AAClC,mBAAa,KAAK,eAAe;AACjC,WAAK,0BAA0B;AAAA,IACjC;AAAA,IACA,2BAA2B,SAAS,4BAA4B;AAC9D,UAAI,gBAAgB,KAAK,GAAG;AAC5B,UAAI,eAAe,WAAW,KAAK,mBAAmB;AACtD,UAAI,eAAe,YAAY,KAAK,mBAAmB;AACvD,UAAI,eAAe,eAAe,KAAK,mBAAmB;AAC1D,UAAI,eAAe,aAAa,KAAK,mBAAmB;AACxD,UAAI,eAAe,iBAAiB,KAAK,mBAAmB;AAC5D,UAAI,eAAe,aAAa,KAAK,4BAA4B;AACjE,UAAI,eAAe,aAAa,KAAK,4BAA4B;AACjE,UAAI,eAAe,eAAe,KAAK,4BAA4B;AAAA,IACrE;AAAA,IACA,mBAAmB,SAAS,kBAA+B,KAAiB,OAAO;AACjF,cAAQ,SAAS,IAAI,eAAe,WAAW;AAC/C,UAAI,CAAC,KAAK,mBAAmB,OAAO;AAClC,YAAI,KAAK,QAAQ,gBAAgB;AAC/B,aAAG,UAAU,eAAe,KAAK,YAAY;AAAA,QAC/C,WAAW,OAAO;AAChB,aAAG,UAAU,aAAa,KAAK,YAAY;AAAA,QAC7C,OAAO;AACL,aAAG,UAAU,aAAa,KAAK,YAAY;AAAA,QAC7C;AAAA,MACF,OAAO;AACL,WAAG,QAAQ,WAAW,IAAI;AAC1B,WAAG,QAAQ,aAAa,KAAK,YAAY;AAAA,MAC3C;AACA,UAAI;AACF,YAAI,SAAS,WAAW;AACtB,oBAAU,WAAY;AACpB,qBAAS,UAAU,MAAM;AAAA,UAC3B,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,aAAa,EAAE,gBAAgB;AAAA,QACxC;AAAA,MACF,SAAS,KAAK;AAAA,MAAC;AAAA,IACjB;AAAA,IACA,cAAc,SAAS,aAAa,UAAU,KAAK;AACjD,4BAAsB;AACtB,UAAI,UAAU,QAAQ;AACpB,QAAAnB,aAAY,eAAe,MAAM;AAAA,UAC/B;AAAA,QACF,CAAC;AACD,YAAI,KAAK,iBAAiB;AACxB,aAAG,UAAU,YAAY,qBAAqB;AAAA,QAChD;AACA,YAAI,UAAU,KAAK;AAGnB,SAAC,YAAY,YAAY,QAAQ,QAAQ,WAAW,KAAK;AACzD,oBAAY,QAAQ,QAAQ,YAAY,IAAI;AAC5C,iBAAS,SAAS;AAClB,oBAAY,KAAK,aAAa;AAG9B,uBAAe;AAAA,UACb,UAAU;AAAA,UACV,MAAM;AAAA,UACN,eAAe;AAAA,QACjB,CAAC;AAAA,MACH,OAAO;AACL,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAkB,SAAS,mBAAmB;AAC5C,UAAI,UAAU;AACZ,aAAK,SAAS,SAAS;AACvB,aAAK,SAAS,SAAS;AACvB,4BAAoB;AACpB,YAAI,SAAS,SAAS,iBAAiB,SAAS,SAAS,SAAS,OAAO;AACzE,YAAI,SAAS;AACb,eAAO,UAAU,OAAO,YAAY;AAClC,mBAAS,OAAO,WAAW,iBAAiB,SAAS,SAAS,SAAS,OAAO;AAC9E,cAAI,WAAW,OAAQ;AACvB,mBAAS;AAAA,QACX;AACA,eAAO,WAAW,OAAO,EAAE,iBAAiB,MAAM;AAClD,YAAI,QAAQ;AACV,aAAG;AACD,gBAAI,OAAO,OAAO,GAAG;AACnB,kBAAI,WAAW;AACf,yBAAW,OAAO,OAAO,EAAE,YAAY;AAAA,gBACrC,SAAS,SAAS;AAAA,gBAClB,SAAS,SAAS;AAAA,gBAClB;AAAA,gBACA,QAAQ;AAAA,cACV,CAAC;AACD,kBAAI,YAAY,CAAC,KAAK,QAAQ,gBAAgB;AAC5C;AAAA,cACF;AAAA,YACF;AACA,qBAAS;AAAA,UACX,SAC8B,SAAS,gBAAgB,MAAM;AAAA,QAC/D;AACA,8BAAsB;AAAA,MACxB;AAAA,IACF;AAAA,IACA,cAAc,SAAS,aAA6B,KAAK;AACvD,UAAI,QAAQ;AACV,YAAI,UAAU,KAAK,SACjB,oBAAoB,QAAQ,mBAC5B,iBAAiB,QAAQ,gBACzB,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KACvC,cAAc,WAAW,OAAO,SAAS,IAAI,GAC7C,SAAS,WAAW,eAAe,YAAY,GAC/C,SAAS,WAAW,eAAe,YAAY,GAC/C,uBAAuB,2BAA2B,uBAAuB,wBAAwB,mBAAmB,GACpH,MAAM,MAAM,UAAU,OAAO,UAAU,eAAe,MAAM,UAAU,MAAM,uBAAuB,qBAAqB,CAAC,IAAI,iCAAiC,CAAC,IAAI,MAAM,UAAU,IACnL,MAAM,MAAM,UAAU,OAAO,UAAU,eAAe,MAAM,UAAU,MAAM,uBAAuB,qBAAqB,CAAC,IAAI,iCAAiC,CAAC,IAAI,MAAM,UAAU;AAGrL,YAAI,CAAC,SAAS,UAAU,CAAC,qBAAqB;AAC5C,cAAI,qBAAqB,KAAK,IAAI,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,GAAG,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,CAAC,IAAI,mBAAmB;AACnI;AAAA,UACF;AACA,eAAK,aAAa,KAAK,IAAI;AAAA,QAC7B;AACA,YAAI,SAAS;AACX,cAAI,aAAa;AACf,wBAAY,KAAK,MAAM,UAAU;AACjC,wBAAY,KAAK,MAAM,UAAU;AAAA,UACnC,OAAO;AACL,0BAAc;AAAA,cACZ,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,cACH,GAAG;AAAA,YACL;AAAA,UACF;AACA,cAAI,YAAY,UAAU,OAAO,YAAY,GAAG,GAAG,EAAE,OAAO,YAAY,GAAG,GAAG,EAAE,OAAO,YAAY,GAAG,GAAG,EAAE,OAAO,YAAY,GAAG,GAAG,EAAE,OAAO,YAAY,GAAG,GAAG,EAAE,OAAO,YAAY,GAAG,GAAG;AAC1L,cAAI,SAAS,mBAAmB,SAAS;AACzC,cAAI,SAAS,gBAAgB,SAAS;AACtC,cAAI,SAAS,eAAe,SAAS;AACrC,cAAI,SAAS,aAAa,SAAS;AACnC,mBAAS;AACT,mBAAS;AACT,qBAAW;AAAA,QACb;AACA,YAAI,cAAc,IAAI,eAAe;AAAA,MACvC;AAAA,IACF;AAAA,IACA,cAAc,SAAS,eAAe;AAGpC,UAAI,CAAC,SAAS;AACZ,YAAI,YAAY,KAAK,QAAQ,iBAAiB,SAAS,OAAO,QAC5D,OAAO,QAAQ,QAAQ,MAAM,yBAAyB,MAAM,SAAS,GACrE,UAAU,KAAK;AAGjB,YAAI,yBAAyB;AAE3B,gCAAsB;AACtB,iBAAO,IAAI,qBAAqB,UAAU,MAAM,YAAY,IAAI,qBAAqB,WAAW,MAAM,UAAU,wBAAwB,UAAU;AAChJ,kCAAsB,oBAAoB;AAAA,UAC5C;AACA,cAAI,wBAAwB,SAAS,QAAQ,wBAAwB,SAAS,iBAAiB;AAC7F,gBAAI,wBAAwB,SAAU,uBAAsB,0BAA0B;AACtF,iBAAK,OAAO,oBAAoB;AAChC,iBAAK,QAAQ,oBAAoB;AAAA,UACnC,OAAO;AACL,kCAAsB,0BAA0B;AAAA,UAClD;AACA,6CAAmC,wBAAwB,mBAAmB;AAAA,QAChF;AACA,kBAAU,OAAO,UAAU,IAAI;AAC/B,oBAAY,SAAS,QAAQ,YAAY,KAAK;AAC9C,oBAAY,SAAS,QAAQ,eAAe,IAAI;AAChD,oBAAY,SAAS,QAAQ,WAAW,IAAI;AAC5C,YAAI,SAAS,cAAc,EAAE;AAC7B,YAAI,SAAS,aAAa,EAAE;AAC5B,YAAI,SAAS,cAAc,YAAY;AACvC,YAAI,SAAS,UAAU,CAAC;AACxB,YAAI,SAAS,OAAO,KAAK,GAAG;AAC5B,YAAI,SAAS,QAAQ,KAAK,IAAI;AAC9B,YAAI,SAAS,SAAS,KAAK,KAAK;AAChC,YAAI,SAAS,UAAU,KAAK,MAAM;AAClC,YAAI,SAAS,WAAW,KAAK;AAC7B,YAAI,SAAS,YAAY,0BAA0B,aAAa,OAAO;AACvE,YAAI,SAAS,UAAU,QAAQ;AAC/B,YAAI,SAAS,iBAAiB,MAAM;AACpC,iBAAS,QAAQ;AACjB,kBAAU,YAAY,OAAO;AAG7B,YAAI,SAAS,oBAAoB,kBAAkB,SAAS,QAAQ,MAAM,KAAK,IAAI,MAAM,OAAO,iBAAiB,SAAS,QAAQ,MAAM,MAAM,IAAI,MAAM,GAAG;AAAA,MAC7J;AAAA,IACF;AAAA,IACA,cAAc,SAAS,aAAwB,KAAiB,UAAU;AACxE,UAAI,QAAQ;AACZ,UAAI,eAAe,IAAI;AACvB,UAAI,UAAU,MAAM;AACpB,MAAAA,aAAY,aAAa,MAAM;AAAA,QAC7B;AAAA,MACF,CAAC;AACD,UAAI,SAAS,eAAe;AAC1B,aAAK,QAAQ;AACb;AAAA,MACF;AACA,MAAAA,aAAY,cAAc,IAAI;AAC9B,UAAI,CAAC,SAAS,eAAe;AAC3B,kBAAUoB,OAAM,MAAM;AACtB,gBAAQ,gBAAgB,IAAI;AAC5B,gBAAQ,YAAY;AACpB,gBAAQ,MAAM,aAAa,IAAI;AAC/B,aAAK,WAAW;AAChB,oBAAY,SAAS,KAAK,QAAQ,aAAa,KAAK;AACpD,iBAAS,QAAQ;AAAA,MACnB;AAGA,YAAM,UAAU,UAAU,WAAY;AACpC,QAAApB,aAAY,SAAS,KAAK;AAC1B,YAAI,SAAS,cAAe;AAC5B,YAAI,CAAC,MAAM,QAAQ,mBAAmB;AACpC,iBAAO,aAAa,SAAS,MAAM;AAAA,QACrC;AACA,cAAM,WAAW;AACjB,uBAAe;AAAA,UACb,UAAU;AAAA,UACV,MAAM;AAAA,QACR,CAAC;AAAA,MACH,CAAC;AACD,OAAC,YAAY,YAAY,QAAQ,QAAQ,WAAW,IAAI;AAGxD,UAAI,UAAU;AACZ,0BAAkB;AAClB,cAAM,UAAU,YAAY,MAAM,kBAAkB,EAAE;AAAA,MACxD,OAAO;AAEL,YAAI,UAAU,WAAW,MAAM,OAAO;AACtC,YAAI,UAAU,YAAY,MAAM,OAAO;AACvC,YAAI,UAAU,eAAe,MAAM,OAAO;AAC1C,YAAI,cAAc;AAChB,uBAAa,gBAAgB;AAC7B,kBAAQ,WAAW,QAAQ,QAAQ,KAAK,OAAO,cAAc,MAAM;AAAA,QACrE;AACA,WAAG,UAAU,QAAQ,KAAK;AAG1B,YAAI,QAAQ,aAAa,eAAe;AAAA,MAC1C;AACA,4BAAsB;AACtB,YAAM,eAAe,UAAU,MAAM,aAAa,KAAK,OAAO,UAAU,GAAG,CAAC;AAC5E,SAAG,UAAU,eAAe,KAAK;AACjC,cAAQ;AACR,aAAO,aAAa,EAAE,gBAAgB;AACtC,UAAI,QAAQ;AACV,YAAI,SAAS,MAAM,eAAe,MAAM;AAAA,MAC1C;AAAA,IACF;AAAA;AAAA,IAEA,aAAa,SAAS,YAAuB,KAAK;AAChD,UAAI,KAAK,KAAK,IACZ,SAAS,IAAI,QACb,UACA,YACA,QACA,UAAU,KAAK,SACf,QAAQ,QAAQ,OAChB,iBAAiB,SAAS,QAC1B,UAAU,gBAAgB,OAC1B,UAAU,QAAQ,MAClB,eAAe,eAAe,gBAC9B,UACA,QAAQ,MACR,iBAAiB;AACnB,UAAI,QAAS;AACb,eAAS,cAAc,MAAM,OAAO;AAClC,QAAAA,aAAY,MAAM,OAAO,eAAe;AAAA,UACtC;AAAA,UACA;AAAA,UACA,MAAM,WAAW,aAAa;AAAA,UAC9B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ,SAAS,OAAOqB,SAAQC,QAAO;AACrC,mBAAO,QAAQ,QAAQ,IAAI,QAAQ,UAAUD,SAAQ,QAAQA,OAAM,GAAG,KAAKC,MAAK;AAAA,UAClF;AAAA,UACA;AAAA,QACF,GAAG,KAAK,CAAC;AAAA,MACX;AAGA,eAAS,UAAU;AACjB,sBAAc,0BAA0B;AACxC,cAAM,sBAAsB;AAC5B,YAAI,UAAU,cAAc;AAC1B,uBAAa,sBAAsB;AAAA,QACrC;AAAA,MACF;AAGA,eAAS,UAAU,WAAW;AAC5B,sBAAc,qBAAqB;AAAA,UACjC;AAAA,QACF,CAAC;AACD,YAAI,WAAW;AAEb,cAAI,SAAS;AACX,2BAAe,WAAW;AAAA,UAC5B,OAAO;AACL,2BAAe,WAAW,KAAK;AAAA,UACjC;AACA,cAAI,UAAU,cAAc;AAE1B,wBAAY,QAAQ,cAAc,YAAY,QAAQ,aAAa,eAAe,QAAQ,YAAY,KAAK;AAC3G,wBAAY,QAAQ,QAAQ,YAAY,IAAI;AAAA,UAC9C;AACA,cAAI,gBAAgB,SAAS,UAAU,SAAS,QAAQ;AACtD,0BAAc;AAAA,UAChB,WAAW,UAAU,SAAS,UAAU,aAAa;AACnD,0BAAc;AAAA,UAChB;AAGA,cAAI,iBAAiB,OAAO;AAC1B,kBAAM,wBAAwB;AAAA,UAChC;AACA,gBAAM,WAAW,WAAY;AAC3B,0BAAc,2BAA2B;AACzC,kBAAM,wBAAwB;AAAA,UAChC,CAAC;AACD,cAAI,UAAU,cAAc;AAC1B,yBAAa,WAAW;AACxB,yBAAa,wBAAwB;AAAA,UACvC;AAAA,QACF;AAGA,YAAI,WAAW,UAAU,CAAC,OAAO,YAAY,WAAW,MAAM,CAAC,OAAO,UAAU;AAC9E,uBAAa;AAAA,QACf;AAGA,YAAI,CAAC,QAAQ,kBAAkB,CAAC,IAAI,UAAU,WAAW,UAAU;AACjE,iBAAO,WAAW,OAAO,EAAE,iBAAiB,IAAI,MAAM;AAGtD,WAAC,aAAa,8BAA8B,GAAG;AAAA,QACjD;AACA,SAAC,QAAQ,kBAAkB,IAAI,mBAAmB,IAAI,gBAAgB;AACtE,eAAO,iBAAiB;AAAA,MAC1B;AAGA,eAAS,UAAU;AACjB,mBAAWL,OAAM,MAAM;AACvB,4BAAoBA,OAAM,QAAQ,QAAQ,SAAS;AACnD,uBAAe;AAAA,UACb,UAAU;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,eAAe;AAAA,QACjB,CAAC;AAAA,MACH;AACA,UAAI,IAAI,mBAAmB,QAAQ;AACjC,YAAI,cAAc,IAAI,eAAe;AAAA,MACvC;AACA,eAAS,QAAQ,QAAQ,QAAQ,WAAW,IAAI,IAAI;AACpD,oBAAc,UAAU;AACxB,UAAI,SAAS,cAAe,QAAO;AACnC,UAAI,OAAO,SAAS,IAAI,MAAM,KAAK,OAAO,YAAY,OAAO,cAAc,OAAO,cAAc,MAAM,0BAA0B,QAAQ;AACtI,eAAO,UAAU,KAAK;AAAA,MACxB;AACA,wBAAkB;AAClB,UAAI,kBAAkB,CAAC,QAAQ,aAAa,UAAU,YAAY,SAAS,aAAa,UACtF,gBAAgB,SAAS,KAAK,cAAc,YAAY,UAAU,MAAM,gBAAgB,QAAQ,GAAG,MAAM,MAAM,SAAS,MAAM,gBAAgB,QAAQ,GAAG,IAAI;AAC7J,mBAAW,KAAK,cAAc,KAAK,MAAM,MAAM;AAC/C,mBAAW,QAAQ,MAAM;AACzB,sBAAc,eAAe;AAC7B,YAAI,SAAS,cAAe,QAAO;AACnC,YAAI,QAAQ;AACV,qBAAW;AACX,kBAAQ;AACR,eAAK,WAAW;AAChB,wBAAc,QAAQ;AACtB,cAAI,CAAC,SAAS,eAAe;AAC3B,gBAAI,QAAQ;AACV,qBAAO,aAAa,QAAQ,MAAM;AAAA,YACpC,OAAO;AACL,qBAAO,YAAY,MAAM;AAAA,YAC3B;AAAA,UACF;AACA,iBAAO,UAAU,IAAI;AAAA,QACvB;AACA,YAAI,cAAc,UAAU,IAAI,QAAQ,SAAS;AACjD,YAAI,CAAC,eAAe,aAAa,KAAK,UAAU,IAAI,KAAK,CAAC,YAAY,UAAU;AAI9E,cAAI,gBAAgB,QAAQ;AAC1B,mBAAO,UAAU,KAAK;AAAA,UACxB;AAGA,cAAI,eAAe,OAAO,IAAI,QAAQ;AACpC,qBAAS;AAAA,UACX;AACA,cAAI,QAAQ;AACV,yBAAa,QAAQ,MAAM;AAAA,UAC7B;AACA,cAAI,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ,YAAY,KAAK,CAAC,CAAC,MAAM,MAAM,OAAO;AACtF,oBAAQ;AACR,gBAAI,eAAe,YAAY,aAAa;AAE1C,iBAAG,aAAa,QAAQ,YAAY,WAAW;AAAA,YACjD,OAAO;AACL,iBAAG,YAAY,MAAM;AAAA,YACvB;AACA,uBAAW;AAEX,oBAAQ;AACR,mBAAO,UAAU,IAAI;AAAA,UACvB;AAAA,QACF,WAAW,eAAe,cAAc,KAAK,UAAU,IAAI,GAAG;AAE5D,cAAI,aAAa,SAAS,IAAI,GAAG,SAAS,IAAI;AAC9C,cAAI,eAAe,QAAQ;AACzB,mBAAO,UAAU,KAAK;AAAA,UACxB;AACA,mBAAS;AACT,uBAAa,QAAQ,MAAM;AAC3B,cAAI,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ,YAAY,KAAK,KAAK,MAAM,OAAO;AACnF,oBAAQ;AACR,eAAG,aAAa,QAAQ,UAAU;AAClC,uBAAW;AAEX,oBAAQ;AACR,mBAAO,UAAU,IAAI;AAAA,UACvB;AAAA,QACF,WAAW,OAAO,eAAe,IAAI;AACnC,uBAAa,QAAQ,MAAM;AAC3B,cAAI,YAAY,GACd,uBACA,iBAAiB,OAAO,eAAe,IACvC,kBAAkB,CAAC,mBAAmB,OAAO,YAAY,OAAO,UAAU,UAAU,OAAO,YAAY,OAAO,UAAU,YAAY,QAAQ,GAC5I,QAAQ,WAAW,QAAQ,QAC3B,kBAAkB,eAAe,QAAQ,OAAO,KAAK,KAAK,eAAe,QAAQ,OAAO,KAAK,GAC7F,eAAe,kBAAkB,gBAAgB,YAAY;AAC/D,cAAI,eAAe,QAAQ;AACzB,oCAAwB,WAAW,KAAK;AACxC,oCAAwB;AACxB,qCAAyB,CAAC,mBAAmB,QAAQ,cAAc;AAAA,UACrE;AACA,sBAAY,kBAAkB,KAAK,QAAQ,YAAY,UAAU,kBAAkB,IAAI,QAAQ,eAAe,QAAQ,yBAAyB,OAAO,QAAQ,gBAAgB,QAAQ,uBAAuB,wBAAwB,eAAe,MAAM;AAC1P,cAAI;AACJ,cAAI,cAAc,GAAG;AAEnB,gBAAI,YAAYA,OAAM,MAAM;AAC5B,eAAG;AACD,2BAAa;AACb,wBAAU,SAAS,SAAS,SAAS;AAAA,YACvC,SAAS,YAAY,IAAI,SAAS,SAAS,MAAM,UAAU,YAAY;AAAA,UACzE;AAEA,cAAI,cAAc,KAAK,YAAY,QAAQ;AACzC,mBAAO,UAAU,KAAK;AAAA,UACxB;AACA,uBAAa;AACb,0BAAgB;AAChB,cAAI,cAAc,OAAO,oBACvB,QAAQ;AACV,kBAAQ,cAAc;AACtB,cAAI,aAAa,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ,YAAY,KAAK,KAAK;AACrF,cAAI,eAAe,OAAO;AACxB,gBAAI,eAAe,KAAK,eAAe,IAAI;AACzC,sBAAQ,eAAe;AAAA,YACzB;AACA,sBAAU;AACV,uBAAW,WAAW,EAAE;AACxB,oBAAQ;AACR,gBAAI,SAAS,CAAC,aAAa;AACzB,iBAAG,YAAY,MAAM;AAAA,YACvB,OAAO;AACL,qBAAO,WAAW,aAAa,QAAQ,QAAQ,cAAc,MAAM;AAAA,YACrE;AAGA,gBAAI,iBAAiB;AACnB,uBAAS,iBAAiB,GAAG,eAAe,gBAAgB,SAAS;AAAA,YACvE;AACA,uBAAW,OAAO;AAGlB,gBAAI,0BAA0B,UAAa,CAAC,wBAAwB;AAClE,mCAAqB,KAAK,IAAI,wBAAwB,QAAQ,MAAM,EAAE,KAAK,CAAC;AAAA,YAC9E;AACA,oBAAQ;AACR,mBAAO,UAAU,IAAI;AAAA,UACvB;AAAA,QACF;AACA,YAAI,GAAG,SAAS,MAAM,GAAG;AACvB,iBAAO,UAAU,KAAK;AAAA,QACxB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,uBAAuB;AAAA,IACvB,gBAAgB,SAAS,iBAAiB;AACxC,UAAI,UAAU,aAAa,KAAK,YAAY;AAC5C,UAAI,UAAU,aAAa,KAAK,YAAY;AAC5C,UAAI,UAAU,eAAe,KAAK,YAAY;AAC9C,UAAI,UAAU,YAAY,6BAA6B;AACvD,UAAI,UAAU,aAAa,6BAA6B;AACxD,UAAI,UAAU,aAAa,6BAA6B;AAAA,IAC1D;AAAA,IACA,cAAc,SAAS,eAAe;AACpC,UAAI,gBAAgB,KAAK,GAAG;AAC5B,UAAI,eAAe,WAAW,KAAK,OAAO;AAC1C,UAAI,eAAe,YAAY,KAAK,OAAO;AAC3C,UAAI,eAAe,aAAa,KAAK,OAAO;AAC5C,UAAI,eAAe,iBAAiB,KAAK,OAAO;AAChD,UAAI,eAAe,eAAe,KAAK,OAAO;AAC9C,UAAI,UAAU,eAAe,IAAI;AAAA,IACnC;AAAA,IACA,SAAS,SAAS,QAAmB,KAAK;AACxC,UAAI,KAAK,KAAK,IACZ,UAAU,KAAK;AAGjB,iBAAWA,OAAM,MAAM;AACvB,0BAAoBA,OAAM,QAAQ,QAAQ,SAAS;AACnD,MAAAjB,aAAY,QAAQ,MAAM;AAAA,QACxB;AAAA,MACF,CAAC;AACD,iBAAW,UAAU,OAAO;AAG5B,iBAAWiB,OAAM,MAAM;AACvB,0BAAoBA,OAAM,QAAQ,QAAQ,SAAS;AACnD,UAAI,SAAS,eAAe;AAC1B,aAAK,SAAS;AACd;AAAA,MACF;AACA,4BAAsB;AACtB,+BAAyB;AACzB,8BAAwB;AACxB,oBAAc,KAAK,OAAO;AAC1B,mBAAa,KAAK,eAAe;AACjC,sBAAgB,KAAK,OAAO;AAC5B,sBAAgB,KAAK,YAAY;AAGjC,UAAI,KAAK,iBAAiB;AACxB,YAAI,UAAU,QAAQ,IAAI;AAC1B,YAAI,IAAI,aAAa,KAAK,YAAY;AAAA,MACxC;AACA,WAAK,eAAe;AACpB,WAAK,aAAa;AAClB,UAAI,QAAQ;AACV,YAAI,SAAS,MAAM,eAAe,EAAE;AAAA,MACtC;AACA,UAAI,QAAQ,aAAa,EAAE;AAC3B,UAAI,KAAK;AACP,YAAI,OAAO;AACT,cAAI,cAAc,IAAI,eAAe;AACrC,WAAC,QAAQ,cAAc,IAAI,gBAAgB;AAAA,QAC7C;AACA,mBAAW,QAAQ,cAAc,QAAQ,WAAW,YAAY,OAAO;AACvE,YAAI,WAAW,YAAY,eAAe,YAAY,gBAAgB,SAAS;AAE7E,qBAAW,QAAQ,cAAc,QAAQ,WAAW,YAAY,OAAO;AAAA,QACzE;AACA,YAAI,QAAQ;AACV,cAAI,KAAK,iBAAiB;AACxB,gBAAI,QAAQ,WAAW,IAAI;AAAA,UAC7B;AACA,4BAAkB,MAAM;AACxB,iBAAO,MAAM,aAAa,IAAI;AAI9B,cAAI,SAAS,CAAC,qBAAqB;AACjC,wBAAY,QAAQ,cAAc,YAAY,QAAQ,aAAa,KAAK,QAAQ,YAAY,KAAK;AAAA,UACnG;AACA,sBAAY,QAAQ,KAAK,QAAQ,aAAa,KAAK;AAGnD,yBAAe;AAAA,YACb,UAAU;AAAA,YACV,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU;AAAA,YACV,mBAAmB;AAAA,YACnB,eAAe;AAAA,UACjB,CAAC;AACD,cAAI,WAAW,UAAU;AACvB,gBAAI,YAAY,GAAG;AAEjB,6BAAe;AAAA,gBACb,QAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,eAAe;AAAA,cACjB,CAAC;AAGD,6BAAe;AAAA,gBACb,UAAU;AAAA,gBACV,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,eAAe;AAAA,cACjB,CAAC;AAGD,6BAAe;AAAA,gBACb,QAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,eAAe;AAAA,cACjB,CAAC;AACD,6BAAe;AAAA,gBACb,UAAU;AAAA,gBACV,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,eAAe;AAAA,cACjB,CAAC;AAAA,YACH;AACA,2BAAe,YAAY,KAAK;AAAA,UAClC,OAAO;AACL,gBAAI,aAAa,UAAU;AACzB,kBAAI,YAAY,GAAG;AAEjB,+BAAe;AAAA,kBACb,UAAU;AAAA,kBACV,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN,eAAe;AAAA,gBACjB,CAAC;AACD,+BAAe;AAAA,kBACb,UAAU;AAAA,kBACV,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN,eAAe;AAAA,gBACjB,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AACA,cAAI,SAAS,QAAQ;AAEnB,gBAAI,YAAY,QAAQ,aAAa,IAAI;AACvC,yBAAW;AACX,kCAAoB;AAAA,YACtB;AACA,2BAAe;AAAA,cACb,UAAU;AAAA,cACV,MAAM;AAAA,cACN,MAAM;AAAA,cACN,eAAe;AAAA,YACjB,CAAC;AAGD,iBAAK,KAAK;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AACA,WAAK,SAAS;AAAA,IAChB;AAAA,IACA,UAAU,SAAS,WAAW;AAC5B,MAAAjB,aAAY,WAAW,IAAI;AAC3B,eAAS,SAAS,WAAW,UAAU,SAAS,UAAU,aAAa,cAAc,SAAS,WAAW,QAAQ,WAAW,oBAAoB,WAAW,oBAAoB,aAAa,gBAAgB,cAAc,cAAc,SAAS,UAAU,SAAS,QAAQ,SAAS,QAAQ,SAAS,SAAS;AAC/S,wBAAkB,QAAQ,SAAU,IAAI;AACtC,WAAG,UAAU;AAAA,MACf,CAAC;AACD,wBAAkB,SAAS,SAAS,SAAS;AAAA,IAC/C;AAAA,IACA,aAAa,SAAS,YAAuB,KAAK;AAChD,cAAQ,IAAI,MAAM;AAAA,QAChB,KAAK;AAAA,QACL,KAAK;AACH,eAAK,QAAQ,GAAG;AAChB;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,cAAI,QAAQ;AACV,iBAAK,YAAY,GAAG;AACpB,4BAAgB,GAAG;AAAA,UACrB;AACA;AAAA,QACF,KAAK;AACH,cAAI,eAAe;AACnB;AAAA,MACJ;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,SAAS,SAAS,UAAU;AAC1B,UAAI,QAAQ,CAAC,GACX,IACA,WAAW,KAAK,GAAG,UACnBc,KAAI,GACJS,KAAI,SAAS,QACb,UAAU,KAAK;AACjB,aAAOT,KAAIS,IAAGT,MAAK;AACjB,aAAK,SAASA,EAAC;AACf,YAAI,QAAQ,IAAI,QAAQ,WAAW,KAAK,IAAI,KAAK,GAAG;AAClD,gBAAM,KAAK,GAAG,aAAa,QAAQ,UAAU,KAAK,YAAY,EAAE,CAAC;AAAA,QACnE;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,SAAS,KAAK,OAAO,cAAc;AACvC,UAAI,QAAQ,CAAC,GACXrB,UAAS,KAAK;AAChB,WAAK,QAAQ,EAAE,QAAQ,SAAU+B,KAAIV,IAAG;AACtC,YAAI,KAAKrB,QAAO,SAASqB,EAAC;AAC1B,YAAI,QAAQ,IAAI,KAAK,QAAQ,WAAWrB,SAAQ,KAAK,GAAG;AACtD,gBAAM+B,GAAE,IAAI;AAAA,QACd;AAAA,MACF,GAAG,IAAI;AACP,sBAAgB,KAAK,sBAAsB;AAC3C,YAAM,QAAQ,SAAUA,KAAI;AAC1B,YAAI,MAAMA,GAAE,GAAG;AACb,UAAA/B,QAAO,YAAY,MAAM+B,GAAE,CAAC;AAC5B,UAAA/B,QAAO,YAAY,MAAM+B,GAAE,CAAC;AAAA,QAC9B;AAAA,MACF,CAAC;AACD,sBAAgB,KAAK,WAAW;AAAA,IAClC;AAAA;AAAA;AAAA;AAAA,IAIA,MAAM,SAAS,OAAO;AACpB,UAAI,QAAQ,KAAK,QAAQ;AACzB,eAAS,MAAM,OAAO,MAAM,IAAI,IAAI;AAAA,IACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,SAAS,SAAS,UAAU,IAAI,UAAU;AACxC,aAAO,QAAQ,IAAI,YAAY,KAAK,QAAQ,WAAW,KAAK,IAAI,KAAK;AAAA,IACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,QAAQ,SAAS,OAAO,MAAM,OAAO;AACnC,UAAI,UAAU,KAAK;AACnB,UAAI,UAAU,QAAQ;AACpB,eAAO,QAAQ,IAAI;AAAA,MACrB,OAAO;AACL,YAAI,gBAAgB,cAAc,aAAa,MAAM,MAAM,KAAK;AAChE,YAAI,OAAO,kBAAkB,aAAa;AACxC,kBAAQ,IAAI,IAAI;AAAA,QAClB,OAAO;AACL,kBAAQ,IAAI,IAAI;AAAA,QAClB;AACA,YAAI,SAAS,SAAS;AACpB,wBAAc,OAAO;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAIA,SAAS,SAAS,UAAU;AAC1B,MAAAxB,aAAY,WAAW,IAAI;AAC3B,UAAI,KAAK,KAAK;AACd,SAAG,OAAO,IAAI;AACd,UAAI,IAAI,aAAa,KAAK,WAAW;AACrC,UAAI,IAAI,cAAc,KAAK,WAAW;AACtC,UAAI,IAAI,eAAe,KAAK,WAAW;AACvC,UAAI,KAAK,iBAAiB;AACxB,YAAI,IAAI,YAAY,IAAI;AACxB,YAAI,IAAI,aAAa,IAAI;AAAA,MAC3B;AAEA,YAAM,UAAU,QAAQ,KAAK,GAAG,iBAAiB,aAAa,GAAG,SAAUyB,KAAI;AAC7E,QAAAA,IAAG,gBAAgB,WAAW;AAAA,MAChC,CAAC;AACD,WAAK,QAAQ;AACb,WAAK,0BAA0B;AAC/B,gBAAU,OAAO,UAAU,QAAQ,KAAK,EAAE,GAAG,CAAC;AAC9C,WAAK,KAAK,KAAK;AAAA,IACjB;AAAA,IACA,YAAY,SAAS,aAAa;AAChC,UAAI,CAAC,aAAa;AAChB,QAAAzB,aAAY,aAAa,IAAI;AAC7B,YAAI,SAAS,cAAe;AAC5B,YAAI,SAAS,WAAW,MAAM;AAC9B,YAAI,KAAK,QAAQ,qBAAqB,QAAQ,YAAY;AACxD,kBAAQ,WAAW,YAAY,OAAO;AAAA,QACxC;AACA,sBAAc;AAAA,MAChB;AAAA,IACF;AAAA,IACA,YAAY,SAAS,WAAWD,cAAa;AAC3C,UAAIA,aAAY,gBAAgB,SAAS;AACvC,aAAK,WAAW;AAChB;AAAA,MACF;AACA,UAAI,aAAa;AACf,QAAAC,aAAY,aAAa,IAAI;AAC7B,YAAI,SAAS,cAAe;AAG5B,YAAI,OAAO,cAAc,UAAU,CAAC,KAAK,QAAQ,MAAM,aAAa;AAClE,iBAAO,aAAa,SAAS,MAAM;AAAA,QACrC,WAAW,QAAQ;AACjB,iBAAO,aAAa,SAAS,MAAM;AAAA,QACrC,OAAO;AACL,iBAAO,YAAY,OAAO;AAAA,QAC5B;AACA,YAAI,KAAK,QAAQ,MAAM,aAAa;AAClC,eAAK,QAAQ,QAAQ,OAAO;AAAA,QAC9B;AACA,YAAI,SAAS,WAAW,EAAE;AAC1B,sBAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACA,WAAS,gBAA2B,KAAK;AACvC,QAAI,IAAI,cAAc;AACpB,UAAI,aAAa,aAAa;AAAA,IAChC;AACA,QAAI,cAAc,IAAI,eAAe;AAAA,EACvC;AACA,WAAS,QAAQ,QAAQ,MAAMS,SAAQ,UAAU,UAAU,YAAY,eAAe,iBAAiB;AACrG,QAAI,KACF,WAAW,OAAO,OAAO,GACzB,WAAW,SAAS,QAAQ,QAC5B;AAEF,QAAI,OAAO,eAAe,CAAC,cAAc,CAAC,MAAM;AAC9C,YAAM,IAAI,YAAY,QAAQ;AAAA,QAC5B,SAAS;AAAA,QACT,YAAY;AAAA,MACd,CAAC;AAAA,IACH,OAAO;AACL,YAAM,SAAS,YAAY,OAAO;AAClC,UAAI,UAAU,QAAQ,MAAM,IAAI;AAAA,IAClC;AACA,QAAI,KAAK;AACT,QAAI,OAAO;AACX,QAAI,UAAUA;AACd,QAAI,cAAc;AAClB,QAAI,UAAU,YAAY;AAC1B,QAAI,cAAc,cAAc,QAAQ,IAAI;AAC5C,QAAI,kBAAkB;AACtB,QAAI,gBAAgB;AACpB,WAAO,cAAc,GAAG;AACxB,QAAI,UAAU;AACZ,eAAS,SAAS,KAAK,UAAU,KAAK,aAAa;AAAA,IACrD;AACA,WAAO;AAAA,EACT;AACA,WAAS,kBAAkB,IAAI;AAC7B,OAAG,YAAY;AAAA,EACjB;AACA,WAAS,YAAY;AACnB,cAAU;AAAA,EACZ;AACA,WAAS,cAAc,KAAK,UAAU,UAAU;AAC9C,QAAI,cAAc,QAAQ,SAAS,SAAS,IAAI,GAAG,SAAS,SAAS,IAAI,CAAC;AAC1E,QAAI,sBAAsB,kCAAkC,SAAS,IAAI,SAAS,SAAS,OAAO;AAClG,QAAI,SAAS;AACb,WAAO,WAAW,IAAI,UAAU,oBAAoB,OAAO,UAAU,IAAI,UAAU,YAAY,OAAO,IAAI,UAAU,YAAY,QAAQ,IAAI,UAAU,oBAAoB,MAAM,UAAU,IAAI,UAAU,YAAY,UAAU,IAAI,UAAU,YAAY;AAAA,EAC1P;AACA,WAAS,aAAa,KAAK,UAAU,UAAU;AAC7C,QAAI,aAAa,QAAQ,UAAU,SAAS,IAAI,SAAS,QAAQ,SAAS,CAAC;AAC3E,QAAI,sBAAsB,kCAAkC,SAAS,IAAI,SAAS,SAAS,OAAO;AAClG,QAAI,SAAS;AACb,WAAO,WAAW,IAAI,UAAU,oBAAoB,QAAQ,UAAU,IAAI,UAAU,WAAW,UAAU,IAAI,UAAU,WAAW,OAAO,IAAI,UAAU,oBAAoB,SAAS,UAAU,IAAI,UAAU,WAAW,SAAS,IAAI,UAAU,WAAW;AAAA,EAC3P;AACA,WAAS,kBAAkB,KAAK,QAAQ,YAAY,UAAU,eAAe,uBAAuB,YAAY,cAAc;AAC5H,QAAI,cAAc,WAAW,IAAI,UAAU,IAAI,SAC7C,eAAe,WAAW,WAAW,SAAS,WAAW,OACzD,WAAW,WAAW,WAAW,MAAM,WAAW,MAClD,WAAW,WAAW,WAAW,SAAS,WAAW,OACrD,SAAS;AACX,QAAI,CAAC,YAAY;AAEf,UAAI,gBAAgB,qBAAqB,eAAe,eAAe;AAGrE,YAAI,CAAC,0BAA0B,kBAAkB,IAAI,cAAc,WAAW,eAAe,wBAAwB,IAAI,cAAc,WAAW,eAAe,wBAAwB,IAAI;AAE3L,kCAAwB;AAAA,QAC1B;AACA,YAAI,CAAC,uBAAuB;AAE1B,cAAI,kBAAkB,IAAI,cAAc,WAAW,qBACjD,cAAc,WAAW,oBAAoB;AAC7C,mBAAO,CAAC;AAAA,UACV;AAAA,QACF,OAAO;AACL,mBAAS;AAAA,QACX;AAAA,MACF,OAAO;AAEL,YAAI,cAAc,WAAW,gBAAgB,IAAI,iBAAiB,KAAK,cAAc,WAAW,gBAAgB,IAAI,iBAAiB,GAAG;AACtI,iBAAO,oBAAoB,MAAM;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AACA,aAAS,UAAU;AACnB,QAAI,QAAQ;AAEV,UAAI,cAAc,WAAW,eAAe,wBAAwB,KAAK,cAAc,WAAW,eAAe,wBAAwB,GAAG;AAC1I,eAAO,cAAc,WAAW,eAAe,IAAI,IAAI;AAAA,MACzD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAQA,WAAS,oBAAoB,QAAQ;AACnC,QAAIQ,OAAM,MAAM,IAAIA,OAAM,MAAM,GAAG;AACjC,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAQA,WAAS,YAAY,IAAI;AACvB,QAAI,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,aAC1DH,KAAI,IAAI,QACR,MAAM;AACR,WAAOA,MAAK;AACV,aAAO,IAAI,WAAWA,EAAC;AAAA,IACzB;AACA,WAAO,IAAI,SAAS,EAAE;AAAA,EACxB;AACA,WAAS,uBAAuB,MAAM;AACpC,sBAAkB,SAAS;AAC3B,QAAI,SAAS,KAAK,qBAAqB,OAAO;AAC9C,QAAI,MAAM,OAAO;AACjB,WAAO,OAAO;AACZ,UAAI,KAAK,OAAO,GAAG;AACnB,SAAG,WAAW,kBAAkB,KAAK,EAAE;AAAA,IACzC;AAAA,EACF;AACA,WAAS,UAAUE,KAAI;AACrB,WAAO,WAAWA,KAAI,CAAC;AAAA,EACzB;AACA,WAAS,gBAAgBQ,KAAI;AAC3B,WAAO,aAAaA,GAAE;AAAA,EACxB;AAGA,MAAI,gBAAgB;AAClB,OAAG,UAAU,aAAa,SAAU,KAAK;AACvC,WAAK,SAAS,UAAU,wBAAwB,IAAI,YAAY;AAC9D,YAAI,eAAe;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AAGA,WAAS,QAAQ;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAI,SAAS,GAAG,IAAI,UAAU;AAC5B,aAAO,CAAC,CAAC,QAAQ,IAAI,UAAU,IAAI,KAAK;AAAA,IAC1C;AAAA,IACA,QAAQE;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAON;AAAA,IACP,OAAOH;AAAA,IACP,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,EACF;AAOA,WAAS,MAAM,SAAU,SAAS;AAChC,WAAO,QAAQ,OAAO;AAAA,EACxB;AAMA,WAAS,QAAQ,WAAY;AAC3B,aAAS,OAAO,UAAU,QAAQ7B,WAAU,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC1F,MAAAA,SAAQ,IAAI,IAAI,UAAU,IAAI;AAAA,IAChC;AACA,QAAIA,SAAQ,CAAC,EAAE,gBAAgB,MAAO,CAAAA,WAAUA,SAAQ,CAAC;AACzD,IAAAA,SAAQ,QAAQ,SAAU,QAAQ;AAChC,UAAI,CAAC,OAAO,aAAa,CAAC,OAAO,UAAU,aAAa;AACtD,cAAM,gEAAgE,OAAO,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC;AAAA,MACvG;AACA,UAAI,OAAO,MAAO,UAAS,QAAQ,eAAe,eAAe,CAAC,GAAG,SAAS,KAAK,GAAG,OAAO,KAAK;AAClG,oBAAc,MAAM,MAAM;AAAA,IAC5B,CAAC;AAAA,EACH;AAOA,WAAS,SAAS,SAAU,IAAI,SAAS;AACvC,WAAO,IAAI,SAAS,IAAI,OAAO;AAAA,EACjC;AAGA,WAAS,UAAUuC;AAEnB,MAAI,cAAc,CAAC;AAAnB,MACE;AADF,MAEE;AAFF,MAGE,YAAY;AAHd,MAIE;AAJF,MAKE;AALF,MAME;AANF,MAOE;AACF,WAAS,mBAAmB;AAC1B,aAAS,aAAa;AACpB,WAAK,WAAW;AAAA,QACd,QAAQ;AAAA,QACR,yBAAyB;AAAA,QACzB,mBAAmB;AAAA,QACnB,aAAa;AAAA,QACb,cAAc;AAAA,MAChB;AAGA,eAASX,OAAM,MAAM;AACnB,YAAIA,IAAG,OAAO,CAAC,MAAM,OAAO,OAAO,KAAKA,GAAE,MAAM,YAAY;AAC1D,eAAKA,GAAE,IAAI,KAAKA,GAAE,EAAE,KAAK,IAAI;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AACA,eAAW,YAAY;AAAA,MACrB,aAAa,SAAS,YAAY,MAAM;AACtC,YAAI,gBAAgB,KAAK;AACzB,YAAI,KAAK,SAAS,iBAAiB;AACjC,aAAG,UAAU,YAAY,KAAK,iBAAiB;AAAA,QACjD,OAAO;AACL,cAAI,KAAK,QAAQ,gBAAgB;AAC/B,eAAG,UAAU,eAAe,KAAK,yBAAyB;AAAA,UAC5D,WAAW,cAAc,SAAS;AAChC,eAAG,UAAU,aAAa,KAAK,yBAAyB;AAAA,UAC1D,OAAO;AACL,eAAG,UAAU,aAAa,KAAK,yBAAyB;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAAA,MACA,mBAAmB,SAAS,kBAAkB,OAAO;AACnD,YAAI,gBAAgB,MAAM;AAE1B,YAAI,CAAC,KAAK,QAAQ,kBAAkB,CAAC,cAAc,QAAQ;AACzD,eAAK,kBAAkB,aAAa;AAAA,QACtC;AAAA,MACF;AAAA,MACA,MAAM,SAASY,QAAO;AACpB,YAAI,KAAK,SAAS,iBAAiB;AACjC,cAAI,UAAU,YAAY,KAAK,iBAAiB;AAAA,QAClD,OAAO;AACL,cAAI,UAAU,eAAe,KAAK,yBAAyB;AAC3D,cAAI,UAAU,aAAa,KAAK,yBAAyB;AACzD,cAAI,UAAU,aAAa,KAAK,yBAAyB;AAAA,QAC3D;AACA,wCAAgC;AAChC,yBAAiB;AACjB,uBAAe;AAAA,MACjB;AAAA,MACA,SAAS,SAAS,UAAU;AAC1B,qBAAa,eAAe,WAAW,YAAY,6BAA6B,kBAAkB,kBAAkB;AACpH,oBAAY,SAAS;AAAA,MACvB;AAAA,MACA,2BAA2B,SAAS,0BAA0B,KAAK;AACjE,aAAK,kBAAkB,KAAK,IAAI;AAAA,MAClC;AAAA,MACA,mBAAmB,SAAS,kBAAkB,KAAK,UAAU;AAC3D,YAAI,QAAQ;AACZ,YAAIxB,MAAK,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SAC3CC,MAAK,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SACzC,OAAO,SAAS,iBAAiBD,IAAGC,EAAC;AACvC,qBAAa;AAMb,YAAI,YAAY,KAAK,QAAQ,2BAA2B,QAAQ,cAAc,QAAQ;AACpF,qBAAW,KAAK,KAAK,SAAS,MAAM,QAAQ;AAG5C,cAAI,iBAAiB,2BAA2B,MAAM,IAAI;AAC1D,cAAI,cAAc,CAAC,8BAA8BD,OAAM,mBAAmBC,OAAM,kBAAkB;AAChG,0CAA8B,gCAAgC;AAE9D,yCAA6B,YAAY,WAAY;AACnD,kBAAI,UAAU,2BAA2B,SAAS,iBAAiBD,IAAGC,EAAC,GAAG,IAAI;AAC9E,kBAAI,YAAY,gBAAgB;AAC9B,iCAAiB;AACjB,iCAAiB;AAAA,cACnB;AACA,yBAAW,KAAK,MAAM,SAAS,SAAS,QAAQ;AAAA,YAClD,GAAG,EAAE;AACL,8BAAkBD;AAClB,8BAAkBC;AAAA,UACpB;AAAA,QACF,OAAO;AAEL,cAAI,CAAC,KAAK,QAAQ,gBAAgB,2BAA2B,MAAM,IAAI,MAAM,0BAA0B,GAAG;AACxG,6BAAiB;AACjB;AAAA,UACF;AACA,qBAAW,KAAK,KAAK,SAAS,2BAA2B,MAAM,KAAK,GAAG,KAAK;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AACA,WAAO,SAAS,YAAY;AAAA,MAC1B,YAAY;AAAA,MACZ,qBAAqB;AAAA,IACvB,CAAC;AAAA,EACH;AACA,WAAS,mBAAmB;AAC1B,gBAAY,QAAQ,SAAUwB,aAAY;AACxC,oBAAcA,YAAW,GAAG;AAAA,IAC9B,CAAC;AACD,kBAAc,CAAC;AAAA,EACjB;AACA,WAAS,kCAAkC;AACzC,kBAAc,0BAA0B;AAAA,EAC1C;AACA,MAAI,aAAa,SAAS,SAAU,KAAK,SAASpC,SAAQ,YAAY;AAEpE,QAAI,CAAC,QAAQ,OAAQ;AACrB,QAAIW,MAAK,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SAC3CC,MAAK,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SACzC,OAAO,QAAQ,mBACf,QAAQ,QAAQ,aAChB,cAAc,0BAA0B;AAC1C,QAAI,qBAAqB,OACvB;AAGF,QAAI,iBAAiBZ,SAAQ;AAC3B,qBAAeA;AACf,uBAAiB;AACjB,iBAAW,QAAQ;AACnB,uBAAiB,QAAQ;AACzB,UAAI,aAAa,MAAM;AACrB,mBAAW,2BAA2BA,SAAQ,IAAI;AAAA,MACpD;AAAA,IACF;AACA,QAAI,YAAY;AAChB,QAAI,gBAAgB;AACpB,OAAG;AACD,UAAI,KAAK,eACP,OAAO,QAAQ,EAAE,GACjB,MAAM,KAAK,KACX,SAAS,KAAK,QACd,OAAO,KAAK,MACZ,QAAQ,KAAK,OACb,QAAQ,KAAK,OACb,SAAS,KAAK,QACd,aAAa,QACb,aAAa,QACb,cAAc,GAAG,aACjB,eAAe,GAAG,cAClB,QAAQ,IAAI,EAAE,GACd,aAAa,GAAG,YAChB,aAAa,GAAG;AAClB,UAAI,OAAO,aAAa;AACtB,qBAAa,QAAQ,gBAAgB,MAAM,cAAc,UAAU,MAAM,cAAc,YAAY,MAAM,cAAc;AACvH,qBAAa,SAAS,iBAAiB,MAAM,cAAc,UAAU,MAAM,cAAc,YAAY,MAAM,cAAc;AAAA,MAC3H,OAAO;AACL,qBAAa,QAAQ,gBAAgB,MAAM,cAAc,UAAU,MAAM,cAAc;AACvF,qBAAa,SAAS,iBAAiB,MAAM,cAAc,UAAU,MAAM,cAAc;AAAA,MAC3F;AACA,UAAI,KAAK,eAAe,KAAK,IAAI,QAAQW,EAAC,KAAK,QAAQ,aAAa,QAAQ,gBAAgB,KAAK,IAAI,OAAOA,EAAC,KAAK,QAAQ,CAAC,CAAC;AAC5H,UAAI,KAAK,eAAe,KAAK,IAAI,SAASC,EAAC,KAAK,QAAQ,aAAa,SAAS,iBAAiB,KAAK,IAAI,MAAMA,EAAC,KAAK,QAAQ,CAAC,CAAC;AAC9H,UAAI,CAAC,YAAY,SAAS,GAAG;AAC3B,iBAASS,KAAI,GAAGA,MAAK,WAAWA,MAAK;AACnC,cAAI,CAAC,YAAYA,EAAC,GAAG;AACnB,wBAAYA,EAAC,IAAI,CAAC;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AACA,UAAI,YAAY,SAAS,EAAE,MAAM,MAAM,YAAY,SAAS,EAAE,MAAM,MAAM,YAAY,SAAS,EAAE,OAAO,IAAI;AAC1G,oBAAY,SAAS,EAAE,KAAK;AAC5B,oBAAY,SAAS,EAAE,KAAK;AAC5B,oBAAY,SAAS,EAAE,KAAK;AAC5B,sBAAc,YAAY,SAAS,EAAE,GAAG;AACxC,YAAI,MAAM,KAAK,MAAM,GAAG;AACtB,+BAAqB;AAErB,sBAAY,SAAS,EAAE,MAAM,YAAY,WAAY;AAEnD,gBAAI,cAAc,KAAK,UAAU,GAAG;AAClC,uBAAS,OAAO,aAAa,UAAU;AAAA,YACzC;AACA,gBAAI,gBAAgB,YAAY,KAAK,KAAK,EAAE,KAAK,YAAY,KAAK,KAAK,EAAE,KAAK,QAAQ;AACtF,gBAAI,gBAAgB,YAAY,KAAK,KAAK,EAAE,KAAK,YAAY,KAAK,KAAK,EAAE,KAAK,QAAQ;AACtF,gBAAI,OAAO,mBAAmB,YAAY;AACxC,kBAAI,eAAe,KAAK,SAAS,QAAQ,WAAW,OAAO,GAAG,eAAe,eAAe,KAAK,YAAY,YAAY,KAAK,KAAK,EAAE,EAAE,MAAM,YAAY;AACvJ;AAAA,cACF;AAAA,YACF;AACA,qBAAS,YAAY,KAAK,KAAK,EAAE,IAAI,eAAe,aAAa;AAAA,UACnE,EAAE,KAAK;AAAA,YACL,OAAO;AAAA,UACT,CAAC,GAAG,EAAE;AAAA,QACR;AAAA,MACF;AACA;AAAA,IACF,SAAS,QAAQ,gBAAgB,kBAAkB,gBAAgB,gBAAgB,2BAA2B,eAAe,KAAK;AAClI,gBAAY;AAAA,EACd,GAAG,EAAE;AAEL,MAAI,OAAO,SAASc,MAAK,MAAM;AAC7B,QAAI,gBAAgB,KAAK,eACvB7B,eAAc,KAAK,aACnBU,UAAS,KAAK,QACd,iBAAiB,KAAK,gBACtB,wBAAwB,KAAK,uBAC7B,qBAAqB,KAAK,oBAC1B,uBAAuB,KAAK;AAC9B,QAAI,CAAC,cAAe;AACpB,QAAI,aAAaV,gBAAe;AAChC,uBAAmB;AACnB,QAAI,QAAQ,cAAc,kBAAkB,cAAc,eAAe,SAAS,cAAc,eAAe,CAAC,IAAI;AACpH,QAAI,SAAS,SAAS,iBAAiB,MAAM,SAAS,MAAM,OAAO;AACnE,yBAAqB;AACrB,QAAI,cAAc,CAAC,WAAW,GAAG,SAAS,MAAM,GAAG;AACjD,4BAAsB,OAAO;AAC7B,WAAK,QAAQ;AAAA,QACX,QAAQU;AAAA,QACR,aAAaV;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AACA,WAAS,SAAS;AAAA,EAAC;AACnB,SAAO,YAAY;AAAA,IACjB,YAAY;AAAA,IACZ,WAAW,SAAS,UAAU,OAAO;AACnC,UAAIF,qBAAoB,MAAM;AAC9B,WAAK,aAAaA;AAAA,IACpB;AAAA,IACA,SAAS,SAAS,QAAQ,OAAO;AAC/B,UAAIY,UAAS,MAAM,QACjBV,eAAc,MAAM;AACtB,WAAK,SAAS,sBAAsB;AACpC,UAAIA,cAAa;AACf,QAAAA,aAAY,sBAAsB;AAAA,MACpC;AACA,UAAI,cAAc,SAAS,KAAK,SAAS,IAAI,KAAK,YAAY,KAAK,OAAO;AAC1E,UAAI,aAAa;AACf,aAAK,SAAS,GAAG,aAAaU,SAAQ,WAAW;AAAA,MACnD,OAAO;AACL,aAAK,SAAS,GAAG,YAAYA,OAAM;AAAA,MACrC;AACA,WAAK,SAAS,WAAW;AACzB,UAAIV,cAAa;AACf,QAAAA,aAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,WAAS,QAAQ;AAAA,IACf,YAAY;AAAA,EACd,CAAC;AACD,WAAS,SAAS;AAAA,EAAC;AACnB,SAAO,YAAY;AAAA,IACjB,SAAS,SAAS+B,SAAQ,OAAO;AAC/B,UAAIrB,UAAS,MAAM,QACjBV,eAAc,MAAM;AACtB,UAAI,iBAAiBA,gBAAe,KAAK;AACzC,qBAAe,sBAAsB;AACrC,MAAAU,QAAO,cAAcA,QAAO,WAAW,YAAYA,OAAM;AACzD,qBAAe,WAAW;AAAA,IAC5B;AAAA,IACA;AAAA,EACF;AACA,WAAS,QAAQ;AAAA,IACf,YAAY;AAAA,EACd,CAAC;AAkqBD,WAAS,MAAM,IAAI,iBAAiB,CAAC;AACrC,WAAS,MAAM,QAAQ,MAAM;AAE7B,MAAO,uBAAQ;;;AC5yGf,MAAO,8BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAW;AACT,YAAM,sBAAsB,KAAK,QAAQ;AACzC,YAAM,YAAY,KAAK,QAAQ,QAAQ,cAAc;AACrD,UAAI,qBAAS,KAAK,SAAS;AAAA,QACzB,OAAO;AAAA,UACL,MAAM;AAAA,UACN,KAAK,EAAE,wBAAwB,UAAU;AAAA,QAC3C;AAAA,QACA,MAAM,wBAAwB;AAAA,QAC9B,WAAW;AAAA,QACX,OAAO,KAAK,MAAM,KAAK,IAAI;AAAA,QAC3B,UAAU,KAAK,SAAS,KAAK,IAAI;AAAA,QACjC,UAAU,KAAK,SAAS,KAAK,IAAI;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,IAEA,WAAY;AACV,aAAO,SAAS,kBAAkB,YAAY,EAAE,CAAC,EAAE;AAAA,IACrD;AAAA,IAEA,UAAW,YAAY,MAAM;AAC3B,YAAM,QAAQ,KAAK,SAAS;AAC5B,YAAM,YAAY;AAAA,QAChB,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,gBAAgB;AAAA,QAClB,CAAC;AAAA,QACD,SAAS;AAAA,UACP,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,QAClB;AAAA,MACF,CAAC,EACE,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,UAAQ;AACZ,YAAI,KAAK,SAAS,2BAA2B,GAAG;AAC9C,iBAAO,SAAS,OAAO;AAAA,QACzB,OAAO;AACL,gBAAM,oBAAoB,IAAI;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACL;AAAA,IAEA,MAAOsB,QAAO;AACZ,UAAIA,OAAM,GAAG,OAAO,WAAWA,OAAM,KAAK,OAAO,QAAQ;AACvD,cAAM,aAAa,KAAK,QAAQ,QAAQ;AACxC,cAAM,OAAO;AAAA,UACX,cAAc,CAACA,OAAM,KAAK,QAAQ,UAAU;AAAA,QAC9C;AAEA,aAAK,UAAU,YAAY,IAAI;AAAA,MACjC,OAAK;AACH,YAAGA,OAAM,GAAG,OAAO,WAAWA,OAAM,KAAK,OAAO,SAAQ;AACtD,UAAAA,OAAM,KAAK,WAAW,YAAYA,OAAM,IAAI;AAC5C,UAAAA,OAAM,KAAK,YAAYA,OAAM,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,SAAUA,QAAO;AACf,UAAIA,OAAM,KAAK,OAAO,WAAWA,OAAM,GAAG,OAAO,QAAQ;AACvD,cAAM,aAAa,KAAK,QAAQ,QAAQ;AACxC,cAAM,OAAO;AAAA,UACX,qBAAqB,CAACA,OAAM,KAAK,QAAQ,UAAU;AAAA,QACrD;AAEA,aAAK,UAAU,YAAY,IAAI;AAAA,MACjC;AAAA,IACF;AAAA,IAEA,SAAUA,QAAO;AACf,YAAM,aAAaA,OAAM,KAAK,QAAQ;AACtC,YAAM,WAAWA,OAAM,WAAW;AAClC,WAAK,uBAAuB,YAAY,QAAQ;AAAA,IAClD;AAAA,IAEA,uBAAwB,YAAY,UAAU;AAC5C,YAAM,aAAa,KAAK,QAAQ,QAAQ;AACxC,YAAM,OAAO;AAAA,QACX,oBAAoB;AAAA,UAClB;AAAA,YACE,aAAa;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,WAAK,UAAU,YAAY,IAAI;AAAA,IACjC;AAAA,IAEA,mBAAoBA,QAAO;AACzB,MAAAA,OAAM,cAAc,QAAQ,WAAW,KAAK,aAAa;AACzD,WAAK,eAAeA,MAAK;AAAA,IAC3B;AAAA,IAEA,eAAgBA,QAAO;AACrB,YAAM,aACJA,OAAM,cAAc,QAAQ,cAAc,EAAE,QAAQ;AACtD,YAAM,WAAW,SAASA,OAAM,cAAc,QAAQ,QAAQ;AAC9D,WAAK,uBAAuB,YAAY,QAAQ;AAAA,IAClD;AAAA,IAEA,YAAaA,QAAO;AAClB,WAAK,YAAY,UAAU,OAAO,QAAQ;AAE1C,UAAI,eAAeA,OAAM,cAAc;AACvC,UAAI,aAAa,aAAa,QAAQ;AACtC,mBAAa,YAAY,KAAK,WAAW;AAEzC,UAAI,cAAc,KAAK;AACvB,kBAAY,QAAQ,aAAa,QAAQ;AACzC,kBAAY,KAAK;AAEjB,UAAI,sBACF,YAAY,WAAW,iBAAiB,gBAAgB;AAC1D,0BAAoB,QAAQ,QAAM;AAChC,WAAG,QAAQ,KAAK;AAAA,MAClB,CAAC;AACD,WAAK,yBAAyB,MAAM,KAAK;AACzC,WAAK,wBAAwB,OAAO,IAAI;AAAA,IAC1C;AAAA,IAEA,YAAa;AACX,UAAI,KAAK,gBAAgB,UAAU,SAAS,QAAQ,GAAG;AACrD,YAAI,cAAc,KAAK;AACvB,oBAAY,UAAU,IAAI,QAAQ;AAClC,aAAK,YAAY,WAAW,YAAY,WAAW;AACnD,aAAK,kBAAkB,YAAY,WAAW;AAE9C,aAAK,gBAAgB,UAAU,IAAI,QAAQ;AAAA,MAC7C,OAAO;AACL,aAAK,yBAAyB,MAAM,KAAK;AACzC,aAAK,wBAAwB,OAAO,IAAI;AAAA,MAC1C;AAAA,IACF;AAAA,IAEA,gBAAiB;AACf,WAAK,yBAAyB,OAAO,IAAI;AACzC,WAAK,wBAAwB,MAAM,KAAK;AAAA,IAC1C;AAAA,IAEA,wBAAyB,qBAAqB,mBAAmB;AAC/D,WAAK,mBAAmB,UAAU,OAAO,UAAU,mBAAmB;AACtE,WAAK,iBAAiB,UAAU,OAAO,UAAU,iBAAiB;AAAA,IACpE;AAAA,IAEA,yBAA0B,kBAAkB,iBAAiB;AAC3D,WAAK,gBAAgB,UAAU,OAAO,UAAU,gBAAgB;AAChE,WAAK,gBAAgB,QAAQ,QAAM;AACjC,WAAG,UAAU,OAAO,UAAU,eAAe;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,EACF;;;AClKA,MAAO,4BAAP,cAA6B,WAAW;AAAA,IACtC,UAAU;AACR,UAAI,KAAK,QAAQ,QAAQ,mBAAmB,QAAQ;AAClD,aAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA,IACA,gBAAgB;AACd,YAAM,WAAW,KAAK,QAAQ,aAAa,gBAAgB;AAC3D,UAAI,UAAU;AACZ,cAAM,gBAAgB,SAAS,eAAe,QAAQ;AACtD,sBAAc,eAAe,EAAE,UAAU,SAAS,CAAC;AAAA,MACrD;AAAA,IACF;AAAA,EACF;;;ACXA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,MAAM;AAAA,IAExB,OAAOC,QAAO;AACZ,YAAM,OAAOA,OAAM,OAAO,QAAQ,mCAAmC;AACrE,UAAI,CAAC,KAAM;AAEX,WAAK,YAAY,QAAQ,CAAC,OAAO;AAC/B,WAAG,UAAU,OAAO,iBAAiB,OAAO,IAAI;AAChD,WAAG,gBAAgB,gBAAgB,OAAO,IAAI;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF;;;ACfA,MAAO,2CAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,kBAAkB,UAAU;AAAA,IAE9C,UAAU;AAAA,IAEV;AAAA,IAEA,gCAAgCC,QAAO;AACrC,YAAM,gBAAgBA,OAAM,OAAO;AAEnC,UAAI,kBAAkB,WAAW;AAC/B,aAAK,qBAAqB,UAAU,IAAI,QAAQ;AAChD,YAAG,KAAK,mBAAkB;AACxB,eAAK,wBAAwB;AAAA,QAC/B;AAAA,MACF,OAAO;AACL,aAAK,qBAAqB,UAAU,OAAO,QAAQ;AACnD,YAAG,KAAK,mBAAkB;AACxB,eAAK,2BAA2B;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,0BAA0B;AAExB,WAAK,eAAe,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMlC;AAAA,IAEA,6BAA6B;AAE3B,WAAK,eAAe,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMlC;AAAA,EACF;;;ACzCA,MAAO,qCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAc;AAAA,IAChC,UAAU;AACR,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IACd;AAAA,IACA,SAAS;AACP,YAAM,WAAW,KAAK;AACtB,YAAM,iBAAiB,KAAK;AAC5B,YAAM,cAAc,KAAK;AACzB,UAAI,SAAS,SAAS;AACpB,uBAAe,UAAU,OAAO,QAAQ;AACxC,aAAK,4BAA4B,UAAU,OAAO,QAAQ;AAC1D,aAAK,gCAAgC;AACrC,aAAK,UAAU,aAAa,QAAQ;AAAA,MACtC,OAAO;AACL,uBAAe,UAAU,IAAI,QAAQ;AACrC,aAAK,4BAA4B,UAAU,IAAI,QAAQ;AACvD,aAAK,gCAAgC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,SAAS;AACP,YAAM,WAAW,KAAK;AACtB,YAAM,iBAAiB,KAAK;AAC5B,UAAI,SAAS,SAAS;AACpB,uBAAe,UAAU,OAAO,QAAQ;AACxC,aAAK,4BAA4B,UAAU,OAAO,QAAQ;AAC1D,aAAK,gCAAgC;AACrC,aAAK,0BAA0B;AAAA,MACjC,OAAO;AACL,uBAAe,UAAU,IAAI,QAAQ;AACrC,aAAK,4BAA4B,UAAU,IAAI,QAAQ;AACvD,aAAK,gCAAgC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,kBAAkB;AAChB,YAAM,cAAc,KAAK;AACzB,UAAI,SAAS,YAAY,KAAK,IAAI,IAAI;AACpC,oBAAY,OAAO;AACnB,cAAM,cAAc,KAAK;AACzB,aAAK,UAAU,aAAa,QAAQ;AAAA,MACtC;AAAA,IACF;AAAA,IACA,kBAAiB;AACf,WAAK,qBAAqB,SAAS;AACnC,YAAM,cAAc,KAAK;AACzB,WAAK,UAAU,aAAa,QAAQ;AAAA,IACtC;AAAA,IAEA,UAAU,QAAQ,QAAO;AACvB,UAAI,UAAU,UAAU;AACtB,YAAI,OAAO,SAAS,KAAK,qBAAqB,KAAK;AAAA,MACrD,OAAO;AACL,YAAI,OAAO,SAAS,KAAK,qBAAqB,KAAK;AAAA,MACrD;AACA,YAAM,aAAa,KAAK,cAAc,oBAAI,MAAI;AAC9C,YAAM,YAAY,KAAK,cAAc,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,KAAK,GAAI,CAAC;AACtF,WAAK,gBAAgB,QAAQ,QAAQ,WAAW,UAAW;AAAA,IAC7D;AAAA,IAEA,cAAc,MAAK;AAClB,aAAO,KAAK,mBAAmB,SAAS,EAAE,KAAK,WAAW,OAAO,WAAW,MAAM,UAAU,CAAC;AAAA,IAC9F;AAAA,IAEA,gBAAgB,QAAQ,QAAQ,WAAW,YAAY;AACrD,aAAO,YAAY,cAAc,MAAM,4BAA4B,SAAS,OAAO,UAAU;AAAA,IAC/F;AAAA,IAEA,gBAAgBC,QAAO;AACrB,YAAM,WAAWA,OAAM,OAAO;AAC9B,UAAI,YAAY,IAAI;AAClB,cAAM,aAAaA,OAAM,OAAO,QAAQ;AACxC,cAAM,cAAc,cAAc,WAAW,KAAK,8BAA8B,KAAK;AAErF,cAAM,aAAa,KAAK,cAAc,oBAAI,MAAI;AAC9C,cAAM,YAAY,KAAK,cAAc,IAAI,KAAK,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK,KAAK,GAAI,CAAC;AAC1F,aAAK,gBAAgB,aAAa,YAAY,WAAW,UAAU;AAAA,MACrE;AAAA,IACF;AAAA,IAEA,kCAAkC;AAChC,WAAK,qBAAqB,UAAU,OAAO,QAAQ;AACnD,WAAK,qBAAqB,UAAU,OAAO,QAAQ;AAAA,IACrD;AAAA,IAEA,kCAAkC;AAChC,UAAI,CAAC,KAAK,qBAAqB,WAAW,CAAC,KAAK,qBAAqB,SAAS;AAC5E,aAAK,qBAAqB,UAAU,IAAI,QAAQ;AAChD,aAAK,qBAAqB,UAAU,IAAI,QAAQ;AAAA,MAClD;AAAA,IACF;AAAA,IAEA,SAASA,QAAM;AACb,YAAM,kBAAkBA,OAAM,cAAc,QAAQ,mBAAmB;AACvE,YAAM,cAAc,gBAAgB,iBAAiB,OAAO;AAC5D,YAAM,aAAaA,OAAM,OAAO,KAAK,MAAM,IAAG,EAAE;AAChD,UAAI,cAAc,UAAU,CAACA,OAAM,OAAO,SAAS;AACjD,oBAAY,QAAQ,QAAI;AACtB,cAAI,GAAG,QAAQ,YAAY;AACzB,eAAG,UAAQ;AAAA,UACb;AAAA,QACF,CAAC;AACD,aAAK,OAAO;AACZ,aAAK,OAAO;AAAA,MACd,WAAU,cAAc,QAAQ;AAC9B,iBAASC,KAAI,GAAGA,KAAI,YAAY,QAAQA,MAAK;AAC3C,cAAI,KAAK,YAAYA,EAAC;AACtB,cAAI,GAAG,QAAQ,cAAcD,OAAM,OAAO,SAAS;AACjD,eAAG,UAAU;AACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,2BAA2BA,QAAM;AAC/B,YAAM,iBAAiB,KAAK;AAC5B,YAAM,iBAAiB,KAAK;AAC5B,YAAM,aAAa,KAAK,QAAQ,cAAc,kCAAkC;AAChF,YAAM,iBAAiB,KAAK,QAAQ,cAAc,mCAAmC;AAErF,WAAK,eAAe,WAAW,eAAe,YAAY,EAAE,WAAW,WAAW,eAAe,UAAU;AACzG,eAAO,MAAM,iGAAiG;AAC9G,QAAAA,OAAM,eAAe;AAAA,MACvB;AAAA,IAEF;AAAA,IAEA,gBAAgB;AACd,YAAM,WAAW,CAAC,WAAW,SAAS,QAAQ,SAAS,GAAG,EAAE;AAE5D,aAAO;AAAA,QACL,MAAM,SAAS,KAAK,UAAU;AAAA,QAC9B,OAAO,SAAS,KAAK,WAAW;AAAA,QAChC,SAAS,SAAS,KAAK,aAAa;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,mBAAmB;AACjB,YAAM,EAAE,MAAM,OAAO,QAAQ,IAAI,KAAK,cAAc;AAEpD,WAAK,mBAAmB,QACrB,OAAO,KAAK,KACZ,QAAQ,KACT;AAAA,IACJ;AAAA,IAEA,4BAA4B;AAC1B,YAAM,EAAE,MAAM,OAAO,QAAQ,IAAI,KAAK,cAAc;AACpD,YAAM,cAAc,KAAK;AAEzB,UAAI,SAAS,KAAK,UAAU,KAAK,YAAY,GAAG;AAC9C,oBAAY,YACV;AACF;AAAA,MACF;AAEA,kBAAY,YACV,sCAAsC,IAAI,QAAQ,KAAK,SAAS,OAAO;AAAA,IAC3E;AAAA,EACF;;;ACvKA,MAAO,gCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,gBAAgB,gBAAgB,cAAc,OAAO;AAAA,IACvE,OAAO,SAAS,EAAE,KAAK,OAAO;AAAA,IAE9B,cAAc,KAAK;AAAA;AAAA,IACnB,cAAc;AAAA;AAAA,IACd,UAAU,KAAK,KAAK;AAAA;AAAA,IAEpB,UAAU;AACR,WAAK,QAAQ;AACb,WAAK,aAAa,YAAY,MAAM,KAAK,QAAQ,GAAG,GAAI;AAAA,IAC1D;AAAA,IAEA,aAAa;AACX,UAAI,KAAK,WAAY,eAAc,KAAK,UAAU;AAAA,IACpD;AAAA;AAAA,IAGA,eAAeE,QAAO;AACpB,UAAIA,OAAM,OAAO,MAAM,UAAU,GAAG;AAClC,aAAK,mBAAmB,WAAW;AACnC,aAAK,iBAAiB,YAAY;AAClC,QAAAA,OAAM,OAAO,UAAU,OAAO,gBAAgB;AAAA,MAChD,OAAO;AACL,aAAK,iBAAiB,YAAY;AAClC,QAAAA,OAAM,OAAO,UAAU,IAAI,gBAAgB;AAC3C,aAAK,mBAAmB,WAAW;AAAA,MACrC;AAAA,IACF;AAAA;AAAA,IAGA,aAAa;AACX,aAAO,cAAc,KAAK,eAAe,KAAK,WAAW,KAAK,WAAW,SAAS;AAAA,IACpF;AAAA,IAEA,YAAY;AACV,UAAI;AACF,cAAM,MAAM,aAAa,QAAQ,KAAK,WAAW,CAAC;AAClD,YAAI,IAAK,QAAO,KAAK,MAAM,GAAG;AAAA,MAChC,SAASC,IAAG;AAAA,MAAe;AAC3B,aAAO,EAAE,OAAO,GAAG,cAAc,GAAG,aAAa,EAAE;AAAA,IACrD;AAAA,IAEA,WAAW,OAAO;AAChB,UAAI;AAAE,qBAAa,QAAQ,KAAK,WAAW,GAAG,KAAK,UAAU,KAAK,CAAC;AAAA,MAAE,SAASA,IAAG;AAAA,MAAe;AAAA,IAClG;AAAA;AAAA;AAAA;AAAA,IAKA,eAAe;AACb,YAAM,QAAQ,KAAK,UAAU;AAC7B,YAAMC,OAAM,KAAK,IAAI;AACrB,YAAM,SAAS,MAAM,SAAS,KAAK;AACnC,YAAM,eAAeA;AACrB,UAAI,MAAM,SAAS,KAAK,YAAa,OAAM,cAAcA,OAAM,KAAK;AACpE,WAAK,WAAW,KAAK;AAAA,IACvB;AAAA;AAAA,IAGA,UAAU;AACR,UAAI,CAAC,KAAK,sBAAuB;AACjC,UAAI,QAAQ,KAAK,UAAU;AAC3B,YAAMA,OAAM,KAAK,IAAI;AAGrB,UAAI,MAAM,eAAeA,QAAO,MAAM,aAAa;AACjD,gBAAQ,EAAE,OAAO,GAAG,cAAc,GAAG,aAAa,EAAE;AACpD,aAAK,WAAW,KAAK;AAAA,MACvB,WAAW,CAAC,MAAM,eAAe,MAAM,gBAAgBA,OAAM,MAAM,eAAe,KAAK,SAAS;AAC9F,gBAAQ,EAAE,OAAO,GAAG,cAAc,GAAG,aAAa,EAAE;AACpD,aAAK,WAAW,KAAK;AAAA,MACvB;AAEA,UAAI,MAAM,eAAeA,OAAM,MAAM,aAAa;AAChD,aAAK,UAAU,KAAK;AACpB,aAAK,SAAS,mCAAmC,KAAK,IAAI,MAAM,cAAcA,IAAG,CAAC,IAAI,IAAI;AAAA,MAC5F,WAAW,MAAM,gBAAgBA,OAAM,MAAM,eAAe,KAAK,aAAa;AAC5E,aAAK,UAAU,KAAK;AACpB,aAAK,SAAS,uBAAuB,KAAK,IAAI,MAAM,eAAe,KAAK,cAAcA,IAAG,CAAC,IAAI,KAAK;AAAA,MACrG,OAAO;AACL,aAAK,UAAU,IAAI;AACnB,aAAK,SAAS,IAAI,KAAK;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,IAAI,IAAI;AACN,YAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK,KAAK,GAAI,CAAC;AAC9C,YAAMC,KAAI,KAAK,MAAM,QAAQ,EAAE;AAC/B,YAAMC,KAAI,QAAQ;AAClB,aAAO,GAAGD,EAAC,IAAI,OAAOC,EAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,IAC3C;AAAA,IAEA,UAAU,SAAS;AACjB,YAAM,OAAO,KAAK;AAClB,UAAI,SAAS;AACX,aAAK,UAAU,OAAO,uBAAuB,cAAc,oBAAoB;AAC/E,YAAI,KAAK,QAAQ,aAAc,MAAK,aAAa,QAAQ,KAAK,QAAQ,YAAY;AAAA,MACpF,OAAO;AACL,aAAK,UAAU,IAAI,uBAAuB,cAAc,oBAAoB;AAC5E,aAAK,gBAAgB,MAAM;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,SAAS,MAAM,QAAQ;AACrB,UAAI,CAAC,KAAK,eAAgB;AAC1B,WAAK,YAAY,cAAc;AAC/B,WAAK,YAAY,UAAU,OAAO,UAAU,SAAS,EAAE;AACvD,WAAK,YAAY,UAAU,OAAO,gCAAgC,MAAM;AACxE,WAAK,YAAY,UAAU,OAAO,qCAAqC,CAAC,MAAM;AAAA,IAChF;AAAA,EACF;;;ACrHA,MAAO,gCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,YAAY,qBAAqB,uBAAuB,cAAc;AAAA,IAExF,UAAW;AACT,WAAK,gBAAgB,QAAQ,QAAM;AACjC,YAAI,GAAG,QAAQ,iBAAiB,QAAQ;AACtC,aAAG,SAAS;AACZ,aAAG,UAAU,IAAI,QAAQ;AAAA,QAC3B,OAAO;AACL,aAAG,SAAS;AACZ,aAAG,UAAU,OAAO,QAAQ;AAAA,QAC9B;AAAA,MACF,CAAC;AAED,WAAK,oBAAoB,QAAQ,QAAM;AACrC,YAAI,GAAG,QAAQ,iBAAiB,SAAS;AACvC,aAAG,SAAS;AACZ,aAAG,UAAU,OAAO,QAAQ;AAC5B,eAAK,0BAA0B,UAAU,OAAO,QAAQ;AACxD,eAAK,wBAAwB,UAAU,IAAI,QAAQ;AAAA,QACrD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,cAAe;AACb,WAAK,gBAAgB,QAAQ,QAAM;AACjC,WAAG,SAAS;AACZ,WAAG,UAAU,OAAO,QAAQ;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,IAEA,cAAe;AACb,WAAK,gBAAgB,QAAQ,QAAM;AACjC,WAAG,SAAS;AACZ,WAAG,UAAU,IAAI,QAAQ;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,IAEA,gBAAiB;AACf,cAAQ,IAAI,iCAAiC;AAC7C,WAAK,gBAAgB,QAAQ,QAAM;AACjC,WAAG,SAAS,CAAC,GAAG;AAChB,YAAI,GAAG,QAAQ;AACb,aAAG,UAAU,IAAI,QAAQ;AAAA,QAC3B,OAAO;AACL,aAAG,UAAU,OAAO,QAAQ;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,qBAAsB;AACpB,WAAK,oBAAoB,QAAQ,QAAM;AACrC,WAAG,SAAS,CAAC,GAAG;AAChB,YAAI,GAAG,QAAQ;AACb,aAAG,UAAU,IAAI,QAAQ;AACzB,eAAK,wBAAwB,UAAU,OAAO,QAAQ;AACtD,eAAK,0BAA0B,UAAU,IAAI,QAAQ;AAAA,QACvD,OAAO;AACL,aAAG,UAAU,OAAO,QAAQ;AAC5B,eAAK,0BAA0B,UAAU,OAAO,QAAQ;AACxD,eAAK,wBAAwB,UAAU,IAAI,QAAQ;AAAA,QACrD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;;;AChEA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IACtC,UAAU;AAAA,IACV;AAAA,IAEA,iBAAkB;AAChB,YAAM,gBAAgB,KAAK,QAAQ,QAAQ,KAAK,QAAQ,aAAa,EAAE;AACvE,UAAI,eAAe;AACjB,aAAK,MAAM,eAAe,aAAa;AACvC,cAAM,KAAK,KAAK;AAAA,UACd,SAAS;AAAA,YACP,QAAQ;AAAA,UACV;AAAA,QACF,CAAC,EACE,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,UAAQ,MAAM,oBAAoB,IAAI,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;;;AClBA,MAAO,yCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,YAAY,mBAAmB,eAAe,YAAY,iBAAiB,cAAc,gBAAgB,cAAc;AAAA,IAEzI,UAAU;AACR,UAAI,CAAC,KAAK,kBAAmB;AAE7B,WAAK,eAAe,iBAAiB,SAAS,MAAM;AAClD,aAAK,iBAAiB;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB;AAChB,UAAI,KAAK,wBAAwB,KAAK,mBAAmB;AACvD,aAAK,kBAAkB,SAAS,CAAC,KAAK,kBAAkB;AACxD,aAAK,eAAe,SAAS,CAAC,KAAK,eAAe;AAAA,MACpD;AAEA,UAAI,CAAC,KAAK,kBAAmB;AAC7B,WAAK,eAAe,OAAO,KAAK,eAAe,SAAS,aAAa,SAAS;AAAA,IAChF;AAAA,IAEA,yBAAyB;AACvB,UAAI,KAAK,0BAA0B,KAAK,qBAAqB;AAC3D,aAAK,oBAAoB,SAAS,CAAC,KAAK,oBAAoB;AAC5D,aAAK,iBAAiB,SAAS,CAAC,KAAK,iBAAiB;AAAA,MACxD;AAEA,UAAI,CAAC,KAAK,yBAA0B;AACpC,WAAK,sBAAsB,OAAO,KAAK,sBAAsB,SAAS,aAAa,SAAS;AAAA,IAC9F;AAAA,IAEA,mBAAmB;AACjB,UAAI,CAAC,KAAK,qBAAqB,CAAC,KAAK,yBAA0B;AAE/D,YAAM,WAAW,KAAK,eAAe;AACrC,YAAM,kBAAkB,KAAK,sBAAsB;AAEnD,UAAI,mBAAmB,aAAa,iBAAiB;AACnD,aAAK,iBAAiB;AACtB,YAAI,KAAK,sBAAuB,MAAK,mBAAmB,cAAc;AAAA,MACxE,WAAW,YAAY,SAAS,SAAS,GAAG;AAC1C,aAAK,iBAAiB;AACtB,YAAI,KAAK,sBAAuB,MAAK,mBAAmB,cAAc;AAAA,MACxE,OAAO;AACL,YAAI,KAAK,sBAAuB,MAAK,mBAAmB,cAAc;AACtE,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,mBAAkB;AAChB,UAAI,CAAC,KAAK,sBAAuB;AACjC,WAAK,mBAAmB,WAAW;AAAA,IACrC;AAAA,IAEA,mBAAkB;AAChB,UAAI,CAAC,KAAK,sBAAuB;AACjC,WAAK,mBAAmB,WAAW;AAAA,IACrC;AAAA,EACF;;;ACzDA,MAAO,oCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAU;AACR,WAAK,aAAa;AAClB,WAAK,cAAc;AAAA,IACrB;AAAA,IAEA,eAAc;AACZ,YAAM,SAAS,KAAK,aAAa,QAAQ;AACzC,UAAI,kBAAkB,KAAK;AAC3B,YAAM,SAAS,KAAK,aAAa;AACjC,YAAM,mBAAmB,KAAK;AAE9B,WAAK,OAAO,QAAQ,iBAAiB,QAAQ,gBAAgB;AAAA,IAC/D;AAAA,IAEA,gBAAe;AACX,YAAM,SAAS,KAAK,aAAa,QAAQ;AACzC,UAAI,kBAAkB,KAAK;AAC3B,YAAM,UAAU,KAAK,cAAc;AACnC,YAAM,oBAAoB,KAAK;AAEjC,WAAK,OAAO,QAAQ,iBAAiB,SAAS,iBAAiB;AAAA,IACjE;AAAA,IAEA,SAASC,QAAM;AACb,YAAM,kBAAkB,KAAK,sBAAsB;AACnD,YAAM,sBAAsB,KAAK,0BAA0B;AAC3D,YAAM,UAAU,KAAK,cAAc;AACnC,YAAM,SAAS,KAAK,aAAa;AACjC,YAAM,cAAc,SAAS,KAAK,kBAAkB,KAAK;AACzD,YAAM,aAAa,SAAS,KAAK,iBAAiB,KAAK;AACvD,UAAG,oBAAoB,WAAW,WAAY,aAAa,aAC3D;AACE,aAAK,sBAAsB,YAAY;AACvC,aAAK,sBAAsB,UAAU,IAAI,KAAK;AAC9C,QAAAA,OAAM,eAAe;AAAA,MACvB;AAEA,UAAG,wBAAwB,WAAW,WAAY,aAAa,aAC/D;AACE,aAAK,sBAAsB,YAAY;AACvC,aAAK,sBAAsB,UAAU,IAAI,KAAK;AAC9C,QAAAA,OAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,OAAO,QAAQ,iBAAiB,eAAe,cAAa;AAC1D,UAAG,WAAW,OAAM;AAClB,aAAK,gBAAgB,eAAe,iBAAiB,YAAY;AAAA,MACnE,WAAS,WAAW,QAAO;AACzB,aAAK,iBAAiB,eAAe,iBAAiB,YAAY;AAAA,MACpE;AAAA,IACF;AAAA,IAEA,gBAAgB,eAAe,iBAAiB,cAAa;AAC3D,UAAG,eAAc;AACf,aAAK,KAAK,eAAe;AAAA,MAC3B,OAAK;AACH,qBAAa,QAAQ;AACrB,aAAK,KAAK,eAAe;AAAA,MAC3B;AAAA,IACF;AAAA,IAEA,iBAAiB,eAAe,iBAAiB,cAAa;AAC5D,YAAM,SAAS,WAAW,aAAa,KAAK;AAC5C,UAAG,SAAS,KAAQ,WAAW,KAAO,eAAe;AACnD,aAAK,KAAK,eAAe;AAAA,MAC3B,OAAK;AACH,aAAK,KAAK,eAAe;AAAA,MAC3B;AAAA,IACF;AAAA,IAEA,KAAK,iBAAgB;AACnB,UAAG,CAAC,gBAAgB,UAAU,SAAS,QAAQ,GAAE;AAC/C,wBAAgB,UAAU,IAAI,QAAQ;AAAA,MACxC;AAAA,IACF;AAAA,IAEA,KAAK,iBAAgB;AACnB,UAAG,gBAAgB,UAAU,SAAS,QAAQ,GAAE;AAC9C,wBAAgB,UAAU,OAAO,QAAQ;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;;;AC/FA,MAAO,qCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,YAAY;AAAA,IAE9B,uBAAuB;AACrB,UAAI,KAAK,QAAQ,QAAQ,aAAa,OAAO,KAAK,iBAAiB,UAAU,KAAK;AAChF,aAAK,iBAAiB,QAAQ;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,SAAS;AACP,UAAI,KAAK,WAAW;AAClB,eAAO;AAAA,MACT;AAEA,WAAK,uBAAuB;AAE5B,UAAI,KAAK,QAAQ,QAAQ,YAAY,KAAK,gBAAgB,GAAG;AAC3D,aAAK,QAAQ,cAAc;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,sBAAsBC,QAAO;AAC3B,UAAI,KAAK,QAAQ,QAAQ,YAAY,KAAK,gBAAgB,GAAG;AAC3D,QAAAA,OAAM,eAAe;AACrB,eAAO;AAAA,MACT;AAEA,WAAK,YAAY;AAAA,IACnB;AAAA,IAEA,kBAAkB;AAChB,aAAO,KAAK,iBAAiB,UAAU,KAAK,MAAM,KAAK,iBAAiB;AAAA,IAC1E;AAAA,IAEA,yBAAyB;AACvB,UAAI,KAAK,QAAQ,QAAQ,aAAa,OAAO,KAAK,iBAAiB,UAAU,IAAI;AAC/E,aAAK,iBAAiB,QAAQ;AAAA,MAChC;AAAA,IACF;AAAA,EACF;;;AC1CO,MAAI,QAAQ;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACO,MAAIC,YAAW;AAAA,IAClB,UAAU,CAAC;AAAA,IACX,YAAY;AAAA,IACZ,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,UAAU;AAAA,IACV,eAAe;AAAA,IACf,SAAS,OAAO,WAAW,YACvB,OAAO,UAAU,UAAU,QAAQ,MAAM,MAAM;AAAA,IACnD,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,SAAS,CAAC;AAAA,IACV,eAAe;AAAA,IACf,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc,SAAU,KAAK;AACzB,aAAO,OAAO,YAAY,eAAe,QAAQ,KAAK,GAAG;AAAA,IAC7D;AAAA,IACA,SAAS,SAAU,WAAW;AAC1B,UAAI,OAAO,IAAI,KAAK,UAAU,QAAQ,CAAC;AACvC,WAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,WAAK,QAAQ,KAAK,QAAQ,IAAI,KAAM,KAAK,OAAO,IAAI,KAAK,CAAE;AAC3D,UAAI,QAAQ,IAAI,KAAK,KAAK,YAAY,GAAG,GAAG,CAAC;AAC7C,aAAQ,IACJ,KAAK,QAAQ,KAAK,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAC7C,KACE,MAAM,OAAO,IAAI,KAAK,KACxB,CAAC;AAAA,IACb;AAAA,IACA,eAAe;AAAA,IACf,sBAAsB,CAAC;AAAA,IACvB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,KAAK,oBAAI,KAAK;AAAA,IACd,UAAU,CAAC;AAAA,IACX,SAAS,CAAC;AAAA,IACV,aAAa,CAAC;AAAA,IACd,WAAW,CAAC;AAAA,IACZ,WAAW,CAAC;AAAA,IACZ,eAAe,CAAC;AAAA,IAChB,QAAQ,CAAC;AAAA,IACT,eAAe,CAAC;AAAA,IAChB,SAAS,CAAC;AAAA,IACV,eAAe,CAAC;AAAA,IAChB,cAAc,CAAC;AAAA,IACf,uBAAuB,CAAC;AAAA,IACxB,SAAS,CAAC;AAAA,IACV,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,uBAAuB;AAAA,IACvB,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,EACV;;;AClFO,MAAI,UAAU;AAAA,IACjB,UAAU;AAAA,MACN,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,MAC3D,UAAU;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,MACJ,WAAW;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,UAAU;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,IAC5D,gBAAgB;AAAA,IAChB,SAAS,SAAU,KAAK;AACpB,UAAIC,KAAI,MAAM;AACd,UAAIA,KAAI,KAAKA,KAAI;AACb,eAAO;AACX,cAAQA,KAAI,IAAI;AAAA,QACZ,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO;AAAA,MACf;AAAA,IACJ;AAAA,IACA,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,MAAM,CAAC,MAAM,IAAI;AAAA,IACjB,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,WAAW;AAAA,EACf;AACA,MAAO,kBAAQ;;;ACvER,MAAI,MAAM,SAAU,QAAQ,QAAQ;AACvC,QAAI,WAAW,QAAQ;AAAE,eAAS;AAAA,IAAG;AACrC,YAAQ,QAAQ,QAAQ,MAAM,SAAS,EAAE;AAAA,EAC7C;AACO,MAAI,MAAM,SAAU,MAAM;AAAE,WAAQ,SAAS,OAAO,IAAI;AAAA,EAAI;AAC5D,WAASC,UAASC,KAAI,MAAM;AAC/B,QAAIC;AACJ,WAAO,WAAY;AACf,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,mBAAaA,EAAC;AACd,MAAAA,KAAI,WAAW,WAAY;AAAE,eAAOD,IAAG,MAAM,OAAO,IAAI;AAAA,MAAG,GAAG,IAAI;AAAA,IACtE;AAAA,EACJ;AACO,MAAI,WAAW,SAAU,KAAK;AACjC,WAAO,eAAe,QAAQ,MAAM,CAAC,GAAG;AAAA,EAC5C;;;AChBO,WAASE,aAAY,MAAM,WAAW,MAAM;AAC/C,QAAI,SAAS;AACT,aAAO,KAAK,UAAU,IAAI,SAAS;AACvC,SAAK,UAAU,OAAO,SAAS;AAAA,EACnC;AACO,WAASC,eAAc,KAAK,WAAW,SAAS;AACnD,QAAIC,KAAI,OAAO,SAAS,cAAc,GAAG;AACzC,gBAAY,aAAa;AACzB,cAAU,WAAW;AACrB,IAAAA,GAAE,YAAY;AACd,QAAI,YAAY;AACZ,MAAAA,GAAE,cAAc;AACpB,WAAOA;AAAA,EACX;AACO,WAAS,UAAU,MAAM;AAC5B,WAAO,KAAK;AACR,WAAK,YAAY,KAAK,UAAU;AAAA,EACxC;AACO,WAAS,WAAW,MAAM,WAAW;AACxC,QAAI,UAAU,IAAI;AACd,aAAO;AAAA,aACF,KAAK;AACV,aAAO,WAAW,KAAK,YAAY,SAAS;AAChD,WAAO;AAAA,EACX;AACO,WAAS,kBAAkB,gBAAgB,MAAM;AACpD,QAAI,UAAUD,eAAc,OAAO,iBAAiB,GAAG,WAAWA,eAAc,SAAS,cAAc,cAAc,GAAG,UAAUA,eAAc,QAAQ,SAAS,GAAG,YAAYA,eAAc,QAAQ,WAAW;AACjN,QAAI,UAAU,UAAU,QAAQ,UAAU,MAAM,IAAI;AAChD,eAAS,OAAO;AAAA,IACpB,OACK;AACD,eAAS,OAAO;AAChB,eAAS,UAAU;AAAA,IACvB;AACA,QAAI,SAAS;AACT,eAAS,OAAO;AACZ,iBAAS,aAAa,KAAK,KAAK,GAAG,CAAC;AAC5C,YAAQ,YAAY,QAAQ;AAC5B,YAAQ,YAAY,OAAO;AAC3B,YAAQ,YAAY,SAAS;AAC7B,WAAO;AAAA,EACX;AACO,WAAS,eAAeE,QAAO;AAClC,QAAI;AACA,UAAI,OAAOA,OAAM,iBAAiB,YAAY;AAC1C,YAAI,OAAOA,OAAM,aAAa;AAC9B,eAAO,KAAK,CAAC;AAAA,MACjB;AACA,aAAOA,OAAM;AAAA,IACjB,SACOC,QAAO;AACV,aAAOD,OAAM;AAAA,IACjB;AAAA,EACJ;;;ACpDA,MAAI,YAAY,WAAY;AAAE,WAAO;AAAA,EAAW;AACzC,MAAI,aAAa,SAAU,aAAa,WAAW,QAAQ;AAAE,WAAO,OAAO,OAAO,YAAY,cAAc,UAAU,EAAE,WAAW;AAAA,EAAG;AACtI,MAAI,YAAY;AAAA,IACnB,GAAG;AAAA,IACH,GAAG,SAAU,SAAS,WAAW,QAAQ;AACrC,cAAQ,SAAS,OAAO,OAAO,SAAS,QAAQ,SAAS,CAAC;AAAA,IAC9D;AAAA,IACA,GAAG,SAAU,SAAS,MAAM;AACxB,cAAQ,UAAU,QAAQ,SAAS,KAAK,KAAK,KAAK,KAAK,WAAW,IAAI,CAAC;AAAA,IAC3E;AAAA,IACA,GAAG,SAAU,SAAS,MAAM;AACxB,cAAQ,SAAS,WAAW,IAAI,CAAC;AAAA,IACrC;AAAA,IACA,GAAG,SAAU,SAAS,KAAK;AACvB,cAAQ,QAAQ,WAAW,GAAG,CAAC;AAAA,IACnC;AAAA,IACA,GAAG,SAAU,SAAS,MAAM,QAAQ;AAChC,cAAQ,SAAU,QAAQ,SAAS,IAAI,KACnC,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,CAAC,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;AAAA,IAC5D;AAAA,IACA,GAAG,SAAU,SAAS,YAAY,QAAQ;AACtC,cAAQ,SAAS,OAAO,OAAO,UAAU,QAAQ,UAAU,CAAC;AAAA,IAChE;AAAA,IACA,GAAG,SAAU,SAAS,SAAS;AAC3B,cAAQ,WAAW,WAAW,OAAO,CAAC;AAAA,IAC1C;AAAA,IACA,GAAG,SAAUE,IAAG,aAAa;AAAE,aAAO,IAAI,KAAK,WAAW,WAAW,IAAI,GAAI;AAAA,IAAG;AAAA,IAChF,GAAG,SAAU,SAAS,SAAS,QAAQ;AACnC,UAAI,aAAa,SAAS,OAAO;AACjC,UAAI,OAAO,IAAI,KAAK,QAAQ,YAAY,GAAG,GAAG,KAAK,aAAa,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAClF,WAAK,QAAQ,KAAK,QAAQ,IAAI,KAAK,OAAO,IAAI,OAAO,cAAc;AACnE,aAAO;AAAA,IACX;AAAA,IACA,GAAG,SAAU,SAAS,MAAM;AACxB,cAAQ,YAAY,WAAW,IAAI,CAAC;AAAA,IACxC;AAAA,IACA,GAAG,SAAUA,IAAG,SAAS;AAAE,aAAO,IAAI,KAAK,OAAO;AAAA,IAAG;AAAA,IACrD,GAAG,SAAU,SAAS,KAAK;AACvB,cAAQ,QAAQ,WAAW,GAAG,CAAC;AAAA,IACnC;AAAA,IACA,GAAG,SAAU,SAAS,MAAM;AACxB,cAAQ,UAAU,QAAQ,SAAS,KAAK,KAAK,KAAK,KAAK,WAAW,IAAI,CAAC;AAAA,IAC3E;AAAA,IACA,GAAG,SAAU,SAAS,SAAS;AAC3B,cAAQ,WAAW,WAAW,OAAO,CAAC;AAAA,IAC1C;AAAA,IACA,GAAG,SAAU,SAAS,KAAK;AACvB,cAAQ,QAAQ,WAAW,GAAG,CAAC;AAAA,IACnC;AAAA,IACA,GAAG;AAAA,IACH,GAAG,SAAU,SAAS,OAAO;AACzB,cAAQ,SAAS,WAAW,KAAK,IAAI,CAAC;AAAA,IAC1C;AAAA,IACA,GAAG,SAAU,SAAS,OAAO;AACzB,cAAQ,SAAS,WAAW,KAAK,IAAI,CAAC;AAAA,IAC1C;AAAA,IACA,GAAG,SAAU,SAAS,SAAS;AAC3B,cAAQ,WAAW,WAAW,OAAO,CAAC;AAAA,IAC1C;AAAA,IACA,GAAG,SAAUA,IAAG,iBAAiB;AAC7B,aAAO,IAAI,KAAK,WAAW,eAAe,CAAC;AAAA,IAC/C;AAAA,IACA,GAAG;AAAA,IACH,GAAG,SAAU,SAAS,MAAM;AACxB,cAAQ,YAAY,MAAO,WAAW,IAAI,CAAC;AAAA,IAC/C;AAAA,EACJ;AACO,MAAI,aAAa;AAAA,IACpB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACO,MAAI,UAAU;AAAA,IACjB,GAAG,SAAU,MAAM;AAAE,aAAO,KAAK,YAAY;AAAA,IAAG;AAAA,IAChD,GAAG,SAAU,MAAM,QAAQ,SAAS;AAChC,aAAO,OAAO,SAAS,UAAU,QAAQ,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,IACrE;AAAA,IACA,GAAG,SAAU,MAAM,QAAQ,SAAS;AAChC,aAAO,WAAW,QAAQ,EAAE,MAAM,QAAQ,OAAO,IAAI,GAAG,OAAO,MAAM;AAAA,IACzE;AAAA,IACA,GAAG,SAAU,MAAM,QAAQ,SAAS;AAChC,aAAO,IAAI,QAAQ,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,IAC/C;AAAA,IACA,GAAG,SAAU,MAAM;AAAE,aAAO,IAAI,KAAK,SAAS,CAAC;AAAA,IAAG;AAAA,IAClD,GAAG,SAAU,MAAM,QAAQ;AACvB,aAAO,OAAO,YAAY,SACpB,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,IAC9C,KAAK,QAAQ;AAAA,IACvB;AAAA,IACA,GAAG,SAAU,MAAM,QAAQ;AAAE,aAAO,OAAO,KAAK,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC;AAAA,IAAG;AAAA,IAC5E,GAAG,SAAU,MAAM,QAAQ;AACvB,aAAO,WAAW,KAAK,SAAS,GAAG,MAAM,MAAM;AAAA,IACnD;AAAA,IACA,GAAG,SAAU,MAAM;AAAE,aAAO,IAAI,KAAK,WAAW,CAAC;AAAA,IAAG;AAAA,IACpD,GAAG,SAAU,MAAM;AAAE,aAAO,KAAK,QAAQ,IAAI;AAAA,IAAM;AAAA,IACnD,GAAG,SAAU,MAAMA,IAAG,SAAS;AAC3B,aAAO,QAAQ,QAAQ,IAAI;AAAA,IAC/B;AAAA,IACA,GAAG,SAAU,MAAM;AAAE,aAAO,IAAI,KAAK,YAAY,GAAG,CAAC;AAAA,IAAG;AAAA,IACxD,GAAG,SAAU,MAAM;AAAE,aAAO,IAAI,KAAK,QAAQ,CAAC;AAAA,IAAG;AAAA,IACjD,GAAG,SAAU,MAAM;AAAE,aAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK;AAAA,IAAK;AAAA,IAChF,GAAG,SAAU,MAAM;AAAE,aAAO,IAAI,KAAK,WAAW,CAAC;AAAA,IAAG;AAAA,IACpD,GAAG,SAAU,MAAM;AAAE,aAAO,KAAK,QAAQ;AAAA,IAAG;AAAA,IAC5C,GAAG,SAAU,MAAM,QAAQ;AACvB,aAAO,OAAO,SAAS,SAAS,KAAK,OAAO,CAAC;AAAA,IACjD;AAAA,IACA,GAAG,SAAU,MAAM;AAAE,aAAO,IAAI,KAAK,SAAS,IAAI,CAAC;AAAA,IAAG;AAAA,IACtD,GAAG,SAAU,MAAM;AAAE,aAAO,KAAK,SAAS,IAAI;AAAA,IAAG;AAAA,IACjD,GAAG,SAAU,MAAM;AAAE,aAAO,KAAK,WAAW;AAAA,IAAG;AAAA,IAC/C,GAAG,SAAU,MAAM;AAAE,aAAO,KAAK,QAAQ;AAAA,IAAG;AAAA,IAC5C,GAAG,SAAU,MAAM;AAAE,aAAO,KAAK,OAAO;AAAA,IAAG;AAAA,IAC3C,GAAG,SAAU,MAAM;AAAE,aAAO,OAAO,KAAK,YAAY,CAAC,EAAE,UAAU,CAAC;AAAA,IAAG;AAAA,EACzE;;;AClIO,MAAI,sBAAsB,SAAU,IAAI;AAC3C,QAAI,KAAK,GAAG,QAAQ,SAAS,OAAO,SAASC,YAAW,IAAI,KAAK,GAAG,MAAM,OAAO,OAAO,SAAS,UAAU,IAAI,KAAK,GAAG,UAAU,WAAW,OAAO,SAAS,QAAQ;AACpK,WAAO,SAAU,SAAS,MAAM,gBAAgB;AAC5C,UAAI,SAAS,kBAAkB;AAC/B,UAAI,OAAO,eAAe,UAAa,CAAC,UAAU;AAC9C,eAAO,OAAO,WAAW,SAAS,MAAM,MAAM;AAAA,MAClD;AACA,aAAO,KACF,MAAM,EAAE,EACR,IAAI,SAAUC,IAAGC,IAAG,KAAK;AAC1B,eAAO,QAAQD,EAAC,KAAK,IAAIC,KAAI,CAAC,MAAM,OAC9B,QAAQD,EAAC,EAAE,SAAS,QAAQ,MAAM,IAClCA,OAAM,OACFA,KACA;AAAA,MACd,CAAC,EACI,KAAK,EAAE;AAAA,IAChB;AAAA,EACJ;AACO,MAAI,mBAAmB,SAAU,IAAI;AACxC,QAAI,KAAK,GAAG,QAAQ,SAAS,OAAO,SAASD,YAAW,IAAI,KAAK,GAAG,MAAM,OAAO,OAAO,SAAS,UAAU;AAC3G,WAAO,SAAU,MAAM,aAAa,UAAU,cAAc;AACxD,UAAI,SAAS,KAAK,CAAC;AACf,eAAO;AACX,UAAI,SAAS,gBAAgB;AAC7B,UAAI;AACJ,UAAI,WAAW;AACf,UAAI,gBAAgB;AAChB,qBAAa,IAAI,KAAK,KAAK,QAAQ,CAAC;AAAA,eAC/B,OAAO,SAAS,YACrB,KAAK,YAAY;AACjB,qBAAa,IAAI,KAAK,IAAI;AAAA,eACrB,OAAO,SAAS,UAAU;AAC/B,YAAIG,UAAS,gBAAgB,UAAUH,WAAU;AACjD,YAAI,UAAU,OAAO,IAAI,EAAE,KAAK;AAChC,YAAI,YAAY,SAAS;AACrB,uBAAa,oBAAI,KAAK;AACtB,qBAAW;AAAA,QACf,WACS,UAAU,OAAO,WAAW;AACjC,uBAAa,OAAO,UAAU,MAAMG,OAAM;AAAA,QAC9C,WACS,KAAK,KAAK,OAAO,KACtB,OAAO,KAAK,OAAO,GAAG;AACtB,uBAAa,IAAI,KAAK,IAAI;AAAA,QAC9B,OACK;AACD,cAAI,UAAU,QAAQ,MAAM,CAAC;AAC7B,mBAASD,KAAI,GAAG,aAAa,GAAG,WAAW,IAAIA,KAAIC,QAAO,QAAQD,MAAK;AACnE,gBAAI,QAAQC,QAAOD,EAAC;AACpB,gBAAI,cAAc,UAAU;AAC5B,gBAAI,UAAUC,QAAOD,KAAI,CAAC,MAAM,QAAQ;AACxC,gBAAI,WAAW,KAAK,KAAK,CAAC,SAAS;AAC/B,0BAAY,WAAW,KAAK;AAC5B,kBAAIE,SAAQ,IAAI,OAAO,QAAQ,EAAE,KAAK,IAAI;AAC1C,kBAAIA,WAAU,UAAU,OAAO;AAC3B,oBAAI,UAAU,MAAM,SAAS,SAAS,EAAE;AAAA,kBACpC,IAAI,UAAU,KAAK;AAAA,kBACnB,KAAKA,OAAM,EAAE,UAAU;AAAA,gBAC3B,CAAC;AAAA,cACL;AAAA,YACJ,WACS,CAAC;AACN,0BAAY;AAAA,UACpB;AACA,uBACI,CAAC,UAAU,CAAC,OAAO,aACb,IAAI,MAAK,oBAAI,KAAK,GAAE,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IACnD,IAAI,MAAK,oBAAI,KAAK,GAAE,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;AAClD,cAAI,QAAQ,SAAUC,KAAI;AACtB,gBAAIC,MAAKD,IAAG,IAAI,MAAMA,IAAG;AACzB,mBAAQ,aAAaC,IAAG,YAAY,KAAK,MAAM,KAAK;AAAA,UACxD,CAAC;AACD,uBAAa,UAAU,aAAa;AAAA,QACxC;AAAA,MACJ;AACA,UAAI,EAAE,sBAAsB,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,IAAI;AAC/D,eAAO,aAAa,IAAI,MAAM,4BAA4B,QAAQ,CAAC;AACnE,eAAO;AAAA,MACX;AACA,UAAI,aAAa;AACb,mBAAW,SAAS,GAAG,GAAG,GAAG,CAAC;AAClC,aAAO;AAAA,IACX;AAAA,EACJ;AACO,WAAS,aAAa,OAAO,OAAO,UAAU;AACjD,QAAI,aAAa,QAAQ;AAAE,iBAAW;AAAA,IAAM;AAC5C,QAAI,aAAa,OAAO;AACpB,aAAQ,IAAI,KAAK,MAAM,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC,IACjD,IAAI,KAAK,MAAM,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,IACrD;AACA,WAAO,MAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,EAC3C;AAOO,MAAI,YAAY,SAAU,IAAI,KAAK,KAAK;AAC3C,WAAO,KAAK,KAAK,IAAI,KAAK,GAAG,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG;AAAA,EAC5D;AACO,MAAI,gCAAgC,SAAU,OAAO,SAAS,SAAS;AAC1E,WAAO,QAAQ,OAAO,UAAU,KAAK;AAAA,EACzC;AACO,MAAI,eAAe,SAAU,sBAAsB;AACtD,QAAI,QAAQ,KAAK,MAAM,uBAAuB,IAAI,GAAG,WAAW,uBAAuB,QAAQ,QAAQ;AACvG,WAAO,CAAC,OAAO,SAAS,uBAAuB,QAAQ,OAAO,UAAU,EAAE;AAAA,EAC9E;AACO,MAAI,WAAW;AAAA,IAClB,KAAK;AAAA,EACT;AACO,WAAS,gBAAgB,QAAQ;AACpC,QAAI,QAAQ,OAAO;AACnB,QAAI,UAAU,OAAO;AACrB,QAAI,UAAU,OAAO;AACrB,QAAI,OAAO,YAAY,QAAW;AAC9B,UAAI,UAAU,OAAO,QAAQ,SAAS;AACtC,UAAI,aAAa,OAAO,QAAQ,WAAW;AAC3C,UAAI,aAAa,OAAO,QAAQ,WAAW;AAC3C,UAAI,QAAQ,SAAS;AACjB,gBAAQ;AAAA,MACZ;AACA,UAAI,UAAU,WAAW,UAAU,YAAY;AAC3C,kBAAU;AAAA,MACd;AACA,UAAI,UAAU,WAAW,YAAY,cAAc,UAAU;AACzD,kBAAU,OAAO,QAAQ,WAAW;AAAA,IAC5C;AACA,QAAI,OAAO,YAAY,QAAW;AAC9B,UAAI,QAAQ,OAAO,QAAQ,SAAS;AACpC,UAAI,aAAa,OAAO,QAAQ,WAAW;AAC3C,cAAQ,KAAK,IAAI,OAAO,KAAK;AAC7B,UAAI,UAAU;AACV,kBAAU,KAAK,IAAI,YAAY,OAAO;AAC1C,UAAI,UAAU,SAAS,YAAY;AAC/B,kBAAU,OAAO,QAAQ,WAAW;AAAA,IAC5C;AACA,WAAO,EAAE,OAAc,SAAkB,QAAiB;AAAA,EAC9D;;;AC7IA,MAAI,OAAO,OAAO,WAAW,YAAY;AACrC,WAAO,SAAS,SAAU,QAAQ;AAC9B,UAAI,OAAO,CAAC;AACZ,eAASC,MAAK,GAAGA,MAAK,UAAU,QAAQA,OAAM;AAC1C,aAAKA,MAAK,CAAC,IAAI,UAAUA,GAAE;AAAA,MAC/B;AACA,UAAI,CAAC,QAAQ;AACT,cAAM,UAAU,4CAA4C;AAAA,MAChE;AACA,UAAI,UAAU,SAAUC,SAAQ;AAC5B,YAAIA,SAAQ;AACR,iBAAO,KAAKA,OAAM,EAAE,QAAQ,SAAU,KAAK;AAAE,mBAAQ,OAAO,GAAG,IAAIA,QAAO,GAAG;AAAA,UAAI,CAAC;AAAA,QACtF;AAAA,MACJ;AACA,eAAS,KAAK,GAAG,SAAS,MAAM,KAAK,OAAO,QAAQ,MAAM;AACtD,YAAI,SAAS,OAAO,EAAE;AACtB,gBAAQ,MAAM;AAAA,MAClB;AACA,aAAO;AAAA,IACX;AAAA,EACJ;;;ACrBA,MAAI,WAAsC,WAAY;AAClD,eAAW,OAAO,UAAU,SAASC,IAAG;AACpC,eAASC,IAAGC,KAAI,GAAGC,KAAI,UAAU,QAAQD,KAAIC,IAAGD,MAAK;AACjD,QAAAD,KAAI,UAAUC,EAAC;AACf,iBAASE,MAAKH,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAGG,EAAC;AAC1D,UAAAJ,GAAEI,EAAC,IAAIH,GAAEG,EAAC;AAAA,MAClB;AACA,aAAOJ;AAAA,IACX;AACA,WAAO,SAAS,MAAM,MAAM,SAAS;AAAA,EACzC;AACA,MAAI,iBAAkD,WAAY;AAC9D,aAASC,KAAI,GAAGC,KAAI,GAAG,KAAK,UAAU,QAAQA,KAAI,IAAIA,KAAK,CAAAD,MAAK,UAAUC,EAAC,EAAE;AAC7E,aAASG,KAAI,MAAMJ,EAAC,GAAGK,KAAI,GAAGJ,KAAI,GAAGA,KAAI,IAAIA;AACzC,eAASK,KAAI,UAAUL,EAAC,GAAGM,KAAI,GAAG,KAAKD,GAAE,QAAQC,KAAI,IAAIA,MAAKF;AAC1D,QAAAD,GAAEC,EAAC,IAAIC,GAAEC,EAAC;AAClB,WAAOH;AAAA,EACX;AAQA,MAAI,sBAAsB;AAC1B,WAAS,kBAAkB,SAAS,gBAAgB;AAChD,QAAII,QAAO;AAAA,MACP,QAAQ,SAAS,SAAS,CAAC,GAAGC,SAAc,GAAG,UAAU,aAAa;AAAA,MACtE,MAAM;AAAA,IACV;AACA,IAAAD,MAAK,YAAY,iBAAiB,EAAE,QAAQA,MAAK,QAAQ,MAAMA,MAAK,KAAK,CAAC;AAC1E,IAAAA,MAAK,YAAY,CAAC;AAClB,IAAAA,MAAK,iBAAiB,CAAC;AACvB,IAAAA,MAAK,gBAAgB,CAAC;AACtB,IAAAA,MAAK,QAAQ;AACb,IAAAA,MAAK,oBAAoB;AACzB,IAAAA,MAAK,oBAAoB;AACzB,IAAAA,MAAK,cAAc;AACnB,IAAAA,MAAK,aAAa;AAClB,IAAAA,MAAK,QAAQ;AACb,IAAAA,MAAK,QAAQ;AACb,IAAAA,MAAK,cAAc;AACnB,IAAAA,MAAK,iBAAiBE;AACtB,IAAAF,MAAK,YAAY;AACjB,IAAAA,MAAK,UAAUG;AACf,IAAAH,MAAK,YAAY;AACjB,IAAAA,MAAK,aAAa;AAClB,IAAAA,MAAK,cAAc;AACnB,IAAAA,MAAK,OAAO;AACZ,IAAAA,MAAK,SAAS;AACd,IAAAA,MAAK,MAAMI;AACX,IAAAJ,MAAK,UAAU;AACf,IAAAA,MAAK,SAAS;AACd,aAAS,uBAAuB;AAC5B,MAAAA,MAAK,QAAQ;AAAA,QACT,gBAAgB,SAAU,OAAOK,KAAI;AACjC,cAAI,UAAU,QAAQ;AAAE,oBAAQL,MAAK;AAAA,UAAc;AACnD,cAAIK,QAAO,QAAQ;AAAE,YAAAA,MAAKL,MAAK;AAAA,UAAa;AAC5C,cAAI,UAAU,MAAOK,MAAK,MAAM,KAAKA,MAAK,QAAQ,KAAMA,MAAK,QAAQ;AACjE,mBAAO;AACX,iBAAOL,MAAK,KAAK,YAAY,KAAK;AAAA,QACtC;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,OAAO;AACZ,MAAAA,MAAK,UAAUA,MAAK,QAAQ;AAC5B,MAAAA,MAAK,SAAS;AACd,kBAAY;AACZ,kBAAY;AACZ,kBAAY;AACZ,iBAAW;AACX,2BAAqB;AACrB,UAAI,CAACA,MAAK;AACN,cAAM;AACV,iBAAW;AACX,UAAIA,MAAK,cAAc,UAAUA,MAAK,OAAO,YAAY;AACrD,YAAIA,MAAK,OAAO,YAAY;AACxB,2BAAiBA,MAAK,OAAO,aAAaA,MAAK,wBAAwB,MAAS;AAAA,QACpF;AACA,oBAAY,KAAK;AAAA,MACrB;AACA,uBAAiB;AACjB,UAAI,WAAW,iCAAiC,KAAK,UAAU,SAAS;AACxE,UAAI,CAACA,MAAK,YAAY,UAAU;AAC5B,yBAAiB;AAAA,MACrB;AACA,mBAAa,SAAS;AAAA,IAC1B;AACA,aAAS,0BAA0B;AAC/B,UAAI;AACJ,eAAU,KAAKA,MAAK,uBAAuB,QAAQ,OAAO,SAAS,SAAS,GAAG,YAAY,GACtF,iBAAiB,SAAS;AAAA,IACnC;AACA,aAAS,eAAeM,KAAI;AACxB,aAAOA,IAAG,KAAKN,KAAI;AAAA,IACvB;AACA,aAAS,mBAAmB;AACxB,UAAI,SAASA,MAAK;AAClB,UAAI,OAAO,gBAAgB,SAAS,OAAO,eAAe,GAAG;AACzD;AAAA,MACJ,WACS,OAAO,eAAe,MAAM;AACjC,eAAO,sBAAsB,WAAY;AACrC,cAAIA,MAAK,sBAAsB,QAAW;AACtC,YAAAA,MAAK,kBAAkB,MAAM,aAAa;AAC1C,YAAAA,MAAK,kBAAkB,MAAM,UAAU;AAAA,UAC3C;AACA,cAAIA,MAAK,kBAAkB,QAAW;AAClC,gBAAI,aAAaA,MAAK,KAAK,cAAc,KAAK,OAAO;AACrD,YAAAA,MAAK,cAAc,MAAM,QAAQ,YAAY;AAC7C,YAAAA,MAAK,kBAAkB,MAAM,QACzB,aACKA,MAAK,gBAAgB,SAChBA,MAAK,YAAY,cACjB,KACN;AACR,YAAAA,MAAK,kBAAkB,MAAM,eAAe,YAAY;AACxD,YAAAA,MAAK,kBAAkB,MAAM,eAAe,SAAS;AAAA,UACzD;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AACA,aAAS,WAAWO,IAAG;AACnB,UAAIP,MAAK,cAAc,WAAW,GAAG;AACjC,YAAI,cAAcA,MAAK,OAAO,YAAY,UACtC,aAAa,oBAAI,KAAK,GAAGA,MAAK,OAAO,OAAO,KAAK,IAC/C,oBAAI,KAAK,IACT,IAAI,KAAKA,MAAK,OAAO,QAAQ,QAAQ,CAAC;AAC5C,YAAIC,YAAW,gBAAgBD,MAAK,MAAM;AAC1C,oBAAY,SAASC,UAAS,OAAOA,UAAS,SAASA,UAAS,SAAS,YAAY,gBAAgB,CAAC;AACtG,QAAAD,MAAK,gBAAgB,CAAC,WAAW;AACjC,QAAAA,MAAK,wBAAwB;AAAA,MACjC;AACA,UAAIO,OAAM,UAAaA,GAAE,SAAS,QAAQ;AACtC,oBAAYA,EAAC;AAAA,MACjB;AACA,UAAI,YAAYP,MAAK,OAAO;AAC5B,yBAAmB;AACnB,kBAAY;AACZ,UAAIA,MAAK,OAAO,UAAU,WAAW;AACjC,QAAAA,MAAK,iBAAiB;AAAA,MAC1B;AAAA,IACJ;AACA,aAAS,cAAc,MAAM,MAAM;AAC/B,aAAQ,OAAO,KAAM,KAAK,IAAI,SAASA,MAAK,KAAK,KAAK,CAAC,CAAC;AAAA,IAC5D;AACA,aAAS,cAAc,MAAM;AACzB,cAAQ,OAAO,IAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO,OAAO;AAAA,MACtB;AAAA,IACJ;AACA,aAAS,qBAAqB;AAC1B,UAAIA,MAAK,gBAAgB,UAAaA,MAAK,kBAAkB;AACzD;AACJ,UAAI,SAAS,SAASA,MAAK,YAAY,MAAM,MAAM,EAAE,GAAG,EAAE,KAAK,KAAK,IAAI,WAAW,SAASA,MAAK,cAAc,OAAO,EAAE,KAAK,KAAK,IAAI,UAAUA,MAAK,kBAAkB,UAChK,SAASA,MAAK,cAAc,OAAO,EAAE,KAAK,KAAK,KAChD;AACN,UAAIA,MAAK,SAAS,QAAW;AACzB,gBAAQ,cAAc,OAAOA,MAAK,KAAK,WAAW;AAAA,MACtD;AACA,UAAI,gBAAgBA,MAAK,OAAO,YAAY,UACvCA,MAAK,OAAO,WACTA,MAAK,kBACLA,MAAK,yBACL,aAAaA,MAAK,uBAAuBA,MAAK,OAAO,SAAS,IAAI,MAC9D;AACZ,UAAI,gBAAgBA,MAAK,OAAO,YAAY,UACvCA,MAAK,OAAO,WACTA,MAAK,kBACLA,MAAK,yBACL,aAAaA,MAAK,uBAAuBA,MAAK,OAAO,SAAS,IAAI,MAC9D;AACZ,UAAIA,MAAK,OAAO,YAAY,UACxBA,MAAK,OAAO,YAAY,UACxBA,MAAK,OAAO,UAAUA,MAAK,OAAO,SAAS;AAC3C,YAAI,WAAW,8BAA8BA,MAAK,OAAO,QAAQ,SAAS,GAAGA,MAAK,OAAO,QAAQ,WAAW,GAAGA,MAAK,OAAO,QAAQ,WAAW,CAAC;AAC/I,YAAI,WAAW,8BAA8BA,MAAK,OAAO,QAAQ,SAAS,GAAGA,MAAK,OAAO,QAAQ,WAAW,GAAGA,MAAK,OAAO,QAAQ,WAAW,CAAC;AAC/I,YAAI,cAAc,8BAA8B,OAAO,SAAS,OAAO;AACvE,YAAI,cAAc,YAAY,cAAc,UAAU;AAClD,cAAI,SAAS,aAAa,QAAQ;AAClC,kBAAQ,OAAO,CAAC;AAChB,oBAAU,OAAO,CAAC;AAClB,oBAAU,OAAO,CAAC;AAAA,QACtB;AAAA,MACJ,OACK;AACD,YAAI,eAAe;AACf,cAAIQ,WAAUR,MAAK,OAAO,YAAY,SAChCA,MAAK,OAAO,UACZA,MAAK,OAAO;AAClB,kBAAQ,KAAK,IAAI,OAAOQ,SAAQ,SAAS,CAAC;AAC1C,cAAI,UAAUA,SAAQ,SAAS;AAC3B,sBAAU,KAAK,IAAI,SAASA,SAAQ,WAAW,CAAC;AACpD,cAAI,YAAYA,SAAQ,WAAW;AAC/B,sBAAU,KAAK,IAAI,SAASA,SAAQ,WAAW,CAAC;AAAA,QACxD;AACA,YAAI,eAAe;AACf,cAAIC,WAAUT,MAAK,OAAO,YAAY,SAChCA,MAAK,OAAO,UACZA,MAAK,OAAO;AAClB,kBAAQ,KAAK,IAAI,OAAOS,SAAQ,SAAS,CAAC;AAC1C,cAAI,UAAUA,SAAQ,SAAS,KAAK,UAAUA,SAAQ,WAAW;AAC7D,sBAAUA,SAAQ,WAAW;AACjC,cAAI,YAAYA,SAAQ,WAAW;AAC/B,sBAAU,KAAK,IAAI,SAASA,SAAQ,WAAW,CAAC;AAAA,QACxD;AAAA,MACJ;AACA,eAAS,OAAO,SAAS,OAAO;AAAA,IACpC;AACA,aAAS,iBAAiB,SAAS;AAC/B,UAAI,OAAO,WAAWT,MAAK;AAC3B,UAAI,QAAQ,gBAAgB,MAAM;AAC9B,iBAAS,KAAK,SAAS,GAAG,KAAK,WAAW,GAAG,KAAK,WAAW,CAAC;AAAA,MAClE;AAAA,IACJ;AACA,aAAS,SAAS,OAAO,SAAS,SAAS;AACvC,UAAIA,MAAK,0BAA0B,QAAW;AAC1C,QAAAA,MAAK,sBAAsB,SAAS,QAAQ,IAAI,SAAS,WAAW,GAAG,CAAC;AAAA,MAC5E;AACA,UAAI,CAACA,MAAK,eAAe,CAACA,MAAK,iBAAiBA,MAAK;AACjD;AACJ,MAAAA,MAAK,YAAY,QAAQ,IAAI,CAACA,MAAK,OAAO,aAClC,KAAK,SAAS,KAAM,KAAK,IAAI,QAAQ,OAAO,CAAC,IAC/C,KAAK;AACX,MAAAA,MAAK,cAAc,QAAQ,IAAI,OAAO;AACtC,UAAIA,MAAK,SAAS;AACd,QAAAA,MAAK,KAAK,cAAcA,MAAK,KAAK,KAAK,IAAI,SAAS,EAAE,CAAC;AAC3D,UAAIA,MAAK,kBAAkB;AACvB,QAAAA,MAAK,cAAc,QAAQ,IAAI,OAAO;AAAA,IAC9C;AACA,aAAS,YAAYU,QAAO;AACxB,UAAI,cAAc,eAAeA,MAAK;AACtC,UAAI,OAAO,SAAS,YAAY,KAAK,KAAKA,OAAM,SAAS;AACzD,UAAI,OAAO,MAAO,KACbA,OAAM,QAAQ,WAAW,CAAC,QAAQ,KAAK,KAAK,SAAS,CAAC,GAAI;AAC3D,mBAAW,IAAI;AAAA,MACnB;AAAA,IACJ;AACA,aAAS,KAAKC,UAASD,QAAO,SAAS,SAAS;AAC5C,UAAIA,kBAAiB;AACjB,eAAOA,OAAM,QAAQ,SAAU,IAAI;AAAE,iBAAO,KAAKC,UAAS,IAAI,SAAS,OAAO;AAAA,QAAG,CAAC;AACtF,UAAIA,oBAAmB;AACnB,eAAOA,SAAQ,QAAQ,SAAU,IAAI;AAAE,iBAAO,KAAK,IAAID,QAAO,SAAS,OAAO;AAAA,QAAG,CAAC;AACtF,MAAAC,SAAQ,iBAAiBD,QAAO,SAAS,OAAO;AAChD,MAAAV,MAAK,UAAU,KAAK;AAAA,QAChB,QAAQ,WAAY;AAAE,iBAAOW,SAAQ,oBAAoBD,QAAO,SAAS,OAAO;AAAA,QAAG;AAAA,MACvF,CAAC;AAAA,IACL;AACA,aAAS,gBAAgB;AACrB,mBAAa,UAAU;AAAA,IAC3B;AACA,aAAS,aAAa;AAClB,UAAIV,MAAK,OAAO,MAAM;AAClB,SAAC,QAAQ,SAAS,UAAU,OAAO,EAAE,QAAQ,SAAU,KAAK;AACxD,gBAAM,UAAU,QAAQ,KAAKA,MAAK,QAAQ,iBAAiB,WAAW,MAAM,GAAG,GAAG,SAAU,IAAI;AAC5F,mBAAO,KAAK,IAAI,SAASA,MAAK,GAAG,CAAC;AAAA,UACtC,CAAC;AAAA,QACL,CAAC;AAAA,MACL;AACA,UAAIA,MAAK,UAAU;AACf,oBAAY;AACZ;AAAA,MACJ;AACA,UAAI,kBAAkBY,UAASC,WAAU,EAAE;AAC3C,MAAAb,MAAK,mBAAmBY,UAAS,eAAe,mBAAmB;AACnE,UAAIZ,MAAK,iBAAiB,CAAC,oBAAoB,KAAK,UAAU,SAAS;AACnE,aAAKA,MAAK,eAAe,aAAa,SAAUO,IAAG;AAC/C,cAAIP,MAAK,OAAO,SAAS;AACrB,wBAAY,eAAeO,EAAC,CAAC;AAAA,QACrC,CAAC;AACL,WAAKP,MAAK,QAAQ,WAAW,SAAS;AACtC,UAAIA,MAAK,sBAAsB,QAAW;AACtC,aAAKA,MAAK,mBAAmB,WAAW,SAAS;AAAA,MACrD;AACA,UAAI,CAACA,MAAK,OAAO,UAAU,CAACA,MAAK,OAAO;AACpC,aAAK,QAAQ,UAAU,eAAe;AAC1C,UAAI,OAAO,iBAAiB;AACxB,aAAK,OAAO,UAAU,cAAc,aAAa;AAAA;AAEjD,aAAK,OAAO,UAAU,aAAa,aAAa;AACpD,WAAK,OAAO,UAAU,SAAS,eAAe,EAAE,SAAS,KAAK,CAAC;AAC/D,UAAIA,MAAK,OAAO,eAAe,MAAM;AACjC,aAAKA,MAAK,QAAQ,SAASA,MAAK,IAAI;AACpC,aAAKA,MAAK,QAAQ,SAASA,MAAK,IAAI;AAAA,MACxC;AACA,UAAIA,MAAK,kBAAkB,QAAW;AAClC,aAAKA,MAAK,UAAU,SAAS,eAAe;AAC5C,aAAKA,MAAK,UAAU,CAAC,SAAS,WAAW,GAAG,WAAW;AACvD,aAAKA,MAAK,eAAe,SAAS,UAAU;AAAA,MAChD;AACA,UAAIA,MAAK,kBAAkB,UACvBA,MAAK,kBAAkB,UACvBA,MAAK,gBAAgB,QAAW;AAChC,YAAI,UAAU,SAAUO,IAAG;AACvB,iBAAO,eAAeA,EAAC,EAAE,OAAO;AAAA,QACpC;AACA,aAAKP,MAAK,eAAe,CAAC,WAAW,GAAG,UAAU;AAClD,aAAKA,MAAK,eAAe,QAAQ,YAAY,EAAE,SAAS,KAAK,CAAC;AAC9D,aAAKA,MAAK,eAAe,SAAS,aAAa;AAC/C,aAAK,CAACA,MAAK,aAAaA,MAAK,aAAa,GAAG,CAAC,SAAS,OAAO,GAAG,OAAO;AACxE,YAAIA,MAAK,kBAAkB;AACvB,eAAKA,MAAK,eAAe,SAAS,WAAY;AAAE,mBAAOA,MAAK,iBAAiBA,MAAK,cAAc,OAAO;AAAA,UAAG,CAAC;AAC/G,YAAIA,MAAK,SAAS,QAAW;AACzB,eAAKA,MAAK,MAAM,SAAS,SAAUO,IAAG;AAClC,uBAAWA,EAAC;AAAA,UAChB,CAAC;AAAA,QACL;AAAA,MACJ;AACA,UAAIP,MAAK,OAAO,YAAY;AACxB,aAAKA,MAAK,QAAQ,QAAQ,MAAM;AAAA,MACpC;AAAA,IACJ;AACA,aAAS,WAAW,UAAUc,gBAAe;AACzC,UAAI,SAAS,aAAa,SACpBd,MAAK,UAAU,QAAQ,IACvBA,MAAK,0BACFA,MAAK,OAAO,WAAWA,MAAK,OAAO,UAAUA,MAAK,MAC7CA,MAAK,OAAO,UACZA,MAAK,OAAO,WAAWA,MAAK,OAAO,UAAUA,MAAK,MAC9CA,MAAK,OAAO,UACZA,MAAK;AACvB,UAAI,UAAUA,MAAK;AACnB,UAAI,WAAWA,MAAK;AACpB,UAAI;AACA,YAAI,WAAW,QAAW;AACtB,UAAAA,MAAK,cAAc,OAAO,YAAY;AACtC,UAAAA,MAAK,eAAe,OAAO,SAAS;AAAA,QACxC;AAAA,MACJ,SACOO,IAAG;AACN,QAAAA,GAAE,UAAU,4BAA4B;AACxC,QAAAP,MAAK,OAAO,aAAaO,EAAC;AAAA,MAC9B;AACA,UAAIO,kBAAiBd,MAAK,gBAAgB,SAAS;AAC/C,qBAAa,cAAc;AAC3B,yBAAiB;AAAA,MACrB;AACA,UAAIc,mBACCd,MAAK,gBAAgB,WAAWA,MAAK,iBAAiB,WAAW;AAClE,qBAAa,eAAe;AAAA,MAChC;AACA,MAAAA,MAAK,OAAO;AAAA,IAChB;AACA,aAAS,cAAcO,IAAG;AACtB,UAAI,cAAc,eAAeA,EAAC;AAClC,UAAI,CAAC,YAAY,UAAU,QAAQ,OAAO;AACtC,0BAAkBA,IAAG,YAAY,UAAU,SAAS,SAAS,IAAI,IAAI,EAAE;AAAA,IAC/E;AACA,aAAS,kBAAkBA,IAAG,OAAO,WAAW;AAC5C,UAAI,SAASA,MAAK,eAAeA,EAAC;AAClC,UAAI,QAAQ,aACP,UAAU,OAAO,cAAc,OAAO,WAAW;AACtD,UAAIG,SAAQ,YAAY,WAAW;AACnC,MAAAA,OAAM,QAAQ;AACd,eAAS,MAAM,cAAcA,MAAK;AAAA,IACtC;AACA,aAAS,QAAQ;AACb,UAAI,WAAW,OAAO,SAAS,uBAAuB;AACtD,MAAAV,MAAK,oBAAoBE,eAAc,OAAO,oBAAoB;AAClE,MAAAF,MAAK,kBAAkB,WAAW;AAClC,UAAI,CAACA,MAAK,OAAO,YAAY;AACzB,iBAAS,YAAY,cAAc,CAAC;AACpC,QAAAA,MAAK,iBAAiBE,eAAc,OAAO,0BAA0B;AACrE,YAAIF,MAAK,OAAO,aAAa;AACzB,cAAI,KAAK,WAAW,GAAG,cAAc,GAAG,aAAa,cAAc,GAAG;AACtE,UAAAA,MAAK,eAAe,YAAY,WAAW;AAC3C,UAAAA,MAAK,cAAc;AACnB,UAAAA,MAAK,cAAc;AAAA,QACvB;AACA,QAAAA,MAAK,aAAaE,eAAc,OAAO,sBAAsB;AAC7D,QAAAF,MAAK,WAAW,YAAY,cAAc,CAAC;AAC3C,YAAI,CAACA,MAAK,eAAe;AACrB,UAAAA,MAAK,gBAAgBE,eAAc,OAAO,gBAAgB;AAC1D,UAAAF,MAAK,cAAc,WAAW;AAAA,QAClC;AACA,kBAAU;AACV,QAAAA,MAAK,WAAW,YAAYA,MAAK,aAAa;AAC9C,QAAAA,MAAK,eAAe,YAAYA,MAAK,UAAU;AAC/C,iBAAS,YAAYA,MAAK,cAAc;AAAA,MAC5C;AACA,UAAIA,MAAK,OAAO,YAAY;AACxB,iBAAS,YAAY,UAAU,CAAC;AAAA,MACpC;AACA,MAAAe,aAAYf,MAAK,mBAAmB,aAAaA,MAAK,OAAO,SAAS,OAAO;AAC7E,MAAAe,aAAYf,MAAK,mBAAmB,WAAWA,MAAK,OAAO,YAAY,IAAI;AAC3E,MAAAe,aAAYf,MAAK,mBAAmB,cAAcA,MAAK,OAAO,aAAa,CAAC;AAC5E,MAAAA,MAAK,kBAAkB,YAAY,QAAQ;AAC3C,UAAI,eAAeA,MAAK,OAAO,aAAa,UACxCA,MAAK,OAAO,SAAS,aAAa;AACtC,UAAIA,MAAK,OAAO,UAAUA,MAAK,OAAO,QAAQ;AAC1C,QAAAA,MAAK,kBAAkB,UAAU,IAAIA,MAAK,OAAO,SAAS,WAAW,QAAQ;AAC7E,YAAIA,MAAK,OAAO,QAAQ;AACpB,cAAI,CAAC,gBAAgBA,MAAK,QAAQ;AAC9B,YAAAA,MAAK,QAAQ,WAAW,aAAaA,MAAK,mBAAmBA,MAAK,OAAO,WAAW;AAAA,mBAC/EA,MAAK,OAAO,aAAa;AAC9B,YAAAA,MAAK,OAAO,SAAS,YAAYA,MAAK,iBAAiB;AAAA,QAC/D;AACA,YAAIA,MAAK,OAAO,QAAQ;AACpB,cAAI,UAAUE,eAAc,OAAO,mBAAmB;AACtD,cAAIF,MAAK,QAAQ;AACb,YAAAA,MAAK,QAAQ,WAAW,aAAa,SAASA,MAAK,OAAO;AAC9D,kBAAQ,YAAYA,MAAK,OAAO;AAChC,cAAIA,MAAK;AACL,oBAAQ,YAAYA,MAAK,QAAQ;AACrC,kBAAQ,YAAYA,MAAK,iBAAiB;AAAA,QAC9C;AAAA,MACJ;AACA,UAAI,CAACA,MAAK,OAAO,UAAU,CAACA,MAAK,OAAO;AACpC,SAACA,MAAK,OAAO,aAAa,SACpBA,MAAK,OAAO,WACZ,OAAO,SAAS,MAAM,YAAYA,MAAK,iBAAiB;AAAA,IACtE;AACA,aAAS,UAAU,WAAW,MAAM,YAAYP,IAAG;AAC/C,UAAI,gBAAgB,UAAU,MAAM,IAAI,GAAG,aAAaS,eAAc,QAAQ,WAAW,KAAK,QAAQ,EAAE,SAAS,CAAC;AAClH,iBAAW,UAAU;AACrB,iBAAW,KAAKT;AAChB,iBAAW,aAAa,cAAcO,MAAK,WAAW,MAAMA,MAAK,OAAO,cAAc,CAAC;AACvF,UAAI,UAAU,QAAQ,QAAQ,MAAM,MAChC,aAAa,MAAMA,MAAK,GAAG,MAAM,GAAG;AACpC,QAAAA,MAAK,gBAAgB;AACrB,mBAAW,UAAU,IAAI,OAAO;AAChC,mBAAW,aAAa,gBAAgB,MAAM;AAAA,MAClD;AACA,UAAI,eAAe;AACf,mBAAW,WAAW;AACtB,YAAI,eAAe,IAAI,GAAG;AACtB,qBAAW,UAAU,IAAI,UAAU;AACnC,UAAAA,MAAK,mBAAmB;AACxB,cAAIA,MAAK,OAAO,SAAS,SAAS;AAC9B,YAAAe,aAAY,YAAY,cAAcf,MAAK,cAAc,CAAC,KACtD,aAAa,MAAMA,MAAK,cAAc,CAAC,GAAG,IAAI,MAAM,CAAC;AACzD,YAAAe,aAAY,YAAY,YAAYf,MAAK,cAAc,CAAC,KACpD,aAAa,MAAMA,MAAK,cAAc,CAAC,GAAG,IAAI,MAAM,CAAC;AACzD,gBAAI,cAAc;AACd,yBAAW,UAAU,IAAI,SAAS;AAAA,UAC1C;AAAA,QACJ;AAAA,MACJ,OACK;AACD,mBAAW,UAAU,IAAI,oBAAoB;AAAA,MACjD;AACA,UAAIA,MAAK,OAAO,SAAS,SAAS;AAC9B,YAAI,cAAc,IAAI,KAAK,CAAC,eAAe,IAAI;AAC3C,qBAAW,UAAU,IAAI,SAAS;AAAA,MAC1C;AACA,UAAIA,MAAK,eACLA,MAAK,OAAO,eAAe,KAC3B,cAAc,kBACdP,KAAI,MAAM,GAAG;AACb,QAAAO,MAAK,YAAY,mBAAmB,aAAa,iCAAiCA,MAAK,OAAO,QAAQ,IAAI,IAAI,SAAS;AAAA,MAC3H;AACA,mBAAa,eAAe,UAAU;AACtC,aAAO;AAAA,IACX;AACA,aAAS,eAAe,YAAY;AAChC,iBAAW,MAAM;AACjB,UAAIA,MAAK,OAAO,SAAS;AACrB,oBAAY,UAAU;AAAA,IAC9B;AACA,aAAS,qBAAqB,OAAO;AACjC,UAAI,aAAa,QAAQ,IAAI,IAAIA,MAAK,OAAO,aAAa;AAC1D,UAAI,WAAW,QAAQ,IAAIA,MAAK,OAAO,aAAa;AACpD,eAASgB,KAAI,YAAYA,MAAK,UAAUA,MAAK,OAAO;AAChD,YAAI,QAAQhB,MAAK,cAAc,SAASgB,EAAC;AACzC,YAAI,aAAa,QAAQ,IAAI,IAAI,MAAM,SAAS,SAAS;AACzD,YAAI,WAAW,QAAQ,IAAI,MAAM,SAAS,SAAS;AACnD,iBAASvB,KAAI,YAAYA,MAAK,UAAUA,MAAK,OAAO;AAChD,cAAIwB,KAAI,MAAM,SAASxB,EAAC;AACxB,cAAIwB,GAAE,UAAU,QAAQ,QAAQ,MAAM,MAAM,UAAUA,GAAE,OAAO;AAC3D,mBAAOA;AAAA,QACf;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,aAAS,oBAAoB,SAAS,OAAO;AACzC,UAAI,aAAa,QAAQ,UAAU,QAAQ,OAAO,MAAM,KAClD,QAAQ,QAAQ,SAAS,IACzBjB,MAAK;AACX,UAAI,WAAW,QAAQ,IAAIA,MAAK,OAAO,aAAa;AACpD,UAAI,YAAY,QAAQ,IAAI,IAAI;AAChC,eAASgB,KAAI,aAAahB,MAAK,cAAcgB,MAAK,UAAUA,MAAK,WAAW;AACxE,YAAI,QAAQhB,MAAK,cAAc,SAASgB,EAAC;AACzC,YAAI,aAAa,aAAahB,MAAK,iBAAiBgB,KAC9C,QAAQ,KAAK,QACb,QAAQ,IACJ,MAAM,SAAS,SAAS,IACxB;AACV,YAAI,eAAe,MAAM,SAAS;AAClC,iBAASvB,KAAI,YAAYA,MAAK,KAAKA,KAAI,gBAAgBA,OAAM,QAAQ,IAAI,eAAe,KAAKA,MAAK,WAAW;AACzG,cAAIwB,KAAI,MAAM,SAASxB,EAAC;AACxB,cAAIwB,GAAE,UAAU,QAAQ,QAAQ,MAAM,MAClC,UAAUA,GAAE,OAAO,KACnB,KAAK,IAAI,QAAQ,KAAKxB,EAAC,KAAK,KAAK,IAAI,KAAK;AAC1C,mBAAO,eAAewB,EAAC;AAAA,QAC/B;AAAA,MACJ;AACA,MAAAjB,MAAK,YAAY,SAAS;AAC1B,iBAAW,qBAAqB,SAAS,GAAG,CAAC;AAC7C,aAAO;AAAA,IACX;AACA,aAAS,WAAW,SAAS,QAAQ;AACjC,UAAI,gBAAgB,wBAAwB;AAC5C,UAAI,aAAa,SAAS,iBAAiB,SAAS,IAAI;AACxD,UAAI,YAAY,YAAY,SACtB,UACA,aACI,gBACAA,MAAK,qBAAqB,UAAa,SAASA,MAAK,gBAAgB,IACjEA,MAAK,mBACLA,MAAK,kBAAkB,UAAa,SAASA,MAAK,aAAa,IAC3DA,MAAK,gBACL,qBAAqB,SAAS,IAAI,IAAI,EAAE;AAC1D,UAAI,cAAc,QAAW;AACzB,QAAAA,MAAK,OAAO,MAAM;AAAA,MACtB,WACS,CAAC,YAAY;AAClB,uBAAe,SAAS;AAAA,MAC5B,OACK;AACD,4BAAoB,WAAW,MAAM;AAAA,MACzC;AAAA,IACJ;AACA,aAAS,eAAe,MAAM,OAAO;AACjC,UAAI,gBAAgB,IAAI,KAAK,MAAM,OAAO,CAAC,EAAE,OAAO,IAAIA,MAAK,KAAK,iBAAiB,KAAK;AACxF,UAAI,gBAAgBA,MAAK,MAAM,gBAAgB,QAAQ,IAAI,MAAM,IAAI,IAAI;AACzE,UAAI,cAAcA,MAAK,MAAM,eAAe,OAAO,IAAI,GAAG,OAAO,OAAO,SAAS,uBAAuB,GAAG,eAAeA,MAAK,OAAO,aAAa,GAAG,oBAAoB,eAAe,wBAAwB,gBAAgB,oBAAoB,eAAe,wBAAwB;AAC5R,UAAI,YAAY,gBAAgB,IAAI,cAAc,WAAW;AAC7D,aAAO,aAAa,eAAe,aAAa,YAAY;AACxD,aAAK,YAAY,UAAU,mBAAmB,mBAAmB,IAAI,KAAK,MAAM,QAAQ,GAAG,SAAS,GAAG,WAAW,QAAQ,CAAC;AAAA,MAC/H;AACA,WAAK,YAAY,GAAG,aAAa,aAAa,aAAa,YAAY;AACnE,aAAK,YAAY,UAAU,iBAAiB,IAAI,KAAK,MAAM,OAAO,SAAS,GAAG,WAAW,QAAQ,CAAC;AAAA,MACtG;AACA,eAAS,SAAS,cAAc,GAAG,UAAU,KAAK,iBAC7CA,MAAK,OAAO,eAAe,KAAK,WAAW,MAAM,IAAI,UAAU,YAAY;AAC5E,aAAK,YAAY,UAAU,mBAAmB,mBAAmB,IAAI,KAAK,MAAM,QAAQ,GAAG,SAAS,WAAW,GAAG,QAAQ,QAAQ,CAAC;AAAA,MACvI;AACA,UAAI,eAAeE,eAAc,OAAO,cAAc;AACtD,mBAAa,YAAY,IAAI;AAC7B,aAAO;AAAA,IACX;AACA,aAAS,YAAY;AACjB,UAAIF,MAAK,kBAAkB,QAAW;AAClC;AAAA,MACJ;AACA,gBAAUA,MAAK,aAAa;AAC5B,UAAIA,MAAK;AACL,kBAAUA,MAAK,WAAW;AAC9B,UAAI,OAAO,SAAS,uBAAuB;AAC3C,eAASP,KAAI,GAAGA,KAAIO,MAAK,OAAO,YAAYP,MAAK;AAC7C,YAAIyB,KAAI,IAAI,KAAKlB,MAAK,aAAaA,MAAK,cAAc,CAAC;AACvD,QAAAkB,GAAE,SAASlB,MAAK,eAAeP,EAAC;AAChC,aAAK,YAAY,eAAeyB,GAAE,YAAY,GAAGA,GAAE,SAAS,CAAC,CAAC;AAAA,MAClE;AACA,MAAAlB,MAAK,cAAc,YAAY,IAAI;AACnC,MAAAA,MAAK,OAAOA,MAAK,cAAc;AAC/B,UAAIA,MAAK,OAAO,SAAS,WAAWA,MAAK,cAAc,WAAW,GAAG;AACjE,oBAAY;AAAA,MAChB;AAAA,IACJ;AACA,aAAS,mBAAmB;AACxB,UAAIA,MAAK,OAAO,aAAa,KACzBA,MAAK,OAAO,sBAAsB;AAClC;AACJ,UAAI,mBAAmB,SAAUmB,QAAO;AACpC,YAAInB,MAAK,OAAO,YAAY,UACxBA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,YAAY,KACrDmB,SAAQnB,MAAK,OAAO,QAAQ,SAAS,GAAG;AACxC,iBAAO;AAAA,QACX;AACA,eAAO,EAAEA,MAAK,OAAO,YAAY,UAC7BA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,YAAY,KACrDmB,SAAQnB,MAAK,OAAO,QAAQ,SAAS;AAAA,MAC7C;AACA,MAAAA,MAAK,wBAAwB,WAAW;AACxC,MAAAA,MAAK,wBAAwB,YAAY;AACzC,eAASP,KAAI,GAAGA,KAAI,IAAIA,MAAK;AACzB,YAAI,CAAC,iBAAiBA,EAAC;AACnB;AACJ,YAAI,QAAQS,eAAc,UAAU,+BAA+B;AACnE,cAAM,QAAQ,IAAI,KAAKF,MAAK,aAAaP,EAAC,EAAE,SAAS,EAAE,SAAS;AAChE,cAAM,cAAc,WAAWA,IAAGO,MAAK,OAAO,uBAAuBA,MAAK,IAAI;AAC9E,cAAM,WAAW;AACjB,YAAIA,MAAK,iBAAiBP,IAAG;AACzB,gBAAM,WAAW;AAAA,QACrB;AACA,QAAAO,MAAK,wBAAwB,YAAY,KAAK;AAAA,MAClD;AAAA,IACJ;AACA,aAAS,aAAa;AAClB,UAAI,YAAYE,eAAc,OAAO,iBAAiB;AACtD,UAAI,mBAAmB,OAAO,SAAS,uBAAuB;AAC9D,UAAI;AACJ,UAAIF,MAAK,OAAO,aAAa,KACzBA,MAAK,OAAO,sBAAsB,UAAU;AAC5C,uBAAeE,eAAc,QAAQ,WAAW;AAAA,MACpD,OACK;AACD,QAAAF,MAAK,0BAA0BE,eAAc,UAAU,gCAAgC;AACvF,QAAAF,MAAK,wBAAwB,aAAa,cAAcA,MAAK,KAAK,cAAc;AAChF,aAAKA,MAAK,yBAAyB,UAAU,SAAUO,IAAG;AACtD,cAAI,SAAS,eAAeA,EAAC;AAC7B,cAAI,gBAAgB,SAAS,OAAO,OAAO,EAAE;AAC7C,UAAAP,MAAK,YAAY,gBAAgBA,MAAK,YAAY;AAClD,uBAAa,eAAe;AAAA,QAChC,CAAC;AACD,yBAAiB;AACjB,uBAAeA,MAAK;AAAA,MACxB;AACA,UAAI,YAAY,kBAAkB,YAAY,EAAE,UAAU,KAAK,CAAC;AAChE,UAAI,cAAc,UAAU,qBAAqB,OAAO,EAAE,CAAC;AAC3D,kBAAY,aAAa,cAAcA,MAAK,KAAK,aAAa;AAC9D,UAAIA,MAAK,OAAO,SAAS;AACrB,oBAAY,aAAa,OAAOA,MAAK,OAAO,QAAQ,YAAY,EAAE,SAAS,CAAC;AAAA,MAChF;AACA,UAAIA,MAAK,OAAO,SAAS;AACrB,oBAAY,aAAa,OAAOA,MAAK,OAAO,QAAQ,YAAY,EAAE,SAAS,CAAC;AAC5E,oBAAY,WACR,CAAC,CAACA,MAAK,OAAO,WACVA,MAAK,OAAO,QAAQ,YAAY,MAAMA,MAAK,OAAO,QAAQ,YAAY;AAAA,MAClF;AACA,UAAI,eAAeE,eAAc,OAAO,yBAAyB;AACjE,mBAAa,YAAY,YAAY;AACrC,mBAAa,YAAY,SAAS;AAClC,uBAAiB,YAAY,YAAY;AACzC,gBAAU,YAAY,gBAAgB;AACtC,aAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,cAAc;AACnB,gBAAUF,MAAK,QAAQ;AACvB,MAAAA,MAAK,SAAS,YAAYA,MAAK,YAAY;AAC3C,UAAIA,MAAK,OAAO,YAAY;AACxB,QAAAA,MAAK,eAAe,CAAC;AACrB,QAAAA,MAAK,gBAAgB,CAAC;AAAA,MAC1B;AACA,eAASgB,KAAIhB,MAAK,OAAO,YAAYgB,QAAM;AACvC,YAAI,QAAQ,WAAW;AACvB,QAAAhB,MAAK,aAAa,KAAK,MAAM,WAAW;AACxC,QAAAA,MAAK,cAAc,KAAK,MAAM,YAAY;AAC1C,QAAAA,MAAK,SAAS,YAAY,MAAM,SAAS;AAAA,MAC7C;AACA,MAAAA,MAAK,SAAS,YAAYA,MAAK,YAAY;AAAA,IAC/C;AACA,aAAS,gBAAgB;AACrB,MAAAA,MAAK,WAAWE,eAAc,OAAO,kBAAkB;AACvD,MAAAF,MAAK,eAAe,CAAC;AACrB,MAAAA,MAAK,gBAAgB,CAAC;AACtB,MAAAA,MAAK,eAAeE,eAAc,QAAQ,sBAAsB;AAChE,MAAAF,MAAK,aAAa,YAAYA,MAAK,OAAO;AAC1C,MAAAA,MAAK,eAAeE,eAAc,QAAQ,sBAAsB;AAChE,MAAAF,MAAK,aAAa,YAAYA,MAAK,OAAO;AAC1C,kBAAY;AACZ,aAAO,eAAeA,OAAM,uBAAuB;AAAA,QAC/C,KAAK,WAAY;AAAE,iBAAOA,MAAK;AAAA,QAAsB;AAAA,QACrD,KAAK,SAAU,MAAM;AACjB,cAAIA,MAAK,yBAAyB,MAAM;AACpC,YAAAe,aAAYf,MAAK,cAAc,sBAAsB,IAAI;AACzD,YAAAA,MAAK,uBAAuB;AAAA,UAChC;AAAA,QACJ;AAAA,MACJ,CAAC;AACD,aAAO,eAAeA,OAAM,uBAAuB;AAAA,QAC/C,KAAK,WAAY;AAAE,iBAAOA,MAAK;AAAA,QAAsB;AAAA,QACrD,KAAK,SAAU,MAAM;AACjB,cAAIA,MAAK,yBAAyB,MAAM;AACpC,YAAAe,aAAYf,MAAK,cAAc,sBAAsB,IAAI;AACzD,YAAAA,MAAK,uBAAuB;AAAA,UAChC;AAAA,QACJ;AAAA,MACJ,CAAC;AACD,MAAAA,MAAK,qBAAqBA,MAAK,aAAa,CAAC;AAC7C,mCAA6B;AAC7B,aAAOA,MAAK;AAAA,IAChB;AACA,aAAS,YAAY;AACjB,MAAAA,MAAK,kBAAkB,UAAU,IAAI,SAAS;AAC9C,UAAIA,MAAK,OAAO;AACZ,QAAAA,MAAK,kBAAkB,UAAU,IAAI,YAAY;AACrD,UAAIC,YAAW,gBAAgBD,MAAK,MAAM;AAC1C,MAAAA,MAAK,gBAAgBE,eAAc,OAAO,gBAAgB;AAC1D,MAAAF,MAAK,cAAc,WAAW;AAC9B,UAAI,YAAYE,eAAc,QAAQ,4BAA4B,GAAG;AACrE,UAAI,YAAY,kBAAkB,kBAAkB;AAAA,QAChD,cAAcF,MAAK,KAAK;AAAA,MAC5B,CAAC;AACD,MAAAA,MAAK,cAAc,UAAU,qBAAqB,OAAO,EAAE,CAAC;AAC5D,UAAI,cAAc,kBAAkB,oBAAoB;AAAA,QACpD,cAAcA,MAAK,KAAK;AAAA,MAC5B,CAAC;AACD,MAAAA,MAAK,gBAAgB,YAAY,qBAAqB,OAAO,EAAE,CAAC;AAChE,MAAAA,MAAK,YAAY,WAAWA,MAAK,cAAc,WAAW;AAC1D,MAAAA,MAAK,YAAY,QAAQ,IAAIA,MAAK,wBAC5BA,MAAK,sBAAsB,SAAS,IACpCA,MAAK,OAAO,YACRC,UAAS,QACT,cAAcA,UAAS,KAAK,CAAC;AACvC,MAAAD,MAAK,cAAc,QAAQ,IAAIA,MAAK,wBAC9BA,MAAK,sBAAsB,WAAW,IACtCC,UAAS,OAAO;AACtB,MAAAD,MAAK,YAAY,aAAa,QAAQA,MAAK,OAAO,cAAc,SAAS,CAAC;AAC1E,MAAAA,MAAK,cAAc,aAAa,QAAQA,MAAK,OAAO,gBAAgB,SAAS,CAAC;AAC9E,MAAAA,MAAK,YAAY,aAAa,OAAOA,MAAK,OAAO,YAAY,MAAM,GAAG;AACtE,MAAAA,MAAK,YAAY,aAAa,OAAOA,MAAK,OAAO,YAAY,OAAO,IAAI;AACxE,MAAAA,MAAK,YAAY,aAAa,aAAa,GAAG;AAC9C,MAAAA,MAAK,cAAc,aAAa,OAAO,GAAG;AAC1C,MAAAA,MAAK,cAAc,aAAa,OAAO,IAAI;AAC3C,MAAAA,MAAK,cAAc,aAAa,aAAa,GAAG;AAChD,MAAAA,MAAK,cAAc,YAAY,SAAS;AACxC,MAAAA,MAAK,cAAc,YAAY,SAAS;AACxC,MAAAA,MAAK,cAAc,YAAY,WAAW;AAC1C,UAAIA,MAAK,OAAO;AACZ,QAAAA,MAAK,cAAc,UAAU,IAAI,UAAU;AAC/C,UAAIA,MAAK,OAAO,eAAe;AAC3B,QAAAA,MAAK,cAAc,UAAU,IAAI,YAAY;AAC7C,YAAI,cAAc,kBAAkB,kBAAkB;AACtD,QAAAA,MAAK,gBAAgB,YAAY,qBAAqB,OAAO,EAAE,CAAC;AAChE,QAAAA,MAAK,cAAc,QAAQ,IAAIA,MAAK,wBAC9BA,MAAK,sBAAsB,WAAW,IACtCC,UAAS,OAAO;AACtB,QAAAD,MAAK,cAAc,aAAa,QAAQA,MAAK,cAAc,aAAa,MAAM,CAAC;AAC/E,QAAAA,MAAK,cAAc,aAAa,OAAO,GAAG;AAC1C,QAAAA,MAAK,cAAc,aAAa,OAAO,IAAI;AAC3C,QAAAA,MAAK,cAAc,aAAa,aAAa,GAAG;AAChD,QAAAA,MAAK,cAAc,YAAYE,eAAc,QAAQ,4BAA4B,GAAG,CAAC;AACrF,QAAAF,MAAK,cAAc,YAAY,WAAW;AAAA,MAC9C;AACA,UAAI,CAACA,MAAK,OAAO,WAAW;AACxB,QAAAA,MAAK,OAAOE,eAAc,QAAQ,mBAAmBF,MAAK,KAAK,KAAK,KAAKA,MAAK,wBACxEA,MAAK,YAAY,QACjBA,MAAK,OAAO,eAAe,EAAE,CAAC,CAAC;AACrC,QAAAA,MAAK,KAAK,QAAQA,MAAK,KAAK;AAC5B,QAAAA,MAAK,KAAK,WAAW;AACrB,QAAAA,MAAK,cAAc,YAAYA,MAAK,IAAI;AAAA,MAC5C;AACA,aAAOA,MAAK;AAAA,IAChB;AACA,aAAS,gBAAgB;AACrB,UAAI,CAACA,MAAK;AACN,QAAAA,MAAK,mBAAmBE,eAAc,OAAO,oBAAoB;AAAA;AAEjE,kBAAUF,MAAK,gBAAgB;AACnC,eAASP,KAAIO,MAAK,OAAO,YAAYP,QAAM;AACvC,YAAI,YAAYS,eAAc,OAAO,4BAA4B;AACjE,QAAAF,MAAK,iBAAiB,YAAY,SAAS;AAAA,MAC/C;AACA,qBAAe;AACf,aAAOA,MAAK;AAAA,IAChB;AACA,aAAS,iBAAiB;AACtB,UAAI,CAACA,MAAK,kBAAkB;AACxB;AAAA,MACJ;AACA,UAAI,iBAAiBA,MAAK,KAAK;AAC/B,UAAI,WAAW,eAAeA,MAAK,KAAK,SAAS,SAAS;AAC1D,UAAI,iBAAiB,KAAK,iBAAiB,SAAS,QAAQ;AACxD,mBAAW,eAAe,SAAS,OAAO,gBAAgB,SAAS,MAAM,GAAG,SAAS,OAAO,GAAG,cAAc,CAAC;AAAA,MAClH;AACA,eAASP,KAAIO,MAAK,OAAO,YAAYP,QAAM;AACvC,QAAAO,MAAK,iBAAiB,SAASP,EAAC,EAAE,YAAY,uDAAuD,SAAS,KAAK,yCAAyC,IAAI;AAAA,MACpK;AAAA,IACJ;AACA,aAAS,aAAa;AAClB,MAAAO,MAAK,kBAAkB,UAAU,IAAI,UAAU;AAC/C,UAAI,cAAcE,eAAc,OAAO,uBAAuB;AAC9D,kBAAY,YAAYA,eAAc,QAAQ,qBAAqBF,MAAK,KAAK,gBAAgB,CAAC;AAC9F,UAAI,cAAcE,eAAc,OAAO,iBAAiB;AACxD,kBAAY,YAAY,WAAW;AACnC,aAAO;AAAA,QACH;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,YAAY,OAAO,UAAU;AAClC,UAAI,aAAa,QAAQ;AAAE,mBAAW;AAAA,MAAM;AAC5C,UAAI,QAAQ,WAAW,QAAQ,QAAQF,MAAK;AAC5C,UAAK,QAAQ,KAAKA,MAAK,wBAAwB,QAC1C,QAAQ,KAAKA,MAAK,wBAAwB;AAC3C;AACJ,MAAAA,MAAK,gBAAgB;AACrB,UAAIA,MAAK,eAAe,KAAKA,MAAK,eAAe,IAAI;AACjD,QAAAA,MAAK,eAAeA,MAAK,eAAe,KAAK,IAAI;AACjD,QAAAA,MAAK,gBAAgBA,MAAK,eAAe,MAAM;AAC/C,qBAAa,cAAc;AAC3B,yBAAiB;AAAA,MACrB;AACA,gBAAU;AACV,mBAAa,eAAe;AAC5B,mCAA6B;AAAA,IACjC;AACA,aAAS,MAAM,oBAAoB,WAAW;AAC1C,UAAI,uBAAuB,QAAQ;AAAE,6BAAqB;AAAA,MAAM;AAChE,UAAI,cAAc,QAAQ;AAAE,oBAAY;AAAA,MAAM;AAC9C,MAAAA,MAAK,MAAM,QAAQ;AACnB,UAAIA,MAAK,aAAa;AAClB,QAAAA,MAAK,SAAS,QAAQ;AAC1B,UAAIA,MAAK,gBAAgB;AACrB,QAAAA,MAAK,YAAY,QAAQ;AAC7B,MAAAA,MAAK,gBAAgB,CAAC;AACtB,MAAAA,MAAK,wBAAwB;AAC7B,UAAI,cAAc,MAAM;AACpB,QAAAA,MAAK,cAAcA,MAAK,aAAa,YAAY;AACjD,QAAAA,MAAK,eAAeA,MAAK,aAAa,SAAS;AAAA,MACnD;AACA,UAAIA,MAAK,OAAO,eAAe,MAAM;AACjC,YAAI,KAAK,gBAAgBA,MAAK,MAAM,GAAG,QAAQ,GAAG,OAAO,UAAU,GAAG,SAAS,UAAU,GAAG;AAC5F,iBAAS,OAAO,SAAS,OAAO;AAAA,MACpC;AACA,MAAAA,MAAK,OAAO;AACZ,UAAI;AACA,qBAAa,UAAU;AAAA,IAC/B;AACA,aAAS,QAAQ;AACb,MAAAA,MAAK,SAAS;AACd,UAAI,CAACA,MAAK,UAAU;AAChB,YAAIA,MAAK,sBAAsB,QAAW;AACtC,UAAAA,MAAK,kBAAkB,UAAU,OAAO,MAAM;AAAA,QAClD;AACA,YAAIA,MAAK,WAAW,QAAW;AAC3B,UAAAA,MAAK,OAAO,UAAU,OAAO,QAAQ;AAAA,QACzC;AAAA,MACJ;AACA,mBAAa,SAAS;AAAA,IAC1B;AACA,aAASG,WAAU;AACf,UAAIH,MAAK,WAAW;AAChB,qBAAa,WAAW;AAC5B,eAASP,KAAIO,MAAK,UAAU,QAAQP,QAAM;AACtC,QAAAO,MAAK,UAAUP,EAAC,EAAE,OAAO;AAAA,MAC7B;AACA,MAAAO,MAAK,YAAY,CAAC;AAClB,UAAIA,MAAK,aAAa;AAClB,YAAIA,MAAK,YAAY;AACjB,UAAAA,MAAK,YAAY,WAAW,YAAYA,MAAK,WAAW;AAC5D,QAAAA,MAAK,cAAc;AAAA,MACvB,WACSA,MAAK,qBAAqBA,MAAK,kBAAkB,YAAY;AAClE,YAAIA,MAAK,OAAO,UAAUA,MAAK,kBAAkB,YAAY;AACzD,cAAI,UAAUA,MAAK,kBAAkB;AACrC,kBAAQ,aAAa,QAAQ,YAAY,QAAQ,SAAS;AAC1D,cAAI,QAAQ,YAAY;AACpB,mBAAO,QAAQ;AACX,sBAAQ,WAAW,aAAa,QAAQ,YAAY,OAAO;AAC/D,oBAAQ,WAAW,YAAY,OAAO;AAAA,UAC1C;AAAA,QACJ;AAEI,UAAAA,MAAK,kBAAkB,WAAW,YAAYA,MAAK,iBAAiB;AAAA,MAC5E;AACA,UAAIA,MAAK,UAAU;AACf,QAAAA,MAAK,MAAM,OAAO;AAClB,YAAIA,MAAK,SAAS;AACd,UAAAA,MAAK,SAAS,WAAW,YAAYA,MAAK,QAAQ;AACtD,eAAOA,MAAK;AAAA,MAChB;AACA,UAAIA,MAAK,OAAO;AACZ,QAAAA,MAAK,MAAM,OAAOA,MAAK,MAAM;AAC7B,QAAAA,MAAK,MAAM,UAAU,OAAO,iBAAiB;AAC7C,QAAAA,MAAK,MAAM,gBAAgB,UAAU;AAAA,MACzC;AACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ,EAAE,QAAQ,SAAUH,IAAG;AACnB,YAAI;AACA,iBAAOG,MAAKH,EAAC;AAAA,QACjB,SACOuB,IAAG;AAAA,QAAE;AAAA,MAChB,CAAC;AAAA,IACL;AACA,aAAS,eAAe,MAAM;AAC1B,aAAOpB,MAAK,kBAAkB,SAAS,IAAI;AAAA,IAC/C;AACA,aAAS,cAAcO,IAAG;AACtB,UAAIP,MAAK,UAAU,CAACA,MAAK,OAAO,QAAQ;AACpC,YAAI,gBAAgB,eAAeO,EAAC;AACpC,YAAI,oBAAoB,eAAe,aAAa;AACpD,YAAI,UAAU,kBAAkBP,MAAK,SACjC,kBAAkBA,MAAK,YACvBA,MAAK,QAAQ,SAAS,aAAa,KAClCO,GAAE,QACCA,GAAE,KAAK,YACN,CAACA,GAAE,KAAK,QAAQP,MAAK,KAAK,KACvB,CAACO,GAAE,KAAK,QAAQP,MAAK,QAAQ;AACzC,YAAI,YAAY,CAAC,WACb,CAAC,qBACD,CAAC,eAAeO,GAAE,aAAa;AACnC,YAAI,YAAY,CAACP,MAAK,OAAO,qBAAqB,KAAK,SAAU,MAAM;AACnE,iBAAO,KAAK,SAAS,aAAa;AAAA,QACtC,CAAC;AACD,YAAI,aAAa,WAAW;AACxB,cAAIA,MAAK,OAAO,YAAY;AACxB,YAAAA,MAAK,QAAQA,MAAK,OAAO,OAAO,OAAOA,MAAK,OAAO,WAC7CA,MAAK,OAAO,YACZA,MAAK,OAAO,UAAU;AAAA,UAChC;AACA,cAAIA,MAAK,kBAAkB,UACvBA,MAAK,kBAAkB,UACvBA,MAAK,gBAAgB,UACrBA,MAAK,MAAM,UAAU,MACrBA,MAAK,MAAM,UAAU,QAAW;AAChC,uBAAW;AAAA,UACf;AACA,UAAAA,MAAK,MAAM;AACX,cAAIA,MAAK,UACLA,MAAK,OAAO,SAAS,WACrBA,MAAK,cAAc,WAAW;AAC9B,YAAAA,MAAK,MAAM,KAAK;AAAA,QACxB;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,WAAW,SAAS;AACzB,UAAI,CAAC,WACAA,MAAK,OAAO,WAAW,UAAUA,MAAK,OAAO,QAAQ,YAAY,KACjEA,MAAK,OAAO,WAAW,UAAUA,MAAK,OAAO,QAAQ,YAAY;AAClE;AACJ,UAAI,aAAa,SAAS,YAAYA,MAAK,gBAAgB;AAC3D,MAAAA,MAAK,cAAc,cAAcA,MAAK;AACtC,UAAIA,MAAK,OAAO,WACZA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,YAAY,GAAG;AACxD,QAAAA,MAAK,eAAe,KAAK,IAAIA,MAAK,OAAO,QAAQ,SAAS,GAAGA,MAAK,YAAY;AAAA,MAClF,WACSA,MAAK,OAAO,WACjBA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,YAAY,GAAG;AACxD,QAAAA,MAAK,eAAe,KAAK,IAAIA,MAAK,OAAO,QAAQ,SAAS,GAAGA,MAAK,YAAY;AAAA,MAClF;AACA,UAAI,WAAW;AACX,QAAAA,MAAK,OAAO;AACZ,qBAAa,cAAc;AAC3B,yBAAiB;AAAA,MACrB;AAAA,IACJ;AACA,aAAS,UAAU,MAAM,UAAU;AAC/B,UAAI;AACJ,UAAI,aAAa,QAAQ;AAAE,mBAAW;AAAA,MAAM;AAC5C,UAAI,cAAcA,MAAK,UAAU,MAAM,QAAW,QAAQ;AAC1D,UAAKA,MAAK,OAAO,WACb,eACA,aAAa,aAAaA,MAAK,OAAO,SAAS,aAAa,SAAY,WAAW,CAACA,MAAK,cAAc,IAAI,KAC1GA,MAAK,OAAO,WACT,eACA,aAAa,aAAaA,MAAK,OAAO,SAAS,aAAa,SAAY,WAAW,CAACA,MAAK,cAAc,IAAI;AAC/G,eAAO;AACX,UAAI,CAACA,MAAK,OAAO,UAAUA,MAAK,OAAO,QAAQ,WAAW;AACtD,eAAO;AACX,UAAI,gBAAgB;AAChB,eAAO;AACX,UAAI,OAAO,CAAC,CAACA,MAAK,OAAO,QAAQ,SAAS,KAAKA,MAAK,OAAO,YAAY,QAAQ,OAAO,SAAS,KAAKA,MAAK,OAAO;AAChH,eAASP,KAAI,GAAGyB,KAAI,QAAQzB,KAAI,MAAM,QAAQA,MAAK;AAC/C,QAAAyB,KAAI,MAAMzB,EAAC;AACX,YAAI,OAAOyB,OAAM,cACbA,GAAE,WAAW;AACb,iBAAO;AAAA,iBACFA,cAAa,QAClB,gBAAgB,UAChBA,GAAE,QAAQ,MAAM,YAAY,QAAQ;AACpC,iBAAO;AAAA,iBACF,OAAOA,OAAM,UAAU;AAC5B,cAAI,SAASlB,MAAK,UAAUkB,IAAG,QAAW,IAAI;AAC9C,iBAAO,UAAU,OAAO,QAAQ,MAAM,YAAY,QAAQ,IACpD,OACA,CAAC;AAAA,QACX,WACS,OAAOA,OAAM,YAClB,gBAAgB,UAChBA,GAAE,QACFA,GAAE,MACF,YAAY,QAAQ,KAAKA,GAAE,KAAK,QAAQ,KACxC,YAAY,QAAQ,KAAKA,GAAE,GAAG,QAAQ;AACtC,iBAAO;AAAA,MACf;AACA,aAAO,CAAC;AAAA,IACZ;AACA,aAAS,SAAS,MAAM;AACpB,UAAIlB,MAAK,kBAAkB;AACvB,eAAQ,KAAK,UAAU,QAAQ,QAAQ,MAAM,MACzC,KAAK,UAAU,QAAQ,oBAAoB,MAAM,MACjDA,MAAK,cAAc,SAAS,IAAI;AACxC,aAAO;AAAA,IACX;AACA,aAAS,OAAOO,IAAG;AACf,UAAI,UAAUA,GAAE,WAAWP,MAAK;AAChC,UAAI,eAAeA,MAAK,OAAO,MAAM,QAAQ,MAAM,WAAW;AAC9D,UAAI,WACA,gBACA,EAAEO,GAAE,iBAAiB,eAAeA,GAAE,aAAa,IAAI;AACvD,QAAAP,MAAK,QAAQA,MAAK,OAAO,OAAO,MAAMO,GAAE,WAAWP,MAAK,WAClDA,MAAK,OAAO,YACZA,MAAK,OAAO,UAAU;AAAA,MAChC;AAAA,IACJ;AACA,aAAS,UAAUO,IAAG;AAClB,UAAI,cAAc,eAAeA,EAAC;AAClC,UAAI,UAAUP,MAAK,OAAO,OACpB,QAAQ,SAAS,WAAW,IAC5B,gBAAgBA,MAAK;AAC3B,UAAI,aAAaA,MAAK,OAAO;AAC7B,UAAI,eAAeA,MAAK,WAAW,CAAC,cAAc,CAAC;AACnD,UAAI,qBAAqBA,MAAK,OAAO,UAAU,WAAW,CAAC;AAC3D,UAAIO,GAAE,YAAY,MAAM,SAAS;AAC7B,YAAI,YAAY;AACZ,UAAAP,MAAK,QAAQA,MAAK,OAAO,OAAO,MAAM,gBAAgBA,MAAK,WACrDA,MAAK,OAAO,YACZA,MAAK,OAAO,UAAU;AAC5B,UAAAA,MAAK,MAAM;AACX,iBAAO,YAAY,KAAK;AAAA,QAC5B,OACK;AACD,UAAAA,MAAK,KAAK;AAAA,QACd;AAAA,MACJ,WACS,eAAe,WAAW,KAC/B,gBACA,oBAAoB;AACpB,YAAI,YAAY,CAAC,CAACA,MAAK,iBACnBA,MAAK,cAAc,SAAS,WAAW;AAC3C,gBAAQO,GAAE,SAAS;AAAA,UACf,KAAK;AACD,gBAAI,WAAW;AACX,cAAAA,GAAE,eAAe;AACjB,yBAAW;AACX,4BAAc;AAAA,YAClB;AAEI,yBAAWA,EAAC;AAChB;AAAA,UACJ,KAAK;AACD,YAAAA,GAAE,eAAe;AACjB,0BAAc;AACd;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,WAAW,CAACP,MAAK,OAAO,YAAY;AACpC,cAAAO,GAAE,eAAe;AACjB,cAAAP,MAAK,MAAM;AAAA,YACf;AACA;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,CAAC,aAAa,CAAC,SAAS;AACxB,cAAAO,GAAE,eAAe;AACjB,kBAAI,gBAAgB,wBAAwB;AAC5C,kBAAIP,MAAK,kBAAkB,WACtB,eAAe,SACX,iBAAiB,SAAS,aAAa,IAAK;AACjD,oBAAI,UAAUO,GAAE,YAAY,KAAK,IAAI;AACrC,oBAAI,CAACA,GAAE;AACH,6BAAW,QAAW,OAAO;AAAA,qBAC5B;AACD,kBAAAA,GAAE,gBAAgB;AAClB,8BAAY,OAAO;AACnB,6BAAW,qBAAqB,CAAC,GAAG,CAAC;AAAA,gBACzC;AAAA,cACJ;AAAA,YACJ,WACSP,MAAK;AACV,cAAAA,MAAK,YAAY,MAAM;AAC3B;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,YAAAO,GAAE,eAAe;AACjB,gBAAI,QAAQA,GAAE,YAAY,KAAK,IAAI;AACnC,gBAAKP,MAAK,iBACN,YAAY,OAAO,UACnB,gBAAgBA,MAAK,SACrB,gBAAgBA,MAAK,UAAU;AAC/B,kBAAIO,GAAE,SAAS;AACX,gBAAAA,GAAE,gBAAgB;AAClB,2BAAWP,MAAK,cAAc,KAAK;AACnC,2BAAW,qBAAqB,CAAC,GAAG,CAAC;AAAA,cACzC,WACS,CAAC;AACN,2BAAW,QAAW,QAAQ,CAAC;AAAA,YACvC,WACS,gBAAgBA,MAAK,oBAAoB;AAC9C,yBAAWA,MAAK,cAAc,KAAK;AAAA,YACvC,WACSA,MAAK,OAAO,YAAY;AAC7B,kBAAI,CAAC,aAAaA,MAAK;AACnB,gBAAAA,MAAK,YAAY,MAAM;AAC3B,yBAAWO,EAAC;AACZ,cAAAP,MAAK,iBAAiB;AAAA,YAC1B;AACA;AAAA,UACJ,KAAK;AACD,gBAAI,WAAW;AACX,kBAAI,QAAQ;AAAA,gBACRA,MAAK;AAAA,gBACLA,MAAK;AAAA,gBACLA,MAAK;AAAA,gBACLA,MAAK;AAAA,cACT,EACK,OAAOA,MAAK,cAAc,EAC1B,OAAO,SAAUqB,IAAG;AAAE,uBAAOA;AAAA,cAAG,CAAC;AACtC,kBAAI5B,KAAI,MAAM,QAAQ,WAAW;AACjC,kBAAIA,OAAM,IAAI;AACV,oBAAI,SAAS,MAAMA,MAAKc,GAAE,WAAW,KAAK,EAAE;AAC5C,gBAAAA,GAAE,eAAe;AACjB,iBAAC,UAAUP,MAAK,QAAQ,MAAM;AAAA,cAClC;AAAA,YACJ,WACS,CAACA,MAAK,OAAO,cAClBA,MAAK,iBACLA,MAAK,cAAc,SAAS,WAAW,KACvCO,GAAE,UAAU;AACZ,cAAAA,GAAE,eAAe;AACjB,cAAAP,MAAK,OAAO,MAAM;AAAA,YACtB;AACA;AAAA,UACJ;AACI;AAAA,QACR;AAAA,MACJ;AACA,UAAIA,MAAK,SAAS,UAAa,gBAAgBA,MAAK,MAAM;AACtD,gBAAQO,GAAE,KAAK;AAAA,UACX,KAAKP,MAAK,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC;AAAA,UAC/B,KAAKA,MAAK,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY;AACzC,YAAAA,MAAK,KAAK,cAAcA,MAAK,KAAK,KAAK,CAAC;AACxC,+BAAmB;AACnB,wBAAY;AACZ;AAAA,UACJ,KAAKA,MAAK,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC;AAAA,UAC/B,KAAKA,MAAK,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY;AACzC,YAAAA,MAAK,KAAK,cAAcA,MAAK,KAAK,KAAK,CAAC;AACxC,+BAAmB;AACnB,wBAAY;AACZ;AAAA,QACR;AAAA,MACJ;AACA,UAAI,WAAW,eAAe,WAAW,GAAG;AACxC,qBAAa,aAAaO,EAAC;AAAA,MAC/B;AAAA,IACJ;AACA,aAAS,YAAY,MAAM,WAAW;AAClC,UAAI,cAAc,QAAQ;AAAE,oBAAY;AAAA,MAAiB;AACzD,UAAIP,MAAK,cAAc,WAAW,KAC7B,SACI,CAAC,KAAK,UAAU,SAAS,SAAS,KAC/B,KAAK,UAAU,SAAS,oBAAoB;AACpD;AACJ,UAAI,YAAY,OACV,KAAK,QAAQ,QAAQ,IACrBA,MAAK,KAAK,kBAAkB,QAAQ,QAAQ,GAAG,cAAcA,MAAK,UAAUA,MAAK,cAAc,CAAC,GAAG,QAAW,IAAI,EAAE,QAAQ,GAAG,iBAAiB,KAAK,IAAI,WAAWA,MAAK,cAAc,CAAC,EAAE,QAAQ,CAAC,GAAG,eAAe,KAAK,IAAI,WAAWA,MAAK,cAAc,CAAC,EAAE,QAAQ,CAAC;AAC9Q,UAAI,mBAAmB;AACvB,UAAI,WAAW,GAAG,WAAW;AAC7B,eAAST,KAAI,gBAAgBA,KAAI,cAAcA,MAAK,SAAS,KAAK;AAC9D,YAAI,CAAC,UAAU,IAAI,KAAKA,EAAC,GAAG,IAAI,GAAG;AAC/B,6BACI,oBAAqBA,KAAI,kBAAkBA,KAAI;AACnD,cAAIA,KAAI,gBAAgB,CAAC,YAAYA,KAAI;AACrC,uBAAWA;AAAA,mBACNA,KAAI,gBAAgB,CAAC,YAAYA,KAAI;AAC1C,uBAAWA;AAAA,QACnB;AAAA,MACJ;AACA,UAAI,iBAAiB,MAAM,KAAKS,MAAK,WAAW,iBAAiB,oBAAoBA,MAAK,OAAO,aAAa,UAAU,SAAS,CAAC;AAClI,qBAAe,QAAQ,SAAU,SAAS;AACtC,YAAI,OAAO,QAAQ;AACnB,YAAI,YAAY,KAAK,QAAQ;AAC7B,YAAI,aAAc,WAAW,KAAK,YAAY,YACzC,WAAW,KAAK,YAAY;AACjC,YAAI,YAAY;AACZ,kBAAQ,UAAU,IAAI,YAAY;AAClC,WAAC,WAAW,cAAc,UAAU,EAAE,QAAQ,SAAUiB,IAAG;AACvD,oBAAQ,UAAU,OAAOA,EAAC;AAAA,UAC9B,CAAC;AACD;AAAA,QACJ,WACS,oBAAoB,CAAC;AAC1B;AACJ,SAAC,cAAc,WAAW,YAAY,YAAY,EAAE,QAAQ,SAAUA,IAAG;AACrE,kBAAQ,UAAU,OAAOA,EAAC;AAAA,QAC9B,CAAC;AACD,YAAI,SAAS,QAAW;AACpB,eAAK,UAAU,IAAI,aAAajB,MAAK,cAAc,CAAC,EAAE,QAAQ,IACxD,eACA,UAAU;AAChB,cAAI,cAAc,aAAa,cAAc;AACzC,oBAAQ,UAAU,IAAI,YAAY;AAAA,mBAC7B,cAAc,aAAa,cAAc;AAC9C,oBAAQ,UAAU,IAAI,UAAU;AACpC,cAAI,aAAa,aACZ,aAAa,KAAK,aAAa,aAChC,UAAU,WAAW,aAAa,SAAS;AAC3C,oBAAQ,UAAU,IAAI,SAAS;AAAA,QACvC;AAAA,MACJ,CAAC;AAAA,IACL;AACA,aAASa,YAAW;AAChB,UAAIb,MAAK,UAAU,CAACA,MAAK,OAAO,UAAU,CAACA,MAAK,OAAO;AACnD,yBAAiB;AAAA,IACzB;AACA,aAAS,KAAKO,IAAG,iBAAiB;AAC9B,UAAI,oBAAoB,QAAQ;AAAE,0BAAkBP,MAAK;AAAA,MAAkB;AAC3E,UAAIA,MAAK,aAAa,MAAM;AACxB,YAAIO,IAAG;AACH,UAAAA,GAAE,eAAe;AACjB,cAAI,cAAc,eAAeA,EAAC;AAClC,cAAI,aAAa;AACb,wBAAY,KAAK;AAAA,UACrB;AAAA,QACJ;AACA,YAAIP,MAAK,gBAAgB,QAAW;AAChC,UAAAA,MAAK,YAAY,MAAM;AACvB,UAAAA,MAAK,YAAY,MAAM;AAAA,QAC3B;AACA,qBAAa,QAAQ;AACrB;AAAA,MACJ,WACSA,MAAK,OAAO,YAAYA,MAAK,OAAO,QAAQ;AACjD;AAAA,MACJ;AACA,UAAI,UAAUA,MAAK;AACnB,MAAAA,MAAK,SAAS;AACd,UAAI,CAAC,SAAS;AACV,QAAAA,MAAK,kBAAkB,UAAU,IAAI,MAAM;AAC3C,QAAAA,MAAK,OAAO,UAAU,IAAI,QAAQ;AAClC,qBAAa,QAAQ;AACrB,yBAAiB,eAAe;AAAA,MACpC;AACA,UAAIA,MAAK,OAAO,eAAe,QAAQA,MAAK,OAAO,eAAe,MAAM;AACpE,YAAIA,MAAK,OAAO,eAAe,UAC1BO,OAAM,UACH,CAACP,MAAK,cAAc,SAASO,GAAE,aAAa,IAAI;AACpD,qBAAW,WAAY;AAAE,mBAAOP,MAAK,YAAY,OAAO;AAAA,UAAG,GAAG,EAAE;AAAA,QACpE;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,iBAAiB,MAAM;AAC5B,aAAO,SAAU,MAAM;AACnB,YAAI,UAAWA,MAAK,OAAO,MAAM,OAAO,MAAM,IAAIA,MAAK,UAAU,MAAMA,MAAK,OAAO,UAAU;AAC7F,YAAI,iBAAiBA,MAAK,OAAO,OAAO,SAAS,QAAQ,QAAQ,SAAS,MAAM;AAChF,YAAI,YAAY,QAAW;AACvB,UAAAA,MAAK,SAAS,QAAQ,mBAAmB,gBAAgB,IACrD,QAAQ,SAAS,IAAI,KACjB,QAAQ,WAAW,IAAI,KACvB,QAAQ,WAAW,IAAI;AAAA,QACnC;AACA,YAAIA,MAAK,eAAe;AACpB,UAAAA,MAAK,gBAAgBA,MAAK,cAAc,OAAO,SAAUkB,IAAG;AAAE,mBAAO,UAAUA,EAAC;AAAA,UAAG,CAAC;AACpF,cAAI,CAAClB,MAAK,cAAc,UAAU,SAAS;AACvC,6BAAiB,OAAO;AAC5B,sBAAY;AAAA,QAChB;AACA,YAAIA,MAAK,eAAe;AACpB,iBAAO;AACP,cAAI,YAAY;AACZ,YAAAA,MAAK,mBAAmB,IAAI,IAAI,QAAQ,YAAY,EAAE,SAAS;AAAA;AAE/D,YAAAA,MAAK,mBAAmB,gBAAgB,IAAI;AAChD,UAAAA,MAAK,mBAAmB,WACpB,CAAC,CAAC,kBACE,YAAY,UACZ,eAAe,YAAY,MAAM,QAAQ,YAAY;AAAA,QACjE;AAAA,MACJ;AAAA,IACJ;AACA,aAAS,cAAc;AACnB,UAAI,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,UAAI,aAAa,SAAS,SAAS,CAAC,GAAG,KAAK,MAAM,KAAK,UAAU,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc;AACzG,UAAIsB,WAAU,CAAC;AACf,MAAAtB,MAAK,OAAO,YAAY,WAAW;AACnC,MAAAA,MAAK,OAAO,aAAa,WAAW;AACpC,aAAO,eAAeA,MAAK,QAAQ,UAAU;AAAA,QACzC,KAAK,WAAY;AAAE,iBAAOA,MAAK,OAAO;AAAA,QAAS;AAAA,QAC/C,KAAK,SAAU,OAAO;AAClB,UAAAA,MAAK,OAAO,UAAU,eAAe,KAAK;AAAA,QAC9C;AAAA,MACJ,CAAC;AACD,aAAO,eAAeA,MAAK,QAAQ,WAAW;AAAA,QAC1C,KAAK,WAAY;AAAE,iBAAOA,MAAK,OAAO;AAAA,QAAU;AAAA,QAChD,KAAK,SAAU,OAAO;AAClB,UAAAA,MAAK,OAAO,WAAW,eAAe,KAAK;AAAA,QAC/C;AAAA,MACJ,CAAC;AACD,UAAI,WAAW,WAAW,SAAS;AACnC,UAAI,CAAC,WAAW,eAAe,WAAW,cAAc,WAAW;AAC/D,YAAI,oBAAoB,UAAU,cAAc,cAAcC,UAAe;AAC7E,QAAAqB,SAAQ,aACJ,WAAW,cAAc,WACnB,SAAS,WAAW,gBAAgB,OAAO,MAC3C,oBAAoB,UAAU,WAAW,gBAAgB,OAAO;AAAA,MAC9E;AACA,UAAI,WAAW,aACV,WAAW,cAAc,aAC1B,CAAC,WAAW,WAAW;AACvB,YAAI,mBAAmB,UAAU,cAAc,aAAarB,UAAe;AAC3E,QAAAqB,SAAQ,YACJ,WAAW,cAAc,WACnB,SAAS,WAAW,gBAAgB,SAAS,QAC7C,oBAAoB,UAAU,WAAW,gBAAgB,OAAO,MAAM;AAAA,MACpF;AACA,aAAO,eAAetB,MAAK,QAAQ,WAAW;AAAA,QAC1C,KAAK,WAAY;AAAE,iBAAOA,MAAK,OAAO;AAAA,QAAU;AAAA,QAChD,KAAK,iBAAiB,KAAK;AAAA,MAC/B,CAAC;AACD,aAAO,eAAeA,MAAK,QAAQ,WAAW;AAAA,QAC1C,KAAK,WAAY;AAAE,iBAAOA,MAAK,OAAO;AAAA,QAAU;AAAA,QAChD,KAAK,iBAAiB,KAAK;AAAA,MAC/B,CAAC;AACD,UAAI,mBAAmB,SAAU,MAAM;AAAE,eAAO,SAAU,KAAK;AAC3D,UAAAA,MAAK,OAAO,SAAS,QAAQ,aAAa,UAAU,IAAIA,MAAK,UAAU,KAAK,OAAO;AAAA,QACvF;AAAA,MAAG;AACH,aAAO,eAAeA,MAAK,QAAQ,WAAW;AAAA,QAC1C,KAAK,WAAY;AAAE,iBAAOA,MAAK,OAAO;AAAA,QAAU;AAAA,QAChD,KAAK,iBAAiB,KAAK;AAAA,MAC/B,CAAC;AACD,aAAO,eAAeA,MAAK,QAAQ,WAAW;AAAA,QAC1C,KAAK,WAAY;AAAE,iBAAOA,MAAK,OAAO;AAAA,QAAU;AAAA,QAChD,KAAK,iBAAiB,KAAK;AAAA,MAC/B,CAAC;AACD,UAAI,WAAW,SAAS,QAAQ;AAC5B,QAAAA,MAAK,OAAO,aAAa;AACzB,QAAAA,MAAK,OAAO,aAAa;AAAA,MAC7B;AACA,aAAO,OAAOA,MAAK,QAAQsB,UAAS,UAAU;AAC9C,eAAS7B,KAAI,GAAGA,KAAI,SAAS,QAAQA;AACjC,QAAAO,MAAK,OAAO,SAASP,EAAC,CAAC,IACnBO,MAAK,OAAO,SAASP,EAAC,CAAC,MAAM,QACzBO,MAAK,OAAO,SAASP,EAAC,CAAC,MAAM;AACzC,YAAM,OAAO,SAAU,MAAM;AAAE,eAAOO,MAAK,OAAO,IAAI,MAAM;AAAA,MAAW,CAAC,EAAE,QAAQ,SAAU,MAAM;AAC9F,QAAAA,MAAK,OAAO,IAAI,IAAI,SAASA,MAAK,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,cAAc;AAAA,MAC5E,CAAC;AACD,MAAAA,MAAK,WACD,CAACA,MAAK,OAAO,iBACT,CAACA,MAAK,OAAO,UACbA,MAAK,OAAO,SAAS,YACrB,CAACA,MAAK,OAAO,QAAQ,UACrB,CAACA,MAAK,OAAO,UACb,CAACA,MAAK,OAAO,eACb,iEAAiE,KAAK,UAAU,SAAS;AACjG,eAASP,KAAI,GAAGA,KAAIO,MAAK,OAAO,QAAQ,QAAQP,MAAK;AACjD,YAAI,aAAaO,MAAK,OAAO,QAAQP,EAAC,EAAEO,KAAI,KAAK,CAAC;AAClD,iBAAS,OAAO,YAAY;AACxB,cAAI,MAAM,QAAQ,GAAG,IAAI,IAAI;AACzB,YAAAA,MAAK,OAAO,GAAG,IAAI,SAAS,WAAW,GAAG,CAAC,EACtC,IAAI,cAAc,EAClB,OAAOA,MAAK,OAAO,GAAG,CAAC;AAAA,UAChC,WACS,OAAO,WAAW,GAAG,MAAM;AAChC,YAAAA,MAAK,OAAO,GAAG,IAAI,WAAW,GAAG;AAAA,QACzC;AAAA,MACJ;AACA,UAAI,CAAC,WAAW,eAAe;AAC3B,QAAAA,MAAK,OAAO,gBACR,aAAa,EAAE,YAAY,MAAMA,MAAK,OAAO;AAAA,MACrD;AACA,mBAAa,eAAe;AAAA,IAChC;AACA,aAAS,eAAe;AACpB,aAAOA,MAAK,OAAO,OACb,QAAQ,cAAc,cAAc,IACpC;AAAA,IACV;AACA,aAAS,cAAc;AACnB,UAAI,OAAOA,MAAK,OAAO,WAAW,YAC9B,OAAO,UAAU,MAAMA,MAAK,OAAO,MAAM,MAAM;AAC/C,QAAAA,MAAK,OAAO,aAAa,IAAI,MAAM,+BAA+BA,MAAK,OAAO,MAAM,CAAC;AACzF,MAAAA,MAAK,OAAO,SAAS,SAAS,CAAC,GAAG,UAAU,MAAM,OAAO,GAAI,OAAOA,MAAK,OAAO,WAAW,WACrFA,MAAK,OAAO,SACZA,MAAK,OAAO,WAAW,YACnB,UAAU,MAAMA,MAAK,OAAO,MAAM,IAClC,MAAU;AACpB,iBAAW,IAAI,MAAMA,MAAK,KAAK,SAAS,UAAU,KAAK,GAAG,IAAI;AAC9D,iBAAW,IAAI,MAAMA,MAAK,KAAK,SAAS,SAAS,KAAK,GAAG,IAAI;AAC7D,iBAAW,IAAI,MAAMA,MAAK,KAAK,OAAO,UAAU,KAAK,GAAG,IAAI;AAC5D,iBAAW,IAAI,MAAMA,MAAK,KAAK,OAAO,SAAS,KAAK,GAAG,IAAI;AAC3D,iBAAW,IAAI,MAAMA,MAAK,KAAK,KAAK,CAAC,IAAI,MAAMA,MAAK,KAAK,KAAK,CAAC,IAAI,MAAMA,MAAK,KAAK,KAAK,CAAC,EAAE,YAAY,IAAI,MAAMA,MAAK,KAAK,KAAK,CAAC,EAAE,YAAY,IAAI;AACnJ,UAAI,aAAa,SAAS,SAAS,CAAC,GAAG,cAAc,GAAG,KAAK,MAAM,KAAK,UAAU,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC;AACzG,UAAI,WAAW,cAAc,UACzB,UAAU,cAAc,cAAc,QAAW;AACjD,QAAAA,MAAK,OAAO,YAAYA,MAAK,KAAK;AAAA,MACtC;AACA,MAAAA,MAAK,aAAa,oBAAoBA,KAAI;AAC1C,MAAAA,MAAK,YAAY,iBAAiB,EAAE,QAAQA,MAAK,QAAQ,MAAMA,MAAK,KAAK,CAAC;AAAA,IAC9E;AACA,aAAS,iBAAiB,uBAAuB;AAC7C,UAAI,OAAOA,MAAK,OAAO,aAAa,YAAY;AAC5C,eAAO,KAAKA,MAAK,OAAO,SAASA,OAAM,qBAAqB;AAAA,MAChE;AACA,UAAIA,MAAK,sBAAsB;AAC3B;AACJ,mBAAa,uBAAuB;AACpC,UAAI,kBAAkB,yBAAyBA,MAAK;AACpD,UAAI,iBAAiB,MAAM,UAAU,OAAO,KAAKA,MAAK,kBAAkB,UAAW,SAAU,KAAK,OAAO;AAAE,eAAO,MAAM,MAAM;AAAA,MAAc,GAAI,CAAC,GAAG,gBAAgBA,MAAK,kBAAkB,aAAa,YAAYA,MAAK,OAAO,SAAS,MAAM,GAAG,GAAG,oBAAoB,UAAU,CAAC,GAAG,sBAAsB,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI,MAAM,cAAc,gBAAgB,sBAAsB,GAAG,qBAAqB,OAAO,cAAc,YAAY,QAAQ,YAAY,sBAAsB,WAC3e,sBAAsB,WACnB,qBAAqB,kBACrB,YAAY,MAAM;AAC1B,UAAI,MAAM,OAAO,cACb,YAAY,OACX,CAAC,YAAY,gBAAgB,eAAe,IAAI,CAAC,iBAAiB;AACvE,MAAAe,aAAYf,MAAK,mBAAmB,YAAY,CAAC,SAAS;AAC1D,MAAAe,aAAYf,MAAK,mBAAmB,eAAe,SAAS;AAC5D,UAAIA,MAAK,OAAO;AACZ;AACJ,UAAI,OAAO,OAAO,cAAc,YAAY;AAC5C,UAAI,WAAW;AACf,UAAI,UAAU;AACd,UAAI,wBAAwB,UAAU;AAClC,iBAAS,gBAAgB,YAAY,SAAS;AAC9C,mBAAW;AAAA,MACf,WACS,wBAAwB,SAAS;AACtC,gBAAQ,gBAAgB,YAAY;AACpC,kBAAU;AAAA,MACd;AACA,MAAAe,aAAYf,MAAK,mBAAmB,aAAa,CAAC,YAAY,CAAC,OAAO;AACtE,MAAAe,aAAYf,MAAK,mBAAmB,eAAe,QAAQ;AAC3D,MAAAe,aAAYf,MAAK,mBAAmB,cAAc,OAAO;AACzD,UAAI,QAAQ,OAAO,SAAS,KAAK,eAC5B,OAAO,cAAc,YAAY;AACtC,UAAI,YAAY,OAAO,gBAAgB,OAAO,SAAS,KAAK;AAC5D,UAAI,aAAa,QAAQ,gBAAgB,OAAO,SAAS,KAAK;AAC9D,MAAAe,aAAYf,MAAK,mBAAmB,aAAa,SAAS;AAC1D,UAAIA,MAAK,OAAO;AACZ;AACJ,MAAAA,MAAK,kBAAkB,MAAM,MAAM,MAAM;AACzC,UAAI,CAAC,WAAW;AACZ,QAAAA,MAAK,kBAAkB,MAAM,OAAO,OAAO;AAC3C,QAAAA,MAAK,kBAAkB,MAAM,QAAQ;AAAA,MACzC,WACS,CAAC,YAAY;AAClB,QAAAA,MAAK,kBAAkB,MAAM,OAAO;AACpC,QAAAA,MAAK,kBAAkB,MAAM,QAAQ,QAAQ;AAAA,MACjD,OACK;AACD,YAAI,MAAM,sBAAsB;AAChC,YAAI,QAAQ;AACR;AACJ,YAAI,YAAY,OAAO,SAAS,KAAK;AACrC,YAAI,aAAa,KAAK,IAAI,GAAG,YAAY,IAAI,gBAAgB,CAAC;AAC9D,YAAI,eAAe;AACnB,YAAI,cAAc;AAClB,YAAI,cAAc,IAAI,SAAS;AAC/B,YAAI,cAAc,WAAW,YAAY,OAAO;AAChD,QAAAe,aAAYf,MAAK,mBAAmB,aAAa,KAAK;AACtD,QAAAe,aAAYf,MAAK,mBAAmB,cAAc,IAAI;AACtD,YAAI,WAAW,eAAe,MAAM,cAAc,aAAa,WAAW;AAC1E,QAAAA,MAAK,kBAAkB,MAAM,OAAO,aAAa;AACjD,QAAAA,MAAK,kBAAkB,MAAM,QAAQ;AAAA,MACzC;AAAA,IACJ;AACA,aAAS,wBAAwB;AAC7B,UAAI,gBAAgB;AACpB,eAASP,KAAI,GAAGA,KAAI,SAAS,YAAY,QAAQA,MAAK;AAClD,YAAI,QAAQ,SAAS,YAAYA,EAAC;AAClC,YAAI,CAAC,MAAM;AACP;AACJ,YAAI;AACA,gBAAM;AAAA,QACV,SACO,KAAK;AACR;AAAA,QACJ;AACA,wBAAgB;AAChB;AAAA,MACJ;AACA,aAAO,iBAAiB,OAAO,gBAAgB,iBAAiB;AAAA,IACpE;AACA,aAAS,mBAAmB;AACxB,UAAI,QAAQ,SAAS,cAAc,OAAO;AAC1C,eAAS,KAAK,YAAY,KAAK;AAC/B,aAAO,MAAM;AAAA,IACjB;AACA,aAAS,SAAS;AACd,UAAIO,MAAK,OAAO,cAAcA,MAAK;AAC/B;AACJ,uBAAiB;AACjB,mCAA6B;AAC7B,gBAAU;AAAA,IACd;AACA,aAAS,gBAAgB;AACrB,MAAAA,MAAK,OAAO,MAAM;AAClB,UAAI,OAAO,UAAU,UAAU,QAAQ,MAAM,MAAM,MAC/C,UAAU,qBAAqB,QAAW;AAC1C,mBAAWA,MAAK,OAAO,CAAC;AAAA,MAC5B,OACK;AACD,QAAAA,MAAK,MAAM;AAAA,MACf;AAAA,IACJ;AACA,aAAS,WAAWO,IAAG;AACnB,MAAAA,GAAE,eAAe;AACjB,MAAAA,GAAE,gBAAgB;AAClB,UAAI,eAAe,SAAU,KAAK;AAC9B,eAAO,IAAI,aACP,IAAI,UAAU,SAAS,eAAe,KACtC,CAAC,IAAI,UAAU,SAAS,oBAAoB,KAC5C,CAAC,IAAI,UAAU,SAAS,YAAY;AAAA,MAC5C;AACA,UAAIhB,KAAI,WAAW,eAAegB,EAAC,GAAG,YAAY;AAClD,UAAIhB,OAAM;AACN;AACJ,UAAI,SAASA;AACb,UAAI,eAAgBS,MAAK,wBAAwB,IAAI,KAAK,OAAO,QAAQ,QAAQ,CAAC;AAClF,UAAI,qBAAqB,aAAa,SAAS,IAAIA,MAAK,gBACpD,aAAa,SAAS,IAClBA,MAAK,eAAeA,MAAK,OAAO,aAAa,MACjDA,MAAK,OAAO,SAAS;AACzB,MAAAA,MAAK,mBAAmB;AACxB,UAAIA,MAAK,OAAO,SAAS;AACrB,QAAAA,MAAK,gBAAgB,CAAC,YAAY;AAAA,eAC7BA,MAAK,OAAO,SAAS,YAAY;AACtC,YAAI,gBAAgB,eAAe,YAAY;AAC/C,YAAI;AACA,UAAAA,MAAK,cAAc,OAAO,SAAS,aAAa,GAAG,CAAC;AAAA;AAEpD,UAAAA,MAAK,cAAc,KAAK,YAAY;AAAA,MAC5C,WACSA,MAAK,OAAO,SAAS,SAAS;AACnC,YAAIA,MAAK,cAAc,WAAW,GAAG;AACjC,UAAAA,MAAK,MAAM,OAAO,KAAK;AAAA,QAC3B;AACA,QAAAA,MAAK,wBAAwB;AAC7B,QAAAA,MAAK,cAAc,KAAK,YAAY;AACpC,YAAI,aAAa,cAAcA,MAAK,cAAc,CAAC,GAAG,IAAI,MAAM;AAC5D,UAAAA,MAAK,cAAc,KAAK,SAAUF,IAAGyB,IAAG;AAAE,mBAAOzB,GAAE,QAAQ,IAAIyB,GAAE,QAAQ;AAAA,UAAG,CAAC;AAAA,MACrF;AACA,yBAAmB;AACnB,UAAI,mBAAmB;AACnB,YAAI,YAAYvB,MAAK,gBAAgB,aAAa,YAAY;AAC9D,QAAAA,MAAK,cAAc,aAAa,YAAY;AAC5C,QAAAA,MAAK,eAAe,aAAa,SAAS;AAC1C,YAAI,WAAW;AACX,uBAAa,cAAc;AAC3B,2BAAiB;AAAA,QACrB;AACA,qBAAa,eAAe;AAAA,MAChC;AACA,mCAA6B;AAC7B,gBAAU;AACV,kBAAY;AACZ,UAAI,CAAC,qBACDA,MAAK,OAAO,SAAS,WACrBA,MAAK,OAAO,eAAe;AAC3B,uBAAe,MAAM;AAAA,eAChBA,MAAK,qBAAqB,UAC/BA,MAAK,gBAAgB,QAAW;AAChC,QAAAA,MAAK,oBAAoBA,MAAK,iBAAiB,MAAM;AAAA,MACzD;AACA,UAAIA,MAAK,gBAAgB;AACrB,QAAAA,MAAK,gBAAgB,UAAaA,MAAK,YAAY,MAAM;AAC7D,UAAIA,MAAK,OAAO,eAAe;AAC3B,YAAI,SAASA,MAAK,OAAO,SAAS,YAAY,CAACA,MAAK,OAAO;AAC3D,YAAI,QAAQA,MAAK,OAAO,SAAS,WAC7BA,MAAK,cAAc,WAAW,KAC9B,CAACA,MAAK,OAAO;AACjB,YAAI,UAAU,OAAO;AACjB,wBAAc;AAAA,QAClB;AAAA,MACJ;AACA,oBAAc;AAAA,IAClB;AACA,QAAI,YAAY;AAAA,MACZ,QAAQ,CAAC,aAAa,cAAc;AAAA,MACpC,YAAY,CAAC,aAAa,kBAAkB,aAAa;AAAA,MACzD,SAAS,CAAC,UAAU;AAAA,MACpB,SAAS,CAAC,UAAU;AAAA,MACpB,iBAAiB,CAAC,qBAAqB;AAAA,MACvC,YAAY;AAAA,QACR,WAAY;AACR,cAAIA,MAAK,OAAO,eAAe,MAAM;AACjC,iBAAKA,MAAK,QAAQ,SAASA,MAAK,IAAI;AACpC,iBAAKA,MAAK,QAAQ,SAASA,MAAK,IAAI;AAAA,UACxC,OACK;AACD,YAAAA,MAAK,OAAO,oBAAoB,SAASA,MAAK,IAAI;AAClD,YAAAA,MAAK,OAAO,oBAAoB,SAASA,MAAK,IAAI;AAAA,UACtD;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,aAASI,KAAIoB,SAAQ,OAAO;AACxB,UAAIA,YAAW,QAAQ,OAAOA,YAAW,UAAU;AAC/C,eAAO,OAAOxB,MAAK,QAAQwB,OAAM;AACjC,iBAAS,OAAOA,SAAQ;AACpB,cAAI,UAAU,GAAG,MAAM;AACnB,sBAAU,GAAG,EAAE,QAAQ,SAAUH,IAAG;AAAE,qBAAOA,GAAE;AAAA,YAAG,CAAC;AAAA,QAC3D;AAAA,MACJ,OACK;AACD,QAAArB,MAAK,OAAOwB,OAAM,IAAI;AACtB,YAAI,UAAUA,OAAM,MAAM;AACtB,oBAAUA,OAAM,EAAE,QAAQ,SAAUH,IAAG;AAAE,mBAAOA,GAAE;AAAA,UAAG,CAAC;AAAA,iBACjD,MAAM,QAAQG,OAAM,IAAI;AAC7B,UAAAxB,MAAK,OAAOwB,OAAM,IAAI,SAAS,KAAK;AAAA,MAC5C;AACA,MAAAxB,MAAK,OAAO;AACZ,kBAAY,IAAI;AAAA,IACpB;AACA,aAAS,gBAAgB,WAAWyB,SAAQ;AACxC,UAAI,QAAQ,CAAC;AACb,UAAI,qBAAqB;AACrB,gBAAQ,UAAU,IAAI,SAAUP,IAAG;AAAE,iBAAOlB,MAAK,UAAUkB,IAAGO,OAAM;AAAA,QAAG,CAAC;AAAA,eACnE,qBAAqB,QAAQ,OAAO,cAAc;AACvD,gBAAQ,CAACzB,MAAK,UAAU,WAAWyB,OAAM,CAAC;AAAA,eACrC,OAAO,cAAc,UAAU;AACpC,gBAAQzB,MAAK,OAAO,MAAM;AAAA,UACtB,KAAK;AAAA,UACL,KAAK;AACD,oBAAQ,CAACA,MAAK,UAAU,WAAWyB,OAAM,CAAC;AAC1C;AAAA,UACJ,KAAK;AACD,oBAAQ,UACH,MAAMzB,MAAK,OAAO,WAAW,EAC7B,IAAI,SAAU,MAAM;AAAE,qBAAOA,MAAK,UAAU,MAAMyB,OAAM;AAAA,YAAG,CAAC;AACjE;AAAA,UACJ,KAAK;AACD,oBAAQ,UACH,MAAMzB,MAAK,KAAK,cAAc,EAC9B,IAAI,SAAU,MAAM;AAAE,qBAAOA,MAAK,UAAU,MAAMyB,OAAM;AAAA,YAAG,CAAC;AACjE;AAAA,UACJ;AACI;AAAA,QACR;AAAA,MACJ;AAEI,QAAAzB,MAAK,OAAO,aAAa,IAAI,MAAM,4BAA4B,KAAK,UAAU,SAAS,CAAC,CAAC;AAC7F,MAAAA,MAAK,gBAAiBA,MAAK,OAAO,sBAC5B,QACA,MAAM,OAAO,SAAUkB,IAAG;AAAE,eAAOA,cAAa,QAAQ,UAAUA,IAAG,KAAK;AAAA,MAAG,CAAC;AACpF,UAAIlB,MAAK,OAAO,SAAS;AACrB,QAAAA,MAAK,cAAc,KAAK,SAAUF,IAAGyB,IAAG;AAAE,iBAAOzB,GAAE,QAAQ,IAAIyB,GAAE,QAAQ;AAAA,QAAG,CAAC;AAAA,IACrF;AACA,aAAS,QAAQ,MAAMT,gBAAeW,SAAQ;AAC1C,UAAIX,mBAAkB,QAAQ;AAAE,QAAAA,iBAAgB;AAAA,MAAO;AACvD,UAAIW,YAAW,QAAQ;AAAE,QAAAA,UAASzB,MAAK,OAAO;AAAA,MAAY;AAC1D,UAAK,SAAS,KAAK,CAAC,QAAU,gBAAgB,SAAS,KAAK,WAAW;AACnE,eAAOA,MAAK,MAAMc,cAAa;AACnC,sBAAgB,MAAMW,OAAM;AAC5B,MAAAzB,MAAK,wBACDA,MAAK,cAAcA,MAAK,cAAc,SAAS,CAAC;AACpD,MAAAA,MAAK,OAAO;AACZ,iBAAW,QAAWc,cAAa;AACnC,uBAAiB;AACjB,UAAId,MAAK,cAAc,WAAW,GAAG;AACjC,QAAAA,MAAK,MAAM,KAAK;AAAA,MACpB;AACA,kBAAYc,cAAa;AACzB,UAAIA;AACA,qBAAa,UAAU;AAAA,IAC/B;AACA,aAAS,eAAe,KAAK;AACzB,aAAO,IACF,MAAM,EACN,IAAI,SAAU,MAAM;AACrB,YAAI,OAAO,SAAS,YAChB,OAAO,SAAS,YAChB,gBAAgB,MAAM;AACtB,iBAAOd,MAAK,UAAU,MAAM,QAAW,IAAI;AAAA,QAC/C,WACS,QACL,OAAO,SAAS,YAChB,KAAK,QACL,KAAK;AACL,iBAAO;AAAA,YACH,MAAMA,MAAK,UAAU,KAAK,MAAM,MAAS;AAAA,YACzC,IAAIA,MAAK,UAAU,KAAK,IAAI,MAAS;AAAA,UACzC;AACJ,eAAO;AAAA,MACX,CAAC,EACI,OAAO,SAAUqB,IAAG;AAAE,eAAOA;AAAA,MAAG,CAAC;AAAA,IAC1C;AACA,aAAS,aAAa;AAClB,MAAArB,MAAK,gBAAgB,CAAC;AACtB,MAAAA,MAAK,MAAMA,MAAK,UAAUA,MAAK,OAAO,GAAG,KAAK,oBAAI,KAAK;AACvD,UAAI,gBAAgBA,MAAK,OAAO,iBAC1BA,MAAK,MAAM,aAAa,WACtBA,MAAK,MAAM,aAAa,eACxBA,MAAK,MAAM,eACXA,MAAK,MAAM,UAAUA,MAAK,MAAM,cAC9B,OACAA,MAAK,MAAM;AACrB,UAAI;AACA,wBAAgB,eAAeA,MAAK,OAAO,UAAU;AACzD,MAAAA,MAAK,eACDA,MAAK,cAAc,SAAS,IACtBA,MAAK,cAAc,CAAC,IACpBA,MAAK,OAAO,WACVA,MAAK,OAAO,QAAQ,QAAQ,IAAIA,MAAK,IAAI,QAAQ,IAC/CA,MAAK,OAAO,UACZA,MAAK,OAAO,WACVA,MAAK,OAAO,QAAQ,QAAQ,IAAIA,MAAK,IAAI,QAAQ,IAC/CA,MAAK,OAAO,UACZA,MAAK;AACvB,MAAAA,MAAK,cAAcA,MAAK,aAAa,YAAY;AACjD,MAAAA,MAAK,eAAeA,MAAK,aAAa,SAAS;AAC/C,UAAIA,MAAK,cAAc,SAAS;AAC5B,QAAAA,MAAK,wBAAwBA,MAAK,cAAc,CAAC;AACrD,UAAIA,MAAK,OAAO,YAAY;AACxB,QAAAA,MAAK,OAAO,UAAUA,MAAK,UAAUA,MAAK,OAAO,SAAS,KAAK;AACnE,UAAIA,MAAK,OAAO,YAAY;AACxB,QAAAA,MAAK,OAAO,UAAUA,MAAK,UAAUA,MAAK,OAAO,SAAS,KAAK;AACnE,MAAAA,MAAK,iBACD,CAAC,CAACA,MAAK,OAAO,YACTA,MAAK,OAAO,QAAQ,SAAS,IAAI,KAC9BA,MAAK,OAAO,QAAQ,WAAW,IAAI,KACnCA,MAAK,OAAO,QAAQ,WAAW,IAAI;AAC/C,MAAAA,MAAK,iBACD,CAAC,CAACA,MAAK,OAAO,YACTA,MAAK,OAAO,QAAQ,SAAS,IAAI,KAC9BA,MAAK,OAAO,QAAQ,WAAW,IAAI,KACnCA,MAAK,OAAO,QAAQ,WAAW,IAAI;AAAA,IACnD;AACA,aAAS,cAAc;AACnB,MAAAA,MAAK,QAAQ,aAAa;AAC1B,UAAI,CAACA,MAAK,OAAO;AACb,QAAAA,MAAK,OAAO,aAAa,IAAI,MAAM,iCAAiC,CAAC;AACrE;AAAA,MACJ;AACA,MAAAA,MAAK,MAAM,QAAQA,MAAK,MAAM;AAC9B,MAAAA,MAAK,MAAM,OAAO;AAClB,MAAAA,MAAK,MAAM,UAAU,IAAI,iBAAiB;AAC1C,MAAAA,MAAK,SAASA,MAAK;AACnB,UAAIA,MAAK,OAAO,UAAU;AACtB,QAAAA,MAAK,WAAWE,eAAcF,MAAK,MAAM,UAAUA,MAAK,OAAO,aAAa;AAC5E,QAAAA,MAAK,SAASA,MAAK;AACnB,QAAAA,MAAK,SAAS,cAAcA,MAAK,MAAM;AACvC,QAAAA,MAAK,SAAS,WAAWA,MAAK,MAAM;AACpC,QAAAA,MAAK,SAAS,WAAWA,MAAK,MAAM;AACpC,QAAAA,MAAK,SAAS,WAAWA,MAAK,MAAM;AACpC,QAAAA,MAAK,SAAS,OAAO;AACrB,QAAAA,MAAK,MAAM,aAAa,QAAQ,QAAQ;AACxC,YAAI,CAACA,MAAK,OAAO,UAAUA,MAAK,MAAM;AAClC,UAAAA,MAAK,MAAM,WAAW,aAAaA,MAAK,UAAUA,MAAK,MAAM,WAAW;AAAA,MAChF;AACA,UAAI,CAACA,MAAK,OAAO;AACb,QAAAA,MAAK,OAAO,aAAa,YAAY,UAAU;AACnD,4BAAsB;AAAA,IAC1B;AACA,aAAS,wBAAwB;AAC7B,MAAAA,MAAK,mBAAmBA,MAAK,OAAO,mBAAmBA,MAAK;AAAA,IAChE;AACA,aAAS,cAAc;AACnB,UAAI,YAAYA,MAAK,OAAO,aACtBA,MAAK,OAAO,aACR,SACA,mBACJ;AACN,MAAAA,MAAK,cAAcE,eAAc,SAASF,MAAK,MAAM,YAAY,mBAAmB;AACpF,MAAAA,MAAK,YAAY,WAAW;AAC5B,MAAAA,MAAK,YAAY,OAAO;AACxB,MAAAA,MAAK,YAAY,WAAWA,MAAK,MAAM;AACvC,MAAAA,MAAK,YAAY,WAAWA,MAAK,MAAM;AACvC,MAAAA,MAAK,YAAY,cAAcA,MAAK,MAAM;AAC1C,MAAAA,MAAK,kBACD,cAAc,mBACR,kBACA,cAAc,SACV,UACA;AACd,UAAIA,MAAK,cAAc,SAAS,GAAG;AAC/B,QAAAA,MAAK,YAAY,eAAeA,MAAK,YAAY,QAAQA,MAAK,WAAWA,MAAK,cAAc,CAAC,GAAGA,MAAK,eAAe;AAAA,MACxH;AACA,UAAIA,MAAK,OAAO;AACZ,QAAAA,MAAK,YAAY,MAAMA,MAAK,WAAWA,MAAK,OAAO,SAAS,OAAO;AACvE,UAAIA,MAAK,OAAO;AACZ,QAAAA,MAAK,YAAY,MAAMA,MAAK,WAAWA,MAAK,OAAO,SAAS,OAAO;AACvE,UAAIA,MAAK,MAAM,aAAa,MAAM;AAC9B,QAAAA,MAAK,YAAY,OAAO,OAAOA,MAAK,MAAM,aAAa,MAAM,CAAC;AAClE,MAAAA,MAAK,MAAM,OAAO;AAClB,UAAIA,MAAK,aAAa;AAClB,QAAAA,MAAK,SAAS,OAAO;AACzB,UAAI;AACA,YAAIA,MAAK,MAAM;AACX,UAAAA,MAAK,MAAM,WAAW,aAAaA,MAAK,aAAaA,MAAK,MAAM,WAAW;AAAA,MACnF,SACO,IAAI;AAAA,MAAE;AACb,WAAKA,MAAK,aAAa,UAAU,SAAUO,IAAG;AAC1C,QAAAP,MAAK,QAAQ,eAAeO,EAAC,EAAE,OAAO,OAAOP,MAAK,eAAe;AACjE,qBAAa,UAAU;AACvB,qBAAa,SAAS;AAAA,MAC1B,CAAC;AAAA,IACL;AACA,aAAS,OAAOO,IAAG;AACf,UAAIP,MAAK,WAAW;AAChB,eAAOA,MAAK,MAAM;AACtB,MAAAA,MAAK,KAAKO,EAAC;AAAA,IACf;AACA,aAAS,aAAaG,QAAO,MAAM;AAC/B,UAAIV,MAAK,WAAW;AAChB;AACJ,UAAI,QAAQA,MAAK,OAAOU,MAAK;AAC7B,UAAI,UAAU,UAAa,MAAM,SAAS,GAAG;AACzC,iBAASjB,KAAI,GAAG,MAAMA,EAAC,KAAKA,KAAI,MAAM,QAAQA;AAC1C,gBAAMA,EAAC,EAAEO,MAAK,eAAeA,MAAK,MAAM,OAAOA,OAAM,IAAI;AAAA,MACjE;AACA,UAAIU,WAAU,YAAY;AACtB,QAAAV,MAAK,MAAM,cAAc,YAAY,QAAQ,CAAC;AAC9C,QAAAA,MAAK,MAAM,cAAc,YAAY,OAAO,CAAC;AAAA,MACjD;AAAA,IACJ;AACA,aAAS,YAAY,MAAM;AACvB,UAAIO,KAAI,SAAS,YAAY,OAAO;AACpC,MAAAA,GAAE,UAAU,MAAM,MAAM,IAAI;AAC5B,aAAOA;AAAA,IACX;AACA,aAAS,eAAe,MAAM;AAC1B,eAASd,KAAI,GAAGA,KAAIO,MAAK,cAAc,QAAQP,MAAK;AAChD,YAAI,eAAeO,MAAK,cAAcP,EAAC;AACvC,YAAI,wBAAwB,QACxB,aAAa,cAAc,IAAI,MAAM;AACrC,iBAAO,KAAKA;AAAA,MACpB;AACA,aAAO;AAAA,IACX;AACA,aAAS,cAAc,MAAM;AACzB,UAAIO,MAAK,OAAO,SAAS,WAAWA,MAAK,cAAc,SAAS;AAC5D,eAAO;AACX,aAAQ,aAAa,MAAMA,MAAK,cAAc,CAAC,CAAC,KAAK,KACjD,aAAa,MAAMA,MAAK,cAAc,CAAC,CAAC,KAAK;AAAA,IACrD;AACA,aAAS,+BAA+B;AACpC,UAAIA,MAAK,OAAO,cAAcA,MAAK,YAAY,CAACA,MAAK;AACjD;AACJ,MAAAA,MAAK,aAAa,QAAQ,SAAU,aAAaP,IAAG;AAChD,YAAIyB,KAAI,IAAI,KAAKlB,MAAK,aAAaA,MAAK,cAAc,CAAC;AACvD,QAAAkB,GAAE,SAASlB,MAAK,eAAeP,EAAC;AAChC,YAAIO,MAAK,OAAO,aAAa,KACzBA,MAAK,OAAO,sBAAsB,UAAU;AAC5C,UAAAA,MAAK,cAAcP,EAAC,EAAE,cAClB,WAAWyB,GAAE,SAAS,GAAGlB,MAAK,OAAO,uBAAuBA,MAAK,IAAI,IAAI;AAAA,QACjF,OACK;AACD,UAAAA,MAAK,wBAAwB,QAAQkB,GAAE,SAAS,EAAE,SAAS;AAAA,QAC/D;AACA,oBAAY,QAAQA,GAAE,YAAY,EAAE,SAAS;AAAA,MACjD,CAAC;AACD,MAAAlB,MAAK,sBACDA,MAAK,OAAO,YAAY,WACnBA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,YAAY,IAChDA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,SAAS,IAClDA,MAAK,cAAcA,MAAK,OAAO,QAAQ,YAAY;AACjE,MAAAA,MAAK,sBACDA,MAAK,OAAO,YAAY,WACnBA,MAAK,gBAAgBA,MAAK,OAAO,QAAQ,YAAY,IAChDA,MAAK,eAAe,IAAIA,MAAK,OAAO,QAAQ,SAAS,IACrDA,MAAK,cAAcA,MAAK,OAAO,QAAQ,YAAY;AAAA,IACrE;AACA,aAAS,WAAW,gBAAgB;AAChC,UAAIyB,UAAS,mBACRzB,MAAK,OAAO,WAAWA,MAAK,OAAO,YAAYA,MAAK,OAAO;AAChE,aAAOA,MAAK,cACP,IAAI,SAAU,MAAM;AAAE,eAAOA,MAAK,WAAW,MAAMyB,OAAM;AAAA,MAAG,CAAC,EAC7D,OAAO,SAAUP,IAAGzB,IAAG,KAAK;AAC7B,eAAOO,MAAK,OAAO,SAAS,WACxBA,MAAK,OAAO,cACZ,IAAI,QAAQkB,EAAC,MAAMzB;AAAA,MAC3B,CAAC,EACI,KAAKO,MAAK,OAAO,SAAS,UACzBA,MAAK,OAAO,cACZA,MAAK,KAAK,cAAc;AAAA,IAClC;AACA,aAAS,YAAYc,gBAAe;AAChC,UAAIA,mBAAkB,QAAQ;AAAE,QAAAA,iBAAgB;AAAA,MAAM;AACtD,UAAId,MAAK,gBAAgB,UAAaA,MAAK,iBAAiB;AACxD,QAAAA,MAAK,YAAY,QACbA,MAAK,0BAA0B,SACzBA,MAAK,WAAWA,MAAK,uBAAuBA,MAAK,eAAe,IAChE;AAAA,MACd;AACA,MAAAA,MAAK,MAAM,QAAQ,WAAWA,MAAK,OAAO,UAAU;AACpD,UAAIA,MAAK,aAAa,QAAW;AAC7B,QAAAA,MAAK,SAAS,QAAQ,WAAWA,MAAK,OAAO,SAAS;AAAA,MAC1D;AACA,UAAIc,mBAAkB;AAClB,qBAAa,eAAe;AAAA,IACpC;AACA,aAAS,gBAAgBP,IAAG;AACxB,UAAI,cAAc,eAAeA,EAAC;AAClC,UAAI,cAAcP,MAAK,aAAa,SAAS,WAAW;AACxD,UAAI,cAAcA,MAAK,aAAa,SAAS,WAAW;AACxD,UAAI,eAAe,aAAa;AAC5B,oBAAY,cAAc,KAAK,CAAC;AAAA,MACpC,WACSA,MAAK,aAAa,QAAQ,WAAW,KAAK,GAAG;AAClD,oBAAY,OAAO;AAAA,MACvB,WACS,YAAY,UAAU,SAAS,SAAS,GAAG;AAChD,QAAAA,MAAK,WAAWA,MAAK,cAAc,CAAC;AAAA,MACxC,WACS,YAAY,UAAU,SAAS,WAAW,GAAG;AAClD,QAAAA,MAAK,WAAWA,MAAK,cAAc,CAAC;AAAA,MACxC;AAAA,IACJ;AACA,aAAS,YAAYO,IAAG;AACpB,MAAAA,GAAE,eAAe;AACjB,UAAI,YAAYA,GAAE,SAAS,WAAW,cAAc,eAAeA,EAAC,GAAG,QAAQ;AAC/E,UAAIP,MAAK,SAAS,UAAa,gBAAgBA,MAAK,MAAM;AACtD,QAAAA,MAAK,KAAK,cACNA,MAAK,KAAK,KAAK,IAAIA,MAAK,KAAK,gBAAgBA,MAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,MACvE;AACA,UAAI,MAAM,WAAW,MAAM,aAAa,KAAK,CAAC,GAAG,MAAM,WAAW,MAAM,aAAa,KAAK,CAAC,GAAG,OAAO,WAAW,MAAM,aAAa,MAAM,CAAC,GAAG,WAAW,SAAS,MAAM,OAAO,EAAE,GAAG,QAAQO,GAAE,UACxL,YAAaA,GAAE,UAAU,KAAK,IAAI,KAAM;AAC7C,UAAI,WAAW,WAAW,OAAO;AACjC,UAAI,OAAO,MAAM,UAAU,eAAe,MAAM,MAAM,WAAW,GAAG;AAChE,YAAI,aAAa,UAAUP,MAAK,aAAa,eAAe,UAAUA,MAAK;AAC3E,YAAI,WAAW,KAAK;AAChB,qBACI,MACI,WACA,IAAI,CAAC,UAAU,KACd,IAAI,UAAU,KAAK,IAAI,CAACA,MAAK,IAAI;AAC1C,cAAI;AACA,8BAAkB,QAAW,IAAIA,MAAK,WAAW;AAAA,QACzD,WACS,WAAW,KAAK;AACrB,qBACI,UAAUA,MAAK,cAAc,WAAW,MAAM,IAAI,CAACA,MAAK,IAAI,IAAI;AACpE,cAAI;AACA,8BAAkB,QAAW,GAAGA,MAAK,WAAW;AAAA,QACxD;AACA,YAAIA,MAAK,QACL,eACC,SAAS,IACJ,WAAW,aAAa,KACxB,KAAK,IAAI,WAAW,QAAQ,IAAI,OAAO;AAC7C,UAAAA,MAAK,KAAK,cACNA,MAAK,KAAK,KAAK,IAAIA,MAAK,KAAK,gBAAgBA,MAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,QACvE;AACA,cAAM,QAAQ,IAAI,QAAQ;AAAA,MAC9B;AAAA,IACJ;AACA,SAAK;AACL,WAAOA;AAAA,EACX;AACA,WAAS,WAAW,UAAU,QAAQ;AAClC,QAAI,QAAQ,MAAM,UAAU,MACvB,KAAK,QAAQ,EACb,OAAO,SAAUqB,IAAG;AAAE,aAAOA,cAAa;AAAA,IAAa,CAAC;AAC7D,QAAIK,aAAY,CAAC;AACjB,aAASjC,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACnC,UAAI,OAAO,MAAMA,EAAC;AAClB,UAAI;AACA,YAAI,KAAK,aAAa,cAAc,MAAM;AACtC;AACJ,YAAI,KAAK,eAAe,QAAW;AAC/B,eAAK,WAAW,QAAQ;AACxB,eAAK,aAAa;AAAA,QACtB;AACA,aAAK,aAAa,kBAAkB,MAAM,UAAU,CAAC,CAAC;AACtD,QAAAiC,WAAU,KAAK,KAAK,UAAU;AAAA,MAClC,SACOnB,IAAG;AACN,gBAAQ,MAAMA,EAAC;AAAA,MACnB;AAAA,IACJ;AACA,WAAOmB,WAAU,WAAW,IAAIA,WAAU,CAAC,IAAIA;AAAA,EACnD;AACA,MAAI,OAAO,gBAAgB,eACvB,OAAO,mBAAmB,eAC1B,OAAO,aAAa,aAAa;AACjC,mBAAe,UAAU,YAAY,SAAS,UAAU,YAAY,SAAU,QAAQ;AAClF,aAAO,WAAW,MAAM,MAAM;AAAA,IAClC;AACA,gBAAY,UAAU,YAAY,SAAU,QAAQ;AAChD,aAAO,WAAW,CAAC,IAAI,GAAG,MAAM;AAAA,IACpC;AAAA,EACJ;AACA,MAAI,YAAY,SAAU,UAAU,QAAQ;AACxC,QAAI,OAAO,aAAa,UAAU;AAC9B,aAAO,WAAW,OAAO,SAAS,iBAAiB,QAAQ,GAAG,MAAM;AAAA,IACxE,WACS,oBAAoB,MAAM;AAC/B,aAAO,WAAW,CAAC,QAAQ,GAAG,MAAM;AAAA,IACxC,OACK;AACD,aAAO,WAAW,UAAU,MAAM;AAAA,IACtC;AAAA,EACJ;AACA,YAAU,gBAAgB,CAAC;AAC3B,YAAU,QAAQ;AAAA,IACd,IAAI,SAAS,CAAC,GAAG,eAAO;AAAA,IACxB,SAAS,SAAS,CAAC,GAAG,eAAO;AAAA,EACjC;AACA,YAAU,WAAW,SAAU,MAAM;AACjC,cAAU,MAAM,UAAU,SAAS,SAAS,CAAC,GAAG,UAAU,MAAM,OAAO,GAAG,IAAI;AAAA,EAClF;AACA,YAAU,cAAc,SAAU,QAAQ;AACtC,cAAU,gBAAgB,SAAS,SAAS,CAAC,GAAG,UAAU,aAAa,GAAG,MAAM;AAAA,EACpF;AACA,YAAU,YAAY,iBAAiB,CAAC,CAAC;AACzC,YAAU,aAAa,oBAAoB,CAAC,CAAC;AAC7C,YAAU,eAAe;AACzB,MAAI,OAAO,WAAW,eAAe,OAAO,OAAO,OAAO,aAAa;AACnE,WAAO,GAAG,YAAY,SAAU,QAAQ;AACpC,aAAO,WAAW,MAAM,MAAM;AAAA,IAClC;AAAA,EACJ;AACA,OAAK,UAAU,UAAU,SAAU,MAAM;AACrC,WAAO,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,KAAK,OAAO,SAAS,WAAW,SAAS,MAAM,EAAE,IAAI,KAAK;AAAA,EAChI;AACA,MAAI,OAAO,WAAW,aAAa;AAC/B,WAAO,YAAY;AAAA,EACvB;AACA,MAAO,cAAQ;;;AC1/Df,2BAA8B;AAC9B;AAIA,MAAO,kCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,aAAa;AAAA,IAE/B,OAAO,SAAS;AAAA,MACd,cAAc;AAAA,MACd,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AACR,WAAK,SAAS,YAAU,KAAK,mBAAmB;AAAA,QAC9C,YAAY;AAAA,QACZ,SAAS,KAAK,gBAAgB;AAAA,QAC9B,SAAS,KAAK,iBAAgB,oBAAI,KAAK,GAAE,QAAQ,IAAI;AAAA,QACrD,aAAa,KAAK,qBAAqB;AAAA,QACvC,SAAS,CAAC,IAAI,mBAAAC,QAAkB;AAAA,UAC9B,WAAW;AAAA;AAAA,UACX,YAAY;AAAA;AAAA,UACZ,WAAW;AAAA;AAAA,QACb,CAAC,CAAC;AAAA,QACF,eAAe;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,IAEA,aAAa;AACX,WAAK,OAAO,QAAQ;AAAA,IACtB;AAAA,EACF;;;AC/BA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,YAAY;AAAA,IAE9B,OAAO,SAAS;AAAA,MACd,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,IAEA,UAAU;AAIR,UAAI,KAAK,iBAAiB,YAAY;AACpC,aAAK,SAAS,KAAK,iBAAiB;AACpC;AAAA,MACF;AAEA,YAAM,UAAU;AAAA,QACd,UAAU;AAAA,QACV,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,SAAS,KAAK,gBAAgB;AAAA,QAC9B,SAAS,KAAK,iBAAgB,oBAAI,KAAK,GAAE,QAAQ,IAAI;AAAA,QACrD,aAAa,IAAI,KAAK,KAAK,gBAAgB,KAAK;AAAA,QAChD,YAAY;AAAA;AAAA;AAAA,QAGZ,QAAQ,CAAC,CAAC,KAAK,QAAQ,QAAQ,QAAQ;AAAA,MACzC;AAKA,cAAQ,gBAAgB,KAAK,sBAAsB,KAAK,iBAAiB;AACzE,WAAK,SAAS,YAAU,KAAK,kBAAkB,OAAO;AAKtD,UAAI,QAAQ,QAAQ;AAClB,aAAK,iBAAiB,cAAc,UAAU,IAAI,SAAS,QAAQ;AAAA,MACrE;AAAA,IACF;AAAA,IAEA,aAAa;AAGX,UAAI,CAAC,KAAK,QAAQ,YAAa,MAAK,OAAO,QAAQ;AAAA,IACrD;AAAA,EACF;;;ACrDA,2BAAwB;AAIxB,MAAO,uCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,kBAAkB,iBAAiB;AAAA,IAErD,OAAO,SAAS;AAAA,MACd,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AACR,WAAK,SAAS,YAAU,KAAK,sBAAsB;AAAA,QACjD,YAAY;AAAA,QACZ,SAAS,KAAK,gBAAgB;AAAA,QAC9B,SAAS,KAAK,gBAAgB,IAAI,KAAK,MAAK,GAAG;AAAA,QAC/C,aAAa,IAAI,KAAK,KAAK,gBAAgB,KAAK;AAAA,QAChD,YAAY;AAAA,QAEZ,SAAS,CAAC,IAAI,mBAAAC,QAAY,EAAE,OAAO,KAAK,sBAAqB,CAAC,CAAC;AAAA,QAC/D,eAAe;AAAA,QACf,SAAS,MAAM;AAEb,cAAI,KAAK,cAAc;AACrB,iBAAK,sBAAsB,QAAQ,KAAK;AAAA,UAC1C;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGA,aAAa;AACX,WAAK,OAAO,QAAQ;AAAA,IACtB;AAAA,EACF;;;ACnCA,MAAO,sCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,gBAAgB;AAAA,IAElC,OAAO,SAAS;AAAA,MACd,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IAEA,UAAU;AAOR,YAAM,SAAS,KAAK,QAAQ,QAAQ,QAAQ;AAE5C,WAAK,SAAS,YAAU,KAAK,sBAAsB;AAAA,QACjD,YAAY;AAAA,QACZ,SAAS,KAAK,iBAAgB,oBAAI,KAAK,GAAE,QAAQ,GAAG;AAAA,QACpD,SAAS,KAAK,iBAAgB,oBAAI,KAAK,GAAE,QAAQ,IAAI;AAAA,QACrD,aAAa,KAAK,oBAAoB;AAAA,QACtC,YAAY;AAAA,QACZ,UAAU,UAAU,SAAS;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IAEA,aAAa;AACX,WAAK,OAAO,QAAQ;AAAA,IACtB;AAAA,EACF;;;AChCA,MAAO,6BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAE,eAAe,kBAAkB,kBAAkB,gBAAgB,qBAAqB,gBAAgB,gBAAgB,gBAAgB,cAAc,iBAAiB,aAAa;AAAA,IAEvM,UAAU;AACR,UAAI,KAAK,uBAAuB;AAC9B,cAAM,OAAO,KAAK,mBAAmB,SAAS;AAC9C,aAAK,qBAAqB,IAAI;AAAA,MAChC;AAGA,WAAK,yBAAyB;AAC9B,WAAK,uBAAuB;AAAA,IAC9B;AAAA;AAAA,IAGA,qBAAqB,MAAM;AACzB,UAAI,CAAC,KAAK,wBAAyB;AAEnC,WAAK,qBAAqB,QAAQ,SAAS,SAAS;AACpD,WAAK,qBAAqB,QAAQ,SAAS,SAAS;AACpD,WAAK,mBAAmB,QAAQ,SAAS,SAAS;AAElD,UAAI,KAAK,4BAA4B;AACnC,aAAK,wBAAwB,SAAS,SAAS;AAAA,MACjD;AACA,UAAI,KAAK,uBAAuB;AAC9B,aAAK,mBAAmB,SAAS,SAAS;AAAA,MAC5C;AAEA,UAAI,KAAK,uBAAuB;AAC9B,aAAK,mBAAmB,QAAQ;AAAA,MAClC;AAAA,IACF;AAAA,IAEA,cAAc;AACZ,WAAK,qBAAqB,OAAO;AAAA,IACnC;AAAA,IAEA,cAAc;AACZ,WAAK,qBAAqB,OAAO;AAAA,IACnC;AAAA,IAEA,YAAY;AACV,WAAK,qBAAqB,KAAK;AAAA,IACjC;AAAA;AAAA,IAGA,eAAeC,QAAO;AACpB,YAAM,QAAQA,OAAM,cAAc,QAAQ;AAE1C,WAAK,WAAW;AAAA,QACd;AAAA,QACA,WAAW;AAAA,QACX,iBAAiB;AAAA,QACjB,cAAc,MAAM,KAAK,yBAAyB;AAAA,MACpD,CAAC;AAAA,IACH;AAAA,IAEA,2BAA2B;AACzB,YAAM,eAAe,KAAK,qBAAqB,IAAI,CAACC,OAAMA,GAAE,KAAK;AAEjE,WAAK,oBAAoB,QAAQ,CAAC,SAAS;AACzC,cAAM,QAAQ,KAAK,QAAQ;AAC3B,cAAM,SAAS,aAAa,SAAS,KAAK;AAC1C,aAAK,UAAU,OAAO,gBAAgB,MAAM;AAC5C,aAAK,UAAU,OAAO,cAAc,MAAM;AAC1C,aAAK,UAAU,OAAO,oBAAoB,MAAM;AAAA,MAClD,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,aAAaD,QAAO;AAClB,YAAM,QAAQA,OAAM,cAAc,QAAQ;AAE1C,WAAK,WAAW;AAAA,QACd;AAAA,QACA,WAAW;AAAA,QACX,iBAAiB;AAAA,QACjB,cAAc,MAAM,KAAK,uBAAuB;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,IAEA,yBAAyB;AACvB,YAAM,eAAe,KAAK,mBAAmB,IAAI,CAACC,OAAMA,GAAE,KAAK;AAE/D,WAAK,kBAAkB,QAAQ,CAAC,SAAS;AACvC,cAAM,QAAQ,KAAK,QAAQ;AAC3B,cAAM,SAAS,aAAa,SAAS,KAAK;AAC1C,aAAK,UAAU,OAAO,gBAAgB,MAAM;AAC5C,aAAK,UAAU,OAAO,cAAc,MAAM;AAC1C,aAAK,UAAU,OAAO,oBAAoB,MAAM;AAAA,MAClD,CAAC;AAAA,IACH;AAAA;AAAA,IAGA,WAAW,EAAE,OAAO,WAAW,iBAAiB,aAAa,GAAG;AAC9D,UAAI,CAAC,KAAK,qBAAsB;AAEhC,YAAM,SAAS,KAAK,GAAG,eAAe,SAAS;AAC/C,YAAM,WAAW,OAAO,KAAK,CAAC,UAAU,MAAM,UAAU,KAAK;AAE7D,UAAI,UAAU;AACZ,iBAAS,OAAO;AAAA,MAClB,OAAO;AACL,cAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,OAAO;AACb,cAAM,OAAO;AACb,cAAM,QAAQ;AACd,cAAM,QAAQ,gBAAgB;AAC9B,aAAK,kBAAkB,YAAY,KAAK;AAAA,MAC1C;AAEA,mBAAa;AAAA,IACf;AAAA,EACF;;;AClHA,MAAO,2BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,MAAM;AAAA,IAExB,mBAAmB;AACjB,YAAM,OAAO,KAAK,WAAW;AAC7B,YAAM,QAAQ,UAAU,OAAO,wBAAwB;AAEvD,UAAI,SAAS,MAAM;AACjB,cAAM,WAAW,6CAA6C,IAAI,EAAE;AAAA,MACtE;AAAA,IACF;AAAA,EACF;;;ACZA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,YAAY,WAAW;AAAA,IAEzC,UAAU;AACV,cAAQ,IAAI,mCAAmC;AAAA,IACjD;AAAA,IAEE,IAAIC,IAAG;AACL,MAAAA,GAAE,eAAe;AAEjB,UAAI,UAAU,KAAK,eAAe,UACnB,QAAQ,gBAAe,oBAAI,KAAK,GAAE,QAAQ,CAAC;AAE1D,WAAK,gBAAgB,mBAAmB,aAAa,OAAO;AAAA,IAC9D;AAAA,IAEA,OAAOA,IAAG;AACR,MAAAA,GAAE,eAAe;AAEjB,YAAM,UAAUA,GAAE,OAAO,QAAQ,mBAAmB;AACpD,YAAM,QAAQ,QAAQ,QAAQ,cAAc;AAE5C,UAAI,OAAO;AAET,gBAAQ,OAAO;AAAA,MACjB,OAAO;AAEL,cAAM,eAAe,QAAQ,cAAc,yBAAyB;AACpE,qBAAa,QAAQ;AACrB,gBAAQ,MAAM,UAAU;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;;;AChCA,MAAO,iCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,QAAQ,cAAc,cAAc,qBAAqB,YAAY,aAAa,SAAS;AAAA,IAE7G,UAAU;AACR,WAAK,gBAAgB;AACrB,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,SAAS;AACP,YAAM,QAAQ,KAAK,WAAW;AAC9B,YAAM,UAAU,UAAU;AAE1B,WAAK,iBAAiB,UAAU,OAAO,UAAU,OAAO;AACxD,WAAK,iBAAiB,UAAU,OAAO,UAAU,CAAC,OAAO;AACzD,WAAK,wBAAwB,UAAU,OAAO,UAAU,CAAC,OAAO;AAEhE,UAAI,KAAK,mBAAmB;AAC1B,aAAK,eAAe,WAAW;AAAA,MACjC;AAAA,IACF;AAAA,IAEA,eAAe;AACb,UAAI,CAAC,KAAK,sBAAsB,CAAC,KAAK,iBAAkB;AAExD,YAAM,WAAW,KAAK,gBAAgB;AACtC,UAAI,CAAC,SAAU;AAEf,WAAK,cAAc,MAAM;AAEzB,UAAI,KAAK,cAAc,SAAS,KAAK,cAAc,QAAQ,UAAU;AACnE,aAAK,cAAc,QAAQ;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB,UAAI,CAAC,KAAK,mBAAoB;AAE9B,YAAM,SAAQ,oBAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AACnD,WAAK,gBAAgB,MAAM;AAAA,IAC7B;AAAA,EACF;;;ACpCA,MAAO,8BAAP,cAA6B,WAAW;AAAA,IACtC,UAAW;AACT,WAAK,WAAW,IAAI,qBAAS,KAAK,SAAS;AAAA,QACzC,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,OAAO,KAAK,MAAM,KAAK,IAAI;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,IAEA,aAAc;AACZ,WAAK,SAAS,QAAQ;AAAA,IACxB;AAAA,IAEA,QAAS;AACP,YAAM,MAAM,CAAC,GAAG,KAAK,QAAQ,iBAAiB,gBAAgB,CAAC,EAAE,IAAI,QAAM,GAAG,QAAQ,MAAM;AAC5F,YAAM,QAAQ,SAAS,cAAc,yBAAyB,EAAE;AAEhE,YAAM,KAAK,QAAQ,QAAQ,YAAY;AAAA,QACrC,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,UAChB,UAAU;AAAA,QACZ;AAAA,QACA,MAAM,KAAK,UAAU,EAAE,IAAI,CAAC;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,EACF;;;AC/BA,MAAO,yCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,gBAAgB,mBAAmB,YAAY;AAAA,IAEjE,UAAW;AACT,WAAK,iBAAiB;AAAA,IACxB;AAAA,IAEA,mBAAoB;AAClB,UAAI,CAAC,KAAK,4BAA4B,CAAC,KAAK,oBAAqB;AAEjE,YAAM,WAAW,KAAK,sBAAsB,MAAM,KAAK;AAEvD,UAAI,aAAa,IAAI;AACnB,aAAK,iBAAiB,cAAc;AACpC;AAAA,MACF;AAEA,YAAM,OAAO,SAAS,UAAU,EAAE,KAAK;AAEvC,WAAK,iBAAiB,cAAc,SAAS,IACzC,2DACA,kCAAkC,IAAI,OAAO,SAAS,IAAI,KAAK,GAAG;AAAA,IACxE;AAAA,IAEA,gBAAiB;AACf,YAAM,SAAS,KAAK,QAAQ,cAAc,2CAA2C;AACrF,UAAI,CAAC,OAAQ;AAEb,YAAM,WAAW,OAAO,QAAQ,OAAO,aAAa;AACpD,YAAM,aAAa,YAAY,SAAS,QAAQ,eAAe;AAE/D,WAAK,oBAAoB,QAAQ,QAAM;AACrC,WAAG,SAAS,CAAC;AACb,WAAG,UAAU,OAAO,UAAU,CAAC,UAAU;AAAA,MAC3C,CAAC;AAAA,IACH;AAAA,EACF;;;ACpCA,MAAO,0CAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,UAAW;AACT,WAAK,aAAa;AAAA,IACpB;AAAA,IAEA,eAAgB;AACd,YAAM,OAAO,KAAK,mBAAmB,GAAG;AAExC,UAAI,CAAC,KAAM;AAEX,YAAM,gBAAgB,SAAS;AAC/B,YAAM,UAAU,SAAS;AACzB,YAAM,kBAAkB,SAAS,SAAS,SAAS,oBAAoB;AAEvE,WAAK,OAAO,KAAK,uBAAuB,eAAe;AACvD,WAAK,OAAO,KAAK,uBAAuB,aAAa;AACrD,WAAK,OAAO,KAAK,uBAAuB,OAAO;AAC/C,WAAK,OAAO,KAAK,4BAA4B,eAAe;AAE5D,UAAI,iBAAiB;AACnB,aAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA,qBAAsB;AACpB,WAAK,aAAa;AAClB,WAAK,aAAa;AAAA,IACpB;AAAA;AAAA,IAGA,qBAAsB;AACpB,WAAK,qBAAqB;AAC1B,WAAK,sBAAsB;AAAA,IAC7B;AAAA;AAAA,IAGA,oBAAqB;AACnB,YAAM,SAAS,KAAK,iCAAiC,KAAK,2BAA2B;AAErF,UAAI,CAAC,QAAQ;AACX,aAAK,OAAO,KAAK,yBAAyB,KAAK,gBAAgB,IAAI,CAAC;AAAA,MACtE;AAAA,IACF;AAAA,IAEA,wBAAyB;AACvB,YAAM,SAAS,KAAK,iCAAiC,KAAK,2BAA2B;AAErF,WAAK,OAAO,KAAK,gCAAgC,CAAC,MAAM;AACxD,WAAK,OAAO,KAAK,yBAAyB,CAAC,MAAM;AACjD,WAAK,OAAO,KAAK,2BAA2B,MAAM;AAKlD,UAAI,QAAQ;AACV,aAAK,YAAY,CAAC,uBAAuB,qBAAqB,CAAC;AAAA,MACjE,OAAO;AACL,aAAK,YAAY,CAAC,gBAAgB,CAAC;AAAA,MACrC;AAAA,IACF;AAAA,IAEA,kBAAmB;AACjB,YAAM,QAAQ,KAAK,QAAQ,cAAc,oCAAoC;AAC7E,aAAO,QAAQ,WAAW,MAAM,KAAK,KAAK,IAAI;AAAA,IAChD;AAAA,IAEA,OAAQ,SAAS,SAAS;AACxB,cAAQ,QAAQ,QAAM;AACpB,WAAG,SAAS,CAAC;AACb,WAAG,UAAU,OAAO,UAAU,CAAC,OAAO;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,IAEA,qBAAsB;AACpB,aAAO,KAAK,QAAQ,cAAc,2DAA2D;AAAA,IAC/F;AAAA,IAEA,YAAaC,QAAO;AAClB,MAAAA,OAAM,QAAQ,UAAQ;AACpB,cAAM,QAAQ,KAAK,QAAQ,cAAc,gBAAgB,IAAI,IAAI;AACjE,YAAI,MAAO,OAAM,QAAQ;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,IAEA,eAAgB;AACd,WAAK,YAAY,CAAC,kBAAkB,uBAAuB,kBAAkB,qBAAqB,CAAC;AACnG,YAAM,aAAa,KAAK,QAAQ,cAAc,2BAA2B;AACzE,UAAI,WAAY,YAAW,QAAQ;AAAA,IACrC;AAAA,IAEA,uBAAwB;AACtB,WAAK,YAAY,CAAC,uBAAuB,kBAAkB,qBAAqB,CAAC;AAAA,IACnF;AAAA,EACF;;;ACxGA,MAAO,yBAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,KAAK;AAAA,IAEvB,SAAS,EAAE,cAAc,GAAG;AAC1B,YAAM,UAAY,KAAK,QAAQ,QAAQ,oBAAsB,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO;AAC1F,YAAM,YAAY,KAAK,QAAQ,QAAQ,sBAAsB,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO;AAC1F,WAAK,WAAW,QAAQ,SAAO;AAC7B,cAAM,WAAW,QAAQ;AACzB,eAAO,QAAQ,CAAAC,OAAO,IAAI,UAAU,OAAOA,IAAG,QAAQ,CAAC;AACvD,iBAAS,QAAQ,CAAAA,OAAK,IAAI,UAAU,OAAOA,IAAG,CAAC,QAAQ,CAAC;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,EACF;;;ACZA,MAAO,gCAAP,cAA6B,WAAW;AAAA,IACtC,UAAU;AACR,WAAK,QAAQ,UAAU;AAAA,IACzB;AAAA,IAEA,MAAMC,QAAO;AACX,UAAIA,OAAO,CAAAA,OAAM,eAAe;AAChC,WAAK,QAAQ,MAAM;AACnB,YAAM,QAAQ,SAAS,eAAe,OAAO;AAC7C,UAAI,MAAO,OAAM,YAAY;AAAA,IAC/B;AAAA,IAEA,aAAa;AACX,UAAI,KAAK,QAAQ,KAAM,MAAK,QAAQ,MAAM;AAAA,IAC5C;AAAA,EACF;;;ACZA,MAAO,gCAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,OAAO,OAAO;AAAA,IAEhC,SAAS,EAAE,cAAc,GAAG;AAC1B,YAAM,gBAAgB,cAAc,QAAQ;AAE5C,WAAK,WAAW,QAAQ,SAAO;AAC7B,YAAI,UAAU,OAAO,cAAc,QAAQ,aAAa;AAAA,MAC1D,CAAC;AAED,WAAK,aAAa,QAAQ,WAAS;AACjC,cAAM,UAAU,OAAO,UAAU,MAAM,OAAO,aAAa;AAAA,MAC7D,CAAC;AAAA,IACH;AAAA,EACF;;;ACbA,MAAO,+BAAP,cAA6B,WAAW;AAAA,IACtC,OAAO,UAAU,CAAC,SAAS,SAAS,QAAQ;AAAA,IAE5C,UAAU;AACR,WAAK,OAAO,KAAK,MAAM,KAAK,aAAa,KAAK;AAC9C,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,QAAQC,QAAO;AACb,UAAIA,OAAM,QAAQ,WAAWA,OAAM,QAAQ,KAAK;AAC9C,QAAAA,OAAM,eAAe;AACrB,aAAK,aAAa;AAAA,MACpB,WAAWA,OAAM,QAAQ,eAAe,KAAK,YAAY,UAAU,MAAM,KAAK,KAAK,SAAS,GAAG;AAC7F,QAAAA,OAAM,eAAe;AACrB,aAAK,KAAK,IAAI;AACd,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA,IAEA,eAAe;AACb,YAAM,QAAQ,KAAK,YAAY,MAAM,KAAK,EAAE,QAAQ,MAAM,EAAE;AAC5D,WAAK,YAAY,QAAQ;AACzB,UAAI,MAAM,WAAW,EAAG;AACxB,UAAI,CAAC,KAAK,KAAK,SAAS,KAAK,EAAG,MAAK,KAAK,KAAK,KAAK;AACpD,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,OAAOA,QAAO;AACZ,YAAMC,SAAQ,OAAOD,OAAM,cAAc,QAAQ,KAAK;AACtD,WAAK,KAAK,OAAOC,QAAO,CAAC;AACzB,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,MAAM,OAAO;AACX,aAAO,MACJ,MAAM,GAAG,EACT,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,EACvB,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;AAAA,IACnC;AAAA,IAEA,SAAS;AACP,WAAK,aAAa,QAAQ,KAAK,KAAK,KAAK,IAAI;AAC7C,WAAK,YAAY,YAAY,KAAK,KAC/B,IAAI,CAAC,KAAKA,WAAU;AACnB,cAAM,OAAO,KAAK,WAAW,GAAG;AAChC,eAAO;AAAA,YACH,IAAI;AAAA,6EAC6DA,MAAK,wBAAwB,IAAI;AAAA;AAAA,MAExG,CAAC,EACA,KAAK,EAAE;AAAA,IACZ;AAAA,IAEA,WAAW,MAAM;AACf,YAAM,MAAM,SAAS,cAAc,KAAK;AACxC,UAAI,cAAc;AAClB,aAAO,IAAI;AAAA,IACb;AAAA,EACF;;;AC1DA;AAGA,cAAY,SAAS,SAAS,wBAAe;AAG7C,cAAY,SAAS,SAAS,wBAAe;AAG7C,cAAY,SAAS,mBAAmB,cAAc;AAGtD,cAAY,SAAS,oBAAoB,mCAAyB;AAGlE,cAAY,SAAS,OAAO,sBAAa;AAGzC,cAAY,SAAS,aAAa,4BAAkB;AAGpD,cAAY,SAAS,eAAe,UAAU;AAG9C,cAAY,SAAS,wBAAwB,uCAA4B;AAGzE,cAAY,SAAS,iBAAiB,gCAAsB;AAG5D,cAAY,SAAS,YAAY,2BAAkB;AAGnD,cAAY,SAAS,0BAA0B,yCAA8B;AAG7E,cAAY,SAAS,8BAA8B,6CAAiC;AAGpF,cAAY,SAAS,+BAA+B,8CAAkC;AAGtF,cAAY,SAAS,mBAAmB,kCAAwB;AAGhE,cAAY,SAAS,oBAAoB,mCAAyB;AAGlE,cAAY,SAAS,0BAA0B,yCAA8B;AAG7E,cAAY,SAAS,kCAAkC,iDAAqC;AAG5F,cAAY,SAAS,YAAY,QAAQ;AAGzC,cAAY,SAAS,aAAa,SAAS;AAG3C,cAAY,SAAS,cAAc,6BAAmB;AAGtD,cAAY,SAAS,eAAe,8BAAoB;AAGxD,cAAY,SAAS,gBAAgB,+BAAqB;AAG1D,cAAY,SAAS,YAAY,2BAAkB;AAGnD,cAAY,SAAS,qBAAqB,oCAA0B;AAGpE,cAAY,SAAS,0BAA0B,yCAA8B;AAG7E,cAAY,SAAS,SAAS,wBAAe;AAG7C,cAAY,SAAS,qBAAqB,oCAAyB;AAGnE,cAAY,SAAS,WAAW,0BAAiB;AAGjD,cAAY,SAAS,uBAAuB,sCAA2B;AAGvE,cAAY,SAAS,gBAAgB,+BAAqB;AAG1D,cAAY,SAAS,uBAAuB,sCAA2B;AAGvE,cAAY,SAAS,WAAW,0BAAiB;AAGjD,cAAY,SAAS,gBAAgB,+BAAqB;AAG1D,cAAY,SAAS,qBAAqB,oCAAyB;AAGnE,cAAY,SAAS,kBAAkB,iCAAuB;AAG9D,cAAY,SAAS,gCAAgC,+CAAmC;AAGxF,cAAY,SAAS,gBAAgB,+BAAqB;AAG1D,cAAY,SAAS,eAAe,8BAAoB;AAGxD,cAAY,SAAS,uBAAuB,sCAA2B;AAGvE,cAAY,SAAS,wBAAwB,uCAA4B;AAGzE,cAAY,SAAS,iBAAiB,gCAAsB;AAG5D,cAAY,SAAS,cAAc,6BAAmB;AAGtD,cAAY,SAAS,QAAQ,uBAAc;AAG3C,cAAY,SAAS,8BAA8B,6CAAkC;AAGrF,cAAY,SAAS,oBAAoB,mCAAyB;AAGlE,cAAY,SAAS,kBAAkB,iCAAuB;AAG9D,cAAY,SAAS,oBAAoB,mCAAyB;AAGlE,cAAY,SAAS,iBAAiB,gCAAsB;AAG5D,cAAY,SAAS,uBAAuB,sCAA2B;AAGvE,cAAY,SAAS,0BAA0B,yCAA8B;AAG7E,cAAY,SAAS,YAAY,2BAAkB;AAGnD,cAAY,SAAS,qBAAqB,oCAA0B;AAGpE,cAAY,SAAS,mBAAmB,kCAAuB;AAG/D,cAAY,SAAS,uBAAuB,sCAA2B;AAGvE,cAAY,SAAS,oBAAoB,mCAAwB;AAGjE,cAAY,SAAS,WAAW,0BAAiB;AAGjD,cAAY,SAAS,mBAAmB,kCAAwB;AAGhE,cAAY,SAAS,qBAAqB,oCAA0B;AAGpE,cAAY,SAAS,gBAAgB,+BAAqB;AAG1D,cAAY,SAAS,iBAAiB,gCAAsB;AAG5D,cAAY,SAAS,sBAAsB,qCAA0B;AAGrE,cAAY,SAAS,UAAU,yBAAgB;AAG/C,cAAY,SAAS,YAAY,2BAAkB;AAGnD,cAAY,SAAS,UAAU,yBAAgB;AAG/C,cAAY,SAAS,gBAAgB,+BAAqB;AAG1D,cAAY,SAAS,yBAAyB,wCAA4B;AAG1E,cAAY,SAAS,mBAAmB,kCAAwB;AAGhE,cAAY,SAAS,cAAc,6BAAmB;AAGtD,cAAY,SAAS,cAAc,6BAAoB;AAGvD,cAAY,SAAS,eAAe,8BAAoB;AAGxD,cAAY,SAAS,uBAAuB,sCAA4B;AAGxE,cAAY,SAAS,kBAAkB,iCAAsB;AAG7D,cAAY,SAAS,mBAAmB,kCAAwB;AAGhE,cAAY,SAAS,gBAAgB,+BAAqB;AAG1D,cAAY,SAAS,eAAe,8BAAoB;AAGxD,cAAY,SAAS,qBAAqB,oCAAyB;AAGnE,cAAY,SAAS,oBAAoB,mCAAwB;AAGjE,cAAY,SAAS,WAAW,0BAAiB;AAGjD,cAAY,SAAS,SAAS,wBAAe;AAI7C,cAAY,SAAS,eAAe,8BAAoB;AAGxD,cAAY,SAAS,eAAe,8BAAoB;AAGxD,cAAY,SAAS,YAAY,2BAAiB;AAGlD,cAAY,SAAS,uBAAuB,sCAA2B;AAGvE,cAAY,SAAS,wBAAwB,uCAA4B;AAIzE,cAAY,SAAS,OAAO,sBAAa;AAGzC,cAAY,SAAS,cAAc,6BAAmB;AAGtD,cAAY,SAAS,cAAc,6BAAmB;AAEtD,cAAY,SAAS,aAAa,4BAAkB;;;A7UtQpD,0BAAuB;;;;A8UThB,MAAMC,IAAqB;AAA3B,MAEDC,IAAc,EAClBC,SAAS,EACPC,cAAc,WACdC,SAAS,EACPC,MAAAA,MACAC,MAAAA,KAAM,EAAA,GAGVC,MAAM,EACJH,SAAS,EACPE,MAAAA,KAAM,EAAA,EAAA;AAZL,MCADE,IAAa,EACjBC,SAAS,EACPC,SAAS,OACTC,OAAAA,MAAO,GAETC,OAAO,EACLF,SAAS,cACTG,UAAAA,KAAU,GAEZC,UAAU,EACRJ,SAAS,MACTK,UAAAA,MACAC,eAAAA,MACAC,OAAAA,MAAO,GAETC,MAAM,EACJR,SAAS,OACTK,UAAAA,MACAI,gBAAgB,CAAE,UAAA,GAClBC,MAAM,EACJC,WAAAA,KAAW,EAAA,GAGfC,YAAY,EACVZ,SAAS,MACTC,OAAAA,MAAO,GAETY,QAAQ,EACNb,SAAS,MACTc,eAAe,cACfP,OAAAA,OACAJ,UAAAA,MACAY,KAAKC,IAAAA;AACH,WAAOhB,EAAQgB,GAAQC,UAAAA,MAAgBnB,EAAWoB,KAAKJ,aAAAA,EAAed;EACxE,EAAA,GAEFmB,YAAY,EACVnB,SAAS,MACTC,OAAAA,MAAO,GAETmB,QAAQ,EACNpB,SAAS,MACTc,eAAe,cACfP,OAAAA,OACAJ,UAAAA,MACAY,KAAKC,IAAAA;AACH,WAAOhB,EAAQgB,GAAQC,UAAAA,MAAgBnB,EAAWoB,KAAKJ,aAAAA,EAAed;EACxE,EAAA,GAEFqB,mBAAmB,EACjBrB,SAAS,OACTsB,WAAAA,MACAjB,UAAAA,MACAJ,OAAAA,OACAM,OAAAA,MAAO,EAAA;ADtDJ,MC0DDP,IAAWgB,CAAAA,OAAAA;AAAO,QAAAO;AAAA,WAAKP,QAAAA,MAAgB,UAATO,KAAPP,GAAShB,YAAAA,WAAOuB,KAAAA,SAAhBA,GAAkBC,YAAAA;EAAa;AD1DrD,MEADC,IAAsBC,UAAUC,UAAUC,MAAM,4BAAA;AFA/C,MECDC,IAAiBJ,KAAuBK,SAASL,EAAoB,CAAA,CAAA;AAE3E,MAAeM,IAAA,EAGbC,sBAAsB,kBAAkBjB,KAAKW,UAAUC,SAAAA,GAKvDM,eAAeJ,KAAkBA,IAAiB,IAClDK,gBAAgBL,KAAkBH,UAAUC,UAAUC,MAAM,cAAA,GAG5DO,sBAAsB,iBAAiBpB,KAAKW,UAAUC,SAAAA,GAEtDS,qBAA2C,eAAA,OAAfC,cAC1B,CAAE,QAAQ,mBAAmB,WAAA,EAAcC,MAAMC,CAAAA,OAAQA,MAAQF,WAAWG,SAAAA,EAAAA;AAfhF,MCHeC,IAAA,EACbC,UAAU,CAAE,UAAA,GACZC,cAAAA,OACAC,YAAAA,KAAY;ADAd,MEHeC,IAAA,EACbC,aAAa,gBACbC,MAAM,QACNC,SAAS,WACTC,MAAM,QACNC,OAAO,SACPC,oBAAoB,uBACpB3C,MAAM,QACNJ,UAAU,WACVgD,QAAQ,kBACRC,QAAQ,UACRC,MAAM,QACNC,SAAS,WACTC,SAAS,kBACTtD,OAAO,SACPuD,MAAM,QACNC,QAAQ,UACRC,QAAQ,iBACRC,MAAM,QACNC,QAAQ,UACRC,KAAK,OACLC,gBAAgB,qBAChBC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,MACJC,IAAI,KAAA;ACrBN,MAAMC,IAAQ,CAAEC,EAAKpB,OAAOoB,EAAKL,IAAIK,EAAKJ,IAAII,EAAKN,IAAIM,EAAKF,IAAIE,EAAKH,EAAAA;AAErE,MAAeI,IAAA,EACbC,QAAQ,OACRC,WAAW,GAEXC,UAAUtD,IAAAA;AACR,YAAQA,IAAAA;MACN,KAAK;AACH,eAAA,KAAAuD,OAAYL,EAAKpB,KAAAA;MACnB,KAAK;AACH,eAAA,KAAAyB,OAAYL,EAAKrB,IAAAA;MACnB;AACE,YAAI2B;AAEgB,iBAAhB1D,KAAKsD,SACPI,KAAO,MACkB,UAAhB1D,KAAKsD,WACdI,KAAO;AAGT,cAAMC,KAAMC,KAAKC,MAAMD,KAAKE,IAAI5D,EAAAA,IAAU0D,KAAKE,IAAIJ,EAAAA,CAAAA,GAG7CK,MAFY7D,KAAS0D,KAAKI,IAAIN,IAAMC,EAAAA,GACjBM,QAAQjE,KAAKuD,SAAAA,EACGW,QAAQ,OAAO,EAAA,EAAIA,QAAQ,OAAO,EAAA;AAC3E,eAAAT,GAAAA,OAAUM,IAAyB,GAAA,EAAAN,OAAIN,EAAMQ,EAAAA,CAAAA;IAAAA;EAEnD,EAAA;AChCK,MAAMQ,IAAmB;AAAzB,MACMC,IAAqB;AAD3B,MCAMC,IAAS,SAASC,IAAAA;AAC7B,eAAWC,MAAOD,IAAY;AAC5B,YAAME,KAAQF,GAAWC,EAAAA;AACzBvE,WAAKuE,EAAAA,IAAOC;IACd;AACA,WAAOxE;EACT;ADNO,MEKDyE,IAAOC,SAASC;AFLf,MEMDjE,IAAQ+D,EAAKG;AFNZ,MEQMC,IAAc,SAASC,IAAAA;AAA+F,QAAA,EAApFC,WAAEA,IAASC,kBAAEA,IAAgBC,cAAEA,IAAYC,SAAEA,IAAOC,gBAAEA,IAAcC,OAAEA,GAAAA,IAAOC,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AAC7H,UAAMvF,KAAUiF,MAAwBN,GAClCe,KAAWR,IACXS,KAAyB,gBAAZP,IAEbQ,KAAU,SAASC,IAAAA;AACV,cAATP,MAA6B,KAAA,EAAVA,MACrBM,GAAQE,QAAAA;AAEV,YAAMC,KAASC,EAA2BH,GAAME,QAAQ,EAAEb,kBAAkBQ,GAAAA,CAAAA;AAC9D,cAAVK,OACFZ,QAAAA,MAAAA,GAAcc,KAAKF,IAAQF,IAAOE,EAAAA,GAC9BV,MACFQ,GAAMR,eAAAA;IAAAA;AAQZ,WAHAO,GAAQE,UAAU,MAAM9F,GAAQkG,oBAAoBlB,IAAWY,IAASD,EAAAA,GAExE3F,GAAQmG,iBAAiBnB,IAAWY,IAASD,EAAAA,GACtCC;EACT;AF9BO,MEqCMQ,IAAe,SAASpB,IAAAA;AAAgE,QAAA,EAArDC,WAAEA,IAASoB,SAAEA,IAAOC,YAAEA,IAAUxH,YAAEA,GAAAA,IAAYyG,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AAC/F,UAAMvF,KAAuB,QAAbiF,KAAoBA,KAAYN;AAChD0B,IAAAA,KAAAA,UAAUA,IACVC,KAAAA,UAAaA;AAEb,UAAMT,KAAQjB,SAAS2B,YAAY,QAAA;AAKnC,WAJAV,GAAMW,UAAUxB,IAAWqB,IAASC,EAAAA,GAClB,QAAdxH,MACFyF,EAAO0B,KAAKJ,IAAO/G,EAAAA,GAEdkB,GAAQyG,cAAcZ,EAAAA;EAC/B;AFhDO,MEkDMa,IAAyB,SAAS1G,IAAS0F,IAAAA;AACtD,QAA0B,OAAtB1F,QAAAA,KAAAA,SAAAA,GAAS2G,UACX,QAAO/F,EAAMqF,KAAKjG,IAAS0F,EAAAA;EAE/B;AFtDO,MEwDMM,IAA6B,SAASY,IAAAA;AAA4C,QAAA,EAAtC1B,kBAAEA,IAAgB2B,WAAEA,GAAAA,IAAWtB,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AACzF,WAAOqB,MAAQA,GAAKD,aAAaG,KAAKC,eACpCH,CAAAA,KAAOA,GAAK3G;AAEd,QAAY,QAAR2G,IAAJ;AAIA,UAAwB,QAApB1B,GAYF,QAAO0B;AAXP,UAAIA,GAAKI,WAAwB,QAAbH,GAClB,QAAOD,GAAKI,QAAQ9B,EAAAA;AAEpB,aAAO0B,MAAQA,OAASC,MAAW;AACjC,YAAIH,EAAuBE,IAAM1B,EAAAA,EAC/B,QAAO0B;AAETA,QAAAA,KAAOA,GAAK3G;MACd;IAXJ;EAgBF;AF9EO,MEuFMgH,IAAwBjH,CAAAA,OACnC4E,SAASsC,kBAAkBlH,MAAWmH,EAAoBnH,IAAS4E,SAASsC,aAAAA;AFxFvE,ME0FMC,IAAsB,SAASnH,IAAS4G,IAAAA;AACnD,QAAK5G,MAAY4G,GAGjB,QAAOA,MAAM;AACX,UAAIA,OAAS5G,GACX,QAAA;AAEF4G,MAAAA,KAAOA,GAAK3G;IACd;EACF;AFpGO,MEwHMmH,IAAuB,SAASR,IAAAA;AAAM,QAAAS;AACjD,QAAS,UAALA,KAACT,OAAAA,WAAIS,MAAAA,CAAJA,GAAMpH,WACT;AAEF,QAAIqH,KAAa;AAEjB,SADAV,KAAOA,GAAKW,iBACLX,KACLU,CAAAA,MACAV,KAAOA,GAAKW;AAEd,WAAOD;EACT;AFnIO,MEqIME,IAAcZ,CAAAA,OAAAA;AAAI,QAAAa;AAAA,WAAKb,QAAAA,MAAgB,UAAZa,KAAJb,GAAM3G,eAAAA,WAAUwH,KAAAA,SAAhBA,GAAkBC,YAAYd,EAAAA;EAAK;AFrIhE,MEuIMe,IAAW,SAASC,IAAAA;AAAqE,QAAA,EAA/DC,iBAAEA,IAAeC,aAAEA,IAAWC,wBAAEA,GAAAA,IAAwBxC,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AAChG,UAAMyC,MAAa,MAAA;AACjB,cAAQH,IAAAA;QACN,KAAK;AACH,iBAAOI,WAAWC;QACpB,KAAK;AACH,iBAAOD,WAAWE;QACpB,KAAK;AACH,iBAAOF,WAAWG;QACpB;AACE,iBAAOH,WAAWI;MAAAA;IAEvB,GAXkB;AAanB,WAAOzD,SAAS0D,iBACdV,IACAI,IACe,QAAfF,KAAsBA,KAAc,MAAA,SACpCC,EAAAA;EAEJ;AF3JO,ME6JM/I,IAAWgB,CAAAA,OAAAA;AAAO,QAAAO;AAAA,WAAKP,QAAAA,MAAgB,UAATO,KAAPP,GAAShB,YAAAA,WAAOuB,KAAAA,SAAhBA,GAAkBC,YAAAA;EAAa;AF7J5D,ME+JM+H,IAAc,SAASC,IAAAA;AAAmB,QACjD/D,IAAKC,IAD8B+D,KAAOlD,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAE9B,gBAAA,OAARiD,MACTC,KAAUD,IACVA,KAAMC,GAAQzJ,WAEdyJ,KAAU,EAAE3J,YAAY2J,GAAAA;AAG1B,UAAMzI,KAAU4E,SAAS8D,cAAcF,EAAAA;AASvC,QAPwB,QAApBC,GAAQE,aACgB,QAAtBF,GAAQ3J,eACV2J,GAAQ3J,aAAa,CAAA,IAEvB2J,GAAQ3J,WAAW8J,kBAAkBH,GAAQE,WAG3CF,GAAQ3J,WACV,MAAK2F,MAAOgE,GAAQ3J,WAClB4F,CAAAA,KAAQ+D,GAAQ3J,WAAW2F,EAAAA,GAC3BzE,GAAQ6I,aAAapE,IAAKC,EAAAA;AAI9B,QAAI+D,GAAQK,MACV,MAAKrE,MAAOgE,GAAQK,MAClBpE,CAAAA,KAAQ+D,GAAQK,MAAMrE,EAAAA,GACtBzE,GAAQ8I,MAAMrE,EAAAA,IAAOC;AAIzB,QAAI+D,GAAQM,KACV,MAAKtE,MAAOgE,GAAQM,KAClBrE,CAAAA,KAAQ+D,GAAQM,KAAKtE,EAAAA,GACrBzE,GAAQgJ,QAAQvE,EAAAA,IAAOC;AAoB3B,WAhBI+D,GAAQQ,aACVR,GAAQQ,UAAUC,MAAM,GAAA,EAAKC,QAASF,CAAAA,OAAAA;AACpCjJ,MAAAA,GAAQoJ,UAAUC,IAAIJ,EAAAA;IAAU,CAAA,GAIhCR,GAAQa,gBACVtJ,GAAQsJ,cAAcb,GAAQa,cAG5Bb,GAAQc,cACV,CAAA,EAAG5F,OAAO8E,GAAQc,UAAAA,EAAYJ,QAASK,CAAAA,OAAAA;AACrCxJ,MAAAA,GAAQyJ,YAAYD,EAAAA;IAAU,CAAA,GAI3BxJ;EACT;AAEA,MAAI0J;AAEG,MAAMC,IAAmB,WAAA;AAC9B,QAAqB,QAAjBD,EACF,QAAOA;AAGTA,QAAgB,CAAA;AAChB,eAAWjF,MAAOmF,GAAiB;AACjC,YAAM9K,KAAa8K,EAAgBnF,EAAAA;AAC/B3F,MAAAA,GAAWE,WACb0K,EAAcG,KAAK/K,GAAWE,OAAAA;IAElC;AAEA,WAAO0K;EACT;AAdO,MAgBMI,IAAwBlD,CAAAA,OAASmD,EAAwBnD,QAAAA,KAAAA,SAAAA,GAAMoD,UAAAA;AAhBrE,MAsBMC,IAAmB,SAASrD,IAAAA;AAAqC,QAAA,EAA/BsD,QAAEA,GAAAA,IAAQ3E,UAAAC,SAAA,KAAA,WAAAD,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,EAAE2E,QAAAA,KAAQ;AACpE,WAAIA,KACKH,EAAwBnD,EAAAA,IAG7BmD,EAAwBnD,EAAAA,KAAAA,CAAUmD,EAAwBnD,GAAKoD,UAAAA,KATzB,SAASpD,IAAAA;AACnD,aAAO+C,EAAAA,EAAmBQ,SAASnL,EAAQ4H,EAAAA,CAAAA,KAAAA,CAAW+C,EAAAA,EAAmBQ,SAASnL,EAAQ4H,GAAKoD,UAAAA,CAAAA;IACjG,EAOiHpD,EAAAA;EAGjH;AA9BO,MAgCMmD,IAA2BnD,CAAAA,OAASwD,EAAkBxD,EAAAA,KAAwB,aAAfA,QAAAA,KAAAA,SAAAA,GAAMmC;AAhC3E,MAkCMqB,IAAqBxD,CAAAA,QAASA,QAAAA,KAAAA,SAAAA,GAAMD,cAAaG,KAAKuD;AAlC5D,MAoCMC,IAAqB,SAAS1D,IAAAA;AAAqB,QAAA,EAAfjI,MAAEA,GAAAA,IAAM4G,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AAC1D,QAAKqB,GAGL,QAAI2D,EAAe3D,EAAAA,IACbA,GAAKmC,SAAS1E,IAAAA,CACZ1F,MACKiI,GAAK3G,WAAW+I,QAAQwB,qBAAqB7L,KAAAA,SAMjD2L,EAAmB1D,GAAKoD,UAAAA;EAEnC;AAnDO,MAqDMS,IAA2B7D,CAAAA,OAASF,EAAuBE,IAAMtI,CAAAA;AArDvE,MAuDMoM,IAAuB9D,CAAAA,OAAS2D,EAAe3D,EAAAA,KAAwB,QAAfA,QAAAA,KAAAA,SAAAA,GAAMmC;AAvDpE,MAyDMwB,IAAkB3D,CAAAA,QAASA,QAAAA,KAAAA,SAAAA,GAAMD,cAAaG,KAAK6D;AAzDzD,MCxNDC,IAAQ,EACZC,eAAAA,MAEAC,WAAAA;AACE,WAAI5K,KAAK2K,iBAAiBE,EAAQ3J,sBACzB,IAEA;EAEV,GACD4J,UAAUC,IAAAA;AACR,UAAML,KAAQrC,EAAY,SAAS,EAAE2C,MAAM,QAAQC,UAAAA,MAAgBC,QAAAA,MAAcC,IAAInL,KAAKoL,YAAAA,CAAAA;AAE1FV,IAAAA,GAAMzE,iBAAiB,UAAU,MAAA;AAC/B8E,MAAAA,GAASL,GAAMW,KAAAA,GACf/D,EAAWoD,EAAAA;IAAM,CAAA,GAGnBpD,EAAW5C,SAAS4G,eAAetL,KAAKoL,WAAAA,CAAAA,GACxC1G,SAAS6G,KAAKhC,YAAYmB,EAAAA,GAC1BA,GAAMc,MAAAA;EACR,EAAA;ACxBF,MCAeC,KAAA,EACbC,uBAAAA,OACAC,oBAAoB,OACpBC,mBAAmB,KAAA;ADHrB,MEEeC,IAAA,EACbhK,MAAM,EACJ/C,SAAS,UACTgN,aAAAA,MACAL,OAAO3L,IAAAA;AACL,UAAM8I,KAAQmD,OAAOC,iBAAiBlM,EAAAA;AACtC,WAA4B,WAArB8I,GAAMqD,cAAyBrD,GAAMqD,cAAc;EAC5D,EAAA,GAEF9J,QAAQ,EACNrD,SAAS,MACTgN,aAAAA,MACAL,QAAO3L,CAAAA,OAEsB,aADbiM,OAAOC,iBAAiBlM,EAAAA,EACzBoM,UAAAA,GAGjBC,MAAM,EACJC,cAAc,KACdX,OAAO3L,IAAAA;AACL,UAAMkF,KAAgB,SAAAvB,OAAYrF,GAAqB,GAAA,GACjDgE,KAAOtC,GAAQgH,QAAQ9B,EAAAA;AAC7B,QAAI5C,GACF,QAAOA,GAAKiK,aAAa,MAAA;EAE7B,EAAA,GAEF5J,QAAQ,EACN3D,SAAS,OACTgN,aAAAA,KAAa,GAEfQ,QAAQ,EACN1D,OAAO,EAAE2D,iBAAiB,YAAA,EAAA,EAAA;AFlC9B,MGEeC,IAAA,EACbC,gBAAcA,MACZhJ,2RAAAA,OAE6IL,EAAKvB,MAAI4B,kBAAAA,EAAAA,OAAmBL,EAAKvB,MAAI4B,gKAAAA,EAAAA,OACjCL,EAAKjB,QAAMsB,kBAAAA,EAAAA,OAAmBL,EAAKjB,QAAMsB,8IAAAA,EAAAA,OAC3DL,EAAKX,QAAMgB,kBAAAA,EAAAA,OAAmBL,EAAKX,QAAMgB,oLAAAA,EAAAA,OACHL,EAAKhB,MAAIqB,kBAAAA,EAAAA,OAAmBL,EAAKhB,MAAIqB,gRAAAA,EAAAA,OAItEL,EAAKlE,UAAQuE,kBAAAA,EAAAA,OAAmBL,EAAKlE,UAAQuE,4IAAAA,EAAAA,OACpDL,EAAKpE,OAAKyE,kBAAAA,EAAAA,OAAmBL,EAAKpE,OAAKyE,0IAAAA,EAAAA,OACzCL,EAAK9D,MAAImE,kBAAAA,EAAAA,OAAmBL,EAAK9D,MAAImE,mJAAAA,EAAAA,OAC5BL,EAAKtB,SAAO2B,kBAAAA,EAAAA,OAAmBL,EAAKtB,SAAAA,mJAAAA,EAAO2B,OAC3CL,EAAKf,SAAAA,kBAAAA,EAAOoB,OAAmBL,EAAKf,SAAAA,yKAAAA,EAAOoB,OACrBL,EAAKd,SAAAA,kBAAAA,EAAOmB,OAAmBL,EAAKd,SAAAA,yKAAAA,EAAOmB,OAC3CL,EAAKlB,QAAAA,kBAAAA,EAAMuB,OAAmBL,EAAKlB,QAAAA,2QAAAA,EAAMuB,OAIlEL,EAAKxB,aAAAA,kBAAAA,EAAW6B,OAAmBL,EAAKxB,aAAAA,kVAAAA,EAAW6B,OAM1CL,EAAKV,MAAAA,kBAAAA,EAAIe,OAAmBL,EAAKV,MAAAA,+JAAAA,EAAIe,OAC/BL,EAAKb,MAAAA,kBAAAA,EAAIkB,OAAmBL,EAAKb,MAAAA,oVAAAA,EAAIkB,OAO5FL,EAAKP,gBAAAA,gBAAAA,EAAcY,OAAiBL,EAAKR,KAAAA,kLAAAA,EAAGa,OAEvDL,EAAKhB,MAAAA,sHAAAA,EAAIqB,OACTL,EAAKT,QAAM,mGAAA,EAAA;ACxC7F,MAAMD,IAAO,EAAEgK,UAAU,IAAA;AAAA,MAAA,IAAA,OAAA,OAAA,EAAA,WAAA,MAAA,aAAA,GAAA,iBAAA,GAAA,SAAA,GAAA,KCAV,EACbC,YAAY,cACZC,mBAAmB,uBACnBC,yBAAyB,8BACzBC,oBAAoB,wBACpBC,6BAA6B,kCAC7BC,gBAAgB,oBAChBC,oBAAoB,wBACpBC,gBAAgB,oBAChBC,mBAAmB,uBACnBhN,mBAAmB,qBAAA,GAAA,WAAA,GAAA,UAAA,GAAA,OAAA,GAAA,ULVN,EACb,GAAG,aACH,GAAG,OACH,IAAI,UACJ,IAAI,UACJ,IAAI,QACJ,IAAI,SACJ,IAAI,UACJ,IAAI,KACJ,IAAI,KACJ,IAAI,IAAA,GAAA,MAAA,GAAA,QAAAiN,IAAA,gBAAA,GAAA,SAAA,GAAA,MAAA,EAAA,CAAA;AMVS,MAAMC,IAAN,MAAMA;IACnB,OAAA,YAAmBC,IAAAA;AACjB,YAAA,EAAM7O,MAAEA,IAAI8O,UAAEA,IAAQC,YAAEA,IAAUC,UAAEA,GAAAA,IAAaC,EAA2BJ,EAAAA;AAE5EtN,WAAKsB,UAAU7C,EAAAA,IAAQ,WAAA;AACrB,YAAIkP,IACAC;AAGY,YAAAC,IASFC;AAVVP,QAAAA,KAEAK,KADEH,KACqBI,UAAjBA,KAAG7N,KAAKuN,EAAAA,MAAAA,WAASM,KAAAA,SAAdA,GAAA9H,KAAAA,IAAAA,IAEA/F,KAAKuN,EAAAA,EAAAA,IAEPC,OACTI,KAAS5N,KAAKwN,EAAAA;AAGhB,eAAIC,MACFE,KAAgB,UAATG,KAAGF,OAAAA,WAAME,KAAAA,SAANA,GAASrP,EAAAA,GACfkP,KACKI,EAAMhI,KAAK4H,IAASC,IAAQvI,SAAAA,IAAAA,WAGrCsI,KAAUC,GAAOnP,EAAAA,GACVsP,EAAMhI,KAAK4H,IAASC,IAAQvI,SAAAA;MAAAA;IAGzC;EAAA;AAGF,MAAMqI,IAA6B,SAASJ,IAAAA;AAC1C,UAAM5M,KAAQ4M,GAAW5M,MAAMsN,CAAAA;AAC/B,QAAA,CAAKtN,GACH,OAAM,IAAIuN,MAAK,wCAAAxK,OAAyC6J,EAAAA,CAAAA;AAG1D,UAAMY,KAAO,EAAEzP,MAAMiC,GAAM,CAAA,EAAA;AAY3B,WAVgB,QAAZA,GAAM,CAAA,IACRwN,GAAKX,WAAW7M,GAAM,CAAA,IAEtBwN,GAAKV,aAAa9M,GAAM,CAAA,GAGV,QAAZA,GAAM,CAAA,MACRwN,GAAKT,WAAAA,OAGAS;EACT;AAnBA,MAmBA,EAEQH,OAAAA,EAAAA,IAAUI,SAAS7M;AArB3B,MAuBM0M,IAA+B,IAAII,OAAO,gCAAA;AAAA,MAAA;AAAA,MAAA;AAAA,MAAA;ACpDjC,MAAMC,IAAN,cAA0BhB,EAAAA;IACvC,OAAA,MAAOiB;AAAgB,UAAZ9J,KAAKa,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG;AACjB,aAAIb,cAAiBxE,OACZwE,KAEAxE,KAAKuO,eAAe/J,QAAAA,KAAAA,SAAAA,GAAOgK,SAAAA,CAAAA;IAEtC;IAEA,OAAA,eAAsBC,IAAAA;AACpB,aAAO,IAAIzO,KAAKyO,IAAYC,GAAWD,EAAAA,CAAAA;IACzC;IAEA,OAAA,eAAsBE,IAAAA;AACpB,aAAO,IAAI3O,KAAK4O,GAAWD,EAAAA,GAAaA,EAAAA;IAC1C;IAEAE,YAAYJ,IAAYE,IAAAA;AACtBG,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKyO,aAAaA,IAClBzO,KAAK2O,aAAaA,IAClB3O,KAAKsF,SAAStF,KAAK2O,WAAWrJ,QAC9BtF,KAAK+O,aAAa/O,KAAKyO,WAAWnJ;IACpC;IAEA0J,mBAAmBC,IAAAA;AACjB,aAAOL,GAAW5O,KAAK2O,WAAWO,MAAM,GAAGtL,KAAKuL,IAAI,GAAGF,EAAAA,CAAAA,CAAAA,EAAU3J;IACnE;IAEA8J,qBAAqBC,IAAAA;AACnB,aAAOX,GAAW1O,KAAKyO,WAAWS,MAAM,GAAGtL,KAAKuL,IAAI,GAAGE,EAAAA,CAAAA,CAAAA,EAAc/J;IACvE;IAEA4J,QAAAA;AACE,aAAOlP,KAAK6O,YAAYS,eAAetP,KAAK2O,WAAWO,MAAAA,GAAS7J,SAAAA,CAAAA;IAClE;IAEAkK,OAAON,IAAAA;AACL,aAAOjP,KAAKkP,MAAMD,IAAQA,KAAS,CAAA;IACrC;IAEAO,UAAUhL,IAAAA;AACR,aAAOxE,KAAK6O,YAAYP,IAAI9J,EAAAA,EAAOiK,eAAezO,KAAKyO;IACzD;IAEAgB,SAAAA;AACE,aAAOzP,KAAKyO;IACd;IAEAiB,cAAAA;AACE,aAAO1P,KAAKyO;IACd;IAEAD,WAAAA;AACE,aAAOxO,KAAKyO;IACd;EAAA;AAGF,MAAMkB,IAAuD,OAA9B,UAAVC,IAAAC,MAAMC,SAAAA,WAAIF,IAAAA,SAAVA,EAAA7J,KAAA8J,OAAa,WAAA,EAAgBvK;AAAlD,MACMyK,IAA+C,SAAT,UAAfC,IAAA,IAAIC,gBAAAA,WAAWD,IAAAA,SAAfA,EAAAjK,KAAA,KAAkB,CAAA;AAD/C,MAEMmK,KAAgE,kBAAnB,UAApBC,IAAAC,OAAOC,kBAAAA,WAAaF,IAAAA,SAApBA,EAAApK,KAAAqK,QAAuB,IAAI,MAAA;AAK1D,MAAI1B;AAAJ,MAAgBE;AAQdF,OADEiB,KAAgBI,IACJO,CAAAA,OAAWT,MAAMC,KAAKQ,EAAAA,EAAQC,IAAKC,CAAAA,OAASA,GAAKP,YAAY,CAAA,CAAA,IAE9D,SAASK,IAAAA;AACpB,UAAMG,KAAS,CAAA;AACf,QAAIC,KAAU;AACd,UAAA,EAAMpL,QAAEA,GAAAA,IAAWgL;AAEnB,WAAOI,KAAUpL,MAAQ;AACvB,UAAId,KAAQ8L,GAAOK,WAAWD,IAAAA;AAC9B,UAAI,SAAUlM,MAASA,MAAS,SAAUkM,KAAUpL,IAAQ;AAE1D,cAAMsL,KAAQN,GAAOK,WAAWD,IAAAA;AACP,kBAAZ,QAARE,MAEHpM,OAAkB,OAARA,OAAkB,OAAe,OAARoM,MAAiB,QAIpDF;MAEJ;AACAD,MAAAA,GAAO9G,KAAKnF,EAAAA;IACd;AAEA,WAAOiM;EAAAA,GAMT7B,KADEsB,KACYW,CAAAA,OAAUT,OAAOC,cAAAA,GAAiBR,MAAMC,KAAKe,MAAS,CAAA,CAAA,CAAA,IAEvD,SAASA,IAAAA;AAiBpB,YAhBmB,MAAA;AACjB,YAAMC,KAAS,CAAA;AAYf,aAVAjB,MAAMC,KAAKe,EAAAA,EAAO5H,QAASzE,CAAAA,OAAAA;AACzB,YAAIiM,KAAS;AACTjM,QAAAA,KAAQ,UACVA,MAAS,OACTiM,MAAUL,OAAOW,aAAavM,OAAU,KAAK,OAAQ,KAAA,GACrDA,KAAQ,QAAiB,OAARA,KAEnBsM,GAAOnH,KAAK8G,KAASL,OAAOW,aAAavM,EAAAA,CAAAA;MAAO,CAAA,GAG3CsM;IACR,GAdkB,EAgBDE,KAAK,EAAA;EAAA;ACzH3B,MAAI7F,KAAK;AAEM,MAAM8F,KAAN,cAAyB5D,EAAAA;IACtC,OAAA,eAAsB6D,IAAAA;AACpB,aAAOlR,KAAKmR,SAASC,KAAKrS,MAAMmS,EAAAA,CAAAA;IAClC;IAEArC,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKmL,KAAAA,EAAOA;IACd;IAEAkG,qBAAqBzD,IAAAA;AACnB,aAAO5N,KAAK6O,iBAAgBjB,QAAAA,KAAAA,SAAAA,GAAQiB;IACtC;IAEAW,UAAU5B,IAAAA;AACR,aAAO5N,SAAS4N;IAClB;IAEA0D,UAAAA;AACE,YAAMC,KAAQ,CAAA,GACRC,KAAWxR,KAAKyR,sBAAAA,KAA2B,CAAA;AAEjD,iBAAWlN,MAAOiN,IAAU;AAC1B,cAAMhN,KAAQgN,GAASjN,EAAAA;AACvBgN,QAAAA,GAAM5H,KAAI,GAAAlG,OAAIc,IAAG,GAAA,EAAAd,OAAIe,EAAAA,CAAAA;MACvB;AAEA,aAAA,KAAAf,OAAYzD,KAAK6O,YAAYpQ,MAAI,GAAA,EAAAgF,OAAIzD,KAAKmL,EAAAA,EAAE1H,OAAG8N,GAAMjM,SAAM,IAAA7B,OAAO8N,GAAMP,KAAK,IAAA,CAAA,IAAU,IAAE,GAAA;IAC3F;IAEAS,wBAAAA;IAAyB;IAEzBC,eAAAA;AACE,aAAON,KAAKO,UAAU3R,IAAAA;IACxB;IAEA4R,gBAAAA;AACE,aAAOvD,EAAYC,IAAItO,IAAAA;IACzB;IAEA0P,cAAAA;AACE,aAAO1P,KAAKmL,GAAGqD,SAAAA;IACjB;EAAA;AC5CK,MAAMqD,KAAiB,WAAA;AAAyB,QAAhBC,KAACzM,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAAI0M,KAAC1M,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACjD,QAAIyM,GAAExM,WAAWyM,GAAEzM,OACjB,QAAA;AAEF,aAAS0M,KAAQ,GAAGA,KAAQF,GAAExM,QAAQ0M,MAAS;AAE7C,UADcF,GAAEE,EAAAA,MACFD,GAAEC,EAAAA,EACd,QAAA;IAEJ;AACA,WAAA;EACF;AAXO,MAeMC,KAAc,SAASpB,IAAAA;AAClC,UAAMC,KAASD,GAAM3B,MAAM,CAAA;AAAE,aAAAgD,KAAA7M,UAAAC,QADe4I,KAAAA,IAAI2B,MAAAqC,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,GAAAC,KAAA,GAAAA,KAAAD,IAAAC,KAAJjE,CAAAA,GAAIiE,KAAA9M,CAAAA,IAAAA,UAAA8M,EAAAA;AAGhD,WADArB,GAAOsB,OAAAA,GAAUlE,EAAAA,GACV4C;EACT;AAnBO,MCADuB,KACJ;ADDK,MCGMC,KAAgB,WAAA;AAC3B,UAAM5H,KAAQrC,EAAY,SAAS,EAAEkK,KAAK,QAAQ9T,MAAM,KAAK+T,SAAS,QAAA,CAAA,GAChEC,KAAWpK,EAAY,YAAY,EAAEkK,KAAK,QAAQ9T,MAAM,KAAK+T,SAAS,QAAA,CAAA,GACtEE,KAAOrK,EAAY,MAAA;AACzBqK,IAAAA,GAAKnJ,YAAYmB,EAAAA,GACjBgI,GAAKnJ,YAAYkJ,EAAAA;AAEjB,UAAME,KAAmB,WAAA;AACvB,UAAA;AACE,eAAO,IAAIC,SAASF,EAAAA,EAAMG,IAAIJ,GAASD,OAAAA;MACxC,SAAQM,IAAAA;AACP,eAAA;MACF;IACF,EANyB,GAQnBC,KAAuB,WAAA;AAC3B,UAAA;AACE,eAAOrI,GAAM9F,QAAQ,qBAAA;MACtB,SAAQkO,IAAAA;AACP,eAAA;MACF;IACF,EAN6B;AAQ7B,WAAIH,KACK,SAASrC,IAAAA;AAEd,aADAmC,GAASjO,QAAQ8L,IACV,IAAIsC,SAASF,EAAAA,EAAMM,IAAIP,GAASD,OAAAA;IAAAA,IAEhCO,KACF,SAASzC,IAAAA;AAEd,aADA5F,GAAMlG,QAAQ8L,IACV5F,GAAM9F,QAAQ,WAAA,IACT,QAEA;IAAA,IAIJ,SAAS0L,IAAAA;AACd,YAAME,KAAOF,GAAO2C,KAAAA,EAAO1D,OAAO,CAAA;AAClC,aAAI8C,GAAYxS,KAAK2Q,EAAAA,IACZ,QAEA;IAAA;EAIf,EA/C6B;ACJ7B,MAAI0C,KAAoB;AAAxB,MACIC,KAAsB;AAD1B,MAEIC,KAAqB;AAFzB,MAGIC,KAAqB;AAElB,MAAMC,KAAuBA,OAC7BJ,OACHA,KAAoBK,GAAAA,EAAwB9P,OAAO+P,GAAAA,CAAAA,IAE9CN;AAJF,MAOMO,KAAkBC,CAAAA,OAAkBC,EAAuBD,EAAAA;AAPjE,MASMF,KAAyBA,OAC/BL,OACHA,KAAsBS,OAAOC,KAAKF,CAAAA,IAE7BR;AAbF,MAgBMW,KAAiBJ,CAAAA,OAAkBC,EAAsBD,EAAAA;AAhB/D,MAkBMH,KAAwBA,OAC9BH,OACHA,KAAqBQ,OAAOC,KAAKF,CAAAA,IAE5BP;AAtBF,MCLMW,KAA8B,SAASjV,IAASkV,IAAAA;AACtCC,OAA6BnV,EAAAA,EACrCsK,cAAc4K,GAAW9P,QAAQ,OAAOpF,EAAAA;EACvD;ADEO,MCADmV,KAA+B,SAASnV,IAAAA;AAC5C,UAAMgB,KAAU4E,SAAS8D,cAAc,OAAA;AACvC1I,IAAAA,GAAQ6I,aAAa,QAAQ,UAAA,GAC7B7I,GAAQ6I,aAAa,iBAAiB7J,GAAQwB,YAAAA,CAAAA;AAC9C,UAAM4T,KAAQC,GAAAA;AAKd,WAJID,MACFpU,GAAQ6I,aAAa,SAASuL,EAAAA,GAEhCxP,SAAS0P,KAAKC,aAAavU,IAAS4E,SAAS0P,KAAKtK,UAAAA,GAC3ChK;EACT;ADVO,MCYDqU,KAAc,WAAA;AAClB,UAAMrU,KAAUwU,GAAe,gBAAA,KAAqBA,GAAe,WAAA;AACnE,QAAIxU,IAAS;AACX,YAAA,EAAMoU,OAAEA,IAAKK,SAAEA,GAAAA,IAAYzU;AAC3B,aAAgB,MAAToU,KAAcK,KAAUL;IACjC;EACF;ADlBO,MCoBDI,KAAkB7V,CAAAA,OAASiG,SAAS0P,KAAKI,cAAa/Q,aAAAA,OAAchF,IAAAA,GAAAA,CAAAA;ADpBnE,MEPDgW,KAAmB,EAAE,wCAAwC,OAAA;AFO5D,MELMC,KAA0B,SAASC,IAAAA;AAC9C,UAAMnV,KAAOmV,GAAaC,QAAQ,YAAA,GAC5BnQ,KAAOkQ,GAAaC,QAAQ,WAAA;AAElC,QAAA,CAAIpV,MAAAA,CAAQiF,GAMV,QAAOjF,QAAAA,KAAAA,SAAAA,GAAM8F;AANG;AAChB,YAAA,EAAMiG,MAAEA,GAAAA,IAAS,IAAIsJ,YAAYC,gBAAgBrQ,IAAM,WAAA;AACvD,UAAI8G,GAAKnC,gBAAgB5J,GACvB,QAAA,CAAQ+L,GAAKiJ,cAAc,GAAA;IAE/B;EAGF;AFPO,ME+BMO,KACP,UAAUlV,KAAKW,UAAUwU,QAAAA,IACnBrP,CAAAA,OAAUA,GAAMsP,UAEhBtP,CAAAA,OAAUA,GAAMuP;AC1CrB,MAAMC,KAASC,CAAAA,OAAOC,WAAWD,IAAI,CAAA;AAArC,MCGME,KAAa,WAAA;AAAsB,QAAb1H,KAAMvI,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAC1C,UAAMyL,KAAS,CAAA;AACf,eAAWvM,MAAOqJ,IAAQ;AACxB,YAAMpJ,KAAQoJ,GAAOrJ,EAAAA;AACrBuM,MAAAA,GAAOvM,EAAAA,IAAOC;IAChB;AACA,WAAOsM;EACT;ADVO,MCYMyE,KAAkB,WAAA;AAAyB,QAAhBzD,KAACzM,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAAI0M,KAAC1M,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAClD,QAAIuO,OAAOC,KAAK/B,EAAAA,EAAGxM,WAAWsO,OAAOC,KAAK9B,EAAAA,EAAGzM,OAC3C,QAAA;AAEF,eAAWf,MAAOuN,IAAG;AAEnB,UADcA,GAAEvN,EAAAA,MACFwN,GAAExN,EAAAA,EACd,QAAA;IAEJ;AACA,WAAA;EACF;ADvBO,MEEMiR,KAAiB,SAASC,IAAAA;AACrC,QAAa,QAATA,GAKJ,QAHK5F,MAAM6F,QAAQD,EAAAA,MACjBA,KAAQ,CAAEA,IAAOA,EAAAA,IAEZ,CAAEE,GAAUF,GAAM,CAAA,CAAA,GAAKE,GAAsB,QAAZF,GAAM,CAAA,IAAaA,GAAM,CAAA,IAAKA,GAAM,CAAA,CAAA,CAAA;EAC9E;AFTO,MEWMG,KAAmB,SAASH,IAAAA;AACvC,QAAa,QAATA,GAAe;AAEnB,UAAA,CAAQI,IAAOC,EAAAA,IAAQN,GAAeC,EAAAA;AACtC,WAAOM,GAAoBF,IAAOC,EAAAA;EACpC;AFhBO,MEkBME,KAAiB,SAASC,IAAWC,IAAAA;AAChD,QAAiB,QAAbD,MAAmC,QAAdC,GAAoB;AAE7C,UAAA,CAAQC,IAAWC,EAAAA,IAAYZ,GAAeS,EAAAA,GAAAA,CACtCI,IAAYC,EAAAA,IAAad,GAAeU,EAAAA;AAChD,WAAOH,GAAoBI,IAAWE,EAAAA,KAAeN,GAAoBK,IAASE,EAAAA;EACpF;AFxBO,ME0BDX,KAAY,SAASnR,IAAAA;AACzB,WAAqB,YAAA,OAAVA,KACFA,KAEA8Q,GAAW9Q,EAAAA;EAEtB;AFhCO,MEkCDuR,KAAsB,SAASQ,IAAMC,IAAAA;AACzC,WAAoB,YAAA,OAATD,KACFA,OAASC,KAETjB,GAAgBgB,IAAMC,EAAAA;EAEjC;ACtCe,MAAMC,KAAN,cAAsCpJ,EAAAA;IACnDwB,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK0W,SAAS1W,KAAK0W,OAAOC,KAAK3W,IAAAA,GAC/BA,KAAK4W,oBAAoB,CAAA;IAC3B;IAEAf,QAAAA;AACO7V,WAAK6W,YACR7W,KAAK6W,UAAAA,MACLnS,SAASuB,iBAAiB,mBAAmBjG,KAAK0W,QAAAA,IAAQ;IAE9D;IAEAI,OAAAA;AACE,UAAI9W,KAAK6W,QAEP,QADA7W,KAAK6W,UAAAA,OACEnS,SAASsB,oBAAoB,mBAAmBhG,KAAK0W,QAAAA,IAAQ;IAExE;IAEAK,yBAAyBC,IAAAA;AACvB,UAAA,CAAKhX,KAAK4W,kBAAkB3M,SAAS+M,EAAAA,EAEnC,QADAhX,KAAK4W,kBAAkBjN,KAAKqN,EAAAA,GACrBhX,KAAK6V,MAAAA;IAEhB;IAEAoB,2BAA2BD,IAAAA;AAEzB,UADAhX,KAAK4W,oBAAoB5W,KAAK4W,kBAAkBM,OAAQC,CAAAA,OAAOA,OAAOH,EAAAA,GAChC,MAAlChX,KAAK4W,kBAAkBtR,OACzB,QAAOtF,KAAK8W,KAAAA;IAEhB;IAEAM,2CAAAA;AACE,aAAOpX,KAAK4W,kBAAkBrG,IAAKyG,CAAAA,OAAqBA,GAAiBK,mBAAAA,CAAAA;IAC3E;IAEAX,SAAAA;AACE1W,WAAKoX,yCAAAA;IACP;IAEAE,QAAAA;AACEtX,WAAK0W,OAAAA;IACP;EAAA;AAGK,MAAMa,KAA0B,IAAId;AAApC,MAEMe,KAAkB,WAAA;AAC7B,UAAMC,KAAY1L,OAAO2L,aAAAA;AACzB,QAAID,GAAUE,aAAa,EACzB,QAAOF;EAEX;AAPO,MASMG,KAAc,WAAA;AAAW,QAAAC;AACpC,UAAMC,KAA4BD,UAApBA,KAAGL,GAAAA,MAAAA,WAAiBK,KAAAA,SAAjBA,GAAmBE,WAAW,CAAA;AAC/C,QAAID,MAAAA,CACGE,GAAkBF,EAAAA,EACrB,QAAOA;EAGb;AAhBO,MAkBMG,KAAc,SAASH,IAAAA;AAClC,UAAML,KAAY1L,OAAO2L,aAAAA;AAGzB,WAFAD,GAAUS,gBAAAA,GACVT,GAAUU,SAASL,EAAAA,GACZP,GAAwBb,OAAAA;EACjC;AAvBO,MA6BDsB,KAAqBF,CAAAA,OAAaM,GAAcN,GAASO,cAAAA,KAAmBD,GAAcN,GAASQ,YAAAA;AA7BlG,MA+BDF,KAAiB1R,CAAAA,OAAAA,CAAUkN,OAAO2E,eAAe7R,EAAAA;AA/BhD,MC3CM8R,KAAmBlI,CAAAA,OAC9BA,GAAOpM,QAAQ,IAAIkK,OAAM,GAAA3K,OAAIU,CAAAA,GAAoB,GAAA,GAAM,EAAA,EAAID,QAAQ,IAAIkK,OAAM,GAAA3K,OAAIW,CAAAA,GAAsB,GAAA,GAAM,GAAA;AD0CxG,MCtCMqU,KAA6B,IAAIrK,OAAAA,QAAM3K,OAASW,GAAkB,GAAA,CAAA;ADsCxE,MCpCMsU,KAA6BpI,CAAAA,OACxCA,GAEGpM,QAAQ,IAAIkK,OAAAA,GAAM3K,OAAIgV,GAA2BE,MAAAA,GAAU,GAAA,GAAM,GAAA,EAEjEzU,QAAQ,WAAW,GAAA;AD+BjB,MCfD0U,KAAyB,SAAS9G,IAAGC,IAAAA;AACzC,QAAID,GAAEtC,UAAUuC,EAAAA,EACd,QAAO,CAAE,IAAI,EAAA;AAGf,UAAM8G,KAAQC,GAAsBhH,IAAGC,EAAAA,GAAAA,EACjCzM,QAAEA,GAAAA,IAAWuT,GAAME;AAEzB,QAAIC;AAEJ,QAAI1T,IAAQ;AACV,YAAA,EAAM2J,QAAEA,GAAAA,IAAW4J,IACblK,KAAamD,GAAEnD,WAAWO,MAAM,GAAGD,EAAAA,EAAQxL,OAAOqO,GAAEnD,WAAWO,MAAMD,KAAS3J,EAAAA,CAAAA;AACpF0T,MAAAA,KAAQF,GAAsB/G,IAAG1D,EAAYiB,eAAeX,EAAAA,CAAAA;IAC9D,MACEqK,CAAAA,KAAQF,GAAsB/G,IAAGD,EAAAA;AAGnC,WAAO,CAAE+G,GAAME,YAAYvK,SAAAA,GAAYwK,GAAMD,YAAYvK,SAAAA,CAAAA;EAC3D;ADJO,MCMDsK,KAAwB,SAAShH,IAAGC,IAAAA;AACxC,QAAIkH,KAAY,GACZC,KAAcpH,GAAExM,QAChB6T,KAAcpH,GAAEzM;AAEpB,WAAO2T,KAAYC,MAAepH,GAAEvC,OAAO0J,EAAAA,EAAWzJ,UAAUuC,GAAExC,OAAO0J,EAAAA,CAAAA,IACvEA,CAAAA;AAGF,WAAOC,KAAcD,KAAY,KAAKnH,GAAEvC,OAAO2J,KAAc,CAAA,EAAG1J,UAAUuC,GAAExC,OAAO4J,KAAc,CAAA,CAAA,IAC/FD,CAAAA,MACAC;AAGF,WAAO,EACLJ,aAAajH,GAAE5C,MAAM+J,IAAWC,EAAAA,GAChCjK,QAAQgK,GAAAA;EAEZ;ACvEe,MAAMG,KAAN,MAAMA,YAAanI,GAAAA;IAChC,OAAA,gCAAOoI;AAA4C,UAAdC,KAAOjU,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAC7C,UAAA,CAAKiU,GAAQhU,OACX,QAAO,IAAItF;AAEb,UAAIuZ,KAAOjL,GAAIgL,GAAQ,CAAA,CAAA,GACnBzF,KAAO0F,GAAKC,QAAAA;AAOhB,aALAF,GAAQpK,MAAM,CAAA,EAAGjG,QAAS2E,CAAAA,OAAAA;AACxBiG,QAAAA,KAAO0F,GAAKE,oBAAoBnL,GAAIV,EAAAA,CAAAA,GACpC2L,KAAOA,GAAKrK,MAAM2E,EAAAA;MAAK,CAAA,GAGlB0F;IACT;IAEA,OAAA,IAAWG,IAAAA;AACT,aAAOpL,GAAIoL,EAAAA;IACb;IAEA7K,cAAAA;AAAyB,UAAb6K,KAAMrU,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACnByJ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK0Z,SAASC,GAAKD,EAAAA;IACrB;IAEAvQ,IAAI5E,IAAKC,IAAAA;AACP,aAAOxE,KAAK4Z,MAAMhM,GAAOrJ,IAAKC,EAAAA,CAAAA;IAChC;IAEAhC,OAAO+B,IAAAA;AACL,aAAO,IAAI6U,IAAKO,GAAK3Z,KAAK0Z,QAAQnV,EAAAA,CAAAA;IACpC;IAEAyO,IAAIzO,IAAAA;AACF,aAAOvE,KAAK0Z,OAAOnV,EAAAA;IACrB;IAEAsO,IAAItO,IAAAA;AACF,aAAOA,MAAOvE,KAAK0Z;IACrB;IAEAE,MAAMF,IAAAA;AACJ,aAAO,IAAIN,IAAKQ,GAAM5Z,KAAK0Z,QAAQG,GAAMH,EAAAA,CAAAA,CAAAA;IAC3C;IAEAxK,MAAM2E,IAAAA;AACJ,YAAM6F,KAAS,CAAA;AAQf,aANA7J,MAAMC,KAAK+D,EAAAA,EAAM5K,QAAS1E,CAAAA,OAAAA;AACpBvE,aAAK6S,IAAItO,EAAAA,MACXmV,GAAOnV,EAAAA,IAAOvE,KAAK0Z,OAAOnV,EAAAA;MAC5B,CAAA,GAGK,IAAI6U,IAAKM,EAAAA;IAClB;IAEAF,UAAAA;AACE,aAAO5F,OAAOC,KAAK7T,KAAK0Z,MAAAA;IAC1B;IAEAD,oBAAoBF,IAAAA;AAElB,aADAA,KAAOjL,GAAIiL,EAAAA,GACJvZ,KAAKwZ,QAAAA,EAAUtC,OAAQ3S,CAAAA,OAAQvE,KAAK0Z,OAAOnV,EAAAA,MAASgV,GAAKG,OAAOnV,EAAAA,CAAAA;IACzE;IAEAiL,UAAUkK,IAAAA;AACR,aAAO7H,GAAe7R,KAAK8Z,QAAAA,GAAWxL,GAAIoL,EAAAA,EAAQI,QAAAA,CAAAA;IACpD;IAEAC,UAAAA;AACE,aAAiC,MAA1B/Z,KAAKwZ,QAAAA,EAAUlU;IACxB;IAEAwU,UAAAA;AACE,UAAA,CAAK9Z,KAAK6Q,OAAO;AACf,cAAMC,KAAS,CAAA;AACf,mBAAWvM,MAAOvE,KAAK0Z,QAAQ;AAC7B,gBAAMlV,KAAQxE,KAAK0Z,OAAOnV,EAAAA;AAC1BuM,UAAAA,GAAOnH,KAAKmH,GAAOnH,KAAKpF,IAAKC,EAAAA,CAAAA;QAC/B;AACAxE,aAAK6Q,QAAQC,GAAO5B,MAAM,CAAA;MAC5B;AAEA,aAAOlP,KAAK6Q;IACd;IAEAmJ,WAAAA;AACE,aAAOL,GAAK3Z,KAAK0Z,MAAAA;IACnB;IAEAjK,SAAAA;AACE,aAAOzP,KAAKga,SAAAA;IACd;IAEAvI,wBAAAA;AACE,aAAO,EAAEiI,QAAQtI,KAAKO,UAAU3R,KAAK0Z,MAAAA,EAAAA;IACvC;EAAA;AAGF,MAAM9L,KAAS,SAASrJ,IAAKC,IAAAA;AAC3B,UAAMsM,KAAS,CAAA;AAEf,WADAA,GAAOvM,EAAAA,IAAOC,IACPsM;EACT;AAJA,MAMM8I,KAAQ,SAAShM,IAAQ8L,IAAAA;AAC7B,UAAM5I,KAAS6I,GAAK/L,EAAAA;AACpB,eAAWrJ,MAAOmV,IAAQ;AACxB,YAAMlV,KAAQkV,GAAOnV,EAAAA;AACrBuM,MAAAA,GAAOvM,EAAAA,IAAOC;IAChB;AACA,WAAOsM;EACT;AAbA,MAeM6I,KAAO,SAAS/L,IAAQqM,IAAAA;AAC5B,UAAMnJ,KAAS,CAAA;AASf,WARmB8C,OAAOC,KAAKjG,EAAAA,EAAQsM,KAAAA,EAE5BjR,QAAS1E,CAAAA,OAAAA;AACdA,MAAAA,OAAQ0V,OACVnJ,GAAOvM,EAAAA,IAAOqJ,GAAOrJ,EAAAA;IACvB,CAAA,GAGKuM;EACT;AA1BA,MA4BMxC,KAAM,SAASV,IAAAA;AACnB,WAAIA,cAAkBwL,KACbxL,KAEA,IAAIwL,GAAKxL,EAAAA;EAEpB;AAlCA,MAoCMiM,KAAQ,SAASjM,IAAAA;AACrB,WAAIA,cAAkBwL,KACbxL,GAAO8L,SAEP9L;EAEX;ACjJe,MAAMuM,KAAN,MAAMA;IACnB,OAAA,eAAOC;AAA4D,UAC7D/a,IADcgb,KAAgBhV,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAAA,EAAIiV,OAAEA,IAAKC,QAAEA,GAAAA,IAAQlV,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AAEzDkV,MAAAA,MACW,QAATD,OACFA,KAAQ;AAGZ,YAAMhB,KAAU,CAAA;AAuBhB,aArBAzJ,MAAMC,KAAKuK,EAAAA,EAAkBpR,QAAS2E,CAAAA,OAAAA;AAAW,YAAA4M;AAC/C,YAAInb,IAAO;AAAA,cAAAob,IAAAC,IAAAC;AACT,cAAuB,UAAnBF,KAAA7M,GAAOgN,iBAAAA,WAAYH,MAAnBA,GAAA1U,KAAA6H,IAAsB0M,EAAAA,KAAkDI,UAA5CA,MAAIC,KAAAtb,GAAMA,GAAMiG,SAAS,CAAA,GAAGuV,qBAAAA,WAAgBH,MAAxCA,GAAA3U,KAAA4U,IAA2C/M,IAAQ0M,EAAAA,EAErF,QAAA,KADAjb,GAAMsK,KAAKiE,EAAAA;AAGX0L,UAAAA,GAAQ3P,KAAK,IAAI3J,KAAKX,IAAO,EAAEib,OAAAA,IAAOC,QAAAA,GAAAA,CAAAA,CAAAA,GACtClb,KAAQ;QAEZ;AAAA,kBAEAmb,KAAI5M,GAAOgN,iBAAAA,WAAYJ,MAAnBA,GAAAzU,KAAA6H,IAAsB0M,EAAAA,IACxBjb,KAAQ,CAAEuO,EAAAA,IAEV0L,GAAQ3P,KAAKiE,EAAAA;MACf,CAAA,GAGEvO,MACFia,GAAQ3P,KAAK,IAAI3J,KAAKX,IAAO,EAAEib,OAAAA,IAAOC,QAAAA,GAAAA,CAAAA,CAAAA,GAEjCjB;IACT;IAEAzK,cAAAA;AAA6C,UAAjCyK,KAAOjU,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAAA,EAAIiV,OAAEA,IAAKC,QAAEA,GAAAA,IAAQlV,UAAAC,SAAAD,IAAAA,UAAAA,CAAAA,IAAAA;AACzCrF,WAAKsZ,UAAUA,IACXiB,OACFva,KAAKsa,QAAQA,IACbta,KAAKsZ,UAAUtZ,KAAK6O,YAAYuL,aAAapa,KAAKsZ,SAAS,EAAEiB,QAAAA,IAAQD,OAAOta,KAAKsa,QAAQ,EAAA,CAAA;IAE7F;IAEAQ,aAAAA;AACE,aAAO9a,KAAKsZ;IACd;IAEAyB,WAAAA;AACE,aAAO/a,KAAKsa;IACd;IAEA5K,cAAAA;AACE,YAAMmE,KAAO,CAAE,aAAA;AAIf,aAHAhE,MAAMC,KAAK9P,KAAK8a,WAAAA,CAAAA,EAAc7R,QAAS2E,CAAAA,OAAAA;AACrCiG,QAAAA,GAAKlK,KAAKiE,GAAO8B,YAAAA,CAAAA;MAAc,CAAA,GAE1BmE,GAAK7C,KAAK,GAAA;IACnB;EAAA;ACtDa,MAAMgK,KAAN,cAAwB3N,EAAAA;IACrCwB,cAAAA;AAA0B,UAAdyK,KAAOjU,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACpByJ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKsZ,UAAU,CAAA,GAEfzJ,MAAMC,KAAKwJ,EAAAA,EAASrQ,QAAS2E,CAAAA,OAAAA;AAC3B,cAAM2L,KAAOnI,KAAKO,UAAU/D,EAAAA;AACF,gBAAtB5N,KAAKsZ,QAAQC,EAAAA,MACfvZ,KAAKsZ,QAAQC,EAAAA,IAAQ3L;MACvB,CAAA;IAEJ;IAEAqN,KAAKrN,IAAAA;AACH,YAAM2L,KAAOnI,KAAKO,UAAU/D,EAAAA;AAC5B,aAAO5N,KAAKsZ,QAAQC,EAAAA;IACtB;EAAA;AClBa,MAAM2B,KAAN,MAAMA;IACnBrM,YAAYsM,IAAAA;AACVnb,WAAKsX,MAAM6D,EAAAA;IACb;IAEAhS,IAAIrJ,IAAAA;AACF,YAAMyE,KAAM6W,GAAOtb,EAAAA;AACnBE,WAAKmb,SAAS5W,EAAAA,IAAOzE;IACvB;IAEA0C,OAAO1C,IAAAA;AACL,YAAMyE,KAAM6W,GAAOtb,EAAAA,GACb0E,KAAQxE,KAAKmb,SAAS5W,EAAAA;AAC5B,UAAIC,GAEF,QAAA,OADOxE,KAAKmb,SAAS5W,EAAAA,GACdC;IAEX;IAEA8S,QAAAA;AAAqB,UAAf6D,KAAQ9V,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAKf,aAJArF,KAAKmb,WAAW,CAAA,GAChBtL,MAAMC,KAAKqL,EAAAA,EAAUlS,QAASnJ,CAAAA,OAAAA;AAC5BE,aAAKmJ,IAAIrJ,EAAAA;MAAQ,CAAA,GAEZqb;IACT;EAAA;AAGF,MAAMC,KAAUtb,CAAAA,OAAYA,GAAQgJ,QAAQuS;AC1B7B,MAAMC,KAAN,cAAwBjO,EAAAA;IACrCkO,eAAAA;AACE,aAAA,SAAOvb,KAAKwb;IACd;IAEAC,eAAAA;AACE,aAAA,SAAOzb,KAAK0b;IACd;IAEAC,eAAAA;AACE,aAAO3b,KAAK0b,aAAa1b,KAAK4b;IAChC;IAEAC,YAAAA;AACE,aAAO7b,KAAK0b,aAAAA,CAAc1b,KAAK4b;IACjC;IAEAE,aAAAA;AAkBE,aAjBK9b,KAAK+b,YACR/b,KAAK+b,UAAU,IAAIC,QAAQ,CAACC,IAASC,QACnClc,KAAKwb,aAAAA,MACExb,KAAKmc,QAAQ,CAACP,IAAW9K,OAAAA;AAC9B9Q,aAAK4b,YAAYA,IACjB5b,KAAKwb,aAAAA,OACLxb,KAAK0b,YAAAA,MAED1b,KAAK4b,YACPK,GAAQnL,EAAAA,IAERoL,GAAOpL,EAAAA;MACT,CAAA,EAAA,IAKC9Q,KAAK+b;IACd;IAEAI,QAAQpR,IAAAA;AACN,aAAOA,GAAAA,KAAS;IAClB;IAEAqR,UAAAA;AAAU,UAAAC,IAAAC;AAAAA,gBACRD,KAAAA,KAAKN,YAAAA,WAAOM,MAAQ,UAARC,KAAZD,GAAcE,WAAAA,WAAMD,MAApBA,GAAAvW,KAAAsW,EAAAA,GACArc,KAAK+b,UAAU,MACf/b,KAAKwb,aAAa,MAClBxb,KAAK0b,YAAY,MACjB1b,KAAK4b,YAAY;IACnB;EAAA;AAGFN,KAAUkB,YAAY,mBAAA,GACtBlB,GAAUkB,YAAY,oBAAA;ACnDP,MAAMC,KAAN,cAAyBpP,EAAAA;IACtCwB,YAAYjB,IAAAA;AAAsB,UAAdrF,KAAOlD,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAC5ByJ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK4N,SAASA,IACd5N,KAAKuI,UAAUA,IACfvI,KAAK0c,aAAa,CAAA,GAClB1c,KAAK2c,WAAW3c;IAClB;IAEA4c,WAAAA;AAEE,aADK5c,KAAK6c,UAAS7c,KAAK6c,QAAQ7c,KAAK8c,YAAAA,IAC9B9c,KAAK6c,MAAMtM,IAAK7J,CAAAA,OAASA,GAAKqW,UAAAA,IAAU,CAAA;IACjD;IAEAC,aAAAA;AAAa,UAAAC;AAGX,aAFAjd,KAAK6c,QAAQ,MACb7c,KAAK0c,aAAa,CAAA,GACI,UAAtBO,KAAOjd,KAAKkd,eAAAA,WAAUD,KAAAA,SAAfA,GAAiBD,WAAAA;IAC1B;IAEAG,wBAAwBvP,IAAAA;AAAQ,UAAAwP;AAC9B,aAAqC,UAArCA,KAAOpd,KAAKqd,kBAAkBzP,EAAAA,MAAAA,WAAOwP,KAAAA,SAA9BA,GAAgCJ,WAAAA;IACzC;IAEAM,4BAA4BC,IAAW3P,IAAQrF,IAAAA;AAC7C,UAAIiV,KAAOxd,KAAKyd,uBAAuB7P,EAAAA;AAOvC,aANI4P,KACFxd,KAAK0d,gBAAgBF,EAAAA,KAErBA,KAAOxd,KAAK2d,gBAAAA,GAAmBtY,SAAAA,GAC/BrF,KAAK4d,mBAAmBJ,IAAM5P,EAAAA,IAEzB4P;IACT;IAEAG,gBAAgBJ,IAAW3P,IAAAA;AAAsB,UAAdrF,KAAOlD,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACvCuI,MAAAA,cAAkBuM,OACpB5R,GAAQgV,YAAYA,IACpBA,KAAYM;AAGd,YAAML,KAAO,IAAID,GAAU3P,IAAQrF,EAAAA;AACnC,aAAOvI,KAAK0d,gBAAgBF,EAAAA;IAC9B;IAEAE,gBAAgBF,IAAAA;AAId,aAHAA,GAAKN,aAAald,MAClBwd,GAAKb,WAAW3c,KAAK2c,UACrB3c,KAAK0c,WAAW/S,KAAK6T,EAAAA,GACdA;IACT;IAEAM,mBAAAA;AACE,UAAIC,KAAQ,CAAA;AAOZ,aALA/d,KAAK0c,WAAWzT,QAAS+U,CAAAA,OAAAA;AACvBD,QAAAA,GAAMpU,KAAKqU,EAAAA,GACXD,KAAQA,GAAMta,OAAOua,GAAUF,iBAAAA,CAAAA;MAAmB,CAAA,GAG7CC;IACT;IAEAE,cAAAA;AACE,aAAOje,KAAKke,qBAAqBle,KAAK4N,MAAAA;IACxC;IAEAsQ,qBAAqBtQ,IAAAA;AACnB,YAAMzC,KAAKyC,QAAAA,KAAAA,SAAAA,GAAQzC;AACnB,UAAIA,GACF,QAAOnL,KAAK2c,SAAS7c,QAAQ0U,cAAa,kBAAA/Q,OAAmB0H,IAAE,IAAA,CAAA;IAEnE;IAEAkS,kBAAkBzP,IAAAA;AAChB,iBAAW4P,MAAQxd,KAAK8d,iBAAAA,EACtB,KAAIN,GAAK5P,WAAWA,GAClB,QAAO4P;IAGb;IAEAW,eAAAA;AACE,aAAIne,KAAK2c,aAAa3c,OAMbA,KAAK2c,SAASwB,aAAAA,IALjBne,KAAKoe,qBAAAA,KACFpe,KAAKqe,cAAare,KAAKqe,YAAY,CAAA,IACjCre,KAAKqe,aAAAA;IAKlB;IAEAD,uBAAAA;AACE,aAAA,UAAOpe,KAAKse;IACd;IAEAC,oBAAAA;AACEve,WAAKse,mBAAAA;IACP;IAEAE,qBAAAA;AACExe,WAAKse,mBAAAA;IACP;IAEAb,uBAAuB7P,IAAAA;AAAQ,UAAA6Q;AAC7B,aAA0B,UAA1BA,KAAOze,KAAKme,aAAAA,MAAAA,WAAcM,KAAAA,SAAnBA,GAAsB7Q,GAAO8B,YAAAA,CAAAA;IACtC;IAEAkO,mBAAmBJ,IAAM5P,IAAAA;AACvB,YAAM8Q,KAAQ1e,KAAKme,aAAAA;AACfO,MAAAA,OACFA,GAAM9Q,GAAO8B,YAAAA,CAAAA,IAAiB8N;IAElC;IAEAmB,4BAAAA;AACE,YAAMD,KAAQ1e,KAAKme,aAAAA;AACnB,UAAIO,IAAO;AACT,cACME,KADQ5e,KAAK8d,iBAAAA,EAAmBra,OAAOzD,IAAAA,EACpBuQ,IAAKiN,CAAAA,OAASA,GAAK5P,OAAO8B,YAAAA,CAAAA;AACnD,mBAAWnL,MAAOma,GACXE,CAAAA,GAAW3U,SAAS1F,EAAAA,KAAAA,OAChBma,GAAMna,EAAAA;MAGnB;IACF;EAAA;AAGK,MAAMsZ,KAAN,cAA8BpB,GAAAA;IACnC5N,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK6e,cAAc7e,KAAK4N,QACxB5N,KAAKud,YAAYvd,KAAKuI,QAAQgV,WAAAA,OACvBvd,KAAKuI,QAAQgV;IACtB;IAEAuB,gBAAAA;AAME,aALK9e,KAAK0c,WAAWpX,UACnBuK,MAAMC,KAAK9P,KAAK6e,YAAY/D,WAAAA,CAAAA,EAAc7R,QAAS2E,CAAAA,OAAAA;AACjD5N,aAAKsd,4BAA4Btd,KAAKud,WAAW3P,IAAQ5N,KAAKuI,OAAAA;MAAQ,CAAA,GAGnEvI,KAAK0c;IACd;IAEAI,cAAAA;AACE,YAAMhd,KAAUE,KAAK+e,uBAAAA;AAQrB,aANA/e,KAAK8e,cAAAA,EAAgB7V,QAASuU,CAAAA,OAAAA;AAC5B3N,cAAMC,KAAK0N,GAAKZ,SAAAA,CAAAA,EAAY3T,QAASvC,CAAAA,OAAAA;AACnC5G,UAAAA,GAAQyJ,YAAY7C,EAAAA;QAAK,CAAA;MACzB,CAAA,GAGG,CAAE5G,EAAAA;IACX;IAEAif,yBAAAA;AAA4D,UAArCzE,KAAKjV,UAAAC,SAAA,KAAA,WAAAD,UAAAE,CAAAA,IAAAF,UAAAA,CAAAA,IAAGrF,KAAK6e,YAAY9D,SAAAA;AAC9C,aAAO/a,KAAK8e,cAAAA,EAAgB,CAAA,EAAGC,uBAAuBzE,EAAAA;IACxD;EAAA;ACpKF,MAAA,EAAM0E,SACJA,IAAOC,gBACPA,IAAcC,UACdA,IAAQ3G,gBACRA,IAAc4G,0BACdA,GAAAA,IACEvL;AAEJ,MAAA,EAAIwL,QAAEA,IAAMC,MAAEA,IAAIC,QAAEA,GAAAA,IAAW1L;AAA/B,MAA+BA,EAC3B7F,OAAEA,IAAKwR,WAAEA,GAAAA,IAAiC,eAAA,OAAZC,WAA2BA;AAExDJ,SACHA,KAAS,SAAUK,IAAAA;AACjB,WAAOA;EACR,IAGEJ,OACHA,KAAO,SAAUI,IAAAA;AACf,WAAOA;EACR,IAGE1R,OACHA,KAAQ,SAAU2R,IAAKC,IAAWzR,IAAAA;AAChC,WAAOwR,GAAI3R,MAAM4R,IAAWzR,EAAAA;EAC7B,IAGEqR,OACHA,KAAY,SAAUK,IAAM1R,IAAAA;AAC1B,WAAO,IAAI0R,GAAAA,GAAQ1R,EAAAA;EACpB;AAGH,MAAM2R,KAAeC,GAAQjQ,MAAMvO,UAAU2H,OAAAA;AAA7C,MAEM8W,KAAmBD,GAAQjQ,MAAMvO,UAAU0e,WAAAA;AAFjD,MAGMC,KAAWH,GAAQjQ,MAAMvO,UAAU4e,GAAAA;AAHzC,MAIMC,KAAYL,GAAQjQ,MAAMvO,UAAUqI,IAAAA;AAJ1C,MAMMyW,KAAcN,GAAQjQ,MAAMvO,UAAU8Q,MAAAA;AAN5C,MAQMiO,KAAoBP,GAAQ1P,OAAO9O,UAAUhB,WAAAA;AARnD,MASMggB,KAAiBR,GAAQ1P,OAAO9O,UAAUkN,QAAAA;AAThD,MAUM+R,KAAcT,GAAQ1P,OAAO9O,UAAUZ,KAAAA;AAV7C,MAWM8f,KAAgBV,GAAQ1P,OAAO9O,UAAU4C,OAAAA;AAX/C,MAYMuc,KAAgBX,GAAQ1P,OAAO9O,UAAUof,OAAAA;AAZ/C,MAaMC,KAAab,GAAQ1P,OAAO9O,UAAU2R,IAAAA;AAb5C,MAeM2N,KAAuBd,GAAQlM,OAAOtS,UAAUuf,cAAAA;AAftD,MAiBMC,KAAahB,GAAQ1R,OAAO9M,UAAUzB,IAAAA;AAjB5C,MAmBMkhB,MA0BkBC,KA1BYC,WA2B3B,WAAA;AAAA,aAAAC,KAAA7b,UAAAC,QAAI4I,KAAW2B,IAAAA,MAAAqR,EAAAA,GAAAC,KAAA,GAAAA,KAAAD,IAAAC,KAAXjT,CAAAA,GAAWiT,EAAAA,IAAA9b,UAAA8b,EAAAA;AAAA,WAAQ5B,GAAUyB,IAAM9S,EAAAA;EAAK;AADrD,MAAwB8S;AAlBxB,WAASlB,GACPkB,IAAAA;AAEA,WAAO,SAACI,IAAAA;AACFA,MAAAA,cAAmBhT,WACrBgT,GAAQC,YAAY;AACrB,eAAAnP,KAAA7M,UAAAC,QAHsB4I,KAAAA,IAAW2B,MAAAqC,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,GAAAC,KAAA,GAAAA,KAAAD,IAAAC,KAAXjE,CAAAA,GAAWiE,KAAA9M,CAAAA,IAAAA,UAAA8M,EAAAA;AAKlC,aAAOpE,GAAMiT,IAAMI,IAASlT,EAAAA;IAC7B;EACH;AAoBA,WAASoT,GACPC,IACA1Q,IAAAA;AACyE,QAAzE2Q,KAAAnc,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAwDgb;AAEpDpB,UAIFA,GAAesC,IAAK,IAAA;AAGtB,QAAIE,KAAI5Q,GAAMvL;AACd,WAAOmc,QAAK;AACV,UAAI3hB,KAAU+Q,GAAM4Q,EAAAA;AACpB,UAAuB,YAAA,OAAZ3hB,IAAsB;AAC/B,cAAM4hB,KAAYF,GAAkB1hB,EAAAA;AAChC4hB,QAAAA,OAAc5hB,OAEXof,GAASrO,EAAAA,MACXA,GAAgB4Q,EAAAA,IAAKC,KAGxB5hB,KAAU4hB;MAEd;AAEAH,MAAAA,GAAIzhB,EAAAA,IAAAA;IACN;AAEA,WAAOyhB;EACT;AAQA,WAASI,GAAc9Q,IAAAA;AACrB,aAASmB,KAAQ,GAAGA,KAAQnB,GAAMvL,QAAQ0M,MAAS;AACzB4O,SAAqB/P,IAAOmB,EAAAA,MAGlDnB,GAAMmB,EAAAA,IAAS;IAEnB;AAEA,WAAOnB;EACT;AAQA,WAAS+Q,GAAqChU,IAAAA;AAC5C,UAAMiU,KAAYvC,GAAO,IAAA;AAEzB,eAAK,CAAOwC,IAAUtd,EAAAA,KAAUwa,GAAQpR,EAAAA,GAAS;AACvBgT,SAAqBhT,IAAQkU,EAAAA,MAG/CjS,MAAM6F,QAAQlR,EAAAA,IAChBqd,GAAUC,EAAAA,IAAYH,GAAWnd,EAAAA,IAEjCA,MACiB,YAAA,OAAVA,MACPA,GAAMqK,gBAAgB+E,SAEtBiO,GAAUC,EAAAA,IAAYF,GAAMpd,EAAAA,IAE5Bqd,GAAUC,EAAAA,IAAYtd;IAG5B;AAEA,WAAOqd;EACT;AASA,WAASE,GACPnU,IACAvM,IAAAA;AAEA,WAAkB,SAAXuM,MAAiB;AACtB,YAAMoU,KAAO7C,GAAyBvR,IAAQvM,EAAAA;AAE9C,UAAI2gB,IAAM;AACR,YAAIA,GAAKhP,IACP,QAAO8M,GAAQkC,GAAKhP,GAAAA;AAGtB,YAA0B,cAAA,OAAfgP,GAAKxd,MACd,QAAOsb,GAAQkC,GAAKxd,KAAAA;MAExB;AAEAoJ,MAAAA,KAAS2K,GAAe3K,EAAAA;IAC1B;AAMA,WAJA,WAAA;AACE,aAAO;IACT;EAGF;AAAA,MAAA,KAAA,GAAA,CAAA,KAAA,QAAA,WAAA,WAAA,QAAA,WAAA,SAAA,SAAA,KAAA,OAAA,OAAA,OAAA,SAAA,cAAA,QAAA,MAAA,UAAA,UAAA,WAAA,UAAA,QAAA,QAAA,OAAA,YAAA,WAAA,QAAA,YAAA,MAAA,aAAA,OAAA,WAAA,OAAA,UAAA,OAAA,OAAA,MAAA,MAAA,WAAA,MAAA,YAAA,cAAA,UAAA,QAAA,UAAA,QAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,QAAA,UAAA,UAAA,MAAA,QAAA,KAAA,OAAA,SAAA,OAAA,OAAA,SAAA,UAAA,MAAA,QAAA,OAAA,QAAA,WAAA,QAAA,YAAA,SAAA,OAAA,QAAA,MAAA,YAAA,UAAA,UAAA,KAAA,WAAA,OAAA,YAAA,KAAA,MAAA,MAAA,QAAA,KAAA,QAAA,WAAA,UAAA,UAAA,SAAA,UAAA,UAAA,QAAA,UAAA,UAAA,SAAA,OAAA,WAAA,OAAA,SAAA,SAAA,MAAA,YAAA,YAAA,SAAA,MAAA,SAAA,QAAA,MAAA,SAAA,MAAA,KAAA,MAAA,OAAA,SAAA,KAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,OAAA,KAAA,YAAA,eAAA,gBAAA,gBAAA,iBAAA,oBAAA,UAAA,YAAA,QAAA,QAAA,WAAA,UAAA,QAAA,KAAA,SAAA,YAAA,SAAA,SAAA,QAAA,kBAAA,UAAA,QAAA,YAAA,SAAA,QAAA,WAAA,WAAA,YAAA,kBAAA,QAAA,QAAA,SAAA,UAAA,UAAA,QAAA,YAAA,SAAA,QAAA,SAAA,QAAA,OAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,WAAA,iBAAA,uBAAA,eAAA,oBAAA,qBAAA,qBAAA,kBAAA,gBAAA,WAAA,WAAA,WAAA,WAAA,WAAA,kBAAA,WAAA,WAAA,eAAA,gBAAA,YAAA,gBAAA,sBAAA,eAAA,UAAA,cAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,WAAA,iBAAA,UAAA,WAAA,aAAA,oBAAA,kBAAA,iBAAA,iBAAA,iBAAA,SAAA,aAAA,QAAA,gBAAA,aAAA,WAAA,iBAAA,UAAA,OAAA,cAAA,WAAA,KAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,QAAA,YAAA,UAAA,WAAA,SAAA,UAAA,MAAA,cAAA,iBAAA,MAAA,MAAA,SAAA,WAAA,YAAA,SAAA,QAAA,MAAA,UAAA,SAAA,UAAA,QAAA,QAAA,WAAA,UAAA,OAAA,SAAA,OAAA,UAAA,cAAA,aAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,WAAA,eAAA,cAAA,YAAA,aAAA,WAAA,WAAA,UAAA,UAAA,SAAA,aAAA,cAAA,kBAAA,eAAA,MAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,OAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,UAAA,UAAA,SAAA,OAAA,kBAAA,gBAAA,wBAAA,YAAA,cAAA,WAAA,UAAA,WAAA,eAAA,eAAA,WAAA,QAAA,SAAA,SAAA,SAAA,QAAA,WAAA,YAAA,gBAAA,UAAA,eAAA,YAAA,YAAA,WAAA,OAAA,YAAA,2BAAA,yBAAA,YAAA,aAAA,WAAA,gBAAA,QAAA,OAAA,WAAA,UAAA,UAAA,QAAA,QAAA,YAAA,MAAA,aAAA,aAAA,SAAA,QAAA,SAAA,QAAA,QAAA,WAAA,QAAA,OAAA,OAAA,aAAA,SAAA,UAAA,OAAA,aAAA,YAAA,SAAA,QAAA,SAAA,WAAA,cAAA,UAAA,QAAA,WAAA,WAAA,eAAA,eAAA,WAAA,iBAAA,uBAAA,UAAA,WAAA,WAAA,cAAA,YAAA,OAAA,YAAA,OAAA,YAAA,QAAA,QAAA,WAAA,cAAA,SAAA,YAAA,SAAA,QAAA,SAAA,QAAA,WAAA,SAAA,OAAA,UAAA,QAAA,SAAA,WAAA,YAAA,SAAA,aAAA,QAAA,UAAA,UAAA,SAAA,SAAA,QAAA,SAAA,MAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,iBAAA,cAAA,YAAA,sBAAA,aAAA,UAAA,iBAAA,iBAAA,WAAA,iBAAA,kBAAA,SAAA,QAAA,MAAA,SAAA,QAAA,iBAAA,aAAA,aAAA,SAAA,uBAAA,+BAAA,iBAAA,mBAAA,MAAA,MAAA,KAAA,MAAA,MAAA,mBAAA,aAAA,WAAA,WAAA,OAAA,YAAA,aAAA,OAAA,YAAA,QAAA,gBAAA,aAAA,UAAA,eAAA,eAAA,iBAAA,eAAA,aAAA,oBAAA,gBAAA,cAAA,gBAAA,eAAA,MAAA,MAAA,MAAA,MAAA,cAAA,YAAA,iBAAA,qBAAA,UAAA,QAAA,MAAA,mBAAA,MAAA,OAAA,aAAA,KAAA,MAAA,MAAA,MAAA,MAAA,WAAA,aAAA,cAAA,YAAA,QAAA,gBAAA,kBAAA,gBAAA,oBAAA,kBAAA,SAAA,cAAA,cAAA,gBAAA,gBAAA,eAAA,eAAA,oBAAA,aAAA,OAAA,QAAA,SAAA,UAAA,QAAA,OAAA,QAAA,cAAA,UAAA,YAAA,WAAA,SAAA,UAAA,eAAA,UAAA,YAAA,eAAA,QAAA,cAAA,uBAAA,oBAAA,gBAAA,UAAA,iBAAA,uBAAA,kBAAA,KAAA,MAAA,MAAA,UAAA,QAAA,QAAA,eAAA,aAAA,WAAA,UAAA,UAAA,SAAA,QAAA,mBAAA,SAAA,oBAAA,oBAAA,gBAAA,eAAA,gBAAA,eAAA,cAAA,gBAAA,oBAAA,qBAAA,kBAAA,mBAAA,qBAAA,kBAAA,UAAA,gBAAA,SAAA,gBAAA,kBAAA,YAAA,eAAA,WAAA,WAAA,aAAA,oBAAA,eAAA,mBAAA,kBAAA,cAAA,QAAA,MAAA,MAAA,WAAA,UAAA,WAAA,cAAA,WAAA,cAAA,iBAAA,iBAAA,SAAA,gBAAA,QAAA,gBAAA,oBAAA,oBAAA,KAAA,MAAA,MAAA,SAAA,KAAA,MAAA,MAAA,KAAA,YAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,UAAA,eAAA,SAAA,YAAA,SAAA,gBAAA,eAAA,cAAA,cAAA,SAAA,OAAA,WAAA,gBAAA,YAAA,SAAA,SAAA,UAAA,QAAA,MAAA,WAAA,UAAA,iBAAA,UAAA,UAAA,kBAAA,aAAA,YAAA,eAAA,WAAA,WAAA,iBAAA,YAAA,YAAA,QAAA,YAAA,YAAA,cAAA,WAAA,UAAA,UAAA,eAAA,iBAAA,wBAAA,aAAA,aAAA,cAAA,YAAA,kBAAA,kBAAA,aAAA,WAAA,SAAA,OAAA,CAAA;AAAA,MAAA,KAAA,GAAA,CAAA,cAAA,UAAA,eAAA,aAAA,aAAA,CAAA;AAAA,MAAA,KAAA,GAAA,2BAAA;AAAA,MAAA,KAAA,GAAA,uBAAA;AAAA,MAAA,KAAA,GAAA,eAAA;AAAA,MAAA,KAAA,GAAA,8BAAA;AAAA,MAAA,KAAA,GAAA,gBAAA;AAAA,MAAA,KAAA,GAAA,2FAAA;AAAA,MAAA,KAAA,GAAA,uBAAA;AAAA,MAAA,KAAA,GAAA,6DAAA;AAAA,MAAA,KAAA,GAAA,SAAA;AAAA,MAAA,KAAA,GAAA,0BAAA;AAAA,MAAA,KAAA,OAAA,OAAA,EAAA,WAAA,MAAA,WAAA,IAAA,iBAAA,IAAA,gBAAA,IAAA,WAAA,IAAA,cAAA,IAAA,UAAA,IAAA,gBAAA,IAAA,mBAAA,IAAA,eAAA,IAAA,aAAA,GAAA,CAAA;AAAA,MAAA,KAAA;AAAA,MAAA,KAAA;AAAA,MAAA,KAAA;AAAA,MAAA,KAAA;AAAA,MAAA,KAAA;AAAA,MAAA,KAAA,WAAA;AAAA,WAAA,eAAA,OAAA,SAAA,OAAA;EAAA;AAAA,MAAA,KAAA,SAAAqU,KAAA;AAAA,QAAAC,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAA,GAAA;AAAA,UAAAC,KAAA,CAAAD,OAAAD,GAAAC,EAAA;AAAA,QAAAC,GAAA,UAAA,SAAAA,GAAA,UAAA,CAAA,GAAA,CAAAD,MAAA,CAAAA,GAAA,YAAAA,GAAA,SAAA,aAAA,MAAA,CAAAA,GAAA,QAAA,QAAAC,GAAA,cAAA,OAAAA;AAAA,QAAA,EAAA,UAAAC,GAAA,IAAAF;AAAA,UAAAG,KAAAD,IAAAE,KAAAD,GAAA,eAAA,EAAA,kBAAAE,IAAA,qBAAAzQ,IAAA,MAAA2P,IAAA,SAAAe,IAAA,YAAAC,IAAA,cAAAC,KAAAR,GAAA,gBAAAA,GAAA,iBAAA,iBAAAS,IAAA,WAAAC,IAAA,cAAAC,GAAA,IAAAX,IAAAY,KAAAN,GAAA,WAAAO,KAAA,GAAAD,IAAA,WAAA,GAAA/Q,KAAA,GAAA+Q,IAAA,QAAA,GAAAE,KAAA,GAAAF,IAAA,aAAA,GAAAG,KAAA,GAAAH,IAAA,YAAA,GAAAI,KAAA,GAAAJ,IAAA,YAAA;AAAA,QAAA,cAAA,OAAAhR,IAAA;AAAA,YAAAmQ,KAAAG,GAAA,cAAA,UAAA;AAAA,MAAAH,GAAA,WAAAA,GAAA,QAAA,kBAAAG,KAAAH,GAAA,QAAA;IAAA;AAAA,QAAAxC,IAAA0D,KAAA;AAAA,UAAA,EAAA,gBAAAC,IAAA,oBAAAC,IAAA,wBAAAC,IAAA,sBAAAC,GAAA,IAAAnB,IAAA,EAAA,YAAAoB,GAAA,IAAAnB;AAAA,QAAAoB,KAAA,EAAA,yBAAA,CAAA,GAAA,uBAAA,CAAA,GAAA,wBAAA,CAAA,GAAA,0BAAA,CAAA,GAAA,wBAAA,CAAA,GAAA,yBAAA,CAAA,GAAA,uBAAA,CAAA,GAAA,qBAAA,CAAA,GAAA,wBAAA,CAAA,EAAA;AAAA,IAAAtB,GAAA,cAAA,cAAA,OAAA,MAAA,cAAA,OAAAe,MAAAE,MAAA,WAAAA,GAAA;AAAA,UAAA,EAAA,eAAAM,IAAA,UAAAC,IAAA,aAAAC,IAAA,WAAAC,IAAA,WAAAC,IAAA,mBAAAC,IAAA,iBAAAC,IAAA,gBAAAC,GAAA,IAAA;AAAA,QAAA,EAAA,gBAAAC,GAAA,IAAA,IAAAC,KAAA;AAAA,UAAA/W,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,CAAA;AAAA,QAAAgX,KAAA;AAAA,UAAAC,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,CAAA;AAAA,QAAAC,KAAA,OAAA,KAAA,GAAA,MAAA,EAAA,cAAA,EAAA,UAAA,MAAA,cAAA,OAAA,YAAA,MAAA,OAAA,KAAA,GAAA,oBAAA,EAAA,UAAA,MAAA,cAAA,OAAA,YAAA,MAAA,OAAA,KAAA,GAAA,gCAAA,EAAA,UAAA,MAAA,cAAA,OAAA,YAAA,MAAA,OAAA,MAAA,EAAA,CAAA,CAAA,GAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,MAAAC,KAAA,OAAAC,KAAA,MAAAC,KAAA,OAAAC,KAAA,MAAAC,KAAA,OAAAC,KAAA,OAAAC,KAAA,OAAAC,MAAA,OAAAC,MAAA,OAAAC,MAAA,OAAAC,MAAA,MAAAC,MAAA,OAAAC,MAAA,MAAAC,MAAA,OAAAC,MAAA,CAAA,GAAAC,MAAA;AAAA,UAAAC,MAAA,GAAA,CAAA,GAAA,CAAA,kBAAA,SAAA,YAAA,QAAA,iBAAA,QAAA,UAAA,QAAA,MAAA,MAAA,MAAA,MAAA,SAAA,WAAA,YAAA,YAAA,aAAA,UAAA,SAAA,OAAA,YAAA,SAAA,SAAA,SAAA,KAAA,CAAA;AAAA,QAAAC,MAAA;AAAA,UAAAC,MAAA,GAAA,CAAA,GAAA,CAAA,SAAA,SAAA,OAAA,UAAA,SAAA,OAAA,CAAA;AAAA,QAAAC,MAAA;AAAA,UAAAC,MAAA,GAAA,CAAA,GAAA,CAAA,OAAA,SAAA,OAAA,MAAA,SAAA,QAAA,WAAA,eAAA,QAAA,WAAA,SAAA,SAAA,SAAA,OAAA,CAAA,GAAAC,MAAA,sCAAAC,MAAA,8BAAAC,MAAA;AAAA,QAAAC,MAAAD,KAAAE,MAAA,OAAAC,MAAA;AAAA,UAAAC,MAAA,GAAA,CAAA,GAAA,CAAAN,KAAAC,KAAAC,GAAA,GAAA,EAAA;AAAA,QAAAK,MAAA,GAAA,CAAA,GAAA,CAAA,MAAA,MAAA,MAAA,MAAA,OAAA,CAAA,GAAAC,MAAA,GAAA,CAAA,GAAA,CAAA,gBAAA,CAAA;AAAA,UAAAC,MAAA,GAAA,CAAA,GAAA,CAAA,SAAA,SAAA,QAAA,KAAA,QAAA,CAAA;AAAA,QAAAC,MAAA;AAAA,UAAAC,MAAA,CAAA,yBAAA,WAAA;AAAA,QAAAC,MAAA,MAAAC,MAAA;AAAA,UAAAC,MAAA1E,GAAA,cAAA,MAAA,GAAA2E,MAAA,SAAA9E,IAAA;AAAA,aAAAA,cAAA,UAAAA,cAAA;IAAA,GAAA+E,MAAA,WAAA;AAAA,UAAA/E,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAA,CAAA;AAAA,UAAA,CAAA4E,OAAAA,QAAA5E,IAAA;AAAA,YAAAA,MAAA,YAAA,OAAAA,OAAAA,KAAA,CAAA,IAAAA,KAAA,GAAAA,EAAA,GAAAyE,MAAA,OAAAC,IAAA,QAAA1E,GAAA,iBAAA,IAAA,cAAAA,GAAA,mBAAA2E,MAAA,4BAAAF,MAAA,KAAA,IAAAvC,KAAA,GAAAlC,IAAA,cAAA,IAAA,GAAA,CAAA,GAAAA,GAAA,cAAA2E,GAAA,IAAAxZ,IAAAgX,KAAA,GAAAnC,IAAA,cAAA,IAAA,GAAA,CAAA,GAAAA,GAAA,cAAA2E,GAAA,IAAAvC,IAAAgC,MAAA,GAAApE,IAAA,oBAAA,IAAA,GAAA,CAAA,GAAAA,GAAA,oBAAA,EAAA,IAAAqE,KAAAR,MAAA,GAAA7D,IAAA,mBAAA,IAAA,GAAA,GAAA8D,GAAA,GAAA9D,GAAA,mBAAA2E,GAAA,IAAAb,KAAAH,MAAA,GAAA3D,IAAA,mBAAA,IAAA,GAAA,GAAA4D,GAAA,GAAA5D,GAAA,mBAAA2E,GAAA,IAAAf,KAAAH,MAAA,GAAAzD,IAAA,iBAAA,IAAA,GAAA,CAAA,GAAAA,GAAA,iBAAA2E,GAAA,IAAAjB,KAAApB,KAAA,GAAAtC,IAAA,aAAA,IAAA,GAAA,CAAA,GAAAA,GAAA,aAAA2E,GAAA,IAAA,CAAA,GAAApC,KAAA,GAAAvC,IAAA,aAAA,IAAA,GAAA,CAAA,GAAAA,GAAA,aAAA2E,GAAA,IAAA,CAAA,GAAAnB,MAAA,CAAA,CAAA,GAAAxD,IAAA,cAAA,KAAAA,GAAA,cAAAwC,KAAA,UAAAxC,GAAA,iBAAAyC,KAAA,UAAAzC,GAAA,iBAAA0C,KAAA1C,GAAA,2BAAA,OAAA2C,KAAA,UAAA3C,GAAA,0BAAA4C,KAAA5C,GAAA,sBAAA,OAAA6C,KAAA,UAAA7C,GAAA,cAAA8C,KAAA9C,GAAA,kBAAA,OAAAiD,MAAAjD,GAAA,cAAA,OAAAkD,MAAAlD,GAAA,uBAAA,OAAAmD,MAAAnD,GAAA,uBAAA,OAAAgD,KAAAhD,GAAA,cAAA,OAAAoD,MAAA,UAAApD,GAAA,cAAAqD,MAAArD,GAAA,wBAAA,OAAAsD,MAAA,UAAAtD,GAAA,cAAAuD,MAAAvD,GAAA,YAAA,OAAAiC,KAAAjC,GAAA,sBAAA,IAAAkE,MAAAlE,GAAA,aAAAiE,KAAAK,MAAAtE,GAAA,kCAAAsE,KAAAC,MAAAvE,GAAA,2BAAAuE,KAAAlC,KAAArC,GAAA,2BAAA,CAAA,GAAAA,GAAA,2BAAA8E,IAAA9E,GAAA,wBAAA,YAAA,MAAAqC,GAAA,eAAArC,GAAA,wBAAA,eAAAA,GAAA,2BAAA8E,IAAA9E,GAAA,wBAAA,kBAAA,MAAAqC,GAAA,qBAAArC,GAAA,wBAAA,qBAAAA,GAAA,2BAAA,aAAA,OAAAA,GAAA,wBAAA,mCAAAqC,GAAA,iCAAArC,GAAA,wBAAA,iCAAA4C,OAAAH,KAAA,QAAAS,QAAAD,MAAA,OAAAO,QAAAtB,KAAA,GAAA,CAAA,GAAA,EAAA,GAAAC,KAAA,CAAA,GAAA,SAAAqB,IAAA,SAAA,GAAAtB,IAAA,EAAA,GAAA,GAAAC,IAAA,EAAA,IAAA,SAAAqB,IAAA,QAAA,GAAAtB,IAAA,EAAA,GAAA,GAAAC,IAAA,EAAA,GAAA,GAAAA,IAAA,EAAA,IAAA,SAAAqB,IAAA,eAAA,GAAAtB,IAAA,EAAA,GAAA,GAAAC,IAAA,EAAA,GAAA,GAAAA,IAAA,EAAA,IAAA,SAAAqB,IAAA,WAAA,GAAAtB,IAAA,EAAA,GAAA,GAAAC,IAAA,EAAA,GAAA,GAAAA,IAAA,EAAA,KAAAnC,GAAA,aAAAkC,OAAA/W,OAAA+W,KAAA,GAAAA,EAAA,IAAA,GAAAA,IAAAlC,GAAA,UAAA2E,GAAA,IAAA3E,GAAA,aAAAmC,OAAAC,OAAAD,KAAA,GAAAA,EAAA,IAAA,GAAAA,IAAAnC,GAAA,UAAA2E,GAAA,IAAA3E,GAAA,qBAAA,GAAA6D,KAAA7D,GAAA,mBAAA2E,GAAA,GAAA3E,GAAA,oBAAAyD,QAAAC,QAAAD,MAAA,GAAAA,GAAA,IAAA,GAAAA,KAAAzD,GAAA,iBAAA2E,GAAA,IAAArB,QAAApB,GAAA,OAAA,IAAA,OAAAY,MAAA,GAAAZ,IAAA,CAAA,QAAA,QAAA,MAAA,CAAA,GAAAA,GAAA,UAAA,GAAAA,IAAA,CAAA,OAAA,CAAA,GAAA,OAAAI,GAAA,QAAAtC,GAAA,sBAAA;AAAA,cAAA,cAAA,OAAAA,GAAA,qBAAA,WAAA,OAAA,GAAA,6EAAA;AAAA,cAAA,cAAA,OAAAA,GAAA,qBAAA,gBAAA,OAAA,GAAA,kFAAA;AAAA,UAAAxC,KAAAwC,GAAA,sBAAAkB,KAAA1D,GAAA,WAAA,EAAA;QAAA,MAAA,YAAAA,OAAAA,KAAA,SAAAwC,IAAAC,IAAA;AAAA,cAAA,YAAA,OAAAD,MAAA,cAAA,OAAAA,GAAA,aAAA,QAAA;AAAA,cAAAE,KAAA;AAAA,gBAAAC,KAAA;AAAA,UAAAF,MAAAA,GAAA,aAAAE,EAAA,MAAAD,KAAAD,GAAA,aAAAE,EAAA;AAAA,gBAAAC,KAAA,eAAAF,KAAA,MAAAA,KAAA;AAAA,cAAA;AAAA,mBAAAF,GAAA,aAAAI,IAAA,EAAA,YAAA,CAAAJ,OAAAA,IAAA,iBAAA,CAAAA,OAAAA,GAAA,CAAA;UAAA,SAAAA,IAAA;AAAA,mBAAA,QAAA,KAAA,yBAAAI,KAAA,wBAAA,GAAA;UAAA;QAAA,EAAAQ,IAAAP,EAAA,IAAA,SAAA7C,MAAA,YAAA,OAAA0D,OAAAA,KAAA1D,GAAA,WAAA,EAAA;AAAA,cAAA,GAAAwC,EAAA,GAAA4E,MAAA5E;MAAA;IAAA,GAAAgF,MAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,CAAA,GAAAC,MAAA,GAAA,CAAA,GAAA,CAAA,GAAA,IAAA,GAAA,EAAA,CAAA,GAAAC,MAAA,SAAAlF,IAAA;AAAA,SAAAE,GAAA,SAAA,EAAA,SAAAF,GAAA,CAAA;AAAA,UAAA;AAAA,QAAAiB,GAAAjB,EAAA,EAAA,YAAAA,EAAA;MAAA,SAAAC,IAAA;AAAA,QAAAnQ,GAAAkQ,EAAA;MAAA;IAAA,GAAAmF,MAAA,SAAAnF,IAAAC,IAAA;AAAA,UAAA;AAAA,WAAAC,GAAA,SAAA,EAAA,WAAAD,GAAA,iBAAAD,EAAA,GAAA,MAAAC,GAAA,CAAA;MAAA,SAAAD,IAAA;AAAA,WAAAE,GAAA,SAAA,EAAA,WAAA,MAAA,MAAAD,GAAA,CAAA;MAAA;AAAA,UAAAA,GAAA,gBAAAD,EAAA,GAAA,SAAAA,GAAA,KAAAiD,OAAAC,IAAA,KAAA;AAAA,QAAAgC,IAAAjF,EAAA;MAAA,SAAAD,IAAA;MAAA;UAAA,KAAA;AAAA,QAAAC,GAAA,aAAAD,IAAA,EAAA;MAAA,SAAAA,IAAA;MAAA;IAAA,GAAAoF,MAAA,SAAApF,IAAA;AAAA,UAAAC,KAAA,MAAAC,KAAA;AAAA,UAAA8C,GAAA,CAAAhD,KAAA,sBAAAA;WAAA;AAAA,cAAAC,KAAA,GAAAD,IAAA,aAAA;AAAA,QAAAE,KAAAD,MAAAA,GAAA,CAAA;MAAA;AAAA,kCAAAwE,OAAAP,QAAAD,QAAAjE,KAAA,mEAAAA,KAAA;AAAA,YAAAI,KAAA5C,KAAAA,GAAA,WAAAwC,EAAA,IAAAA;AAAA,UAAAkE,QAAAD,IAAA,KAAA;AAAA,QAAAhE,KAAA,IAAAU,KAAA,gBAAAP,IAAAqE,GAAA;MAAA,SAAAzE,IAAA;MAAA;AAAA,UAAA,CAAAC,MAAA,CAAAA,GAAA,iBAAA;AAAA,QAAAA,KAAAkB,GAAA,eAAA+C,KAAA,YAAA,IAAA;AAAA,YAAA;AAAA,UAAAjE,GAAA,gBAAA,YAAAkE,MAAAjD,KAAAd;QAAA,SAAAJ,IAAA;QAAA;MAAA;AAAA,YAAAK,KAAAJ,GAAA,QAAAA,GAAA;AAAA,aAAAD,MAAAE,MAAAG,GAAA,aAAAF,GAAA,eAAAD,EAAA,GAAAG,GAAA,WAAA,CAAA,KAAA,IAAA,GAAA6D,QAAAD,MAAA3C,GAAA,KAAArB,IAAA6C,KAAA,SAAA,MAAA,EAAA,CAAA,IAAAA,KAAA7C,GAAA,kBAAAI;IAAA,GAAAgF,MAAA,SAAArF,IAAA;AAAA,aAAAoB,GAAA,KAAApB,GAAA,iBAAAA,IAAAA,IAAAQ,GAAA,eAAAA,GAAA,eAAAA,GAAA,YAAAA,GAAA,8BAAAA,GAAA,oBAAA,IAAA;IAAA,GAAA8E,MAAA,SAAAtF,IAAA;AAAA,aAAAA,cAAAU,OAAA,YAAA,OAAAV,GAAA,YAAA,YAAA,OAAAA,GAAA,eAAA,cAAA,OAAAA,GAAA,eAAA,EAAAA,GAAA,sBAAAS,OAAA,cAAA,OAAAT,GAAA,mBAAA,cAAA,OAAAA,GAAA,gBAAA,YAAA,OAAAA,GAAA,gBAAA,cAAA,OAAAA,GAAA,gBAAA,cAAA,OAAAA,GAAA;IAAA,GAAAuF,MAAA,SAAAvF,IAAA;AAAA,aAAA,cAAA,OAAAR,MAAAQ,cAAAR;IAAA;AAAA,aAAAgG,IAAAxF,IAAAC,IAAAE,IAAA;AAAA,SAAAH,IAAA,CAAAA,OAAA;AAAA,QAAAA,GAAA,KAAAE,IAAAD,IAAAE,IAAAyE,GAAA;MAAA,CAAA;IAAA;AAAA,UAAAa,MAAA,SAAAzF,IAAA;AAAA,UAAAC,KAAA;AAAA,UAAAuF,IAAAhE,GAAA,wBAAAxB,IAAA,IAAA,GAAAsF,IAAAtF,EAAA,EAAA,QAAAkF,IAAAlF,EAAA,GAAA;AAAA,YAAAG,KAAAwE,IAAA3E,GAAA,QAAA;AAAA,UAAAwF,IAAAhE,GAAA,qBAAAxB,IAAA,EAAA,SAAAG,IAAA,aAAA+B,GAAA,CAAA,GAAAlC,GAAA,cAAA,KAAA,CAAAuF,IAAAvF,GAAA,iBAAA,KAAA,GAAA,YAAAA,GAAA,SAAA,KAAA,GAAA,YAAAA,GAAA,WAAA,EAAA,QAAAkF,IAAAlF,EAAA,GAAA;AAAA,UAAAA,GAAA,aAAA,GAAA,QAAAkF,IAAAlF,EAAA,GAAA;AAAA,UAAA6C,MAAA7C,GAAA,aAAA,MAAA,GAAA,WAAAA,GAAA,IAAA,EAAA,QAAAkF,IAAAlF,EAAA,GAAA;AAAA,UAAA,CAAAkC,GAAA/B,EAAA,KAAAmC,GAAAnC,EAAA,GAAA;AAAA,YAAA,CAAAmC,GAAAnC,EAAA,KAAAuF,IAAAvF,EAAA,GAAA;AAAA,cAAAkC,GAAA,wBAAA,UAAA,GAAAA,GAAA,cAAAlC,EAAA,EAAA,QAAA;AAAA,cAAAkC,GAAA,wBAAA,YAAAA,GAAA,aAAAlC,EAAA,EAAA,QAAA;QAAA;AAAA,YAAAmD,OAAA,CAAAG,IAAAtD,EAAA,GAAA;AAAA,gBAAAF,KAAAgB,GAAAjB,EAAA,KAAAA,GAAA,YAAAE,KAAAc,GAAAhB,EAAA,KAAAA,GAAA;AAAA,cAAAE,MAAAD,IAAA;AAAA,qBAAAE,KAAAD,GAAA,SAAA,GAAAC,MAAA,GAAA,EAAAA,IAAA;AAAA,oBAAAC,KAAAU,GAAAZ,GAAAC,EAAA,GAAA,IAAA;AAAA,cAAAC,GAAA,kBAAAJ,GAAA,kBAAA,KAAA,GAAAC,GAAA,aAAAG,IAAAW,GAAAf,EAAA,CAAA;YAAA;UAAA;QAAA;AAAA,eAAAkF,IAAAlF,EAAA,GAAA;MAAA;AAAA,aAAAA,cAAAO,MAAA,CAAA,SAAAP,IAAA;AAAA,YAAAC,KAAAgB,GAAAjB,EAAA;AAAA,QAAAC,MAAAA,GAAA,YAAAA,KAAA,EAAA,cAAAiE,KAAA,SAAA,WAAA;AAAA,cAAAhE,KAAA,GAAAF,GAAA,OAAA,GAAAG,KAAA,GAAAF,GAAA,OAAA;AAAA,eAAA,CAAA,CAAAmE,IAAApE,GAAA,YAAA,MAAAA,GAAA,iBAAAgE,MAAA/D,GAAA,iBAAAgE,MAAA,UAAA/D,KAAAD,GAAA,iBAAA8D,MAAA,UAAA7D,OAAA,qBAAAC,MAAAmE,IAAAnE,EAAA,KAAA,QAAA6E,IAAA9E,EAAA,CAAA,IAAAF,GAAA,iBAAA+D,MAAA9D,GAAA,iBAAAgE,MAAA,WAAA/D,KAAAD,GAAA,iBAAA+D,MAAA,WAAA9D,MAAAqE,IAAApE,EAAA,IAAA,QAAA8E,IAAA/E,EAAA,CAAA,IAAAF,GAAA,iBAAAiE,MAAA,EAAAhE,GAAA,iBAAA+D,OAAA,CAAAO,IAAApE,EAAA,MAAA,EAAAF,GAAA,iBAAA8D,OAAA,CAAAO,IAAAnE,EAAA,MAAA,CAAA8E,IAAA/E,EAAA,MAAAsE,IAAAtE,EAAA,KAAA,CAAA8E,IAAA9E,EAAA,KAAA,EAAA,4BAAAuE,OAAA,CAAAL,IAAApE,GAAA,YAAA;MAAA,EAAAA,EAAA,KAAAkF,IAAAlF,EAAA,GAAA,QAAA,eAAAG,MAAA,cAAAA,MAAA,eAAAA,MAAA,CAAA,GAAA,+BAAAH,GAAA,SAAA,KAAA4C,MAAA5C,GAAA,aAAA,OAAAC,KAAAD,GAAA,aAAA,GAAA,CAAAyB,IAAAC,IAAAC,EAAA,GAAA,CAAA3B,OAAA;AAAA,QAAAC,KAAA,GAAAA,IAAAD,IAAA,GAAA;MAAA,CAAA,GAAAA,GAAA,gBAAAC,OAAA,GAAAC,GAAA,SAAA,EAAA,SAAAF,GAAA,UAAA,EAAA,CAAA,GAAAA,GAAA,cAAAC,MAAAuF,IAAAhE,GAAA,uBAAAxB,IAAA,IAAA,GAAA,UAAAkF,IAAAlF,EAAA,GAAA;IAAA,GAAA2F,MAAA,SAAA3F,IAAAC,IAAAC,IAAA;AAAA,UAAAkD,QAAA,SAAAnD,MAAA,WAAAA,QAAAC,MAAAC,MAAAD,MAAA2E,KAAA,QAAA;AAAA,UAAApC,MAAA,CAAAF,GAAAtC,EAAA,KAAA,GAAA2B,IAAA3B,EAAA,EAAA;eAAAuC,MAAA,GAAAX,IAAA5B,EAAA,EAAA;eAAA,CAAAkC,GAAAlC,EAAA,KAAAsC,GAAAtC,EAAA,GAAA;AAAA,YAAA,EAAAyF,IAAA1F,EAAA,MAAAqC,GAAA,wBAAA,UAAA,GAAAA,GAAA,cAAArC,EAAA,KAAAqC,GAAA,wBAAA,YAAAA,GAAA,aAAArC,EAAA,OAAAqC,GAAA,8BAAA,UAAA,GAAAA,GAAA,oBAAApC,EAAA,KAAAoC,GAAA,8BAAA,YAAAA,GAAA,mBAAApC,EAAA,MAAA,SAAAA,MAAAoC,GAAA,mCAAAA,GAAA,wBAAA,UAAA,GAAAA,GAAA,cAAAnC,EAAA,KAAAmC,GAAA,wBAAA,YAAAA,GAAA,aAAAnC,EAAA,IAAA,QAAA;MAAA,WAAA2D,IAAA5D,EAAA,EAAA;eAAA,GAAAgC,IAAA,GAAA/B,IAAA6B,IAAA,EAAA,CAAA,EAAA;eAAA,UAAA9B,MAAA,iBAAAA,MAAA,WAAAA,MAAA,aAAAD,MAAA,MAAA,GAAAE,IAAA,OAAA,KAAA,CAAAyD,IAAA3D,EAAA,GAAA;AAAA,YAAA0C,MAAA,CAAA,GAAAZ,IAAA,GAAA5B,IAAA6B,IAAA,EAAA,CAAA,EAAA;iBAAA7B,GAAA,QAAA;MAAA,MAAA;AAAA,aAAA;IAAA,GAAAwF,MAAA,SAAA1F,IAAA;AAAA,aAAA,qBAAAA,MAAA,GAAAA,IAAAgC,EAAA;IAAA,GAAA4D,MAAA,SAAA5F,IAAA;AAAA,MAAAwF,IAAAhE,GAAA,0BAAAxB,IAAA,IAAA;AAAA,YAAA,EAAA,YAAAC,GAAA,IAAAD;AAAA,UAAA,CAAAC,MAAAqF,IAAAtF,EAAA,EAAA;AAAA,YAAAG,KAAA,EAAA,UAAA,IAAA,WAAA,IAAA,UAAA,MAAA,mBAAAgC,IAAA,eAAA,OAAA;AAAA,UAAA/B,KAAAH,GAAA;AAAA,aAAAG,QAAA;AAAA,cAAAC,KAAAJ,GAAAG,EAAA,GAAA,EAAA,MAAAE,IAAA,cAAAzQ,IAAA,OAAA2P,GAAA,IAAAa,IAAAE,KAAAoE,IAAArE,EAAA;AAAA,YAAAE,KAAA,YAAAF,KAAAd,KAAA,GAAAA,EAAA;AAAA,YAAAW,GAAA,WAAAI,IAAAJ,GAAA,YAAAK,IAAAL,GAAA,WAAA,MAAAA,GAAA,gBAAA,QAAAqF,IAAAhE,GAAA,uBAAAxB,IAAAG,EAAA,GAAAK,KAAAL,GAAA,WAAA,CAAAkD,OAAA,SAAA9C,MAAA,WAAAA,OAAA4E,IAAA7E,IAAAN,EAAA,GAAAQ,KAAA,kBAAAA,KAAAqC,MAAA,GAAA,iCAAArC,EAAA,GAAA;AAAA,UAAA2E,IAAA7E,IAAAN,EAAA;AAAA;QAAA;AAAA,YAAAG,GAAA,cAAA;AAAA,YAAAgF,IAAA7E,IAAAN,EAAA,GAAA,CAAAG,GAAA,SAAA;AAAA,YAAA,CAAAwC,MAAA,GAAA,QAAAnC,EAAA,GAAA;AAAA,UAAA2E,IAAA7E,IAAAN,EAAA;AAAA;QAAA;AAAA,QAAA4C,MAAA,GAAA,CAAAnB,IAAAC,IAAAC,EAAA,GAAA,CAAA3B,OAAA;AAAA,UAAAQ,KAAA,GAAAA,IAAAR,IAAA,GAAA;QAAA,CAAA;AAAA,cAAAS,KAAAkE,IAAA3E,GAAA,QAAA;AAAA,YAAA2F,IAAAlF,IAAAF,IAAAC,EAAA,GAAA;AAAA,cAAAhD,MAAA,YAAA,OAAAoD,MAAA,cAAA,OAAAA,GAAA,iBAAA,KAAA/Q,GAAA;cAAA,SAAA+Q,GAAA,iBAAAH,IAAAF,EAAA,GAAA;YAAA,KAAA;AAAA,cAAAC,KAAAhD,GAAA,WAAAgD,EAAA;AAAA;YAAA,KAAA;AAAA,cAAAA,KAAAhD,GAAA,gBAAAgD,EAAA;UAAA;AAAA,cAAA;AAAA,YAAA3Q,KAAAmQ,GAAA,eAAAnQ,IAAAyQ,IAAAE,EAAA,IAAAR,GAAA,aAAAM,IAAAE,EAAA,GAAA8E,IAAAtF,EAAA,IAAAkF,IAAAlF,EAAA,IAAA,GAAAE,GAAA,OAAA;UAAA,SAAAF,IAAA;UAAA;QAAA;MAAA;AAAA,MAAAwF,IAAAhE,GAAA,yBAAAxB,IAAA,IAAA;IAAA,GAAA6F,MAAA,SAAA7F,GAAAC,IAAA;AAAA,UAAAC,KAAA;AAAA,YAAAC,KAAAkF,IAAApF,EAAA;AAAA,WAAAuF,IAAAhE,GAAA,yBAAAvB,IAAA,IAAA,GAAAC,KAAAC,GAAA,SAAA,IAAA,CAAAqF,IAAAhE,GAAA,wBAAAtB,IAAA,IAAA,GAAAuF,IAAAvF,EAAA,GAAA0F,IAAA1F,EAAA,GAAAA,GAAA,mBAAAI,MAAAN,GAAAE,GAAA,OAAA;AAAA,MAAAsF,IAAAhE,GAAA,wBAAAvB,IAAA,IAAA;IAAA;AAAA,WAAAC,GAAA,WAAA,SAAAF,IAAA;AAAA,UAAAC,KAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAA,CAAA,GAAAE,KAAA,MAAAE,KAAA,MAAAxQ,KAAA,MAAA0Q,KAAA;AAAA,UAAA4D,MAAA,CAAAnE,IAAAmE,QAAAnE,KAAA,UAAA,YAAA,OAAAA,MAAA,CAAAuF,IAAAvF,EAAA,GAAA;AAAA,YAAA,cAAA,OAAAA,GAAA,SAAA,OAAA,GAAA,4BAAA;AAAA,YAAA,YAAA,QAAAA,KAAAA,GAAA,SAAA,GAAA,OAAA,GAAA,iCAAA;MAAA;AAAA,UAAA,CAAAE,GAAA,YAAA,QAAAF;AAAA,UAAA+C,MAAAgC,IAAA9E,EAAA,GAAAC,GAAA,UAAA,CAAA,GAAA,YAAA,OAAAF,OAAAuD,MAAA,QAAAA,KAAA;AAAA,YAAAvD,GAAA,UAAA;AAAA,gBAAAC,KAAA0E,IAAA3E,GAAA,QAAA;AAAA,cAAA,CAAAkC,GAAAjC,EAAA,KAAAqC,GAAArC,EAAA,EAAA,OAAA,GAAA,yDAAA;QAAA;MAAA,WAAAD,cAAAR,GAAA,CAAAW,KAAAiF,IAAA,SAAA,GAAA/E,KAAAF,GAAA,cAAA,WAAAH,IAAA,IAAA,GAAAK,GAAA,aAAA,MAAA,WAAAA,GAAA,YAAA,WAAAA,GAAA,WAAAF,KAAAE,KAAAF,GAAA,YAAAE,EAAA;WAAA;AAAA,YAAA,CAAA4C,OAAA,CAAAL,MAAA,CAAAE,MAAA,OAAA9C,GAAA,QAAA,GAAA,EAAA,QAAAxC,MAAA2F,MAAA3F,GAAA,WAAAwC,EAAA,IAAAA;AAAA,YAAAG,KAAAiF,IAAApF,EAAA,GAAA,CAAAG,GAAA,QAAA8C,MAAA,OAAAE,MAAAjC,KAAA;MAAA;AAAA,MAAAf,MAAA6C,MAAAkC,IAAA/E,GAAA,UAAA;AAAA,YAAAK,KAAA6E,IAAA9B,MAAAvD,KAAAG,EAAA;AAAA,aAAAtQ,KAAA2Q,GAAA,SAAA,IAAA,CAAAiF,IAAA5V,EAAA,GAAA+V,IAAA/V,EAAA,GAAAA,GAAA,mBAAAyQ,MAAAuF,IAAAhW,GAAA,OAAA;AAAA,UAAA0T,IAAA,QAAAvD;AAAA,UAAAiD,KAAA;AAAA,YAAAC,IAAA,MAAA3C,KAAAc,GAAA,KAAAlB,GAAA,aAAA,GAAAA,GAAA,aAAA,CAAAI,GAAA,YAAAJ,GAAA,UAAA;YAAA,CAAAI,KAAAJ;AAAA,gBAAAgC,GAAA,cAAAA,GAAA,oBAAA5B,KAAAgB,GAAA,KAAAnB,IAAAG,IAAA,IAAA,IAAAA;MAAA;AAAA,UAAAE,KAAAqC,KAAA3C,GAAA,YAAAA,GAAA;AAAA,aAAA2C,MAAAZ,GAAA,UAAA,KAAA/B,GAAA,iBAAAA,GAAA,cAAA,WAAAA,GAAA,cAAA,QAAA,QAAA,GAAA,IAAAA,GAAA,cAAA,QAAA,IAAA,MAAAM,KAAA,eAAAN,GAAA,cAAA,QAAA,OAAA,QAAAM,KAAAmC,MAAA,GAAA,CAAAnB,IAAAC,IAAAC,EAAA,GAAA,CAAA3B,OAAA;AAAA,QAAAS,KAAA,GAAAA,IAAAT,IAAA,GAAA;MAAA,CAAA,GAAAxC,MAAA2F,MAAA3F,GAAA,WAAAiD,EAAA,IAAAA;IAAA,GAAAP,GAAA,YAAA,WAAA;AAAA,MAAA6E,IAAA,UAAA,SAAA,KAAA,WAAA,UAAA,CAAA,IAAA,UAAA,CAAA,IAAA,CAAA,CAAA,GAAAhC,KAAA;IAAA,GAAA7C,GAAA,cAAA,WAAA;AAAA,MAAA0E,MAAA,MAAA7B,KAAA;IAAA,GAAA7C,GAAA,mBAAA,SAAAF,IAAAC,IAAAC,IAAA;AAAA,MAAA0E,OAAAG,IAAA,CAAA,CAAA;AAAA,YAAA5E,KAAAwE,IAAA3E,EAAA,GAAAI,KAAAuE,IAAA1E,EAAA;AAAA,aAAA0F,IAAAxF,IAAAC,IAAAF,EAAA;IAAA,GAAAA,GAAA,UAAA,SAAAF,IAAAC,IAAA;AAAA,oBAAA,OAAAA,MAAA,GAAAuB,GAAAxB,EAAA,GAAAC,EAAA;IAAA,GAAAC,GAAA,aAAA,SAAAF,IAAAC,IAAA;AAAA,UAAA,WAAAA,IAAA;AAAA,cAAAC,KAAA,GAAAsB,GAAAxB,EAAA,GAAAC,EAAA;AAAA,eAAA,OAAAC,KAAA,SAAA,GAAAsB,GAAAxB,EAAA,GAAAE,IAAA,CAAA,EAAA,CAAA;MAAA;AAAA,aAAA,GAAAsB,GAAAxB,EAAA,CAAA;IAAA,GAAAE,GAAA,cAAA,SAAAF,IAAA;AAAA,MAAAwB,GAAAxB,EAAA,IAAA,CAAA;IAAA,GAAAE,GAAA,iBAAA,WAAA;AAAA,MAAAsB,KAAA,EAAA,yBAAA,CAAA,GAAA,uBAAA,CAAA,GAAA,wBAAA,CAAA,GAAA,0BAAA,CAAA,GAAA,wBAAA,CAAA,GAAA,yBAAA,CAAA,GAAA,uBAAA,CAAA,GAAA,qBAAA,CAAA,GAAA,wBAAA,CAAA,EAAA;IAAA,GAAAtB;EAAA,EAAA;ACvMA4F,KAAUC,QAAQ,yBAAyB,SAAUthB,IAAMmC,IAAAA;AACzB,kBACJhJ,KAAKgJ,GAAKof,QAAAA,MACpCpf,GAAKqf,gBAAAA;EAET,CAAA;AAEA,MAAMC,KAA6B,6CAA6Cnf,MAAM,GAAA;AAAtF,MACMof,KAA8B,cAAcpf,MAAM,GAAA;AADxD,MAEMqf,KAA6B,8BAA8Brf,MAAM,GAAA;AAExD,MAAMsf,KAAN,cAA4Bjb,EAAAA;IACzC,OAAA,QAAevN,IAAS2E,IAAM8D,IAAAA;AAC5B,YAAMggB,KAAmB,IAAIvoB,KAAKyE,IAAM8D,EAAAA,EAASigB,SAAAA,GAC3CC,KAAgBF,GAAiBG,UAAUH,GAAiBG,QAAAA,IAAYH,GAAiBI;AAC/F7oB,MAAAA,GAAQ8oB,YAAYH;IACtB;IAEA,OAAA,SAAgBhkB,IAAM8D,IAAAA;AACpB,YAAMsgB,KAAY,IAAI7oB,KAAKyE,IAAM8D,EAAAA;AAEjC,aADAsgB,GAAUL,SAAAA,GACHK;IACT;IAEAha,YAAYpK,IAAAA;AAAwF,UAAA,EAAlFqkB,mBAAEA,IAAiBC,oBAAEA,IAAkBC,mBAAEA,IAAiBC,eAAEA,GAAAA,IAAe5jB,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AAC9FyJ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK8oB,oBAAoBA,MAAqBX,IAC9CnoB,KAAK+oB,qBAAqBA,MAAsBX,IAChDpoB,KAAKgpB,oBAAoBA,MAAqBX,IAC9CroB,KAAKipB,gBAAgBA,MAAiB,CAAA,GACtCjpB,KAAKuL,OAAO2d,GAAyBzkB,EAAAA;IACvC;IAEA+jB,WAAAA;AACExoB,WAAKmpB,iBAAAA,GACLnpB,KAAKopB,4BAAAA;AACL,YAAMC,KAAezV,OAAO0V,OAAO,CAAE,GAAE3V,GAAkB3T,KAAKipB,aAAAA;AAI9D,aAHAlB,GAAUwB,UAAUF,EAAAA,GACpBrpB,KAAKuL,OAAOwc,GAAUS,SAASxoB,KAAKuL,IAAAA,GAE7BvL,KAAKuL;IACd;IAEAmd,UAAAA;AACE,aAAO1oB,KAAKuL,KAAKqd;IACnB;IAEAY,UAAAA;AACE,aAAOxpB,KAAKuL;IACd;IAIA4d,mBAAAA;AACE,YAAMM,KAAShiB,EAASzH,KAAKuL,IAAAA,GACvBme,KAAgB,CAAA;AAEtB,aAAOD,GAAOE,SAAAA,KAAY;AACxB,cAAMjjB,KAAO+iB,GAAOG;AACpB,gBAAQljB,GAAKD,UAAAA;UACX,KAAKG,KAAKC;AACJ7G,iBAAK6pB,mBAAmBnjB,EAAAA,IAC1BgjB,GAAc/f,KAAKjD,EAAAA,IAEnB1G,KAAK8pB,gBAAgBpjB,EAAAA;AAEvB;UACF,KAAKE,KAAKuD;AACRuf,YAAAA,GAAc/f,KAAKjD,EAAAA;QAAAA;MAGzB;AAIA,aAFAgjB,GAAczgB,QAASvC,CAAAA,OAASY,EAAWZ,EAAAA,CAAAA,GAEpC1G,KAAKuL;IACd;IAEAue,gBAAgBhqB,IAAAA;AAad,aAZIA,GAAQiqB,aAAa,MAAA,KACnB/pB,KAAK+oB,mBAAmB9e,SAASnK,GAAQkqB,QAAAA,KAC3ClqB,GAAQmqB,gBAAgB,MAAA,GAI5Bpa,MAAMC,KAAKhQ,GAAQlB,UAAAA,EAAYqK,QAAQihB,CAAAA,OAAAA;AAAc,YAAA,EAAbzrB,MAAEA,GAAAA,IAAMyrB;AACzClqB,aAAK8oB,kBAAkB7e,SAASxL,EAAAA,KAAuC,MAA9BA,GAAKiiB,QAAQ,WAAA,KACzD5gB,GAAQmqB,gBAAgBxrB,EAAAA;MAC1B,CAAA,GAGKqB;IACT;IAEAspB,8BAAAA;AAUE,aATAvZ,MAAMC,KAAK9P,KAAKuL,KAAK4e,iBAAiB,OAAA,CAAA,EAAUlhB,QAASmhB,CAAAA,OAAAA;AACvD,cAAMC,KAAkBD,GAAYE;AAChCD,QAAAA,MAC+B,SAA7BvrB,EAAQurB,EAAAA,KACVA,GAAgB9gB,YAAY6gB,EAAAA;MAEhC,CAAA,GAGKpqB,KAAKuL;IACd;IAEAse,mBAAmB/pB,IAAAA;AACjB,WAAIA,QAAAA,KAAAA,SAAAA,GAAS2G,cAAaG,KAAKC,aAC/B,QAAO7G,KAAKuqB,mBAAmBzqB,EAAAA,KAAYE,KAAKwqB,wBAAwB1qB,EAAAA;IAC1E;IAEAyqB,mBAAmBzqB,IAAAA;AACjB,aAAOE,KAAKgpB,kBAAkB/e,SAASnL,EAAQgB,EAAAA,CAAAA;IACjD;IAEA0qB,wBAAwB1qB,IAAAA;AACtB,aAAuD,YAAhDA,GAAQuM,aAAa,qBAAA,KAAA,CAAuC9B,EAAwBzK,EAAAA;IAC7F;EAAA;AAGF,MAAMopB,KAA2B,WAAA;AAAoB,QAAXzkB,KAAIY,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG;AAE/CZ,IAAAA,KAAOA,GAAKP,QAAQ,uBAAuB,SAAA;AAC3C,UAAMumB,KAAM/lB,SAASgmB,eAAeC,mBAAmB,EAAA;AAOvD,WANAF,GAAI9lB,gBAAgBikB,YAAYnkB,IAEhCoL,MAAMC,KAAK2a,GAAIrW,KAAK+V,iBAAiB,OAAA,CAAA,EAAUlhB,QAASnJ,CAAAA,OAAAA;AACtD2qB,MAAAA,GAAIlf,KAAKhC,YAAYzJ,EAAAA;IAAQ,CAAA,GAGxB2qB,GAAIlf;EACb;AAXA,MAWA,ECpIQqf,KAAAA,GAAAA,IAAQjX;AAED,MAAMkX,KAAN,cAA6BpO,GAAAA;IAC1C5N,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK2M,aAAa3M,KAAK4N,QACvB5N,KAAK2M,WAAWme,yBAAyB9qB,MACzCA,KAAK+qB,kBAAkB/qB,KAAKuI,QAAQyiB;IACtC;IAEAC,qBAAAA;AACE,aAAO,CAAA;IACT;IAEAnO,cAAAA;AACE,UAAIoO;AACJ,YAAMC,KAASD,KAAe7iB,EAAY,EACxCvJ,SAAS,UACTiK,WAAW/I,KAAKorB,aAAAA,GAChBviB,MAAM7I,KAAK4U,QAAAA,GACXnM,UAAAA,MAAU,CAAA,GAGN0D,KAAOnM,KAAKqrB,QAAAA;AAiClB,aAhCIlf,OACF+e,KAAe7iB,EAAY,EAAEvJ,SAAS,KAAK2J,UAAAA,OAAiB7J,YAAY,EAAEuN,MAAAA,IAAMmf,UAAAA,GAAW,EAAA,CAAA,GAC3FH,GAAO5hB,YAAY2hB,EAAAA,IAGjBlrB,KAAK2M,WAAW4e,WAAAA,IAClBjD,GAAckD,QAAQN,IAAclrB,KAAK2M,WAAW8e,WAAAA,CAAAA,IAEpDzrB,KAAKirB,mBAAAA,EAAqBhiB,QAASvC,CAAAA,OAAAA;AACjCwkB,QAAAA,GAAa3hB,YAAY7C,EAAAA;MAAK,CAAA,GAIlCwkB,GAAa3hB,YAAYvJ,KAAK0rB,qBAAAA,CAAAA,GAE1B1rB,KAAK2M,WAAWgf,UAAAA,MAClB3rB,KAAK4rB,kBAAkBvjB,EAAY,EACjCvJ,SAAS,YACTF,YAAY,EACVitB,OAAOjB,GAAI3d,oBACXzI,OAAOxE,KAAK2M,WAAWmf,kBAAAA,GACvB3c,KAAK,IAAA,GAEPtG,MAAM,EACJkjB,aAAAA,MACA1Q,cAAc,CAAE,mBAAmBrb,KAAK2M,WAAWxB,EAAAA,EAAK6F,KAAK,GAAA,EAAA,EAAA,CAAA,GAIjEma,GAAO5hB,YAAYvJ,KAAK4rB,eAAAA,IAGnB,CAAEI,GAAmB,MAAA,GAASb,IAAQa,GAAmB,OAAA,CAAA;IAClE;IAEAN,uBAAAA;AACE,YAAMO,KAAa5jB,EAAY,EAAEvJ,SAAS,cAAciK,WAAW6hB,GAAIhe,kBAAAA,CAAAA,GACjEpO,KAAUwB,KAAK+qB,gBAAgBmB,WAAAA;AACrC,UAAI1tB,GACFytB,CAAAA,GAAW/iB,UAAUC,IAAG,GAAA1F,OAAImnB,GAAIhe,mBAAiB,UAAA,CAAA,GACjDqf,GAAW7iB,cAAc5K;WACpB;AACL,YAAIC,IAAMC;AACV,cAAMytB,KAAgBnsB,KAAKosB,iBAAAA;AAQ3B,YAPID,GAAc1tB,SAChBA,KAAOuB,KAAK2M,WAAW0f,YAAAA,IAErBF,GAAcztB,SAChBA,KAAOsB,KAAK2M,WAAW2f,qBAAAA,IAGrB7tB,IAAM;AACR,gBAAM8tB,KAAclkB,EAAY,EAAEvJ,SAAS,QAAQiK,WAAW6hB,GAAI5d,gBAAgB5D,aAAa3K,GAAAA,CAAAA;AAC/FwtB,UAAAA,GAAW1iB,YAAYgjB,EAAAA;QACzB;AAEA,YAAI7tB,IAAM;AACJD,UAAAA,MACFwtB,GAAW1iB,YAAY7E,SAAS8nB,eAAe,GAAA,CAAA;AAEjD,gBAAMC,KAAcpkB,EAAY,EAAEvJ,SAAS,QAAQiK,WAAW6hB,GAAI1d,gBAAgB9D,aAAa1K,GAAAA,CAAAA;AAC/FutB,UAAAA,GAAW1iB,YAAYkjB,EAAAA;QACzB;MACF;AAEA,aAAOR;IACT;IAEAb,eAAAA;AACE,YAAMsB,KAAQ,CAAE9B,GAAIje,YAAU,GAAAlJ,OAAKmnB,GAAIje,YAAUlJ,IAAAA,EAAAA,OAAKzD,KAAK2M,WAAWggB,QAAAA,CAAAA,CAAAA,GAChEC,KAAY5sB,KAAK2M,WAAWkgB,aAAAA;AAIlC,aAHID,MACFF,GAAM/iB,KAAIlG,GAAAA,OAAImnB,GAAIje,YAAUlJ,IAAAA,EAAAA,OAAKmpB,EAAAA,CAAAA,GAE5BF,GAAM1b,KAAK,GAAA;IACpB;IAEA4D,UAAAA;AACE,YAAM/L,KAAO,EACXikB,gBAAgB1b,KAAKO,UAAU3R,KAAK2M,UAAAA,GACpCogB,iBAAiB/sB,KAAK2M,WAAWqgB,eAAAA,GACjCC,QAAQjtB,KAAK2M,WAAWxB,GAAAA,GAAAA,EAGpBvM,YAAEA,GAAAA,IAAeoB,KAAK+qB;AAS5B,aARKnsB,GAAWmb,QAAAA,MACdlR,GAAKqkB,iBAAiB9b,KAAKO,UAAU/S,EAAAA,IAGnCoB,KAAK2M,WAAWgf,UAAAA,MAClB9iB,GAAKskB,gBAAAA,QAGAtkB;IACT;IAEAwiB,UAAAA;AACE,UAAA,CAAK+B,GAAoBptB,KAAK2M,WAAW8e,WAAAA,GAAc,GAAA,EACrD,QAAOzrB,KAAK2M,WAAW0e,QAAAA;IAE3B;IAEAe,mBAAAA;AAAmB,UAAAiB;AACjB,YAAMriB,KAAOhL,KAAK2M,WAAWggB,QAAAA,GACvBR,KAAgB7W,GAAmC+X,UAAzBA,KAAC1Z,EAAmB3I,EAAAA,MAAAA,WAAKqiB,KAAAA,SAAxBA,GAA0B7uB,OAAAA;AAI3D,aAHa,WAATwM,OACFmhB,GAAc1tB,OAAAA,OAET0tB;IACT;IAEAmB,sBAAAA;AAAsB,UAAAC;AACpB,aAAyBA,UAAzBA,KAAOvtB,KAAKie,YAAAA,MAAAA,WAAasP,KAAAA,SAAlBA,GAAoB/Y,cAAc,UAAA;IAC3C;IAIAgZ,oCAAAA;AACE,YAAMhpB,KAAQxE,KAAK2M,WAAWmf,kBAAAA,GACxBF,KAAkB5rB,KAAKstB,oBAAAA;AACzB1B,MAAAA,OACFA,GAAgBpnB,QAAQA;IAE5B;EAAA;AAGF,MAAMwnB,KAAsBvtB,CAAAA,OAC1B4J,EAAY,EACVvJ,SAAS,QACTsK,aAAajF,GACb0E,MAAM,EACJyB,kBAAkB7L,IAClB0uB,eAAAA,MAAe,EAAA,CAAA;AANrB,MAUMC,KAAsB,SAAS3oB,IAAM3F,IAAAA;AACzC,UAAM2uB,KAAMplB,EAAY,KAAA;AAExB,WADAigB,GAAckD,QAAQiC,IAAKhpB,MAAQ,EAAA,GAC5BgpB,GAAIjZ,cAAc1V,EAAAA;EAC3B;ACrKe,MAAM4uB,KAAN,cAAwC7C,GAAAA;IACrDhc,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK2M,WAAWghB,kBAAkB3tB;IACpC;IAEAirB,qBAAAA;AAYE,aAXAjrB,KAAK4tB,QAAQvlB,EAAY,EACvBvJ,SAAS,OACTF,YAAY,EACVivB,KAAK,GAAA,GAEPhlB,MAAM,EACJkjB,aAAAA,KAAa,EAAA,CAAA,GAIjB/rB,KAAK8tB,QAAQ9tB,KAAK4tB,KAAAA,GACX,CAAE5tB,KAAK4tB,KAAAA;IAChB;IAEAlC,uBAAAA;AACE,YAAMO,KAAand,MAAM4c,qBAAAA,GAAwBrmB,SAAAA;AAIjD,aAHK4mB,GAAW7iB,eACd6iB,GAAWtjB,aAAa,yBAAyBgL,EAAY1R,kBAAAA,GAExDgqB;IACT;IAEA6B,QAAQF,IAAAA;AACM,UAAAL;AAAPK,MAAAA,OAASA,KAA0BL,UAArBA,KAAGvtB,KAAKie,YAAAA,MAAAA,WAAasP,KAAAA,SAAlBA,GAAoB/Y,cAAc,KAAA;AACxD,UAAIoZ,GACF,QAAO5tB,KAAK+tB,yBAAyBH,EAAAA;IAEzC;IAEAG,yBAAyBH,IAAAA;AACvB,YAAMhrB,KAAM5C,KAAK2M,WAAWqhB,OAAAA,GACtBC,KAAajuB,KAAK2M,WAAWuhB,cAAAA;AAGnC,UAFAN,GAAMC,MAAMI,MAAcrrB,IAEtBqrB,OAAerrB,GACjBgrB,CAAAA,GAAM3D,gBAAgB,iCAAA;WACjB;AACL,cAAMkE,KAAuB/c,KAAKO,UAAU,EAAEkc,KAAKjrB,GAAAA,CAAAA;AACnDgrB,QAAAA,GAAMjlB,aAAa,mCAAmCwlB,EAAAA;MACxD;AAEA,YAAMC,KAAQpuB,KAAK2M,WAAW0hB,SAAAA,GACxBC,KAAStuB,KAAK2M,WAAW4hB,UAAAA;AAElB,cAATH,OACFR,GAAMQ,QAAQA,KAEF,QAAVE,OACFV,GAAMU,SAASA;AAGjB,YAAME,KAAW,CAAE,gBAAgBxuB,KAAK2M,WAAWxB,IAAIyiB,GAAMC,KAAKD,GAAMQ,OAAOR,GAAMU,MAAAA,EAAStd,KAAK,GAAA;AACnG4c,MAAAA,GAAM9kB,QAAQuS,eAAemT;IAC/B;IAIAC,gCAAAA;AAEE,aADAzuB,KAAK8tB,QAAQ9tB,KAAK4tB,KAAAA,GACX5tB,KAAK8tB,QAAAA;IACd;EAAA;AC5Da,MAAMY,KAAN,cAAwBjS,GAAAA;IACrC5N,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKgrB,QAAQhrB,KAAK4N,QAClB5N,KAAKpB,aAAaoB,KAAKgrB,MAAM2D,cAAAA,GAC7B3uB,KAAK4uB,aAAa5uB,KAAKuI,QAAQqmB,YAC/B5uB,KAAK6uB,UAAU7uB,KAAKuI,QAAQsmB,SAExB7uB,KAAKgrB,MAAMre,aACb3M,KAAK2M,aAAa3M,KAAKgrB,MAAMre,aAE7B3M,KAAKsQ,SAAStQ,KAAKgrB,MAAMxc,SAAAA;IAE7B;IAEAsO,cAAAA;AACE,UAAID,KAAQ7c,KAAK2M,aAAa3M,KAAK8uB,sBAAAA,IAA0B9uB,KAAK+uB,kBAAAA;AAClE,YAAMjvB,KAAUE,KAAKwI,cAAAA;AACrB,UAAI1I,IAAS;AACX,cAAMorB,K/BiDoB,SAASprB,IAAAA;AACvC,iBAAc,UAAdkvB,KAAOlvB,OAAAA,WAAOkvB,MAAPA,GAASC,qBAAmB;AAAA,gBAAAD;AACjClvB,YAAAA,KAAUA,GAAQmvB;UACpB;AACA,iBAAOnvB;QACT,E+BtD4CA,EAAAA;AACtC+P,cAAMC,KAAK+M,EAAAA,EAAO5T,QAASvC,CAAAA,OAAAA;AACzBwkB,UAAAA,GAAa3hB,YAAY7C,EAAAA;QAAK,CAAA,GAEhCmW,KAAQ,CAAE/c,EAAAA;MACZ;AACA,aAAO+c;IACT;IAEAiS,wBAAAA;AACE,YAAMjgB,KAAc7O,KAAK2M,WAAWuiB,cAAAA,IAAkBxB,KAA4B7C;AAGlF,aADa7qB,KAAK2d,gBAAgB9O,IAAa7O,KAAKgrB,MAAMre,YAAY,EAAEqe,OAAOhrB,KAAKgrB,MAAAA,CAAAA,EACxEpO,SAAAA;IACd;IAEAmS,oBAAAA;AAAoB,UAAAI;AAClB,UAAmBA,UAAnBA,KAAInvB,KAAK4uB,eAAAA,WAAUO,MAAfA,GAAiB1vB,UACnB,QAAO,CAAEiF,SAAS8nB,eAAexsB,KAAKsQ,MAAAA,CAAAA;AACjC;AACL,cAAMuM,KAAQ,CAAA,GACRuS,KAAWpvB,KAAKsQ,OAAOtH,MAAM,IAAA;AACnC,iBAASgJ,KAAQ,GAAGA,KAAQod,GAAS9pB,QAAQ0M,MAAS;AACpD,gBAAMqd,KAAYD,GAASpd,EAAAA;AAC3B,cAAIA,KAAQ,GAAG;AACb,kBAAMlS,KAAUuI,EAAY,IAAA;AAC5BwU,YAAAA,GAAMlT,KAAK7J,EAAAA;UACb;AAEA,cAAIuvB,GAAU/pB,QAAQ;AACpB,kBAAMoB,KAAOhC,SAAS8nB,eAAexsB,KAAKsvB,eAAeD,EAAAA,CAAAA;AACzDxS,YAAAA,GAAMlT,KAAKjD,EAAAA;UACb;QACF;AACA,eAAOmW;MACT;IACF;IAEArU,gBAAAA;AACE,UAAI1I,IAASyE,IAAKC;AAClB,YAAM+qB,KAAS,CAAA;AAEf,WAAKhrB,MAAOvE,KAAKpB,YAAY;AAC3B4F,QAAAA,KAAQxE,KAAKpB,WAAW2F,EAAAA;AACxB,cAAMoP,KAASG,GAAcvP,EAAAA;AAC7B,YAAIoP,IAAQ;AACV,cAAIA,GAAO7U,SAAS;AAClB,gBAAIosB;AACJ,kBAAMsE,KAAiBnnB,EAAYsL,GAAO7U,OAAAA;AAEtCosB,YAAAA,MACFA,GAAa3hB,YAAYimB,EAAAA,GACzBtE,KAAesE,MAEf1vB,KAAUorB,KAAesE;UAE7B;AAMA,cAJI7b,GAAO8b,kBACTF,GAAO5b,GAAO8b,aAAAA,IAAiBjrB,KAG7BmP,GAAO/K,MACT,MAAKrE,MAAOoP,GAAO/K,MACjBpE,CAAAA,KAAQmP,GAAO/K,MAAMrE,EAAAA,GACrBgrB,GAAOhrB,EAAAA,IAAOC;QAGpB;MACF;AAEA,UAAIoP,OAAOC,KAAK0b,EAAAA,EAAQjqB,OAEtB,MAAKf,MADAzE,OAAWA,KAAUuI,EAAY,MAAA,IAC1BknB,GACV/qB,CAAAA,KAAQ+qB,GAAOhrB,EAAAA,GACfzE,GAAQ8I,MAAMrE,EAAAA,IAAOC;AAGzB,aAAO1E;IACT;IAEAif,yBAAAA;AACE,iBAAWxa,MAAOvE,KAAKpB,YAAY;AACjC,cAAM4F,KAAQxE,KAAKpB,WAAW2F,EAAAA,GACxBoP,KAASG,GAAcvP,EAAAA;AAC7B,YAAIoP,MACEA,GAAOvH,cAAc;AACvB,gBAAMxN,KAAa,CAAA;AAEnB,iBADAA,GAAW2F,EAAAA,IAAOC,IACX6D,EAAYsL,GAAOvH,cAAcxN,EAAAA;QAC1C;MAEJ;IACF;IAEA0wB,eAAehf,IAAAA;AAcb,aAbItQ,KAAK6uB,QAAQa,WACfpf,KAASA,GAAOpM,QAAQ,OAAOE,CAAAA,IAGjCkM,KAASA,GACNpM,QAAQ,kBAAgBT,MAAAA,OAAQW,GAAuB,KAAA,CAAA,EACvDF,QAAQ,UAAQ,GAAAT,OAAKW,GAAkB,GAAA,CAAA,EACvCF,QAAQ,UAAQT,IAAAA,OAAMW,CAAAA,CAAAA,IAErBpE,KAAK6uB,QAAQc,WAAW3vB,KAAK6uB,QAAQe,uBACvCtf,KAASA,GAAOpM,QAAQ,OAAOE,CAAAA,IAG1BkM;IACT;EAAA;ACtIa,MAAMuf,KAAN,cAAuBpT,GAAAA;IACpC5N,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKR,OAAOQ,KAAK4N,QACjB5N,KAAK4uB,aAAa5uB,KAAKuI,QAAQqmB;IACjC;IAEA9R,cAAAA;AACE,YAAMD,KAAQ,CAAA,GACRiT,KAAS3V,GAAYC,aAAapa,KAAK+vB,UAAAA,CAAAA,GACvC1O,KAAYyO,GAAOxqB,SAAS;AAElC,eAAS0M,KAAQ,GAAGA,KAAQ8d,GAAOxqB,QAAQ0M,MAAS;AAClD,cAAMgZ,KAAQ8E,GAAO9d,EAAAA,GACf6c,KAAU,CAAA;AACF,cAAV7c,OACF6c,GAAQc,UAAAA,OAEN3d,OAAUqP,OACZwN,GAAQa,SAAAA,OAENM,GAAmBC,EAAAA,MACrBpB,GAAQe,oBAAAA;AAGV,cAAMpS,KAAOxd,KAAKsd,4BAA4BoR,IAAW1D,IAAO,EAAE4D,YAAY5uB,KAAK4uB,YAAYC,SAAAA,GAAAA,CAAAA;AAC/FhS,QAAAA,GAAMlT,KAAAA,GAAQkG,MAAMC,KAAK0N,GAAKZ,SAAAA,KAAc,CAAA,CAAA,CAAA;AAE5C,YAAIqT,KAAgBjF;MACtB;AACA,aAAOnO;IACT;IAEAkT,YAAAA;AACE,aAAOlgB,MAAMC,KAAK9P,KAAKR,KAAKuwB,UAAAA,CAAAA,EAAa7Y,OAAQ8T,CAAAA,OAAAA,CAAWA,GAAMjB,aAAa,YAAA,CAAA;IACjF;EAAA;AAGF,MAAMiG,KAAsBhF,CAAAA,OAAU,MAAMnrB,KAAKmrB,QAAAA,KAAAA,SAAAA,GAAOxc,SAAAA,CAAAA;AAAxD,MAAwDA,ECxChDoc,KAAAA,GAAAA,IAAQjX;AAED,MAAMuc,KAAN,cAAwBzT,GAAAA;IACrC5N,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKmwB,QAAQnwB,KAAK4N,QAClB5N,KAAKpB,aAAaoB,KAAKmwB,MAAMxB,cAAAA;IAC/B;IAEA7R,cAAAA;AACE,YACMD,KAAQ,CADEnY,SAAS0rB,cAAc,OAAA,CAAA;AAEvC,UAAIpwB,KAAKmwB,MAAMpW,QAAAA,EACb8C,CAAAA,GAAMlT,KAAKtB,EAAY,IAAA,CAAA;WAClB;AAAA,YAAAgoB;AACL,cAAMzB,KAA0D,UAAhDyB,KAAG5c,GAAezT,KAAKmwB,MAAMG,iBAAAA,CAAAA,MAAAA,WAAmBD,KAAAA,SAA7CA,GAA+C7wB,MAC5D+wB,KAAWvwB,KAAKsd,4BAA4BuS,IAAU7vB,KAAKmwB,MAAM3wB,MAAM,EAAEovB,YAAAA,GAAAA,CAAAA;AAC/E/R,QAAAA,GAAMlT,KAAAA,GAAQkG,MAAMC,KAAKygB,GAAS3T,SAAAA,KAAc,CAAA,CAAA,CAAA,GAC5C5c,KAAKwwB,6BAAAA,KACP3T,GAAMlT,KAAKtB,EAAY,IAAA,CAAA;MAE3B;AAEA,UAAIrI,KAAKpB,WAAW0G,OAClB,QAAOuX;AACF;AACL,YAAIje;AACJ,cAAA,EAAME,SAAEA,GAAAA,IAAY6U,EAAuB9U;AACvCmB,aAAKmwB,MAAMM,MAAAA,MACb7xB,KAAa,EAAE2T,KAAK,MAAA;AAGtB,cAAMzS,KAAUuI,EAAY,EAAEvJ,SAAAA,IAASF,YAAAA,GAAAA,CAAAA;AAEvC,eADAie,GAAM5T,QAASvC,CAAAA,OAAS5G,GAAQyJ,YAAY7C,EAAAA,CAAAA,GACrC,CAAE5G,EAAAA;MACX;IACF;IAEAif,uBAAuBzE,IAAAA;AACrB,YAAM1b,KAAa,CAAA;AACnB,UAAImK;AACJ,YAAM2K,KAAgB1T,KAAKpB,WAAW0b,EAAAA,GAAAA,EAEhCxb,SAAEA,IAAOS,gBAAEA,KAAiB,CAAA,EAAA,IAAOkU,GAAeC,EAAAA;AAMxD,UAJc,MAAV4G,MAAeta,KAAKmwB,MAAMM,MAAAA,KAC5B7c,OAAO0V,OAAO1qB,IAAY,EAAE2T,KAAK,MAAA,CAAA,GAGb,wBAAlBmB,IAAuC;AACzC,cAAMhV,KAAOsB,KAAKmwB,MAAMO,sBAAAA;AACxB3nB,QAAAA,KAAAA,GAAStF,OAAMmnB,GAAIzqB,mBAAiBsD,GAAAA,EAAAA,OAAImnB,GAAIzqB,mBAAiB,IAAA,EAAAsD,OAAK/E,EAAAA;MACpE;AAQA,aANAkV,OAAOoL,QAAQhf,KAAKmwB,MAAM5wB,cAAAA,EAAgB0J,QAAQihB,CAAAA,OAAAA;AAAqB,YAAA,CAAlBzrB,IAAM+F,EAAAA,IAAO0lB;AAC5D3qB,QAAAA,GAAe0K,SAASxL,EAAAA,MAC1BG,GAAWH,EAAAA,IAAQ+F;MACrB,CAAA,GAGK6D,EAAY,EAAEvJ,SAAAA,IAASiK,WAAAA,IAAWnK,YAAAA,GAAAA,CAAAA;IAC3C;IAIA4xB,+BAAAA;AACE,aAAO,QAAQ3wB,KAAKG,KAAKmwB,MAAM3hB,SAAAA,CAAAA;IACjC;EAAA;AC/Da,MAAMmiB,KAAN,cAA2BlU,GAAAA;IACxC,OAAA,OAAc/X,IAAAA;AACZ,YAAM5E,KAAUuI,EAAY,KAAA,GACtBmV,KAAO,IAAIxd,KAAK0E,IAAU,EAAE5E,SAAAA,GAAAA,CAAAA;AAGlC,aAFA0d,GAAKoT,OAAAA,GACLpT,GAAKqT,KAAAA,GACE/wB;IACT;IAEA+O,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKF,UAAUE,KAAKuI,QAAQzI,SAC5BE,KAAK8wB,eAAe,IAAI5V,MACxBlb,KAAK+wB,YAAY/wB,KAAK4N,MAAAA;IACxB;IAEAmjB,YAAYrsB,IAAAA;AACLA,MAAAA,GAAS8K,UAAUxP,KAAK0E,QAAAA,MAC3B1E,KAAK0E,WAAW1E,KAAK4N,SAASlJ;IAElC;IAEAksB,SAAAA;AAKE,UAJA5wB,KAAK0c,aAAa,CAAA,GAElB1c,KAAKgxB,gBAAgB3oB,EAAY,KAAA,GAAA,CAE5BrI,KAAK0E,SAASqV,QAAAA,GAAW;AAC5B,cAAMT,KAAUa,GAAYC,aAAapa,KAAK0E,SAASusB,UAAAA,GAAa,EAAE1W,QAAAA,KAAQ,CAAA;AAE9E1K,cAAMC,KAAKwJ,EAAAA,EAASrQ,QAAS2E,CAAAA,OAAAA;AAC3B,gBAAM4P,KAAOxd,KAAKsd,4BAA4B4S,IAAWtiB,EAAAA;AACzDiC,gBAAMC,KAAK0N,GAAKZ,SAAAA,CAAAA,EAAYrM,IAAK7J,CAAAA,OAAS1G,KAAKgxB,cAAcznB,YAAY7C,EAAAA,CAAAA;QAAM,CAAA;MAEnF;IACF;IAEAwqB,WAAAA;AACE,aAAOC,GAAsBnxB,KAAKgxB,eAAehxB,KAAKF,OAAAA;IACxD;IAEA+wB,OAAAA;AACE,YAAMO,KAAWpxB,KAAKqxB,8BAAAA;AACtB,aAAOrxB,KAAKF,QAAQwxB,YAClBtxB,MAAKF,QAAQ0H,YAAYxH,KAAKF,QAAQwxB,SAAAA;AAGxC,aADAtxB,KAAKF,QAAQyJ,YAAY6nB,EAAAA,GAClBpxB,KAAKuxB,QAAAA;IACd;IAIAA,UAAAA;AAEE,aADAvxB,KAAK8wB,aAAaxZ,MAAMka,GAAmBxxB,KAAKF,OAAAA,CAAAA,GACzCqV,GAAM,MAAMnV,KAAK2e,0BAAAA,CAAAA;IAC1B;IAEA0S,gCAAAA;AACE,YAAMD,KAAW1sB,SAAS+sB,uBAAAA;AAa1B,aAXA5hB,MAAMC,KAAK9P,KAAKgxB,cAAc3nB,UAAAA,EAAYJ,QAASvC,CAAAA,OAAAA;AACjD0qB,QAAAA,GAAS7nB,YAAY7C,GAAKqW,UAAAA,IAAU,CAAA;MAAM,CAAA,GAG5ClN,MAAMC,KAAK0hB,GAAmBJ,EAAAA,CAAAA,EAAWnoB,QAASnJ,CAAAA,OAAAA;AAChD,cAAM4xB,KAAgB1xB,KAAK8wB,aAAatuB,OAAO1C,EAAAA;AAC3C4xB,QAAAA,MACF5xB,GAAQC,WAAW4xB,aAAaD,IAAe5xB,EAAAA;MACjD,CAAA,GAGKsxB;IACT;EAAA;AAGF,MAAMI,KAAsB1xB,CAAAA,OAAYA,GAAQqqB,iBAAiB,uBAAA;AAAjE,MAEMgH,KAAwBA,CAACrxB,IAAS8xB,OACtCC,GAAa/xB,GAAQ8oB,SAAAA,MAAeiJ,GAAaD,GAAahJ,SAAAA;AAHhE,MAKMiJ,KAAgBptB,CAAAA,OAASA,GAAKP,QAAQ,WAAW,GAAA;AAAA,WAAA,GAAA+d,IAAA;AAAA,QAAAC,IAAAC;AAAA,aAAAC,GAAAF,IAAAC,IAAA;AAAA,UAAA;AAAA,YAAAG,KAAAL,GAAAC,EAAA,EAAAC,EAAA,GAAAI,KAAAD,GAAA,OAAAxQ,KAAAyQ,cAAA;AAAA,gBAAA,QAAAzQ,KAAAyQ,GAAA,IAAAA,EAAA,EAAA,KAAA,SAAAJ,IAAA;AAAA,cAAArQ,IAAA;AAAA,gBAAA2P,KAAA,aAAAS,KAAA,WAAA;AAAA,gBAAA,CAAAK,GAAA,KAAAJ,GAAA,KAAA,QAAAC,GAAAX,IAAAU,EAAA;AAAA,YAAAA,KAAAF,GAAAR,EAAA,EAAAU,EAAA,EAAA;UAAA;AAAA,UAAAE,GAAAC,GAAA,OAAA,WAAA,UAAAH,EAAA;QAAA,GAAA,SAAAF,IAAA;AAAA,UAAAG,GAAA,SAAAH,EAAA;QAAA,CAAA;MAAA,SAAAA,IAAA;AAAA,QAAAI,GAAA,SAAAJ,EAAA;MAAA;IAAA;AAAA,aAAAI,GAAAJ,IAAAI,IAAA;AAAA,cAAAJ,IAAA;QAAA,KAAA;AAAA,UAAAC,GAAA,QAAA,EAAA,OAAAG,IAAA,MAAA,KAAA,CAAA;AAAA;QAAA,KAAA;AAAA,UAAAH,GAAA,OAAAG,EAAA;AAAA;QAAA;AAAA,UAAAH,GAAA,QAAA,EAAA,OAAAG,IAAA,MAAA,MAAA,CAAA;MAAA;AAAA,OAAAH,KAAAA,GAAA,QAAAE,GAAAF,GAAA,KAAAA,GAAA,GAAA,IAAAC,KAAA;IAAA;AAAA,SAAA,UAAA,SAAAF,IAAAI,IAAA;AAAA,aAAA,IAAA,QAAA,SAAAC,IAAAC,IAAA;AAAA,YAAAzQ,KAAA,EAAA,KAAAmQ,IAAA,KAAAI,IAAA,SAAAC,IAAA,QAAAC,IAAA,MAAA,KAAA;AAAA,QAAAJ,KAAAA,KAAAA,GAAA,OAAArQ,MAAAoQ,KAAAC,KAAArQ,IAAAsQ,GAAAH,IAAAI,EAAA;MAAA,CAAA;IAAA,GAAA,cAAA,OAAAJ,GAAA,WAAA,KAAA,SAAA;EAAA;AAAA,WAAA,GAAAA,IAAAC,IAAA;AAAA,SAAA,IAAAD,IAAA,KAAA,IAAAC;EAAA;AAAA,WAAA,GAAAD,IAAAC,IAAAC,IAAA;AAAA,YAAAD,KAAA,GAAAA,EAAA,MAAAD,KAAA,OAAA,eAAAA,IAAAC,IAAA,EAAA,OAAAC,IAAA,YAAA,MAAA,cAAA,MAAA,UAAA,KAAA,CAAA,IAAAF,GAAAC,EAAA,IAAAC,IAAAF;EAAA;AAAA,WAAA,GAAAA,IAAA;AAAA,QAAAC,KAAA,SAAAD,IAAAC,IAAA;AAAA,UAAA,YAAA,OAAAD,MAAA,SAAAA,GAAA,QAAAA;AAAA,UAAAE,KAAAF,GAAA,OAAA,WAAA;AAAA,UAAA,WAAAE,IAAA;AAAA,YAAAC,KAAAD,GAAA,KAAAF,IAAAC,MAAA,SAAA;AAAA,YAAA,YAAA,OAAAE,GAAA,QAAAA;AAAA,cAAA,IAAA,UAAA,8CAAA;MAAA;AAAA,cAAA,aAAAF,KAAA,SAAA,QAAAD,EAAA;IAAA,EAAAA,IAAA,QAAA;AAAA,WAAA,YAAA,OAAAC,KAAAA,KAAA,OAAAA,EAAA;EAAA;AAAA,KAAA,UAAA,cAAA,OAAA,UAAA,OAAA,iBAAA,iBAAA,IAAA,WAAA;AAAA,WAAA;EAAA,GAAA,GAAA,UAAA,OAAA,SAAAD,IAAA;AAAA,WAAA,KAAA,QAAA,QAAAA,EAAA;EAAA,GAAA,GAAA,UAAA,QAAA,SAAAA,IAAA;AAAA,WAAA,KAAA,QAAA,SAAAA,EAAA;EAAA,GAAA,GAAA,UAAA,SAAA,SAAAA,IAAA;AAAA,WAAA,KAAA,QAAA,UAAAA,EAAA;EAAA;AAAA,WAAA,GAAAA,IAAAC,IAAA;AAAA,WAAA,GAAAD,IAAA,GAAAA,IAAAC,IAAA,KAAA,CAAA;EAAA;AAAA,WAAA,GAAAD,IAAAC,IAAAC,IAAA;AAAA,WAAA,GAAAF,IAAA,GAAAA,IAAAC,IAAA,KAAA,GAAAC,EAAA,GAAAA;EAAA;AAAA,WAAA,GAAAF,IAAAC,IAAAC,IAAA;AAAA,QAAA,CAAAD,GAAA,IAAAD,EAAA,EAAA,OAAA,IAAA,UAAA,kBAAAE,KAAA,gCAAA;AAAA,WAAAD,GAAA,IAAAD,EAAA;EAAA;AAAA,WAAA,GAAAA,IAAAC,IAAA;AAAA,WAAAA,GAAA,MAAAA,GAAA,IAAA,KAAAD,EAAA,IAAAC,GAAA;EAAA;AAAA,WAAA,GAAAD,IAAAC,IAAAC,IAAA;AAAA,QAAAD,GAAA,IAAA,CAAAA,GAAA,IAAA,KAAAD,IAAAE,EAAA;SAAA;AAAA,UAAA,CAAAD,GAAA,SAAA,OAAA,IAAA,UAAA,0CAAA;AAAA,MAAAA,GAAA,QAAAC;IAAA;EAAA;AAAA,WAAA,GAAAF,IAAAC,IAAAC,IAAA;AAAA,QAAA,CAAAD,GAAA,IAAAD,EAAA,EAAA,OAAA,IAAA,UAAA,gDAAA;AAAA,WAAAE;EAAA;AAAA,WAAA,GAAAF,IAAAC,IAAA;AAAA,QAAAA,GAAA,IAAAD,EAAA,EAAA,OAAA,IAAA,UAAA,gEAAA;EAAA;AAAA,WAAA,GAAAA,IAAAC,IAAAC,IAAA;AAAA,OAAAF,IAAAC,EAAA,GAAAA,GAAA,IAAAD,IAAAE,EAAA;EAAA;ACtFxC,MAAM2P,KAAN,cAAoB7gB,GAAAA;IAGjC,OAAA,aAAoBjG,IAAM6D,IAAAA;AACxBA,MAAAA,GAAY7D,OAAOA,IACnBhL,KAAK+xB,MAAM/mB,EAAAA,IAAQ6D;IACrB;IAEA,OAAA,SAAgBmjB,IAAAA;AACd,YAAMnjB,KAAc7O,KAAK+xB,MAAMC,GAAUhnB,IAAAA;AACzC,UAAI6D,GACF,QAAOA,GAAYsC,SAAS6gB,EAAAA;IAEhC;IAEAnjB,YAAYrK,IAAAA;AAAwB,UAAjB5F,KAAUyG,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAC9ByJ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKpB,aAAawa,GAAK9K,IAAI1P,EAAAA;IAC7B;IAEAqzB,mBAAmBrzB,IAAAA;AACjB,aAAO,IAAIoB,KAAK6O,YAAY7O,KAAKkyB,SAAAA,GAAYtzB,EAAAA;IAC/C;IAEAuzB,6BAA6BvzB,IAAAA;AAC3B,aAAOoB,KAAKiyB,mBAAmBjyB,KAAKpB,WAAWgb,MAAMhb,EAAAA,CAAAA;IACvD;IAEAwzB,qBAAqBC,IAAAA;AACnB,aAAOryB,KAAKiyB,mBAAmBjyB,KAAKpB,WAAW4D,OAAO6vB,EAAAA,CAAAA;IACxD;IAEA1Y,OAAAA;AACE,aAAO3Z,KAAKiyB,mBAAmBjyB,KAAKpB,UAAAA;IACtC;IAEAyN,aAAagmB,IAAAA;AACX,aAAOryB,KAAKpB,WAAWoU,IAAIqf,EAAAA;IAC7B;IAEAC,oBAAAA;AACE,aAAOtyB,KAAKpB;IACd;IAEA+vB,gBAAAA;AACE,aAAO3uB,KAAKpB,WAAWob,SAAAA;IACzB;IAEA+P,aAAasI,IAAAA;AACX,aAAOryB,KAAKpB,WAAWiU,IAAIwf,EAAAA;IAC7B;IAEAE,0BAA0BvH,IAAAA;AACxB,aAAOA,MAAShrB,KAAKwO,SAAAA,MAAewc,GAAMxc,SAAAA;IAC5C;IAEAgkB,yBAAyBxH,IAAAA;AACvB,aAAOA,OAAUhrB,KAAKpB,eAAeosB,GAAMpsB,cAAcoB,KAAKpB,WAAW4Q,UAAUwb,GAAMpsB,UAAAA;IAC3F;IAEA6zB,eAAAA;AACE,aAAA;IACF;IAEAjjB,UAAUwb,IAAAA;AACR,aACElc,MAAMU,UAAAA,GAAanK,SAAAA,KACnBrF,KAAKqR,qBAAqB2Z,EAAAA,KACxBhrB,KAAKuyB,0BAA0BvH,EAAAA,KAC/BhrB,KAAKwyB,yBAAyBxH,EAAAA;IAEpC;IAEAjR,UAAAA;AACE,aAAuB,MAAhB/Z,KAAKsF;IACd;IAEAotB,iBAAAA;AACE,aAAA;IACF;IAEAjjB,SAAAA;AACE,aAAO,EACLzE,MAAMhL,KAAK6O,YAAY7D,MACvBpM,YAAYoB,KAAK2uB,cAAAA,EAAAA;IAErB;IAEAld,wBAAAA;AACE,aAAO,EACLzG,MAAMhL,KAAK6O,YAAY7D,MACvBpM,YAAYoB,KAAKpB,WAAW0S,QAAAA,EAAAA;IAEhC;IAIAsJ,eAAAA;AACE,aAAO5a,KAAK+pB,aAAa,MAAA;IAC3B;IAEAlP,iBAAiBmQ,IAAAA;AACf,aAAOhrB,KAAKqM,aAAa,MAAA,MAAY2e,GAAM3e,aAAa,MAAA;IAC1D;IAIAsmB,YAAAA;AACE,aAAO3yB,KAAKsF;IACd;IAEAstB,sBAAsB5H,IAAAA;AACpB,aAAA;IACF;EAAA;AACD6H,KAlHoBf,IACJ,SAAA,CAAA,CAAA;ACFF,MAAMgB,KAAN,cAAoCxX,GAAAA;IACjDzM,YAAYjM,IAAAA;AACVkM,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK4C,MAAMA;IACb;IAEAuZ,QAAQpR,IAAAA;AACN,YAAM6iB,KAAQ,IAAImF;AAElBnF,MAAAA,GAAMoF,SAAS,OACbpF,GAAMQ,QAAQpuB,KAAKouB,QAAQR,GAAMqF,cACjCrF,GAAMU,SAAStuB,KAAKsuB,SAASV,GAAMsF,eAC5BnoB,GAAAA,MAAe6iB,EAAAA,IAGxBA,GAAMuF,UAAU,MAAMpoB,GAAAA,KAAS,GAE/B6iB,GAAMC,MAAM7tB,KAAK4C;IACnB;EAAA;ACfa,MAAMwwB,KAAN,MAAMA,YAAmBniB,GAAAA;IAGtC,OAAA,kBAAyBtS,IAAAA;AACvB,YACMgO,KAAa,IAAI3M,KADJA,KAAKqzB,kBAAkB10B,EAAAA,CAAAA;AAG1C,aADAgO,GAAW2mB,QAAQ30B,EAAAA,GACZgO;IACT;IAEA,OAAA,kBAAyBhO,IAAAA;AACvB,aAAO,IAAIya,GAAK,EACdma,UAAU50B,GAAKF,MACf+0B,UAAU70B,GAAKD,MACf+0B,aAAa90B,GAAKqM,KAAAA,CAAAA;IAEtB;IAEA,OAAA,SAAgB0oB,IAAAA;AACd,aAAO,IAAI1zB,KAAK0zB,EAAAA;IAClB;IAEA7kB,cAAAA;AAA6B,UAAjBjQ,KAAUyG,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACvByJ,YAAMlQ,EAAAA,GACNoB,KAAK2zB,cAAc3zB,KAAK2zB,YAAYhd,KAAK3W,IAAAA,GACzCA,KAAKpB,aAAawa,GAAK9K,IAAI1P,EAAAA,GAC3BoB,KAAK4zB,oBAAAA;IACP;IAEAvnB,aAAagmB,IAAAA;AACX,aAAOryB,KAAKpB,WAAWoU,IAAIqf,EAAAA;IAC7B;IAEAtI,aAAasI,IAAAA;AACX,aAAOryB,KAAKpB,WAAWiU,IAAIwf,EAAAA;IAC7B;IAEA1D,gBAAAA;AACE,aAAO3uB,KAAKpB,WAAWob,SAAAA;IACzB;IAEA6Z,gBAAAA;AAA+B,UAAjBj1B,KAAUyG,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACzB,YAAMyuB,KAAgB9zB,KAAKpB,WAAWgb,MAAMhb,EAAAA;AACG,UAAAm1B,IAAAC,IAAAC,IAAAC;AAA/C,UAAA,CAAKl0B,KAAKpB,WAAW4Q,UAAUskB,EAAAA,EAI7B,QAHA9zB,KAAKpB,aAAak1B,IAClB9zB,KAAK4zB,oBAAAA,GAAAA,UACLG,KAAAA,KAAKpG,oBAAAA,WAAeoG,MAA+BC,UAA/BA,KAApBD,GAAsBtF,kCAAAA,WAA6BuF,MAAnDA,GAAAjuB,KAAAguB,IAAsD/zB,IAAAA,GAClCi0B,UAApBA,KAAOj0B,KAAKm0B,aAAAA,WAAQF,MAA+B,UAA/BC,KAAbD,GAAexF,kCAAAA,WAA6ByF,KAAAA,SAA5CA,GAAAnuB,KAAAkuB,IAA+Cj0B,IAAAA;IAE1D;IAEA4zB,sBAAAA;AACE,UAAI5zB,KAAKkvB,cAAAA,EACP,QAAOlvB,KAAKo0B,WAAAA;IAEhB;IAEAzI,YAAAA;AACE,aAAoB,QAAb3rB,KAAKrB,QAAAA,EAAkBqB,KAAKguB,OAAAA,KAAYhuB,KAAKqrB,QAAAA;IACtD;IAEA6D,gBAAAA;AACE,aAAIlvB,KAAKpB,WAAWiU,IAAI,aAAA,IACf7S,KAAKpB,WAAWoU,IAAI,aAAA,IAEpBogB,IAAWiB,mBAAmBx0B,KAAKG,KAAKgtB,eAAAA,CAAAA;IAEnD;IAEAL,UAAAA;AACE,aAAI3sB,KAAKurB,WAAAA,IACA,YACEvrB,KAAKkvB,cAAAA,IACP,YAEA;IAEX;IAEAlB,SAAAA;AACE,aAAOhuB,KAAKpB,WAAWoU,IAAI,KAAA;IAC7B;IAEAqY,UAAAA;AACE,aAAOrrB,KAAKpB,WAAWoU,IAAI,MAAA;IAC7B;IAEAqZ,cAAAA;AACE,aAAOrsB,KAAKpB,WAAWoU,IAAI,UAAA,KAAe;IAC5C;IAEAshB,cAAAA;AACE,aAAOt0B,KAAKpB,WAAWoU,IAAI,UAAA;IAC7B;IAEAsZ,uBAAAA;AACE,YAAMkH,KAAWxzB,KAAKpB,WAAWoU,IAAI,UAAA;AACrC,aAAwB,YAAA,OAAbwgB,KACF7f,EAAgBnQ,UAAUgwB,EAAAA,IAE1B;IAEX;IAEA3G,eAAAA;AAAe,UAAA0H;AACb,aACoBA,UADpBA,KAAOv0B,KAAKqsB,YAAAA,EACT3rB,MAAM,UAAA,MAAA,WAAW6zB,KAAAA,SADbA,GACgB,CAAA,EACpBj0B,YAAAA;IACL;IAEA0sB,iBAAAA;AACE,aAAOhtB,KAAKpB,WAAWoU,IAAI,aAAA;IAC7B;IAEAuY,aAAAA;AACE,aAAOvrB,KAAKpB,WAAWiU,IAAI,SAAA;IAC7B;IAEA4Y,aAAAA;AACE,aAAOzrB,KAAKpB,WAAWoU,IAAI,SAAA;IAC7B;IAEAqb,WAAAA;AACE,aAAOruB,KAAKpB,WAAWoU,IAAI,OAAA;IAC7B;IAEAub,YAAAA;AACE,aAAOvuB,KAAKpB,WAAWoU,IAAI,QAAA;IAC7B;IAEAwhB,UAAAA;AACE,aAAOx0B,KAAKrB;IACd;IAEA20B,QAAQ30B,IAAAA;AAEN,UADAqB,KAAKrB,OAAOA,IACRqB,KAAKkvB,cAAAA,EACP,QAAOlvB,KAAKy0B,YAAAA;IAEhB;IAEAd,cAAAA;AACE3zB,WAAK00B,qBAAAA,GACL10B,KAAKrB,OAAO;IACd;IAEAmtB,oBAAAA;AACE,aAA8B,QAAvB9rB,KAAK20B,iBAAyB30B,KAAK20B,iBAAiB;IAC7D;IAEAC,kBAAkBpwB,IAAAA;AACmB,UAAAqwB,IAAAC;AAAnC,UAAI90B,KAAK20B,mBAAmBnwB,GAE1B,QADAxE,KAAK20B,iBAAiBnwB,IACYqwB,UAAlCA,KAAO70B,KAAK8qB,2BAAAA,WAAsB+J,MAAmC,UAAnCC,KAA3BD,GAA6BrH,sCAAAA,WAAiCsH,KAAAA,SAA9DA,GAAA/uB,KAAA8uB,IAAiE70B,IAAAA;IAE5E;IAEAyP,SAAAA;AACE,aAAOzP,KAAK2uB,cAAAA;IACd;IAEAjf,cAAAA;AACE,aAAO,CAAEZ,MAAMY,YAAAA,GAAerK,SAAAA,GAAYrF,KAAKpB,WAAW8Q,YAAAA,GAAe1P,KAAKkuB,cAAAA,CAAAA,EAAkBld,KAAK,GAAA;IACvG;IAIAkd,gBAAAA;AACE,aAAOluB,KAAKiuB,cAAcjuB,KAAK+0B;IACjC;IAEAC,cAAcpyB,IAAAA;AACsB,UAAAqyB,IAAAC,IAAAC,IAAAC;AAAlC,UAAIxyB,OAAQ5C,KAAKkuB,cAAAA,EAGf,QAFAluB,KAAKiuB,aAAarrB,IAAAA,UAClBqyB,KAAAA,KAAKtH,oBAAAA,WAAesH,MAA+BC,UAA/BA,KAApBD,GAAsBxG,kCAAAA,WAA6ByG,MAAnDA,GAAAnvB,KAAAkvB,IAAsDj1B,IAAAA,GAClCm1B,UAApBA,KAAOn1B,KAAKm0B,aAAAA,WAAQgB,MAA+B,UAA/BC,KAAbD,GAAeE,kCAAAA,WAA6BD,KAAAA,SAA5CA,GAAArvB,KAAAovB,IAA+Cn1B,IAAAA;IAE1D;IAEAo0B,aAAAA;AACE,aAAOp0B,KAAKs1B,QAAQt1B,KAAKguB,OAAAA,GAAUhuB,KAAK2zB,WAAAA;IAC1C;IAEAc,cAAAA;AACE,UAAIz0B,KAAKrB,KAEP,QADAqB,KAAKu1B,gBAAgBC,IAAIC,gBAAgBz1B,KAAKrB,IAAAA,GACvCqB,KAAKs1B,QAAQt1B,KAAKu1B,aAAAA;IAE7B;IAEAb,uBAAAA;AACM10B,WAAKu1B,kBACPC,IAAIE,gBAAgB11B,KAAKu1B,aAAAA,GACzBv1B,KAAKu1B,gBAAgB;IAEzB;IAEAD,QAAQ1yB,IAAKmI,IAAAA;AACX,UAAInI,MAAOA,OAAQ5C,KAAKkuB,cAAAA,GAAiB;AACvCluB,aAAK+0B,gBAAgBnyB;AAErB,eADkB,IAAIkwB,GAAsBlwB,EAAAA,EAEzC+yB,KAAKzL,CAAAA,OAAAA;AAAuB,cAAA,EAAtBkE,OAAEA,IAAKE,QAAEA,GAAAA,IAAQpE;AAMtB,iBALKlqB,KAAKquB,SAAAA,KAAeruB,KAAKuuB,UAAAA,KAC5BvuB,KAAK6zB,cAAc,EAAEzF,OAAAA,IAAOE,QAAAA,GAAAA,CAAAA,GAE9BtuB,KAAK+0B,gBAAgB,MACrB/0B,KAAKg1B,cAAcpyB,EAAAA,GACZmI,QAAAA,KAAAA,SAAAA,GAAAA;QAAY,CAAA,EAEpB6qB,MAAM,OACL51B,KAAK+0B,gBAAgB,MACdhqB,QAAAA,KAAAA,SAAAA,GAAAA,EAAAA;MAEb;IACF;EAAA;AACD8nB,KAxNoBO,IAAU,sBACD,kCAAA;ACDf,MAAMyC,KAAN,MAAMA,YAAwB/D,GAAAA;IAG3C,OAAA,SAAgBE,IAAAA;AACd,aAAO,IAAIhyB,KAAKozB,GAAWjiB,SAAS6gB,GAAUrlB,UAAAA,GAAaqlB,GAAUpzB,UAAAA;IACvE;IAEAiQ,YAAYlC,IAAAA;AACVmC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK2M,aAAaA,IAClB3M,KAAKsF,SAAS,GACdtF,KAAK81B,wCAAwC,MAAA,GACxC91B,KAAK2M,WAAW4e,WAAAA,KACnBvrB,KAAK+1B,2BAAAA;IAET;IAEAD,wCAAwCzD,IAAAA;AAClCryB,WAAK+pB,aAAasI,EAAAA,MACfryB,KAAK2M,WAAWod,aAAasI,EAAAA,KAChCryB,KAAK2M,WAAWknB,cAAc7zB,KAAKpB,WAAWsQ,MAAM,CAAEmjB,EAAAA,CAAAA,CAAAA,GAExDryB,KAAKpB,aAAaoB,KAAKpB,WAAW4D,OAAO6vB,EAAAA;IAE7C;IAEA0D,6BAAAA;AACE,YAAMn3B,KAAaoB,KAAKpB,WAAWsQ,MAAM2mB,IAAgBG,mBAAAA;AACpDp3B,MAAAA,GAAW4Q,UAAUxP,KAAKpB,UAAAA,MAC7BoB,KAAKpB,aAAaA;IAEtB;IAEAszB,WAAAA;AACE,aAAOlyB,KAAK2M;IACd;IAEA+lB,iBAAAA;AACE,aAAA,CAAQ1yB,KAAK2M,WAAWgf,UAAAA;IAC1B;IAEAO,aAAAA;AACE,aAAOlsB,KAAKpB,WAAWoU,IAAI,SAAA,KAAc;IAC3C;IAEAxD,UAAUwb,IAAAA;AAAO,UAAAiL;AACf,aAAOnnB,MAAMU,UAAUwb,EAAAA,KAAUhrB,KAAK2M,WAAWxB,QAAO6f,QAAAA,MAAiB,UAAZiL,KAALjL,GAAOre,eAAAA,WAAUspB,KAAAA,SAAjBA,GAAmB9qB;IAC7E;IAEAqD,WAAAA;AACE,axCrDwC;IwCsD1C;IAEAiB,SAAAA;AACE,YAAMymB,KAAOpnB,MAAMW,OAAAA,GAAUpK,SAAAA;AAE7B,aADA6wB,GAAKvpB,aAAa3M,KAAK2M,YAChBupB;IACT;IAEAxmB,cAAAA;AACE,aAAO,CAAEZ,MAAMY,YAAAA,GAAerK,SAAAA,GAAYrF,KAAK2M,WAAW+C,YAAAA,CAAAA,EAAgBsB,KAAK,GAAA;IACjF;IAEAmlB,YAAAA;AACE,aAAO/kB,KAAKO,UAAU3R,KAAKwO,SAAAA,CAAAA;IAC7B;EAAA;AACDqkB,KAlEoBgD,IAAe,uBACL,CAAE,WAAW,cAAA,CAAA,GAmE5C/D,GAAMsE,aAAa,cAAcP,EAAAA;ACrElB,MAAMQ,KAAN,cAA0BvE,GAAAA;IACvC,OAAA,SAAgBE,IAAAA;AACd,aAAO,IAAIhyB,KAAKgyB,GAAU1hB,QAAQ0hB,GAAUpzB,UAAAA;IAC9C;IAEAiQ,YAAYyB,IAAAA;AACVxB,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKsQ,UnBDyBA,CAAAA,OAAWA,GAAOpM,QAAQ,UAAU,IAAA,GmBClCoM,EAAAA,GAChCtQ,KAAKsF,SAAStF,KAAKsQ,OAAOhL;IAC5B;IAEA4sB,WAAAA;AACE,aAAOlyB,KAAKsQ;IACd;IAEA9B,WAAAA;AACE,aAAOxO,KAAKsQ,OAAO9B,SAAAA;IACrB;IAEAikB,eAAAA;AACE,aAA2B,SAApBzyB,KAAKwO,SAAAA,KAAAA,SAAuBxO,KAAKqM,aAAa,YAAA;IACvD;IAEAoD,SAAAA;AACE,YAAMqB,KAAShC,MAAMW,OAAAA,GAAUpK,SAAAA;AAE/B,aADAyL,GAAOR,SAAStQ,KAAKsQ,QACdQ;IACT;IAIA8hB,sBAAsB5H,IAAAA;AACpB,aAAOA,MAAShrB,KAAKqR,qBAAqB2Z,EAAAA,KAAUhrB,KAAKwyB,yBAAyBxH,EAAAA;IACpF;IAEAsL,gBAAgBtL,IAAAA;AACd,aAAO,IAAIhrB,KAAK6O,YAAY7O,KAAKwO,SAAAA,IAAawc,GAAMxc,SAAAA,GAAYxO,KAAKpB,UAAAA;IACvE;IAEA23B,cAActnB,IAAAA;AACZ,UAAIsH,IAAMC;AAWV,aAVe,MAAXvH,MACFsH,KAAO,MACPC,KAAQxW,QACCiP,OAAWjP,KAAKsF,UACzBiR,KAAOvW,MACPwW,KAAQ,SAERD,KAAO,IAAIvW,KAAK6O,YAAY7O,KAAKsQ,OAAOpB,MAAM,GAAGD,EAAAA,GAASjP,KAAKpB,UAAAA,GAC/D4X,KAAQ,IAAIxW,KAAK6O,YAAY7O,KAAKsQ,OAAOpB,MAAMD,EAAAA,GAASjP,KAAKpB,UAAAA,IAExD,CAAE2X,IAAMC,EAAAA;IACjB;IAEA2f,YAAAA;AACE,UAAA,EAAI7lB,QAAEA,GAAAA,IAAWtQ;AAIjB,aAHIsQ,GAAOhL,SAAS,OAClBgL,KAASA,GAAOpB,MAAM,GAAG,EAAA,IAAM,WAE1BkC,KAAKO,UAAUrB,GAAO9B,SAAAA,CAAAA;IAC/B;EAAA;AAGFsjB,KAAMsE,aAAa,UAAUC,EAAAA;AC5Dd,MAAMG,KAAN,cAA6BvlB,GAAAA;IAC1C,OAAA,IAAWqI,IAAAA;AACT,aAAIA,cAAmBtZ,OACdsZ,KAEA,IAAItZ,KAAKsZ,EAAAA;IAEpB;IAEAzK,cAAAA;AAA0B,UAAdyK,KAAOjU,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACpByJ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKsZ,UAAUA,GAAQpK,MAAM,CAAA,GAC7BlP,KAAKsF,SAAStF,KAAKsZ,QAAQhU;IAC7B;IAEAob,QAAQ9S,IAAAA;AACN,aAAO5N,KAAKsZ,QAAQoH,QAAQ9S,EAAAA;IAC9B;IAEAwE,SAAAA;AAAgB,eAAAF,KAAA7M,UAAAC,QAAN4I,KAAI2B,IAAAA,MAAAqC,EAAAA,GAAAC,KAAA,GAAAA,KAAAD,IAAAC,KAAJjE,CAAAA,GAAIiE,EAAAA,IAAA9M,UAAA8M,EAAAA;AACZ,aAAO,IAAInS,KAAK6O,YAAYoD,GAAYjS,KAAKsZ,SAAAA,GAAYpL,EAAAA,CAAAA;IAC3D;IAEAuoB,WAAW1rB,IAAAA;AACT,aAAO/K,KAAKsZ,QAAQ/I,IAAI,CAAC3C,IAAQoE,OAAUjH,GAAS6C,IAAQoE,EAAAA,CAAAA;IAC9D;IAEA0kB,oBAAoB9oB,IAAQoE,IAAAA;AAC1B,aAAOhS,KAAKoS,OAAOJ,IAAO,GAAGpE,EAAAA;IAC/B;IAEA+oB,4BAA4BC,IAAgB5kB,IAAAA;AAC1C,aAAOhS,KAAKoS,OAAOJ,IAAO,GAAA,GAAM4kB,GAAetd,OAAAA;IACjD;IAEAud,+BAA+BD,IAAgBE,IAAAA;AAC7C,YAAA,CAAQxd,IAAStH,EAAAA,IAAUhS,KAAK+2B,sBAAsBD,EAAAA;AACtD,aAAO,IAAI92B,KAAK6O,YAAYyK,EAAAA,EAASqd,4BAA4BC,IAAgB5kB,EAAAA;IACnF;IAEAglB,kBAAkBhlB,IAAOjH,IAAAA;AACvB,aAAO/K,KAAKi3B,qBAAqBlsB,GAAS/K,KAAKsZ,QAAQtH,EAAAA,CAAAA,GAASA,EAAAA;IAClE;IAEAilB,qBAAqBrpB,IAAQoE,IAAAA;AAC3B,aAAOhS,KAAKoS,OAAOJ,IAAO,GAAGpE,EAAAA;IAC/B;IAEAspB,oBAAoBllB,IAAAA;AAClB,aAAOhS,KAAKoS,OAAOJ,IAAO,CAAA;IAC5B;IAEAmlB,iBAAiBnlB,IAAAA;AACf,aAAOhS,KAAKsZ,QAAQtH,EAAAA;IACtB;IAEAolB,yBAAyB3hB,IAAAA;AACvB,YAAA,CAAQ6D,IAASL,IAAWoe,EAAAA,IAAer3B,KAAKs3B,oBAAoB7hB,EAAAA;AACpE,aAAO,IAAIzV,KAAK6O,YAAYyK,GAAQpK,MAAM+J,IAAWoe,KAAa,CAAA,CAAA;IACpE;IAEAE,qBAAqB13B,IAAAA;AACnB,YAAMyZ,KAAUtZ,KAAKsZ,QAAQpC,OAAQtJ,CAAAA,OAAW/N,GAAK+N,EAAAA,CAAAA;AACrD,aAAO,IAAI5N,KAAK6O,YAAYyK,EAAAA;IAC9B;IAEAke,qBAAqB/hB,IAAAA;AACnB,YAAA,CAAQ6D,IAASL,IAAWoe,EAAAA,IAAer3B,KAAKs3B,oBAAoB7hB,EAAAA;AACpE,aAAO,IAAIzV,KAAK6O,YAAYyK,EAAAA,EAASlH,OAAO6G,IAAWoe,KAAape,KAAY,CAAA;IAClF;IAEAwe,wBAAwBhiB,IAAOiiB,IAAAA;AAC7B,YAAA,CAAQpe,IAASL,IAAWoe,EAAAA,IAAer3B,KAAKs3B,oBAAoB7hB,EAAAA,GAC9DkiB,KAAqBre,GAAQ/I,IAAI,CAAC3C,IAAQoE,OAC9CiH,MAAajH,MAASA,MAASqlB,KAAaK,GAAU9pB,EAAAA,IAAUA,EAAAA;AAElE,aAAO,IAAI5N,KAAK6O,YAAY8oB,EAAAA;IAC9B;IAEAL,oBAAoB7hB,IAAAA;AAClB,UAAImiB,IAAAA,CACEte,IAASue,IAAgB5oB,EAAAA,IAAWjP,KAAK+2B,sBAAsBe,GAAariB,EAAAA,CAAAA;AAGlF,aAAA,CAFG6D,IAASse,EAAAA,IAAoB,IAAI53B,KAAK6O,YAAYyK,EAAAA,EAASyd,sBAAsBgB,GAAWtiB,EAAAA,IAASxG,EAAAA,GAEjG,CAAEqK,IAASue,IAAgBD,KAAkB,CAAA;IACtD;IAEAI,oBAAoBlB,IAAAA;AAClB,YAAA,EAAM9kB,OAAEA,GAAAA,IAAUhS,KAAKi4B,6BAA6BnB,EAAAA;AACpD,aAAO92B,KAAKsZ,QAAQtH,EAAAA;IACtB;IAEA+kB,sBAAsBD,IAAAA;AACpB,UAAIoB,IAAYC;AAChB,YAAA,EAAMnmB,OAAEA,IAAK/C,QAAEA,GAAAA,IAAWjP,KAAKi4B,6BAA6BnB,EAAAA,GACtDxd,KAAUtZ,KAAKsZ,QAAQpK,MAAM,CAAA;AACnC,UAAa,QAAT8C,GACF,KAAe,MAAX/C,GACFipB,CAAAA,KAAalmB,IACbmmB,KAAc;WACT;AACL,cAAMvqB,KAAS5N,KAAKm3B,iBAAiBnlB,EAAAA,GAAAA,CAC7BomB,IAAYC,EAAAA,IAAgBzqB,GAAO2oB,cAActnB,EAAAA;AACzDqK,QAAAA,GAAQlH,OAAOJ,IAAO,GAAGomB,IAAYC,EAAAA,GACrCH,KAAalmB,KAAQ,GACrBmmB,KAAcC,GAAWzF,UAAAA,IAAc1jB;MACzC;UAEAipB,CAAAA,KAAa5e,GAAQhU,QACrB6yB,KAAc;AAGhB,aAAO,CAAE7e,IAAS4e,IAAYC,EAAAA;IAChC;IAEAG,cAAAA;AACE,YAAMhf,KAAU,CAAA;AAChB,UAAIif,KAAgBv4B,KAAKsZ,QAAQ,CAAA;AAejC,aAbAtZ,KAAKsZ,QAAQpK,MAAM,CAAA,EAAGjG,QAAS2E,CAAAA,OAAAA;AAAW,YAAA4qB,IAAAC;AACD,kBAAvCD,MAAIC,KAAAF,IAAc3F,0BAAAA,WAAqB4F,MAAnCA,GAAAzyB,KAAA0yB,IAAsC7qB,EAAAA,IACxC2qB,KAAgBA,GAAcjC,gBAAgB1oB,EAAAA,KAE9C0L,GAAQ3P,KAAK4uB,EAAAA,GACbA,KAAgB3qB;MAClB,CAAA,GAGE2qB,MACFjf,GAAQ3P,KAAK4uB,EAAAA,GAGR,IAAIv4B,KAAK6O,YAAYyK,EAAAA;IAC9B;IAEAof,4BAA4BC,IAAYC,IAAAA;AACtC,YACMC,KADU74B,KAAKsZ,QAAQpK,MAAM,CAAA,EACJA,MAAMypB,IAAYC,KAAW,CAAA,GACtDE,KAAsB,IAAI94B,KAAK6O,YAAYgqB,EAAAA,EAAgBP,YAAAA,EAAcxe,QAAAA;AAC/E,aAAO9Z,KAAKoS,OAAOumB,IAAYE,GAAevzB,QAAAA,GAAWwzB,EAAAA;IAC3D;IAEAb,6BAA6BnB,IAAAA;AAC3B,UAAI9kB,IACA+mB,KAAkB;AACtB,WAAK/mB,KAAQ,GAAGA,KAAQhS,KAAKsZ,QAAQhU,QAAQ0M,MAAS;AACpD,cACMgnB,KAAeD,KADN/4B,KAAKsZ,QAAQtH,EAAAA,EACkB2gB,UAAAA;AAC9C,YAAIoG,MAAmBjC,MAAYA,KAAWkC,GAC5C,QAAO,EAAEhnB,OAAAA,IAAO/C,QAAQ6nB,KAAWiC,GAAAA;AAErCA,QAAAA,KAAkBC;MACpB;AACA,aAAO,EAAEhnB,OAAO,MAAM/C,QAAQ,KAAA;IAChC;IAEAgqB,6BAA6BjnB,IAAO/C,IAAAA;AAClC,UAAI6nB,KAAW;AACf,eAASoC,KAAe,GAAGA,KAAel5B,KAAKsZ,QAAQhU,QAAQ4zB,MAAgB;AAC7E,cAAMtrB,KAAS5N,KAAKsZ,QAAQ4f,EAAAA;AAC5B,YAAIA,KAAelnB,GACjB8kB,CAAAA,MAAYlpB,GAAO+kB,UAAAA;iBACVuG,OAAiBlnB,IAAO;AACjC8kB,UAAAA,MAAY7nB;AACZ;QACF;MACF;AACA,aAAO6nB;IACT;IAEAqC,iBAAAA;AAME,aALwB,QAApBn5B,KAAKo5B,gBACPp5B,KAAKo5B,cAAc,GACnBp5B,KAAKsZ,QAAQrQ,QAAS2E,CAAAA,OAAW5N,KAAKo5B,eAAexrB,GAAO+kB,UAAAA,CAAAA,IAGvD3yB,KAAKo5B;IACd;IAEA5qB,WAAAA;AACE,aAAOxO,KAAKsZ,QAAQtI,KAAK,EAAA;IAC3B;IAEA8I,UAAAA;AACE,aAAO9Z,KAAKsZ,QAAQpK,MAAM,CAAA;IAC5B;IAEAO,SAAAA;AACE,aAAOzP,KAAK8Z,QAAAA;IACd;IAEAtK,UAAUonB,IAAAA;AACR,aAAO9nB,MAAMU,UAAAA,GAAanK,SAAAA,KAAcg0B,GAAqBr5B,KAAKsZ,SAASsd,QAAAA,KAAAA,SAAAA,GAAgBtd,OAAAA;IAC7F;IAEA7H,wBAAAA;AACE,aAAO,EACL6H,SAAO,IAAA7V,OAAMzD,KAAKsZ,QAAQ/I,IAAK3C,CAAAA,OAAWA,GAAO0D,QAAAA,CAAAA,EAAWN,KAAK,IAAA,GAAK,GAAA,EAAA;IAE1E;EAAA;AAGF,MAAMqoB,KAAuB,SAAS9iB,IAAAA;AAAkB,QAAZC,KAAKnR,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAClD,QAAIkR,GAAKjR,WAAWkR,GAAMlR,OACxB,QAAA;AAEF,QAAIwL,KAAAA;AACJ,aAASkB,KAAQ,GAAGA,KAAQuE,GAAKjR,QAAQ0M,MAAS;AAChD,YAAMpE,KAAS2I,GAAKvE,EAAAA;AAChBlB,MAAAA,MAAAA,CAAWlD,GAAO4B,UAAUgH,GAAMxE,EAAAA,CAAAA,MACpClB,KAAAA;IAEJ;AACA,WAAOA;EACT;AAZA,MAcMgnB,KAAgBriB,CAAAA,OAAUA,GAAM,CAAA;AAdtC,MAgBMsiB,KAActiB,CAAAA,OAAUA,GAAM,CAAA;ACtNrB,MAAM6jB,KAAN,cAAmBroB,GAAAA;IAChC,OAAA,gCAAuCtE,IAAY/N,IAAAA;AAEjD,aAAO,IAAIoB,KAAK,CADF,IAAI61B,GAAgBlpB,IAAY/N,EAAAA,CAAAA,CAAAA;IAEhD;IAEA,OAAA,4BAAmC0R,IAAQ1R,IAAAA;AAEzC,aAAO,IAAIoB,KAAK,CADF,IAAIq2B,GAAY/lB,IAAQ1R,EAAAA,CAAAA,CAAAA;IAExC;IAEA,OAAA,SAAgB26B,IAAAA;AAEd,aAAO,IAAIv5B,KADI6P,MAAMC,KAAKypB,EAAAA,EAAUhpB,IAAKyhB,CAAAA,OAAcF,GAAM3gB,SAAS6gB,EAAAA,CAAAA,CAAAA;IAExE;IAEAnjB,cAAAA;AAAyB,UAAbihB,KAAMzqB,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACnByJ,YAAAA,GAASzJ,SAAAA;AACT,YAAMm0B,KAAW1J,GAAO5Y,OAAQ8T,CAAAA,OAAAA,CAAWA,GAAMjR,QAAAA,CAAAA;AACjD/Z,WAAKy5B,YAAY,IAAIjD,GAAegD,EAAAA;IACtC;IAEA7f,OAAAA;AACE,aAAO3Z,KAAK05B,kBAAkB15B,KAAKy5B,SAAAA;IACrC;IAEAC,kBAAkBD,IAAAA;AAChB,aAAO,IAAIz5B,KAAK6O,YAAY4qB,GAAUnB,YAAAA,EAAcxe,QAAAA,CAAAA;IACtD;IAEA6f,mBAAmBC,IAAAA;AACjB,YAAM9J,KAAS9vB,KAAK+vB,UAAAA,EAAYxf,IAAKya,CAAAA,OAAU4O,GAAU3e,KAAK+P,EAAAA,KAAUA,EAAAA;AACxE,aAAO,IAAIhrB,KAAK6O,YAAYihB,EAAAA;IAC9B;IAEA+J,WAAWr6B,IAAAA;AACT,aAAOQ,KAAK85B,qBAAqBt6B,IAAMQ,KAAK2yB,UAAAA,CAAAA;IAC9C;IAEAmH,qBAAqBt6B,IAAMs3B,IAAAA;AACzB,aAAO92B,KAAK05B,kBAAkB15B,KAAKy5B,UAAU5C,+BAA+Br3B,GAAKi6B,WAAW3C,EAAAA,CAAAA;IAC9F;IAEAiD,kBAAkBtkB,IAAAA;AAChB,aAAOzV,KAAK05B,kBAAkB15B,KAAKy5B,UAAUjC,qBAAqB/hB,EAAAA,CAAAA;IACpE;IAEAukB,mBAAmBx6B,IAAMiW,IAAAA;AACvB,aAAOzV,KAAK+5B,kBAAkBtkB,EAAAA,EAAOqkB,qBAAqBt6B,IAAMiW,GAAM,CAAA,CAAA;IACxE;IAEAwkB,4BAA4BxkB,IAAOqhB,IAAAA;AACjC,UAAIrhB,GAAM,CAAA,KAAMqhB,MAAYA,MAAYrhB,GAAM,CAAA,EAAI;AAClD,YAAMjW,KAAOQ,KAAKk6B,eAAezkB,EAAAA,GAC3BnQ,KAAS9F,GAAKmzB,UAAAA;AAIpB,aAHIld,GAAM,CAAA,IAAKqhB,OACbA,MAAYxxB,KAEPtF,KAAK+5B,kBAAkBtkB,EAAAA,EAAOqkB,qBAAqBt6B,IAAMs3B,EAAAA;IAClE;IAEAqD,oBAAoB9H,IAAW7tB,IAAOiR,IAAAA;AACpC,YAAM7W,KAAa,CAAA;AAEnB,aADAA,GAAWyzB,EAAAA,IAAa7tB,IACjBxE,KAAKo6B,qBAAqBx7B,IAAY6W,EAAAA;IAC/C;IAEA2kB,qBAAqBx7B,IAAY6W,IAAAA;AAC/B,aAAOzV,KAAK05B,kBACV15B,KAAKy5B,UAAUhC,wBAAwBhiB,IAAQuV,CAAAA,OAAUA,GAAMmH,6BAA6BvzB,EAAAA,CAAAA,CAAAA;IAEhG;IAEAy7B,uBAAuBhI,IAAW5c,IAAAA;AAChC,aAAOzV,KAAK05B,kBACV15B,KAAKy5B,UAAUhC,wBAAwBhiB,IAAQuV,CAAAA,OAAUA,GAAMoH,qBAAqBC,EAAAA,CAAAA,CAAAA;IAExF;IAEAiI,qBAAqB17B,IAAY6W,IAAAA;AAC/B,aAAOzV,KAAK05B,kBACV15B,KAAKy5B,UAAUhC,wBAAwBhiB,IAAQuV,CAAAA,OAAUA,GAAMiH,mBAAmBrzB,EAAAA,CAAAA,CAAAA;IAEtF;IAEA27B,wBAAwBzD,IAAAA;AAAU,UAAA0D;AAChC,cAAA,UAAOA,KAAIx6B,KAACy5B,UAAUzB,oBAAoBlB,EAAAA,MAAAA,WAAS0D,KAAAA,SAA5CA,GAA8C7L,cAAAA,MAAmB,CAAA;IAC1E;IAEA8L,sBAAAA;AACE,YAAMnhB,KAAUzJ,MAAMC,KAAK9P,KAAKy5B,UAAU3f,QAAAA,CAAAA,EAAWvJ,IAAKya,CAAAA,OAAUA,GAAM2D,cAAAA,CAAAA;AAC1E,aAAOvV,GAAKC,8BAA8BC,EAAAA,EAASU,SAAAA;IACrD;IAEA0gB,2BAA2BjlB,IAAAA;AACzB,aAAOzV,KAAKk6B,eAAezkB,EAAAA,EAAOglB,oBAAAA,KAAyB,CAAA;IAC7D;IAEAE,qCAAqCjnB,IAAezE,IAAAA;AAClD,UAAIuH,IACAD,KAAOC,KAAQvH;AACnB,YAAM3J,KAAStF,KAAK2yB,UAAAA;AAEpB,aAAOpc,KAAO,KAAKvW,KAAK06B,2BAA2B,CAAEnkB,KAAO,GAAGC,EAAAA,CAAAA,EAAS9C,EAAAA,IACtE6C,CAAAA;AAEF,aAAOC,KAAQlR,MAAUtF,KAAK06B,2BAA2B,CAAEzrB,IAAQuH,KAAQ,CAAA,CAAA,EAAK9C,EAAAA,IAC9E8C,CAAAA;AAGF,aAAO,CAAED,IAAMC,EAAAA;IACjB;IAEA0jB,eAAezkB,IAAAA;AACb,aAAOzV,KAAK05B,kBAAkB15B,KAAKy5B,UAAUrC,yBAAyB3hB,EAAAA,CAAAA;IACxE;IAEAmlB,iBAAiBnlB,IAAAA;AACf,aAAOzV,KAAKy5B,UAAUrC,yBAAyB3hB,EAAAA,EAAOjH,SAAAA;IACxD;IAEAqsB,oBAAoB/D,IAAAA;AAClB,aAAO92B,KAAK46B,iBAAiB,CAAE9D,IAAUA,KAAW,CAAA,CAAA;IACtD;IAEAgE,iBAAiBxqB,IAAAA;AACf,aAAOtQ,KAAK46B,iBAAiB,CAAE,GAAGtqB,GAAOhL,MAAAA,CAAAA,MAAcgL;IACzD;IAEAyqB,eAAezqB,IAAAA;AACb,YAAMhL,KAAStF,KAAK2yB,UAAAA;AACpB,aAAO3yB,KAAK46B,iBAAiB,CAAEt1B,KAASgL,GAAOhL,QAAQA,EAAAA,CAAAA,MAAcgL;IACvE;IAEA0qB,sBAAAA;AACE,aAAOh7B,KAAKy5B,UAAU3f,QAAAA,EAAU5C,OAAQ8T,CAAAA,OAAAA,CAAAA,CAAYA,GAAMre,UAAAA;IAC5D;IAEAsuB,iBAAAA;AACE,aAAOj7B,KAAKg7B,oBAAAA,EAAsBzqB,IAAKya,CAAAA,OAAUA,GAAMre,UAAAA;IACzD;IAEAuuB,6BAA6BC,IAAAA;AAC3B,UAAIrE,KAAW;AACf,iBAAW9L,MAAShrB,KAAKy5B,UAAU3f,QAAAA,GAAW;AAAA,YAAAmc;AAC5C,aAAoB,UAAhBA,KAAAjL,GAAMre,eAAAA,WAAUspB,KAAAA,SAAhBA,GAAkB9qB,QAAOgwB,GAC3B,QAAO,EAAExuB,YAAYqe,GAAMre,YAAYmqB,UAAAA,GAAAA;AAEzCA,QAAAA,MAAY9L,GAAM1lB;MACpB;AACA,aAAO,EAAEqH,YAAY,MAAMmqB,UAAU,KAAA;IACvC;IAEAsE,kBAAkBD,IAAAA;AAChB,YAAA,EAAMxuB,YAAEA,GAAAA,IAAe3M,KAAKk7B,6BAA6BC,EAAAA;AACzD,aAAOxuB;IACT;IAEA0uB,qBAAqB1uB,IAAAA;AACnB,YAAM2uB,KAAwBt7B,KAAKk7B,6BAA6BvuB,GAAWxB,EAAAA,GACrE2rB,KAAWwE,GAAsBxE;AAEvC,UADAnqB,KAAa2uB,GAAsB3uB,WAEjC,QAAO,CAAEmqB,IAAUA,KAAW,CAAA;IAElC;IAEAyE,8BAA8B38B,IAAY+N,IAAAA;AACxC,YAAM8I,KAAQzV,KAAKq7B,qBAAqB1uB,EAAAA;AACxC,aAAI8I,KACKzV,KAAKo6B,qBAAqBx7B,IAAY6W,EAAAA,IAEtCzV;IAEX;IAEA2yB,YAAAA;AACE,aAAO3yB,KAAKy5B,UAAUN,eAAAA;IACxB;IAEApf,UAAAA;AACE,aAA4B,MAArB/Z,KAAK2yB,UAAAA;IACd;IAEAnjB,UAAUhQ,IAAAA;AAAM,UAAAg8B;AACd,aAAO1sB,MAAMU,UAAUhQ,EAAAA,MAASA,QAAAA,MAAeg8B,UAAXA,KAAJh8B,GAAMi6B,cAAAA,WAAS+B,KAAAA,SAAfA,GAAiBhsB,UAAUxP,KAAKy5B,SAAAA;IAClE;IAEAhH,eAAAA;AACE,aAA4B,MAArBzyB,KAAK2yB,UAAAA,KAAqB3yB,KAAKy5B,UAAUtC,iBAAiB,CAAA,EAAG1E,aAAAA;IACtE;IAEAgJ,UAAU1wB,IAAAA;AACR,aAAO/K,KAAKy5B,UAAUhD,WAAW1rB,EAAAA;IACnC;IAEAglB,YAAAA;AACE,aAAO/vB,KAAKy5B,UAAU3f,QAAAA;IACxB;IAEA4hB,mBAAmB5E,IAAAA;AACjB,aAAO92B,KAAKy5B,UAAUzB,oBAAoBlB,EAAAA;IAC5C;IAEArlB,wBAAAA;AACE,aAAO,EAAEgoB,WAAWz5B,KAAKy5B,UAAUnoB,QAAAA,EAAAA;IACrC;IAEAqqB,qBAAAA;AACE,YAAMlC,KAAYz5B,KAAKy5B,UAAUlC,qBAAsBvM,CAAAA,OAAUA,GAAM0H,eAAAA,CAAAA;AACvE,aAAO1yB,KAAK05B,kBAAkBD,EAAAA;IAChC;IAEAjrB,WAAAA;AACE,aAAOxO,KAAKy5B,UAAUjrB,SAAAA;IACxB;IAEAiB,SAAAA;AACE,aAAOzP,KAAKy5B,UAAUhqB,OAAAA;IACxB;IAEA0mB,YAAAA;AACE,aAAO/kB,KAAKO,UAAU3R,KAAKy5B,UAAU3f,QAAAA,EAAUvJ,IAAKya,CAAAA,OAAU5Z,KAAKrS,MAAMisB,GAAMmL,UAAAA,CAAAA,CAAAA,CAAAA;IACjF;IAIA7jB,eAAAA;AACE,aAAOA,GAAatS,KAAKwO,SAAAA,CAAAA;IAC3B;IAEAiiB,QAAAA;AACE,aAA+B,UAAxBzwB,KAAKsS,aAAAA;IACd;EAAA;ACzOa,MAAMspB,KAAN,MAAMA,YAAc3qB,GAAAA;IACjC,OAAA,SAAgB4qB,IAAAA;AAEd,aAAO,IAAI77B,KADEs5B,GAAKnoB,SAAS0qB,GAAUr8B,IAAAA,GACfq8B,GAAUj9B,YAAYi9B,GAAUt8B,cAAAA;IACxD;IAEAsP,YAAYrP,IAAMZ,IAAYW,IAAAA;AAC5BuP,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKR,OAAOs8B,GAAsBt8B,MAAQ,IAAI85B,IAAAA,GAC9Ct5B,KAAKpB,aAAaA,MAAc,CAAA,GAChCoB,KAAKT,iBAAiBA,MAAkB,CAAA;IAC1C;IAEAwa,UAAAA;AACE,aAAO/Z,KAAKR,KAAKizB,aAAAA;IACnB;IAEAjjB,UAAU2gB,IAAAA;AACR,aAAA,CAAA,CAAIrhB,MAAMU,UAAU2gB,EAAAA,KAEbnwB,KAAKR,KAAKgQ,UAAU2gB,QAAAA,KAAAA,SAAAA,GAAO3wB,IAAAA,KAASqS,GAAe7R,KAAKpB,YAAYuxB,QAAAA,KAAAA,SAAAA,GAAOvxB,UAAAA,KAAe2W,GAAgBvV,KAAKT,gBAAgB4wB,QAAAA,KAAAA,SAAAA,GAAO5wB,cAAAA;IAC/I;IAEAw8B,aAAav8B,IAAAA;AACX,aAAO,IAAIo8B,IAAMp8B,IAAMQ,KAAKpB,YAAYoB,KAAKT,cAAAA;IAC/C;IAEAy8B,kBAAAA;AACE,aAAOh8B,KAAK+7B,aAAa,IAAA;IAC3B;IAEA9J,mBAAmBrzB,IAAAA;AACjB,aAAO,IAAIg9B,IAAM57B,KAAKR,MAAMZ,IAAYoB,KAAKT,cAAAA;IAC/C;IAEA08B,wBAAAA;AACE,aAAOj8B,KAAKiyB,mBAAmB,IAAA;IACjC;IAEA0H,mBAAmBC,IAAAA;AACjB,YAAMsC,KAAatC,GAAU3e,KAAKjb,KAAKR,IAAAA;AACvC,aAAI08B,KACKl8B,KAAK+7B,aAAaG,EAAAA,IAElBl8B,KAAK+7B,aAAa/7B,KAAKR,KAAKm6B,mBAAmBC,EAAAA,CAAAA;IAE1D;IAEAuC,aAAa9J,IAAAA;AACX,YAAMzzB,KAAaoB,KAAKpB,WAAW6E,OAAO24B,GAAgB/J,EAAAA,CAAAA;AAC1D,aAAOryB,KAAKiyB,mBAAmBrzB,EAAAA;IACjC;IAEAy9B,iBAAiBhK,IAAW7tB,IAAAA;AAC1B,YAAMjF,KAAiBqU,OAAO0V,OAAO,CAAA,GAAItpB,KAAKT,gBAAgB,EAAE8yB,CAACA,EAAAA,GAAY7tB,GAAAA,CAAAA;AAC7E,aAAO,IAAIo3B,IAAM57B,KAAKR,MAAMQ,KAAKpB,YAAYW,EAAAA;IAC/C;IAEA0qB,gBAAgBoI,IAAAA;AACd,YAAA,EAAMzyB,eAAEA,GAAAA,IAAkB6T,GAAe4e,EAAAA,GACnCzzB,KAAa09B,GAAgBA,GAAgBt8B,KAAKpB,YAAYyzB,EAAAA,GAAYzyB,EAAAA;AAChF,aAAOI,KAAKiyB,mBAAmBrzB,EAAAA;IACjC;IAEA29B,sBAAAA;AACE,aAAOv8B,KAAKiqB,gBAAgBjqB,KAAKswB,iBAAAA,CAAAA;IACnC;IAEAA,mBAAAA;AACE,aAAOkM,IAAex8B,KAAKpB,UAAAA;IAC7B;IAEA+vB,gBAAAA;AACE,aAAO3uB,KAAKpB,WAAWsQ,MAAM,CAAA;IAC/B;IAEAutB,oBAAAA;AACE,aAAOz8B,KAAKpB,WAAW0G;IACzB;IAEAo3B,oBAAoBC,IAAAA;AAClB,aAAO38B,KAAKpB,WAAW+9B,KAAQ,CAAA;IACjC;IAEA5S,aAAarW,IAAAA;AACX,aAAO1T,KAAKpB,WAAWqL,SAASyJ,EAAAA;IAClC;IAEAkpB,gBAAAA;AACE,aAAO58B,KAAKy8B,kBAAAA,IAAsB;IACpC;IAEAI,2BAAAA;AACE,aAAOL,IAAex8B,KAAK88B,sBAAAA,CAAAA;IAC7B;IAEAA,wBAAAA;AACE,aAAO98B,KAAKpB,WAAWsY,OAAQmb,CAAAA,OAAc5e,GAAe4e,EAAAA,EAAWpzB,QAAAA;IACzE;IAEA89B,kBAAAA;AACE,aAAO/8B,KAAK88B,sBAAAA,EAAwBx3B;IACtC;IAEA03B,uBAAAA;AACE,YAAM3K,KAAYryB,KAAK68B,yBAAAA;AACvB,aAAIxK,KACKryB,KAAKiqB,gBAAgBoI,EAAAA,IAErBryB;IAEX;IAEAi9B,uBAAAA;AACE,YAAM5K,KAAYryB,KAAK68B,yBAAAA;AACvB,UAAIxK,IAAW;AACb,cAAMrgB,KAAQhS,KAAKpB,WAAWohB,YAAYqS,EAAAA,GACpCzzB,KAAaqT,GAAYjS,KAAKpB,YAAYoT,KAAQ,GAAG,GAAA,GAAMoqB,GAAgB/J,EAAAA,CAAAA;AACjF,eAAOryB,KAAKiyB,mBAAmBrzB,EAAAA;MACjC;AACE,aAAOoB;IAEX;IAEAk9B,wBAAAA;AACE,aAAOl9B,KAAKpB,WAAWsY,OAAQmb,CAAAA,OAAc5e,GAAe4e,EAAAA,EAAWzyB,aAAAA;IACzE;IAEAu9B,aAAAA;AAAa,UAAA9M;AACX,aAA8CA,UAA9CA,KAAO5c,GAAezT,KAAKswB,iBAAAA,CAAAA,MAAAA,WAAmBD,KAAAA,SAAvCA,GAAyCzwB;IAClD;IAEAw9B,kBAAAA;AAAkB,UAAAC;AAChB,aAA8CA,UAA9CA,KAAO5pB,GAAezT,KAAKswB,iBAAAA,CAAAA,MAAAA,WAAmB+M,KAAAA,SAAvCA,GAAyCl+B;IAClD;IAEAm+B,iBAAAA;AAAiB,UAAAC;AACf,aAA8CA,UAA9CA,KAAO9pB,GAAezT,KAAKswB,iBAAAA,CAAAA,MAAAA,WAAmBiN,KAAAA,SAAvCA,GAAyCn+B;IAClD;IAEAo+B,qCAAqCC,IAAW3G,IAAAA;AAC9C,YAAMxmB,KAAStQ,KAAKwO,SAAAA;AACpB,UAAIsC;AACJ,cAAQ2sB,IAAAA;QACN,KAAK;AACH3sB,UAAAA,KAASR,GAAOoQ,QAAQ,MAAMoW,EAAAA;AAC9B;QACF,KAAK;AACHhmB,UAAAA,KAASR,GAAOpB,MAAM,GAAG4nB,EAAAA,EAAU9W,YAAY,IAAA;MAAA;AAGnD,UAAA,OAAIlP,GACF,QAAOA;IAEX;IAEAW,wBAAAA;AACE,aAAO,EACLjS,MAAMQ,KAAKR,KAAK8R,QAAAA,GAChB1S,YAAYoB,KAAKpB,WAAAA;IAErB;IAEA4P,WAAAA;AACE,aAAOxO,KAAKR,KAAKgP,SAAAA;IACnB;IAEAiB,SAAAA;AACE,aAAO,EACLjQ,MAAMQ,KAAKR,MACXZ,YAAYoB,KAAKpB,YACjBW,gBAAgBS,KAAKT,eAAAA;IAEzB;IAIA+S,eAAAA;AACE,aAAOtS,KAAKR,KAAK8S,aAAAA;IACnB;IAEAme,QAAAA;AACE,aAAOzwB,KAAKR,KAAKixB,MAAAA;IACnB;IAIAkC,YAAAA;AACE,aAAO3yB,KAAKR,KAAKmzB,UAAAA;IACnB;IAEAC,sBAAsBzC,IAAAA;AACpB,aAAA,CAAQnwB,KAAK48B,cAAAA,KAAAA,CAAoBzM,GAAMyM,cAAAA,KAAmB58B,KAAKsS,aAAAA,MAAmB6d,GAAM7d,aAAAA;IAC1F;IAEAgkB,gBAAgBnG,IAAAA;AACd,YAAMuN,KAAcpE,GAAKqE,4BAA4B,IAAA,GAC/Cn+B,KAAOQ,KAAK49B,yBAAAA,EAA2B/D,WAAW6D,EAAAA;AACxD,aAAO19B,KAAK+7B,aAAav8B,GAAKq6B,WAAW1J,GAAM3wB,IAAAA,CAAAA;IACjD;IAEA+2B,cAActnB,IAAAA;AACZ,UAAIsH,IAAMC;AAWV,aAVe,MAAXvH,MACFsH,KAAO,MACPC,KAAQxW,QACCiP,OAAWjP,KAAK2yB,UAAAA,KACzBpc,KAAOvW,MACPwW,KAAQ,SAERD,KAAOvW,KAAK+7B,aAAa/7B,KAAKR,KAAK06B,eAAe,CAAE,GAAGjrB,EAAAA,CAAAA,CAAAA,GACvDuH,KAAQxW,KAAK+7B,aAAa/7B,KAAKR,KAAK06B,eAAe,CAAEjrB,IAAQjP,KAAK2yB,UAAAA,CAAAA,CAAAA,CAAAA,IAE7D,CAAEpc,IAAMC,EAAAA;IACjB;IAEAka,wBAAAA;AACE,aAAO1wB,KAAKR,KAAKmzB,UAAAA,IAAc;IACjC;IAEAiL,2BAAAA;AACE,aAAIC,GAAqB79B,KAAKR,IAAAA,IACrBQ,KAAKR,KAAK06B,eAAe,CAAE,GAAGl6B,KAAK0wB,sBAAAA,CAAAA,CAAAA,IAEnC1wB,KAAKR,KAAKma,KAAAA;IAErB;IAIAiB,aAAaN,IAAAA;AACX,aAAOta,KAAKpB,WAAW0b,EAAAA;IACzB;IAEAO,iBAAiBijB,IAAYxjB,IAAAA;AAC3B,YAAMyjB,KAAkBD,GAAWnP,cAAAA,GAC7BqP,KAAiBD,GAAgBzjB,EAAAA,GACjC+X,KAAYryB,KAAKpB,WAAW0b,EAAAA;AAElC,aACE+X,OAAc2L,MAAAA,EAAAA,UACZvqB,GAAe4e,EAAAA,EAAWhzB,SAAAA,E7B5NG4+B,MAAAA;AACnC,YAAA,CAAK5qB,IAAoB;AACvBA,eAAqB,CAAA;AACrB,qBAAW9O,MAAOoP,GAAwB;AACxC,kBAAA,EAAM/T,eAAEA,GAAAA,IAAkB+T,EAAuBpP,EAAAA;AAC5B,oBAAjB3E,MACFyT,GAAmB1J,KAAK/J,EAAAA;UAE5B;QACF;AACA,eAAOyT;MAAkB,G6BkN2B4qB,EAAwBh0B,SAAS8zB,GAAgBzjB,KAAQ,CAAA,CAAA,OACxGta,KAAKsS,aAAAA,MAAmBwrB,GAAWxrB,aAAAA,KAAkBwrB,GAAW/jB,QAAAA;IAErE;EAAA;AAKF,MAAM+hB,KAAwB,SAASt8B,IAAAA;AAGrC,WAFAA,KAAO0+B,GAAqC1+B,EAAAA,GAC5CA,KAAO2+B,GAAoB3+B,EAAAA;EAE7B;AAJA,MAMM0+B,KAAuC,SAAS1+B,IAAAA;AACpD,QAAI4+B,KAAAA;AACJ,UAAMtO,KAAStwB,GAAKuwB,UAAAA;AAEpB,QAAIsO,KAAcvO,GAAO5gB,MAAM,GAAG4gB,GAAOxqB,SAAS,CAAA;AAClD,UAAMg5B,KAAYxO,GAAOA,GAAOxqB,SAAS,CAAA;AAEzC,WAAKg5B,MAELD,KAAcA,GAAY9tB,IAAKya,CAAAA,OACzBA,GAAMyH,aAAAA,KACR2L,KAAAA,MACOG,GAAsBvT,EAAAA,KAEtBA,EAAAA,GAIPoT,KACK,IAAI9E,GAAK,CAAA,GAAK+E,IAAaC,EAAAA,CAAAA,IAE3B9+B,MAdcA;EAgBzB;AA7BA,MA+BMg/B,KAAiBlF,GAAKqE,4BAA4B,MAAM,EAAEc,YAAAA,KAAY,CAAA;AA/B5E,MAiCMN,KAAsB,SAAS3+B,IAAAA;AACnC,WAAIq+B,GAAqBr+B,EAAAA,IAChBA,KAEAA,GAAKq6B,WAAW2E,EAAAA;EAE3B;AAvCA,MAyCMX,KAAuB,SAASr+B,IAAAA;AACpC,UAAM8F,KAAS9F,GAAKmzB,UAAAA;AACpB,QAAe,MAAXrtB,GACF,QAAA;AAGF,WADgB9F,GAAK06B,eAAe,CAAE50B,KAAS,GAAGA,EAAAA,CAAAA,EACnCmtB,aAAAA;EACjB;AAhDA,MAkDM8L,KAAyBvT,CAAAA,OAAUA,GAAMoH,qBAAqB,YAAA;AAlDpE,MAsDMgK,KAAkB,SAAS/J,IAAAA;AAC/B,UAAA,EAAMzyB,eAAEA,GAAAA,IAAkB6T,GAAe4e,EAAAA;AACzC,WAAIzyB,KACK,CAAEA,IAAeyyB,EAAAA,IAEjB,CAAEA,EAAAA;EAEb;AA7DA,MAiEMmK,MAAkB3rB,CAAAA,OAAUA,GAAM3B,MAAAA,EAAO,EAAG,CAAA;AAjElD,MAmEMotB,KAAkB,SAASzrB,IAAOrM,IAAAA;AACtC,UAAMwN,KAAQnB,GAAMmP,YAAYxb,EAAAA;AAChC,WAAA,OAAIwN,KACKnB,KAEAoB,GAAYpB,IAAOmB,IAAO,CAAA;EAErC;ACnUe,MAAM0sB,KAAN,cAAuBztB,GAAAA;IACpC,OAAA,SAAgB0tB,IAAAA;AAEd,aAAO,IAAI3+B,KADI6P,MAAMC,KAAK6uB,EAAAA,EAAcpuB,IAAKsrB,CAAAA,OAAcD,GAAMzqB,SAAS0qB,EAAAA,CAAAA,CAAAA;IAE5E;IAEA,OAAA,WAAkBvrB,IAAQsuB,IAAAA;AACxB,YAAMp/B,KAAO85B,GAAKqE,4BAA4BrtB,IAAQsuB,EAAAA;AACtD,aAAO,IAAI5+B,KAAK,CAAE,IAAI47B,GAAMp8B,EAAAA,CAAAA,CAAAA;IAC9B;IAEAqP,cAAAA;AAAyB,UAAbgwB,KAAMx5B,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACnByJ,YAAAA,GAASzJ,SAAAA,GACa,MAAlBw5B,GAAOv5B,WACTu5B,KAAS,CAAE,IAAIjD,IAAAA,IAEjB57B,KAAK8+B,YAAYtI,GAAeloB,IAAIuwB,EAAAA;IACtC;IAEA9kB,UAAAA;AACE,YAAMoW,KAAQnwB,KAAK++B,gBAAgB,CAAA;AACnC,aAAiC,MAA1B/+B,KAAK8+B,UAAUx5B,UAAgB6qB,GAAMpW,QAAAA,KAAAA,CAAcoW,GAAMyM,cAAAA;IAClE;IAEAjjB,OAAAA;AACE,YAAMklB,MADIx5B,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GACU25B,oBAAoBh/B,KAAK8+B,UAAUxG,YAAAA,EAAcxe,QAAAA,IAAY9Z,KAAK8+B,UAAUhlB,QAAAA;AAEnG,aAAO,IAAI9Z,KAAK6O,YAAYgwB,EAAAA;IAC9B;IAEAI,6BAA6BC,IAAAA;AAC3B,YAAMtF,KAAY,IAAI5e,GAAUkkB,GAAepkB,WAAAA,CAAAA;AAC/C,aAAO9a,KAAK25B,mBAAmBC,EAAAA;IACjC;IAEAD,mBAAmBC,IAAAA;AACjB,YAAMiF,KAAS7+B,KAAKixB,UAAAA,EAAY1gB,IAAK4f,CAAAA,OACfyJ,GAAU3e,KAAKkV,EAAAA,KACbA,GAAMwJ,mBAAmBC,EAAAA,CAAAA;AAEjD,aAAO,IAAI55B,KAAK6O,YAAYgwB,EAAAA;IAC9B;IAEAM,8BAAAA;AAAkD,UAAtBz1B,KAAerE,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAC5C,YAAMw5B,KAAS7+B,KAAKixB,UAAAA,EAAY1gB,IAAK4f,CAAAA,OAAAA;AACnC,cAAMvxB,KAAa8K,GAAgBjG,OAAO0sB,GAAMxB,cAAAA,CAAAA;AAChD,eAAOwB,GAAM8B,mBAAmBrzB,EAAAA;MAAW,CAAA;AAG7C,aAAO,IAAIoB,KAAK6O,YAAYgwB,EAAAA;IAC9B;IAEAO,aAAaC,IAAUC,IAAAA;AACrB,YAAMttB,KAAQhS,KAAK8+B,UAAUpe,QAAQ2e,EAAAA;AACrC,aAAA,OAAIrtB,KACKhS,OAEF,IAAIA,KAAK6O,YAAY7O,KAAK8+B,UAAU7H,qBAAqBqI,IAAUttB,EAAAA,CAAAA;IAC5E;IAEAutB,sBAAsB76B,IAAU+Q,IAAAA;AAC9B,YAAA,EAAMqpB,WAAEA,GAAAA,IAAcp6B;AACtB+Q,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,UAAA,CAAMqhB,EAAAA,IAAarhB;AACnB,YAAA,EAAMzD,OAAEA,IAAK/C,QAAEA,GAAAA,IAAWjP,KAAKw/B,qBAAqB1I,EAAAA;AAEpD,UAAIhmB,KAAS9Q;AACb,YAAMmwB,KAAQnwB,KAAKy/B,mBAAmB3I,EAAAA;AAStC,aAPIlhB,GAAiBH,EAAAA,KAAU0a,GAAMpW,QAAAA,KAAAA,CAAcoW,GAAMyM,cAAAA,IACvD9rB,KAAS,IAAI9Q,KAAK6O,YAAYiC,GAAOguB,UAAU5H,oBAAoBllB,EAAAA,CAAAA,IAC1Dme,GAAMO,sBAAAA,MAA4BzhB,MAC3C6nB,MAGFhmB,KAASA,GAAOipB,kBAAkBtkB,EAAAA,GAC3B,IAAIzV,KAAK6O,YAAYiC,GAAOguB,UAAUjI,+BAA+BiI,IAAWhI,EAAAA,CAAAA;IACzF;IAEA4I,qBAAqBh7B,IAAU+Q,IAAAA;AAC7B,UAAIkqB,IAAmB7uB;AACvB2E,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAA,CAAQmqB,EAAAA,IAAkBnqB,IACpBoqB,KAAgB7/B,KAAKw/B,qBAAqBI,EAAAA,GAC1Cl2B,KAAkB1J,KAAK++B,gBAAgBc,GAAc7tB,KAAAA,EAAO2c,cAAAA,GAC5DmR,KAAsBp7B,GAASq7B,uBAAAA,GAC/BC,KAA0Bt2B,GAAgBwF,MAAAA,CAAO4wB,GAAoBx6B,MAAAA;AAE3E,UAAIuM,GAAeiuB,IAAqBE,EAAAA,GAA0B;AAChE,cAAMC,KAAyBv2B,GAAgBwF,MAAM,GAAA,CAAI4wB,GAAoBx6B,MAAAA;AAC7Eq6B,QAAAA,KAAoBj7B,GAASy6B,4BAA4Bc,EAAAA;MAC3D,MACEN,CAAAA,KAAoBj7B,GAASiV,KAAK,EAAEqlB,mBAAAA,KAAmB,CAAA,EAAQG,4BAA4Bz1B,EAAAA;AAG7F,YAAMw2B,KAAaP,GAAkBQ,cAAAA,GAC/BC,KAAaT,GAAkBZ,gBAAgB,CAAA;AAErD,UAAIltB,GAAenI,IAAiB02B,GAAWzR,cAAAA,CAAAA,GAAkB;AAC/D,cAAM0R,KAAYD,GAAWxC,yBAAAA;AAG7B,YAFA9sB,KAAS9Q,KAAKsgC,kBAAkBD,IAAW5qB,EAAAA,GAEvCyqB,KAAa,GAAG;AAClBP,UAAAA,KAAoB,IAAI3/B,KAAK6O,YAAY8wB,GAAkB1O,UAAAA,EAAY/hB,MAAM,CAAA,CAAA;AAC7E,gBAAM4nB,KAAW8I,KAAgBS,GAAU1N,UAAAA;AAC3C7hB,UAAAA,KAASA,GAAOyuB,sBAAsBI,IAAmB7I,EAAAA;QAC3D;MACF,MACEhmB,CAAAA,KAAS9Q,KAAKu/B,sBAAsBI,IAAmBlqB,EAAAA;AAGzD,aAAO3E;IACT;IAEAwvB,kBAAkB9gC,IAAMiW,IAAAA;AACtBA,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAA,CAAQmqB,EAAAA,IAAkBnqB,IAAAA,EACpBzD,OAAEA,IAAK/C,QAAEA,GAAAA,IAAWjP,KAAKw/B,qBAAqBI,EAAAA,GAE9Cl7B,KAAW1E,KAAK+5B,kBAAkBtkB,EAAAA;AACxC,aAAO,IAAIzV,KAAK6O,YACdnK,GAASo6B,UAAU9H,kBAAkBhlB,IAAQme,CAAAA,OAC3CA,GAAM4L,aAAa5L,GAAM3wB,KAAKs6B,qBAAqBt6B,IAAMyP,EAAAA,CAAAA,CAAAA,CAAAA;IAG/D;IAEA8qB,kBAAkBtkB,IAAAA;AAChB,UAAIopB;AACJppB,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAA,CAAQ8qB,IAAcC,EAAAA,IAAkB/qB;AACxC,UAAIG,GAAiBH,EAAAA,EACnB,QAAOzV;AAET,YAAA,CAAQygC,IAAcC,EAAAA,IAAkB7wB,MAAMC,KAAK9P,KAAK2gC,uBAAuBlrB,EAAAA,CAAAA,GAEzEwD,KAAYwnB,GAAazuB,OACzB4uB,KAAaH,GAAaxxB,QAC1B4xB,KAAY7gC,KAAK++B,gBAAgB9lB,EAAAA,GAEjCoe,KAAaqJ,GAAc1uB,OAC3B8uB,KAAcJ,GAAczxB,QAC5B8xB,KAAa/gC,KAAK++B,gBAAgB1H,EAAAA;AAQxC,UALEmJ,KAAgBD,MAAiB,KACjCM,GAAUnQ,sBAAAA,MAA4BkQ,MACtCG,GAAWrQ,sBAAAA,MAA4BoQ,MACc,SAArDC,GAAWvhC,KAAKq7B,oBAAoBiG,EAAAA,EAGpCjC,CAAAA,KAAS7+B,KAAK8+B,UAAU9H,kBAAkBK,IAAalH,CAAAA,OACrDA,GAAM4L,aAAa5L,GAAM3wB,KAAKu6B,kBAAkB,CAAE+G,IAAaA,KAAc,CAAA,CAAA,CAAA,CAAA;WAE1E;AACL,YAAI3Q;AACJ,cAAM6Q,KAAWH,GAAUrhC,KAAK06B,eAAe,CAAE,GAAG0G,EAAAA,CAAAA,GAC9CK,KAAYF,GAAWvhC,KAAK06B,eAAe,CAAE4G,IAAaC,GAAWpO,UAAAA,CAAAA,CAAAA,GACrEnzB,KAAOwhC,GAASnH,WAAWoH,EAAAA;AAM/B9Q,QAAAA,KAJwBlX,OAAcoe,MAA6B,MAAfuJ,MACXC,GAAUpE,kBAAAA,KAAuBsE,GAAWtE,kBAAAA,IAG7EsE,GAAWhF,aAAav8B,EAAAA,IAExBqhC,GAAU9E,aAAav8B,EAAAA;AAGjC,cAAM0hC,KAAqB7J,KAAa,IAAIpe;AAC5C4lB,QAAAA,KAAS7+B,KAAK8+B,UAAU1sB,OAAO6G,IAAWioB,IAAoB/Q,EAAAA;MAChE;AAEA,aAAO,IAAInwB,KAAK6O,YAAYgwB,EAAAA;IAC9B;IAEA5E,4BAA4BxkB,IAAOqhB,IAAAA;AACjC,UAAIt3B;AACJiW,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAA,CAAQmqB,IAAexG,EAAAA,IAAgB3jB;AACvC,UAAImqB,MAAiB9I,MAAYA,MAAYsC,GAC3C,QAAOp5B;AAGT,UAAI0E,KAAW1E,KAAKmhC,mBAAmB1rB,EAAAA,GACnC3E,KAAS9Q,KAAK+5B,kBAAkBtkB,EAAAA;AAEpC,YAAM2rB,KAAkBxB,KAAgB9I;AACpCsK,MAAAA,OACFtK,MAAYpyB,GAASiuB,UAAAA;AAGvB,YAAA,CAAQyN,IAAAA,GAAevB,EAAAA,IAAWn6B,GAASusB,UAAAA;AAW3C,aAVsB,MAAlB4N,GAAOv5B,UACT9F,KAAO4gC,GAAWxC,yBAAAA,GACdwD,OACFtK,MAAY,MAGdt3B,KAAO4gC,GAAW5gC,MAGpBsR,KAASA,GAAOwvB,kBAAkB9gC,IAAMs3B,EAAAA,GAClB,MAAlB+H,GAAOv5B,SACFwL,MAGTpM,KAAW,IAAI1E,KAAK6O,YAAYgwB,EAAAA,GAChC/H,MAAYt3B,GAAKmzB,UAAAA,GAEV7hB,GAAOyuB,sBAAsB76B,IAAUoyB,EAAAA;IAChD;IAEAqD,oBAAoB9H,IAAW7tB,IAAOiR,IAAAA;AACpC,UAAA,EAAIqpB,WAAEA,GAAAA,IAAc9+B;AAgBpB,aAfAA,KAAKqhC,iBACH5rB,IACA,CAAC0a,IAAOmR,IAAWtvB,OACjB8sB,KAAYA,GAAU9H,kBAAkBhlB,IAAO,WAAA;AAC7C,eAAIyB,GAAe4e,EAAAA,IACVlC,GAAMgM,aAAa9J,IAAW7tB,EAAAA,IAEjC88B,GAAU,CAAA,MAAOA,GAAU,CAAA,IACtBnR,KAEAA,GAAM4L,aAAa5L,GAAM3wB,KAAK26B,oBAAoB9H,IAAW7tB,IAAO88B,EAAAA,CAAAA;MAGhF,CAAA,CAAA,GAEE,IAAIthC,KAAK6O,YAAYiwB,EAAAA;IAC9B;IAEA3C,aAAa9J,IAAW7tB,IAAAA;AACtB,UAAA,EAAIs6B,WAAEA,GAAAA,IAAc9+B;AAIpB,aAHAA,KAAKuhC,UACH,CAACpR,IAAOne,OAAU8sB,KAAYA,GAAU9H,kBAAkBhlB,IAAO,MAAMme,GAAMgM,aAAa9J,IAAW7tB,EAAAA,CAAAA,CAAAA,GAEhG,IAAIxE,KAAK6O,YAAYiwB,EAAAA;IAC9B;IAEAzE,uBAAuBhI,IAAW5c,IAAAA;AAChC,UAAA,EAAIqpB,WAAEA,GAAAA,IAAc9+B;AAUpB,aATAA,KAAKqhC,iBAAiB5rB,IAAO,SAAS0a,IAAOmR,IAAWtvB,IAAAA;AAClDyB,WAAe4e,EAAAA,IACjByM,KAAYA,GAAU9H,kBAAkBhlB,IAAO,MAAMme,GAAMlG,gBAAgBoI,EAAAA,CAAAA,IAClEiP,GAAU,CAAA,MAAOA,GAAU,CAAA,MACpCxC,KAAYA,GAAU9H,kBAAkBhlB,IAAO,MAC7Cme,GAAM4L,aAAa5L,GAAM3wB,KAAK66B,uBAAuBhI,IAAWiP,EAAAA,CAAAA,CAAAA;MAGtE,CAAA,GACO,IAAIthC,KAAK6O,YAAYiwB,EAAAA;IAC9B;IAEAvD,8BAA8B38B,IAAY+N,IAAAA;AACxC,YAAM8I,KAAQzV,KAAKq7B,qBAAqB1uB,EAAAA,GAAAA,CAChCizB,EAAAA,IAAkB/vB,MAAMC,KAAK2F,EAAAA,GAAAA,EAC/BzD,OAAEA,GAAAA,IAAUhS,KAAKw/B,qBAAqBI,EAAAA,GACtCpgC,KAAOQ,KAAKwhC,eAAexvB,EAAAA;AAEjC,aAAO,IAAIhS,KAAK6O,YACd7O,KAAK8+B,UAAU9H,kBAAkBhlB,IAAQme,CAAAA,OACvCA,GAAM4L,aAAav8B,GAAK+7B,8BAA8B38B,IAAY+N,EAAAA,CAAAA,CAAAA,CAAAA;IAGxE;IAEA80B,6BAA6BpP,IAAW1lB,IAAAA;AACtC,YAAM8I,KAAQzV,KAAKq7B,qBAAqB1uB,EAAAA;AACxC,aAAO3M,KAAKq6B,uBAAuBhI,IAAW5c,EAAAA;IAChD;IAEAisB,2BAA2B5K,IAAUr4B,IAAM+F,IAAAA;AACzC,YAAM2rB,KAAQnwB,KAAKy/B,mBAAmB3I,EAAAA,GAChC6K,KAAexR,GAAMkM,iBAAiB59B,IAAM+F,EAAAA;AAClD,aAAOxE,KAAKo/B,aAAajP,IAAOwR,EAAAA;IAClC;IAEAC,wBAAwBnsB,IAAAA;AACtB,UAAIopB;AACJppB,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAA,CAAQmqB,EAAAA,IAAkBnqB,IAAAA,EACpBxG,QAAEA,GAAAA,IAAWjP,KAAKw/B,qBAAqBI,EAAAA,GAEvCl7B,KAAW1E,KAAK+5B,kBAAkBtkB,EAAAA;AAIxC,aAHe,MAAXxG,OACF4vB,KAAS,CAAE,IAAIjD,IAAAA,IAEV,IAAI57B,KAAK6O,YACdnK,GAASo6B,UAAUjI,+BAA+B,IAAIL,GAAeqI,EAAAA,GAASe,EAAAA,CAAAA;IAElF;IAEAiC,2BAA2BnuB,IAAelP,IAAOiR,IAAAA;AAC/C,YAAMqsB,KAAW9hC,KAAK+hC,sCAAsCtsB,EAAAA;AAC5D,UAAI/Q,KAAWo9B,GAASp9B;AACxB+Q,MAAAA,KAAQqsB,GAASrsB;AACjB,YAAMusB,KAAcvuB,GAAeC,EAAAA;AAEnC,UAAIsuB,GAAYpiC,eAAe;AAC7B8E,QAAAA,KAAWA,GAASu9B,+BAA+BxsB,IAAO,EAAEysB,qBAAqBxuB,GAAAA,CAAAA;AACjF,cAAMyuB,KAAYz9B,GAAS09B,sCAAsC3sB,EAAAA;AACjE/Q,QAAAA,KAAWy9B,GAAUz9B,UACrB+Q,KAAQ0sB,GAAU1sB;MACpB,MACE/Q,CAAAA,KADSs9B,GAAY5hC,YACVsE,GAAS29B,6BAA6B5sB,EAAAA,IACxCusB,GAAY7iC,WACVuF,GAAS49B,mCAAmC7sB,EAAAA,IAE5C/Q,GAAS69B,yBAAyB9sB,EAAAA;AAG/C,aAAO/Q,GAASy1B,oBAAoBzmB,IAAelP,IAAOiR,EAAAA;IAC5D;IAEAwsB,+BAA+BxsB,IAAAA;AAAqB,UAAdlN,KAAOlD,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAAA,EAC1Cy5B,WAAEA,GAAAA,IAAc9+B;AAcpB,aAbAA,KAAKqhC,iBAAiB5rB,IAAO,SAAS0a,IAAOmR,IAAWtvB,IAAAA;AACtD,cAAMwwB,KAAoBrS,GAAMG,iBAAAA;AAC3BkS,QAAAA,MAGA/uB,GAAe+uB,EAAAA,EAAmB5iC,iBAGnC4iC,OAAsBj6B,GAAQ25B,wBAGlCpD,KAAYA,GAAU9H,kBAAkBhlB,IAAO,MAAMme,GAAMlG,gBAAgBuY,EAAAA,CAAAA;MAC7E,CAAA,GACO,IAAIxiC,KAAK6O,YAAYiwB,EAAAA;IAC9B;IAEAwD,mCAAmC7sB,IAAAA;AACjC,UAAA,EAAIqpB,WAAEA,GAAAA,IAAc9+B;AAWpB,aAVAA,KAAKqhC,iBAAiB5rB,IAAO,SAAS0a,IAAOmR,IAAWtvB,IAAAA;AACtD,cAAMwwB,KAAoBrS,GAAMG,iBAAAA;AAC3BkS,QAAAA,MAGA/uB,GAAe+uB,EAAAA,EAAmBrjC,aAGvC2/B,KAAYA,GAAU9H,kBAAkBhlB,IAAO,MAAMme,GAAMlG,gBAAgBuY,EAAAA,CAAAA;MAC7E,CAAA,GACO,IAAIxiC,KAAK6O,YAAYiwB,EAAAA;IAC9B;IAEAuD,6BAA6B5sB,IAAAA;AAC3B,UAAA,EAAIqpB,WAAEA,GAAAA,IAAc9+B;AAMpB,aALAA,KAAKqhC,iBAAiB5rB,IAAO,SAAS0a,IAAOmR,IAAWtvB,IAAAA;AAClDme,QAAAA,GAAMyM,cAAAA,MACRkC,KAAYA,GAAU9H,kBAAkBhlB,IAAO,MAAMme,GAAM8L,sBAAAA,CAAAA;MAE/D,CAAA,GACO,IAAIj8B,KAAK6O,YAAYiwB,EAAAA;IAC9B;IAEAiD,sCAAsCtsB,IAAAA;AACpC,UAAIqhB;AACJrhB,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,UAAA,CAAMmqB,IAAexG,EAAAA,IAAgB3jB;AACrC,YAAMoqB,KAAgB7/B,KAAKw/B,qBAAqBI,EAAAA,GAC1C6C,KAAcziC,KAAKw/B,qBAAqBpG,EAAAA;AAC9C,UAAI10B,KAAW1E;AAEf,YAAM0iC,KAAah+B,GAASq6B,gBAAgBc,GAAc7tB,KAAAA;AAW1D,UAVA6tB,GAAc5wB,SAASyzB,GAAWlF,qCAAqC,YAAYqC,GAAc5wB,MAAAA,GACrE,QAAxB4wB,GAAc5wB,WAChB6nB,KAAWpyB,GAASi+B,qBAAqB9C,EAAAA,GACzCn7B,KAAWA,GAASk9B,wBAAwB,CAAE9K,IAAUA,KAAW,CAAA,CAAA,GACnE2L,GAAYzwB,SAAS,GACrBywB,GAAYxzB,UAAUvK,GAASq6B,gBAAgBc,GAAc7tB,KAAAA,EAAO2gB,UAAAA,GACpEkN,GAAc7tB,SAAS,IAEzB6tB,GAAc5wB,SAAS,GAEI,MAAvBwzB,GAAYxzB,UAAgBwzB,GAAYzwB,QAAQ6tB,GAAc7tB,MAChEywB,CAAAA,GAAYzwB,SAAS,GACrBywB,GAAYxzB,SAASvK,GAASq6B,gBAAgB0D,GAAYzwB,KAAAA,EAAO0e,sBAAAA;WAC5D;AACL,cAAMkS,KAAWl+B,GAASq6B,gBAAgB0D,GAAYzwB,KAAAA;AACiC,iBAAnF4wB,GAASpjC,KAAKo7B,iBAAiB,CAAE6H,GAAYxzB,SAAS,GAAGwzB,GAAYxzB,MAAAA,CAAAA,IACvEwzB,GAAYxzB,UAAU,IAEtBwzB,GAAYxzB,SAAS2zB,GAASpF,qCAAqC,WAAWiF,GAAYxzB,MAAAA,GAExFwzB,GAAYxzB,WAAW2zB,GAASlS,sBAAAA,MAClCoG,KAAWpyB,GAASi+B,qBAAqBF,EAAAA,GACzC/9B,KAAWA,GAASk9B,wBAAwB,CAAE9K,IAAUA,KAAW,CAAA,CAAA;MAEvE;AAMA,aAJA8I,KAAgBl7B,GAASi+B,qBAAqB9C,EAAAA,GAC9CzG,KAAc10B,GAASi+B,qBAAqBF,EAAAA,GAGrC,EAAE/9B,UAAAA,IAAU+Q,OAFnBA,KAAQD,GAAe,CAAEoqB,IAAexG,EAAAA,CAAAA,EAAAA;IAG1C;IAEAgJ,sCAAsC3sB,IAAAA;AACpCA,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,UAAA,CAAMqhB,EAAAA,IAAarhB;AACnB,YAAMnF,KAAStQ,KAAK46B,iBAAiBnlB,EAAAA,EAAOvG,MAAM,GAAA,EAAI;AACtD,UAAIxK,KAAW1E;AAOf,aALAsQ,GAAOpM,QAAQ,UAAU,SAASxD,IAAAA;AAChCo2B,QAAAA,MAAYp2B,GAAM4E,QAClBZ,KAAWA,GAASk9B,wBAAwB,CAAE9K,KAAW,GAAGA,EAAAA,CAAAA;MAC9D,CAAA,GAEO,EAAEpyB,UAAAA,IAAU+Q,OAAAA,GAAAA;IACrB;IAEA8sB,yBAAyB9sB,IAAAA;AACvBA,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAA,CAAQmqB,IAAexG,EAAAA,IAAgB3jB,IACjCkjB,KAAa34B,KAAKw/B,qBAAqBI,EAAAA,EAAe5tB,OACtD4mB,KAAW54B,KAAKw/B,qBAAqBpG,EAAAA,EAAapnB;AACxD,aAAO,IAAIhS,KAAK6O,YAAY7O,KAAK8+B,UAAUpG,4BAA4BC,IAAYC,EAAAA,CAAAA;IACrF;IAEAuI,mBAAmB1rB,IAAAA;AACjBA,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAMopB,KAAS7+B,KAAK8+B,UAAU1H,yBAAyB3hB,EAAAA,EAAOqE,QAAAA;AAC9D,aAAO,IAAI9Z,KAAK6O,YAAYgwB,EAAAA;IAC9B;IAEAjE,iBAAiBnlB,IAAAA;AACf,UAAImjB;AACJ,YAAM/nB,KAAQ4E,KAAQD,GAAeC,EAAAA;AAKrC,aAJgB5E,GAAMA,GAAMvL,SAAS,CAAA,MACjBtF,KAAK2yB,UAAAA,MACvBiG,KAAAA,KAEK54B,KAAKmhC,mBAAmB1rB,EAAAA,EAAOjH,SAAAA,EAAWU,MAAM,GAAG0pB,EAAAA;IAC5D;IAEAmG,gBAAgB/sB,IAAAA;AACd,aAAOhS,KAAK8+B,UAAU3H,iBAAiBnlB,EAAAA;IACzC;IAEAytB,mBAAmB3I,IAAAA;AACjB,YAAA,EAAM9kB,OAAEA,GAAAA,IAAUhS,KAAKw/B,qBAAqB1I,EAAAA;AAC5C,aAAO92B,KAAK++B,gBAAgB/sB,EAAAA;IAC9B;IAEAwvB,eAAexvB,IAAAA;AAAO,UAAA6wB;AACpB,aAAkCA,UAAlCA,KAAO7iC,KAAK++B,gBAAgB/sB,EAAAA,MAAAA,WAAM6wB,KAAAA,SAA3BA,GAA6BrjC;IACtC;IAEAsjC,kBAAkBhM,IAAAA;AAChB,YAAA,EAAM9kB,OAAEA,GAAAA,IAAUhS,KAAKw/B,qBAAqB1I,EAAAA;AAC5C,aAAO92B,KAAKwhC,eAAexvB,EAAAA;IAC7B;IAEA0pB,mBAAmB5E,IAAAA;AACjB,YAAA,EAAM9kB,OAAEA,IAAK/C,QAAEA,GAAAA,IAAWjP,KAAKw/B,qBAAqB1I,EAAAA;AACpD,aAAO92B,KAAKwhC,eAAexvB,EAAAA,EAAO0pB,mBAAmBzsB,EAAAA;IACvD;IAEA8zB,uBAAuBjM,IAAAA;AACrB,YAAA,EAAM9kB,OAAEA,IAAK/C,QAAEA,GAAAA,IAAWjP,KAAKw/B,qBAAqB1I,EAAAA;AACpD,aAAO92B,KAAKwhC,eAAexvB,EAAAA,EAAO4oB,iBAAiB,CAAE3rB,IAAQA,KAAS,CAAA,CAAA;IACxE;IAEA0jB,YAAAA;AACE,aAAO3yB,KAAK8+B,UAAU3F,eAAAA;IACxB;IAEAlI,YAAAA;AACE,aAAOjxB,KAAK8+B,UAAUhlB,QAAAA;IACxB;IAEAqmB,gBAAAA;AACE,aAAOngC,KAAK8+B,UAAUx5B;IACxB;IAEA09B,eAAAA;AACE,aAAOhjC,KAAKijC;IACd;IAEA1B,UAAUx2B,IAAAA;AACR,aAAO/K,KAAK8+B,UAAUrI,WAAW1rB,EAAAA;IACnC;IAEAs2B,iBAAiB5rB,IAAO1K,IAAAA;AACtB,UAAIolB,IAAOmR;AACX7rB,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAA,CAAQmqB,IAAexG,EAAAA,IAAgB3jB,IACjCoqB,KAAgB7/B,KAAKw/B,qBAAqBI,EAAAA,GAC1C6C,KAAcziC,KAAKw/B,qBAAqBpG,EAAAA;AAE9C,UAAIyG,GAAc7tB,UAAUywB,GAAYzwB,MAGtC,QAFAme,KAAQnwB,KAAK++B,gBAAgBc,GAAc7tB,KAAAA,GAC3CsvB,KAAY,CAAEzB,GAAc5wB,QAAQwzB,GAAYxzB,MAAAA,GACzClE,GAASolB,IAAOmR,IAAWzB,GAAc7tB,KAAAA;AAEhD,eAASA,KAAQ6tB,GAAc7tB,OAAOA,MAASywB,GAAYzwB,OAAOA,KAEhE,KADAme,KAAQnwB,KAAK++B,gBAAgB/sB,EAAAA,GACzBme,IAAO;AACT,gBAAQne,IAAAA;UACN,KAAK6tB,GAAc7tB;AACjBsvB,YAAAA,KAAY,CAAEzB,GAAc5wB,QAAQkhB,GAAM3wB,KAAKmzB,UAAAA,CAAAA;AAC/C;UACF,KAAK8P,GAAYzwB;AACfsvB,YAAAA,KAAY,CAAE,GAAGmB,GAAYxzB,MAAAA;AAC7B;UACF;AACEqyB,YAAAA,KAAY,CAAE,GAAGnR,GAAM3wB,KAAKmzB,UAAAA,CAAAA;QAAAA;AAEhC5nB,QAAAA,GAASolB,IAAOmR,IAAWtvB,EAAAA;MAC7B;IAGN;IAEA0oB,2BAA2BjlB,IAAAA;AACzBA,MAAAA,KAAQD,GAAeC,EAAAA;AACvB,YAAA,CAAQmqB,EAAAA,IAAkBnqB;AAC1B,UAAIG,GAAiBH,EAAAA,EACnB,QAAOzV,KAAKkjC,8BAA8BtD,EAAAA;AACrC;AACL,cAAMhB,KAAiB,CAAA,GACjBl1B,KAAkB,CAAA;AASxB,eAPA1J,KAAKqhC,iBAAiB5rB,IAAO,SAAS0a,IAAOmR,IAAAA;AAC3C,cAAIA,GAAU,CAAA,MAAOA,GAAU,CAAA,EAE7B,QADA1C,GAAej1B,KAAKwmB,GAAM3wB,KAAKk7B,2BAA2B4G,EAAAA,CAAAA,GACnD53B,GAAgBC,KAAKw5B,GAAmBhT,EAAAA,CAAAA;QAEnD,CAAA,GAEO/W,GAAKC,8BAA8BulB,EAAAA,EACvChlB,MAAMR,GAAKC,8BAA8B3P,EAAAA,CAAAA,EACzCsQ,SAAAA;MACL;IACF;IAEAkpB,8BAA8BpM,IAAAA;AAC5B,UAAIvyB,IAAKC;AACT,YAAA,EAAMwN,OAAEA,IAAK/C,QAAEA,GAAAA,IAAWjP,KAAKw/B,qBAAqB1I,EAAAA,GAC9C3G,KAAQnwB,KAAK++B,gBAAgB/sB,EAAAA;AACnC,UAAA,CAAKme,GACH,QAAO,CAAA;AAGT,YAAMiT,KAAmBD,GAAmBhT,EAAAA,GACtCvxB,KAAauxB,GAAM3wB,KAAK+6B,wBAAwBtrB,EAAAA,GAChDo0B,KAAiBlT,GAAM3wB,KAAK+6B,wBAAwBtrB,KAAS,CAAA,GAC7Dq0B,KAAwB1vB,OAAOC,KAAKF,CAAAA,EAAuBuD,OAAQ3S,CAAAA,OAChEoP,EAAsBpP,EAAAA,EAAKuH,WAAAA;AAGpC,WAAKvH,MAAO8+B,GACV7+B,CAAAA,KAAQ6+B,GAAe9+B,EAAAA,IACnBC,OAAU5F,GAAW2F,EAAAA,KAAQ++B,GAAsBr5B,SAAS1F,EAAAA,OAC9D6+B,GAAiB7+B,EAAAA,IAAOC;AAI5B,aAAO4+B;IACT;IAEAG,oCAAoC7vB,IAAeojB,IAAAA;AACjD,YAAA,EAAM9kB,OAAEA,IAAK/C,QAAEA,GAAAA,IAAWjP,KAAKw/B,qBAAqB1I,EAAAA,GAC9Ct3B,KAAOQ,KAAKwhC,eAAexvB,EAAAA,GAAAA,CACzBwxB,IAAaC,EAAAA,IAAc5zB,MAAMC,KAAKtQ,GAAKm7B,qCAAqCjnB,IAAezE,EAAAA,CAAAA,GAEjG4G,KAAQ7V,KAAK2iC,qBAAqB,EAAE3wB,OAAAA,IAAO/C,QAAQu0B,GAAAA,CAAAA,GACnD1tB,KAAM9V,KAAK2iC,qBAAqB,EAAE3wB,OAAAA,IAAO/C,QAAQw0B,GAAAA,CAAAA;AACvD,aAAOjuB,GAAe,CAAEK,IAAOC,EAAAA,CAAAA;IACjC;IAEAiqB,yBAAAA;AACE,UAAID,KAAsB9/B,KAAK++B,gBAAgB,CAAA,EAAGpQ,cAAAA;AAElD,eAAS+U,KAAa,GAAGA,KAAa1jC,KAAKmgC,cAAAA,GAAiBuD,MAAc;AACxE,cAAMh6B,KAAkB1J,KAAK++B,gBAAgB2E,EAAAA,EAAY/U,cAAAA,GACnDgV,KAAqB//B,KAAKggC,IAAI9D,GAAoBx6B,QAAQoE,GAAgBpE,MAAAA;AAEhFw6B,QAAAA,MAAsB,MAAA;AACpB,gBAAMhvB,KAAS,CAAA;AACf,mBAASkB,KAAQ,GAAGA,KAAQ2xB,MACtBj6B,GAAgBsI,EAAAA,MAAW8tB,GAAoB9tB,EAAAA,GADLA,KAI9ClB,CAAAA,GAAOnH,KAAKD,GAAgBsI,EAAAA,CAAAA;AAE9B,iBAAOlB;QACR,GATqB;MAUxB;AAEA,aAAOgvB;IACT;IAEA1E,kBAAkBD,IAAAA;AAChB,iBAAWxuB,MAAc3M,KAAKi7B,eAAAA,EAC5B,KAAItuB,GAAWxB,OAAOgwB,GACpB,QAAOxuB;IAGb;IAEAquB,sBAAAA;AACE,UAAI6I,KAAmB,CAAA;AAEvB,aADA7jC,KAAK8+B,UAAUrI,WAAWvM,CAAAA,OAAAA;AAAA,YAAA,EAAC1qB,MAAEA,GAAAA,IAAM0qB;AAAA,eAAK2Z,KAAmBA,GAAiBpgC,OAAOjE,GAAKw7B,oBAAAA,CAAAA;MAAsB,CAAA,GACvG6I;IACT;IAEA5I,iBAAAA;AACE,aAAOj7B,KAAKg7B,oBAAAA,EAAsBzqB,IAAKya,CAAAA,OAAUA,GAAMre,UAAAA;IACzD;IAEA0uB,qBAAqB1uB,IAAAA;AACnB,UAAImqB,KAAW;AACf,YAAM1H,KAAWpvB,KAAK8+B,UAAUhlB,QAAAA;AAChC,eAAS9H,KAAQ,GAAGA,KAAQod,GAAS9pB,QAAQ0M,MAAS;AACpD,cAAA,EAAMxS,MAAEA,GAAAA,IAAS4vB,GAASpd,EAAAA,GACpBsvB,KAAY9hC,GAAK67B,qBAAqB1uB,EAAAA;AAC5C,YAAI20B,GACF,QAAO9rB,GAAe,CAAEshB,KAAWwK,GAAU,CAAA,GAAIxK,KAAWwK,GAAU,CAAA,CAAA,CAAA;AAExExK,QAAAA,MAAYt3B,GAAKmzB,UAAAA;MACnB;IACF;IAEAmR,6BAA6Bn3B,IAAAA;AAC3B,YAAM8I,KAAQzV,KAAKq7B,qBAAqB1uB,EAAAA;AACxC,aAAO3M,KAAK2gC,uBAAuBlrB,EAAAA;IACrC;IAEAsuB,gCAAgCp3B,IAAAA;AAC9B,iBAAWqe,MAAShrB,KAAKg7B,oBAAAA,EACvB,KAAIhQ,GAAMre,eAAeA,GACvB,QAAOqe;IAGb;IAEAgZ,4BAA4BtwB,IAAAA;AAC1B,UAAIojB,KAAW;AACf,YAAMmN,KAAS,CAAA;AAUf,aARAjkC,KAAKixB,UAAAA,EAAYhoB,QAASknB,CAAAA,OAAAA;AACxB,cAAM7qB,KAAS6qB,GAAMwC,UAAAA;AACjBxC,QAAAA,GAAMpG,aAAarW,EAAAA,KACrBuwB,GAAOt6B,KAAK,CAAEmtB,IAAUA,KAAWxxB,EAAAA,CAAAA,GAErCwxB,MAAYxxB;MAAM,CAAA,GAGb2+B;IACT;IAEAC,2BAA2BxwB,IAAAA;AAAmC,UAAA,EAApBywB,WAAEA,GAAAA,IAAW9+B,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA,GACpDyxB,KAAW,GACXrhB,KAAQ,CAAA;AACZ,YAAMwuB,KAAS,CAAA;AAsBf,aAZAjkC,KAAK+vB,UAAAA,EAAY9mB,QAAS+hB,CAAAA,OAAAA;AACxB,cAAM1lB,KAAS0lB,GAAM2H,UAAAA;AAAAA,SATT,SAAS3H,IAAAA;AACrB,iBAAImZ,KACKnZ,GAAM3e,aAAaqH,EAAAA,MAAmBywB,KAEtCnZ,GAAMjB,aAAarW,EAAAA;QAAAA,GAMlBsX,EAAAA,MACJvV,GAAM,CAAA,MAAOqhB,KACfrhB,GAAM,CAAA,IAAKqhB,KAAWxxB,KAEtB2+B,GAAOt6B,KAAK8L,KAAQ,CAAEqhB,IAAUA,KAAWxxB,EAAAA,CAAAA,IAG/CwxB,MAAYxxB;MAAM,CAAA,GAGb2+B;IACT;IAEAzE,qBAAqB1I,IAAAA;AACnB,YAAMsN,KAAWpkC,KAAK8+B,UAAU7G,6BAA6Br0B,KAAKuL,IAAI,GAAG2nB,EAAAA,CAAAA;AACzE,UAAsB,QAAlBsN,GAASpyB,MACX,QAAOoyB;AACF;AACL,cAAMvF,KAAS7+B,KAAKixB,UAAAA;AACpB,eAAO,EAAEjf,OAAO6sB,GAAOv5B,SAAS,GAAG2J,QAAQ4vB,GAAOA,GAAOv5B,SAAS,CAAA,EAAGqtB,UAAAA,EAAAA;MACvE;IACF;IAEAgQ,qBAAqByB,IAAAA;AACnB,aAAOpkC,KAAK8+B,UAAU7F,6BAA6BmL,GAASpyB,OAAOoyB,GAASn1B,MAAAA;IAC9E;IAEAo1B,0BAA0BvN,IAAAA;AACxB,aAAOthB,GAAexV,KAAKw/B,qBAAqB1I,EAAAA,CAAAA;IAClD;IAEA6J,uBAAuBlrB,IAAAA;AAErB,UAAA,EADAA,KAAQD,GAAeC,EAAAA,GACX;AAEZ,YAAA,CAAQmqB,IAAexG,EAAAA,IAAgBvpB,MAAMC,KAAK2F,EAAAA,GAC5CoqB,KAAgB7/B,KAAKw/B,qBAAqBI,EAAAA,GAC1C6C,KAAcziC,KAAKw/B,qBAAqBpG,EAAAA;AAC9C,aAAO5jB,GAAe,CAAEqqB,IAAe4C,EAAAA,CAAAA;IACzC;IAEA6B,uBAAuBC,IAAAA;AACrB,UAAI/D;AACJ+D,MAAAA,KAAgB/uB,GAAe+uB,EAAAA;AAC/B,YAAMhE,KAAevgC,KAAK2iC,qBAAqB4B,GAAc,CAAA,CAAA;AAI7D,aAHK3uB,GAAiB2uB,EAAAA,MACpB/D,KAAgBxgC,KAAK2iC,qBAAqB4B,GAAc,CAAA,CAAA,IAEnD/uB,GAAe,CAAE+qB,IAAcC,EAAAA,CAAAA;IACxC;IAEAhxB,UAAU9K,IAAAA;AACR,aAAO1E,KAAK8+B,UAAUtvB,UAAU9K,QAAAA,KAAAA,SAAAA,GAAUo6B,SAAAA;IAC5C;IAEA0F,WAAAA;AACE,aAAOxkC,KAAKixB,UAAAA,EAAY1gB,IAAK4f,CAAAA,OAAUA,GAAM3wB,IAAAA;IAC/C;IAEAuwB,YAAAA;AACE,YAAMD,KAAS,CAAA;AAMf,aAJAjgB,MAAMC,KAAK9P,KAAKwkC,SAAAA,CAAAA,EAAYv7B,QAASzJ,CAAAA,OAAAA;AACnCswB,QAAAA,GAAOnmB,KAAAA,GAAQkG,MAAMC,KAAKtQ,GAAKuwB,UAAAA,KAAe,CAAA,CAAA,CAAA;MAAI,CAAA,GAG7CD;IACT;IAEAhV,aAAAA;AACE,aAAO9a,KAAKixB,UAAAA,EAAYxtB,OAAOzD,KAAKwkC,SAAAA,CAAAA,EAAY/gC,OAAOzD,KAAK+vB,UAAAA,CAAAA;IAC9D;IAEA0U,yBAAAA;AACE,YAAM5F,KAAS,CAAA;AAEf,aADA7+B,KAAK8+B,UAAUrI,WAAYtG,CAAAA,OAAU0O,GAAOl1B,KAAKwmB,GAAM4L,aAAa5L,GAAM3wB,KAAKm8B,mBAAAA,CAAAA,CAAAA,CAAAA,GACxE,IAAI37B,KAAK6O,YAAYgwB,EAAAA;IAC9B;IAEArwB,WAAAA;AACE,aAAOxO,KAAK8+B,UAAUtwB,SAAAA;IACxB;IAEAiB,SAAAA;AACE,aAAOzP,KAAK8+B,UAAUrvB,OAAAA;IACxB;IAEA0mB,YAAAA;AACE,aAAO/kB,KAAKO,UAAU3R,KAAK8+B,UAAUhlB,QAAAA,EAAUvJ,IAAK4f,CAAAA,OAAU/e,KAAKrS,MAAMoxB,GAAM3wB,KAAK22B,UAAAA,CAAAA,CAAAA,CAAAA;IACtF;EAAA;AAGF,MAAMgN,KAAqB,SAAShT,IAAAA;AAClC,UAAMvxB,KAAa,CAAA,GACb8U,KAAgByc,GAAMG,iBAAAA;AAI5B,WAHI5c,OACF9U,GAAW8U,EAAAA,IAAAA,OAEN9U;EACT;AAPA,MC9uBM8lC,KAAiB,SAACp0B,IAAAA;AAA4B,QAApB1R,KAAUyG,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAG3C,WAAO,EAAEiL,QADTA,KAASkI,GAAgBlI,EAAAA,GACR1R,YAAAA,IAAYoM,MAFhB,SAAA;EAGf;AD0uBA,MC9tBM25B,KAAyBA,CAAC7kC,IAASrB,OAAAA;AACvC,QAAA;AACE,aAAO2S,KAAKrS,MAAMe,GAAQuM,aAAY,aAAA5I,OAAchF,EAAAA,CAAAA,CAAAA;IACrD,SAAQqU,IAAAA;AACP,aAAO,CAAA;IACT;EAAA;AAgBa,MAAM8xB,KAAN,cAAyBv3B,EAAAA;IACtC,OAAA,MAAa5I,IAAM8D,IAAAA;AACjB,YAAMkD,KAAS,IAAIzL,KAAKyE,IAAM8D,EAAAA;AAE9B,aADAkD,GAAO1M,MAAAA,GACA0M;IACT;IAEAoD,YAAYpK,IAAAA;AAAgD,UAAA,EAA1CogC,kBAAEA,IAAgB5b,eAAEA,GAAAA,IAAe5jB,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AACtDyJ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKyE,OAAOA,IACZzE,KAAK6kC,mBAAmBA,IACxB7kC,KAAKipB,gBAAgBA,IACrBjpB,KAAK6+B,SAAS,CAAA,GACd7+B,KAAK8kC,gBAAgB,CAAA,GACrB9kC,KAAK+kC,oBAAoB,CAAA;IAC3B;IAEAC,cAAAA;AACE,aAAOtG,GAASvtB,SAASnR,KAAK6+B,MAAAA;IAChC;IAIA9/B,QAAAA;AACE,UAAA;AACEiB,aAAKilC,sBAAAA,GACL3c,GAAckD,QAAQxrB,KAAKklC,kBAAkBllC,KAAKyE,MAAM,EAAEwkB,eAAejpB,KAAKipB,cAAAA,CAAAA;AAC9E,cAAMQ,KAAShiB,EAASzH,KAAKklC,kBAAkB,EAAEt9B,aAAau9B,GAAAA,CAAAA;AAC9D,eAAO1b,GAAOE,SAAAA,IACZ3pB,MAAKolC,YAAY3b,GAAOG,WAAAA;AAE1B,eAAO5pB,KAAKqlC,uCAAAA;MACd,UAAU;AACRrlC,aAAKslC,sBAAAA;MACP;IACF;IAEAL,wBAAAA;AACE,aAAIjlC,KAAK6kC,oBACP7kC,KAAKklC,mBAAmBllC,KAAK6kC,iBAAiB9nB,UAAAA,KAAU,GACxD/c,KAAKklC,iBAAiBjb,gBAAgB,IAAA,GACtCjqB,KAAKklC,iBAAiBv8B,aAAa,sBAAsB,EAAA,GACzD3I,KAAKklC,iBAAiBt8B,MAAM28B,UAAU,QAC/BvlC,KAAK6kC,iBAAiB9kC,WAAWsU,aAAarU,KAAKklC,kBAAkBllC,KAAK6kC,iBAAiBW,WAAAA,MAElGxlC,KAAKklC,mBAAmB78B,EAAY,EAAEvJ,SAAS,OAAO8J,OAAO,EAAE28B,SAAS,OAAA,EAAA,CAAA,GACjE7gC,SAAS6G,KAAKhC,YAAYvJ,KAAKklC,gBAAAA;IAE1C;IAEAI,wBAAAA;AACE,aAAOh+B,EAAWtH,KAAKklC,gBAAAA;IACzB;IAEAE,YAAY1+B,IAAAA;AACV,cAAQA,GAAKD,UAAAA;QACX,KAAKG,KAAK6D;AACR,cAAA,CAAKzK,KAAKylC,wBAAwB/+B,EAAAA,EAEhC,QADA1G,KAAK0lC,uBAAuBh/B,EAAAA,GACrB1G,KAAK2lC,gBAAgBj/B,EAAAA;AAE9B;QACF,KAAKE,KAAKC;AAER,iBADA7G,KAAK4lC,sBAAsBl/B,EAAAA,GACpB1G,KAAK6lC,eAAen/B,EAAAA;MAAAA;IAEjC;IAEAg/B,uBAAuBh/B,IAAAA;AACrB,YAAM5G,KAAU4G,GAAK3G;AACrB,UAAID,OAAYE,KAAK8lC,uBAAuB9lC,KAAK+lC,eAAer/B,GAAKW,eAAAA,EACnE,QAAOrH,KAAKgmC,2BAA2B,IAAA;AAClC,UAAIlmC,OAAYE,KAAKklC,oBAAoBllC,KAAK+lC,eAAejmC,EAAAA,GAAU;AAAA,YAAAmmC;AAC5E,cAAMrnC,KAAaoB,KAAKkmC,mBAAmBpmC,EAAAA,GACrCP,KAAiBS,KAAKmmC,uBAAuBrmC,EAAAA;AAC9C+R,WAAejT,IAAAA,UAAUqnC,KAAEjmC,KAAKomC,iBAAAA,WAAYH,KAAAA,SAAjBA,GAAmBrnC,UAAAA,MACjDoB,KAAKomC,eAAepmC,KAAKqmC,oCAAoCznC,IAAYkB,IAASP,EAAAA,GAClFS,KAAK8lC,sBAAsBhmC;MAE/B;IACF;IAEA8lC,sBAAsB9lC,IAAAA;AACpB,YAAMwmC,KAAwBtmC,KAAK+lC,eAAejmC,EAAAA,GAC5CymC,KAA8Bt/B,EAAoBjH,KAAK8lC,qBAAqBhmC,EAAAA;AAElF,UAAIwmC,MAAAA,CAA0BtmC,KAAK+lC,eAAejmC,GAAQgK,UAAAA,GAAAA;AACxD,YAAA,CAAK9J,KAAKylC,wBAAwB3lC,GAAQgK,UAAAA,KAAAA,CAAgB9J,KAAK+lC,eAAejmC,GAAQmvB,iBAAAA,GAAoB;AACxG,gBAAMrwB,KAAaoB,KAAKkmC,mBAAmBpmC,EAAAA,GACrCP,KAAiBS,KAAKmmC,uBAAuBrmC,EAAAA;AACnD,cAAIA,GAAQgK,YAAY;AACtB,gBAAMy8B,MAA+B10B,GAAejT,IAAYoB,KAAKomC,aAAaxnC,UAAAA,EAIhF,QAAOoB,KAAKgmC,2BAA2B,IAAA;AAHvChmC,iBAAKomC,eAAepmC,KAAKqmC,oCAAoCznC,IAAYkB,IAASP,EAAAA,GAClFS,KAAK8lC,sBAAsBhmC;UAI/B;QACF;MAAA,WACSE,KAAK8lC,uBAAAA,CAAwBS,MAAAA,CAAgCD,IAAuB;AAC7F,cAAME,KAAqBxmC,KAAKymC,uBAAuB3mC,EAAAA;AACvD,YAAI0mC,GACF,QAAOxmC,KAAK4lC,sBAAsBY,EAAAA;AAElCxmC,aAAKomC,eAAepmC,KAAK0mC,iBAAAA,GACzB1mC,KAAK8lC,sBAAsB;MAE/B;IACF;IAEAW,uBAAuB3mC,IAAAA;AACrB,UAAA,EAAI6mC,eAAEA,GAAAA,IAAkB7mC;AACxB,aAAO6mC,MAAiBA,OAAkB3mC,KAAKklC,oBAAkB;AAC/D,YAAIllC,KAAK+lC,eAAeY,EAAAA,KAAkB3mC,KAAK8kC,cAAc76B,SAAS08B,EAAAA,EACpE,QAAOA;AAEPA,QAAAA,KAAgBA,GAAcA;MAElC;AACA,aAAO;IACT;IAEAhB,gBAAgBj/B,IAAAA;AACd,UAAI4J,KAAS5J,GAAKmC;AACuC,UAAA+9B;AAApDC,SAAkCngC,GAAK3G,UAAAA,MAC1CuQ,KAASoI,GAA0BpI,EAAAA,GAC/Bw2B,GAA6CF,UAArBA,KAAClgC,GAAKW,oBAAAA,WAAeu/B,KAAAA,SAApBA,GAAsBx9B,WAAAA,MACjDkH,KAASy2B,GAA4Bz2B,EAAAA;AAGzC,aAAOtQ,KAAKgmC,2BAA2B11B,IAAQtQ,KAAKgnC,kBAAkBtgC,GAAK3G,UAAAA,CAAAA;IAC7E;IAEA8lC,eAAe/lC,IAAAA;AACb,UAAIlB;AACJ,UAAI2L,EAAwBzK,EAAAA,GAAU;AAEpC,YADAlB,KAAa+lC,GAAuB7kC,IAAS,YAAA,GACzC8T,OAAOC,KAAKjV,EAAAA,EAAY0G,QAAQ;AAClC,gBAAMs5B,KAAiB5+B,KAAKgnC,kBAAkBlnC,EAAAA;AAC9CE,eAAKinC,+BAA+BroC,IAAYggC,EAAAA,GAEhD9+B,GAAQ8oB,YAAY;QACtB;AACA,eAAO5oB,KAAK+kC,kBAAkBp7B,KAAK7J,EAAAA;MACrC;AACE,cAAQhB,EAAQgB,EAAAA,GAAAA;QACd,KAAK;AAIH,iBAHKE,KAAKknC,UAAUpnC,EAAAA,KAAaE,KAAK+lC,eAAejmC,GAAQ0lC,WAAAA,KAC3DxlC,KAAKgmC,2BAA2B,MAAMhmC,KAAKgnC,kBAAkBlnC,EAAAA,CAAAA,GAExDE,KAAK+kC,kBAAkBp7B,KAAK7J,EAAAA;QACrC,KAAK;AACHlB,UAAAA,KAAa,EAAEgE,KAAK9C,GAAQuM,aAAa,KAAA,GAAQonB,aAAa,QAAA;AAC9D,gBAAM7lB,MAtKY9N,CAAAA,OAAAA;AAC1B,kBAAMsuB,KAAQtuB,GAAQuM,aAAa,OAAA,GAC7BiiB,KAASxuB,GAAQuM,aAAa,QAAA,GAC9B86B,KAAa,CAAA;AAOnB,mBANI/Y,OACF+Y,GAAW/Y,QAAQxtB,SAASwtB,IAAO,EAAA,IAEjCE,OACF6Y,GAAW7Y,SAAS1tB,SAAS0tB,IAAQ,EAAA,IAEhC6Y;UAAU,GA4JyBrnC,EAAAA;AAClC,qBAAWyE,MAAOqJ,IAAQ;AACxB,kBAAMpJ,KAAQoJ,GAAOrJ,EAAAA;AACrB3F,YAAAA,GAAW2F,EAAAA,IAAOC;UACpB;AAEA,iBADAxE,KAAKinC,+BAA+BroC,IAAYoB,KAAKgnC,kBAAkBlnC,EAAAA,CAAAA,GAChEE,KAAK+kC,kBAAkBp7B,KAAK7J,EAAAA;QACrC,KAAK;AACH,cAAIE,KAAKonC,oBAAoBtnC,EAAAA,EAC3B,QAAOE,KAAKgmC,2BAA2BryB,GAAc/H,iBAAAA;AAEvD;QACF,KAAK;AACH,cAAI5L,KAAKonC,oBAAoBtnC,EAAAA,EAC3B,QAAOE,KAAKgmC,2BAA2BryB,GAAchI,kBAAAA;MAAAA;IAK/D;IAIA06B,oCAAoCznC,IAAYkB,IAAAA;AAA8B,UAArBP,KAAc8F,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACxErF,WAAK8kC,cAAcn7B,KAAK7J,EAAAA;AACxB,YAAMqwB,KA5MiB,WAAA;AAEzB,eAAO,EAAE3wB,MADI,CAAA,GACEZ,YAFqByG,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAEZ9F,gBAF8B8F,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,EAAA;MAG9D,EAyMqCzG,IAAYW,EAAAA;AAE7C,aADAS,KAAK6+B,OAAOl1B,KAAKwmB,EAAAA,GACVA;IACT;IAEAuW,mBAAAA;AACE,aAAO1mC,KAAKqmC,oCAAoC,CAAA,GAAI,IAAA;IACtD;IAEAL,2BAA2B11B,IAAQ1R,IAAAA;AACjC,aAAOoB,KAAKqnC,YAAY3C,GAAep0B,IAAQ1R,EAAAA,CAAAA;IACjD;IAEAqoC,+BAA+Bt6B,IAAY/N,IAAAA;AACzC,aAAOoB,KAAKqnC,YA/NW,SAAC16B,IAAAA;AAE1B,eAAO,EAAEA,YAAAA,IAAY/N,YAF2ByG,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAElB2F,MADpB,aAAA;MAEf,EA4N+C2B,IAAY/N,EAAAA,CAAAA;IACzD;IAEAyoC,YAAYrc,IAAAA;AAIV,aAH2B,MAAvBhrB,KAAK6+B,OAAOv5B,UACdtF,KAAK0mC,iBAAAA,GAEA1mC,KAAK6+B,OAAO7+B,KAAK6+B,OAAOv5B,SAAS,CAAA,EAAG9F,KAAKmK,KAAKqhB,EAAAA;IACvD;IAEAsc,0BAA0Bh3B,IAAQ0B,IAAAA;AAChC,YAAA,EAAMxS,MAAEA,GAAAA,IAASQ,KAAK6+B,OAAO7sB,EAAAA,GACvBgZ,KAAQxrB,GAAKA,GAAK8F,SAAS,CAAA;AAEjC,UAAoB,cAAhB0lB,QAAAA,KAAAA,SAAAA,GAAOhgB,MAGT,QAAOxL,GAAKmK,KAAK+6B,GAAep0B,EAAAA,CAAAA;AAFhC0a,MAAAA,GAAM1a,UAAUA;IAIpB;IAEAi3B,2BAA2Bj3B,IAAQ0B,IAAAA;AACjC,YAAA,EAAMxS,MAAEA,GAAAA,IAASQ,KAAK6+B,OAAO7sB,EAAAA,GACvBgZ,KAAQxrB,GAAK,CAAA;AAEnB,UAAoB,cAAhBwrB,QAAAA,KAAAA,SAAAA,GAAOhgB,MAGT,QAAOxL,GAAKgoC,QAAQ9C,GAAep0B,EAAAA,CAAAA;AAFnC0a,MAAAA,GAAM1a,SAASA,KAAS0a,GAAM1a;IAIlC;IAIA02B,kBAAkBlnC,IAAAA;AAChB,UAAI0E;AACJ,YAAM5F,KAAa,CAAA;AACnB,iBAAWyzB,MAAa1e,GAAuB;AAC7C,cAAM8zB,KAAa9zB,EAAsB0e,EAAAA;AACzC,YACEoV,GAAW3oC,WACXgH,EAA2BhG,IAAS,EAClCkF,kBAAkByiC,GAAW3oC,SAC7B6H,WAAW3G,KAAKklC,iBAAAA,CAAAA,EAGlBtmC,CAAAA,GAAWyzB,EAAAA,IAAAA;iBACFoV,GAAWh8B,QAAAA;AAEpB,cADAjH,KAAQijC,GAAWh8B,OAAO3L,EAAAA,GACtB0E,IAAO;AACT,gBAAIkjC,KAAAA;AACJ,uBAAWC,MAAgB3nC,KAAK4nC,0BAA0B9nC,EAAAA,EACxD,KAAI2nC,GAAWh8B,OAAOk8B,EAAAA,MAAkBnjC,IAAO;AAC7CkjC,cAAAA,KAAAA;AACA;YACF;AAEGA,YAAAA,OACH9oC,GAAWyzB,EAAAA,IAAa7tB;UAE5B;QAAA,MACSijC,CAAAA,GAAWhY,kBACpBjrB,KAAQ1E,GAAQ8I,MAAM6+B,GAAWhY,aAAAA,GAC7BjrB,OACF5F,GAAWyzB,EAAAA,IAAa7tB;MAG9B;AAEA,UAAI+F,EAAwBzK,EAAAA,GAAU;AACpC,cAAM8N,KAAS+2B,GAAuB7kC,IAAS,YAAA;AAC/C,mBAAWyE,MAAOqJ,GAChBpJ,CAAAA,KAAQoJ,GAAOrJ,EAAAA,GACf3F,GAAW2F,EAAAA,IAAOC;MAEtB;AAEA,aAAO5F;IACT;IAEAsnC,mBAAmBpmC,IAAAA;AACjB,YAAMlB,KAAa,CAAA;AACnB,aAAOkB,MAAWA,OAAYE,KAAKklC,oBAAkB;AACnD,mBAAW7S,MAAa1e,GAAwB;AAC9C,gBAAMk0B,KAAal0B,EAAuB0e,EAAAA;AAEK,cAAAyV;AAD/C,cAAA,UAAID,GAAW9oC;AACb,gBAAID,EAAQgB,EAAAA,MAAa+nC,GAAW/oC,QAAAA,EACf,UAAfgpC,KAAAD,GAAWhoC,SAAAA,WAAIioC,MAAfA,GAAA/hC,KAAA8hC,IAAkB/nC,EAAAA,KAAAA,CAAa+nC,GAAWhoC,UAC5CjB,GAAW+K,KAAK0oB,EAAAA,GACZwV,GAAWjoC,iBACbhB,GAAW+K,KAAKk+B,GAAWjoC,aAAAA;;QAKrC;AACAE,QAAAA,KAAUA,GAAQC;MACpB;AACA,aAAOnB,GAAWmpC,QAAAA;IACpB;IAEA5B,uBAAuBrmC,IAAAA;AACrB,YAAMlB,KAAa,CAAA,GACbojC,KAAcpuB,OAAO8F,OAAO/F,CAAAA,EAAwBsH,KAAK+sB,CAAAA,OAAYA,GAASlpC,YAAYA,EAAQgB,EAAAA,CAAAA;AASxG,eAR0BkiC,QAAAA,KAAAA,SAAAA,GAAaziC,mBAAkB,CAAA,GAEvC0J,QAASopB,CAAAA,OAAAA;AACrBvyB,QAAAA,GAAQiqB,aAAasI,EAAAA,MACvBzzB,GAAWyzB,EAAAA,IAAavyB,GAAQuM,aAAagmB,EAAAA;MAC/C,CAAA,GAGKzzB;IACT;IAEAgpC,0BAA0B9nC,IAAAA;AACxB,YAAMmoC,KAAY,CAAA;AAClB,aAAOnoC,MAAWA,OAAYE,KAAKklC,oBAAkB;AACnD,cAAM58B,KAAMxJ,EAAQgB,EAAAA;AAChB2J,UAAAA,EAAmBQ,SAAS3B,EAAAA,KAC9B2/B,GAAUt+B,KAAK7J,EAAAA,GAEjBA,KAAUA,GAAQC;MACpB;AACA,aAAOkoC;IACT;IAIAlC,eAAejmC,IAAAA;AACb,WAAIA,QAAAA,KAAAA,SAAAA,GAAS2G,cAAaG,KAAKC,gBAAAA,CAC3B0D,EAAwBzK,EAAAA,KAAAA,CACxBgG,EAA2BhG,IAAS,EAAEkF,kBAAkB,MAAM2B,WAAW3G,KAAKklC,iBAAAA,CAAAA,EAElF,QAAOz7B,EAAAA,EAAmBQ,SAASnL,EAAQgB,EAAAA,CAAAA,KACI,YAA7CiM,OAAOC,iBAAiBlM,EAAAA,EAASylC;IACrC;IAEAE,wBAAwB/+B,IAAAA;AACtB,WAAIA,QAAAA,KAAAA,SAAAA,GAAMD,cAAaG,KAAK6D,UAAW;AACvC,UAAA,CAAKy9B,GAA+BxhC,GAAKmC,IAAAA,EAAO;AAChD,YAAA,EAAM9I,YAAEA,IAAUsH,iBAAEA,IAAem+B,aAAEA,GAAAA,IAAgB9+B;AACrD,aAAIyhC,GAA0BpoC,GAAWsH,eAAAA,KAAAA,CAAqBrH,KAAK+lC,eAAehmC,GAAWsH,eAAAA,KACzFw/B,GAAkC9mC,EAAAA,IAAAA,SADtC,CAEQsH,MAAmBrH,KAAK+lC,eAAe1+B,EAAAA,KAAAA,CAAqBm+B,MAAexlC,KAAK+lC,eAAeP,EAAAA;IACzG;IAEA0B,UAAUpnC,IAAAA;AACR,aAA4B,SAArBhB,EAAQgB,EAAAA,KAAqBE,KAAK+lC,eAAejmC,GAAQC,UAAAA,KAAeD,GAAQC,WAAWuxB,cAAcxxB;IAClH;IAEAsnC,oBAAoBtnC,IAAAA;AAClB,UAAI6T,GAAcjI,uBAAuB;AAAA,YAAA08B;AACvC,cAAM7zB,KAAiC,UAA1B6zB,KAAGtoC,GAAQuH,oBAAAA,WAAe+gC,KAAAA,SAAvBA,GAAyBh/B;AACzC,eAAOmL,MAAW,KAAK1U,KAAK0U,EAAAA;MAC9B;AACE,aAAOzU,GAAQuH;IAEnB;IAIAg+B,yCAAAA;AACE,YAAMgD,KAAgBroC,KAAKsoC,+BAAAA;AAE3B,eAASt2B,KAAQ,GAAGA,KAAQhS,KAAK6+B,OAAOv5B,QAAQ0M,MAAS;AACvD,cAAMu2B,KAASvoC,KAAKwoC,+BAA+Bx2B,EAAAA;AAC/Cu2B,QAAAA,OACEA,GAAOE,MAA0B,IAApBJ,GAAcI,OAC7BzoC,KAAKunC,2BAA2B,MAAMv1B,EAAAA,GAGpCu2B,GAAOG,SAAgC,IAAvBL,GAAcK,UAChC1oC,KAAKsnC,0BAA0B,MAAMt1B,EAAAA;MAG3C;IACF;IAEAw2B,+BAA+Bx2B,IAAAA;AAC7B,YAAMlS,KAAUE,KAAK8kC,cAAc9yB,EAAAA;AACnC,UAAIlS,MACEA,GAAQsJ,eAAAA,CACLK,EAAAA,EAAmBQ,SAASnL,EAAQgB,EAAAA,CAAAA,KAAAA,CAAcE,KAAK+kC,kBAAkB96B,SAASnK,EAAAA,EACrF,QAAO6oC,GAAsB7oC,EAAAA;IAIrC;IAEAwoC,iCAAAA;AACE,YAAMxoC,KAAUuI,EAAYsL,EAAuB9U,QAAQC,OAAAA;AAE3D,aADAkB,KAAKklC,iBAAiB37B,YAAYzJ,EAAAA,GAC3B6oC,GAAsB7oC,EAAAA;IAC/B;EAAA;AAKF,MAAM+mC,KAAoC,SAAS/mC,IAAAA;AACjD,UAAA,EAAM8oC,YAAEA,GAAAA,IAAe78B,OAAOC,iBAAiBlM,EAAAA;AAC/C,WAAO,CAAE,OAAO,YAAY,UAAA,EAAamK,SAAS2+B,EAAAA;EACpD;AAHA,MAKMT,KAA6BzhC,CAAAA,OAASA,MAAAA,CAASogC,GAAyBpgC,GAAK0C,WAAAA;AALnF,MAOMu/B,KAAwB,SAAS7oC,IAAAA;AACrC,UAAM8I,KAAQmD,OAAOC,iBAAiBlM,EAAAA;AACtC,QAAsB,YAAlB8I,GAAM28B,QACR,QAAO,EAAEkD,KAAK7nC,SAASgI,GAAMigC,SAAAA,GAAYH,QAAQ9nC,SAASgI,GAAMkgC,YAAAA,EAAAA;EAEpE;AAZA,MAcM3D,KAAa,SAASz+B,IAAAA;AAC1B,WAAsB,YAAlB5H,EAAQ4H,EAAAA,IACHqB,WAAWghC,gBAEXhhC,WAAWihC;EAEtB;AApBA,MAwBMjC,KAA+Bz2B,CAAAA,OAAWA,GAAOpM,QAAQ,IAAIkK,OAAAA,IAAM3K,OAAKgV,GAA2BE,QAAAA,GAAAA,CAAAA,GAAY,EAAA;AAxBrH,MA0BMuvB,KAAkC53B,CAAAA,OAAW,IAAIlC,OAAAA,IAAM3K,OAAKgV,GAA2BE,QAAU,IAAA,CAAA,EAAE9Y,KAAKyQ,EAAAA;AA1B9G,MA4BMw2B,KAA4Bx2B,CAAAA,OAAW,MAAMzQ,KAAKyQ,EAAAA;AA5BxD,MC1bM24B,KAA+B,CACnC,mBACA,gBACA,uBACA,qBACA,yBACA,UAAA;ADobF,MClbMC,KAAgC;ADkbtC,MCjbMC,KAA4B,IAAA1lC,OAAOylC,IAAgC,GAAA;ADibzE,MC/aME,KAAsB,IAAIh7B,OAAO,gBAAgB,GAAA;AD+avD,MC7aMi7B,KAAc,EAClB,oBAAoB,SAASC,IAAAA;AAC3B,QAAI5kC;AACJ,QAAI4kC,cAAwB5K,GAC1Bh6B,CAAAA,KAAW4kC;SACN;AAAA,UAAA,EAAIA,cAAwBC,aAGjC,OAAM,IAAIt7B,MAAM,uBAAA;AAFhBvJ,MAAAA,KAAWkgC,GAAW7lC,MAAMuqC,GAAa1gB,SAAAA,EAAWoc,YAAAA;IAGtD;AAEA,WAAOtgC,GAAS+/B,uBAAAA,EAAyB/yB,aAAAA;EAC1C,GAED,aAAa,SAAS43B,IAAAA;AACpB,QAAIxpC;AACJ,QAAIwpC,cAAwB5K,GAC1B5+B,CAAAA,KAAU6wB,GAAaC,OAAO0Y,EAAAA;SACzB;AAAA,UAAA,EAAIA,cAAwBC,aAGjC,OAAM,IAAIt7B,MAAM,uBAAA;AAFhBnO,MAAAA,KAAUwpC,GAAavsB,UAAAA,IAAU;IAGnC;AA0BA,WAvBAlN,MAAMC,KAAKhQ,GAAQqqB,iBAvCe,6BAAA,CAAA,EAuCkClhB,QAASugC,CAAAA,OAAAA;AAC3EliC,QAAWkiC,EAAAA;IAAG,CAAA,GAIhBP,GAA6BhgC,QAASopB,CAAAA,OAAAA;AACpCxiB,YAAMC,KAAKhQ,GAAQqqB,iBAAgB1mB,IAAAA,OAAK4uB,IAAAA,GAAAA,CAAAA,CAAAA,EAAeppB,QAASugC,CAAAA,OAAAA;AAC9DA,QAAAA,GAAGvf,gBAAgBoI,EAAAA;MAAU,CAAA;IAC7B,CAAA,GAIJxiB,MAAMC,KAAKhQ,GAAQqqB,iBAAiBgf,EAAAA,CAAAA,EAA+BlgC,QAASugC,CAAAA,OAAAA;AAC1E,UAAA;AACE,cAAM5qC,KAAawS,KAAKrS,MAAMyqC,GAAGn9B,aAAa68B,EAAAA,CAAAA;AAC9CM,QAAAA,GAAGvf,gBAAgBif,EAAAA;AACnB,mBAAWzqC,MAAQG,IAAY;AAC7B,gBAAM4F,KAAQ5F,GAAWH,EAAAA;AACzB+qC,UAAAA,GAAG7gC,aAAalK,IAAM+F,EAAAA;QACxB;MACF,SAASsO,IAAAA;MAAQ;IAAA,CAAA,GAGZhT,GAAQ8oB,UAAU1kB,QAAQklC,IAAqB,EAAA;EACxD,EAAA;AAAA,MAAA,KAAA,OAAA,OAAA,EAAA,WAAA,KAAA,CAAA;ACrEa,MAAMK,KAAN,cAAgCp8B,EAAAA;IAC7CwB,YAAY66B,IAAmB/8B,IAAAA;AAC7BmC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK0pC,oBAAoBA,IACzB1pC,KAAK2M,aAAaA,IAClB3M,KAAKmL,KAAKnL,KAAK2M,WAAWxB,IAC1BnL,KAAKrB,OAAOqB,KAAK2M,WAAWhO;IAC9B;IAEA6D,SAAAA;AACE,aAAOxC,KAAK0pC,kBAAkBC,2BAA2B3pC,KAAK2M,UAAAA;IAChE;EAAA;AAGF88B,KAAkBjtB,YAAY,yBAAA,GAC9BitB,GAAkBjtB,YAAY,yBAAA,GAC9BitB,GAAkBjtB,YAAY,yBAAA,GAC9BitB,GAAkBjtB,YAAY,0BAAA,GAC9BitB,GAAkBjtB,YAAY,0BAAA,GAC9BitB,GAAkBjtB,YAAY,sBAAA,GAC9BitB,GAAkBjtB,YAAY,0BAAA,GAC9BitB,GAAkBjtB,YAAY,mBAAA,GAC9BitB,GAAkBjtB,YAAY,oBAAA,GAC9BitB,GAAkBjtB,YAAY,wBAAA,GAC9BitB,GAAkBjtB,YAAY,wBAAA,GAC9BitB,GAAkBjtB,YAAY,iCAAA,GAC9BitB,GAAkBjtB,YAAY,yBAAA,GAC9BitB,GAAkBjtB,YAAY,2BAAA,GAC9BitB,GAAkBjtB,YAAY,oBAAA,GAC9BitB,GAAkBjtB,YAAY,oBAAA,GAC9BitB,GAAkBjtB,YAAY,wBAAA,GAC9BitB,GAAkBjtB,YAAY,8BAAA,GAC9BitB,GAAkBjtB,YAAY,8BAAA;AChCf,MAAMotB,KAAN,cAAgCv8B,EAAAA;IAC7CwB,cAAAA;AAA8B,UAAlBxQ,KAAWgH,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACxByJ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK6pC,qBAAqB,CAAA,GAC1Bh6B,MAAMC,KAAKzR,EAAAA,EAAa4K,QAAS0D,CAAAA,OAAAA;AAC/B3M,aAAK8pC,iBAAiBn9B,EAAAA;MAAW,CAAA;IAErC;IAEAsuB,iBAAAA;AACE,YAAMnqB,KAAS,CAAA;AACf,iBAAW3F,MAAMnL,KAAK6pC,oBAAoB;AACxC,cAAMl9B,KAAa3M,KAAK6pC,mBAAmB1+B,EAAAA;AAC3C2F,QAAAA,GAAOnH,KAAKgD,EAAAA;MACd;AACA,aAAOmE;IACT;IAEAg5B,iBAAiBn9B,IAAAA;AAIf,aAHK3M,KAAK6pC,mBAAmBl9B,GAAWxB,EAAAA,MACtCnL,KAAK6pC,mBAAmBl9B,GAAWxB,EAAAA,IAAM,IAAIs+B,GAAkBzpC,MAAM2M,EAAAA,IAEhE3M,KAAK6pC,mBAAmBl9B,GAAWxB,EAAAA;IAC5C;IAEA4+B,oBAAoBp9B,IAAAA;AAClB,aAAOA,GAAWxB,MAAMnL,KAAK6pC;IAC/B;IAEAF,2BAA2Bh9B,IAAAA;AACiB,UAAAsnB,IAAAC;AAA1C,UAAIl0B,KAAK+pC,oBAAoBp9B,EAAAA,EAC3B,QAAoBsnB,UAApBA,KAAOj0B,KAAKm0B,aAAAA,WAAQF,MAAgD,UAAhDC,KAAbD,GAAe+V,mDAAAA,WAA8C9V,KAAAA,SAA7DA,GAAAnuB,KAAAkuB,IAAgEtnB,EAAAA;IAE3E;IAEAs9B,mBAAmBt9B,IAAAA;AACjB,YAAMu9B,KAAoBlqC,KAAK6pC,mBAAmBl9B,GAAWxB,EAAAA;AAE7D,aAAA,OADOnL,KAAK6pC,mBAAmBl9B,GAAWxB,EAAAA,GACnC++B;IACT;EAAA;AC1Ca,MAAMC,KAAN,MAAMA;IACnBt7B,YAAYu7B,IAAAA;AACVpqC,WAAKoqC,cAAcA,IACnBpqC,KAAK0E,WAAW1E,KAAKoqC,YAAY1lC;AACjC,YAAM2lC,KAAgBrqC,KAAKoqC,YAAYE,iBAAAA;AACvCtqC,WAAK4/B,gBAAgByK,GAAc,CAAA,GACnCrqC,KAAKo5B,cAAciR,GAAc,CAAA,GAEjCrqC,KAAK6/B,gBAAgB7/B,KAAK0E,SAAS86B,qBAAqBx/B,KAAK4/B,aAAAA,GAC7D5/B,KAAKyiC,cAAcziC,KAAK0E,SAAS86B,qBAAqBx/B,KAAKo5B,WAAAA,GAE3Dp5B,KAAKmwB,QAAQnwB,KAAK0E,SAASq6B,gBAAgB/+B,KAAKyiC,YAAYzwB,KAAAA,GAC5DhS,KAAKs9B,iBAAiBt9B,KAAKmwB,MAAMmN,eAAAA,GACjCt9B,KAAKuqC,oBAAoBvqC,KAAKmwB,MAAM3wB,KAAKq7B,oBAAoB76B,KAAKyiC,YAAYxzB,SAAS,CAAA,GACvFjP,KAAKwqC,gBAAgBxqC,KAAKmwB,MAAM3wB,KAAKq7B,oBAAoB76B,KAAKyiC,YAAYxzB,MAAAA;IAC5E;IAEAw7B,yBAAAA;AACE,aAAIzqC,KAAKmwB,MAAMyM,cAAAA,KAAmB58B,KAAKmwB,MAAMgN,WAAAA,KAAAA,CAAiBn9B,KAAKmwB,MAAMpW,QAAAA,IAClC,MAA9B/Z,KAAK6/B,cAAc5wB,SAEnBjP,KAAKs9B,kBAAyC,SAAvBt9B,KAAKwqC;IAEvC;IAEAE,4BAAAA;AACE,aACE1qC,KAAKmwB,MAAMyM,cAAAA,KAAAA,CACV58B,KAAKmwB,MAAMgN,WAAAA,MACXn9B,KAAKs9B,kBAAyC,SAAvBt9B,KAAKwqC,iBAAqD,SAA3BxqC,KAAKuqC;IAEhE;IAEAI,0BAAAA;AACE,aAAO3qC,KAAKmwB,MAAMyM,cAAAA,KAAmB58B,KAAKmwB,MAAMgN,WAAAA,KAAgBn9B,KAAKmwB,MAAMpW,QAAAA;IAC7E;IAEA6wB,wBAAAA;AACE,aAAO5qC,KAAKmwB,MAAMgN,WAAAA,KAA8C,MAA9Bn9B,KAAK6/B,cAAc5wB,UAAAA,CAAiBjP,KAAKmwB,MAAMpW,QAAAA;IACnF;IAEA8wB,iCAAAA;AACE,aAAO7qC,KAAKmwB,MAAMyM,cAAAA,KAAAA,CAAoB58B,KAAKmwB,MAAMgN,WAAAA,KAAgBn9B,KAAKmwB,MAAMpW,QAAAA;IAC9E;EAAA;ACjBa,MAAM+wB,KAAN,cAA0Bz9B,EAAAA;IACvCwB,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK0E,WAAW,IAAIg6B,MACpB1+B,KAAK3B,cAAc,CAAA,GACnB2B,KAAK+qC,oBAAoB,CAAA,GACzB/qC,KAAKgrC,WAAW;IAClB;IAEAja,YAAYrsB,IAAAA;AAC8B,UAAAuvB,IAAAgX;AAAxC,UAAA,CAAKvmC,GAAS8K,UAAUxP,KAAK0E,QAAAA,EAI3B,QAHA1E,KAAK0E,WAAWA,IAChB1E,KAAKkrC,mBAAAA,GACLlrC,KAAKgrC,YACe/W,UAApBA,KAAOj0B,KAAKm0B,aAAAA,WAAQF,MAA8B,UAA9BgX,KAAbhX,GAAekX,iCAAAA,WAA4BF,KAAAA,SAA3CA,GAAAllC,KAAAkuB,IAA8CvvB,EAAAA;IAEzD;IAIA0mC,cAAAA;AACE,aAAO,EACL1mC,UAAU1E,KAAK0E,UACf2lC,eAAerqC,KAAKsqC,iBAAAA,EAAAA;IAExB;IAEAe,aAAYnhB,IAAAA;AAA8B,UAAAiL,IAAAmW,IAAAC,IAAAC;AAAA,UAAA,EAA7B9mC,UAAEA,IAAQ2lC,eAAEA,GAAAA,IAAengB;AAItC,aAAA,UAHAiL,KAAAA,KAAKhB,aAAAA,WAAQgB,MAA6B,UAA7BmW,KAAbnW,GAAesW,gCAAAA,WAA2BH,MAA1CA,GAAAvlC,KAAAovB,EAAAA,GACAn1B,KAAK+wB,YAAwB,QAAZrsB,KAAmBA,KAAW,IAAIg6B,IAAAA,GACnD1+B,KAAK0rC,aAA8B,QAAjBrB,KAAwBA,KAAgB,CAAE,GAAG,CAAA,CAAA,GAC3CkB,UAApBA,KAAOvrC,KAAKm0B,aAAAA,WAAQoX,MAAAA,UAAAC,KAAbD,GAAeI,+BAAAA,WAA0BH,KAAAA,SAAzCA,GAAAzlC,KAAAwlC,EAAAA;IACT;IAIAK,WAAWpsC,IAAAA;AAAqD,UAAA,EAA/CqsC,gBAAEA,GAAAA,IAAgBxmC,UAAAC,SAAA,KAAA,WAAAD,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,EAAEwmC,gBAAAA,KAAgB;AACtD,YAAMxB,KAAgBrqC,KAAKsqC,iBAAAA;AAC3BtqC,WAAK+wB,YAAY/wB,KAAK0E,SAAS47B,kBAAkB9gC,IAAM6qC,EAAAA,CAAAA;AAEvD,YAAMzK,KAAgByK,GAAc,CAAA,GAC9BjR,KAAcwG,KAAgBpgC,GAAKmzB,UAAAA;AAKzC,aAHIkZ,MACF7rC,KAAK0rC,aAAatS,EAAAA,GAEbp5B,KAAK8rC,iCAAiC,CAAElM,IAAexG,EAAAA,CAAAA;IAChE;IAEA2S,cAAAA;AAAiC,UAArB5b,KAAK9qB,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAA,CAAA,IAAG,IAAIu2B;AACtB,YAAMl3B,KAAW,IAAIg6B,GAAS,CAAEvO,EAAAA,CAAAA;AAChC,aAAOnwB,KAAKgsC,eAAetnC,EAAAA;IAC7B;IAEAsnC,iBAAAA;AAA0C,UAA3BtnC,KAAQW,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAA,CAAA,IAAG,IAAIq5B;AAC5B,YAAM2L,KAAgBrqC,KAAKsqC,iBAAAA;AAC3BtqC,WAAK+wB,YAAY/wB,KAAK0E,SAAS66B,sBAAsB76B,IAAU2lC,EAAAA,CAAAA;AAE/D,YAAMzK,KAAgByK,GAAc,CAAA,GAC9BjR,KAAcwG,KAAgBl7B,GAASiuB,UAAAA;AAG7C,aADA3yB,KAAK0rC,aAAatS,EAAAA,GACXp5B,KAAK8rC,iCAAiC,CAAElM,IAAexG,EAAAA,CAAAA;IAChE;IAEA6S,aAAa37B,IAAQ/H,IAAAA;AACnB,YAAM3J,KAAaoB,KAAKksC,yBAAAA,GAClB1sC,KAAO85B,GAAKqE,4BAA4BrtB,IAAQ1R,EAAAA;AACtD,aAAOoB,KAAK4rC,WAAWpsC,IAAM+I,EAAAA;IAC/B;IAEA4jC,mBAAAA;AACE,YAAM9B,KAAgBrqC,KAAKsqC,iBAAAA;AAC3BtqC,WAAK+wB,YAAY/wB,KAAK0E,SAASk9B,wBAAwByI,EAAAA,CAAAA;AAEvD,YAAMzK,KAAgByK,GAAc,CAAA,GAC9BjR,KAAcwG,KAAgB;AAGpC,aADA5/B,KAAK0rC,aAAatS,EAAAA,GACXp5B,KAAK8rC,iCAAiC,CAAElM,IAAexG,EAAAA,CAAAA;IAChE;IAEAgT,kBAAAA;AACE,YAAMC,KAAY,IAAIlC,GAAmBnqC,IAAAA;AAEzC,UAAIqsC,GAAU1B,wBAAAA,EAEZ,QADA3qC,KAAKssC,kBAAAA,GACEtsC,KAAK0rC,aAAaW,GAAUzM,aAAAA;AAC9B,UAAIyM,GAAUzB,sBAAAA,GAAyB;AAC5C,cAAMlmC,KAAW,IAAIg6B,GAAS,CAAE2N,GAAUlc,MAAM6L,gBAAAA,CAAAA,CAAAA;AAChD,eAAOh8B,KAAKgsC,eAAetnC,EAAAA;MAC7B;AAAO,aAAI2nC,GAAU5B,uBAAAA,IACZzqC,KAAKmsC,iBAAAA,IACHE,GAAUxB,+BAAAA,IACZ7qC,KAAKusC,yBAAAA,IACHF,GAAU3B,0BAAAA,IACZ1qC,KAAKwsC,oBAAoBH,EAAAA,IAEzBrsC,KAAKisC,aAAa,IAAA;IAE7B;IAEAQ,WAAWhoC,IAAAA;AACT,YAAMC,KAAWkgC,GAAW7lC,MAAM0F,IAAM,EAAEwkB,eAAe,EAAExnB,cAAAA,KAAc,EAAA,CAAA,EAAUujC,YAAAA,GAC7EqF,KAAgBrqC,KAAKsqC,iBAAAA;AAE3BtqC,WAAK+wB,YAAY/wB,KAAK0E,SAASg7B,qBAAqBh7B,IAAU2lC,EAAAA,CAAAA;AAE9D,YAAMzK,KAAgByK,GAAc,CAAA,GAC9BjR,KAAcwG,KAAgBl7B,GAASiuB,UAAAA,IAAc;AAG3D,aADA3yB,KAAK0rC,aAAatS,EAAAA,GACXp5B,KAAK8rC,iCAAiC,CAAElM,IAAexG,EAAAA,CAAAA;IAChE;IAEAsT,YAAYjoC,IAAAA;AACV,YAAMC,KAAWkgC,GAAW7lC,MAAM0F,EAAAA,EAAMugC,YAAAA,EAAc/F,6BAA6Bj/B,KAAK0E,QAAAA,GAClF6/B,KAAgBvkC,KAAK2sC,iBAAiB,EAAE3iC,QAAAA,MAAQ,CAAA,GAChDqgC,KAAgBrqC,KAAK0E,SAAS4/B,uBAAuBC,EAAAA;AAE3D,aADAvkC,KAAK+wB,YAAYrsB,EAAAA,GACV1E,KAAK0rC,aAAarB,EAAAA;IAC3B;IAEAuC,WAAWjuC,IAAAA;AACT,aAAOqB,KAAK6sC,YAAY,CAAEluC,EAAAA,CAAAA;IAC5B;IAEAkuC,YAAYxhC,IAAAA;AACV,YAAMhN,KAAc,CAAA;AASpB,aAPAwR,MAAMC,KAAKzE,EAAAA,EAAOpC,QAAStK,CAAAA,OAAAA;AAAS,YAAAmuC;AAClC,YAAiBA,UAAjBA,KAAI9sC,KAAKm0B,aAAAA,WAAQ2Y,MAAbA,GAAeC,4BAA4BpuC,EAAAA,GAAO;AACpD,gBAAMgO,KAAaymB,GAAW4Z,kBAAkBruC,EAAAA;AAChDN,UAAAA,GAAYsL,KAAKgD,EAAAA;QACnB;MAAA,CAAA,GAGK3M,KAAKitC,kBAAkB5uC,EAAAA;IAChC;IAEA6uC,iBAAiBvgC,IAAAA;AACf,aAAO3M,KAAKitC,kBAAkB,CAAEtgC,EAAAA,CAAAA;IAClC;IAEAsgC,kBAAkB5uC,IAAAA;AAChB,UAAImB,KAAO,IAAI85B;AAef,aAbAzpB,MAAMC,KAAKzR,EAAAA,EAAa4K,QAAS0D,CAAAA,OAAAA;AAAe,YAAA0gB;AAC9C,cAAMriB,KAAO2B,GAAWggB,QAAAA,GAClBpuB,KAAuC8uB,UAA3BA,KAAG1Z,EAAmB3I,EAAAA,MAAAA,WAAKqiB,KAAAA,SAAxBA,GAA0B9uB,cAEzCK,KAAaoB,KAAKksC,yBAAAA;AACpB3tC,QAAAA,OACFK,GAAWL,eAAeA;AAG5B,cAAM4uC,KAAiB7T,GAAK8T,gCAAgCzgC,IAAY/N,EAAAA;AACxEY,QAAAA,KAAOA,GAAKq6B,WAAWsT,EAAAA;MAAe,CAAA,GAGjCntC,KAAK4rC,WAAWpsC,EAAAA;IACzB;IAEA6tC,gCAAgC5P,IAAAA;AAC9B,YAAM8G,KAAgBvkC,KAAK2sC,iBAAAA;AAC3B,UAAI/2B,GAAiB2uB,EAAAA,GAAgB;AACnC,YAAkB,eAAd9G,MAAwD,MAA5B8G,GAAc,CAAA,EAAGt1B,OAC/C,QAAA;AAEF,YAAIjP,KAAKstC,oCAAoC7P,EAAAA,EAC3C,QAAA;MAEJ,WACM8G,GAAc,CAAA,EAAGvyB,UAAUuyB,GAAc,CAAA,EAAGvyB,MAC9C,QAAA;AAGJ,aAAA;IACF;IAEAu7B,kBAAkB9P,IAAAA;AAA4B,UACxC9wB,IAAY6gC,IAA2BC,IAAAA,EADhBnoC,QAAEA,GAAAA,IAAQD,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AAExC,YAAMk/B,KAAgBvkC,KAAK2sC,iBAAAA;AAC3B,UAAIl3B,KAAQzV,KAAKsqC,iBAAAA;AACjB,YAAMoD,KAAuB93B,GAAiBH,EAAAA;AAQ9C,UANIi4B,KACFF,KAA0C,eAAd/P,MAAwD,MAA5B8G,GAAc,CAAA,EAAGt1B,SAEzEw+B,KAAuBlJ,GAAc,CAAA,EAAGvyB,UAAUuyB,GAAc,CAAA,EAAGvyB,OAGjEw7B,MACExtC,KAAK2tC,+BAAAA,GAAkC;AACzC,cAAMxd,KAAQnwB,KAAK4tC,SAAAA;AASnB,YAPIzd,GAAMgN,WAAAA,IACRn9B,KAAKssC,kBAAAA,IAELtsC,KAAK6tC,4BAAAA,GAGP7tC,KAAK0rC,aAAaj2B,GAAM,CAAA,CAAA,GACpB0a,GAAMpW,QAAAA,EACR,QAAA;MAEJ;AAUF,aAPI2zB,OACFj4B,KAAQzV,KAAK8tC,4BAA4BrQ,IAAW,EAAEn4B,QAAAA,GAAAA,CAAAA,GACpC,eAAdm4B,OACF9wB,KAAa3M,KAAK+tC,qBAAqBt4B,EAAAA,KAIvC9I,MACF3M,KAAKguC,eAAerhC,EAAAA,GAAAA,UAGpB3M,KAAK+wB,YAAY/wB,KAAK0E,SAASq1B,kBAAkBtkB,EAAAA,CAAAA,GACjDzV,KAAK0rC,aAAaj2B,GAAM,CAAA,CAAA,GAAA,CACpB+3B,MAAAA,CAA6BC,MAAAA;IAIrC;IAEAQ,kBAAkBx4B,IAAAA;AAChB,YAAA,CAAQqhB,EAAAA,IAAajnB,MAAMC,KAAK9P,KAAKsqC,iBAAAA,CAAAA;AAErC,aADAtqC,KAAK+wB,YAAY/wB,KAAK0E,SAASu1B,4BAA4BxkB,IAAOqhB,EAAAA,CAAAA,GAC3D92B,KAAK0rC,aAAa5U,EAAAA;IAC3B;IAEAoX,iBAAiBvhC,IAAAA;AACf,YAAM8I,KAAQzV,KAAK0E,SAAS22B,qBAAqB1uB,EAAAA;AACjD,UAAI8I,GAGF,QAFAzV,KAAKmuC,sBAAAA,GACLnuC,KAAK+wB,YAAY/wB,KAAK0E,SAASq1B,kBAAkBtkB,EAAAA,CAAAA,GAC1CzV,KAAK0rC,aAAaj2B,GAAM,CAAA,CAAA;IAEnC;IAEA82B,2BAAAA;AACE,YAAA,CAAQ3M,IAAexG,EAAAA,IAAgBvpB,MAAMC,KAAK9P,KAAKsqC,iBAAAA,CAAAA,GACjDna,KAAQnwB,KAAK0E,SAAS+6B,mBAAmBrG,EAAAA;AAE/C,aADAp5B,KAAKouC,uBAAuBje,GAAMG,iBAAAA,CAAAA,GAC3BtwB,KAAK0rC,aAAa9L,EAAAA;IAC3B;IAEAyO,oBAAAA;AAEE,aADAruC,KAAKsuC,sBAAsBtuC,KAAKuuC,YAAAA,GACzBvuC,KAAKisC,aA9PI,GAAA;IA+PlB;IAEAuC,oBAAAA;AACE,UAAgC,QAA5BxuC,KAAKsuC,oBAEP,QADAtuC,KAAKyuC,iBAAiB,CAAEzuC,KAAKsuC,qBAAqBtuC,KAAKsuC,sBAAsBI,CAAAA,CAAAA,GACtE1uC,KAAKsqC,iBAAAA;IAEhB;IAEAqE,oBAAAA;AACE3uC,WAAKsuC,sBAAsB;IAC7B;IAIAM,oBAAoBl7B,IAAAA;AAClB,YAAMlP,KAAQxE,KAAK+qC,kBAAkBr3B,EAAAA;AACrC,aAAgB,QAATlP,MAAAA,UAAiBA;IAC1B;IAEAqqC,uBAAuBn7B,IAAAA;AACrB,YAAMlP,KAAAA,CAASxE,KAAK+qC,kBAAkBr3B,EAAAA;AACtC,aAAIlP,KACKxE,KAAK8uC,oBAAoBp7B,IAAelP,EAAAA,IAExCxE,KAAKouC,uBAAuB16B,EAAAA;IAEvC;IAEAq7B,uBAAuBr7B,IAAAA;AACrB,aAAID,GAAeC,EAAAA,IACV1T,KAAKgvC,4BAA4Bt7B,EAAAA,IAEjC1T,KAAKivC,2BAA2Bv7B,EAAAA;IAE3C;IAEAu7B,2BAA2Bv7B,IAAAA;AACzB,YAAMhP,KAAW1E,KAAKkvC,oBAAAA;AACtB,UAAKxqC,IAAL;AACA,mBAAWiI,MAAckD,MAAMC,KAAKpL,GAASu2B,eAAAA,CAAAA,EAC3C,KAAA,CAAKtuB,GAAW4e,WAAAA,EACd,QAAA;AAGJ,eAAA;MANe;IAOjB;IAEAyjB,4BAA4Bt7B,IAAAA;AAC1B,YAAMyc,KAAQnwB,KAAK4tC,SAAAA;AACnB,UAAKzd,GACL,QAAA,CAAQA,GAAMiN,gBAAAA;IAChB;IAEA0R,oBAAoBp7B,IAAelP,IAAAA;AACjC,aAAIiP,GAAeC,EAAAA,IACV1T,KAAKmvC,kBAAkBz7B,IAAelP,EAAAA,KAE7CxE,KAAKovC,iBAAiB17B,IAAelP,EAAAA,GACrCxE,KAAK+qC,kBAAkBr3B,EAAAA,IAAiBlP,IACjCxE,KAAKqvC,wCAAAA;IAEhB;IAEAC,0BAA0BxY,IAAUpjB,IAAelP,IAAAA;AAAO,UAAA6rB;AACxD,YAAMF,KAAQnwB,KAAK0E,SAAS+6B,mBAAmB3I,EAAAA,GACzCyY,KAAgE,UAA3Clf,KAAG5c,GAAe0c,GAAMG,iBAAAA,CAAAA,MAAAA,WAAmBD,KAAAA,SAAxCA,GAA0C9wB;AAExE,UAAI4wB,MAAAA,QAASof,MAAAA,GAAuBtlC,SAASyJ,EAAAA,GAAgB;AAC3D,cAAM87B,KAAcxvC,KAAK0E,SAASg9B,2BAA2B5K,IAAUpjB,IAAelP,EAAAA;AACtFxE,aAAK+wB,YAAYye,EAAAA;MACnB;IACF;IAEAJ,iBAAiB17B,IAAelP,IAAAA;AAC9B,YAAM6lC,KAAgBrqC,KAAKsqC,iBAAAA;AAC3B,UAAA,CAAKD,GAAe;AAEpB,YAAA,CAAQzK,IAAexG,EAAAA,IAAgBvpB,MAAMC,KAAKu6B,EAAAA;AAClD,UAAIzK,OAAkBxG,GAMpB,QAAOp5B,KAAK+wB,YAAY/wB,KAAK0E,SAASy1B,oBAAoBzmB,IAAelP,IAAO6lC,EAAAA,CAAAA;AALhF,UAAsB,WAAlB32B,IAA0B;AAC5B,cAAMlU,KAAO85B,GAAKqE,4BAA4Bn5B,IAAO,EAAE2H,MAAM3H,GAAAA,CAAAA;AAC7D,eAAOxE,KAAK4rC,WAAWpsC,EAAAA;MACzB;IAIJ;IAEA2vC,kBAAkBz7B,IAAelP,IAAAA;AAC/B,YAAM6lC,KAAgBrqC,KAAKsqC,iBAAAA;AAC3B,UAAItqC,KAAK+uC,uBAAuBr7B,EAAAA,EAE9B,QADA1T,KAAK+wB,YAAY/wB,KAAK0E,SAASm9B,2BAA2BnuB,IAAelP,IAAO6lC,EAAAA,CAAAA,GACzErqC,KAAK0rC,aAAarB,EAAAA;IAE7B;IAEA+D,uBAAuB16B,IAAAA;AACrB,aAAID,GAAeC,EAAAA,KACjB1T,KAAKyvC,qBAAqB/7B,EAAAA,GACnB1T,KAAK0vC,wBAAAA,MAEZ1vC,KAAK2vC,oBAAoBj8B,EAAAA,GAAAA,OAClB1T,KAAK+qC,kBAAkBr3B,EAAAA,GACvB1T,KAAKqvC,wCAAAA;IAEhB;IAEAM,oBAAoBj8B,IAAAA;AAClB,YAAM22B,KAAgBrqC,KAAKsqC,iBAAAA;AAC3B,UAAKD,GACL,QAAOrqC,KAAK+wB,YAAY/wB,KAAK0E,SAAS21B,uBAAuB3mB,IAAe22B,EAAAA,CAAAA;IAC9E;IAEAoF,qBAAqB/7B,IAAAA;AACnB,YAAM22B,KAAgBrqC,KAAKsqC,iBAAAA;AAC3B,UAAKD,GACL,QAAOrqC,KAAK+wB,YAAY/wB,KAAK0E,SAAS21B,uBAAuB3mB,IAAe22B,EAAAA,CAAAA;IAC9E;IAEAuF,0BAAAA;AAA0B,UAAAC;AACxB,cAAsB,UAAfA,KAAA7vC,KAAK4tC,SAAAA,MAAAA,WAAUiC,KAAAA,SAAfA,GAAiB9S,gBAAAA,KAAoB;IAC9C;IAEA+S,0BAAAA;AAA0B,UAAAzS;AACxB,YAAMlN,KAAQnwB,KAAK4tC,SAAAA;AACnB,UAAKzd,IAAL;AACA,YAAA,UAAAkN,KAAI5pB,GAAe0c,GAAM0M,yBAAAA,CAAAA,MAAAA,WAA2BQ,MAAAA,CAAhDA,GAAkDz9B,cAMpD,QAAOuwB,GAAM4M,gBAAAA,IAAoB;AANkC;AACnE,gBAAMgT,KAAgB/vC,KAAKgwC,iBAAAA;AAC3B,cAAID,GACF,QtCzYuB,WAAA;AAAA,gBAASh+B,KAAC1M,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAAE,mBAAKwM,IAAlBxM,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAAgC6J,MAAM,GAAG6C,GAAEzM,MAAAA,GAASyM,EAAAA;UAAE,EsCyY3Dg+B,GAAc7S,sBAAAA,GAAyB/M,GAAM+M,sBAAAA,CAAAA;QAExE;MANY;IASd;IAEAF,uBAAAA;AACE,YAAM7M,KAAQnwB,KAAK4tC,SAAAA;AACnB,UAAKzd,GACL,QAAOnwB,KAAK+wB,YAAY/wB,KAAK0E,SAAS06B,aAAajP,IAAOA,GAAM6M,qBAAAA,CAAAA,CAAAA;IAClE;IAEAC,uBAAAA;AACE,YAAM9M,KAAQnwB,KAAK4tC,SAAAA;AACnB,UAAKzd,GACL,QAAOnwB,KAAK+wB,YAAY/wB,KAAK0E,SAAS06B,aAAajP,IAAOA,GAAM8M,qBAAAA,CAAAA,CAAAA;IAClE;IAEA0Q,iCAAAA;AAAiC,UAAAsC;AAC/B,cAAsB,UAAfA,KAAAjwC,KAAK4tC,SAAAA,MAAAA,WAAUqC,KAAAA,SAAfA,GAAiBxT,kBAAAA,KAAsB;IAChD;IAEAoR,8BAAAA;AAA8B,UAAAqC;AAC5B,YAAM7d,KAA2B,UAAlB6d,KAAGlwC,KAAK4tC,SAAAA,MAAAA,WAAUsC,KAAAA,SAAfA,GAAiB5f,iBAAAA;AACnC,UAAI+B,GACF,QAAOryB,KAAKouC,uBAAuB/b,EAAAA;IAEvC;IAEAia,oBAAAA;AACE,UAAA,CAAM1M,EAAAA,IAAkB/vB,MAAMC,KAAK9P,KAAKsqC,iBAAAA,CAAAA;AACxC,YAAA,EAAMt4B,OAAEA,GAAAA,IAAUhS,KAAK0E,SAAS86B,qBAAqBI,EAAAA;AACrD,UAAIhH,KAAW5mB;AACf,YAAMm+B,KAAiBnwC,KAAK4tC,SAAAA,EAAWnR,kBAAAA;AAEvC,UAAItM,KAAQnwB,KAAK0E,SAASq6B,gBAAgBnG,KAAW,CAAA;AACrD,aAAOzI,MACAA,GAAMgN,WAAAA,KAAAA,EAAgBhN,GAAMsM,kBAAAA,KAAuB0T,MAGxDvX,CAAAA,MACAzI,KAAQnwB,KAAK0E,SAASq6B,gBAAgBnG,KAAW,CAAA;AAGnDgH,MAAAA,KAAgB5/B,KAAK0E,SAASi+B,qBAAqB,EAAE3wB,OAAAA,IAAO/C,QAAQ,EAAA,CAAA;AACpE,YAAMmqB,KAAcp5B,KAAK0E,SAASi+B,qBAAqB,EAAE3wB,OAAO4mB,IAAU3pB,QAAQ,EAAA,CAAA;AAClF,aAAOjP,KAAK+wB,YAAY/wB,KAAK0E,SAASu9B,+BAA+B,CAAErC,IAAexG,EAAAA,CAAAA,CAAAA;IACxF;IAEAsW,0BAAAA;AACE,YAAMrF,KAAgBrqC,KAAKsqC,iBAAiB,EAAE8F,YAAAA,KAAY,CAAA;AAC1D,UAAI/F,IAAe;AACjB,cAAMU,KAAoB/qC,KAAK0E,SAASg2B,2BAA2B2P,EAAAA;AAUnE,YARAx6B,MAAMC,KAAKwD,GAAAA,CAAAA,EAAwBrK,QAASyK,CAAAA,OAAAA;AACrCq3B,UAAAA,GAAkBr3B,EAAAA,KAChB1T,KAAK+uC,uBAAuBr7B,EAAAA,MAC/Bq3B,GAAkBr3B,EAAAA,IAAAA;QAEtB,CAAA,GAAA,CAGG6B,GAAgBw1B,IAAmB/qC,KAAK+qC,iBAAAA,EAE3C,QADA/qC,KAAK+qC,oBAAoBA,IAClB/qC,KAAKqvC,wCAAAA;MAEhB;IACF;IAEAgB,uBAAAA;AACE,aAAOhsC,EAAO0B,KAAK,CAAE,GAAE/F,KAAK+qC,iBAAAA;IAC9B;IAEAmB,2BAAAA;AACE,YAAMttC,KAAa,CAAA;AACnB,iBAAW2F,MAAOvE,KAAK+qC,mBAAmB;AACxC,cAAMvmC,KAAQxE,KAAK+qC,kBAAkBxmC,EAAAA;AAAAA,kBACjCC,MACEsP,GAAcvP,EAAAA,MAChB3F,GAAW2F,EAAAA,IAAOC;MAGxB;AACA,aAAO5F;IACT;IAIA0xC,kBAAAA;AACE,aAAOtwC,KAAK8uC,oBAAoB,UAAA,IAAU;IAC5C;IAEAyB,gBAAAA;AACE,aAAOvwC,KAAKouC,uBAAuB,QAAA;IACrC;IAEAoC,qBAAAA;AACE,aAAOxwC,KAAK4uC,oBAAoB,QAAA;IAClC;IAEAlD,aAAarB,IAAAA;AAAe,UAAAoG;AAC1B,YAAMlM,KAAgBvkC,KAAK0E,SAASi8B,uBAAuB0J,EAAAA;AAC3D,aAAoB,UAApBoG,KAAOzwC,KAAKm0B,aAAAA,WAAQsc,KAAAA,SAAbA,GAAeC,sDAAsDnM,EAAAA;IAC9E;IAEA+F,mBAAAA;AACE,YAAM/F,KAAgBvkC,KAAK2sC,iBAAAA;AAC3B,UAAIpI,GACF,QAAOvkC,KAAK0E,SAAS4/B,uBAAuBC,EAAAA;IAEhD;IAEAkK,iBAAiBpE,IAAAA;AACf,YAAM9F,KAAgBvkC,KAAK0E,SAASi8B,uBAAuB0J,EAAAA;AAC3D,aAAOrqC,KAAK2wC,oBAAAA,EAAsBC,iBAAiBrM,EAAAA;IACrD;IAEAgK,cAAAA;AACE,YAAMhK,KAAgBvkC,KAAK2sC,iBAAAA;AAC3B,UAAIpI,GACF,QAAOvkC,KAAK0E,SAASi+B,qBAAqB4B,GAAc,CAAA,CAAA;IAE5D;IAEAoI,iBAAiBpkC,IAAAA;AACf,aAAIvI,KAAK6wC,sBACA7wC,KAAK6wC,sBAEL7wC,KAAK2wC,oBAAAA,EAAsBhE,iBAAiBpkC,EAAAA,KAAYiN,GAAe,EAAExD,OAAO,GAAG/C,QAAQ,EAAA,CAAA;IAEtG;IAEA6hC,wBAAwBvM,IAAenvB,IAAAA;AACrC,UAAItE;AACJ9Q,WAAK6wC,sBAAsBtM;AAC3B,UAAA;AACEzzB,QAAAA,KAASsE,GAAAA;MACX,UAAU;AACRpV,aAAK6wC,sBAAsB;MAC7B;AACA,aAAO//B;IACT;IAEAigC,gBAAgBt7B,IAAOL,IAAAA;AACrB,YAAMmvB,KAAgBvkC,KAAK0E,SAASi8B,uBAAuBlrB,EAAAA;AAC3D,aAAOzV,KAAK8wC,wBAAwBvM,IAAenvB,EAAAA;IACrD;IAEA47B,mBAAmBl5B,IAAU1C,IAAAA;AAC3B,YAAMmvB,KAAgBvkC,KAAKixC,gCAAgCn5B,IAAU,EAAE9N,QAAAA,MAAQ,CAAA;AAC/E,aAAOhK,KAAK8wC,wBAAwBvM,IAAenvB,EAAAA;IACrD;IAEA04B,4BAA4BrQ,IAAAA;AAA4B,UAAA,EAAjBn4B,QAAEA,GAAAA,IAAQD,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA,GAAA,CAC5Cu6B,IAAexG,EAAAA,IAAgBvpB,MAAMC,KAAK9P,KAAKsqC,iBAAAA,CAAAA;AAcrD,aAbkB,eAAd7M,KACEn4B,KACFs6B,MAAiBt6B,KAEjBs6B,KAAgB5/B,KAAKkxC,iCAAiCtR,IAAAA,EAAgB,IAGpEt6B,KACF8zB,MAAe9zB,KAEf8zB,KAAcp5B,KAAKkxC,iCAAiC9X,IAAa,CAAA,GAG9D5jB,GAAe,CAAEoqB,IAAexG,EAAAA,CAAAA;IACzC;IAEAkU,oCAAoC7P,IAAAA;AAClC,UAAIz9B,KAAKmxC,kBACP,QAAA;AAEF,YAAM17B,KAAQzV,KAAK8tC,4BAA4BrQ,EAAAA;AAC/C,aAA2C,QAApCz9B,KAAK+tC,qBAAqBt4B,EAAAA;IACnC;IAEA27B,sBAAsB3T,IAAAA;AACpB,UAAI4T,IAAmB57B;AACvB,UAAIzV,KAAKmxC,kBACP17B,CAAAA,KAAQzV,KAAK0E,SAAS22B,qBAAqBr7B,KAAKmxC,iBAAAA;WAC3C;AACL,cAAM9G,KAAgBrqC,KAAKsqC,iBAAAA;AAC3B70B,QAAAA,KAAQzV,KAAK8tC,4BAA4BrQ,EAAAA,GACzC4T,KAAAA,CAAqBr7B,GAAeq0B,IAAe50B,EAAAA;MACrD;AAQA,UANkB,eAAdgoB,KACFz9B,KAAKyuC,iBAAiBh5B,GAAM,CAAA,CAAA,IAE5BzV,KAAKyuC,iBAAiBh5B,GAAM,CAAA,CAAA,GAG1B47B,IAAmB;AACrB,cAAM1kC,KAAa3M,KAAK+tC,qBAAqBt4B,EAAAA;AAC7C,YAAI9I,GACF,QAAO3M,KAAKguC,eAAerhC,EAAAA;MAE/B;IACF;IAEA2kC,2BAA2B7T,IAAAA;AAA4B,UAAA,EAAjBn4B,QAAEA,GAAAA,IAAQD,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AACjD,YAAMoQ,KAAQzV,KAAK8tC,4BAA4BrQ,IAAW,EAAEn4B,QAAAA,GAAAA,CAAAA;AAC5D,aAAOtF,KAAKyuC,iBAAiBh5B,EAAAA;IAC/B;IAEA87B,4BAAAA;AACE,UAAIvxC,KAAK4uC,oBAAoB,MAAA,EAC3B,QAAO5uC,KAAKwxC,qCAAqC,MAAA;IAErD;IAEAA,qCAAqC99B,IAAAA;AACnC,YAAMojB,KAAW92B,KAAKuuC,YAAAA,GAChB94B,KAAQzV,KAAK0E,SAAS6+B,oCAAoC7vB,IAAeojB,EAAAA;AAC/E,aAAO92B,KAAKyuC,iBAAiBh5B,EAAAA;IAC/B;IAEAg8B,+BAAAA;AAA+B,UAAAC;AAC7B,cAAoCA,UAA7BA,KAAI1xC,KAAC2xC,uBAAAA,MAAAA,WAAwBD,KAAAA,SAA7BA,GAA+BpsC,UAAS;IACjD;IAEAssC,4BAAAA;AACE,aAAO5xC,KAAKmxC,qBAAqBnxC,KAAK6xC,uBAAuB7xC,KAAKuuC,YAAAA,CAAAA;IACpE;IAEAsD,uBAAuB/a,IAAAA;AACrB,YAAMsN,KAAWpkC,KAAK0E,SAAS86B,qBAAqB1I,EAAAA;AACpD,UAAIsN,GACF,QAAOpkC,KAAK8xC,uBAAuB1N,EAAAA;IAEvC;IAEA2N,qBAAqBjb,IAAAA;AAAU,UAAAkb;AAC7B,aAAA,UAAAA,KAAOhyC,KAAK0E,SAASg3B,mBAAmB5E,EAAAA,MAAAA,WAASkb,KAAAA,SAA1CA,GAA4Cvf,aAAAA;IACrD;IAEAyc,sBAAAA;AACE,YAAM7E,KAAgBrqC,KAAKsqC,iBAAAA;AAC3B,UAAID,GACF,QAAOrqC,KAAK0E,SAASy8B,mBAAmBkJ,EAAAA;IAE5C;IAEAsH,yBAAAA;AAAyB,UAAAM;AACvB,aAAiCA,UAAjCA,KAAOjyC,KAAKkvC,oBAAAA,MAAAA,WAAqB+C,KAAAA,SAA1BA,GAA4BhX,eAAAA;IACrC;IAIAA,iBAAAA;AACE,aAAOj7B,KAAK3B,YAAY6Q,MAAM,CAAA;IAChC;IAEAg8B,qBAAAA;AACE,YAAM7sC,KAAc2B,KAAK0E,SAASu2B,eAAAA,GAAAA,EAC5BiX,OAAEA,IAAKC,SAAEA,GAAAA,ItCpoBiB,WAAA;AAAuC,YAA9BC,KAAQ/sC,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA,GAAIgtC,KAAQhtC,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACrE,cAAM6sC,KAAQ,CAAA,GACRC,KAAU,CAAA,GAEVG,KAAiB,oBAAIC;AAE3BH,QAAAA,GAASnpC,QAASzE,CAAAA,OAAAA;AAChB8tC,UAAAA,GAAenpC,IAAI3E,EAAAA;QAAM,CAAA;AAG3B,cAAMguC,KAAgB,oBAAID;AAe1B,eAbAF,GAASppC,QAASzE,CAAAA,OAAAA;AAChBguC,UAAAA,GAAcrpC,IAAI3E,EAAAA,GACb8tC,GAAez/B,IAAIrO,EAAAA,KACtB0tC,GAAMvoC,KAAKnF,EAAAA;QACb,CAAA,GAGF4tC,GAASnpC,QAASzE,CAAAA,OAAAA;AACXguC,UAAAA,GAAc3/B,IAAIrO,EAAAA,KACrB2tC,GAAQxoC,KAAKnF,EAAAA;QACf,CAAA,GAGK,EAAE0tC,OAAAA,IAAOC,SAAAA,GAAAA;MAClB,EsC0mBoDnyC,KAAK3B,aAAaA,EAAAA;AAQlE,aAPA2B,KAAK3B,cAAcA,IAEnBwR,MAAMC,KAAKqiC,EAAAA,EAASlpC,QAAS0D,CAAAA,OAAAA;AAAe,YAAA8lC,IAAAC;AAC1C/lC,QAAAA,GAAWwnB,WAAW,MAAA,UACtBse,KAAAA,KAAKte,aAAAA,WAAQse,MAAgCC,UAAhCA,KAAbD,GAAeE,mCAAAA,WAA8BD,MAA7CA,GAAA3sC,KAAA0sC,IAAgD9lC,EAAAA;MAAW,CAAA,IAGtD,MAAA;AACL,cAAMmE,KAAS,CAAA;AAOf,eALAjB,MAAMC,KAAKoiC,EAAAA,EAAOjpC,QAAS0D,CAAAA,OAAAA;AAAe,cAAAimC,IAAAC;AACxClmC,UAAAA,GAAWwnB,WAAWn0B,MACtB8Q,GAAOnH,KAAkB,UAAdipC,KAAC5yC,KAAKm0B,aAAAA,WAAQye,MAA6B,UAA7BC,KAAbD,GAAeE,gCAAAA,WAA2BD,KAAAA,SAA1CA,GAAA9sC,KAAA6sC,IAA6CjmC,EAAAA,CAAAA;QAAY,CAAA,GAGhEmE;MACR,GATM;IAUT;IAIA2d,8BAA8B9hB,IAAAA;AAAY,UAAAomC,IAAAC;AAExC,aADAhzC,KAAKgrC,YACe+H,UAApBA,KAAO/yC,KAAKm0B,aAAAA,WAAQ4e,MAA8B,UAA9BC,KAAbD,GAAeE,iCAAAA,WAA4BD,KAAAA,SAA3CA,GAAAjtC,KAAAgtC,IAA8CpmC,EAAAA;IACvD;IAEA0oB,8BAA8B1oB,IAAAA;AAAY,UAAAumC,IAAAC;AAExC,aADAnzC,KAAKgrC,YACekI,UAApBA,KAAOlzC,KAAKm0B,aAAAA,WAAQ+e,MAA0C,UAA1CC,KAAbD,GAAeE,6CAAAA,WAAwCD,KAAAA,SAAvDA,GAAAptC,KAAAmtC,IAA0DvmC,EAAAA;IACnE;IAIAqhC,eAAerhC,IAAYpE,IAAAA;AAAS,UAAA8qC,IAAAC;AAClC,UAAI3mC,OAAe3M,KAAKmxC,kBAGxB,QAFAnxC,KAAKmuC,sBAAAA,GACLnuC,KAAKmxC,oBAAoBxkC,IACL0mC,UAApBA,KAAOrzC,KAAKm0B,aAAAA,WAAQkf,MAAsCC,UAAtCA,KAAbD,GAAeE,yCAAAA,WAAoCD,KAAAA,SAAnDA,GAAAvtC,KAAAstC,IAAsDrzC,KAAKmxC,mBAAmB5oC,EAAAA;IACvF;IAEA4lC,wBAAAA;AAAwB,UAAAqF,IAAAC;AACjBzzC,WAAKmxC,sBACG,UAAbqC,KAAIxzC,KAACm0B,aAAAA,WAAQqf,MAAAA,UAAAC,KAAbD,GAAeE,wCAAAA,WAAmCD,MAAlDA,GAAA1tC,KAAAytC,IAAqDxzC,KAAKmxC,iBAAAA,GAC1DnxC,KAAKmxC,oBAAoB;IAC3B;IAEA5V,8BAA8B38B,IAAY+N,IAAAA;AACxC,aAAO3M,KAAK+wB,YAAY/wB,KAAK0E,SAAS62B,8BAA8B38B,IAAY+N,EAAAA,CAAAA;IAClF;IAEA80B,6BAA6BpP,IAAW1lB,IAAAA;AACtC,aAAO3M,KAAK+wB,YAAY/wB,KAAK0E,SAAS+8B,6BAA6BpP,IAAW1lB,EAAAA,CAAAA;IAChF;IAIA6/B,oBAAoBH,IAAAA;AAClB,UAAA,EAAI3nC,UAAEA,GAAAA,IAAa2nC;AACnB,YAAA,EAAMlc,OAAEA,GAAAA,IAAUkc;AAClB,UAAIvV,KAAWuV,GAAUzM,eACrBnqB,KAAQ,CAAEqhB,KAAW,GAAGA,EAAAA;AAExB3G,MAAAA,GAAMO,sBAAAA,MAA4B2b,GAAUxM,cAAc5wB,UACxDkhB,GAAMmN,eAAAA,KAAgD,SAA5B+O,GAAU7B,gBACtC1T,MAAY,IAEZpyB,KAAWA,GAASq1B,kBAAkBtkB,EAAAA,GAExCA,KAAQ,CAAEqhB,IAAUA,EAAAA,KACiB,SAA5BuV,GAAU7B,gBACiB,SAAhC6B,GAAU9B,oBACZ90B,KAAQ,CAAEqhB,KAAW,GAAGA,KAAW,CAAA,KAEnCrhB,KAAQ,CAAEqhB,IAAUA,KAAW,CAAA,GAC/BA,MAAY,KAELuV,GAAUxM,cAAc5wB,SAAS,KAAM,MAChD6nB,MAAY;AAGd,YAAM0Y,KAAc,IAAI9Q,GAAS,CAAEvO,GAAMoM,oBAAAA,EAAsBP,gBAAAA,CAAAA,CAAAA;AAE/D,aADAh8B,KAAK+wB,YAAYrsB,GAAS66B,sBAAsBiQ,IAAa/5B,EAAAA,CAAAA,GACtDzV,KAAK0rC,aAAa5U,EAAAA;IAC3B;IAEAkZ,mBAAAA;AACE,YAAMzL,KAAgBvkC,KAAK2sC,iBAAAA;AAC3B,UAAIpI,IAAe;AACjB,cAAA,EAAMvyB,OAAEA,GAAAA,IAAUuyB,GAAc,CAAA;AAChC,YAAIvyB,KAAQ,EACV,QAAOhS,KAAK0E,SAASq6B,gBAAgB/sB,KAAQ,CAAA;MAEjD;IACF;IAEA47B,WAAAA;AACE,YAAMrJ,KAAgBvkC,KAAK2sC,iBAAAA;AAC3B,UAAIpI,GACF,QAAOvkC,KAAK0E,SAASq6B,gBAAgBwF,GAAc,CAAA,EAAGvyB,KAAAA;IAE1D;IAEA+7B,qBAAqBt4B,IAAAA;AACnB,YAAM/Q,KAAW1E,KAAK0E,SAASy8B,mBAAmB1rB,EAAAA;AAClD,UAAI/Q,GAAS8J,SAAAA,MAAAA,GAAU/K,OnDnwBiB,UmDmwBmB,IAAA,EACzD,QAAOiB,GAASu2B,eAAAA,EAAiB,CAAA;IAErC;IAEAoU,0CAAAA;AAA0C,UAAAsE,IAAAC;AACxC,aAAA,UAAAD,KAAO3zC,KAAKm0B,aAAAA,WAAQwf,MAAuCC,UAAvCA,KAAbD,GAAeE,0CAAAA,WAAqCD,KAAAA,SAApDA,GAAA7tC,KAAA4tC,IAAuD3zC,KAAK+qC,iBAAAA;IACrE;IAEAe,iCAAiCr2B,IAAAA;AAAO,UAAAq+B,IAAAC;AACtC,aAAoBD,UAApBA,KAAO9zC,KAAKm0B,aAAAA,WAAQ2f,MAAuC,UAAvCC,KAAbD,GAAeE,0CAAAA,WAAqCD,KAAAA,SAApDA,GAAAhuC,KAAA+tC,IAAuDr+B,EAAAA;IAChE;IAEAy7B,iCAAiCpa,IAAU7nB,IAAAA;AACzC,YAAMglC,KAAcj0C,KAAK0E,SAASkN,cAAAA,GAC5BsiC,KAAgBD,GAAY7kC,qBAAqB0nB,EAAAA;AACvD,aAAOmd,GAAYjlC,mBAAmBklC,KAAgBjlC,EAAAA;IACxD;EAAA;AAGF67B,KAAYtuB,YAAY,qCAAA,GACxBsuB,GAAYtuB,YAAY,sDAAA,GACxBsuB,GAAYtuB,YAAY,uDAAA,GACxBsuB,GAAYtuB,YAAY,8CAAA,GACxBsuB,GAAYtuB,YAAY,2CAAA,GACxBsuB,GAAYtuB,YAAY,+BAAA;AC5xBT,MAAM23B,KAAN,cAA0B9mC,EAAAA;IACvCwB,YAAYu7B,IAAAA;AACVt7B,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKoqC,cAAcA,IACnBpqC,KAAKo0C,cAAc,CAAA,GACnBp0C,KAAKq0C,cAAc,CAAA;IACrB;IAEAC,gBAAgBC,IAAAA;AAA+C,UAAA,EAAlC1lB,SAAEA,IAAO2lB,gBAAEA,GAAAA,IAAgBnvC,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AACzD,YAAMovC,KAAgBz0C,KAAKo0C,YAAYllC,MAAAA,EAAO,EAAG,CAAA;AAEjD,UAAA,CAAKslC,MAAAA,CAAmBE,GAA8BD,IAAeF,IAAa1lB,EAAAA,GAAU;AAC1F,cAAM8lB,KAAY30C,KAAK40C,YAAY,EAAEL,aAAAA,IAAa1lB,SAAAA,GAAAA,CAAAA;AAClD7uB,aAAKo0C,YAAYzqC,KAAKgrC,EAAAA,GACtB30C,KAAKq0C,cAAc,CAAA;MACrB;IACF;IAEA3xC,OAAAA;AACE,YAAMiyC,KAAY30C,KAAKo0C,YAAYl0B,IAAAA;AACnC,UAAIy0B,IAAW;AACb,cAAME,KAAY70C,KAAK40C,YAAYD,EAAAA;AAEnC,eADA30C,KAAKq0C,YAAY1qC,KAAKkrC,EAAAA,GACf70C,KAAKoqC,YAAYiB,aAAasJ,GAAUG,QAAAA;MACjD;IACF;IAEAvyC,OAAAA;AACE,YAAMsyC,KAAY70C,KAAKq0C,YAAYn0B,IAAAA;AACnC,UAAI20B,IAAW;AACb,cAAMF,KAAY30C,KAAK40C,YAAYC,EAAAA;AAEnC,eADA70C,KAAKo0C,YAAYzqC,KAAKgrC,EAAAA,GACf30C,KAAKoqC,YAAYiB,aAAawJ,GAAUC,QAAAA;MACjD;IACF;IAEAC,UAAAA;AACE,aAAO/0C,KAAKo0C,YAAY9uC,SAAS;IACnC;IAEA0vC,UAAAA;AACE,aAAOh1C,KAAKq0C,YAAY/uC,SAAS;IACnC;IAIAsvC,cAAAA;AAA2C,UAAA,EAA/BL,aAAEA,IAAW1lB,SAAEA,GAAAA,IAASxpB,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AACrC,aAAO,EACLkvC,aAAaA,QAAAA,KAAAA,SAAAA,GAAa/lC,SAAAA,GAC1BqgB,SAASzd,KAAKO,UAAUkd,EAAAA,GACxBimB,UAAU90C,KAAKoqC,YAAYgB,YAAAA,EAAAA;IAE/B;EAAA;AAGF,MAAMsJ,KAAgCA,CAACO,IAAOV,IAAa1lB,QACzDomB,QAAAA,KAAAA,SAAAA,GAAOV,kBAAgBA,QAAAA,KAAAA,SAAAA,GAAa/lC,SAAAA,OAAcymC,QAAAA,KAAAA,SAAAA,GAAOpmB,aAAYzd,KAAKO,UAAUkd,EAAAA;AADtF,MCzDMqmB,KAAuB;AAId,MAAMC,KAAN,MAAMA;IACnBtmC,YAAYimC,IAAAA;AACV90C,WAAK0E,WAAWowC,GAASpwC,UACzB1E,KAAKqqC,gBAAgByK,GAASzK;IAChC;IAEAluB,UAAAA;AAEE,aADAnc,KAAKyvC,qBAAAA,GACEzvC,KAAKo1C,oBAAAA;IACd;IAEAhK,cAAAA;AACE,aAAO,EAAE1mC,UAAU1E,KAAK0E,UAAU2lC,eAAerqC,KAAKqqC,cAAAA;IACxD;IAIAoF,uBAAAA;AACE,aAAOzvC,KAAKq1C,mBAAAA,EAAqB9kC,IAAKkF,CAAAA,OAAUzV,KAAK0E,WAAW1E,KAAK0E,SAAS21B,uBAAuB6a,IAAsBz/B,EAAAA,CAAAA;IAC7H;IAEA2/B,sBAAAA;AACE,UAAInmC,KAAS;AAEbjP,WAAKs1C,mBAAAA,EAAqBrsC,QAASwM,CAAAA,OAAAA;AAC7BA,QAAAA,GAAM,CAAA,IAAKA,GAAM,CAAA,IAAK,MACxBA,GAAM,CAAA,KAAMxG,IACZwG,GAAM,CAAA,KAAMxG,IAE2C,SAAnDjP,KAAK0E,SAASq+B,uBAAuBttB,GAAM,CAAA,CAAA,MAC7CzV,KAAK0E,WAAW1E,KAAK0E,SAASk9B,wBAAwBnsB,GAAM,CAAA,CAAA,GACxDA,GAAM,CAAA,IAAKzV,KAAKqqC,cAAc,CAAA,KAChCrqC,KAAKu1C,yBAAAA,GAEP9/B,GAAM,CAAA,KACNxG,OAGe,MAAbwG,GAAM,CAAA,KACmD,SAAvDzV,KAAK0E,SAASq+B,uBAAuBttB,GAAM,CAAA,IAAK,CAAA,MAClDzV,KAAK0E,WAAW1E,KAAK0E,SAASk9B,wBAAwBnsB,GAAM,CAAA,CAAA,GACxDA,GAAM,CAAA,IAAKzV,KAAKqqC,cAAc,CAAA,KAChCrqC,KAAKu1C,yBAAAA,GAEP9/B,GAAM,CAAA,KACNxG,OAIJjP,KAAK0E,WAAW1E,KAAK0E,SAASm9B,2BAA2BqT,IAAAA,MAA4Bz/B,EAAAA;MACvF,CAAA;IAEJ;IAEA4/B,qBAAAA;AACE,aAAOr1C,KAAK0E,SAASs/B,4BAA4BkR,EAAAA;IACnD;IAEAI,qBAAAA;AACE,aAAOt1C,KAAK0E,SAASw/B,2BA9DG,gBA8D6C,EAAEC,WA7D9C,UAAA,CAAA;IA8D3B;IAEAoR,2BAAAA;AACEv1C,WAAKqqC,cAAc,CAAA,KAAM,GACzBrqC,KAAKqqC,cAAc,CAAA,KAAM;IAC3B;EAAA;ACnEK,MAAMmL,KAA0B,SAASV,IAAAA;AAC9C,UAAM59B,KAAS,IAAIi+B,GAAOL,EAAAA;AAE1B,WADA59B,GAAOiF,QAAAA,GACAjF,GAAOk0B,YAAAA;EAChB;AAJO,MCGDqK,KAAkB,CAAED,EAAAA;AAEX,MAAME,KAAN,MAAMA;IACnB7mC,YAAYu7B,IAAapzB,IAAkBlX,IAAAA;AACzCE,WAAK6sC,cAAc7sC,KAAK6sC,YAAYl2B,KAAK3W,IAAAA,GACzCA,KAAKoqC,cAAcA,IACnBpqC,KAAKgX,mBAAmBA,IACxBhX,KAAKF,UAAUA,IACfE,KAAK21C,cAAc,IAAIxB,GAAYn0C,KAAKoqC,WAAAA,GACxCpqC,KAAK41C,UAAUH,GAAgBvmC,MAAM,CAAA;IACvC;IAEA2mC,aAAanxC,IAAAA;AACX,aAAO1E,KAAKqrC,aAAa,EAAE3mC,UAAAA,IAAU2lC,eAAe,CAAE,GAAG,CAAA,EAAA,CAAA;IAC3D;IAEAyL,WAAAA;AAAoB,UAAXrxC,KAAIY,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG;AACd,YAAMX,KAAWkgC,GAAW7lC,MAAM0F,IAAM,EAAEogC,kBAAkB7kC,KAAKF,QAAAA,CAAAA,EAAWklC,YAAAA;AAC5E,aAAOhlC,KAAK61C,aAAanxC,EAAAA;IAC3B;IAEAqxC,SAAQ7rB,IAAAA;AAA8B,UAAA,EAA7BxlB,UAAEA,IAAQ2lC,eAAEA,GAAAA,IAAengB;AAElC,aADAxlB,KAAWg6B,GAASvtB,SAASzM,EAAAA,GACtB1E,KAAKqrC,aAAa,EAAE3mC,UAAAA,IAAU2lC,eAAAA,GAAAA,CAAAA;IACvC;IAEAgB,aAAayJ,IAAAA;AAEX,aADA90C,KAAK21C,cAAc,IAAIxB,GAAYn0C,KAAKoqC,WAAAA,GACjCpqC,KAAKoqC,YAAYiB,aAAayJ,EAAAA;IACvC;IAEA9P,cAAAA;AACE,aAAOhlC,KAAKoqC,YAAY1lC;IAC1B;IAEAwqC,sBAAAA;AACE,aAAOlvC,KAAKoqC,YAAY8E,oBAAAA;IAC1B;IAEA9D,cAAAA;AACE,aAAOprC,KAAKoqC,YAAYgB,YAAAA;IAC1B;IAEA37B,SAAAA;AACE,aAAOzP,KAAKorC,YAAAA;IACd;IAIAmC,kBAAkB9P,IAAAA;AAChB,aAAOz9B,KAAKoqC,YAAYmD,kBAAkB9P,EAAAA;IAC5C;IAEAyP,iBAAiBvgC,IAAAA;AACf,aAAO3M,KAAKoqC,YAAY8C,iBAAiBvgC,EAAAA;IAC3C;IAEAsgC,kBAAkB5uC,IAAAA;AAChB,aAAO2B,KAAKoqC,YAAY6C,kBAAkB5uC,EAAAA;IAC5C;IAEA2tC,eAAetnC,IAAAA;AACb,aAAO1E,KAAKoqC,YAAY4B,eAAetnC,EAAAA;IACzC;IAEAkoC,WAAWjuC,IAAAA;AACT,aAAOqB,KAAKoqC,YAAYwC,WAAWjuC,EAAAA;IACrC;IAEAkuC,YAAYxhC,IAAAA;AACV,aAAOrL,KAAKoqC,YAAYyC,YAAYxhC,EAAAA;IACtC;IAEAohC,WAAWhoC,IAAAA;AACT,aAAOzE,KAAKoqC,YAAYqC,WAAWhoC,EAAAA;IACrC;IAEAwnC,aAAa37B,IAAAA;AACX,aAAOtQ,KAAKoqC,YAAY6B,aAAa37B,EAAAA;IACvC;IAEAs7B,WAAWpsC,IAAAA;AACT,aAAOQ,KAAKoqC,YAAYwB,WAAWpsC,EAAAA;IACrC;IAEA4sC,kBAAAA;AACE,aAAOpsC,KAAKoqC,YAAYgC,gBAAAA;IAC1B;IAIA9B,mBAAAA;AACE,aAAOtqC,KAAKoqC,YAAYE,iBAAAA;IAC1B;IAEAiE,cAAAA;AACE,aAAOvuC,KAAKoqC,YAAYmE,YAAAA;IAC1B;IAEAyH,wBAAwBlf,IAAAA;AACtB,YAAMyN,KAAgBvkC,KAAKglC,YAAAA,EAAcrE,uBAAuB,CAAE7J,IAAUA,KAAW,CAAA,CAAA;AACvF,aAAO92B,KAAKgX,iBAAiBi/B,6BAA6B1R,EAAAA;IAC5D;IAEA+M,2BAA2B7T,IAAAA;AACzB,aAAOz9B,KAAKoqC,YAAYkH,2BAA2B7T,EAAAA;IACrD;IAEA2T,sBAAsB3T,IAAAA;AACpB,aAAOz9B,KAAKoqC,YAAYgH,sBAAsB3T,EAAAA;IAChD;IAEAgR,iBAAiBpE,IAAAA;AACf,aAAOrqC,KAAKoqC,YAAYqE,iBAAiBpE,EAAAA;IAC3C;IAIA6L,kBAAkBz3C,IAAAA;AAAoB,UAAd+F,KAAAA,EAAKa,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,MAAAA,UAAA,CAAA;AAC3B,aAAOrF,KAAKoqC,YAAY0E,oBAAoBrwC,IAAM+F,EAAAA;IACpD;IAEA2xC,kBAAkB13C,IAAAA;AAChB,aAAOuB,KAAKoqC,YAAYwE,oBAAoBnwC,EAAAA;IAC9C;IAEA23C,qBAAqB33C,IAAAA;AACnB,aAAOuB,KAAKoqC,YAAY2E,uBAAuBtwC,EAAAA;IACjD;IAEA43C,oBAAoB53C,IAAAA;AAClB,aAAOuB,KAAKoqC,YAAYgE,uBAAuB3vC,EAAAA;IACjD;IAGA6wC,0BAA0BxY,IAAUr4B,IAAM+F,IAAAA;AACxCxE,WAAKoqC,YAAYkF,0BAA0BxY,IAAUr4B,IAAM+F,EAAAA;IAC7D;IAIAorC,0BAAAA;AACE,aAAO5vC,KAAKoqC,YAAYwF,wBAAAA;IAC1B;IAEAE,0BAAAA;AACE,aAAO9vC,KAAKoqC,YAAY0F,wBAAAA;IAC1B;IAEA9S,uBAAAA;AACE,UAAIh9B,KAAK4vC,wBAAAA,EACP,QAAO5vC,KAAKoqC,YAAYpN,qBAAAA;IAE5B;IAEAC,uBAAAA;AACE,UAAIj9B,KAAK8vC,wBAAAA,EACP,QAAO9vC,KAAKoqC,YAAYnN,qBAAAA;IAE5B;IAIA+X,UAAAA;AACE,aAAOh1C,KAAK21C,YAAYX,QAAAA;IAC1B;IAEAD,UAAAA;AACE,aAAO/0C,KAAK21C,YAAYZ,QAAAA;IAC1B;IAEAT,gBAAgBC,IAAAA;AAA+C,UAAA,EAAlC1lB,SAAEA,IAAO2lB,gBAAEA,GAAAA,IAAgBnvC,UAAAC,SAAAD,KAAAA,WAAAA,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,CAAA;AACzD,aAAOrF,KAAK21C,YAAYrB,gBAAgBC,IAAa,EAAE1lB,SAAAA,IAAS2lB,gBAAAA,GAAAA,CAAAA;IAClE;IAEAjyC,OAAAA;AACE,UAAIvC,KAAKg1C,QAAAA,EACP,QAAOh1C,KAAK21C,YAAYpzC,KAAAA;IAE5B;IAEAG,OAAAA;AACE,UAAI1C,KAAK+0C,QAAAA,EACP,QAAO/0C,KAAK21C,YAAYjzC,KAAAA;IAE5B;EAAA;AC5Ka,MAAM4zC,KAAN,MAAMA;IACnBznC,YAAY/O,IAAAA;AACVE,WAAKF,UAAUA;IACjB;IAEAy2C,mCAAmCC,IAAWvnC,IAAAA;AAAuC,UAAA,EAA/BjF,QAAEA,GAAAA,IAAQ3E,UAAAC,SAAA,KAAA,WAAAD,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,EAAE2E,QAAAA,KAAQ,GACvE5C,KAAa,GACbqvC,KAAAA;AACJ,YAAMrS,KAAW,EAAEpyB,OAAO,GAAG/C,QAAQ,EAAA,GAC/BynC,KAAoB12C,KAAK22C,mCAAmCH,EAAAA;AAE9DE,MAAAA,OACFF,KAAYE,GAAkB32C,YAC9BkP,KAAS/H,EAAqBwvC,EAAAA;AAGhC,YAAMjtB,KAAShiB,EAASzH,KAAKF,SAAS,EAAE8H,aAAagvC,GAAAA,CAAAA;AAErD,aAAOntB,GAAOE,SAAAA,KAAY;AACxB,cAAMjjB,KAAO+iB,GAAOG;AAEpB,YAAIljB,OAAS8vC,MAAansC,EAAemsC,EAAAA,GAAY;AAC9CpsC,YAAmB1D,EAAAA,MACtB09B,GAASn1B,UAAUA;AAErB;QACF;AACE,YAAIvI,GAAK3G,eAAey2C,IAAAA;AACtB,cAAIpvC,SAAiB6H,GACnB;QAAA,WAEG,CAAKhI,EAAoBuvC,IAAW9vC,EAAAA,KACrCU,KAAa,EACf;AAIA2C,UAAiBrD,IAAM,EAAEsD,QAAAA,GAAAA,CAAAA,KACvBysC,MACFrS,GAASpyB,SAEXoyB,GAASn1B,SAAS,GAClBwnC,KAAAA,QAEArS,GAASn1B,UAAU4nC,GAAWnwC,EAAAA;MAGpC;AAEA,aAAO09B;IACT;IAEA0S,mCAAmC1S,IAAAA;AACjC,UAAIoS,IAAWvnC;AACf,UAAuB,MAAnBm1B,GAASpyB,SAAmC,MAApBoyB,GAASn1B,QAAc;AAIjD,aAHAunC,KAAYx2C,KAAKF,SACjBmP,KAAS,GAEFunC,GAAU1sC,aAEf,KADA0sC,KAAYA,GAAU1sC,YAClBF,EAAqB4sC,EAAAA,GAAY;AACnCvnC,UAAAA,KAAS;AACT;QACF;AAGF,eAAO,CAAEunC,IAAWvnC,EAAAA;MACtB;AAEA,UAAA,CAAMvI,IAAMqwC,EAAAA,IAAe/2C,KAAKg3C,8BAA8B5S,EAAAA;AAC9D,UAAK19B,IAAL;AAEA,YAAI2D,EAAe3D,EAAAA,EACQ,OAArBmwC,GAAWnwC,EAAAA,KACb8vC,KAAY9vC,GAAK3G,WAAWA,YAC5BkP,KAAS/H,EAAqBR,GAAK3G,UAAAA,GAC/BqK,EAAmB1D,IAAM,EAAEjI,MAAM,QAAA,CAAA,KACnCwQ,SAGFunC,KAAY9vC,IACZuI,KAASm1B,GAASn1B,SAAS8nC;aAExB;AAGL,cAFAP,KAAY9vC,GAAK3G,YAAAA,CAEZgK,EAAiBrD,GAAKW,eAAAA,KAAAA,CACpBuC,EAAqB4sC,EAAAA,EACxB,QAAO9vC,OAAS8vC,GAAUllB,cACxB5qB,KAAO8vC,IACPA,KAAYA,GAAUz2C,YAAAA,CAClB6J,EAAqB4sC,EAAAA,KAAAA;AAO/BvnC,UAAAA,KAAS/H,EAAqBR,EAAAA,GACN,MAApB09B,GAASn1B,UACXA;QAEJ;AAEA,eAAO,CAAEunC,IAAWvnC,EAAAA;MAlCT;IAmCb;IAEA+nC,8BAA8B5S,IAAAA;AAC5B,UAAI19B,IAAMqwC,IACN9nC,KAAS;AAEb,iBAAW2a,MAAe5pB,KAAKi3C,4BAA4B7S,GAASpyB,KAAAA,GAAQ;AAC1E,cAAM1M,KAASuxC,GAAWjtB,EAAAA;AAE1B,YAAIwa,GAASn1B,UAAUA,KAAS3J,GAC9B,KAAI+E,EAAeuf,EAAAA,GAAAA;AAGjB,cAFAljB,KAAOkjB,IACPmtB,KAAa9nC,IACTm1B,GAASn1B,WAAW8nC,MAAc3sC,EAAmB1D,EAAAA,EACvD;QAAA,MAEQA,CAAAA,OACVA,KAAOkjB,IACPmtB,KAAa9nC;AAKjB,YADAA,MAAU3J,IACN2J,KAASm1B,GAASn1B,OACpB;MAEJ;AAEA,aAAO,CAAEvI,IAAMqwC,EAAAA;IACjB;IAIAJ,mCAAmCjwC,IAAAA;AACjC,aAAOA,MAAQA,OAAS1G,KAAKF,WAAS;AACpC,YAAIyK,EAAwB7D,EAAAA,EAC1B,QAAOA;AAETA,QAAAA,KAAOA,GAAK3G;MACd;IACF;IAEAk3C,4BAA4BjlC,IAAAA;AAC1B,YAAM6K,KAAQ,CAAA,GACR4M,KAAShiB,EAASzH,KAAKF,SAAS,EAAE8H,aAAasvC,GAAAA,CAAAA;AACrD,UAAIC,KAAAA;AAEJ,aAAO1tB,GAAOE,SAAAA,KAAY;AACxB,cAAMjjB,KAAO+iB,GAAOG;AAElB,YAAI8Z;AADN,YAAI75B,EAAwBnD,EAAAA,GAAAA;AAQ1B,cANkB,QAAdg9B,KACFA,OAEAA,KAAa,GAGXA,OAAe1xB,GACjBmlC,CAAAA,KAAAA;mBACSA,GACT;QAAA,MAEOA,CAAAA,MACTt6B,GAAMlT,KAAKjD,EAAAA;MAEf;AAEA,aAAOmW;IACT;EAAA;AAGF,MAAMg6B,KAAa,SAASnwC,IAAAA;AAC1B,QAAIA,GAAKD,aAAaG,KAAK6D,WAAW;AACpC,UAAIL,EAAmB1D,EAAAA,EACrB,QAAO;AAGP,aADeA,GAAK0C,YACN9D;IAElB;AAAO,WAAsB,SAAlBxG,EAAQ4H,EAAAA,KAAkB6D,EAAwB7D,EAAAA,IACpD,IAEA;EAEX;AAbA,MAeMwwC,KAAyB,SAASxwC,IAAAA;AACtC,WAAI0wC,GAAqB1wC,EAAAA,MAAUqB,WAAWihC,gBACrC4N,GAAyBlwC,EAAAA,IAEzBqB,WAAWghC;EAEtB;AArBA,MAuBMqO,KAAuB,SAAS1wC,IAAAA;AACpC,WAAI8D,EAAoB9D,EAAAA,IACfqB,WAAWghC,gBAEXhhC,WAAWihC;EAEtB;AA7BA,MA+BM4N,KAA2B,SAASlwC,IAAAA;AACxC,WAAI6D,EAAwB7D,GAAK3G,UAAAA,IACxBgI,WAAWghC,gBAEXhhC,WAAWihC;EAEtB;ACjOe,MAAMqO,KAAN,MAAMA;IACnBC,wBAAuBptB,IAAAA;AAAW,UAC5BpS,IAAAA,EADkB2H,GAAEA,IAACyD,GAAEA,GAAAA,IAAGgH;AAE9B,UAAIxlB,SAAS6yC,wBAAwB;AACnC,cAAA,EAAMC,YAAEA,IAAUvoC,QAAEA,GAAAA,IAAWvK,SAAS6yC,uBAAuB93B,IAAGyD,EAAAA;AAGlE,eAFApL,KAAWpT,SAAS+yC,YAAAA,GACpB3/B,GAAS4/B,SAASF,IAAYvoC,EAAAA,GACvB6I;MACT;AAAO,UAAIpT,SAASizC,oBAClB,QAAOjzC,SAASizC,oBAAoBl4B,IAAGyD,EAAAA;AAClC,UAAIxe,SAAS6G,KAAKqsC,iBAAiB;AACxC,cAAMC,KAAmBjgC,GAAAA;AACzB,YAAA;AAGE,gBAAM0pB,KAAY58B,SAAS6G,KAAKqsC,gBAAAA;AAChCtW,UAAAA,GAAUwW,YAAYr4B,IAAGyD,EAAAA,GACzBoe,GAAUyW,OAAAA;QACZ,SAASjlC,IAAAA;QAAQ;AAGjB,eAFAgF,KAAWF,GAAAA,GACXK,GAAY4/B,EAAAA,GACL//B;MACT;IACF;IAEAkgC,0BAA0BlgC,IAAAA;AACxB,YAAMjH,KAAQhB,MAAMC,KAAKgI,GAASmgC,eAAAA,CAAAA;AAIlC,aAAO,CAHOpnC,GAAM,CAAA,GACRA,GAAMA,GAAMvL,SAAS,CAAA,CAAA;IAGnC;EAAA;ACjBa,MAAM4yC,KAAN,cAA+B7qC,EAAAA;IAC5CwB,YAAY/O,IAAAA;AACVgP,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKm4C,eAAen4C,KAAKm4C,aAAaxhC,KAAK3W,IAAAA,GAC3CA,KAAKqX,qBAAqBrX,KAAKqX,mBAAmBV,KAAK3W,IAAAA,GACvDA,KAAKF,UAAUA,IACfE,KAAKo4C,iBAAiB,IAAI9B,GAAet2C,KAAKF,OAAAA,GAC9CE,KAAKq4C,cAAc,IAAIhB,MACvBr3C,KAAKs4C,YAAY,GACjBzzC,EAAY,aAAa,EAAEE,WAAW/E,KAAKF,SAASmF,cAAcjF,KAAKm4C,aAAAA,CAAAA;IACzE;IAEAxL,mBAAAA;AAA+B,UAAdpkC,KAAOlD,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACzB,aAAA,UAAIkD,GAAQyB,SACHhK,KAAKixC,gCAAgCr5B,GAAAA,CAAAA,IACnCrP,GAAQ6nC,aACVpwC,KAAKu4C,uBACHv4C,KAAKw4C,sBACPx4C,KAAKw4C,sBAELx4C,KAAKu4C;IAEhB;IAEA3H,iBAAiBrM,IAAAA;AACf,UAAIvkC,KAAKw4C,oBAAqB;AAC9BjU,MAAAA,KAAgB/uB,GAAe+uB,EAAAA;AAE/B,YAAMzsB,KAAW9X,KAAKy4C,gCAAgClU,EAAAA;AAClDzsB,MAAAA,OACFG,GAAYH,EAAAA,GACZ9X,KAAK04C,2BAA2BnU,EAAAA;IAEpC;IAEAoU,+BAA+BC,IAAAA;AAC7BA,MAAAA,KAAapjC,GAAeojC,EAAAA;AAC5B,YAAM/Y,KAAgB7/B,KAAK64C,mBAAmBD,GAAW,CAAA,CAAA,GACnDnW,KAAcziC,KAAK64C,mBAAmBD,GAAW,CAAA,CAAA;AACvD54C,WAAK4wC,iBAAiB,CAAE/Q,IAAe4C,EAAAA,CAAAA;IACzC;IAEAwT,6BAA6B1R,IAAAA;AAC3B,YAAMzsB,KAAW9X,KAAKy4C,gCAAgClU,EAAAA;AACtD,UAAIzsB,GACF,QAAO9X,KAAKg4C,0BAA0BlgC,EAAAA,EAAU,CAAA;IAEpD;IAEAg6B,uBAAuB1N,IAAAA;AACrB,YAAM19B,KAAOmJ,MAAMC,KAAK9P,KAAKg3C,8BAA8B5S,EAAAA,CAAAA,EAAW,CAAA;AACtE,aAAOh6B,EAAmB1D,EAAAA;IAC5B;IAEAoyC,OAAAA;AAC2B,WAArB94C,KAAKs4C,gBACPt4C,KAAK04C,2BAAAA,GACL14C,KAAKw4C,sBAAsBx4C,KAAK2sC,iBAAAA;IAEpC;IAEAoM,SAAAA;AACE,UAAyB,KAAA,EAAnB/4C,KAAKs4C,WAAiB;AAC1B,cAAA,EAAME,qBAAEA,GAAAA,IAAwBx4C;AAEhC,YADAA,KAAKw4C,sBAAsB,MACA,QAAvBA,GACF,QAAOx4C,KAAK4wC,iBAAiB4H,EAAAA;MAEjC;IACF;IAEAQ,iBAAAA;AAAiB,UAAAnhC;AACf,aAAwB,UAAxBA,KAAOL,GAAAA,MAAAA,WAAiBK,KAAAA,SAAjBA,GAAmBK,gBAAAA;IAC5B;IAEAw1B,uBAAAA;AAAuB,UAAAuL;AACrB,aAAA,UAAoBA,UAAbA,KAAArhC,GAAAA,MAAAA,WAAaqhC,KAAAA,SAAbA,GAAeC;IACxB;IAEAC,sBAAAA;AACE,aAAA,CAAQn5C,KAAK0tC,qBAAAA;IACf;IAEAuD,gCAAgCn5B,IAAUvP,IAAAA;AACxC,UAAgB,QAAZuP,MAAAA,CAAqB9X,KAAKo5C,sBAAsBthC,EAAAA,EAAW;AAE/D,YAAMjC,KAAQ7V,KAAKu2C,mCAAmCz+B,GAASO,gBAAgBP,GAAS0rB,aAAaj7B,EAAAA;AACrG,UAAA,CAAKsN,GAAO;AAEZ,YAAMC,KAAMgC,GAASohC,YAAAA,SAEjBl5C,KAAKu2C,mCAAmCz+B,GAASQ,cAAcR,GAAS2rB,WAAWl7B,EAAAA;AAEvF,aAAOiN,GAAe,CAAEK,IAAOC,EAAAA,CAAAA;IACjC;IAEAqiC,eAAAA;AACE,aAAOn4C,KAAKq5C,iBAAAA;IACd;IAEAA,mBAAAA;AACE,UAAIC;AACJt5C,WAAKu5C,SAAAA;AAEL,YAAMC,KAASA,MAAAA;AAQb,YAPAx5C,KAAKu5C,SAAAA,OACLE,aAAaC,EAAAA,GAEb7pC,MAAMC,KAAKwpC,EAAAA,EAAgBrwC,QAASvD,CAAAA,OAAAA;AAClCA,UAAAA,GAAQE,QAAAA;QAAS,CAAA,GAGfqB,EAAoBvC,UAAU1E,KAAKF,OAAAA,EACrC,QAAOE,KAAKqX,mBAAAA;MACd,GAGIqiC,KAAgBrkC,WAAWmkC,IAAQ,GAAA;AAEzCF,MAAAA,KAAiB,CAAE,aAAa,SAAA,EAAY/oC,IAAKzL,CAAAA,OAC/CD,EAAYC,IAAW,EAAEC,WAAWL,UAAUO,cAAcu0C,GAAAA,CAAAA,CAAAA;IAEhE;IAEAniC,qBAAAA;AACE,UAAA,CAAKrX,KAAKu5C,UAAAA,CAAWxyC,EAAqB/G,KAAKF,OAAAA,EAC7C,QAAOE,KAAK04C,2BAAAA;IAEhB;IAEAA,2BAA2BnU,IAAAA;AAEwC,UAAAtQ,IAAA0lB;AADjE,WAAqB,QAAjBpV,KAAwBA,KAAgBA,KAAgBvkC,KAAKixC,gCAAgCr5B,GAAAA,CAAAA,MAAAA,CAC1F5B,GAAeuuB,IAAevkC,KAAKu4C,oBAAAA,EAEtC,QADAv4C,KAAKu4C,uBAAuBhU,IACR,UAApBtQ,KAAOj0B,KAAKm0B,aAAAA,WAAQF,MAAwB0lB,UAAxBA,KAAb1lB,GAAe2lB,2BAAAA,WAAsBD,KAAAA,SAArCA,GAAA5zC,KAAAkuB,IAAwCj0B,KAAKu4C,qBAAqBrpC,MAAM,CAAA,CAAA;IAGrF;IAEAupC,gCAAgClU,IAAAA;AAC9B,YAAMsV,KAAa75C,KAAK82C,mCAAmCvS,GAAc,CAAA,CAAA,GACnEuV,KAAWlkC,GAAiB2uB,EAAAA,IAC9BsV,KACA75C,KAAK82C,mCAAmCvS,GAAc,CAAA,CAAA,KAAOsV;AAEjE,UAAkB,QAAdA,MAAkC,QAAZC,IAAkB;AAC1C,cAAMhiC,KAAWpT,SAAS+yC,YAAAA;AAG1B,eAFA3/B,GAAS4/B,SAAAA,GAAY7nC,MAAMC,KAAK+pC,MAAc,CAAA,CAAA,CAAA,GAC9C/hC,GAASiiC,OAAAA,GAAUlqC,MAAMC,KAAKgqC,MAAY,CAAA,CAAA,CAAA,GACnChiC;MACT;IACF;IAEA+gC,mBAAmBmB,IAAAA;AACjB,YAAMliC,KAAW9X,KAAKs3C,wBAAwB0C,EAAAA;AAChC,UAAAC;AAAd,UAAIniC,GACF,QAAqD,UAArDmiC,KAAOj6C,KAAKixC,gCAAgCn5B,EAAAA,MAAAA,WAASmiC,KAAAA,SAA9CA,GAAiD,CAAA;IAE5D;IAEAb,sBAAsBthC,IAAAA;AACpB,aAAIA,GAASohC,YACJjyC,EAAoBjH,KAAKF,SAASgY,GAASO,cAAAA,IAGhDpR,EAAoBjH,KAAKF,SAASgY,GAASO,cAAAA,KAC3CpR,EAAoBjH,KAAKF,SAASgY,GAASQ,YAAAA;IAGjD;EAAA;AAGF4/B,KAAiB17B,YAAY,mDAAA,GAC7B07B,GAAiB17B,YAAY,mDAAA,GAC7B07B,GAAiB17B,YAAY,8CAAA,GAC7B07B,GAAiB17B,YAAY,qCAAA,GAC7B07B,GAAiB17B,YAAY,uCAAA;AAAA,MAAA,KAAA,OAAA,OAAA,EAAA,WAAA,MAAA,YAAA,IAAA,mBAAA,IAAA,iBAAA,IAAA,OAAA,IAAA,aAAA,IAAA,UAAA,IAAA,QAAA,IAAA,YAAA,IAAA,eAAA,IAAA,oBAAA,IAAA,gBAAA,IAAA,mBAAA,IAAA,OAAA,IAAA,aAAA,IAAA,kBAAA,IAAA,gBAAA,IAAA,aAAA,IAAA,MAAA,IAAA,aAAA,GAAA,CAAA;AAAA,MAAA,KAAA,OAAA,OAAA,EAAA,WAAA,MAAA,YAAA,IAAA,gBAAA,IAAA,WAAA,IAAA,cAAA,IAAA,WAAA,IAAA,2BAAA,IAAA,UAAA,GAAA,CAAA;AC9L7B,MAAA,EAAMpZ,MAAEA,IAAIwnB,KAAEA,IAAKsvB,UAAAA,GAAAA,IAAavmC;AAAhC,MAEMwmC,KAAW,SAAS/kC,IAAAA;AACxB,WAAO,WAAA;AACL,YAAMglC,KAAWhlC,GAAGrH,MAAM/N,MAAMqF,SAAAA;AAChC+0C,MAAAA,GAASC,GAAAA,GACJr6C,KAAKs6C,UACRt6C,KAAKs6C,QAAQ,CAAA,IAEft6C,KAAKs6C,MAAM3wC,KAAKywC,GAAS13C,IAAAA;IAAAA;EAE7B;AAEe,MAAM63C,KAAN,cAAyCltC,EAAAA;IACtDwB,YAAYkc,IAAiBjrB,IAAS02C,IAAAA;AAAyB,UAAdjuC,KAAOlD,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACzDyJ,YAAAA,GAASzJ,SAAAA,GAkDXwtB,GAAA7yB,MAAA,sBAEqBm6C,GAAS,OACrB,EACLE,IAAIA,MAAAA;AACFr6C,aAAKF,QAAQgJ,QAAQijB,cAAAA;MAAkB,GAEzCrpB,MAAMA,MAAAA,OAAa1C,KAAKF,QAAQgJ,QAAQijB,YAAAA,EAAAA,CAAAA,GAE1C8G,GAAA7yB,MAAA,cAEWm6C,GAAS,MAAA;AAQpB,cAAMr6C,KAAUuI,EAAY,EAC1BvJ,SAAS,OACTiK,WAAW6hB,GAAIzd,mBACftE,MAAM,EAAEkjB,aAAAA,KAAa,GACrB1iB,YAAYhB,EAAY,EACtBvJ,SAAS,OACTiK,WAAW,mBACXM,YAAYhB,EAAY,EACtBvJ,SAAS,QACTiK,WAAW,gDACXM,YAAYhB,EAAY,EACtBvJ,SAAS,UACTiK,WAAW,mCACXK,aAAahG,GAAKZ,QAClB5D,YAAY,EAAE47C,OAAOp3C,GAAKZ,OAAAA,GAC1BqG,MAAM,EAAE4xC,YAAY,SAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;AA+C5B,eAzCIz6C,KAAK2M,WAAWuiB,cAAAA,KAOlBpvB,GAAQyJ,YACNlB,EAAY,EACVvJ,SAAS,OACTiK,WAAW6hB,GAAI7d,6BACf1D,YAAYhB,EAAY,EACtBvJ,SAAS,QACTiK,WAAW6hB,GAAI9d,oBACfzD,YAAY,CACVhB,EAAY,EACVvJ,SAAS,QACTiK,WAAW6hB,GAAI5d,gBACf5D,aAAapJ,KAAK2M,WAAW0f,YAAAA,GAC7BztB,YAAY,EAAE47C,OAAOx6C,KAAK2M,WAAW0f,YAAAA,EAAAA,EAAAA,CAAAA,GAEvChkB,EAAY,EACVvJ,SAAS,QACTiK,WAAW6hB,GAAI1d,gBACf9D,aAAapJ,KAAK2M,WAAW2f,qBAAAA,EAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,GAQzCznB,EAAY,SAAS,EAAEE,WAAWjF,IAASmF,cAAcjF,KAAK06C,gBAAAA,CAAAA,GAC9D71C,EAAY,SAAS,EACnBE,WAAWjF,IACXkF,kBAAkB,sBAClBC,cAAcjF,KAAK26C,qBAAAA,CAAAA,GAGrBz0C,EAAa,kCAAkC,EAAEnB,WAAW/E,KAAKF,SAASlB,YAAY,EAAE4N,SAAS1M,IAAS6M,YAAY3M,KAAK2M,WAAAA,EAAAA,CAAAA,GAEpH,EACL0tC,IAAIA,MAAMr6C,KAAKF,QAAQyJ,YAAYzJ,EAAAA,GACnC4C,MAAMA,MAAM4E,EAAWxH,EAAAA,EAAAA;MACxB,CAAA,CAAA,GACD+yB,GAAA7yB,MAAA,wBAEqBm6C,GAAS,MAAA;AAC9B,cAAMS,KAAWvyC,EAAY,EAC3BvJ,SAAS,YACTiK,WAAW6hB,GAAI/d,yBACfjO,YAAY,EAAEi8C,aAAaz3C,GAAKnB,mBAAAA,GAChC4G,MAAM,EAAEkjB,aAAAA,KAAa,EAAA,CAAA;AAEvB6uB,QAAAA,GAASp2C,QAAQxE,KAAK+qB,gBAAgBmB,WAAAA;AAEtC,cAAM4uB,KAAgBF,GAAS79B,UAAAA;AAC/B+9B,QAAAA,GAAc5xC,UAAUC,IAAI,uBAAA,GAC5B2xC,GAAcC,WAAAA;AAEd,cAAMC,KAAa,WAAA;AACjBF,UAAAA,GAAct2C,QAAQo2C,GAASp2C,OAC/Bo2C,GAAShyC,MAAM0lB,SAASwsB,GAAcG,eAAe;QAAA;AAGvDp2C,UAAY,SAAS,EAAEE,WAAW61C,IAAU31C,cAAc+1C,GAAAA,CAAAA,GAC1Dn2C,EAAY,SAAS,EAAEE,WAAW61C,IAAU31C,cAAcjF,KAAKk7C,gBAAAA,CAAAA,GAC/Dr2C,EAAY,WAAW,EAAEE,WAAW61C,IAAU31C,cAAcjF,KAAKm7C,kBAAAA,CAAAA,GACjEt2C,EAAY,UAAU,EAAEE,WAAW61C,IAAU31C,cAAcjF,KAAKo7C,iBAAAA,CAAAA,GAChEv2C,EAAY,QAAQ,EAAEE,WAAW61C,IAAU31C,cAAcjF,KAAKq7C,eAAAA,CAAAA;AAE9D,cAAMpvB,KAAajsB,KAAKF,QAAQ0U,cAAc,YAAA,GACxC8mC,KAAoBrvB,GAAWlP,UAAAA;AAErC,eAAO,EACLs9B,IAAIA,MAAAA;AAOF,cANApuB,GAAWrjB,MAAM28B,UAAU,QAC3B+V,GAAkB/xC,YAAYqxC,EAAAA,GAC9BU,GAAkB/xC,YAAYuxC,EAAAA,GAC9BQ,GAAkBpyC,UAAUC,IAAG,GAAA1F,OAAImnB,GAAIhe,mBAAiB,WAAA,CAAA,GACxDqf,GAAW0a,cAActyB,aAAainC,IAAmBrvB,EAAAA,GACzD+uB,GAAAA,GACIh7C,KAAKuI,QAAQgzC,YACf,QAAOpmC,GAAM,MAAMylC,GAASY,MAAAA,CAAAA;QAC9B,GAEF94C,OAAAA;AACE4E,YAAWg0C,EAAAA,GACXrvB,GAAWrjB,MAAM28B,UAAU;QAC7B,EAAA;MACD,CAAA,CAAA,GAnLDvlC,KAAK06C,kBAAkB16C,KAAK06C,gBAAgB/jC,KAAK3W,IAAAA,GACjDA,KAAK26C,uBAAuB36C,KAAK26C,qBAAqBhkC,KAAK3W,IAAAA,GAC3DA,KAAKm7C,oBAAoBn7C,KAAKm7C,kBAAkBxkC,KAAK3W,IAAAA,GACrDA,KAAKk7C,kBAAkBl7C,KAAKk7C,gBAAgBvkC,KAAK3W,IAAAA,GACjDA,KAAKo7C,mBAAmBp7C,KAAKo7C,iBAAiBzkC,KAAK3W,IAAAA,GACnDA,KAAKq7C,iBAAiBr7C,KAAKq7C,eAAe1kC,KAAK3W,IAAAA,GAC/CA,KAAK+qB,kBAAkBA,IACvB/qB,KAAKF,UAAUA,IACfE,KAAKw2C,YAAYA,IACjBx2C,KAAKuI,UAAUA,IACfvI,KAAK2M,aAAa3M,KAAK+qB,gBAAgBpe,YACT,QAA1B7N,EAAQkB,KAAKF,OAAAA,MACfE,KAAKF,UAAUE,KAAKF,QAAQgK,aAE9B9J,KAAKy7C,QAAAA;IACP;IAEAA,UAAAA;AACEz7C,WAAK07C,mBAAAA,GACL17C,KAAK27C,WAAAA,GACD37C,KAAK2M,WAAWuiB,cAAAA,KAClBlvB,KAAK47C,qBAAAA;IAET;IAEAC,YAAAA;AAAY,UAAA5nB;AACV,UAAIvxB,KAAO1C,KAAKs6C,MAAMp6B,IAAAA;AAEtB,WADAlgB,KAAK87C,mBAAAA,GACEp5C,KACLA,CAAAA,GAAAA,GACAA,KAAO1C,KAAKs6C,MAAMp6B,IAAAA;AAEP+T,gBAAbA,KAAAj0B,KAAKm0B,aAAAA,WAAQF,MAAbA,GAAe8nB,6BAA6B/7C,IAAAA;IAC9C;IAIA87C,qBAAAA;AACE,UAA2B,QAAvB97C,KAAKg8C,gBAAwB;AAC/B,cAAMx9C,KAAUwB,KAAKg8C;AAER,YAAA7mB,IAAAC,IAENmW,IAAA0Q;AAFP,YADAj8C,KAAKg8C,iBAAiB,MAClBx9C,GAAAA,WACF22B,KAAAA,KAAKhB,aAAAA,WAAQgB,MAA2D,UAA3DC,KAAbD,GAAe+mB,8DAAAA,WAAyD9mB,MAAxEA,GAAArvB,KAAAovB,IAA2E,EAAE32B,SAAAA,GAAAA,GAAWwB,KAAK2M,UAAAA;YAEhF,WAAb4+B,KAAIvrC,KAACm0B,aAAAA,WAAQoX,MAA0D,UAA1D0Q,KAAb1Q,GAAe4Q,6DAAAA,WAAwDF,MAAvEA,GAAAl2C,KAAAwlC,IAA0E,WAAWvrC,KAAK2M,UAAAA;MAE9F;IACF;IAyIA+tC,gBAAgB/0C,IAAAA;AAEd,aADAA,GAAMR,eAAAA,GACCQ,GAAMy2C,gBAAAA;IACf;IAEAzB,qBAAqBh1C,IAAAA;AAAO,UAAAmnC;AAE1B,UACO,aAFQnnC,GAAME,OAAOwG,aAAa,kBAAA,EAGrC,QAAoBygC,UAApBA,KAAO9sC,KAAKm0B,aAAAA,WAAQ2Y,KAAAA,SAAbA,GAAeuP,8CAA8Cr8C,KAAK2M,UAAAA;IAE/E;IAEAwuC,kBAAkBx1C,IAAAA;AAC0B,UAAA8qC,IAAA6L;AAA1C,UAAgC,aAA5BpC,GAASv0C,GAAM42C,OAAAA,EAGjB,QAFA52C,GAAMR,eAAAA,GACNnF,KAAK87C,mBAAAA,GAAAA,UACLrL,KAAOzwC,KAAKm0B,aAAAA,WAAQsc,MAAiD6L,UAAjDA,KAAb7L,GAAe+L,oDAAAA,WAA+CF,KAAAA,SAA9DA,GAAAv2C,KAAA0qC,IAAiEzwC,KAAK2M,UAAAA;IAEjF;IAEAuuC,gBAAgBv1C,IAAAA;AACd3F,WAAKg8C,iBAAiBr2C,GAAME,OAAOrB,MAAMN,QAAQ,OAAO,GAAA,EAAK+O,KAAAA;IAC/D;IAEAmoC,iBAAiBz1C,IAAAA;AACf,aAAO3F,KAAK87C,mBAAAA;IACd;IAEAT,eAAe11C,IAAAA;AACb,aAAO3F,KAAK87C,mBAAAA;IACd;EAAA;ACtOa,MAAMW,KAAN,cAAoCpvC,EAAAA;IACjDwB,YAAY/O,IAASsqC,IAAAA;AACnBt7B,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK08C,WAAW18C,KAAK08C,SAAS/lC,KAAK3W,IAAAA,GACnCA,KAAK28C,UAAU38C,KAAK28C,QAAQhmC,KAAK3W,IAAAA,GACjCA,KAAK48C,qBAAqB58C,KAAK48C,mBAAmBjmC,KAAK3W,IAAAA,GAEvDA,KAAKF,UAAUA,IACfE,KAAKoqC,cAAcA,IACnBpqC,KAAK68C,eAAe,IAAIlsB,GAAa3wB,KAAKoqC,YAAY1lC,UAAU,EAAE5E,SAASE,KAAKF,QAAAA,CAAAA,GAEhF+E,EAAY,SAAS,EAAEE,WAAW/E,KAAKF,SAASmF,cAAcjF,KAAK08C,SAAAA,CAAAA,GACnE73C,EAAY,QAAQ,EAAEE,WAAW/E,KAAKF,SAASmF,cAAcjF,KAAK28C,QAAAA,CAAAA,GAClE93C,EAAY,SAAS,EACnBE,WAAW/E,KAAKF,SAChBkF,kBAAkB,4BAClBG,gBAAAA,KAAgB,CAAA,GAElBN,EAAY,aAAa,EACvBE,WAAW/E,KAAKF,SAChBkF,kBAAkB5G,GAClB6G,cAAcjF,KAAK48C,mBAAAA,CAAAA,GAErB/3C,EAAY,SAAS,EAAEE,WAAW/E,KAAKF,SAASkF,kBAAgBvB,IAAAA,OAAMrF,CAAAA,GAAsB+G,gBAAAA,KAAgB,CAAA;IAC9G;IAEAu3C,SAAS/2C,IAAAA;AAAO,UAAAm3C;AACd,YAAM3gC,KAAUA,MAAAA;AACK,YAAA8X,IAAAgX;AAAnB,YAAA,CAAKjrC,KAAK+8C,QAER,QADA/8C,KAAK+8C,UAAAA,MACe9oB,UAApBA,KAAOj0B,KAAKm0B,aAAAA,WAAQF,MAAAA,UAAAgX,KAAbhX,GAAe+oB,kCAAAA,WAA6B/R,KAAAA,SAA5CA,GAAAllC,KAAAkuB,EAAAA;MACT;AAGF,cAAA,UAAO6oB,KAAA98C,KAAKi9C,gBAAAA,WAAWH,KAAAA,SAAhBA,GAAkBnnB,KAAKxZ,EAAAA,MAAYA,GAAAA;IAC5C;IAEAwgC,QAAQh3C,IAAAA;AACN3F,WAAKi9C,cAAc,IAAIjhC,QAASC,CAAAA,OACvB9G,GAAM,MAAA;AAC8B,YAAAggB,IAAAmW;AAApCvkC,UAAqB/G,KAAKF,OAAAA,MAC7BE,KAAK+8C,UAAU,MAAA,UACf5nB,KAAAA,KAAKhB,aAAAA,WAAQgB,MAA8B,UAA9BmW,KAAbnW,GAAe+nB,iCAAAA,WAA4B5R,MAA3CA,GAAAvlC,KAAAovB,EAAAA;AAGF,eADAn1B,KAAKi9C,cAAc,MACZhhC,GAAAA;MAAS,CAAA,CAAA;IAGtB;IAEA2gC,mBAAmBj3C,IAAOE,IAAAA;AAAQ,UAAA0lC,IAAAC;AAChC,YAAM7+B,KAAa3M,KAAKm9C,yBAAyBt3C,EAAAA,GAC3C01C,KAAAA,CAAAA,CAAgBz1C,EAA2BH,GAAME,QAAQ,EAAEb,kBAAkB,aAAA,CAAA;AACnF,aAAoBumC,UAApBA,KAAOvrC,KAAKm0B,aAAAA,WAAQoX,MAA0C,UAA1CC,KAAbD,GAAe6R,6CAAAA,WAAwC5R,KAAAA,SAAvDA,GAAAzlC,KAAAwlC,IAA0D5+B,IAAY,EAAE4uC,aAAAA,GAAAA,CAAAA;IACjF;IAEA8B,yBAAAA;AACE,aAAIr9C,KAAKs9C,oBAAAA,IACAt9C,KAAK68C,aAAa7rB,gBAElBhxB,KAAKF;IAEhB;IAEA8wB,SAAAA;AAAS,UAAA6hB,IAAAC,IAO0D5F,IAAAyQ,IAAA9M,IAAA+M;AAAAA,OAN7Dx9C,KAAKgrC,aAAahrC,KAAKoqC,YAAYY,aACrChrC,KAAK68C,aAAa9rB,YAAY/wB,KAAKoqC,YAAY1lC,QAAAA,GAC/C1E,KAAK68C,aAAajsB,OAAAA,GAClB5wB,KAAKgrC,WAAWhrC,KAAKoqC,YAAYY,WAG/BhrC,KAAKy9C,oBAAAA,KAAAA,CAA0Bz9C,KAAK68C,aAAa3rB,SAAAA,OAAAA,UACnD4b,KAAAA,KAAK3Y,aAAAA,WAAQ2Y,MAA2C,UAA3CyQ,KAAbzQ,GAAe4Q,8CAAAA,WAAyCH,MAAxDA,GAAAx3C,KAAA+mC,EAAAA,GACA9sC,KAAK68C,aAAahsB,KAAAA,GAAAA,UAClB4f,KAAAA,KAAKtc,aAAAA,WAAQsc,MAA0C,UAA1C+M,KAAb/M,GAAekN,6CAAAA,WAAwCH,MAAvDA,GAAAz3C,KAAA0qC,EAAAA;AAGF,aAAoBgC,UAApBA,KAAOzyC,KAAKm0B,aAAAA,WAAQse,MAAAA,UAAAC,KAAbD,GAAemL,mCAAAA,WAA8BlL,KAAAA,SAA7CA,GAAA3sC,KAAA0sC,EAAAA;IACT;IAEAoL,sBAAsBjwC,IAAAA;AAEpB,aADA5N,KAAKmd,wBAAwBvP,EAAAA,GACtB5N,KAAK4wB,OAAAA;IACd;IAEAzT,wBAAwBvP,IAAAA;AACtB,aAAO5N,KAAK68C,aAAa1/B,wBAAwBvP,EAAAA;IACnD;IAEAwQ,uBAAAA;AACE,aAAOpe,KAAK68C,aAAaz+B,qBAAAA;IAC3B;IAEAG,oBAAAA;AACE,aAAOve,KAAK68C,aAAat+B,kBAAAA;IAC3B;IAEAC,qBAAAA;AACE,aAAOxe,KAAK68C,aAAar+B,mBAAAA;IAC3B;IAEAs/B,mBAAAA;AACE,aAAO99C,KAAK68C,aAAal+B,0BAAAA;IAC3B;IAIA2+B,sBAAAA;AACE,aAAA,CAAA,CAASt9C,KAAK+9C;IAChB;IAEAC,qCAAqCrxC,IAAYpE,IAAAA;AAAS,UAAA01C;AACxD,WAAyB,UAArBA,KAAIj+C,KAAC+9C,qBAAAA,WAAgBE,KAAAA,SAArBA,GAAuBtxC,gBAAeA,GAAY;AACtD,YAAM7M,KAAUE,KAAK68C,aAAa3+B,qBAAqBvR,EAAAA;AACvD,UAAA,CAAK7M,GAAS;AAEdE,WAAKk+C,0BAAAA;AACL,YAAMnzB,KAAkB/qB,KAAKoqC,YAAY1lC,SAASq/B,gCAAgCp3B,EAAAA;AAClF3M,WAAK+9C,mBAAmB,IAAIxD,GAA2BxvB,IAAiBjrB,IAASE,KAAKF,SAASyI,EAAAA,GAC/FvI,KAAK+9C,iBAAiB5pB,WAAWn0B;IACnC;IAEAk+C,4BAAAA;AAA4B,UAAAC;AAC1B,aAA4B,UAA5BA,KAAOn+C,KAAK+9C,qBAAAA,WAAgBI,KAAAA,SAArBA,GAAuBtC,UAAAA;IAChC;IAIAE,+BAAAA;AAEE,aADA/7C,KAAK+9C,mBAAmB,MACjB/9C,KAAK4wB,OAAAA;IACd;IAEAsrB,0DAA0Dt9C,IAAY+N,IAAAA;AAAY,UAAAimC,IAAAC;AAEhF,aAAA,UADAD,KAAAA,KAAKze,aAAAA,WAAQye,MAA2CC,UAA3CA,KAAbD,GAAewL,8CAAAA,WAAyCvL,MAAxDA,GAAA9sC,KAAA6sC,IAA2DjmC,EAAAA,GACpD3M,KAAKoqC,YAAY7O,8BAA8B38B,IAAY+N,EAAAA;IACpE;IAEAwvC,yDAAyD9pB,IAAW1lB,IAAAA;AAAY,UAAAomC,IAAAC;AAE9E,aAAA,UADAD,KAAAA,KAAK5e,aAAAA,WAAQ4e,MAA2CC,UAA3CA,KAAbD,GAAeqL,8CAAAA,WAAyCpL,MAAxDA,GAAAjtC,KAAAgtC,IAA2DpmC,EAAAA,GACpD3M,KAAKoqC,YAAY3I,6BAA6BpP,IAAW1lB,EAAAA;IAClE;IAEA0vC,8CAA8C1vC,IAAAA;AAAY,UAAAumC,IAAAC;AACxD,aAAoBD,UAApBA,KAAOlzC,KAAKm0B,aAAAA,WAAQ+e,MAAoD,UAApDC,KAAbD,GAAemL,uDAAAA,WAAkDlL,KAAAA,SAAjEA,GAAAptC,KAAAmtC,IAAoEvmC,EAAAA;IAC7E;IAEA6vC,gDAAgD7vC,IAAAA;AAAY,UAAA0mC,IAAAC;AAC1D,aAAoBD,UAApBA,KAAOrzC,KAAKm0B,aAAAA,WAAQkf,MAAsD,UAAtDC,KAAbD,GAAeiL,yDAAAA,WAAoDhL,KAAAA,SAAnEA,GAAAvtC,KAAAstC,IAAsE1mC,EAAAA;IAC/E;IAIA8wC,sBAAAA;AACE,aAAA,CAAQz9C,KAAKs9C,oBAAAA;IACf;IAEAH,yBAAyBr9C,IAAAA;AACvB,aAAOE,KAAKoqC,YAAY1lC,SAAS02B,kBAAkBx6B,SAASd,GAAQgJ,QAAQmkB,QAAQ,EAAA,CAAA;IACtF;EAAA;ACnKa,MAAMsxB,KAAN,cAAyBlxC,EAAAA;EAAAA;ACQxC,MAAMmxC,KAAuB;AAA7B,MACMC,KAAe,IAAAh7C,OAAO+6C,IAAuB,GAAA;AADnD,MAGMj2C,KAAU,EACd3J,YAAAA,MACA8/C,WAAAA,MACAC,eAAAA,MACAC,uBAAAA,MACAC,SAAAA,KAAS;AAGI,MAAMC,KAAN,cAA+BzxC,EAAAA;IAC5CwB,YAAY/O,IAAAA;AACVgP,YAAMhP,EAAAA,GACNE,KAAK++C,YAAY/+C,KAAK++C,UAAUpoC,KAAK3W,IAAAA,GACrCA,KAAKF,UAAUA,IACfE,KAAKg/C,WAAW,IAAIjzC,OAAO+yC,iBAAiB9+C,KAAK++C,SAAAA,GACjD/+C,KAAK6V,MAAAA;IACP;IAEAA,QAAAA;AAEE,aADA7V,KAAKsX,MAAAA,GACEtX,KAAKg/C,SAASC,QAAQj/C,KAAKF,SAASyI,EAAAA;IAC7C;IAEAuO,OAAAA;AACE,aAAO9W,KAAKg/C,SAASE,WAAAA;IACvB;IAEAH,UAAUI,IAAAA;AAGmB,UAAAlrB,IAAAmrB;AAA3B,UAFAp/C,KAAKm/C,UAAUx1C,KAAAA,GAAQkG,MAAMC,KAAK9P,KAAKq/C,yBAAyBF,EAAAA,KAAc,CAAA,CAAA,CAAA,GAE1En/C,KAAKm/C,UAAU75C,OAEjB,QADa,UAAb2uB,KAAIj0B,KAACm0B,aAAAA,WAAQF,MAAkB,UAAlBmrB,KAAbnrB,GAAeqrB,qBAAAA,WAAgBF,MAA/BA,GAAAr5C,KAAAkuB,IAAkCj0B,KAAKu/C,mBAAAA,CAAAA,GAChCv/C,KAAKsX,MAAAA;IAEhB;IAIAA,QAAAA;AACEtX,WAAKm/C,YAAY,CAAA;IACnB;IAEAE,yBAAyBF,IAAAA;AACvB,aAAOA,GAAUjoC,OAAQsoC,CAAAA,OAChBx/C,KAAKy/C,sBAAsBD,EAAAA,CAAAA;IAEtC;IAEAC,sBAAsBD,IAAAA;AACpB,UAAIx/C,KAAK0/C,cAAcF,GAAS35C,MAAAA,EAC9B,QAAA;AAEF,iBAAWa,MAAQmJ,MAAMC,KAAK9P,KAAK2/C,wBAAwBH,EAAAA,CAAAA,EACzD,KAAIx/C,KAAK4/C,kBAAkBl5C,EAAAA,EAAO,QAAA;AAEpC,aAAA;IACF;IAEAk5C,kBAAkBl5C,IAAAA;AAChB,aAAOA,OAAS1G,KAAKF,WAAAA,CAAYE,KAAK0/C,cAAch5C,EAAAA,KAAAA,CAAU8D,EAAoB9D,EAAAA;IACpF;IAEAg5C,cAAch5C,IAAAA;AACZ,aAAOZ,EAA2BY,IAAM,EAAE1B,kBAAkBy5C,GAAAA,CAAAA;IAC9D;IAEAkB,wBAAwBH,IAAAA;AACtB,YAAM3iC,KAAQ,CAAA;AACd,cAAQ2iC,GAASx0C,MAAAA;QACf,KAAK;AACCw0C,UAAAA,GAAS9rC,kBAAkB8qC,MAC7B3hC,GAAMlT,KAAK61C,GAAS35C,MAAAA;AAEtB;QACF,KAAK;AAEHgX,UAAAA,GAAMlT,KAAK61C,GAAS35C,OAAO9F,UAAAA,GAC3B8c,GAAMlT,KAAK61C,GAAS35C,MAAAA;AACpB;QACF,KAAK;AAEHgX,UAAAA,GAAMlT,KAAAA,GAAQkG,MAAMC,KAAK0vC,GAASK,cAAc,CAAA,CAAA,CAAA,GAChDhjC,GAAMlT,KAAAA,GAAQkG,MAAMC,KAAK0vC,GAASM,gBAAgB,CAAA,CAAA,CAAA;MAAA;AAGtD,aAAOjjC;IACT;IAEA0iC,qBAAAA;AACE,aAAOv/C,KAAK+/C,uBAAAA;IACd;IAEAA,yBAAAA;AACE,YAAA,EAAMC,WAAEA,IAASC,WAAEA,GAAAA,IAAcjgD,KAAKkgD,gCAAAA,GAChCC,KAAcngD,KAAKogD,4BAAAA;AAEzBvwC,YAAMC,KAAKqwC,GAAYH,SAAAA,EAAW/2C,QAASo3C,CAAAA,OAAAA;AACpCxwC,cAAMC,KAAKkwC,EAAAA,EAAW/1C,SAASo2C,EAAAA,KAClCL,GAAUr2C,KAAK02C,EAAAA;MACjB,CAAA,GAGFJ,GAAUt2C,KAAAA,GAAQkG,MAAMC,KAAKqwC,GAAYF,aAAa,CAAA,CAAA,CAAA;AAEtD,YAAMK,KAAU,CAAA,GAEVpO,KAAQ8N,GAAUhvC,KAAK,EAAA;AACzBkhC,MAAAA,OACFoO,GAAQC,YAAYrO;AAGtB,YAAMsO,KAAUP,GAAUjvC,KAAK,EAAA;AAK/B,aAJIwvC,OACFF,GAAQG,cAAcD,KAGjBF;IACT;IAEAI,mBAAmB11C,IAAAA;AACjB,aAAO6E,MAAMC,KAAK9P,KAAKm/C,SAAAA,EAAWjoC,OAAQsoC,CAAAA,OAAaA,GAASx0C,SAASA,EAAAA;IAC3E;IAEAo1C,8BAAAA;AACE,UAAIG,IAAWI;AACf,YAAMd,KAAa,CAAA,GACbC,KAAe,CAAA;AAErBjwC,YAAMC,KAAK9P,KAAK0gD,mBAAmB,WAAA,CAAA,EAAcz3C,QAASu2C,CAAAA,OAAAA;AACxDK,QAAAA,GAAWl2C,KAAAA,GAAQkG,MAAMC,KAAK0vC,GAASK,cAAc,CAAA,CAAA,CAAA,GACrDC,GAAan2C,KAAAA,GAAQkG,MAAMC,KAAK0vC,GAASM,gBAAgB,CAAA,CAAA,CAAA;MAAI,CAAA;AAIvC,YAAtBD,GAAWv6C,UAAwC,MAAxBw6C,GAAax6C,UAAgBuE,EAAwBi2C,GAAa,CAAA,CAAA,KAG7FS,KAAY,CAAA,GACZI,KAAc,CAAE,IAAA,MAEhBJ,KAAYK,GAAgBf,EAAAA,GAC5Bc,KAAcC,GAAgBd,EAAAA;AAGhC,YAAME,KAAYO,GAAUrpC,OAAO,CAAC1X,IAAMwS,OAAUxS,OAASmhD,GAAY3uC,EAAAA,CAAAA,EAAQzB,IAAIiI,EAAAA,GAC/EynC,KAAYU,GAAYzpC,OAAO,CAAC1X,IAAMwS,OAAUxS,OAAS+gD,GAAUvuC,EAAAA,CAAAA,EAAQzB,IAAIiI,EAAAA;AAErF,aAAO,EAAEwnC,WAAAA,IAAWC,WAAAA,GAAAA;IACtB;IAEAC,kCAAAA;AACE,UAAIhO,IAAOC;AACX,YAAM0O,KAAqB7gD,KAAK0gD,mBAAmB,eAAA;AAEnD,UAAIG,GAAmBv7C,QAAQ;AAC7B,cAAMw7C,KAAgBD,GAAmB,CAAA,GACvCE,KAAcF,GAAmBA,GAAmBv7C,SAAS,CAAA,GAIzD07C,KxCxJyB,SAASC,IAAWC,IAAAA;AACvD,cAAIhP,IAAOC;AAUX,iBATA8O,KAAY5yC,EAAYC,IAAI2yC,EAAAA,IAC5BC,KAAY7yC,EAAYC,IAAI4yC,EAAAA,GAEd57C,SAAS27C,GAAU37C,SAAAA,CAC7B6sC,IAASD,EAAAA,IAAUt5B,GAAuBqoC,IAAWC,EAAAA,IAAAA,CAErDhP,IAAOC,EAAAA,IAAYv5B,GAAuBsoC,IAAWD,EAAAA,GAGlD,EAAE/O,OAAAA,IAAOC,SAAAA,GAAAA;QAClB,EwC0IwB35B,GAAgBsoC,GAAcK,QAAAA,GAC9B3oC,GAAgBuoC,GAAYl7C,OAAOgD,IAAAA,CAAAA;AAErDqpC,QAAAA,KAAQ8O,GAAW9O,OACnBC,KAAU6O,GAAW7O;MACvB;AAEA,aAAO,EACL6N,WAAW9N,KAAQ,CAAEA,EAAAA,IAAU,CAAA,GAC/B+N,WAAW9N,KAAU,CAAEA,EAAAA,IAAY,CAAA,EAAA;IAEvC;EAAA;AAGF,MAAMyO,KAAkB,WAAA;AAAqB,QAAZ/jC,KAAKxX,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACvC,UAAM7F,KAAO,CAAA;AACb,eAAWkH,MAAQmJ,MAAMC,KAAK+M,EAAAA,EAC5B,SAAQnW,GAAKD,UAAAA;MACX,KAAKG,KAAK6D;AACRjL,QAAAA,GAAKmK,KAAKjD,GAAKmC,IAAAA;AACf;MACF,KAAKjC,KAAKC;AACc,iBAAlB/H,EAAQ4H,EAAAA,IACVlH,GAAKmK,KAAK,IAAA,IAEVnK,GAAKmK,KAAAA,GAAQkG,MAAMC,KAAK8wC,GAAgBl6C,GAAK2C,UAAAA,KAAe,CAAA,CAAA,CAAA;IAAA;AAKpE,WAAO7J;EACT;ACrMe,MAAM4hD,KAAN,cAAwC9lC,GAAAA;IACrDzM,YAAYlQ,IAAAA;AACVmQ,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKrB,OAAOA;IACd;IAEAwd,QAAQpR,IAAAA;AACN,YAAMs2C,KAAS,IAAIC;AAYnB,aAVAD,GAAOluB,UAAU,MAAMpoB,GAAAA,KAAS,GAEhCs2C,GAAOruB,SAAS,MAAA;AACdquB,QAAAA,GAAOluB,UAAU;AACjB,YAAA;AACEkuB,UAAAA,GAAOE,MAAAA;QACT,SAASzuC,IAAAA;QAAQ;AACjB,eAAO/H,GAAAA,MAAe/K,KAAKrB,IAAAA;MAAK,GAG3B0iD,GAAOG,kBAAkBxhD,KAAKrB,IAAAA;IACvC;EAAA;ACnBa,MAAM8iD,KAAN,MAAMA;IACnB5yC,YAAY/O,IAAAA;AACVE,WAAKF,UAAUA;IACjB;IAEA4hD,aAAa/7C,IAAAA;AACX,aAAA,CAAA,CAAKgO,EAAe3S,mBAEpBhB,KAAK2hD,gBAAgB3hD,KAAK2F,OAC1B3F,KAAK2F,QAAQA,IAEb3F,KAAK4hD,mCAAAA,GACL5hD,KAAK6hD,iCAAAA,GAEE7hD,KAAK8hD;IACd;IAQAF,qCAAAA;AACM5hD,WAAK+hD,uCAAAA,KAA4CC,GAAoBhiD,KAAKF,QAAQmiD,WAAWjiD,KAAK2F,MAAMkD,IAAAA,MAC1G7I,KAAK8hD,YAAAA,MACL9hD,KAAK2F,MAAMR,eAAAA;IAEf;IAGA08C,mCAAAA;AACM7hD,WAAK8hD,aAAsC,iBAAzB9hD,KAAK2F,MAAMu8C,cAC/BliD,KAAK8hD,YAAAA;IAET;IAEAC,yCAAAA;AAAyC,UAAAI;AACvC,aAAOniD,KAAKoiD,wBAAAA,KAA6BpiD,KAAKqiD,oCAAAA,MAAwD,UAAfF,KAAIniD,KAAC2F,MAAMkD,SAAAA,WAAIs5C,KAAAA,SAAfA,GAAiB78C,UAAS;IACnH;IAEA88C,0BAAAA;AACE,aAA2B,kBAApBpiD,KAAK2F,MAAMqF,QAAmD,iBAAzBhL,KAAK2F,MAAMu8C;IACzD;IAEAG,sCAAAA;AAAsC,UAAAC,IAAAC;AACpC,aAAoC,eAAXD,UAAlBA,KAAAtiD,KAAK2hD,kBAAAA,WAAaW,KAAAA,SAAlBA,GAAoBt3C,SAAkD,oBAAV,UAAlBu3C,KAAIviD,KAAC2hD,kBAAAA,WAAaY,KAAAA,SAAlBA,GAAoBh+C;IACvE;EAAA;AAGF,MAAMy9C,KAAsBA,CAACQ,IAAOC,OAC3BC,GAAUF,EAAAA,MAAWE,GAAUD,EAAAA;AADxC,MAIME,KAA6B,IAAIv0C,OAAM3K,IAAAA,OhE1DD,UgE0DkC,GAAA,EAAAA,OAAIU,GAAgBV,GAAAA,EAAAA,OAAIW,GAAkB,QAAA,GAAU,GAAA;AAJlI,MAKMs+C,KAAaljD,CAAAA,OAASA,GAAK0E,QAAQy+C,IAA4B,GAAA,EAAK1vC,KAAAA;ACtD3D,MAAM2vC,KAAN,cAA8Bv1C,EAAAA;IAI3CwB,YAAY/O,IAAAA;AACVgP,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKF,UAAUA,IACfE,KAAK6iD,mBAAmB,IAAI/D,GAAiB9+C,KAAKF,OAAAA,GAClDE,KAAK6iD,iBAAiB1uB,WAAWn0B,MACjCA,KAAK8iD,wBAAwB,IAAIrB,GAA6BzhD,KAAKF,OAAAA;AACnE,iBAAWgF,MAAa9E,KAAK6O,YAAYk0C,OACvCl+C,GAAYC,IAAW,EAAEC,WAAW/E,KAAKF,SAASmF,cAAcjF,KAAKgjD,WAAWl+C,EAAAA,EAAAA,CAAAA;IAEpF;IAEAw6C,iBAAiB2D,IAAAA;IAAkB;IAEnCC,6BAAAA;AACE,aAAOljD,KAAK6iD,iBAAiB/rC,KAAAA;IAC/B;IAEAqsC,4BAAAA;AACE,aAAOnjD,KAAK6iD,iBAAiBhtC,MAAAA;IAC/B;IAEAutC,gBAAAA;AAAgB,UAAAnvB,IAAAovB;AACd,aAAoBpvB,UAApBA,KAAOj0B,KAAKm0B,aAAAA,WAAQF,MAAAA,UAAAovB,KAAbpvB,GAAeqvB,oCAAAA,WAA+BD,KAAAA,SAA9CA,GAAAt9C,KAAAkuB,EAAAA;IACT;IAEAsvB,iBAAAA;AAAiB,UAAApuB,IAAAquB;AAEf,aAAA,UADAruB,KAAAA,KAAKhB,aAAAA,WAAQgB,MAAkC,UAAlCquB,KAAbruB,GAAesuB,qCAAAA,WAAgCD,MAA/CA,GAAAz9C,KAAAovB,EAAAA,GACOn1B,KAAKojD,cAAAA;IACd;IAEAxhD,YAAYyJ,IAAAA;AACV,YAAMq4C,KAAa7zC,MAAMC,KAAKzE,EAAAA,EAAOkF,IAAK5R,CAAAA,OAAS,IAAIyiD,GAA0BziD,EAAAA,CAAAA;AACjF,aAAOqd,QAAQ2nC,IAAID,EAAAA,EAAY/tB,KAAMtqB,CAAAA,OAAAA;AACnCrL,aAAK4jD,YAAY,WAAA;AAAW,cAAArY,IAAAsY;AAG1B,iBAFa,UAAbtY,KAAIvrC,KAACm0B,aAAAA,WAAQoX,MAAbA,GAAeuY,+BAAAA,GACDD,UAAdA,KAAA7jD,KAAK+jD,cAAAA,WAASF,MAAdA,GAAgBhX,YAAYxhC,EAAAA,GACrBrL,KAAKojD,cAAAA;QACd,CAAA;MAAE,CAAA;IAEN;IAIAJ,WAAWl+C,IAAAA;AACT,aAAQa,CAAAA,OAAAA;AACDA,QAAAA,GAAMq+C,oBACThkD,KAAK4jD,YAAY,MAAA;AACf,cAAA,CAAK78C,EAAqB/G,KAAKF,OAAAA,GAAU;AACvC,gBAAIE,KAAK8iD,sBAAsBpB,aAAa/7C,EAAAA,EAAQ;AAEpD3F,iBAAK8E,YAAYA,IACjB9E,KAAK6O,YAAYk0C,OAAOj+C,EAAAA,EAAWiB,KAAK/F,MAAM2F,EAAAA;UAChD;QAAA,CAAA;MAEJ;IAEJ;IAEAi+C,YAAY74C,IAAAA;AACV,UAAA;AAAI,YAAA+hC;AACW,kBAAbA,KAAI9sC,KAACm0B,aAAAA,WAAQ2Y,MAAbA,GAAemX,+BAAAA,GACfl5C,GAAShF,KAAK/F,IAAAA;MAChB,UAAU;AAAA,YAAAywC;AACK,kBAAbA,KAAIzwC,KAACm0B,aAAAA,WAAQsc,MAAbA,GAAeyT,8BAAAA;MACjB;IACF;IAEAC,eAAeh4C,IAAM3M,IAAAA;AACnB,YAAM4C,KAAOsC,SAAS8D,cAAc,GAAA;AAGpC,aAFApG,GAAK+J,OAAOA,IACZ/J,GAAKgH,cAAc5J,MAAc2M,IAC1B/J,GAAKumB;IACd;EAAA;AAAA,MAAA;AACDkK,KA7EoB+vB,IAEH,UAAA,CAAA,CAAA;ACUlB,MAAA,EAAM/3C,SAAEA,IAAOqvC,UAAEA,GAAAA,IAAavmC;AAC9B,MAAIywC,KAAkB;AAEP,MAAMC,KAAN,cAAoCzB,GAAAA;IAmVjD/zC,cAAAA;AACEC,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKskD,kBAAAA;IACP;IAEAC,kBAAAA;AAA8B,UAAdjE,KAAOj7C,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AACxBrF,WAAKwkD,aAAa1/C,YAAY9E,KAAK8E;AACnC,iBAAWP,MAAO+7C,IAAS;AACzB,cAAM97C,KAAQ87C,GAAQ/7C,EAAAA;AACtBvE,aAAKwkD,aAAajgD,EAAAA,IAAOC;MAC3B;AACA,aAAOxE,KAAKwkD;IACd;IAEAF,oBAAAA;AACEtkD,WAAKwkD,eAAe,CAAA;IACtB;IAEAltC,QAAAA;AAEE,aADAtX,KAAKskD,kBAAAA,GACE/sC,GAAwBD,MAAAA;IACjC;IAIAgoC,iBAAiB2D,IAAAA;AACS,UAAAhvB,IAAAovB;AAAxB,aAAIrjD,KAAKykD,YAAAA,IACaxwB,UAApBA,KAAOj0B,KAAKm0B,aAAAA,WAAQF,MAAAA,UAAAovB,KAAbpvB,GAAeywB,0CAAAA,WAAqCrB,KAAAA,SAApDA,GAAAt9C,KAAAkuB,EAAAA,IAEAj0B,KAAK4jD,YAAY,WAAA;AAQtB,eAPI5jD,KAAKy/C,sBAAsBwD,EAAAA,MACzBjjD,KAAK2kD,mBAAmB1B,EAAAA,IAC1BjjD,KAAKojD,cAAAA,IAELpjD,KAAKujD,eAAAA,IAGFvjD,KAAKsX,MAAAA;MACd,CAAA;IAEJ;IAEAqtC,mBAAkBz6B,IAAAA;AAA6B,UAAA,EAA5Bq2B,WAAEA,IAASE,aAAEA,GAAAA,IAAav2B;AAC3C,UAAIlqB,KAAKwkD,aAAaI,eACpB,QAAA;AAGF,YAAMC,KACS,QAAbtE,KAAoBA,OAAcvgD,KAAKwkD,aAAajE,YAAAA,CAAavgD,KAAKwkD,aAAajE,WAC/EuE,KACW,QAAfrE,KAAsBzgD,KAAKwkD,aAAaO,YAAAA,CAAa/kD,KAAKwkD,aAAaO,WAEnEC,KAA4B,CAAE,MAAM,KAAA,EAAQ/6C,SAASs2C,EAAAA,KAAAA,CAAesE,IACpEI,KAA4C,SAAhBxE,MAAAA,CAAyBqE;AAK3D,UAHEE,MAAAA,CAA8BC,MAC9BA,MAAAA,CAA8BD,IAEH;AAC3B,cAAMvvC,KAAQzV,KAAKsqC,iBAAAA;AACnB,YAAI70B,IAAO;AAAA,cAAAouC;AACT,gBAAM50C,KAAS+1C,KAA4BzE,GAAUr8C,QAAQ,OAAO,EAAA,EAAIoB,UAAAA,MAAei7C,QAAAA,KAAAA,SAAAA,GAAWj7C,WAAU;AAC5G,cAAkB,UAAlBu+C,KAAI7jD,KAAK+jD,cAAAA,WAASF,MAAdA,GAAgB9R,qBAAqBt8B,GAAM,CAAA,IAAKxG,EAAAA,EAClD,QAAA;QAEJ;MACF;AAEA,aAAO41C,MAAkCC;IAC3C;IAEArF,sBAAsBwD,IAAAA;AAAiB,UAAAiC;AACrC,YAAMC,KAAcvxC,OAAOC,KAAKovC,EAAAA,EAAiB39C,SAAS,GACpD8/C,KAA8D,QAAnB,UAArBF,KAAAllD,KAAKqlD,qBAAAA,WAAgBH,KAAAA,SAArBA,GAAuBI,WAAAA;AACnD,aAAOH,MAAAA,CAAgBC;IACzB;IAIAG,sBAAAA;AACE,UAAIvlD,KAAKykD,YAAAA,EACP,QAAOzkD,KAAKqlD;AAEZrlD,WAAKqlD,mBAAmB,IAAIG,GAAiBxlD,IAAAA;IAEjD;IAEAykD,cAAAA;AACE,aAAOzkD,KAAKqlD,oBAAAA,CAAqBrlD,KAAKqlD,iBAAiBI,QAAAA;IACzD;IAEAlY,kBAAkB9P,IAAW93B,IAAAA;AAAO,UAAA+/C;AAClC,aAAA,WAAqD,UAAjDA,KAAA1lD,KAAK+jD,cAAAA,WAAS2B,KAAAA,SAAdA,GAAgBnY,kBAAkB9P,EAAAA,KAM7Bz9B,KAAKukD,gBAAgB,EAAEQ,WAAAA,KAAW,CAAA,IALrCp/C,MACFA,GAAMR,eAAAA,GACCnF,KAAKojD,cAAAA,KAAAA;IAKlB;IAEAuC,iCAAiChxC,IAAAA;AAAc,UAAAixC;AAC7C,UAAA,CjD1bkC,SAASjxC,IAAAA;AAC7C,YAAKA,QAAAA,MAAAA,CAAAA,GAAckxC,QAAS,QAAA;AAE5B,mBAAWthD,MAAOkQ,IAAkB;AAClC,gBAAMjQ,KAAQiQ,GAAiBlQ,EAAAA;AAE/B,cAAA;AAEE,gBADAoQ,GAAakxC,QAAQthD,IAAKC,EAAAA,GAAAA,CACrBmQ,GAAaC,QAAQrQ,EAAAA,MAASC,GAAO,QAAA;UAC3C,SAAQsO,IAAAA;AACP,mBAAA;UACF;QACF;AACA,eAAA;MACF,EiD4agC6B,EAAAA,EAAe;AAC3C,YAAMjQ,KAAyBkhD,UAAjBA,KAAG5lD,KAAK+jD,cAAAA,WAAS6B,KAAAA,SAAdA,GAAgB1W,oBAAAA,EAAsBzK,uBAAAA;AAKvD,aAHA9vB,GAAakxC,QAAQ,+BAA+Bz0C,KAAKO,UAAUjN,EAAAA,CAAAA,GACnEiQ,GAAakxC,QAAQ,aAAal1B,GAAaC,OAAOlsB,EAAAA,EAAUkkB,SAAAA,GAChEjU,GAAakxC,QAAQ,cAAcnhD,GAAS8J,SAAAA,EAAWtK,QAAQ,OAAO,EAAA,CAAA,GAAA;IAExE;IAEA4hD,sBAAsBnxC,IAAAA;AACpB,YAAMod,KAAQ,CAAA;AAId,aAHAliB,MAAMC,MAAK6E,QAAAA,KAAAA,SAAAA,GAAcod,UAAS,CAAA,CAAA,EAAI9oB,QAAS+B,CAAAA,OAAAA;AAC7C+mB,QAAAA,GAAM/mB,EAAAA,IAAAA;MAAY,CAAA,GAEb+mB,GAAMg0B,SAASh0B,GAAM,6BAAA,KAAkCA,GAAM,WAAA,KAAgBA,GAAM,YAAA;IAC5F;IAEAi0B,gCAAgCj7C,IAAAA;AAC9B,YAAMs/B,KAAgBrqC,KAAKsqC,iBAAAA,GAErB1hC,KAAQ,EACZkuB,UAAU,YACVvgB,MAAAA,GAAI9S,OAAKsI,OAAOk6C,aAAe,IAAA,GAC/Bxd,KAAAA,GAAGhlC,OAAKsI,OAAOm6C,aAAe,IAAA,GAC9BC,SAAS,EAAA,GAGLrmD,KAAUuI,EAAY,EAAEO,OAAAA,IAAO9J,SAAS,OAAO2J,UAAAA,KAAU,CAAA;AAI/D,aAHA/D,SAAS6G,KAAKhC,YAAYzJ,EAAAA,GAC1BA,GAAQ07C,MAAAA,GAED4K,sBAAsB,MAAA;AAC3B,cAAM3hD,KAAO3E,GAAQ8oB;AAGrB,eAFAthB,EAAWxH,EAAAA,GACXE,KAAKyuC,iBAAiBpE,EAAAA,GACft/B,GAAStG,EAAAA;MAAK,CAAA;IAEzB;EAAA;AACDouB,KAheoBwxB,IAEH,UAAA,EACdgC,QAAQ1gD,IAAAA;AACD3F,SAAKykD,YAAAA,KACRzkD,KAAKskD,kBAAAA,GAEPtkD,KAAKwkD,aAAa8B,WAAAA;AAElB,UAAMC,KAAUrM,GAASv0C,GAAM42C,OAAAA;AAC/B,QAAIgK,IAAS;AAAA,UAAAC;AACX,UAAI33B,KAAU7uB,KAAK6T;AAElB,OAAE,QAAQ,OAAO,SAAS,MAAA,EAAS5K,QAASw9C,CAAAA,OAAAA;AACd,YAAAC;AAAzB/gD,QAAAA,GAAKlC,GAAAA,OAAIgjD,IAAAA,KAAAA,CAAAA,MACM,WAAbA,OACFA,KAAW,YAEb53B,KAAiB,UAAV63B,KAAG73B,OAAAA,WAAO63B,KAAAA,SAAPA,GAAUD,EAAAA;MACtB,CAAA,GAGwB,SAAfD,UAAPA,KAAA33B,OAAAA,WAAO23B,KAAAA,SAAPA,GAAUD,EAAAA,OACZvmD,KAAKukD,gBAAgB,EAAEgC,SAAAA,GAAAA,CAAAA,GACvBhvC,GAAwBD,MAAAA,GACxBuX,GAAQ03B,EAAAA,EAASxgD,KAAK/F,MAAM2F,EAAAA;IAEhC;AAEA,QAAIoP,GAA0BpP,EAAAA,GAAQ;AACpC,YAAMghD,KAAYv2C,OAAOW,aAAapL,GAAM42C,OAAAA,EAASj8C,YAAAA;AACrD,UAAIqmD,IAAW;AAAA,YAAApb;AACb,cAAM13B,KAAO,CAAE,OAAO,OAAA,EAAUtD,IAAKk2C,CAAAA,OAAAA;AACnC,cAAI9gD,GAAKlC,GAAAA,OAAIgjD,IAAAA,KAAAA,CAAAA,EACX,QAAOA;QACT,CAAA,EACCvvC,OAAO3S,CAAAA,OAAOA,EAAAA;AACjBsP,QAAAA,GAAKlK,KAAKg9C,EAAAA,GACOpb,UAAjBA,KAAIvrC,KAAKm0B,aAAAA,WAAQoX,MAAbA,GAAeqb,yCAAyC/yC,EAAAA,KAC1DlO,GAAMR,eAAAA;MAEV;IACF;EACD,GAED0hD,SAASlhD,IAAAA;AACP,QAAmC,QAA/B3F,KAAKwkD,aAAa1/C,UAAmB;AACzC,QAAIa,GAAMsP,QAAS;AACnB,QAAItP,GAAMuP,WAAAA,CAAYvP,GAAMmhD,OAAQ;AAEpC,UAAMx2C,KAASy2C,GAAmBphD,EAAAA;AACtB,QAAAmnC,IAAAka;AAAZ,WAAI12C,MACW,UAAbw8B,KAAI9sC,KAACm0B,aAAAA,WAAQ2Y,MAAbA,GAAema,iCAAAA,GACDD,UAAdA,KAAAhnD,KAAK+jD,cAAAA,WAASiD,MAAdA,GAAgB/a,aAAa37B,EAAAA,GACtBtQ,KAAKukD,gBAAgB,EAAEhE,WAAWjwC,IAAQy0C,WAAW/kD,KAAKm5C,oBAAAA,EAAAA,CAAAA,KAAAA;EAEpE,GAED+N,UAAUvhD,IAAAA;AAER,UAAA,EAAMkD,MAAEA,GAAAA,IAASlD,IAAAA,EACX46C,WAAEA,GAAAA,IAAcvgD,KAAKwkD;AAC3B,QAAIjE,MAAaA,OAAc13C,MAAQ03C,GAAU4G,YAAAA,MAAkBt+C,IAAM;AAAA,UAAAu+C;AACvE,YAAM3xC,KAAQzV,KAAKsqC,iBAAAA;AAInB,aAHAtqC,KAAKyuC,iBAAiB,CAAEh5B,GAAM,CAAA,GAAIA,GAAM,CAAA,IAAK8qC,GAAUj7C,MAAAA,CAAAA,GACzC8hD,UAAdA,KAAApnD,KAAK+jD,cAAAA,WAASqD,MAAdA,GAAgBnb,aAAapjC,EAAAA,GAC7B7I,KAAKukD,gBAAgB,EAAEhE,WAAW13C,GAAAA,CAAAA,GAC3B7I,KAAKyuC,iBAAiBh5B,EAAAA;IAC/B;EACD,GAED4xC,UAAU1hD,IAAAA;AACRA,IAAAA,GAAMR,eAAAA;EACP,GAEDmiD,UAAU3hD,IAAAA;AAAO,QAAA8qC,IAAA8W;AAGf,WAFAvnD,KAAK2lD,iCAAiChgD,GAAMgP,YAAAA,GAC5C3U,KAAKwnD,eAAexnD,KAAKsqC,iBAAAA,GACLmG,UAApBA,KAAOzwC,KAAKm0B,aAAAA,WAAQsc,MAAAA,UAAA8W,KAAb9W,GAAegX,gCAAAA,WAA2BF,KAAAA,SAA1CA,GAAAxhD,KAAA0qC,EAAAA;EACR,GAEDiX,SAAS/hD,IAAAA;AACP,QAAI3F,KAAKwnD,gBAAgBxnD,KAAK8lD,sBAAsBngD,GAAMgP,YAAAA,GAAe;AACvEhP,MAAAA,GAAMR,eAAAA;AACN,YAAMwiD,KAAgB,EAAEloC,GAAG9Z,GAAMiiD,SAAS1kC,GAAGvd,GAAMkiD,QAAAA;AACM,UAAApV,IAAAqV;AAAzD,UAAA,CAAKvyC,GAAgBoyC,IAAe3nD,KAAK2nD,aAAAA,EAEvC,QADA3nD,KAAK2nD,gBAAgBA,IAAAA,UACrBlV,KAAOzyC,KAAKm0B,aAAAA,WAAQse,MAAwCqV,UAAxCA,KAAbrV,GAAesV,2CAAAA,WAAsCD,KAAAA,SAArDA,GAAA/hD,KAAA0sC,IAAwDzyC,KAAK2nD,aAAAA;IAExE;EACD,GAEDK,QAAQriD,IAAAA;AAAO,QAAAitC,IAAAqV;AAAAA,cACbrV,KAAAA,KAAKze,aAAAA,WAAQye,MAA8B,UAA9BqV,KAAbrV,GAAesV,iCAAAA,WAA4BD,MAA3CA,GAAAliD,KAAA6sC,EAAAA,GACA5yC,KAAKwnD,eAAe,MACpBxnD,KAAK2nD,gBAAgB;EACtB,GAEDQ,KAAKxiD,IAAAA;AAAO,QAAAyiD,IAAAC;AACV1iD,IAAAA,GAAMR,eAAAA;AACN,UAAMkG,KAA0B,UAArB+8C,KAAGziD,GAAMgP,iBAAAA,WAAYyzC,KAAAA,SAAlBA,GAAoB/8C,OAC5BszB,KAAeh5B,GAAMgP,aAAaC,QAAQ,6BAAA,GAE1ColC,KAAQ,EAAEv6B,GAAG9Z,GAAMiiD,SAAS1kC,GAAGvd,GAAMkiD,QAAAA;AAG3C,QAFcQ,UAAdA,KAAAroD,KAAK+jD,cAAAA,WAASsE,MAAdA,GAAgB1P,+BAA+BqB,EAAAA,GAE3C3uC,QAAAA,MAAAA,GAAO/F,OACTtF,MAAK4B,YAAYyJ,EAAAA;aACRrL,KAAKwnD,cAAc;AAAA,UAAAzU,IAAAuV;AACf,gBAAbvV,KAAI/yC,KAACm0B,aAAAA,WAAQ4e,MAAbA,GAAewV,4BAAAA,GAAAA,UACfD,KAAAtoD,KAAK+jD,cAAAA,WAASuE,MAAdA,GAAgBra,kBAAkBjuC,KAAKwnD,YAAAA,GACvCxnD,KAAKwnD,eAAe,MACpBxnD,KAAKojD,cAAAA;IACN,WAAUzkB,IAAc;AAAA,UAAA6pB;AACvB,YAAM9jD,KAAWg6B,GAAS+pB,eAAe9pB,EAAAA;AAC3B6pB,gBAAdA,KAAAxoD,KAAK+jD,cAAAA,WAASyE,MAAdA,GAAgBxc,eAAetnC,EAAAA,GAC/B1E,KAAKojD,cAAAA;IACP;AAEApjD,SAAKwnD,eAAe,MACpBxnD,KAAK2nD,gBAAgB;EACtB,GAEDe,IAAI/iD,IAAAA;AAAO,QAAAgjD,IACkCzV;AAA3C,QAAkB,UAAlByV,KAAI3oD,KAAK+jD,cAAAA,WAAS4E,MAAdA,GAAgBxP,oBAAAA,MACdn5C,KAAK2lD,iCAAiChgD,GAAMijD,aAAAA,KAC9CjjD,GAAMR,eAAAA,GAGK,UAAb+tC,KAAIlzC,KAACm0B,aAAAA,WAAQ+e,MAAbA,GAAe2V,2BAAAA,GACf7oD,KAAKutC,kBAAkB,UAAA,GACnB5nC,GAAMq+C,kBACR,QAAOhkD,KAAKojD,cAAAA;EAGjB,GAEDzpC,KAAKhU,IAAAA;AAAO,QAAAmjD;AACQ,cAAlBA,KAAI9oD,KAAK+jD,cAAAA,WAAS+E,MAAdA,GAAgB3P,oBAAAA,KACdn5C,KAAK2lD,iCAAiChgD,GAAMijD,aAAAA,KAC9CjjD,GAAMR,eAAAA;EAGX,GAED4jD,MAAMpjD,IAAAA;AACJ,UAAMqjD,KAAYrjD,GAAMijD,iBAAiBjjD,GAAMsjD,mBACzCF,KAAQ,EAAEC,WAAAA,GAAAA;AAEhB,QAAA,CAAKA,MAAaE,GAAoCvjD,EAAAA,EASpD,QAAA,KARA3F,KAAKgmD,gCAAiCvhD,CAAAA,OAAAA;AAAS,UAAA4uC,IAAA8V,IAAA3V;AAM7C,aALAuV,GAAM/9C,OAAO,aACb+9C,GAAMtkD,OAAOA,IACA4uC,UAAbA,KAAArzC,KAAKm0B,aAAAA,WAAQkf,MAAbA,GAAe+V,yBAAyBL,EAAAA,GAAAA,UACxCI,KAAAnpD,KAAK+jD,cAAAA,WAASoF,MAAdA,GAAgB1c,WAAWsc,GAAMtkD,IAAAA,GACjCzE,KAAKojD,cAAAA,GACe,UAApB5P,KAAOxzC,KAAKm0B,aAAAA,WAAQqf,KAAAA,SAAbA,GAAe6V,wBAAwBN,EAAAA;IAAM,CAAA;AAKxD,UAAM58C,KAAO68C,GAAUp0C,QAAQ,KAAA,GACzBnQ,KAAOukD,GAAUp0C,QAAQ,WAAA,GACzBnW,KAAOuqD,GAAUp0C,QAAQ,iBAAA;AAE/B,QAAIzI,IAAM;AAAA,UAAAwnC,IAAA2V,IAAAxV;AACR,UAAIxjC;AACJy4C,MAAAA,GAAM/9C,OAAO,aAEXsF,KADE7R,KACOia,GAA0Bja,EAAAA,EAAMwU,KAAAA,IAEhC9G,IAEX48C,GAAMtkD,OAAOzE,KAAKmkD,eAAeh4C,IAAMmE,EAAAA,GAC1BqjC,UAAbA,KAAA3zC,KAAKm0B,aAAAA,WAAQwf,MAAbA,GAAeyV,yBAAyBL,EAAAA,GACxC/oD,KAAKukD,gBAAgB,EAAEhE,WAAWjwC,IAAQy0C,WAAW/kD,KAAKm5C,oBAAAA,EAAAA,CAAAA,GAAAA,UAC1DmQ,KAAAtpD,KAAK+jD,cAAAA,WAASuF,MAAdA,GAAgB7c,WAAWsc,GAAMtkD,IAAAA,GACjCzE,KAAKojD,cAAAA,GACQtP,UAAbA,KAAA9zC,KAAKm0B,aAAAA,WAAQ2f,MAAbA,GAAeuV,wBAAwBN,EAAAA;IACzC,WAAWr0C,GAAwBs0C,EAAAA,GAAY;AAAA,UAAAO,IAAAC,IAAAC;AAC7CV,MAAAA,GAAM/9C,OAAO,cACb+9C,GAAMz4C,SAAS04C,GAAUp0C,QAAQ,YAAA,GACpB20C,UAAbA,KAAAvpD,KAAKm0B,aAAAA,WAAQo1B,MAAbA,GAAeH,yBAAyBL,EAAAA,GACxC/oD,KAAKukD,gBAAgB,EAAEhE,WAAWwI,GAAMz4C,QAAQy0C,WAAW/kD,KAAKm5C,oBAAAA,EAAAA,CAAAA,GAAAA,UAChEqQ,KAAAxpD,KAAK+jD,cAAAA,WAASyF,MAAdA,GAAgBvd,aAAa8c,GAAMz4C,MAAAA,GACnCtQ,KAAKojD,cAAAA,GACQqG,UAAbA,KAAAzpD,KAAKm0B,aAAAA,WAAQs1B,MAAbA,GAAeJ,wBAAwBN,EAAAA;IACxC,WAAUtkD,IAAM;AAAA,UAAAilD,IAAAC,IAAAC;AACfb,MAAAA,GAAM/9C,OAAO,aACb+9C,GAAMtkD,OAAOA,IACAilD,UAAbA,KAAA1pD,KAAKm0B,aAAAA,WAAQu1B,MAAbA,GAAeN,yBAAyBL,EAAAA,GAAAA,UACxCY,KAAA3pD,KAAK+jD,cAAAA,WAAS4F,MAAdA,GAAgBld,WAAWsc,GAAMtkD,IAAAA,GACjCzE,KAAKojD,cAAAA,GACQwG,UAAbA,KAAA5pD,KAAKm0B,aAAAA,WAAQy1B,MAAbA,GAAeP,wBAAwBN,EAAAA;IACzC,WAAWl5C,MAAMC,KAAKk5C,GAAUj3B,KAAAA,EAAO9nB,SAAS,OAAA,GAAU;AAAA,UAAA4/C,IAAAC;AACxD,YAAMnrD,KAAsBkrD,UAAlBA,KAAGb,GAAUe,UAAAA,WAAKF,MAAKA,UAALA,KAAfA,GAAkB,CAAA,MAAA,WAAEA,MAAW,UAAXC,KAApBD,GAAsBG,cAAAA,WAASF,KAAAA,SAA/BA,GAAA/jD,KAAA8jD,EAAAA;AACb,UAAIlrD,IAAM;AAAA,YAAAsrD,IAAAC,IAAAC;AACR,cAAMv9B,KAAYw9B,GAAiBzrD,EAAAA;AAAAA,SAC9BA,GAAKF,QAAQmuB,OAChBjuB,GAAKF,OAAI,eAAAgF,OAAAA,EAAoB2gD,IAAe3gD,GAAAA,EAAAA,OAAImpB,EAAAA,IAElDm8B,GAAM/9C,OAAO,QACb+9C,GAAMpqD,OAAOA,IACA,UAAbsrD,KAAIjqD,KAACm0B,aAAAA,WAAQ81B,MAAbA,GAAenG,+BAAAA,GAAAA,UACfoG,KAAAlqD,KAAK+jD,cAAAA,WAASmG,MAAdA,GAAgBtd,WAAWmc,GAAMpqD,IAAAA,GACjCqB,KAAKojD,cAAAA,GACQ+G,UAAbA,KAAAnqD,KAAKm0B,aAAAA,WAAQg2B,MAAbA,GAAed,wBAAwBN,EAAAA;MACzC;IACF;AAEApjD,IAAAA,GAAMR,eAAAA;EACP,GAEDklD,iBAAiB1kD,IAAAA;AACf,WAAO3F,KAAKulD,oBAAAA,EAAsB1vC,MAAMlQ,GAAMkD,IAAAA;EAC/C,GAEDyhD,kBAAkB3kD,IAAAA;AAChB,WAAO3F,KAAKulD,oBAAAA,EAAsB7uC,OAAO/Q,GAAMkD,IAAAA;EAChD,GAED0hD,eAAe5kD,IAAAA;AACb,WAAO3F,KAAKulD,oBAAAA,EAAsBzvC,IAAInQ,GAAMkD,IAAAA;EAC7C,GAED2hD,YAAY7kD,IAAAA;AACV3F,SAAKwkD,aAAa8B,WAAAA;EACnB,GAED57C,MAAM/E,IAAAA;AAEJ,WADA3F,KAAKwkD,aAAa8B,WAAAA,MACX3gD,GAAMy2C,gBAAAA;EACf,EAAA,CAAA,GACDvpB,GAzOkBwxB,IA2OL,QAAA,EACZoG,UAAU9kD,IAAAA;AAAO,QAAA+kD;AAEf,WADa,UAAbA,KAAI1qD,KAACm0B,aAAAA,WAAQu2B,MAAbA,GAAezD,iCAAAA,GACRjnD,KAAKutC,kBAAkB,YAAY5nC,EAAAA;EAC3C,GAEDglD,OAAOhlD,IAAAA;AAAO,QAAAilD;AAEZ,WADa,UAAbA,KAAI5qD,KAACm0B,aAAAA,WAAQy2B,MAAbA,GAAe3D,iCAAAA,GACRjnD,KAAKutC,kBAAkB,WAAW5nC,EAAAA;EAC1C,GAEDklD,OAAOllD,IAAAA;AAAO,QAAAmlD,IAAAC;AAGZ,WAFA/qD,KAAKukD,gBAAgB,EAAEK,gBAAAA,KAAgB,CAAA,GAC1B,UAAbkG,KAAI9qD,KAACm0B,aAAAA,WAAQ22B,MAAbA,GAAe7D,iCAAAA,GACM,UAArB8D,KAAO/qD,KAAK+jD,cAAAA,WAASgH,KAAAA,SAAdA,GAAgB3e,gBAAAA;EACxB,GAED4e,IAAIrlD,IAAAA;AAAO,QAAAslD,IACsCC;AAA7B,cAAlBD,KAAIjrD,KAAK+jD,cAAAA,WAASkH,MAAdA,GAAgBnb,wBAAAA,MACJ,UAAdob,KAAIlrD,KAAC+jD,cAAAA,WAASmH,MAAdA,GAAgBjuB,qBAAAA,GAChBj9B,KAAKojD,cAAAA,GACLz9C,GAAMR,eAAAA;EAET,GAEDoR,KAAK5Q,IAAAA;AACmC,QAAAwlD;AAAtC,QAAInrD,KAAK4xC,0BAAAA,EAEP,QADAjsC,GAAMR,eAAAA,GACe,UAArBgmD,KAAOnrD,KAAK+jD,cAAAA,WAASoH,KAAAA,SAAdA,GAAgB/Z,sBAAsB,UAAA;EAEhD,GAED56B,MAAM7Q,IAAAA;AACkC,QAAAylD;AAAtC,QAAIprD,KAAK4xC,0BAAAA,EAEP,QADAjsC,GAAMR,eAAAA,GACe,UAArBimD,KAAOprD,KAAK+jD,cAAAA,WAASqH,KAAAA,SAAdA,GAAgBha,sBAAsB,SAAA;EAEhD,GAEDia,SAAS,EACP1oC,EAAEhd,IAAAA;AAAO,QAAA2lD;AAEP,WADa,UAAbA,KAAItrD,KAACm0B,aAAAA,WAAQm3B,MAAbA,GAAerE,iCAAAA,GACRjnD,KAAKutC,kBAAkB,WAAW5nC,EAAAA;EAC1C,GAED+c,EAAE/c,IAAAA;AAAO,QAAA4lD;AAEP,WADa,UAAbA,KAAIvrD,KAACm0B,aAAAA,WAAQo3B,MAAbA,GAAetE,iCAAAA,GACRjnD,KAAKutC,kBAAkB,YAAY5nC,EAAAA;EAC3C,GAED2c,EAAE3c,IAAAA;AAAO,QAAA6lD,IAAAC;AAIP,WAHA9lD,GAAMR,eAAAA,GACO,UAAbqmD,KAAIxrD,KAACm0B,aAAAA,WAAQq3B,MAAbA,GAAevE,iCAAAA,GACDwE,UAAdA,KAAAzrD,KAAK+jD,cAAAA,WAAS0H,MAAdA,GAAgBxf,aAAa,MAAM,EAAEJ,gBAAAA,MAAgB,CAAA,GAC9C7rC,KAAKojD,cAAAA;EACd,EAAA,GAGFsI,OAAO,EACLb,OAAOllD,IAAAA;AAAO,QAAAgmD,IAAAC;AACC,cAAbD,KAAI3rD,KAACm0B,aAAAA,WAAQw3B,MAAbA,GAAe1E,iCAAAA,GACD2E,UAAdA,KAAA5rD,KAAK+jD,cAAAA,WAAS6H,MAAdA,GAAgB3f,aAAa,IAAA,GAC7BjsC,KAAKojD,cAAAA,GACLz9C,GAAMR,eAAAA;EACP,GAED6lD,IAAIrlD,IAAAA;AAAO,QAAAkmD,IACsCC;AAA7B,cAAlBD,KAAI7rD,KAAK+jD,cAAAA,WAAS8H,MAAdA,GAAgBjc,wBAAAA,MACJ,UAAdkc,KAAI9rD,KAAC+jD,cAAAA,WAAS+H,MAAdA,GAAgB9uB,qBAAAA,GAChBh9B,KAAKojD,cAAAA,GACLz9C,GAAMR,eAAAA;EAET,GAEDoR,KAAK5Q,IAAAA;AACH,QAAI3F,KAAK4xC,0BAAAA,EAEP,QADAjsC,GAAMR,eAAAA,GACCnF,KAAKsxC,2BAA2B,UAAA;EAE1C,GAED96B,MAAM7Q,IAAAA;AACJ,QAAI3F,KAAK4xC,0BAAAA,EAEP,QADAjsC,GAAMR,eAAAA,GACCnF,KAAKsxC,2BAA2B,SAAA;EAE3C,EAAA,GAGFya,KAAK,EACHtB,UAAU9kD,IAAAA;AAAO,QAAAqmD;AAEf,WADAhsD,KAAKukD,gBAAgB,EAAEK,gBAAAA,MAAgB,CAAA,GACnB,UAApBoH,KAAOhsD,KAAKm0B,aAAAA,WAAQ63B,KAAAA,SAAbA,GAAe/E,iCAAAA;EACxB,EAAA,GAGFgF,MAAM,EACJxB,UAAU9kD,IAAAA;AAAO,QAAAumD;AAEf,WADAlsD,KAAKukD,gBAAgB,EAAEK,gBAAAA,MAAgB,CAAA,GACnB,UAApBsH,KAAOlsD,KAAKm0B,aAAAA,WAAQ+3B,KAAAA,SAAbA,GAAejF,iCAAAA;EACxB,EAAA,EAAA,CAAA,GAmJN5C,GAAsB7nC,YAAY,6BAAA,GAClC6nC,GAAsB7nC,YAAY,6BAAA,GAClC6nC,GAAsB7nC,YAAY,uCAAA,GAClC6nC,GAAsB7nC,YAAY,sCAAA,GAClC6nC,GAAsB7nC,YAAY,gCAAA;AAElC,MAAM4tC,KAAoBzrD,CAAAA,OAAAA;AAAI,QAAAwtD;AAAA,WAAcA,UAAdA,KAAKxtD,GAAKqM,SAAAA,WAAImhD,MAAmB,UAAnBA,KAATA,GAAWzrD,MAAM,UAAA,MAAA,WAAWyrD,KAAAA,SAA5BA,GAA+B,CAAA;EAAE;AAApE,MAEMp8C,KAAAA,EAAwCC,UAAhBA,KAAI,IAACC,gBAAAA,WAAWD,MAAAA,CAAfA,GAAAjK,KAAG,KAAe,CAAA;AAFjD,MAIMghD,KAAqB,SAASphD,IAAAA;AAClC,QAAIA,GAAMpB,OAAOwL,MAAwBpK,GAAMpB,IAAI0L,YAAY,CAAA,MAAOtK,GAAM42C,QAC1E,QAAO52C,GAAMpB;AACR;AACL,UAAIjF;AAOJ,UANoB,SAAhBqG,GAAMymD,QACR9sD,KAAOqG,GAAM42C,UACY,MAAhB52C,GAAMymD,SAAkC,MAAnBzmD,GAAM0mD,aACpC/sD,KAAOqG,GAAM0mD,WAGH,QAAR/sD,MAAmC,aAAnB46C,GAAS56C,EAAAA,EAC3B,QAAO+O,EAAYiB,eAAe,CAAEhQ,EAAAA,CAAAA,EAAQkP,SAAAA;IAEhD;EACF;AAnBA,MAqBM06C,KAAsC,SAASvjD,IAAAA;AACnD,UAAMojD,KAAQpjD,GAAMijD;AACpB,QAAIG,IAAO;AACT,UAAIA,GAAMh3B,MAAM9nB,SAAS,WAAA,GAAc;AAGrC,mBAAWe,MAAQ+9C,GAAMh3B,OAAO;AAC9B,gBAAMu6B,KAAsB,4BAA4BzsD,KAAKmL,EAAAA,GACvDuhD,KAAyB,SAAS1sD,KAAKmL,EAAAA,KAAS+9C,GAAMn0C,QAAQ5J,EAAAA;AAEpE,cADkCshD,MAAuBC,GAEvD,QAAA;QAEJ;AACA,eAAA;MACF;AAAO;AACL,cAAMC,KAAsBzD,GAAMh3B,MAAM9nB,SAAS,sBAAA,GAC3CwiD,KAA0B1D,GAAMh3B,MAAM9nB,SAAS,qBAAA;AACrD,eAAOuiD,MAAuBC;MAChC;IACF;EACF;AAEA,MAAMjH,KAAN,cAA+Bn4C,EAAAA;IAC7BwB,YAAY69C,IAAAA;AACV59C,YAAAA,GAASzJ,SAAAA,GACTrF,KAAK0sD,kBAAkBA,IACvB1sD,KAAK+jD,YAAY/jD,KAAK0sD,gBAAgB3I,WACtC/jD,KAAKm0B,WAAWn0B,KAAK0sD,gBAAgBv4B,UACrCn0B,KAAKwkD,eAAexkD,KAAK0sD,gBAAgBlI,cACzCxkD,KAAK6I,OAAO,CAAA;IACd;IAEAgN,MAAMhN,IAAAA;AAGJ,UAFA7I,KAAK6I,KAAKgN,QAAQhN,IAEd7I,KAAK2sD,cAAAA,GAAiB;AAAA,YAAAC,IACuDC;AAA/E,YAAoC,eAAhC7sD,KAAKwkD,aAAa1/C,aAA4B9E,KAAKwkD,aAAajE,UACpDsM,WAAdA,KAAA7sD,KAAK+jD,cAAAA,WAAS8I,MAAdA,GAAgBtf,kBAAkB,MAAA;AAG/BvtC,aAAKm5C,oBAAAA,MACRn5C,KAAKquC,kBAAAA,GACLruC,KAAKojD,cAAAA,IAGPpjD,KAAKyV,QAAsB,UAAjBm3C,KAAG5sD,KAAK+jD,cAAAA,WAAS6I,KAAAA,SAAdA,GAAgBtiB,iBAAAA;MAC/B;IACF;IAEA5zB,OAAO7N,IAAAA;AAGL,UAFA7I,KAAK6I,KAAK6N,SAAS7N,IAEf7I,KAAK2sD,cAAAA,GAAiB;AACxB,cAAMl3C,KAAQzV,KAAKwuC,kBAAAA;AACf/4B,QAAAA,OACFzV,KAAK2uC,kBAAAA,GACL3uC,KAAKyV,QAAQA;MAEjB;IACF;IAEAK,IAAIjN,IAAAA;AAGF,aAFA7I,KAAK6I,KAAKiN,MAAMjN,IAEZ7I,KAAK2sD,cAAAA,KACP3sD,KAAK2uC,kBAAAA,GAED3uC,KAAK8sD,mBAAAA,KACP9sD,KAAKukD,gBAAgB,EAAEK,gBAAAA,MAAsB0B,UAAAA,MAAU,CAAA,GAC1C,UAAbnxB,KAAIn1B,KAACm0B,aAAAA,WAAQgB,MAAbA,GAAe8xB,iCAAAA,GAAAA,UACf8F,KAAA/sD,KAAK+jD,cAAAA,WAASgJ,MAAdA,GAAgBte,iBAAiBzuC,KAAKyV,KAAAA,GACxB,UAAdu3C,KAAIhtD,KAAC+jD,cAAAA,WAASiJ,MAAdA,GAAgB/gB,aAAajsC,KAAK6I,KAAKiN,GAAAA,GAClBm3C,UAArBA,KAAOjtD,KAAK+jD,cAAAA,WAASkJ,KAAAA,SAAdA,GAAgBxe,iBAAiBzuC,KAAKyV,MAAM,CAAA,IAAKzV,KAAK6I,KAAKiN,IAAIxQ,MAAAA,KAC1C,QAAnBtF,KAAK6I,KAAKgN,SAAqC,QAApB7V,KAAK6I,KAAK6N,UAC9C1W,KAAKujD,eAAAA,GACEvjD,KAAK0sD,gBAAgBp1C,MAAAA,KAAAA,UAGvBtX,KAAK0sD,gBAAgBp1C,MAAAA;AAXG,UAAA6d,IAAA43B,IAAAC,IAAAC;IAanC;IAEA3H,aAAAA;AACE,aAAOtlD,KAAK6I,KAAKiN;IACnB;IAEA2vC,UAAAA;AACE,aAA4B,QAArBzlD,KAAKslD,WAAAA;IACd;IAEAqH,gBAAAA;AACE,aAAA,CAAI9hD,GAAQ/J,wBACHd,KAAKwkD,aAAa8B;IAI7B;IAIAwG,qBAAAA;AAAqB,UAAAI,IAAAC;AACnB,aAAmC,OAAbD,UAAfA,KAAIltD,KAAC6I,KAAKgN,UAAAA,WAAKq3C,KAAAA,SAAfA,GAAiB5nD,YAAAA,UAAgB6nD,KAAAntD,KAAK6I,KAAKiN,QAAAA,WAAGq3C,KAAAA,SAAbA,GAAe7nD,UAAS,KAAKtF,KAAKyV;IAC5E;EAAA;AAGF+vC,KAAiBhpC,YAAY,iCAAA,GAC7BgpC,GAAiBhpC,YAAY,+BAAA,GAC7BgpC,GAAiBhpC,YAAY,gCAAA,GAC7BgpC,GAAiBhpC,YAAY,gCAAA,GAC7BgpC,GAAiBhpC,YAAY,8BAAA,GAC7BgpC,GAAiBhpC,YAAY,8BAAA,GAC7BgpC,GAAiBhpC,YAAY,8BAAA;AC3nBd,MAAM4wC,KAAN,cAAoCxK,GAAAA;IACjD/zC,cAAAA;AACEC,YAAAA,GAAMzJ,SAAAA,GACNrF,KAAK4wB,SAAS5wB,KAAK4wB,OAAOja,KAAK3W,IAAAA;IACjC;IA8cAs/C,mBAAAA;AACE,aAAIt/C,KAAKqtD,kBACHrtD,KAAKstD,YACar5B,UAApBA,KAAOj0B,KAAKm0B,aAAAA,WAAQF,MAAAA,UAAAovB,KAAbpvB,GAAeywB,0CAAAA,WAAqCrB,KAAAA,SAApDA,GAAAt9C,KAAAkuB,EAAAA,IAAAA,SAGFj0B,KAAKutD,QAAAA;AAJQ,UAAAt5B,IAAAovB;IAMxB;IAEAmK,iBAAAA;AACE,aAAOxtD,KAAKqtD,kBAAkBrtD,KAAKqtD,kBAAkBrtD,KAAKqtD,kBAAkBjH,sBAAsBpmD,KAAK4wB,MAAAA;IACzG;IAEAA,SAAAA;AAAS,UAAA68B,IAGct4B;AAAAA,OAFrBu4B,qBAAqB1tD,KAAKqtD,eAAAA,GAC1BrtD,KAAKqtD,kBAAkB,MAClBrtD,KAAKstD,eACK,UAAbn4B,KAAIn1B,KAACm0B,aAAAA,WAAQgB,MAAbA,GAAevE,OAAAA;AAED,gBAAhB68B,KAAIztD,KAAC2tD,gBAAAA,WAAWF,MAAhBA,GAAA1nD,KAAA/F,IAAAA,GACAA,KAAK2tD,cAAc;IACrB;IAEAJ,UAAAA;AAAU,UAAAhiB;AACR,aAAoB,UAApBA,KAAOvrC,KAAKm0B,aAAAA,WAAQoX,KAAAA,SAAbA,GAAegiB,QAAAA;IACxB;IAIAthB,eAAAA;AAAmC,UAAAa;AAAA,UAAtBx8B,KAAMjL,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,IAAIkD,KAAOlD,UAAAC,SAAAD,IAAAA,UAAAA,CAAAA,IAAAA;AAE/B,aADa,UAAbynC,KAAI9sC,KAACm0B,aAAAA,WAAQ2Y,MAAbA,GAAema,iCAAAA,GACRjnD,KAAKgxC,mBAAmB,WAAA;AAAW,YAAA6S;AACxC,eAAqBA,UAArBA,KAAO7jD,KAAK+jD,cAAAA,WAASF,KAAAA,SAAdA,GAAgB5X,aAAa37B,IAAQ/H,EAAAA;MAC9C,CAAA;IACF;IAEAqlD,2BAA2Bl6C,IAAAA;AAC2B,UAAA+8B;AAApD,UAAIn9B,GAAAA,EAAuBrJ,SAASyJ,EAAAA,EAElC,QADa+8B,UAAbA,KAAAzwC,KAAKm0B,aAAAA,WAAQsc,MAAbA,GAAeod,qCAAqCn6C,EAAAA,GAC7C1T,KAAKgxC,mBAAmB,WAAA;AAAW,YAAA0U;AACxC,eAAqB,UAArBA,KAAO1lD,KAAK+jD,cAAAA,WAAS2B,KAAAA,SAAdA,GAAgB7W,uBAAuBn7B,EAAAA;MAChD,CAAA;IAEJ;IAEAo6C,6BAA6Bp6C,IAAelP,IAAAA;AACU,UAAAiuC;AAApD,UAAIn/B,GAAAA,EAAuBrJ,SAASyJ,EAAAA,EAElC,QADa++B,UAAbA,KAAAzyC,KAAKm0B,aAAAA,WAAQse,MAAbA,GAAeob,qCAAqCn6C,EAAAA,GAC7C1T,KAAKgxC,mBAAmB,WAAA;AAAW,YAAA4U;AACxC,eAAqBA,UAArBA,KAAO5lD,KAAK+jD,cAAAA,WAAS6B,KAAAA,SAAdA,GAAgB9W,oBAAoBp7B,IAAelP,EAAAA;MAC5D,CAAA;IAEJ;IAEA+oC,kBAAkB9P,IAAAA;AAA4D,UAAA,EAAjD6W,iBAAEA,GAAAA,IAAiBjvC,UAAAC,SAAA,KAAA,WAAAD,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,EAAEivC,iBAAAA,KAAiB;AAC/C,UAAA1B;AAAjB0B,MAAAA,OACW,UAAb1B,KAAI5yC,KAACm0B,aAAAA,WAAQye,MAAbA,GAAeqU,iCAAAA;AAEjB,YAAM9qC,KAAUA,MAAAA;AAAA,YAAA0wC;AAAA,eAAoB,UAApBA,KAAM7sD,KAAK+jD,cAAAA,WAAS8I,KAAAA,SAAdA,GAAgBtf,kBAAkB9P,EAAAA;MAAU,GAC5D3lB,KAAW9X,KAAK+tD,kBAAkB,EAAEC,WAAWhuD,KAAKstD,YAAY,IAAI,EAAA,CAAA;AAC1E,aAAIx1C,KACK9X,KAAKgxC,mBAAmBl5B,IAAUqE,EAAAA,IAElCA,GAAAA;IAEX;IAIA60B,mBAAmBl5B,IAAU1C,IAAAA;AAKb,UAAAw3C;AAAd,aAJwB,cAAA,OAAb90C,OACT1C,KAAK0C,IACLA,KAAW9X,KAAK+tD,kBAAAA,IAEdj2C,KACmB80C,UAArBA,KAAO5sD,KAAK+jD,cAAAA,WAAS6I,KAAAA,SAAdA,GAAgB5b,mBAAmBl5B,IAAU1C,GAAGuB,KAAK3W,IAAAA,CAAAA,KAE5DuX,GAAwBD,MAAAA,GACjBlC,GAAGrP,KAAK/F,IAAAA;IAEnB;IAEA+tD,oBAAAA;AAAoD,UAAAE,IAAAC;AAAA,UAAA,EAAlCF,WAAEA,GAAAA,IAAW3oD,UAAAC,SAAA,KAAA,WAAAD,UAAAE,CAAAA,IAAAF,UAAG,CAAA,IAAA,EAAE2oD,WAAW,EAAA;AAC7C,YAAMG,KAAyC,UAA7BF,MAAGC,KAAAA,KAAKvoD,OAAMyoD,oBAAAA,WAAeH,KAAAA,SAA1BA,GAAAloD,KAAAmoD,EAAAA;AACrB,UAAIC,MACEA,GAAa7oD,QAAQ;AACvB,cAAMwS,KAAWu2C,GAAmBF,GAAa,CAAA,CAAA;AACjD,YAAkB,MAAdH,MAAmBl2C,GAAStJ,SAAAA,EAAWlJ,UAAU0oD,GACnD,QAAOl2C;MAEX;IAEJ;IAEAw2C,UAAU3oD,IAAOyP,IAAAA;AACf,UAAItE;AACJ9Q,WAAK2F,QAAQA;AACb,UAAA;AACEmL,QAAAA,KAASsE,GAAGrP,KAAK/F,IAAAA;MACnB,UAAU;AACRA,aAAK2F,QAAQ;MACf;AACA,aAAOmL;IACT;EAAA;AACD+hB,KA3jBoBu6B,IAMH,UAAA,EACd/G,QAAQ1gD,IAAAA;AACN,QAAIoP,GAA0BpP,EAAAA,GAAQ;AAAA,UAAAotC;AACpC,YAAMwb,KAAUC,GAA4B7oD,EAAAA;AAC3BotC,gBAAjBA,KAAI/yC,KAAKm0B,aAAAA,WAAQ4e,MAAbA,GAAe6T,yCAAyC2H,EAAAA,KAC1D5oD,GAAMR,eAAAA;IAEV,OAAO;AACL,UAAI1G,KAAOkH,GAAMpB;AACboB,MAAAA,GAAMmhD,WACRroD,MAAQ,SAENkH,GAAM8oD,aACRhwD,MAAQ;AAEV,YAAMiH,KAAU1F,KAAK6O,YAAYgF,KAAKpV,EAAAA;AACtC,UAAIiH,GACF,QAAO1F,KAAKsuD,UAAU3oD,IAAOD,EAAAA;IAEjC;EACD,GAIDqjD,MAAMpjD,IAAAA;AAAO,QAAA+oD;AAEX,QAAI3F;AACJ,UAAM58C,KAA0BuiD,UAAtBA,KAAG/oD,GAAMijD,kBAAAA,WAAa8F,KAAAA,SAAnBA,GAAqB95C,QAAQ,KAAA;AAC1C,WAAI+5C,GAAuBhpD,EAAAA,KACzBA,GAAMR,eAAAA,GACCnF,KAAK4B,YAAY+D,GAAMijD,cAAcv9C,KAAAA,KAGnCujD,GAA2BjpD,EAAAA,KACpCA,GAAMR,eAAAA,GACN4jD,KAAQ,EACN/9C,MAAM,cACNsF,QAAQ3K,GAAMijD,cAAch0C,QAAQ,YAAA,EAAA,GAEzBs+B,UAAbA,KAAAlzC,KAAKm0B,aAAAA,WAAQ+e,MAAbA,GAAekW,yBAAyBL,EAAAA,GAAAA,UACxCgE,KAAA/sD,KAAK+jD,cAAAA,WAASgJ,MAAdA,GAAgB9gB,aAAa8c,GAAMz4C,MAAAA,GACnCtQ,KAAK4wB,OAAAA,GACe,UAApByiB,KAAOrzC,KAAKm0B,aAAAA,WAAQkf,KAAAA,SAAbA,GAAegW,wBAAwBN,EAAAA,KAGrC58C,MACTxG,GAAMR,eAAAA,GACN4jD,KAAQ,EACN/9C,MAAM,aACNvG,MAAMzE,KAAKmkD,eAAeh4C,EAAAA,EAAAA,GAEfqnC,UAAbA,KAAAxzC,KAAKm0B,aAAAA,WAAQqf,MAAbA,GAAe4V,yBAAyBL,EAAAA,GAAAA,UACxCiE,KAAAhtD,KAAK+jD,cAAAA,WAASiJ,MAAdA,GAAgBvgB,WAAWsc,GAAMtkD,IAAAA,GACjCzE,KAAK4wB,OAAAA,GACe,UAApB+iB,KAAO3zC,KAAKm0B,aAAAA,WAAQwf,KAAAA,SAAbA,GAAe0V,wBAAwBN,EAAAA,KAAAA;AArBF,QAAA7V,IAAA6Z,IAAA1Z,IAY7BG,IAAAwZ,IAAArZ;EAWlB,GAED6W,YAAY7kD,IAAAA;AACV,UAAMD,KAAU1F,KAAK6O,YAAYggD,WAAWlpD,GAAMu8C,SAAAA,GAE5C4M,MlD7BmDC,KkD6BeppD,IAAAA,EAAAA,ClD5BxE,cAAc9F,KAAKW,UAAUC,SAAAA,KAOvBsuD,GAAW7M,aAAsC,sBAAzB6M,GAAW7M;AARxC,QAAwD6M;AkD+BrDrpD,IAAAA,OACF1F,KAAKsuD,UAAU3oD,IAAOD,EAAAA,GAEjBopD,MACH9uD,KAAKwtD,eAAAA,IAILsB,MACF9uD,KAAK4wB,OAAAA;EAER,GAEDlmB,MAAM/E,IAAAA;AACJ4R,OAAwBD,MAAAA;EACzB,GAEDgwC,UAAU3hD,IAAAA;AAAO,QAAAsnD,IACqCjG;AAAlC,cAAlBiG,KAAIjtD,KAAK+jD,cAAAA,WAASkJ,MAAdA,GAAgBxb,6BAAAA,MAClB9rC,GAAMgP,aAAakxC,QAAQ,+BAAA,IAA+B,GAE1D7lD,KAAKgvD,WAAW,EACdv5C,OAAqBuxC,UAAhBA,KAAEhnD,KAAK+jD,cAAAA,WAASiD,KAAAA,SAAdA,GAAgB1c,iBAAAA,GACvB0P,OAAOiV,GAAetpD,EAAAA,EAAAA;EAG3B,GAED0hD,UAAU1hD,IAAAA;AACJupD,OAAkBvpD,EAAAA,KACpBA,GAAMR,eAAAA;EAET,GAEDuiD,SAAS/hD,IAAAA;AACP,QAAI3F,KAAKgvD,UAAU;AACjBrpD,MAAAA,GAAMR,eAAAA;AACN,YAAM60C,KAAQiV,GAAetpD,EAAAA;AACqB,UAAAyhD;AAAlD,UAAA,CAAK7xC,GAAgBykC,IAAOh6C,KAAKgvD,SAAShV,KAAAA,EAExC,QADAh6C,KAAKgvD,SAAShV,QAAQA,IACD,UAArBoN,KAAOpnD,KAAK+jD,cAAAA,WAASqD,KAAAA,SAAdA,GAAgBzO,+BAA+BqB,EAAAA;IAE1D,MAAWkV,IAAkBvpD,EAAAA,KAC3BA,GAAMR,eAAAA;EAET,GAEDgjD,KAAKxiD,IAAAA;AACgB,QAAAmuC,IAAAuU;AAAnB,QAAIroD,KAAKgvD,SAKP,QAJArpD,GAAMR,eAAAA,GACO,UAAb2uC,KAAI9zC,KAACm0B,aAAAA,WAAQ2f,MAAbA,GAAeyU,4BAAAA,GACD,UAAdF,KAAIroD,KAAC+jD,cAAAA,WAASsE,MAAdA,GAAgBpa,kBAAkBjuC,KAAKgvD,SAASv5C,KAAAA,GAChDzV,KAAKgvD,WAAW,MACThvD,KAAKwtD,eAAAA;AACP,QAAI0B,GAAkBvpD,EAAAA,GAAQ;AAAA,UAAA2iD;AACnC3iD,MAAAA,GAAMR,eAAAA;AACN,YAAM60C,KAAQiV,GAAetpD,EAAAA;AAE7B,aADc2iD,UAAdA,KAAAtoD,KAAK+jD,cAAAA,WAASuE,MAAdA,GAAgB3P,+BAA+BqB,EAAAA,GACxCh6C,KAAK4B,YAAY+D,GAAMgP,aAAatJ,KAAAA;IAC7C;EACD,GAED28C,UAAAA;AACqB,QAAAQ;AAAfxoD,SAAKgvD,aACO,UAAdxG,KAAIxoD,KAAC+jD,cAAAA,WAASyE,MAAdA,GAAgB/Z,iBAAiBzuC,KAAKgvD,SAASv5C,KAAAA,GAC/CzV,KAAKgvD,WAAW;EAEnB,GAEDzE,eAAe5kD,IAAAA;AACT3F,SAAKstD,cACPttD,KAAKstD,YAAAA,OACA35C,EAAe5S,iBAAef,KAAKwtD,eAAAA;EAE5C,EAAA,CAAA,GACD36B,GAhJkBu6B,IAkJL,QAAA,EACZ+B,YAAAA;AAAY,QAAAxG,IAC2DG;AAArE,QAAkBH,UAAlBA,KAAI3oD,KAAK+jD,cAAAA,WAAS4E,MAAdA,GAAgBrb,oCAAoC,UAAA,EAEtD,QADAttC,KAAK2F,MAAMR,eAAAA,GACU,UAArB2jD,KAAO9oD,KAAK+jD,cAAAA,WAAS+E,KAAAA,SAAdA,GAAgB1X,sBAAsB,UAAA;EAEhD,GAEDge,aAAAA;AAAa,QAAAjG,IACyDG;AAApE,QAAkBH,UAAlBA,KAAInpD,KAAK+jD,cAAAA,WAASoF,MAAdA,GAAgB7b,oCAAoC,SAAA,EAEtD,QADAttC,KAAK2F,MAAMR,eAAAA,GACU,UAArBmkD,KAAOtpD,KAAK+jD,cAAAA,WAASuF,KAAAA,SAAdA,GAAgBlY,sBAAsB,SAAA;EAEhD,GAEDie,YAAAA;AAAY,QAAA7F,IACuDD,IAAAI;AAAjE,QAAkBH,UAAlBA,KAAIxpD,KAAK+jD,cAAAA,WAASyF,MAAdA,GAAgBnc,gCAAgC,UAAA,EAIlD,QAHArtC,KAAK2F,MAAMR,eAAAA,GACE,UAAbokD,KAAIvpD,KAACm0B,aAAAA,WAAQo1B,MAAbA,GAAetC,iCAAAA,GACD0C,UAAdA,KAAA3pD,KAAK+jD,cAAAA,WAAS4F,MAAdA,GAAgBpc,kBAAkB,UAAA,GAC3BvtC,KAAK4wB,OAAAA;EAEf,GAED0+B,MAAAA;AAAM,QAAApF,IAC2Ca;AAA/C,QAAkB,UAAlBb,KAAIlqD,KAAK+jD,cAAAA,WAASmG,MAAdA,GAAgBpa,wBAAAA,EAGlB,QAFA9vC,KAAK2F,MAAMR,eAAAA,GACG,UAAd4lD,KAAI/qD,KAAC+jD,cAAAA,WAASgH,MAAdA,GAAgB9tB,qBAAAA,GACTj9B,KAAK4wB,OAAAA;EAEf,GAED,cAAA;AAAc,QAAAq6B,IACmCC;AAA/C,QAAkB,UAAlBD,KAAIjrD,KAAK+jD,cAAAA,WAASkH,MAAdA,GAAgBrb,wBAAAA,EAGlB,QAFA5vC,KAAK2F,MAAMR,eAAAA,GACG,UAAd+lD,KAAIlrD,KAAC+jD,cAAAA,WAASmH,MAAdA,GAAgBluB,qBAAAA,GACTh9B,KAAK4wB,OAAAA;EAEhB,EAAA,CAAA,GACDiC,GAzLkBu6B,IA2LC,cAAA,EAClBmC,sBAAAA;AACE,WAAOvvD,KAAKutC,kBAAkB,YAAY,EAAE+G,iBAAAA,MAAiB,CAAA;EAC9D,GAEDkb,cAAAA;AACE,WAAOxvD,KAAKutC,kBAAkB,UAAA;EAC/B,GAEDkiB,eAAAA;AAEE,WADAzvD,KAAK2F,MAAMR,eAAAA,GACJnF,KAAKgxC,mBAAmB,WAAA;AAAW,UAAAma;AACxCnrD,WAAK0vD,oBAAkC,UAAjBvE,KAAGnrD,KAAK+jD,cAAAA,WAASoH,KAAAA,SAAdA,GAAgB7gB,iBAAAA;IAC3C,CAAA;EACD,GAEDqlB,wBAAAA;AACE,WAAO3vD,KAAKutC,kBAAkB,YAAY,EAAE+G,iBAAAA,MAAiB,CAAA;EAC9D,GAEDsb,gBAAAA;AACE,WAAO5vD,KAAKutC,kBAAkB,UAAA;EAC/B,GAEDsiB,wBAAAA;AACE,WAAO7vD,KAAKutC,kBAAkB,UAAA;EAC/B,GAEDuiB,uBAAAA;AACE,WAAO9vD,KAAKutC,kBAAkB,SAAA;EAC/B,GAEDwiB,uBAAAA;AACE,WAAO/vD,KAAKutC,kBAAkB,SAAA;EAC/B,GAEDyiB,yBAAAA;AACE,WAAOhwD,KAAKutC,kBAAkB,UAAA;EAC/B,GAED0iB,wBAAAA;AACE,WAAOjwD,KAAKutC,kBAAkB,SAAA;EAC/B,GAED2iB,yBAAAA;AACE,WAAOlwD,KAAKutC,kBAAkB,UAAA;EAC/B,GAED4iB,wBAAAA;AACE,WAAOnwD,KAAKutC,kBAAkB,SAAA;EAC/B,GAED6iB,qBAAAA;AACE,WAAOpwD,KAAKutC,kBAAkB,UAAA;EAC/B,GAED8iB,oBAAAA;AACE,WAAOrwD,KAAKutC,kBAAkB,SAAA;EAC/B,GAED+iB,kBAAAA;AACE,WAAOtwD,KAAK8tD,6BAA6B,mBAAmB9tD,KAAK2F,MAAMkD,IAAAA;EACxE,GAED0nD,aAAAA;AACE,WAAOvwD,KAAK4tD,2BAA2B,MAAA;EACxC,GAED4C,kBAAAA;AACE,WAAOxwD,KAAK8tD,6BAA6B,SAAS9tD,KAAK2F,MAAMkD,IAAAA;EAC9D,GAED4nD,iBAAAA;AACE,WAAOzwD,KAAK8tD,6BAA6B,QAAQ9tD,KAAK2F,MAAMkD,IAAAA;EAC7D,GAED6nD,eAAAA;AAAe,QAAAtF;AACb,QAAkB,UAAlBA,KAAIprD,KAAK+jD,cAAAA,WAASqH,MAAdA,GAAgBtb,wBAAAA,EAClB,QAAO9vC,KAAKgxC,mBAAmB,WAAA;AAAW,UAAAya;AACxC,aAAqB,UAArBA,KAAOzrD,KAAK+jD,cAAAA,WAAS0H,KAAAA,SAAdA,GAAgBxuB,qBAAAA;IACzB,CAAA;EAEH,GAED0zB,eAAAA;AACE,WAAO3wD,KAAK4tD,2BAA2B,QAAA;EACxC,GAEDgD,sBAAAA;AACE,WAAO5wD,KAAK4tD,2BAA2B,eAAA;EACxC,GAEDiD,oBAAAA;AACE,WAAO7wD,KAAK4tD,2BAA2B,aAAA;EACxC,GAEDkD,oBAAAA;AACE,WAAO9wD,KAAK4tD,2BAA2B,aAAA;EACxC,GAEDmD,qBAAAA;AACE,WAAO/wD,KAAK4tD,2BAA2B,cAAA;EACxC,GAEDoD,gBAAAA;AAAgB,QAAApF;AACd,QAAkB,UAAlBA,KAAI5rD,KAAK+jD,cAAAA,WAAS6H,MAAdA,GAAgBhc,wBAAAA,EAClB,QAAO5vC,KAAKgxC,mBAAmB,WAAA;AAAW,UAAA6a;AACxC,aAAqB,UAArBA,KAAO7rD,KAAK+jD,cAAAA,WAAS8H,KAAAA,SAAdA,GAAgB7uB,qBAAAA;IACzB,CAAA;EAEH,GAEDi0B,eAAAA;AACEjxD,SAAKgxC,mBAAmB,WAAA;AACtB,iBAAWt9B,MAA+Bo4C,UAAlBA,KAAI9rD,KAAK+jD,cAAAA,WAAS+H,KAAAA,SAAdA,GAAgBzb,qBAAAA,GAAwB;AAAA,YAAAyb,IAAAoF;AACpDA,kBAAdA,KAAAlxD,KAAK+jD,cAAAA,WAASmN,MAAdA,GAAgB9iB,uBAAuB16B,EAAAA;MACzC;IACF,CAAA;EACD,GAEDy9C,8BAAAA;AACE,WAAOnxD,KAAK8tD,6BAA6B,YAAY9tD,KAAK2F,MAAMkD,IAAAA;EACjE,GAEDuoD,+BAAAA;AACE,WAAOpxD,KAAK8tD,6BAA6B,WAAW9tD,KAAK2F,MAAMkD,IAAAA;EAChE,GAEDwoD,sBAAAA;AACE,WAAOrxD,KAAK4tD,2BAA2B,QAAA;EACxC,GAED0D,kBAAAA;AACE,WAAOtxD,KAAK4tD,2BAA2B,KAAA;EACxC,GAED2D,oBAAAA;AACE,WAAOvxD,KAAK4tD,2BAA2B,KAAA;EACxC,GAED4D,kBAAAA;AACE,WAAOxxD,KAAK4tD,2BAA2B,WAAA;EACxC,GAED6D,cAAAA;AAAc,QAAAhI;AACZ,WAAoB,UAApBA,KAAOzpD,KAAKm0B,aAAAA,WAAQs1B,KAAAA,SAAbA,GAAeiI,+BAAAA;EACvB,GAEDC,cAAAA;AAAc,QAAAjI;AACZ,WAAoB,UAApBA,KAAO1pD,KAAKm0B,aAAAA,WAAQu1B,KAAAA,SAAbA,GAAekI,+BAAAA;EACvB,GAEDC,wBAAAA;AAEE,WADA7xD,KAAKstD,YAAAA,MACEttD,KAAKisC,aAAajsC,KAAK2F,MAAMkD,IAAAA;EACrC,GAEDipD,wBAAAA;AAEE,WADA9xD,KAAKstD,YAAAA,OACEttD,KAAKisC,aAAajsC,KAAK2F,MAAMkD,IAAAA;EACrC,GAEDkpD,iBAAAA;AACE,UAAMt8C,KAAQzV,KAAK0vD;AACR,QAAA9F;AAAX,QAAIn0C,GAGF,QAFAzV,KAAK0vD,oBAAoB,MACZ,UAAb9F,KAAI5pD,KAACm0B,aAAAA,WAAQy1B,MAAbA,GAAerB,4BAAAA,GACRvoD,KAAKgxC,mBAAmB,WAAA;AAAW,UAAAghB;AACxC,aAAqB,UAArBA,KAAOhyD,KAAK+jD,cAAAA,WAASiO,KAAAA,SAAdA,GAAgB/jB,kBAAkBx4B,EAAAA;IAC3C,CAAA;EAEH,GAEDw8C,kBAAAA;AACE,UAAA,EAAMt9C,cAAEA,GAAAA,IAAiB3U,KAAK2F,OACxBojD,KAAQ,EAAEp0C,cAAAA,GAAAA,GAEVxI,KAAOwI,GAAaC,QAAQ,KAAA,GAC5BnQ,KAAOkQ,GAAaC,QAAQ,WAAA;AAElC,QAAIzI,IAAM;AAAA,UAAA89C;AACR,UAAI35C;AACJtQ,WAAK2F,MAAMR,eAAAA,GACX4jD,GAAM/9C,OAAO;AACb,YAAMvM,KAAOkW,GAAaC,QAAQ,iBAAA;AAEhCtE,MAAAA,KADE7R,KACOia,GAA0Bja,EAAAA,EAAMwU,KAAAA,IAEhC9G,IAEX48C,GAAMtkD,OAAOzE,KAAKmkD,eAAeh4C,IAAMmE,EAAAA,GAC1B25C,UAAbA,KAAAjqD,KAAKm0B,aAAAA,WAAQ81B,MAAbA,GAAeb,yBAAyBL,EAAAA,GACxC/oD,KAAKgxC,mBAAmB,WAAA;AAAW,YAAAkhB;AACjC,eAAqBA,UAArBA,KAAOlyD,KAAK+jD,cAAAA,WAASmO,KAAAA,SAAdA,GAAgBzlB,WAAWsc,GAAMtkD,IAAAA;MAC1C,CAAA,GACAzE,KAAK2tD,cAAc,MAAA;AAAM,YAAAxD;AACvB,eAAoB,UAApBA,KAAOnqD,KAAKm0B,aAAAA,WAAQg2B,KAAAA,SAAbA,GAAed,wBAAwBN,EAAAA;MAAM;IAExD,WAAWr0C,GAAwBC,EAAAA,GAAe;AAAA,UAAA+1C;AAChD3B,MAAAA,GAAM/9C,OAAO,cACb+9C,GAAMz4C,SAASqE,GAAaC,QAAQ,YAAA,GACvB81C,UAAbA,KAAA1qD,KAAKm0B,aAAAA,WAAQu2B,MAAbA,GAAetB,yBAAyBL,EAAAA,GACxC/oD,KAAKgxC,mBAAmB,WAAA;AAAW,YAAAmhB;AACjC,eAAqBA,UAArBA,KAAOnyD,KAAK+jD,cAAAA,WAASoO,KAAAA,SAAdA,GAAgBlmB,aAAa8c,GAAMz4C,MAAAA;MAC5C,CAAA,GAEAtQ,KAAK2tD,cAAc,MAAA;AAAM,YAAA/C;AACvB,eAAoB,UAApBA,KAAO5qD,KAAKm0B,aAAAA,WAAQy2B,KAAAA,SAAbA,GAAevB,wBAAwBN,EAAAA;MAAM;IAEvD,WAAUqJ,GAAqBpyD,KAAK2F,KAAAA,GAAQ;AAAA,UAAAmlD;AAC3C/B,MAAAA,GAAM/9C,OAAO,QACb+9C,GAAMpqD,OAAOgW,GAAatJ,MAAM,CAAA,GACnBy/C,UAAbA,KAAA9qD,KAAKm0B,aAAAA,WAAQ22B,MAAbA,GAAe1B,yBAAyBL,EAAAA,GACxC/oD,KAAKgxC,mBAAmB,WAAA;AAAW,YAAAqhB;AACjC,eAAqBA,UAArBA,KAAOryD,KAAK+jD,cAAAA,WAASsO,KAAAA,SAAdA,GAAgBzlB,WAAWmc,GAAMpqD,IAAAA;MAC1C,CAAA,GAEAqB,KAAK2tD,cAAc,MAAA;AAAM,YAAArC;AACvB,eAAoB,UAApBA,KAAOtrD,KAAKm0B,aAAAA,WAAQm3B,KAAAA,SAAbA,GAAejC,wBAAwBN,EAAAA;MAAM;IAEvD,WAAUtkD,IAAM;AAAA,UAAA8mD;AACfvrD,WAAK2F,MAAMR,eAAAA,GACX4jD,GAAM/9C,OAAO,aACb+9C,GAAMtkD,OAAOA,IACA8mD,UAAbA,KAAAvrD,KAAKm0B,aAAAA,WAAQo3B,MAAbA,GAAenC,yBAAyBL,EAAAA,GACxC/oD,KAAKgxC,mBAAmB,WAAA;AAAW,YAAAshB;AACjC,eAAqBA,UAArBA,KAAOtyD,KAAK+jD,cAAAA,WAASuO,KAAAA,SAAdA,GAAgB7lB,WAAWsc,GAAMtkD,IAAAA;MAC1C,CAAA,GACAzE,KAAK2tD,cAAc,MAAA;AAAM,YAAAnC;AACvB,eAAoB,UAApBA,KAAOxrD,KAAKm0B,aAAAA,WAAQq3B,KAAAA,SAAbA,GAAenC,wBAAwBN,EAAAA;MAAM;IAExD;EACD,GAEDwJ,iBAAAA;AACE,WAAOvyD,KAAKisC,aAAajsC,KAAK2F,MAAMkD,IAAAA;EACrC,GAEDujC,kBAAAA;AACE,WAAOpsC,KAAKisC,aAAa,IAAA;EAC1B,GAEDumB,aAAAA;AACE,WAAOxyD,KAAK8tD,6BAA6B,QAAQ9tD,KAAK2F,MAAMkD,IAAAA;EAC7D,GAED4pD,oBAAAA;AACE,WAAOzyD,KAAK4tD,2BAA2B,QAAA;EACxC,GAED8E,kBAAAA;AAAkB,QAAA/G;AAEhB,WADa,UAAbA,KAAI3rD,KAACm0B,aAAAA,WAAQw3B,MAAbA,GAAe1E,iCAAAA,GACRjnD,KAAKgxC,mBAAmB,WAAA;AAAW,UAAA2hB;AACxC,aAAqB,UAArBA,KAAO3yD,KAAK+jD,cAAAA,WAAS4O,KAAAA,SAAdA,GAAgBvmB,gBAAAA;IACzB,CAAA;EACD,GAEDwmB,wBAAAA;AACE,UAAMC,KAAc7yD,KAAK2F,MAAMgP,aAAaC,QAAQ,YAAA,GAC9CkD,KAAW9X,KAAK2F,MAAMyoD,gBAAAA,EAAkB,CAAA;AAE9CpuD,SAAKgxC,mBAAmBl5B,IAAU,MAAA;AAChC9X,WAAKisC,aAAa4mB,IAAa,EAAEhnB,gBAAAA,MAAgB,CAAA;IAAQ,CAAA;EAE5D,GAEDD,aAAAA;AAAa,QAAAknB;AACX,WAAO9yD,KAAKisC,aAAajsC,KAAK2F,MAAMkD,SAA+B,UAA3BiqD,KAAI9yD,KAAK2F,MAAMgP,iBAAAA,WAAYm+C,KAAAA,SAAvBA,GAAyBl+C,QAAQ,YAAA,EAAA;EAC9E,GAEDm+C,kBAAAA;AACE,WAAO/yD,KAAKisC,aAAajsC,KAAK2F,MAAMkD,IAAAA;EACrC,GAEDmqD,sBAAAA;AACE,WAAOhzD,KAAK4tD,2BAA2B,QAAA;EACzC,EAAA,CAAA;AA8GJ,MAAMS,KAAqB,SAAS4E,IAAAA;AAClC,UAAMx9C,KAAQ/Q,SAAS+yC,YAAAA;AAGvB,WAFAhiC,GAAMiiC,SAASub,GAAY56C,gBAAgB46C,GAAYzvB,WAAAA,GACvD/tB,GAAMskC,OAAOkZ,GAAY36C,cAAc26C,GAAYxvB,SAAAA,GAC5ChuB;EACT;AALA,MASMy5C,KAAqBvpD,CAAAA,OAAAA;AAAK,QAAAyiD;AAAA,WAAKv4C,MAAMC,MAAuB,UAAlBs4C,KAAAziD,GAAMgP,iBAAAA,WAAYyzC,KAAAA,SAAlBA,GAAoBr2B,UAAS,CAAA,CAAA,EAAI9nB,SAAS,OAAA;EAAQ;AATlG,MAWMmoD,KAAwBzsD,CAAAA,OAAAA;AAAU,QAAAutD;AAMtC,YAA+B,UAAxBA,KAAAvtD,GAAMgP,aAAatJ,UAAAA,WAAK6nD,KAAAA,SAAxBA,GAA2B,CAAA,MAAA,CAAOvE,GAAuBhpD,EAAAA,KAAAA,ElDtkBvBukB,CAAAA,OAAAA;AAAsB,UAAA,EAArBvV,cAAEA,GAAAA,IAAcuV;AAC1D,aAAOvV,GAAaod,MAAM9nB,SAAS,OAAA,KACjC0K,GAAaod,MAAM9nB,SAAS,WAAA,KAC5B0K,GAAaC,QAAQ,WAAA,EAAa3K,SAAS,yCAAA;IAA0C,GkDmkBgBtE,EAAAA;EAAM;AAjB/G,MAoBMgpD,KAAyB,SAAShpD,IAAAA;AACtC,UAAMqjD,KAAYrjD,GAAMijD;AACxB,QAAII,IAAW;AAEb,aADkBn5C,MAAMC,KAAKk5C,GAAUj3B,KAAAA,EAAO7a,OAAQlM,CAAAA,OAASA,GAAKtK,MAAM,OAAA,CAAA,EACzD4E,WAAW0jD,GAAUj3B,MAAMzsB,UAAU0jD,GAAU39C,MAAM/F,UAAU;IAClF;EACF;AA1BA,MA4BMspD,KAA6B,SAASjpD,IAAAA;AAC1C,UAAMqjD,KAAYrjD,GAAMijD;AACxB,QAAII,GACF,QAAOA,GAAUj3B,MAAM9nB,SAAS,YAAA,KAA4C,MAA3B++C,GAAUj3B,MAAMzsB;EAErE;AAjCA,MAmCMkpD,KAA8B,SAAS7oD,IAAAA;AAC3C,UAAM4oD,KAAU,CAAA;AAQhB,WAPI5oD,GAAMmhD,UACRyH,GAAQ5kD,KAAK,KAAA,GAEXhE,GAAM8oD,YACRF,GAAQ5kD,KAAK,OAAA,GAEf4kD,GAAQ5kD,KAAKhE,GAAMpB,GAAAA,GACZgqD;EACT;AA7CA,MA+CMU,KAAkBtpD,CAAAA,QAAW,EACjC8Z,GAAG9Z,GAAMiiD,SACT1kC,GAAGvd,GAAMkiD,QAAAA;AAjDX,MC/jBMsL,KAA0B;AD+jBhC,MC9jBMC,KAAuB;AD8jB7B,MC7jBMC,KAAAA,GAAqB5vD,OAAM0vD,IAAuB1vD,IAAAA,EAAAA,OAAK2vD,EAAAA;AD6jB7D,MC5jBME,KAAiB;AD4jBvB,MC3jBMC,KAAoB,GAAA9vD,OAAM6vD,IAAkC,oBAAA;AD2jBlE,MC1jBME,KAAoB,GAAA/vD,OAAM6vD,IAAmC,qBAAA;AD0jBnE,MCzjBMG,KAAmB,GAAAhwD,OAAM6vD,IAAkC,oBAAA;ADyjBjE,MCxjBMI,KAAoBA,CAAC5zD,IAAS4T,QAC7BA,OAAiBA,KAAgBigD,GAAiB7zD,EAAAA,IAChDA,GAAQ0U,cAAa,2BAAA/Q,OAA4BiQ,IAAAA,IAAAA,CAAAA;ADsjB1D,MCpjBMkgD,KAAiB9zD,CAAAA,OAAYA,GAAQuM,aAAa,kBAAA;ADojBxD,MCnjBMsnD,KAAoB7zD,CAAAA,OACjBA,GAAQuM,aAAa,qBAAA,KAA0BvM,GAAQuM,aAAa,4BAAA;AAI9D,MAAMwnD,KAAN,cAAgCxmD,EAAAA;IAC7CwB,YAAY/O,IAAAA;AACVgP,YAAMhP,EAAAA,GACNE,KAAK26C,uBAAuB36C,KAAK26C,qBAAqBhkC,KAAK3W,IAAAA,GAC3DA,KAAK8zD,0BAA0B9zD,KAAK8zD,wBAAwBn9C,KAAK3W,IAAAA,GACjEA,KAAK+zD,uBAAuB/zD,KAAK+zD,qBAAqBp9C,KAAK3W,IAAAA,GAC3DA,KAAKg0D,wBAAwBh0D,KAAKg0D,sBAAsBr9C,KAAK3W,IAAAA,GAC7DA,KAAKF,UAAUA,IACfE,KAAKpB,aAAa,CAAA,GAClBoB,KAAKi0D,UAAU,CAAA,GACfj0D,KAAKk0D,kBAAAA,GAELrvD,EAAY,aAAa,EACvBE,WAAW/E,KAAKF,SAChBkF,kBAAkBouD,IAClBnuD,cAAcjF,KAAK26C,qBAAAA,CAAAA,GAErB91C,EAAY,aAAa,EACvBE,WAAW/E,KAAKF,SAChBkF,kBAAkBmuD,IAClBluD,cAAcjF,KAAK8zD,wBAAAA,CAAAA,GAErBjvD,EAAY,SAAS,EAAEE,WAAW/E,KAAKF,SAASkF,kBAAkBquD,IAAuBluD,gBAAAA,KAAgB,CAAA,GACzGN,EAAY,SAAS,EACnBE,WAAW/E,KAAKF,SAChBkF,kBAAkBwuD,IAClBvuD,cAAcjF,KAAK+zD,qBAAAA,CAAAA,GAErBlvD,EAAY,WAAW,EACrBE,WAAW/E,KAAKF,SAChBkF,kBAAkByuD,IAClBxuD,cAAcjF,KAAKg0D,sBAAAA,CAAAA;IAEvB;IAIArZ,qBAAqBh1C,IAAO7F,IAAAA;AAAS,UAAAm0B;AACtB,gBAAbA,KAAIj0B,KAACm0B,aAAAA,WAAQF,MAAbA,GAAekgC,sBAAAA,GACfxuD,GAAMR,eAAAA;AACN,YAAMivD,KAAaR,GAAc9zD,EAAAA;AAEjC,aAAIE,KAAKq0D,UAAUD,EAAAA,IACVp0D,KAAKs0D,aAAaF,EAAAA,IAELj/B,UAApBA,KAAOn1B,KAAKm0B,aAAAA,WAAQgB,KAAAA,SAAbA,GAAeo/B,uBAAuBH,IAAYt0D,EAAAA;AADpD,UAAAq1B;IAGT;IAEA2+B,wBAAwBnuD,IAAO7F,IAAAA;AAAS,UAAAyrC;AACzB,gBAAbA,KAAIvrC,KAACm0B,aAAAA,WAAQoX,MAAbA,GAAe4oB,sBAAAA,GACfxuD,GAAMR,eAAAA;AACN,YAAMuO,KAAgBigD,GAAiB7zD,EAAAA;AAIhC,UAAAgtC;AAFH9sC,WAAKq0D,UAAU3gD,EAAAA,IACjB1T,KAAKs0D,aAAa5gD,EAAAA,IAELo5B,UAAbA,KAAA9sC,KAAKm0B,aAAAA,WAAQ2Y,MAAbA,GAAe0nB,0BAA0B9gD,EAAAA;AAG3C,aAAO1T,KAAKy0D,wBAAAA;IACd;IAEAV,qBAAqBpuD,IAAO7F,IAAAA;AAC1B,YAAM40D,KAAgB5uD,EAA2BhG,IAAS,EAAEkF,kBAAkBsuD,GAAAA,CAAAA;AAE9E,aAAOtzD,KADQF,GAAQuM,aAAa,kBAAA,CAAA,EAChBtG,KAAK/F,MAAM00D,EAAAA;IACjC;IAEAV,sBAAsBruD,IAAO7F,IAAAA;AAC3B,UAAsB,OAAlB6F,GAAM42C,SAAgB;AAExB52C,QAAAA,GAAMR,eAAAA;AACN,cAAMktB,KAAYvyB,GAAQuM,aAAa,MAAA,GACjCsoD,KAAS30D,KAAKq0D,UAAUhiC,EAAAA;AAC9BryB,aAAK2I,aAAagsD,EAAAA;MACpB;AACA,UAAsB,OAAlBhvD,GAAM42C,QAGR,QADA52C,GAAMR,eAAAA,GACCnF,KAAK40D,WAAAA;IAEhB;IAIAC,cAAcZ,IAAAA;AAEZ,aADAj0D,KAAKi0D,UAAUA,IACRj0D,KAAK80D,qBAAAA;IACd;IAEAA,uBAAAA;AACE,aAAO90D,KAAK+0D,iBAAiB,CAACj1D,IAASs0D,OAAAA;AACrCt0D,QAAAA,GAAQk1D,WAAAA,UAAWh1D,KAAKi0D,QAAQG,EAAAA;MAAqB,CAAA;IAEzD;IAEAW,iBAAiBhqD,IAAAA;AACf,aAAO8E,MAAMC,KAAK9P,KAAKF,QAAQqqB,iBAAiBipC,EAAAA,CAAAA,EAAuB7iD,IAAKzQ,CAAAA,OAC1EiL,GAASjL,IAAS8zD,GAAc9zD,EAAAA,CAAAA,CAAAA;IAEpC;IAIAm1D,iBAAiBr2D,IAAAA;AAEf,aADAoB,KAAKpB,aAAaA,IACXoB,KAAKy0D,wBAAAA;IACd;IAEAA,0BAAAA;AACE,aAAOz0D,KAAKk1D,oBAAoB,CAACp1D,IAAS4T,QACxC5T,GAAQk1D,WAAAA,UAAWh1D,KAAKpB,WAAW8U,EAAAA,GAC/B1T,KAAKpB,WAAW8U,EAAAA,KAAkB1T,KAAKm1D,gBAAgBzhD,EAAAA,KACzD5T,GAAQ6I,aAAa,oBAAoB,EAAA,GAClC7I,GAAQoJ,UAAUC,IAAI,aAAA,MAE7BrJ,GAAQmqB,gBAAgB,kBAAA,GACjBnqB,GAAQoJ,UAAU1G,OAAO,aAAA,GAAA;IAGtC;IAEA0yD,oBAAoBnqD,IAAAA;AAClB,aAAO8E,MAAMC,KAAK9P,KAAKF,QAAQqqB,iBAAiBgpC,EAAAA,CAAAA,EAA0B5iD,IAAKzQ,CAAAA,OAC7EiL,GAASjL,IAAS6zD,GAAiB7zD,EAAAA,CAAAA,CAAAA;IAEvC;IAEAs1D,qBAAqBvhD,IAAAA;AACnB,YAAMwhD,KAAYjkD,KAAKO,UAAUkC,GAAKqG,KAAAA,CAAAA;AACtC,iBAAWo7C,MAAUzlD,MAAMC,KAAK9P,KAAKF,QAAQqqB,iBAAiB,iBAAA,CAAA,GAAqB;AACjF,cAAMorC,KAAaD,GAAOjpD,aAAa,eAAA,EAAiBrD,MAAM,GAAA;AAE9D,YADwBoI,KAAKO,UAAU4jD,GAAWr7C,KAAAA,CAAAA,MAC1Bm7C,GAEtB,QADAnvD,EAAa,aAAa,EAAEnB,WAAWuwD,GAAAA,CAAAA,GAAAA;MAG3C;AACA,aAAA;IACF;IAIAH,gBAAgBK,IAAAA;AACd,YAAM11D,KAAUE,KAAKq0D,UAAUmB,EAAAA;AAC/B,UAAI11D,GACF,QAAOA,GAAQiqB,aAAa,kBAAA;IAEhC;IAEAuqC,aAAakB,IAAAA;AACX,aAAIx1D,KAAKm1D,gBAAgBK,EAAAA,IAChBx1D,KAAK40D,WAAAA,IAEL50D,KAAKy1D,WAAWD,EAAAA;IAE3B;IAEAC,WAAWD,IAAAA;AAAY,UAAA/kB,IAAAgC;AACrBzyC,WAAK40D,WAAAA,GACQ,UAAbnkB,KAAIzwC,KAACm0B,aAAAA,WAAQsc,MAAbA,GAAeilB,sBAAAA;AAEf,YAAM51D,KAAUE,KAAKq0D,UAAUmB,EAAAA;AAC/B11D,MAAAA,GAAQ6I,aAAa,oBAAoB,EAAA,GACzC7I,GAAQoJ,UAAUC,IAAI,aAAA,GAEtB0G,MAAMC,KAAKhQ,GAAQqqB,iBAAiB,iBAAA,CAAA,EAAoBlhB,QAAS0sD,CAAAA,OAAAA;AAC/DA,QAAAA,GAAc1rC,gBAAgB,UAAA;MAAW,CAAA;AAG3C,YAAMvW,KAAgBigD,GAAiB7zD,EAAAA;AACvC,UAAI4T,IAAe;AACjB,cAAMhJ,KAAQgpD,GAAkB5zD,IAAS01D,EAAAA;AACrC9qD,QAAAA,OACFA,GAAMlG,QAAQxE,KAAKpB,WAAW8U,EAAAA,KAAkB,IAChDhJ,GAAMqtC,OAAAA;MAEV;AAEA,aAAoB,UAApBtF,KAAOzyC,KAAKm0B,aAAAA,WAAQse,KAAAA,SAAbA,GAAemjB,qBAAqBJ,EAAAA;IAC7C;IAEA7sD,aAAa+rD,IAAAA;AAAe,UAAA9hB;AAC1B,YAAMl/B,KAAgBigD,GAAiBe,EAAAA,GACjChqD,KAAQgpD,GAAkBgB,IAAehhD,EAAAA;AAE/C,aAAA,CAAIhJ,GAAMmrD,iBACRnrD,GAAMorD,kBAAkB,EAAA,GACnBprD,GAAMqrD,cAAAA,KAAoB/1D,KAAKg2D,gBAAgBtrD,EAAAA,MAOzC,UAAbkoC,KAAI5yC,KAACm0B,aAAAA,WAAQye,MAAbA,GAAeqjB,0BAA0BviD,IAAehJ,GAAMlG,KAAAA,GACvDxE,KAAK40D,WAAAA,MAPRlqD,GAAMorD,kBAAkB,eAAA,GACxBprD,GAAM/B,aAAa,sBAAsB,EAAA,GACzC+B,GAAMxB,UAAUC,IAAI,eAAA,GACbuB,GAAM8wC,MAAAA;IAKnB;IAEAwa,gBAAgBtrD,IAAAA;AACd,aAAA,CAAIA,GAAMqf,aAAa,yBAAA,KACdhC,GAAUmuC,iBAAiB,KAAK,QAAQxrD,GAAMlG,KAAAA;IAIzD;IAEAylB,gBAAgByqC,IAAAA;AAAe,UAAA3hB;AAC7B,YAAMr/B,KAAgBigD,GAAiBe,EAAAA;AAEvC,aADa3hB,UAAbA,KAAA/yC,KAAKm0B,aAAAA,WAAQ4e,MAAbA,GAAeojB,0BAA0BziD,EAAAA,GAClC1T,KAAK40D,WAAAA;IACd;IAEAA,aAAAA;AACE,YAAM90D,KAAUE,KAAKF,QAAQ0U,cAAc++C,EAAAA;AAC9B,UAAArgB;AAAb,UAAIpzC,GAIF,QAHAA,GAAQmqB,gBAAgB,kBAAA,GACxBnqB,GAAQoJ,UAAU1G,OAAO,aAAA,GACzBxC,KAAKk0D,kBAAAA,GAAAA,UACLhhB,KAAOlzC,KAAKm0B,aAAAA,WAAQ+e,KAAAA,SAAbA,GAAekjB,sBA9NLt2D,CAAAA,OAAYA,GAAQuM,aAAa,kBAAA,GA8NOvM,EAAAA,CAAAA;IAE7D;IAEAo0D,oBAAAA;AACErkD,YAAMC,KAAK9P,KAAKF,QAAQqqB,iBAAiBspC,EAAAA,CAAAA,EAAsBxqD,QAASyB,CAAAA,OAAAA;AACtEA,QAAAA,GAAM/B,aAAa,YAAY,UAAA,GAC/B+B,GAAMuf,gBAAgB,oBAAA,GACtBvf,GAAMxB,UAAU1G,OAAO,eAAA;MAAgB,CAAA;IAE3C;IAEA6xD,UAAUmB,IAAAA;AACR,aAAOx1D,KAAKF,QAAQ0U,cAAAA,qBAAa/Q,OAAsB+xD,IAAU,GAAA,CAAA;IACnE;EAAA;AC3Oa,MAAMa,KAAN,cAA+B9X,GAAAA;IAiD5C1vC,YAAWqb,IAAAA;AAAoC,UAAA,EAAnCosC,eAAEA,IAAa5xD,UAAEA,IAAQD,MAAEA,GAAAA,IAAMylB;AAC3Cpb,YAAAA,GAASzJ,SAAAA,GACTrF,KAAKs2D,gBAAgBA,IACrBt2D,KAAKgX,mBAAmB,IAAIkhC,GAAiBl4C,KAAKs2D,aAAAA,GAClDt2D,KAAKgX,iBAAiBmd,WAAWn0B,MAEjCA,KAAKoqC,cAAc,IAAIU,MACvB9qC,KAAKoqC,YAAYjW,WAAWn0B,MAE5BA,KAAK0pC,oBAAoB,IAAIE,GAAkB5pC,KAAKoqC,YAAYnP,eAAAA,CAAAA,GAChEj7B,KAAK0pC,kBAAkBvV,WAAWn0B,MAElCA,KAAK0sD,kBACyB,MAA5B/4C,EAAa/I,SAAAA,IACT,IAAIwiD,GAAsBptD,KAAKs2D,aAAAA,IAC/B,IAAIjS,GAAsBrkD,KAAKs2D,aAAAA,GAErCt2D,KAAK0sD,gBAAgBv4B,WAAWn0B,MAChCA,KAAK0sD,gBAAgB3I,YAAY/jD,KAAKoqC,aAEtCpqC,KAAKu2D,wBAAwB,IAAI9Z,GAAsBz8C,KAAKs2D,eAAet2D,KAAKoqC,WAAAA,GAChFpqC,KAAKu2D,sBAAsBpiC,WAAWn0B,MAEtCA,KAAKw2D,oBAAoB,IAAI3C,GAAkB7zD,KAAKs2D,cAAcG,cAAAA,GAClEz2D,KAAKw2D,kBAAkBriC,WAAWn0B,MAElCA,KAAK02D,SAAS,IAAIhhB,GAAO11C,KAAKoqC,aAAapqC,KAAKgX,kBAAkBhX,KAAKs2D,aAAAA,GACnE5xD,KACF1E,KAAK02D,OAAO7gB,aAAanxC,EAAAA,IAEzB1E,KAAK02D,OAAO5gB,SAASrxC,EAAAA;IAEzB;IAEAsS,2BAAAA;AACE,aAAOQ,GAAwBR,yBAAyB/W,KAAKgX,gBAAAA;IAC/D;IAEAC,6BAAAA;AACE,aAAOM,GAAwBN,2BAA2BjX,KAAKgX,gBAAAA;IACjE;IAEA4Z,SAAAA;AACE,aAAO5wB,KAAKu2D,sBAAsB3lC,OAAAA;IACpC;IAEA28B,UAAAA;AACE,aAAOvtD,KAAKoqC,YAAYsC,YAAY1sC,KAAKs2D,cAAc1tC,SAAAA;IACzD;IAIAuiB,6BAA6BzmC,IAAAA;AAE3B,UADA1E,KAAK22D,oBAAoB,iBAAA,GAAA,CACpB32D,KAAK42D,cACR,QAAO52D,KAAK4wB,OAAAA;IAEhB;IAEAijB,sCAAsC9I,IAAAA;AAIpC,aAHA/qC,KAAK+qC,oBAAoBA,IACzB/qC,KAAKw2D,kBAAkBvB,iBAAiBj1D,KAAK+qC,iBAAAA,GAC7C/qC,KAAK62D,qBAAAA,GACE72D,KAAK22D,oBAAoB,qBAAqB,EAAE/3D,YAAYoB,KAAK+qC,kBAAAA,CAAAA;IAC1E;IAEAiJ,sCAAsCv+B,IAAAA;AAChCzV,WAAK82D,YACP92D,KAAK+2D,cAActhD;IAEvB;IAEAs3B,4BAA4BpuC,IAAAA;AAC1B,aAAOqB,KAAK22D,oBAAoB,eAAe,EAAEh4D,MAAAA,GAAAA,CAAAA;IACnD;IAEAm0C,4BAA4BnmC,IAAAA;AAC1B,YAAMu9B,KAAoBlqC,KAAK0pC,kBAAkBI,iBAAiBn9B,EAAAA;AAClE,aAAO3M,KAAK22D,oBAAoB,kBAAkB,EAAEhqD,YAAYu9B,GAAAA,CAAAA;IAClE;IAEA+I,6BAA6BtmC,IAAAA;AAC3B3M,WAAKu2D,sBAAsB1Y,sBAAsBlxC,EAAAA;AACjD,YAAMu9B,KAAoBlqC,KAAK0pC,kBAAkBI,iBAAiBn9B,EAAAA;AAElE,aADA3M,KAAK22D,oBAAoB,mBAAmB,EAAEhqD,YAAYu9B,GAAAA,CAAAA,GACnDlqC,KAAK22D,oBAAoB,QAAA;IAClC;IAEAvjB,yCAAyCzmC,IAAAA;AAEvC,aADA3M,KAAKu2D,sBAAsBp5C,wBAAwBxQ,EAAAA,GAC5C3M,KAAK22D,oBAAoB,QAAA;IAClC;IAEAhkB,+BAA+BhmC,IAAAA;AAC7B,YAAMu9B,KAAoBlqC,KAAK0pC,kBAAkBO,mBAAmBt9B,EAAAA;AACpE,aAAO3M,KAAK22D,oBAAoB,qBAAqB,EAAEhqD,YAAYu9B,GAAAA,CAAAA;IACrE;IAEAqJ,qCAAqC5mC,IAAYpE,IAAAA;AAG/C,aAFAvI,KAAKg3D,0BAA0Bh3D,KAAKoqC,YAAY1lC,SAASo/B,6BAA6Bn3B,EAAAA,GACtF3M,KAAKu2D,sBAAsBvY,qCAAqCrxC,IAAYpE,EAAAA,GACrEvI,KAAKgX,iBAAiB45B,iBAAiB5wC,KAAKg3D,uBAAAA;IACrD;IAEAtjB,oCAAoC/mC,IAAAA;AAClC3M,WAAKu2D,sBAAsBrY,0BAAAA,GAC3Bl+C,KAAKg3D,0BAA0B;IACjC;IAEAtmB,sDAAsDnM,IAAAA;AACpD,UAAA,CAAIvkC,KAAKi3D,mBAAoBj3D,KAAKk3D,UAAAA,EAGlC,QAFAl3D,KAAKm3D,yBAAyB5yB,IAC9BvkC,KAAKo3D,gDAAgDp3D,KAAKoqC,YAAYY,UACjEhrC,KAAK42D,gBAAAA,SACD52D,KAAK4wB,OAAAA;IAEhB;IAEA6a,8BAAAA;AACEzrC,WAAKi3D,kBAAAA;IACP;IAEAtrB,6BAAAA;AACE3rC,WAAKu2D,sBAAsBzY,iBAAAA,GAC3B99C,KAAK4wB,OAAAA,GACL5wB,KAAKi3D,kBAAAA;IACP;IAEAtmB,sBAAAA;AACE,aAAO3wC,KAAKgX;IACd;IAIAgzB,+CAA+Cr9B,IAAAA;AAC7C,aAAO3M,KAAKkuC,iBAAiBvhC,EAAAA;IAC/B;IAIA+wC,4CAAAA;AAGE,aAFA19C,KAAK0sD,gBAAgBxJ,2BAAAA,GACrBljD,KAAKgX,iBAAiB8hC,KAAAA,GACf94C,KAAKgX,iBAAiBgiC,eAAAA;IAC/B;IAEA2E,2CAAAA;AAIE,aAHA39C,KAAK0sD,gBAAgBvJ,0BAAAA,GACrBnjD,KAAKgX,iBAAiB+hC,OAAAA,GACtB/4C,KAAK62D,qBAAAA,GACE72D,KAAK22D,oBAAoB,MAAA;IAClC;IAEA/Y,iCAAAA;AACM59C,WAAKm3D,2BACHn3D,KAAKo3D,kDAAkDp3D,KAAKoqC,YAAYY,YAC1EhrC,KAAKgX,iBAAiB45B,iBAAiB5wC,KAAKm3D,sBAAAA,GAE9Cn3D,KAAKm3D,yBAAyB,MAC9Bn3D,KAAKo3D,gDAAgD,OAGnDp3D,KAAKq3D,gCAAgCr3D,KAAKoqC,YAAYY,aACxDhrC,KAAKs3D,iBAAAA,GACLt3D,KAAKoqC,YAAYsF,wBAAAA,GACjB1vC,KAAK22D,oBAAoB,QAAA,IAG3B32D,KAAKq3D,8BAA8Br3D,KAAKoqC,YAAYY;IACtD;IAEAgS,gCAAAA;AAKE,aAJIh9C,KAAKu3D,mBAAAA,KACPv3D,KAAK4wC,iBAAiB,EAAE5+B,OAAO,GAAG/C,QAAQ,EAAA,CAAA,GAE5CjP,KAAKw2D,kBAAkB5B,WAAAA,GAChB50D,KAAK22D,oBAAoB,OAAA;IAClC;IAEAzZ,+BAAAA;AACE,aAAOl9C,KAAK22D,oBAAoB,MAAA;IAClC;IAEAvZ,yCAAyCzwC,IAAYpE,IAAAA;AAEnD,aADAvI,KAAKw2D,kBAAkB5B,WAAAA,GAChB50D,KAAKoqC,YAAY4D,eAAerhC,IAAYpE,EAAAA;IACrD;IAEA+1C,qDAAqD3xC,IAAAA;AACnD,YAAM43B,KAAgBvkC,KAAKg3D,2BAA2Bh3D,KAAKoqC,YAAY1lC,SAASo/B,6BAA6Bn3B,EAAAA;AAC7G,aAAO3M,KAAKgX,iBAAiB45B,iBAAiBrM,GAAc,CAAA,CAAA;IAC9D;IAEA6Z,0CAA0CzxC,IAAAA;AACxC,aAAO3M,KAAK02D,OAAOpiB,gBAAgB,mBAAmB,EAAEzlB,SAASliB,GAAWxB,IAAIqpC,gBAAAA,KAAgB,CAAA;IAClG;IAEA6J,mDAAmD1xC,IAAAA;AACjD,aAAO3M,KAAKkuC,iBAAiBvhC,EAAAA;IAC/B;IAIAs3C,iCAAAA;AACEjkD,WAAK42D,gBAAAA,MACL52D,KAAKw3D,kBAAAA;IACP;IAEAlU,kCAAAA;AACEtjD,WAAKw3D,kBAAAA;IACP;IAEAtT,gCAAAA;AAEE,UADAlkD,KAAK42D,gBAAAA,OACD52D,KAAKw3D,gBAEP,QADAx3D,KAAKw3D,kBAAAA,OACEx3D,KAAK4wB,OAAAA;IAEhB;IAEA8zB,wCAAAA;AACE,aAAO1kD,KAAK22D,oBAAoB,QAAA;IAClC;IAEAlT,mCAAAA;AACE,aAAOzjD,KAAKutD,QAAAA;IACd;IAEAtG,mCAAAA;AACE,aAAOjnD,KAAKy3D,sBAAAA;IACd;IAEA5J,qCAAqCn6C,IAAAA;AACnC,aAAO1T,KAAK03D,0BAA0BhkD,EAAAA;IACxC;IAEAm1C,6BAAAA;AACE,aAAO7oD,KAAK02D,OAAOpiB,gBAAgB,KAAA;IACrC;IAEA8U,yBAAyBL,IAAAA;AAGvB,aAFA/oD,KAAK02D,OAAOpiB,gBAAgB,OAAA,GAC5Bt0C,KAAK82D,UAAAA,MACE92D,KAAK22D,oBAAoB,gBAAgB,EAAE5N,OAAAA,GAAAA,CAAAA;IACpD;IAEAM,wBAAwBN,IAAAA;AAItB,aAHAA,GAAMtzC,QAAQzV,KAAK+2D,aACnB/2D,KAAK+2D,cAAc,MACnB/2D,KAAK82D,UAAU,MACR92D,KAAK22D,oBAAoB,SAAS,EAAE5N,OAAAA,GAAAA,CAAAA;IAC7C;IAEAR,8BAAAA;AACE,aAAOvoD,KAAK02D,OAAOpiB,gBAAgB,MAAA;IACrC;IAEAwP,iCAAAA;AACE,aAAO9jD,KAAK02D,OAAOpiB,gBAAgB,YAAA;IACrC;IAEAsd,iCAAAA;AACE,aAAO5xD,KAAK02D,OAAOh0D,KAAAA;IACrB;IAEAgvD,iCAAAA;AACE,aAAO1xD,KAAK02D,OAAOn0D,KAAAA;IACrB;IAEAqkD,yCAAyC/yC,IAAAA;AACvC,aAAO7T,KAAKw2D,kBAAkBpB,qBAAqBvhD,EAAAA;IACrD;IAEA4zC,8BAAAA;AACEznD,WAAK23D,0BAA0B33D,KAAKgX,iBAAiB21B,iBAAAA;IACvD;IAEAob,uCAAuC/N,IAAAA;AACrC,aAAOh6C,KAAKgX,iBAAiB2hC,+BAA+BqB,EAAAA;IAC9D;IAEAkO,+BAAAA;AACEloD,WAAKgX,iBAAiB45B,iBAAiB5wC,KAAK23D,uBAAAA,GAC5C33D,KAAK23D,0BAA0B;IACjC;IAIA/d,uBAAuBrV,IAAAA;AAMrB,aALAvkC,KAAKoqC,YAAYsF,wBAAAA,GACjB1vC,KAAK62D,qBAAAA,GACD72D,KAAKg3D,2BAAAA,CAA4BhhD,GAAehW,KAAKg3D,yBAAyBzyB,EAAAA,KAChFvkC,KAAKoqC,YAAY+D,sBAAAA,GAEZnuC,KAAK22D,oBAAoB,kBAAA;IAClC;IAIAxC,wBAAAA;AACE,UAAA,CAAKn0D,KAAK2sC,iBAAAA,EACR,QAAO3sC,KAAK4wC,iBAAiB,EAAE5+B,OAAO,GAAG/C,QAAQ,EAAA,CAAA;IAErD;IAEAslD,uBAAuBH,IAAYwD,IAAAA;AACjC,aAAO53D,KAAK63D,aAAazD,IAAYwD,EAAAA;IACvC;IAEApD,0BAA0B9gD,IAAAA;AAIxB,UAHA1T,KAAK03D,0BAA0BhkD,EAAAA,GAC/B1T,KAAKoqC,YAAYyE,uBAAuBn7B,EAAAA,GACxC1T,KAAK4wB,OAAAA,GAAAA,CACA5wB,KAAK83D,gBACR,QAAO93D,KAAKs2D,cAAc9a,MAAAA;IAE9B;IAEAya,0BAA0BviD,IAAelP,IAAAA;AAIvC,UAHAxE,KAAK03D,0BAA0BhkD,EAAAA,GAC/B1T,KAAKoqC,YAAY0E,oBAAoBp7B,IAAelP,EAAAA,GACpDxE,KAAK4wB,OAAAA,GAAAA,CACA5wB,KAAK83D,gBACR,QAAO93D,KAAKs2D,cAAc9a,MAAAA;IAE9B;IAEA2a,0BAA0BziD,IAAAA;AAIxB,UAHA1T,KAAK03D,0BAA0BhkD,EAAAA,GAC/B1T,KAAKoqC,YAAYgE,uBAAuB16B,EAAAA,GACxC1T,KAAK4wB,OAAAA,GAAAA,CACA5wB,KAAK83D,gBACR,QAAO93D,KAAKs2D,cAAc9a,MAAAA;IAE9B;IAEAka,sBAAsBhB,IAAAA;AAEpB,aADA10D,KAAKoqC,YAAYmH,0BAAAA,GACVvxC,KAAKswC,gBAAAA;IACd;IAEAslB,qBAAqBJ,IAAAA;AACnB,aAAOx1D,KAAK22D,oBAAoB,uBAAuB,EAAEnB,YAAAA,GAAAA,CAAAA;IAC3D;IAEAY,qBAAqBZ,IAAAA;AAGnB,aAFAx1D,KAAKuwC,cAAAA,GACLvwC,KAAKs2D,cAAc9a,MAAAA,GACZx7C,KAAK22D,oBAAoB,uBAAuB,EAAEnB,YAAAA,GAAAA,CAAAA;IAC3D;IAIAllB,kBAAAA;AACE,UAAA,CAAKtwC,KAAK83D,gBAIR,QAHA93D,KAAKgX,iBAAiB8hC,KAAAA,GACtB94C,KAAKoqC,YAAYkG,gBAAAA,GACjBtwC,KAAK83D,kBAAAA,MACE93D,KAAK4wB,OAAAA;IAEhB;IAEA2f,gBAAAA;AACE,UAAIvwC,KAAK83D,gBAIP,QAHA93D,KAAKoqC,YAAYmG,cAAAA,GACjBvwC,KAAKgX,iBAAiB+hC,OAAAA,GACtB/4C,KAAK83D,kBAAAA,OACE93D,KAAK4wB,OAAAA;IAEhB;IAEAmnC,gBAAgB3D,IAAAA;AACd,aAAA,CAAA,CAAIp0D,KAAKg4D,iBAAiB5D,EAAAA,KAAAA,EAGS,UAAzB6D,KAACj4D,KAAKi0D,QAAQG,EAAAA,MAAAA,WAAW6D,MAAMA,UAANA,KAAxBA,GAA0Bp4D,SAAAA,WAAIo4D,MAAAA,CAA9BA,GAAgClyD,KAAK/F,IAAAA;AADzC,UAAAi4D;IAGT;IAEAJ,aAAazD,IAAYwD,IAAAA;AACvB,aAAI53D,KAAKg4D,iBAAiB5D,EAAAA,IACjBp0D,KAAK22D,oBAAoB,iBAAiB,EAAEvC,YAAAA,IAAYwD,iBAAAA,GAAAA,CAAAA,IAEhCM,UAA/BA,KAAOl4D,KAAKi0D,QAAQG,EAAAA,MAAAA,WAAW8D,MAAS,UAATA,KAAxBA,GAA0B/7C,YAAAA,WAAO+7C,KAAAA,SAAjCA,GAAmCnyD,KAAK/F,IAAAA;AAD1C,UAAAk4D;IAGT;IAEAF,iBAAiB5D,IAAAA;AACf,aAAO,OAAOv0D,KAAKu0D,EAAAA;IACrB;IAEA+D,oBAAAA;AACE,YAAMrnD,KAAS,CAAA;AACf,iBAAWsjD,MAAcp0D,KAAKi0D,QAC5BnjD,CAAAA,GAAOsjD,EAAAA,IAAcp0D,KAAK+3D,gBAAgB3D,EAAAA;AAE5C,aAAOtjD;IACT;IAEA+lD,uBAAAA;AACE,YAAMuB,KAAiBp4D,KAAKm4D,kBAAAA;AAC5B,UAAA,CAAK5iD,GAAgB6iD,IAAgBp4D,KAAKo4D,cAAAA,EAGxC,QAFAp4D,KAAKo4D,iBAAiBA,IACtBp4D,KAAKw2D,kBAAkB3B,cAAc70D,KAAKo4D,cAAAA,GACnCp4D,KAAK22D,oBAAoB,kBAAkB,EAAE1C,SAASj0D,KAAKo4D,eAAAA,CAAAA;IAEtE;IAIAd,mBAAAA;AACE,UAAIxiB,KAAW90C,KAAKoqC,YAAYgB,YAAAA;AAahC,UAXAv7B,MAAMC,KAAK9P,KAAK02D,OAAO9gB,OAAAA,EAAS3sC,QAASiO,CAAAA,OAAAA;AACvC,cAAA,EAAMxS,UAAEA,IAAQ2lC,eAAEA,GAAAA,IAAkByK;AACpCA,QAAAA,KAAW59B,GAAOnR,KAAK/F,KAAK02D,QAAQ5hB,EAAAA,KAAa,CAAA,GAC5CA,GAASpwC,aACZowC,GAASpwC,WAAWA,KAEjBowC,GAASzK,kBACZyK,GAASzK,gBAAgBA;MAC3B,CAAA,GAxdqBv4B,KA2dAgjC,IA3dG/iC,KA2dO/R,KAAKoqC,YAAYgB,YAAAA,GAAAA,CA3dlBp1B,GAAelE,GAAEu4B,eAAet4B,GAAEs4B,aAAAA,KAAAA,CAAkBv4B,GAAEpN,SAAS8K,UAAUuC,GAAErN,QAAAA,EA4dzG,QAAO1E,KAAKoqC,YAAYiB,aAAayJ,EAAAA;AA5djBujB,UAACvmD,IAAGC;IA8d5B;IAIAumD,qBAAAA;AACE,YACM9zD,KtBna4B,SAAS8kC,IAAc7V,IAAAA;AAC3D,cAAM8kC,KAAalvB,GAAY5V,EAAAA;AAC/B,YAAI8kC,GACF,QAAOA,GAAWjvB,EAAAA;AAElB,cAAM,IAAIr7B,MAAK,yBAAAxK,OAA0BgwB,EAAAA,CAAAA;MAE7C,EsB2ZoBzzB,KAAKu2D,sBAAsBlZ,uBAAAA,GACG,WAAA;AAC9C,aAAOr9C,KAAKs2D,cAAckC,aAAah0D,EAAAA;IACzC;IAEAmyD,oBAAoB8B,IAAS5vD,IAAAA;AAC3B,cAAQ4vD,IAAAA;QACN,KAAK;AACHz4D,eAAK04D,iCAAAA;AACL;QACF,KAAK;AACC14D,eAAK04D,mCACP14D,KAAK04D,iCAAAA,OACL14D,KAAK22D,oBAAoB,QAAA;AAE3B;QACF,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACH32D,eAAKs4D,mBAAAA;MAAAA;AAIT,aAAOt4D,KAAKs2D,cAAcqC,OAAOF,IAAS5vD,EAAAA;IAC5C;IAEAqlC,iBAAiBvhC,IAAAA;AAGf,aAFA3M,KAAK02D,OAAOpiB,gBAAgB,mBAAA,GAC5Bt0C,KAAKoqC,YAAY8D,iBAAiBvhC,EAAAA,GAC3B3M,KAAK4wB,OAAAA;IACd;IAEA8mC,0BAA0BhkD,IAAAA;AACxB,YAAMsuB,KAAcvuB,GAAeC,EAAAA,GAC7B6wB,KAAgBvkC,KAAKgX,iBAAiB21B,iBAAAA;AAC5C,UAAI3K,MAAAA,CAAgBpsB,GAAiB2uB,EAAAA,EACnC,QAAOvkC,KAAK02D,OAAOpiB,gBAAgB,cAAc,EAAEzlB,SAAS7uB,KAAK44D,eAAAA,GAAkBpkB,gBAAAA,KAAgB,CAAA;IAEvG;IAEAijB,wBAAAA;AACE,aAAOz3D,KAAK02D,OAAOpiB,gBAAgB,UAAU,EAC3CzlB,SAAS7uB,KAAK44D,eAAe54D,KAAK+qC,iBAAAA,GAClCyJ,gBAAAA,KAAgB,CAAA;IAEpB;IAEAokB,iBAAAA;AAA2B,eAAA1mD,KAAA7M,UAAAC,QAATupB,KAAOhf,IAAAA,MAAAqC,EAAAA,GAAAC,KAAA,GAAAA,KAAAD,IAAAC,KAAP0c,CAAAA,GAAO1c,EAAAA,IAAA9M,UAAA8M,EAAAA;AACvB,aAAO,CAAEnS,KAAK64D,mBAAAA,GAAsB74D,KAAK84D,eAAAA,GAAAA,GAAqBjpD,MAAMC,KAAK+e,EAAAA,CAAAA;IAC3E;IAEAgqC,qBAAAA;AACE,YAAMt0B,KAAgBvkC,KAAKgX,iBAAiB21B,iBAAAA;AAC5C,aAAI/2B,GAAiB2uB,EAAAA,IACZA,GAAc,CAAA,EAAGvyB,QAEjBuyB;IAEX;IAEAu0B,iBAAAA;AACE,aAAInlD,EAAYjH,WAAW,IAClB9I,KAAKC,OAAM,oBAAIk1D,QAAOC,QAAAA,IAAYrlD,EAAYjH,QAAAA,IAE9C;IAEX;IAEAwqD,YAAAA;AAAY,UAAA+B;AACV,aAAOj5D,KAAKs2D,mBAAkD2C,UAArCA,KAAKj5D,KAAKs2D,cAAc4C,kBAAAA,WAAaD,KAAAA,SAAhCA,GAAkCjyD;IAClE;IAIAuwD,qBAAAA;AACE,aAAOv3D,KAAKk3D,UAAAA,KAAAA,CAAgBl3D,KAAK2sC,iBAAAA;IACnC;IAEA,IAAA,UAAIsnB;AACF,aAAOj0D,KAAK6O,YAAYolD;IAC1B;EAAA;AACDphC,KAnjBoBwjC,IACF,WAAA,EACf3zD,MAAM,EACJ7C,OAAAA;AACE,WAAOG,KAAK02D,OAAO3hB,QAAAA;EACpB,GACD54B,UAAAA;AACE,WAAOnc,KAAK02D,OAAOh0D,KAAAA;EACrB,EAAA,GAEFH,MAAM,EACJ1C,OAAAA;AACE,WAAOG,KAAK02D,OAAO1hB,QAAAA;EACpB,GACD74B,UAAAA;AACE,WAAOnc,KAAK02D,OAAOn0D,KAAAA;EACrB,EAAA,GAEFH,MAAM,EACJvC,OAAAA;AACE,WAAOG,KAAK02D,OAAOtgB,qBAAqB,MAAA;EAC1C,EAAA,GAEFnZ,sBAAsB,EACpBp9B,OAAAA;AACE,WAAOG,KAAK02D,OAAO5mB,wBAAAA;EACpB,GACD3zB,UAAAA;AACE,WAAOnc,KAAK02D,OAAOz5B,qBAAAA,KAA0Bj9B,KAAK4wB,OAAAA;EACpD,EAAA,GAEFoM,sBAAsB,EACpBn9B,OAAAA;AACE,WAAOG,KAAK02D,OAAO9mB,wBAAAA;EACpB,GACDzzB,UAAAA;AACE,WAAOnc,KAAK02D,OAAO15B,qBAAAA,KAA0Bh9B,KAAK4wB,OAAAA;EACpD,EAAA,GAEFhvB,aAAa,EACX/B,MAAIA,MAAAA,MAGJsc,UAAAA;AACE,WAAOxI,EAAa7I,UAAU9K,KAAK02D,OAAO7pB,WAAAA;EAC5C,EAAA,EAAA,CAAA,GAwgBNwpB,GAAiB75C,YAAY,wCAAA,GAC7B65C,GAAiB75C,YAAY,wCAAA;AAAA,MAAA,KAAA,OAAA,OAAA,EAAA,WAAA,MAAA,4BAAA,IAAA,uBAAA,IAAA,YAAA,IAAA,kBAAA,IAAA,iBAAA,IAAA,uBAAA,IAAA,uBAAA,IAAA,mBAAA,GAAA,CAAA;AAAA,MAAA,KAAA,OAAA,OAAA,EAAA,WAAA,MAAA,kBAAA,IAAA,yBAAA,GAAA,CAAA;AAAA,MAAA,KAAA,OAAA,OAAA,EAAA,WAAA,MAAA,2BAAA,IAAA,uBAAA,GAAA,CAAA;ACxkB7BzI,KAA4B,gBAAc,2QAAA;AAqB3B,MAAMolD,KAAN,cAAiC5vB,YAAAA;IAI9C6vB,oBAAAA;AACyB,aAAnBp5D,KAAK4oB,cACP5oB,KAAK4oB,YAAYjV,EAAelH,eAAAA;IAEpC;EAAA;AClBF,MAAItB,KAAK;AAIT,MAQMkuD,KAAe,SAASv5D,IAAAA;AAC5B,QAAA,CAAIA,GAAQiqB,aAAa,iBAAA,EAIzB,QADAjqB,GAAQ6I,aAAa,mBAAmB,EAAA,GrECX,SAAS7D,IAAAA;AAAyB,UAAdyD,KAAOlD,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG,CAAA;AAE3D,aADAkD,GAAQnD,QAAQ,GACTP,EAAYC,IAAWyD,EAAAA;IAChC,EqEHyB,SAAS,EAC9BxD,WAAWjF,IACXmF,cAAYA,MACHq0D,GAAyBx5D,EAAAA,EAAAA,CAAAA;EAGtC;AAnBA,MAqBMw5D,KAA2B,SAASx5D,IAAAA;AAExC,WADAy5D,GAAsBz5D,EAAAA,GACf05D,GAA6B15D,EAAAA;EACtC;AAxBA,MA0BMy5D,KAAwB,SAASz5D,IAAAA;AAAS,QAAA25D,IAAAC;AAC9C,QAAkC,UAAlCD,MAAIC,KAAAh1D,UAASi1D,0BAAAA,WAAqBF,MAA9BA,GAAA1zD,KAAA2zD,IAAiC,sBAAA,EAEnC,QADAh1D,SAASk1D,YAAY,wBAAA,OAAwB,KAAO,GAC7C/0D,EAAY,mBAAmB,EAAEE,WAAWjF,IAASqF,gBAAAA,KAAgB,CAAA;EAEhF;AA/BA,MAiCMq0D,KAA+B,SAAS15D,IAAAA;AAAS,QAAA+5D,IAAAC;AACrD,QAAkC,UAAlCD,MAAIC,KAAAp1D,UAASi1D,0BAAAA,WAAqBE,MAA9BA,GAAA9zD,KAAA+zD,IAAiC,2BAAA,GAA8B;AACjE,YAAA,EAAMh7D,SAAEA,GAAAA,IAAY6U,EAAuB9U;AAC3C,UAAI,CAAE,OAAO,GAAA,EAAMoL,SAASnL,EAAAA,EAC1B,QAAO4F,SAASk1D,YAAY,6BAAA,OAAoC96D,EAAAA;IAEpE;EACF;AAxCA,MA0EMi7D,KACApmD,EAAe1S,uBACV,EACLskC,SAAS,UACTnX,OAAO,OAAA,IAGF,EACLmX,SAAS,gBACTnX,OAAO,MAAA;AAKbra,KAA4B,eAAa,+SAAAtQ,OAsBpCrF,GAAkB,qDAAA,EAAAqF,OAIlBrF,GAAkB,2HAAA,EAAAqF,OAMlBrF,GAAkB,yKAAA,EAAAqF,OAMRs2D,GAAmBx0B,SAAO,2BAAA,EAAA9hC,OAC5Bs2D,GAAmB3rC,OAAK,+UAAA,CAAA;AAclC,MAAA4rC,KAAAA,oBAAAC;AAAA,MAAAC,KAAAA,oBAAAC;AAEH,MAAMC,KAAN,MAAMA;IAGJvrD,YAAY/O,IAAAA;AAAAA,UAAAA,IAAAA;AAAAA,SAAAA,KAAAA,MAAAA,KAASo6D,EAAAA,GAAAA,GAAAA,IAAAA,EAAAA,GAAAG,GAAAA,MAAAL,IAAA,EAAAM,UAAAA,MAAA91D,OAAAA,OAAA,CAAA,GACnBxE,KAAKF,UAAUA,IACfy6D,GAAAv6D,MAAIg6D,IAAcl6D,GAAQ06D,gBAAAA,CAAAA;IAC5B;IAEApB,oBAAAA;AACEqB,SAAAz6D,MAAIk6D,IAAAQ,EAAAA,EAAA30D,KAAJ/F,IAAAA;IACF;IAEA26D,uBAAAA;IACA;IAEA,IAAA,SAAIC;AACF,aAAOC,GAAA76D,MAAIg6D,EAAAA,EAAYY;IACzB;IAEA,IAAA,WAAI5F;AAAW,UAAA8F;AACb,aAAgC,UAAhCA,KAAO96D,KAAKF,QAAQi7D,iBAAAA,WAAYD,KAAAA,SAAzBA,GAA2B9F;IACpC;IAEA,IAAA,SAAaxwD,IAAAA;AACXxE,WAAKF,QAAQk7D,gBAAgB,YAAYx2D,EAAAA;IAC3C;IAEA,IAAA,WAAIy2D;AACF,aAAOj7D,KAAKF,QAAQiqB,aAAa,UAAA;IACnC;IAEA,IAAA,SAAavlB,IAAAA;AACXxE,WAAKF,QAAQk7D,gBAAgB,YAAYx2D,EAAAA,GACzCi2D,GAAAz6D,MAAIk6D,IAAAQ,EAAAA,EAAA30D,KAAJ/F,IAAAA;IACF;IAEA,IAAA,WAAIk7D;AACF,aAAOL,GAAA76D,MAAIg6D,EAAAA,EAAYkB;IACzB;IAEA,IAAA,oBAAIC;AACF,aAAON,GAAA76D,MAAIg6D,EAAAA,EAAYmB;IACzB;IAEA,IAAA,eAAItF;AACF,aAAOgF,GAAA76D,MAAIg6D,EAAAA,EAAYnE;IACzB;IAEA2C,aAAah0D,IAAAA;AACXi2D,SAAAz6D,MAAIk6D,IAAAQ,EAAAA,EAAA30D,KAAJ/F,IAAAA;IACF;IAEA+1D,gBAAAA;AACE,aAAO8E,GAAI76D,MAAAg6D,EAAAA,EAAYjE,cAAAA;IACzB;IAEAqF,iBAAAA;AACE,aAAOP,GAAI76D,MAAAg6D,EAAAA,EAAYoB,eAAAA;IACzB;IAEAtF,kBAAkBqF,IAAAA;AAChBV,SAAAz6D,MAAIk6D,IAAAQ,EAAAA,EAAA30D,KAAJ/F,MAAem7D,EAAAA;IACjB;EAAA;AAWD,WAAAT,KAAAA;AATyC,QAA9BW,KAAuBh2D,UAAAC,SAAA,KAAA,WAAAD,UAAA,CAAA,IAAAA,UAAA,CAAA,IAAG;AAClC,UAAA,EAAM41D,UAAEA,IAAQz2D,OAAEA,GAAAA,IAAUxE,KAAKF,SAC3Bw7D,KAAeL,MAAAA,CAAaz2D,IAC5B+2D,KAAAA,CAAAA,CAAgBF,IAChB3wD,KAAQrC,EAAY,SAAS,EAAE4yD,UAAAA,GAAAA,CAAAA,GAC/BE,KAAoBE,MAA2B3wD,GAAMywD;AAE3DN,OAAI76D,MAAAg6D,EAAAA,EAAYwB,YAAY,EAAEF,cAAAA,IAAcC,aAAAA,GAAAA,GAAeJ,EAAAA;EAC7D;AAAC,MAAAM,KAAAA,oBAAAxB;AAAA,MAAAyB,MAAAA,oBAAAzB;AAAA,MAAA0B,KAAAA,oBAAA1B;AAGH,MAAM2B,KAAN,MAAMA;IAGJ/sD,YAAY/O,IAAAA;AAASu6D,SAAAA,MAAAoB,IAAA,EAAAnB,UAAAA,MAAA91D,OAAAA,OAAA,CAAA,GAAA61D,GAAAA,MAAAqB,KAAA,EAAApB,UAAAA,MAAA91D,OAwFJmB,CAAAA,OAAAA;AACXA,QAAAA,GAAMq+C,oBACNr+C,GAAME,WAAW7F,KAAKF,QAAQ4S,QAClC1S,KAAKF,QAAQwX,MAAAA;MAAO,EAAA,CAAA,GACrB+iD,GAAAA,MAAAsB,IAAA,EAAArB,UAAAA,MAAA91D,OAEgBmB,CAAAA,OAAAA;AACf,YAAIA,GAAMq+C,iBAAkB;AAC5B,YAAIhkD,KAAKF,QAAQ+7D,SAASl2D,GAAME,MAAAA,EAAS;AAEzC,cAAMi2D,KAAQh2D,EAA2BH,GAAME,QAAQ,EAAEb,kBAAkB,QAAA,CAAA;AACtE82D,QAAAA,MAEAjsD,MAAMC,KAAK9P,KAAK46D,MAAAA,EAAQ3wD,SAAS6xD,EAAAA,KAEtC97D,KAAKF,QAAQ07C,MAAAA;MAAO,EAAA,CAAA,GAtGpBx7C,KAAKF,UAAUA;IACjB;IAEAs5D,oBAAAA;AACEmB,SAAAv6D,MAAIy7D,IA/KgB,SAAS37D,IAAAA;AAC/B,YAAIA,GAAQiqB,aAAa,YAAA,KAAiBjqB,GAAQiqB,aAAa,iBAAA,EAC7D;AAGF,cAAMrT,KAAS,WAAA;AACb,gBAAMqlD,KAAQlsD,MAAMC,KAAKhQ,GAAQ86D,MAAAA,EAAQrqD,IAAKurD,CAAAA,OAAAA;AAC5C,gBAAA,CAAKA,GAAMD,SAAS/7D,EAAAA,EAAU,QAAOg8D,GAAM1yD;UAAW,CAAA,EACrD8N,OAAO1X,CAAAA,OAAQA,EAAAA,GAEZA,KAAOu8D,GAAM/qD,KAAK,GAAA;AACxB,iBAAIxR,KACKM,GAAQ6I,aAAa,cAAcnJ,EAAAA,IAEnCM,GAAQmqB,gBAAgB,YAAA;QAAA;AAInC,eADAvT,GAAAA,GACO7R,EAAY,SAAS,EAAEE,WAAWjF,IAASmF,cAAcyR,GAAAA,CAAAA;MAClE,EA4JyC1W,KAAKF,OAAAA,CAAAA,GAC1CiM,OAAO9F,iBAAiB,SAAO40D,GAAE76D,MAAI07D,GAAAA,GAAAA,KAAgB,GACrD3vD,OAAO9F,iBAAiB,SAAO40D,GAAE76D,MAAI27D,EAAAA,GAAAA,KAAgB;IACvD;IAEAhB,uBAAAA;AAAuB,UAAAqB;AACjBA,gBAAJA,KAAAnB,GAAA76D,MAAIy7D,EAAAA,MAAAA,WAAAO,MAAJA,GAAoBp2D,QAAAA,GACpBmG,OAAO/F,oBAAoB,SAAO60D,GAAE76D,MAAI07D,GAAAA,GAAAA,KAAgB,GACxD3vD,OAAO/F,oBAAoB,SAAO60D,GAAE76D,MAAI27D,EAAAA,GAAAA,KAAgB;IAC1D;IAEA,IAAA,SAAIf;AACF,YAAMA,KAAS,CAAA;AACX56D,WAAKF,QAAQqL,MAAMnL,KAAKF,QAAQo5D,iBAClC0B,GAAOjxD,KAAAA,GAAQkG,MAAMC,KAAK9P,KAAKF,QAAQo5D,cAAc/uC,iBAAgB,cAAA1mB,OAAezD,KAAKF,QAAQqL,IAAE,IAAA,CAAA,KAAS,CAAA,CAAA,CAAA;AAG9G,YAAM2wD,KAAQh2D,EAA2B9F,KAAKF,SAAS,EAAEkF,kBAAkB,QAAA,CAAA;AAO3E,aANI82D,MACE,CAAE97D,KAAKF,SAAS,IAAA,EAAOmK,SAAS6xD,GAAMzQ,OAAAA,KACxCuP,GAAOjxD,KAAKmyD,EAAAA,GAITlB;IACT;IAEA,IAAA,WAAI5F;AAGF,aAFAiH,QAAQC,KAAK,kFAAA,GAAA;IAGf;IAEA,IAAA,SAAa13D,IAAAA;AACXy3D,cAAQC,KAAK,kFAAA;IACf;IAEA,IAAA,WAAIjB;AAGF,aAFAgB,QAAQC,KAAK,kFAAA,GAAA;IAGf;IAEA,IAAA,SAAa13D,IAAAA;AACXy3D,cAAQC,KAAK,kFAAA;IACf;IAEA,IAAA,WAAIhB;AAEF,aADAe,QAAQC,KAAK,+EAAA,GACN;IACT;IAEA,IAAA,oBAAIf;AAGF,aAFAc,QAAQC,KAAK,wFAAA,GAEN;IACT;IAEA,IAAA,eAAIrG;AAGF,aAFAoG,QAAQC,KAAK,mFAAA,GAAA;IAGf;IAEA1D,aAAah0D,IAAAA;IACb;IAEAuxD,gBAAAA;AAGE,aAFAkG,QAAQC,KAAK,yEAAA,GAAA;IAGf;IAEAd,iBAAAA;AAGE,aAFAa,QAAQC,KAAK,0EAAA,GAAA;IAGf;IAEApG,kBAAkBqF,IAAAA;AAChBc,cAAQC,KAAK,8FAAA;IACf;EAAA;AAmBD,MAAAC,KAAAA,oBAAAlC;AAEc,MAAMmC,KAAN,cAAgC7yB,YAAAA;IAO7C16B,cAAAA;AACEC,YAAAA,GAAOurD,GAAAA,MAAA8B,IAAA,EAAA7B,UAAAA,MAAA91D,OAAAA,OAAA,CAAA,GACP+1D,GAAAv6D,MAAIm8D,IAAan8D,KAAK6O,YAAYwtD,iBAChC,IAAIjC,GAAyBp6D,IAAAA,IAC7B,IAAI47D,GAAe57D,IAAAA,CAAAA;IACvB;IAIA,IAAA,SAAIitB;AACF,aAAIjtB,KAAK+pB,aAAa,SAAA,IACb/pB,KAAKqM,aAAa,SAAA,KAEzBrM,KAAK2I,aAAa,WAAA,EAAawC,EAAAA,GACxBnL,KAAKitB;IAEhB;IAEA,IAAA,SAAI2tC;AACF,aAAOC,GAAA76D,MAAIm8D,EAAAA,EAAWvB;IACxB;IAEA,IAAA,WAAI5F;AACF,aAAO6F,GAAA76D,MAAIm8D,EAAAA,EAAWnH;IACxB;IAEA,IAAA,SAAaxwD,IAAAA;AACXq2D,SAAAA,MAAIsB,EAAAA,EAAWnH,WAAWxwD;IAC5B;IAEA,IAAA,WAAIy2D;AACF,aAAOJ,GAAA76D,MAAIm8D,EAAAA,EAAWlB;IACxB;IAEA,IAAA,SAAaz2D,IAAAA;AACXq2D,SAAAA,MAAIsB,EAAAA,EAAWlB,WAAWz2D;IAC5B;IAEA,IAAA,WAAI02D;AACF,aAAOL,GAAA76D,MAAIm8D,EAAAA,EAAWjB;IACxB;IAEA,IAAA,oBAAIC;AACF,aAAON,GAAA76D,MAAIm8D,EAAAA,EAAWhB;IACxB;IAEA,IAAA,eAAItF;AACF,aAAOgF,GAAA76D,MAAIm8D,EAAAA,EAAWtG;IACxB;IAEA,IAAA,OAAI7qD;AACF,aAAOhL,KAAKs8D;IACd;IAEA,IAAA,iBAAI7F;AACgC,UAAA8F;AAAlC,UAAIv8D,KAAK+pB,aAAa,SAAA,EACpB,QAAyB,UAAzBwyC,KAAOv8D,KAAKk5D,kBAAAA,WAAaqD,KAAAA,SAAlBA,GAAoBjxD,eAAetL,KAAKqM,aAAa,SAAA,CAAA;AACvD,UAAIrM,KAAKD,YAAY;AAC1B,cAAMy8D,KAAS/4D,gBAAAA,OAAmBzD,KAAKitB,MAAAA;AAIvC,eAHAjtB,KAAK2I,aAAa,WAAW6zD,EAAAA,GAC7Bx8D,KAAKy8D,kBAAkBp0D,EAAY,gBAAgB,EAAE8C,IAAIqxD,GAAAA,CAAAA,GACzDx8D,KAAKD,WAAWsU,aAAarU,KAAKy8D,iBAAiBz8D,IAAAA,GAC5CA,KAAKy8D;MACd;IAGF;IAEA,IAAA,OAAI/pD;AAAO,UAAAgqD;AACT,aAAA,UAAAA,KAAO18D,KAAK+6D,iBAAAA,WAAY2B,KAAAA,SAAjBA,GAAmBhqD;IAC5B;IAEA,IAAA,eAAIqoD;AAC8B,UAAA4B;AAAhC,UAAI38D,KAAK+pB,aAAa,OAAA,EACpB,QAAyB,UAAzB4yC,KAAO38D,KAAKk5D,kBAAAA,WAAayD,KAAAA,SAAlBA,GAAoBrxD,eAAetL,KAAKqM,aAAa,OAAA,CAAA;AACvD,UAAIrM,KAAKD,YAAY;AAC1B,cAAM68D,KAAOn5D,cAAAA,OAAiBzD,KAAKitB,MAAAA;AACnCjtB,aAAK2I,aAAa,SAASi0D,EAAAA;AAC3B,cAAM98D,KAAUuI,EAAY,SAAS,EAAE2C,MAAM,UAAUG,IAAIyxD,GAAAA,CAAAA;AAE3D,eADA58D,KAAKD,WAAWsU,aAAavU,IAASE,KAAK68D,kBAAAA,GACpC/8D;MACT;IAGF;IAEA,IAAA,SAAI42D;AAAS,UAAAoG;AACX,aAAA,UAAAA,KAAO98D,KAAK+8D,qBAAAA,WAAgBD,KAAAA,SAArBA,GAAuBpG;IAChC;IAEA,IAAA,OAAIj4D;AAAO,UAAAu+D;AACT,aAAA,UAAAA,KAAOh9D,KAAK+6D,iBAAAA,WAAYiC,KAAAA,SAAjBA,GAAmBv+D;IAC5B;IAEA,IAAA,QAAI+F;AAAQ,UAAAy4D;AACV,aAAA,UAAAA,KAAOj9D,KAAK+6D,iBAAAA,WAAYkC,KAAAA,SAAjBA,GAAmBz4D;IAC5B;IAEA,IAAA,MAAU04D,IAAAA;AAAc,UAAAC;AACtBn9D,WAAKk9D,eAAeA,IAAAA,UACpBC,KAAAn9D,KAAK02D,WAAAA,WAAMyG,MAAXA,GAAarnB,SAAS91C,KAAKk9D,YAAAA;IAC7B;IAIAE,yBAAyB3+D,IAAM0iD,IAAUkc,IAAAA;AAC1B,sBAAT5+D,MAAwBuB,KAAKs9D,eAA2B,QAAZnc,MAAoBA,OAAakc,MAC/EjX,sBAAsB,MAAMpmD,KAAKu9D,UAAAA,CAAAA;IAErC;IAIA5E,OAAOF,IAAS5vD,IAAAA;AACd,UAAI7I,KAAK+8D,iBACP,QAAO72D,EAAY,QAAAzC,OAASg1D,EAAAA,GAAW,EAAE1zD,WAAW/E,MAAMpB,YAAYiK,GAAAA,CAAAA;IAE1E;IAEA2vD,aAAah0D,IAAAA;AACPxE,WAAK+6D,iBACP/6D,KAAK+6D,aAAav2D,QAAQA,IAC1Bq2D,GAAAA,MAAIsB,EAAAA,EAAW3D,aAAah0D,EAAAA;IAEhC;IAIA40D,oBAAAA;AACOp5D,WAAK+pB,aAAa,oBAAA,MACrBsvC,GAAar5D,IAAAA,GAraU,SAASF,IAAAA;AACpC,YAAA,CAAIA,GAAQiqB,aAAa,MAAA,EAGlBjqB,CAAAA,GAAQ6I,aAAa,QAAQ,SAAA;MACtC,EAia2B3I,IAAAA,GAEhBA,KAAK+8D,qBACR72D,EAAa,0BAA0B,EAAEnB,WAAW/E,KAAAA,CAAAA,GACpDA,KAAK+8D,mBAAmB,IAAI1G,GAAiB,EAC3CC,eAAet2D,MACfyE,MAAMzE,KAAKk9D,eAAel9D,KAAKwE,MAAAA,CAAAA,GAEjC4hD,sBAAsB,MAAMlgD,EAAa,mBAAmB,EAAEnB,WAAW/E,KAAAA,CAAAA,CAAAA,IAE3EA,KAAK+8D,iBAAiBhmD,yBAAAA,GACtB8jD,GAAAA,MAAIsB,EAAAA,EAAW/C,kBAAAA,GAEfp5D,KAAKg7D,gBAAgB,aAAA,IAAa,GA/dtB,SAASl7D,IAAAA;AACzB,YAAA,CAAK4E,SAAS8P,cAAc,QAAA,KACtB1U,GAAQiqB,aAAa,WAAA,KAAgBrlB,SAAS8P,cAAc,aAAA,MAAmB1U,GAC1EA,CAAAA,GAAQ07C,MAAAA;MAGrB,EA0dgBx7C,IAAAA;IAEd;IAEA26D,uBAAAA;AAAuB,UAAA6C;AACA,gBAArBA,KAAIx9D,KAAC+8D,qBAAAA,WAAgBS,MAArBA,GAAuBvmD,2BAAAA,GACvB4jD,GAAAA,MAAIsB,EAAAA,EAAWxB,qBAAAA,GACf36D,KAAKg7D,gBAAgB,aAAA,KAAa;IACpC;IAEAuC,YAAAA;AACEv9D,WAAKy9D,sBAAAA,GACLz9D,KAAK26D,qBAAAA,GACL36D,KAAKo5D,kBAAAA;IACP;IAEAqE,wBAAAA;AAAwB,UAAAC;AACF,gBAApBA,KAAI19D,KAACy8D,oBAAAA,WAAeiB,MAApBA,GAAsBl7D,OAAAA,GACtBxC,KAAKy8D,kBAAkB;IACzB;IAIA1G,gBAAAA;AACE,aAAO8E,GAAI76D,MAAAm8D,EAAAA,EAAWpG,cAAAA;IACxB;IAEAqF,iBAAAA;AACE,aAAOP,GAAI76D,MAAAm8D,EAAAA,EAAWf,eAAAA;IACxB;IAEAtF,kBAAkBqF,IAAAA;AAChBN,SAAAA,MAAIsB,EAAAA,EAAWrG,kBAAkBqF,EAAAA;IACnC;IAEAwC,qBAAqB3I,IAAAA;AACfh1D,WAAK+6D,iBACP/6D,KAAK+6D,aAAa/F,WAAWA,KAE/Bh1D,KAAKg7D,gBAAgB,mBAAA,CAAoBhG,EAAAA;IAC3C;IAEA4I,oBAAAA;AACE59D,WAAKsX,MAAAA;IACP;IAEAA,QAAAA;AACEtX,WAAKwE,QAAQxE,KAAKk9D;IACpB;EAAA;AACDrqC,KAzMoBupC,IACK,kBAAA,sBAAsBrwD,MAAAA,GAAM8mB,GADjCupC,IAGS,sBAAA,CAAE,WAAA,CAAA;AClVhC,MAAMyB,KAAO,EACXC,SAASC,GACTpqD,QAAAA,GACAqqD,MAAAA,IACAC,QAAAA,IACAlgD,OAAAA,IACAmgD,aAAAA,IACAC,WAAAA,IACAza,YAAAA,IACAvoC,UAAAA,OAAAA,OAAAA,EAAAA,WAAAA,MAAAA,mBAAAA,IAAAA,oBAAAA,GAAAA,CAAAA,GACAy6B,SAAAA,OAAAA,OAAAA,EAAAA,WAAAA,MAAAA,QAAAA,IAAAA,yBAAAA,GAAAA,CAAAA,EAAAA;AAIFhiC,SAAO0V,OAAOu0C,IAAMI,EAAAA,GAYpBlyD,OAAO8xD,OAAOA,IACdxoD,WAXA,WAAA;AACO+oD,mBAAeprD,IAAI,cAAA,KACtBorD,eAAeC,OAAO,gBAAgBljD,EAAAA,GAGnCijD,eAAeprD,IAAI,aAAA,KACtBorD,eAAeC,OAAO,eAAeljD,EAAAA;EAEzC,GAGkB,CAAA;;;ACvClB,MAAI,WAAW;AAAA,IACb,SAAS,CAAC;AAAA,EACZ;AAEA,GAAC,SAAS,QAAQ,SAAS;AACzB,KAAC,SAAS,SAAS;AACjB;AACE,eAAO,UAAU,QAAQ;AAAA,MAC3B;AAAA,IACF,GAAI,SAAS,aAAa;AACxB,UAAI,UAAU,CAAE,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAI;AAC/F,eAAS,SAASmjD,IAAGC,IAAG;AACtB,YAAIC,KAAIF,GAAE,CAAC,GAAGG,KAAIH,GAAE,CAAC,GAAGI,KAAIJ,GAAE,CAAC,GAAGK,KAAIL,GAAE,CAAC;AACzC,QAAAE,OAAMC,KAAIC,KAAI,CAACD,KAAIE,MAAKJ,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIC,KAAI,CAACD,KAAIE,MAAKH,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMC,KAAIH,KAAI,CAACG,KAAIF,MAAKF,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAI,CAACD,KAAIF,MAAKD,GAAE,CAAC,IAAI,aAAa;AAC5C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAI,CAACD,KAAIE,MAAKJ,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIC,KAAI,CAACD,KAAIE,MAAKH,GAAE,CAAC,IAAI,aAAa;AAC5C,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMC,KAAIH,KAAI,CAACG,KAAIF,MAAKF,GAAE,CAAC,IAAI,aAAa;AAC5C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAI,CAACD,KAAIF,MAAKD,GAAE,CAAC,IAAI,WAAW;AAC1C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAI,CAACD,KAAIE,MAAKJ,GAAE,CAAC,IAAI,aAAa;AAC5C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIC,KAAI,CAACD,KAAIE,MAAKH,GAAE,CAAC,IAAI,aAAa;AAC5C,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMC,KAAIH,KAAI,CAACG,KAAIF,MAAKF,GAAE,EAAE,IAAI,QAAQ;AACxC,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAI,CAACD,KAAIF,MAAKD,GAAE,EAAE,IAAI,aAAa;AAC7C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAI,CAACD,KAAIE,MAAKJ,GAAE,EAAE,IAAI,aAAa;AAC7C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIC,KAAI,CAACD,KAAIE,MAAKH,GAAE,EAAE,IAAI,WAAW;AAC3C,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMC,KAAIH,KAAI,CAACG,KAAIF,MAAKF,GAAE,EAAE,IAAI,aAAa;AAC7C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAI,CAACD,KAAIF,MAAKD,GAAE,EAAE,IAAI,aAAa;AAC7C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIE,KAAID,KAAI,CAACC,MAAKJ,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIE,KAAID,KAAI,CAACC,MAAKH,GAAE,CAAC,IAAI,aAAa;AAC5C,QAAAI,MAAKA,MAAK,IAAIA,OAAM,MAAMH,KAAI;AAC9B,QAAAE,OAAMC,KAAIF,KAAID,KAAI,CAACC,MAAKF,GAAE,EAAE,IAAI,YAAY;AAC5C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIF,KAAIG,KAAI,CAACH,MAAKD,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIE,KAAID,KAAI,CAACC,MAAKJ,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIE,KAAID,KAAI,CAACC,MAAKH,GAAE,EAAE,IAAI,WAAW;AAC3C,QAAAI,MAAKA,MAAK,IAAIA,OAAM,MAAMH,KAAI;AAC9B,QAAAE,OAAMC,KAAIF,KAAID,KAAI,CAACC,MAAKF,GAAE,EAAE,IAAI,YAAY;AAC5C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIF,KAAIG,KAAI,CAACH,MAAKD,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIE,KAAID,KAAI,CAACC,MAAKJ,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIE,KAAID,KAAI,CAACC,MAAKH,GAAE,EAAE,IAAI,aAAa;AAC7C,QAAAI,MAAKA,MAAK,IAAIA,OAAM,MAAMH,KAAI;AAC9B,QAAAE,OAAMC,KAAIF,KAAID,KAAI,CAACC,MAAKF,GAAE,CAAC,IAAI,YAAY;AAC3C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIF,KAAIG,KAAI,CAACH,MAAKD,GAAE,CAAC,IAAI,aAAa;AAC5C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIE,KAAID,KAAI,CAACC,MAAKJ,GAAE,EAAE,IAAI,aAAa;AAC7C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIE,KAAID,KAAI,CAACC,MAAKH,GAAE,CAAC,IAAI,WAAW;AAC1C,QAAAI,MAAKA,MAAK,IAAIA,OAAM,MAAMH,KAAI;AAC9B,QAAAE,OAAMC,KAAIF,KAAID,KAAI,CAACC,MAAKF,GAAE,CAAC,IAAI,aAAa;AAC5C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIF,KAAIG,KAAI,CAACH,MAAKD,GAAE,EAAE,IAAI,aAAa;AAC7C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAIC,MAAKJ,GAAE,CAAC,IAAI,SAAS;AACnC,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIC,KAAIC,MAAKH,GAAE,CAAC,IAAI,aAAa;AACvC,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMC,KAAIH,KAAIC,MAAKF,GAAE,EAAE,IAAI,aAAa;AACxC,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAIH,MAAKD,GAAE,EAAE,IAAI,WAAW;AACtC,QAAAE,MAAKA,MAAK,KAAKA,OAAM,KAAKC,KAAI;AAC9B,QAAAF,OAAMC,KAAIC,KAAIC,MAAKJ,GAAE,CAAC,IAAI,aAAa;AACvC,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIC,KAAIC,MAAKH,GAAE,CAAC,IAAI,aAAa;AACvC,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMC,KAAIH,KAAIC,MAAKF,GAAE,CAAC,IAAI,YAAY;AACtC,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAIH,MAAKD,GAAE,EAAE,IAAI,aAAa;AACxC,QAAAE,MAAKA,MAAK,KAAKA,OAAM,KAAKC,KAAI;AAC9B,QAAAF,OAAMC,KAAIC,KAAIC,MAAKJ,GAAE,EAAE,IAAI,YAAY;AACvC,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIC,KAAIC,MAAKH,GAAE,CAAC,IAAI,YAAY;AACtC,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMC,KAAIH,KAAIC,MAAKF,GAAE,CAAC,IAAI,YAAY;AACtC,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAIH,MAAKD,GAAE,CAAC,IAAI,WAAW;AACrC,QAAAE,MAAKA,MAAK,KAAKA,OAAM,KAAKC,KAAI;AAC9B,QAAAF,OAAMC,KAAIC,KAAIC,MAAKJ,GAAE,CAAC,IAAI,YAAY;AACtC,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMH,KAAIC,KAAIC,MAAKH,GAAE,EAAE,IAAI,YAAY;AACvC,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMC,KAAIH,KAAIC,MAAKF,GAAE,EAAE,IAAI,YAAY;AACvC,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAMC,KAAIC,KAAIH,MAAKD,GAAE,CAAC,IAAI,YAAY;AACtC,QAAAE,MAAKA,MAAK,KAAKA,OAAM,KAAKC,KAAI;AAC9B,QAAAF,OAAME,MAAKD,KAAI,CAACE,OAAMJ,GAAE,CAAC,IAAI,YAAY;AACzC,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMF,MAAKD,KAAI,CAACE,OAAMH,GAAE,CAAC,IAAI,aAAa;AAC1C,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMF,MAAKG,KAAI,CAACF,OAAMF,GAAE,EAAE,IAAI,aAAa;AAC3C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAME,MAAKD,KAAI,CAACF,OAAMD,GAAE,CAAC,IAAI,WAAW;AACxC,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAME,MAAKD,KAAI,CAACE,OAAMJ,GAAE,EAAE,IAAI,aAAa;AAC3C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMF,MAAKD,KAAI,CAACE,OAAMH,GAAE,CAAC,IAAI,aAAa;AAC1C,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMF,MAAKG,KAAI,CAACF,OAAMF,GAAE,EAAE,IAAI,UAAU;AACxC,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAME,MAAKD,KAAI,CAACF,OAAMD,GAAE,CAAC,IAAI,aAAa;AAC1C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAME,MAAKD,KAAI,CAACE,OAAMJ,GAAE,CAAC,IAAI,aAAa;AAC1C,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMF,MAAKD,KAAI,CAACE,OAAMH,GAAE,EAAE,IAAI,WAAW;AACzC,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMF,MAAKG,KAAI,CAACF,OAAMF,GAAE,CAAC,IAAI,aAAa;AAC1C,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAME,MAAKD,KAAI,CAACF,OAAMD,GAAE,EAAE,IAAI,aAAa;AAC3C,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAME,MAAKD,KAAI,CAACE,OAAMJ,GAAE,CAAC,IAAI,YAAY;AACzC,QAAAC,MAAKA,MAAK,IAAIA,OAAM,MAAMC,KAAI;AAC9B,QAAAE,OAAMF,MAAKD,KAAI,CAACE,OAAMH,GAAE,EAAE,IAAI,aAAa;AAC3C,QAAAI,MAAKA,MAAK,KAAKA,OAAM,MAAMH,KAAI;AAC/B,QAAAE,OAAMF,MAAKG,KAAI,CAACF,OAAMF,GAAE,CAAC,IAAI,YAAY;AACzC,QAAAG,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAF,OAAME,MAAKD,KAAI,CAACF,OAAMD,GAAE,CAAC,IAAI,YAAY;AACzC,QAAAE,MAAKA,MAAK,KAAKA,OAAM,MAAMC,KAAI;AAC/B,QAAAJ,GAAE,CAAC,IAAIE,KAAIF,GAAE,CAAC,IAAI;AAClB,QAAAA,GAAE,CAAC,IAAIG,KAAIH,GAAE,CAAC,IAAI;AAClB,QAAAA,GAAE,CAAC,IAAII,KAAIJ,GAAE,CAAC,IAAI;AAClB,QAAAA,GAAE,CAAC,IAAIK,KAAIL,GAAE,CAAC,IAAI;AAAA,MACpB;AACA,eAAS,OAAOM,IAAG;AACjB,YAAI,UAAU,CAAC,GAAGC;AAClB,aAAKA,KAAI,GAAGA,KAAI,IAAIA,MAAK,GAAG;AAC1B,kBAAQA,MAAK,CAAC,IAAID,GAAE,WAAWC,EAAC,KAAKD,GAAE,WAAWC,KAAI,CAAC,KAAK,MAAMD,GAAE,WAAWC,KAAI,CAAC,KAAK,OAAOD,GAAE,WAAWC,KAAI,CAAC,KAAK;AAAA,QACzH;AACA,eAAO;AAAA,MACT;AACA,eAAS,aAAaL,IAAG;AACvB,YAAI,UAAU,CAAC,GAAGK;AAClB,aAAKA,KAAI,GAAGA,KAAI,IAAIA,MAAK,GAAG;AAC1B,kBAAQA,MAAK,CAAC,IAAIL,GAAEK,EAAC,KAAKL,GAAEK,KAAI,CAAC,KAAK,MAAML,GAAEK,KAAI,CAAC,KAAK,OAAOL,GAAEK,KAAI,CAAC,KAAK;AAAA,QAC7E;AACA,eAAO;AAAA,MACT;AACA,eAAS,KAAKD,IAAG;AACf,YAAIE,KAAIF,GAAE,QAAQ,QAAQ,CAAE,YAAY,YAAY,aAAa,SAAU,GAAGC,IAAG,QAAQ,MAAM,KAAK,IAAIE;AACxG,aAAKF,KAAI,IAAIA,MAAKC,IAAGD,MAAK,IAAI;AAC5B,mBAAS,OAAO,OAAOD,GAAE,UAAUC,KAAI,IAAIA,EAAC,CAAC,CAAC;AAAA,QAChD;AACA,QAAAD,KAAIA,GAAE,UAAUC,KAAI,EAAE;AACtB,iBAASD,GAAE;AACX,eAAO,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE;AACxD,aAAKC,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAC9B,eAAKA,MAAK,CAAC,KAAKD,GAAE,WAAWC,EAAC,MAAMA,KAAI,KAAK;AAAA,QAC/C;AACA,aAAKA,MAAK,CAAC,KAAK,QAAQA,KAAI,KAAK;AACjC,YAAIA,KAAI,IAAI;AACV,mBAAS,OAAO,IAAI;AACpB,eAAKA,KAAI,GAAGA,KAAI,IAAIA,MAAK,GAAG;AAC1B,iBAAKA,EAAC,IAAI;AAAA,UACZ;AAAA,QACF;AACA,cAAMC,KAAI;AACV,cAAM,IAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB;AAC7C,aAAK,SAAS,IAAI,CAAC,GAAG,EAAE;AACxB,QAAAC,MAAK,SAAS,IAAI,CAAC,GAAG,EAAE,KAAK;AAC7B,aAAK,EAAE,IAAI;AACX,aAAK,EAAE,IAAIA;AACX,iBAAS,OAAO,IAAI;AACpB,eAAO;AAAA,MACT;AACA,eAAS,WAAWP,IAAG;AACrB,YAAIM,KAAIN,GAAE,QAAQ,QAAQ,CAAE,YAAY,YAAY,aAAa,SAAU,GAAGK,IAAG,QAAQ,MAAM,KAAK,IAAIE;AACxG,aAAKF,KAAI,IAAIA,MAAKC,IAAGD,MAAK,IAAI;AAC5B,mBAAS,OAAO,aAAaL,GAAE,SAASK,KAAI,IAAIA,EAAC,CAAC,CAAC;AAAA,QACrD;AACA,QAAAL,KAAIK,KAAI,KAAKC,KAAIN,GAAE,SAASK,KAAI,EAAE,IAAI,IAAI,WAAW,CAAC;AACtD,iBAASL,GAAE;AACX,eAAO,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE;AACxD,aAAKK,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAC9B,eAAKA,MAAK,CAAC,KAAKL,GAAEK,EAAC,MAAMA,KAAI,KAAK;AAAA,QACpC;AACA,aAAKA,MAAK,CAAC,KAAK,QAAQA,KAAI,KAAK;AACjC,YAAIA,KAAI,IAAI;AACV,mBAAS,OAAO,IAAI;AACpB,eAAKA,KAAI,GAAGA,KAAI,IAAIA,MAAK,GAAG;AAC1B,iBAAKA,EAAC,IAAI;AAAA,UACZ;AAAA,QACF;AACA,cAAMC,KAAI;AACV,cAAM,IAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB;AAC7C,aAAK,SAAS,IAAI,CAAC,GAAG,EAAE;AACxB,QAAAC,MAAK,SAAS,IAAI,CAAC,GAAG,EAAE,KAAK;AAC7B,aAAK,EAAE,IAAI;AACX,aAAK,EAAE,IAAIA;AACX,iBAAS,OAAO,IAAI;AACpB,eAAO;AAAA,MACT;AACA,eAAS,KAAKD,IAAG;AACf,YAAIF,KAAI,IAAII;AACZ,aAAKA,KAAI,GAAGA,KAAI,GAAGA,MAAK,GAAG;AACzB,UAAAJ,MAAK,QAAQE,MAAKE,KAAI,IAAI,IAAI,EAAE,IAAI,QAAQF,MAAKE,KAAI,IAAI,EAAE;AAAA,QAC7D;AACA,eAAOJ;AAAA,MACT;AACA,eAASK,KAAIX,IAAG;AACd,YAAIO;AACJ,aAAKA,KAAI,GAAGA,KAAIP,GAAE,QAAQO,MAAK,GAAG;AAChC,UAAAP,GAAEO,EAAC,IAAI,KAAKP,GAAEO,EAAC,CAAC;AAAA,QAClB;AACA,eAAOP,GAAE,KAAK,EAAE;AAAA,MAClB;AACA,UAAIW,KAAI,KAAK,OAAO,CAAC,MAAM,mCAAoC;AAC/D,UAAI,OAAO,gBAAgB,eAAe,CAAC,YAAY,UAAU,OAAO;AACtE,SAAC,WAAW;AACV,mBAAS,MAAM,KAAK,QAAQ;AAC1B,kBAAM,MAAM,KAAK;AACjB,gBAAI,MAAM,GAAG;AACX,qBAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAAA,YACjC;AACA,mBAAO,KAAK,IAAI,KAAK,MAAM;AAAA,UAC7B;AACA,sBAAY,UAAU,QAAQ,SAASC,OAAMC,KAAI;AAC/C,gBAAI,SAAS,KAAK,YAAY,QAAQ,MAAMD,OAAM,MAAM,GAAG,MAAM,QAAQ,KAAK,QAAQ,aAAa;AACnG,gBAAIC,QAAO,aAAa;AACtB,oBAAM,MAAMA,KAAI,MAAM;AAAA,YACxB;AACA,gBAAI,QAAQ,KAAK;AACf,qBAAO,IAAI,YAAY,CAAC;AAAA,YAC1B;AACA,kBAAM,MAAM;AACZ,qBAAS,IAAI,YAAY,GAAG;AAC5B,0BAAc,IAAI,WAAW,MAAM;AACnC,0BAAc,IAAI,WAAW,MAAM,OAAO,GAAG;AAC7C,wBAAY,IAAI,WAAW;AAC3B,mBAAO;AAAA,UACT;AAAA,QACF,GAAG;AAAA,MACL;AACA,eAAS,OAAO,KAAK;AACnB,YAAI,kBAAkB,KAAK,GAAG,GAAG;AAC/B,gBAAM,SAAS,mBAAmB,GAAG,CAAC;AAAA,QACxC;AACA,eAAO;AAAA,MACT;AACA,eAAS,oBAAoB,KAAK,kBAAkB;AAClD,YAAI,SAAS,IAAI,QAAQ,OAAO,IAAI,YAAY,MAAM,GAAG,MAAM,IAAI,WAAW,IAAI,GAAGN;AACrF,aAAKA,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAC9B,cAAIA,EAAC,IAAI,IAAI,WAAWA,EAAC;AAAA,QAC3B;AACA,eAAO,mBAAmB,MAAM;AAAA,MAClC;AACA,eAAS,oBAAoB,MAAM;AACjC,eAAO,OAAO,aAAa,MAAM,MAAM,IAAI,WAAW,IAAI,CAAC;AAAA,MAC7D;AACA,eAAS,wBAAwB,OAAO,QAAQ,kBAAkB;AAChE,YAAI,SAAS,IAAI,WAAW,MAAM,aAAa,OAAO,UAAU;AAChE,eAAO,IAAI,IAAI,WAAW,KAAK,CAAC;AAChC,eAAO,IAAI,IAAI,WAAW,MAAM,GAAG,MAAM,UAAU;AACnD,eAAO,mBAAmB,SAAS,OAAO;AAAA,MAC5C;AACA,eAAS,kBAAkBI,MAAK;AAC9B,YAAI,QAAQ,CAAC,GAAG,SAASA,KAAI,QAAQX;AACrC,aAAKA,KAAI,GAAGA,KAAI,SAAS,GAAGA,MAAK,GAAG;AAClC,gBAAM,KAAK,SAASW,KAAI,OAAOX,IAAG,CAAC,GAAG,EAAE,CAAC;AAAA,QAC3C;AACA,eAAO,OAAO,aAAa,MAAM,QAAQ,KAAK;AAAA,MAChD;AACA,eAASc,YAAW;AAClB,aAAK,MAAM;AAAA,MACb;AACA,MAAAA,UAAS,UAAU,SAAS,SAAS,KAAK;AACxC,aAAK,aAAa,OAAO,GAAG,CAAC;AAC7B,eAAO;AAAA,MACT;AACA,MAAAA,UAAS,UAAU,eAAe,SAAS,UAAU;AACnD,aAAK,SAAS;AACd,aAAK,WAAW,SAAS;AACzB,YAAI,SAAS,KAAK,MAAM,QAAQP;AAChC,aAAKA,KAAI,IAAIA,MAAK,QAAQA,MAAK,IAAI;AACjC,mBAAS,KAAK,OAAO,OAAO,KAAK,MAAM,UAAUA,KAAI,IAAIA,EAAC,CAAC,CAAC;AAAA,QAC9D;AACA,aAAK,QAAQ,KAAK,MAAM,UAAUA,KAAI,EAAE;AACxC,eAAO;AAAA,MACT;AACA,MAAAO,UAAS,UAAU,MAAM,SAAS,KAAK;AACrC,YAAI,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQP,IAAG,OAAO,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG;AAC3G,aAAKA,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAC9B,eAAKA,MAAK,CAAC,KAAK,KAAK,WAAWA,EAAC,MAAMA,KAAI,KAAK;AAAA,QAClD;AACA,aAAK,QAAQ,MAAM,MAAM;AACzB,cAAMI,KAAI,KAAK,KAAK;AACpB,YAAI,KAAK;AACP,gBAAM,kBAAkB,GAAG;AAAA,QAC7B;AACA,aAAK,MAAM;AACX,eAAO;AAAA,MACT;AACA,MAAAG,UAAS,UAAU,QAAQ,WAAW;AACpC,aAAK,QAAQ;AACb,aAAK,UAAU;AACf,aAAK,QAAQ,CAAE,YAAY,YAAY,aAAa,SAAU;AAC9D,eAAO;AAAA,MACT;AACA,MAAAA,UAAS,UAAU,WAAW,WAAW;AACvC,eAAO;AAAA,UACL,MAAM,KAAK;AAAA,UACX,QAAQ,KAAK;AAAA,UACb,MAAM,KAAK,MAAM,MAAM;AAAA,QACzB;AAAA,MACF;AACA,MAAAA,UAAS,UAAU,WAAW,SAAS,OAAO;AAC5C,aAAK,QAAQ,MAAM;AACnB,aAAK,UAAU,MAAM;AACrB,aAAK,QAAQ,MAAM;AACnB,eAAO;AAAA,MACT;AACA,MAAAA,UAAS,UAAU,UAAU,WAAW;AACtC,eAAO,KAAK;AACZ,eAAO,KAAK;AACZ,eAAO,KAAK;AAAA,MACd;AACA,MAAAA,UAAS,UAAU,UAAU,SAAS,MAAM,QAAQ;AAClD,YAAIP,KAAI,QAAQ,KAAK,IAAIE;AACzB,aAAKF,MAAK,CAAC,KAAK,QAAQA,KAAI,KAAK;AACjC,YAAIA,KAAI,IAAI;AACV,mBAAS,KAAK,OAAO,IAAI;AACzB,eAAKA,KAAI,GAAGA,KAAI,IAAIA,MAAK,GAAG;AAC1B,iBAAKA,EAAC,IAAI;AAAA,UACZ;AAAA,QACF;AACA,cAAM,KAAK,UAAU;AACrB,cAAM,IAAI,SAAS,EAAE,EAAE,MAAM,gBAAgB;AAC7C,aAAK,SAAS,IAAI,CAAC,GAAG,EAAE;AACxB,QAAAE,MAAK,SAAS,IAAI,CAAC,GAAG,EAAE,KAAK;AAC7B,aAAK,EAAE,IAAI;AACX,aAAK,EAAE,IAAIA;AACX,iBAAS,KAAK,OAAO,IAAI;AAAA,MAC3B;AACA,MAAAK,UAAS,OAAO,SAAS,KAAK,KAAK;AACjC,eAAOA,UAAS,WAAW,OAAO,GAAG,GAAG,GAAG;AAAA,MAC7C;AACA,MAAAA,UAAS,aAAa,SAAS,SAAS,KAAK;AAC3C,YAAI,OAAO,KAAK,OAAO,GAAG,MAAMH,KAAI,IAAI;AACxC,eAAO,MAAM,kBAAkB,GAAG,IAAI;AAAA,MACxC;AACA,MAAAG,UAAS,cAAc,WAAW;AAChC,aAAK,MAAM;AAAA,MACb;AACA,MAAAA,UAAS,YAAY,UAAU,SAAS,SAAS,KAAK;AACpD,YAAI,OAAO,wBAAwB,KAAK,MAAM,QAAQ,KAAK,IAAI,GAAG,SAAS,KAAK,QAAQP;AACxF,aAAK,WAAW,IAAI;AACpB,aAAKA,KAAI,IAAIA,MAAK,QAAQA,MAAK,IAAI;AACjC,mBAAS,KAAK,OAAO,aAAa,KAAK,SAASA,KAAI,IAAIA,EAAC,CAAC,CAAC;AAAA,QAC7D;AACA,aAAK,QAAQA,KAAI,KAAK,SAAS,IAAI,WAAW,KAAK,OAAO,MAAMA,KAAI,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC;AAC3F,eAAO;AAAA,MACT;AACA,MAAAO,UAAS,YAAY,UAAU,MAAM,SAAS,KAAK;AACjD,YAAI,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,OAAO,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAGP,IAAG;AAC3G,aAAKA,KAAI,GAAGA,KAAI,QAAQA,MAAK,GAAG;AAC9B,eAAKA,MAAK,CAAC,KAAK,KAAKA,EAAC,MAAMA,KAAI,KAAK;AAAA,QACvC;AACA,aAAK,QAAQ,MAAM,MAAM;AACzB,cAAMI,KAAI,KAAK,KAAK;AACpB,YAAI,KAAK;AACP,gBAAM,kBAAkB,GAAG;AAAA,QAC7B;AACA,aAAK,MAAM;AACX,eAAO;AAAA,MACT;AACA,MAAAG,UAAS,YAAY,UAAU,QAAQ,WAAW;AAChD,aAAK,QAAQ,IAAI,WAAW,CAAC;AAC7B,aAAK,UAAU;AACf,aAAK,QAAQ,CAAE,YAAY,YAAY,aAAa,SAAU;AAC9D,eAAO;AAAA,MACT;AACA,MAAAA,UAAS,YAAY,UAAU,WAAW,WAAW;AACnD,YAAI,QAAQA,UAAS,UAAU,SAAS,KAAK,IAAI;AACjD,cAAM,OAAO,oBAAoB,MAAM,IAAI;AAC3C,eAAO;AAAA,MACT;AACA,MAAAA,UAAS,YAAY,UAAU,WAAW,SAAS,OAAO;AACxD,cAAM,OAAO,oBAAoB,MAAM,MAAM,IAAI;AACjD,eAAOA,UAAS,UAAU,SAAS,KAAK,MAAM,KAAK;AAAA,MACrD;AACA,MAAAA,UAAS,YAAY,UAAU,UAAUA,UAAS,UAAU;AAC5D,MAAAA,UAAS,YAAY,UAAU,UAAUA,UAAS,UAAU;AAC5D,MAAAA,UAAS,YAAY,OAAO,SAAS,KAAK,KAAK;AAC7C,YAAI,OAAO,WAAW,IAAI,WAAW,GAAG,CAAC,GAAG,MAAMH,KAAI,IAAI;AAC1D,eAAO,MAAM,kBAAkB,GAAG,IAAI;AAAA,MACxC;AACA,aAAOG;AAAA,IACT,CAAE;AAAA,EACJ,GAAG,QAAQ;AAEX,MAAI,WAAW,SAAS;AAExB,MAAM,YAAY,KAAK,UAAU,SAAS,KAAK,UAAU,YAAY,KAAK,UAAU;AAEpF,MAAM,eAAN,MAAM,cAAa;AAAA,IACjB,OAAO,OAAO,MAAMC,WAAU;AAC5B,YAAM,WAAW,IAAI,cAAa,IAAI;AACtC,eAAS,OAAOA,SAAQ;AAAA,IAC1B;AAAA,IACA,YAAY,MAAM;AAChB,WAAK,OAAO;AACZ,WAAK,YAAY;AACjB,WAAK,aAAa,KAAK,KAAK,KAAK,KAAK,OAAO,KAAK,SAAS;AAC3D,WAAK,aAAa;AAAA,IACpB;AAAA,IACA,OAAOA,WAAU;AACf,WAAK,WAAWA;AAChB,WAAK,YAAY,IAAI,SAAS;AAC9B,WAAK,aAAa,IAAI;AACtB,WAAK,WAAW,iBAAiB,QAAS,CAAAC,WAAS,KAAK,kBAAkBA,MAAK,CAAE;AACjF,WAAK,WAAW,iBAAiB,SAAU,CAAAA,WAAS,KAAK,mBAAmBA,MAAK,CAAE;AACnF,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,kBAAkBA,QAAO;AACvB,WAAK,UAAU,OAAOA,OAAM,OAAO,MAAM;AACzC,UAAI,CAAC,KAAK,cAAc,GAAG;AACzB,cAAM,eAAe,KAAK,UAAU,IAAI,IAAI;AAC5C,cAAM,eAAe,KAAK,YAAY;AACtC,aAAK,SAAS,MAAM,YAAY;AAAA,MAClC;AAAA,IACF;AAAA,IACA,mBAAmBA,QAAO;AACxB,WAAK,SAAS,iBAAiB,KAAK,KAAK,IAAI,EAAE;AAAA,IACjD;AAAA,IACA,gBAAgB;AACd,UAAI,KAAK,aAAa,KAAK,cAAc,KAAK,cAAc,KAAK,KAAK,cAAc,GAAG;AACrF,cAAMC,SAAQ,KAAK,aAAa,KAAK;AACrC,cAAM,MAAM,KAAK,IAAIA,SAAQ,KAAK,WAAW,KAAK,KAAK,IAAI;AAC3D,cAAM,QAAQ,UAAU,KAAK,KAAK,MAAMA,QAAO,GAAG;AAClD,aAAK,WAAW,kBAAkB,KAAK;AACvC,aAAK;AACL,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,WAAS,aAAa,MAAM;AAC1B,UAAM,UAAU,YAAY,SAAS,MAAM,cAAc,IAAI,IAAI;AACjE,QAAI,SAAS;AACX,aAAO,QAAQ,aAAa,SAAS;AAAA,IACvC;AAAA,EACF;AAEA,WAAS,aAAa,MAAM,UAAU;AACpC,QAAI,OAAO,QAAQ,UAAU;AAC3B,iBAAW;AACX,aAAO;AAAA,IACT;AACA,UAAMC,YAAW,KAAK,iBAAiB,QAAQ;AAC/C,WAAOC,SAAQD,SAAQ;AAAA,EACzB;AAEA,WAAS,YAAY,MAAM,UAAU;AACnC,QAAI,OAAO,QAAQ,UAAU;AAC3B,iBAAW;AACX,aAAO;AAAA,IACT;AACA,WAAO,KAAK,cAAc,QAAQ;AAAA,EACpC;AAEA,WAASE,eAAc,SAAS,MAAM,YAAY,CAAC,GAAG;AACpD,UAAM,EAAC,SAAkB,IAAI;AAC7B,UAAM,EAAC,SAAkB,YAAwB,OAAc,IAAI;AACnE,UAAMJ,SAAQ,SAAS,YAAY,OAAO;AAC1C,IAAAA,OAAM,UAAU,MAAM,WAAW,MAAM,cAAc,IAAI;AACzD,IAAAA,OAAM,SAAS,UAAU,CAAC;AAC1B,QAAI;AACF,cAAQ,WAAW;AACnB,cAAQ,cAAcA,MAAK;AAAA,IAC7B,UAAE;AACA,cAAQ,WAAW;AAAA,IACrB;AACA,WAAOA;AAAA,EACT;AAEA,WAASG,SAAQ,OAAO;AACtB,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO;AAAA,IACT,WAAW,MAAM,MAAM;AACrB,aAAO,MAAM,KAAK,KAAK;AAAA,IACzB,OAAO;AACL,aAAO,CAAC,EAAE,MAAM,KAAK,KAAK;AAAA,IAC5B;AAAA,EACF;AAEA,MAAM,aAAN,MAAiB;AAAA,IACf,YAAY,MAAM,UAAU,KAAK,gBAAgB,CAAC,GAAG;AACnD,WAAK,OAAO;AACZ,WAAK,aAAa;AAAA,QAChB,UAAU,KAAK;AAAA,QACf,cAAc,KAAK,QAAQ;AAAA,QAC3B,WAAW,KAAK;AAAA,QAChB;AAAA,MACF;AACA,WAAK,MAAM,IAAI;AACf,WAAK,IAAI,KAAK,QAAQ,KAAK,IAAI;AAC/B,WAAK,IAAI,eAAe;AACxB,WAAK,IAAI,iBAAiB,gBAAgB,kBAAkB;AAC5D,WAAK,IAAI,iBAAiB,UAAU,kBAAkB;AACtD,WAAK,IAAI,iBAAiB,oBAAoB,gBAAgB;AAC9D,aAAO,KAAK,aAAa,EAAE,QAAS,eAAa;AAC/C,aAAK,IAAI,iBAAiB,WAAW,cAAc,SAAS,CAAC;AAAA,MAC/D,CAAE;AACF,YAAM,YAAY,aAAa,YAAY;AAC3C,UAAI,aAAa,QAAW;AAC1B,aAAK,IAAI,iBAAiB,gBAAgB,SAAS;AAAA,MACrD;AACA,WAAK,IAAI,iBAAiB,QAAS,CAAAH,WAAS,KAAK,eAAeA,MAAK,CAAE;AACvE,WAAK,IAAI,iBAAiB,SAAU,CAAAA,WAAS,KAAK,gBAAgBA,MAAK,CAAE;AAAA,IAC3E;AAAA,IACA,IAAI,SAAS;AACX,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,IACA,IAAI,WAAW;AACb,YAAM,EAAC,cAA4B,SAAkB,IAAI,KAAK;AAC9D,UAAI,gBAAgB,QAAQ;AAC1B,eAAO;AAAA,MACT,OAAO;AACL,eAAO,KAAK,MAAM,QAAQ;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,OAAOD,WAAU;AACf,WAAK,WAAWA;AAChB,WAAK,IAAI,KAAK,KAAK,UAAU;AAAA,QAC3B,MAAM,KAAK;AAAA,MACb,CAAC,CAAC;AAAA,IACJ;AAAA,IACA,eAAeC,QAAO;AACpB,UAAI,KAAK,UAAU,OAAO,KAAK,SAAS,KAAK;AAC3C,cAAM,EAAC,SAAkB,IAAI;AAC7B,cAAM,EAAC,cAA4B,IAAI;AACvC,eAAO,SAAS;AAChB,aAAK,aAAa;AAClB,aAAK,mBAAmB;AACxB,aAAK,SAAS,MAAM,KAAK,OAAO,CAAC;AAAA,MACnC,OAAO;AACL,aAAK,gBAAgBA,MAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,gBAAgBA,QAAO;AACrB,WAAK,SAAS,4BAA4B,KAAK,KAAK,IAAI,cAAc,KAAK,MAAM,EAAE;AAAA,IACrF;AAAA,IACA,SAAS;AACP,YAAM,SAAS,CAAC;AAChB,iBAAW,OAAO,KAAK,YAAY;AACjC,eAAO,GAAG,IAAI,KAAK,WAAW,GAAG;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,aAAN,MAAiB;AAAA,IACf,YAAY,MAAM;AAChB,WAAK,OAAO;AACZ,WAAK,OAAO,KAAK;AACjB,YAAM,EAAC,KAAU,QAAgB,IAAI,KAAK;AAC1C,WAAK,MAAM,IAAI;AACf,WAAK,IAAI,KAAK,OAAO,KAAK,IAAI;AAC9B,WAAK,IAAI,eAAe;AACxB,iBAAW,OAAO,SAAS;AACzB,aAAK,IAAI,iBAAiB,KAAK,QAAQ,GAAG,CAAC;AAAA,MAC7C;AACA,WAAK,IAAI,iBAAiB,QAAS,CAAAA,WAAS,KAAK,eAAeA,MAAK,CAAE;AACvE,WAAK,IAAI,iBAAiB,SAAU,CAAAA,WAAS,KAAK,gBAAgBA,MAAK,CAAE;AAAA,IAC3E;AAAA,IACA,OAAOD,WAAU;AACf,WAAK,WAAWA;AAChB,WAAK,IAAI,KAAK,KAAK,KAAK,MAAM,CAAC;AAAA,IACjC;AAAA,IACA,eAAeC,QAAO;AACpB,YAAM,EAAC,QAAgB,SAAkB,IAAI,KAAK;AAClD,UAAI,UAAU,OAAO,SAAS,KAAK;AACjC,aAAK,SAAS,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,aAAK,gBAAgBA,MAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,gBAAgBA,QAAO;AACrB,WAAK,SAAS,kBAAkB,KAAK,KAAK,IAAI,cAAc,KAAK,IAAI,MAAM,EAAE;AAAA,IAC/E;AAAA,EACF;AAEA,MAAI,KAAK;AAET,MAAM,eAAN,MAAmB;AAAA,IACjB,YAAY,MAAM,KAAK,UAAU,gBAAgB,CAAC,GAAG;AACnD,WAAK,KAAK,EAAE;AACZ,WAAK,OAAO;AACZ,WAAK,MAAM;AACX,WAAK,WAAW;AAChB,WAAK,gBAAgB;AAAA,IACvB;AAAA,IACA,OAAOD,WAAU;AACf,mBAAa,OAAO,KAAK,MAAO,CAACM,QAAO,aAAa;AACnD,YAAIA,QAAO;AACT,UAAAN,UAASM,MAAK;AACd;AAAA,QACF;AACA,cAAM,OAAO,IAAI,WAAW,KAAK,MAAM,UAAU,KAAK,KAAK,KAAK,aAAa;AAC7E,eAAO,KAAK,UAAU,qCAAqC,KAAK,GAAG;AACnE,aAAK,OAAQ,CAAAA,WAAS;AACpB,cAAIA,QAAO;AACT,YAAAN,UAASM,MAAK;AAAA,UAChB,OAAO;AACL,kBAAM,SAAS,IAAI,WAAW,IAAI;AAClC,mBAAO,KAAK,UAAU,oCAAoC,OAAO,GAAG;AACpE,mBAAO,OAAQ,CAAAA,WAAS;AACtB,kBAAIA,QAAO;AACT,gBAAAN,UAASM,MAAK;AAAA,cAChB,OAAO;AACL,gBAAAN,UAAS,MAAM,KAAK,OAAO,CAAC;AAAA,cAC9B;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,QACF,CAAE;AAAA,MACJ,CAAE;AAAA,IACJ;AAAA,EACF;AAEA,WAAS,OAAO,QAAQ,eAAe,UAAU;AAC/C,QAAI,UAAU,OAAO,OAAO,UAAU,KAAK,YAAY;AACrD,aAAO,OAAO,UAAU,EAAE,GAAG,QAAQ;AAAA,IACvC;AAAA,EACF;AAEA,MAAM,yBAAN,MAA6B;AAAA,IAC3B,YAAY,OAAO,MAAM;AACvB,WAAK,QAAQ;AACb,WAAK,OAAO;AACZ,WAAK,eAAe,IAAI,aAAa,KAAK,MAAM,KAAK,KAAK,IAAI;AAC9D,WAAK,SAAS,YAAY;AAAA,IAC5B;AAAA,IACA,MAAMA,WAAU;AACd,YAAM,cAAc,SAAS,cAAc,OAAO;AAClD,kBAAY,OAAO;AACnB,kBAAY,OAAO,KAAK,MAAM;AAC9B,WAAK,MAAM,sBAAsB,eAAe,WAAW;AAC3D,WAAK,SAAS,OAAO;AACrB,WAAK,aAAa,OAAQ,CAACM,QAAO,eAAe;AAC/C,YAAIA,QAAO;AACT,sBAAY,WAAW,YAAY,WAAW;AAC9C,eAAK,cAAcA,MAAK;AAAA,QAC1B,OAAO;AACL,sBAAY,QAAQ,WAAW;AAAA,QACjC;AACA,aAAK,SAAS,KAAK;AACnB,QAAAN,UAASM,MAAK;AAAA,MAChB,CAAE;AAAA,IACJ;AAAA,IACA,yBAAyBL,QAAO;AAC9B,YAAM,WAAWA,OAAM,SAASA,OAAM,QAAQ;AAC9C,UAAI,UAAU;AACZ,aAAK,SAAS,YAAY;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,IAAI,MAAM;AACR,aAAO,KAAK,MAAM,aAAa,wBAAwB;AAAA,IACzD;AAAA,IACA,SAAS,MAAM,SAAS,CAAC,GAAG;AAC1B,aAAO,OAAO,KAAK;AACnB,aAAO,KAAK,KAAK,aAAa;AAC9B,aAAOI,eAAc,KAAK,OAAO,iBAAiB,IAAI,IAAI;AAAA,QACxD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,cAAcC,QAAO;AACnB,YAAML,SAAQ,KAAK,SAAS,SAAS;AAAA,QACnC,OAAOK;AAAA,MACT,CAAC;AACD,UAAI,CAACL,OAAM,kBAAkB;AAC3B,cAAMK,MAAK;AAAA,MACb;AAAA,IACF;AAAA,IACA,kCAAkC,KAAK;AACrC,WAAK,SAAS,uBAAuB;AAAA,QACnC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,iCAAiC,KAAK;AACpC,WAAK,SAAS,0BAA0B;AAAA,QACtC;AAAA,MACF,CAAC;AACD,UAAI,OAAO,iBAAiB,YAAa,CAAAL,WAAS,KAAK,yBAAyBA,MAAK,CAAE;AAAA,IACzF;AAAA,EACF;AAEA,MAAM,gBAAgB;AAEtB,MAAM,0BAAN,MAA8B;AAAA,IAC5B,YAAY,MAAM;AAChB,WAAK,OAAO;AACZ,WAAK,SAAS,aAAa,MAAM,aAAa,EAAE,OAAQ,WAAS,MAAM,MAAM,MAAO;AAAA,IACtF;AAAA,IACA,MAAMD,WAAU;AACd,YAAMO,eAAc,KAAK,8BAA8B;AACvD,YAAM,sBAAsB,MAAM;AAChC,cAAM,aAAaA,aAAY,MAAM;AACrC,YAAI,YAAY;AACd,qBAAW,MAAO,CAAAD,WAAS;AACzB,gBAAIA,QAAO;AACT,cAAAN,UAASM,MAAK;AACd,mBAAK,SAAS,KAAK;AAAA,YACrB,OAAO;AACL,kCAAoB;AAAA,YACtB;AAAA,UACF,CAAE;AAAA,QACJ,OAAO;AACL,UAAAN,UAAS;AACT,eAAK,SAAS,KAAK;AAAA,QACrB;AAAA,MACF;AACA,WAAK,SAAS,OAAO;AACrB,0BAAoB;AAAA,IACtB;AAAA,IACA,gCAAgC;AAC9B,YAAMO,eAAc,CAAC;AACrB,WAAK,OAAO,QAAS,WAAS;AAC5B,QAAAH,SAAQ,MAAM,KAAK,EAAE,QAAS,UAAQ;AACpC,gBAAM,aAAa,IAAI,uBAAuB,OAAO,IAAI;AACzD,UAAAG,aAAY,KAAK,UAAU;AAAA,QAC7B,CAAE;AAAA,MACJ,CAAE;AACF,aAAOA;AAAA,IACT;AAAA,IACA,SAAS,MAAM,SAAS,CAAC,GAAG;AAC1B,aAAOF,eAAc,KAAK,MAAM,kBAAkB,IAAI,IAAI;AAAA,QACxD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAM,sBAAsB;AAE5B,MAAM,sBAAsB,oBAAI;AAEhC,MAAI,UAAU;AAEd,WAASH,SAAQ;AACf,QAAI,CAAC,SAAS;AACZ,gBAAU;AACV,eAAS,iBAAiB,SAAS,UAAU,IAAI;AACjD,eAAS,iBAAiB,UAAU,eAAe,IAAI;AACvD,eAAS,iBAAiB,eAAe,sBAAsB;AAAA,IACjE;AAAA,EACF;AAEA,WAAS,SAASD,QAAO;AACvB,UAAM,SAASA,OAAM,OAAO,QAAQ,eAAe;AACnD,QAAI,UAAU,OAAO,SAAS,YAAY,OAAO,MAAM;AACrD,0BAAoB,IAAI,OAAO,MAAM,MAAM;AAAA,IAC7C;AAAA,EACF;AAEA,WAAS,cAAcA,QAAO;AAC5B,8BAA0BA,MAAK;AAAA,EACjC;AAEA,WAAS,uBAAuBA,QAAO;AACrC,QAAIA,OAAM,OAAO,WAAW,QAAQ;AAClC,gCAA0BA,MAAK;AAAA,IACjC;AAAA,EACF;AAEA,WAAS,0BAA0BA,QAAO;AACxC,UAAM,OAAOA,OAAM;AACnB,QAAI,KAAK,aAAa,mBAAmB,GAAG;AAC1C,MAAAA,OAAM,eAAe;AACrB;AAAA,IACF;AACA,UAAM,aAAa,IAAI,wBAAwB,IAAI;AACnD,UAAM,EAAC,OAAc,IAAI;AACzB,QAAI,OAAO,QAAQ;AACjB,MAAAA,OAAM,eAAe;AACrB,WAAK,aAAa,qBAAqB,EAAE;AACzC,aAAO,QAAQ,OAAO;AACtB,iBAAW,MAAO,CAAAK,WAAS;AACzB,aAAK,gBAAgB,mBAAmB;AACxC,YAAIA,QAAO;AACT,iBAAO,QAAQ,MAAM;AAAA,QACvB,OAAO;AACL,qBAAW,IAAI;AAAA,QACjB;AAAA,MACF,CAAE;AAAA,IACJ;AAAA,EACF;AAEA,WAAS,WAAW,MAAM;AACxB,QAAI,SAAS,oBAAoB,IAAI,IAAI,KAAK,YAAY,MAAM,yCAAyC;AACzG,QAAI,QAAQ;AACV,YAAM,EAAC,SAAkB,IAAI;AAC7B,aAAO,WAAW;AAClB,aAAO,MAAM;AACb,aAAO,MAAM;AACb,aAAO,WAAW;AAAA,IACpB,OAAO;AACL,eAAS,SAAS,cAAc,OAAO;AACvC,aAAO,OAAO;AACd,aAAO,MAAM,UAAU;AACvB,WAAK,YAAY,MAAM;AACvB,aAAO,MAAM;AACb,WAAK,YAAY,MAAM;AAAA,IACzB;AACA,wBAAoB,OAAO,IAAI;AAAA,EACjC;AAEA,WAAS,QAAQ,OAAO;AACtB,UAAM,WAAW;AAAA,EACnB;AAEA,WAAS,OAAO,OAAO;AACrB,UAAM,WAAW;AAAA,EACnB;AAEA,WAAS,YAAY;AACnB,QAAI,OAAO,eAAe;AACxB,MAAAJ,OAAM;AAAA,IACR;AAAA,EACF;AAEA,aAAW,WAAW,CAAC;AAEvB,MAAM,mBAAN,MAAuB;AAAA,IACrB,YAAY,YAAY,SAAS;AAC/B,WAAK,aAAa;AAClB,WAAK,UAAU;AACf,WAAK,eAAe,IAAI,aAAa,WAAW,MAAM,KAAK,iBAAiB,IAAI;AAAA,IAClF;AAAA,IACA,QAAQ;AACN,WAAK,aAAa,OAAO,KAAK,wBAAwB,KAAK,IAAI,CAAC;AAChE,WAAK,SAAS,OAAO;AAAA,IACvB;AAAA,IACA,iCAAiC,KAAK;AACpC,UAAI,OAAO,iBAAiB,YAAa,CAAAD,WAAS;AAChD,cAAM,WAAWA,OAAM,SAASA,OAAM,QAAQ;AAC9C,aAAK,WAAW,kBAAkB,QAAQ;AAC1C,YAAI,UAAU;AACZ,eAAK,SAAS,YAAY;AAAA,YACxB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAE;AAAA,IACJ;AAAA,IACA,wBAAwBK,QAAO,YAAY;AACzC,UAAIA,QAAO;AACT,aAAK,cAAcA,MAAK;AAAA,MAC1B,OAAO;AACL,aAAK,WAAW,cAAc;AAAA,UAC5B,MAAM,WAAW;AAAA,UACjB,KAAK,KAAK,cAAc,WAAW,WAAW,WAAW,QAAQ;AAAA,QACnE,CAAC;AACD,aAAK,SAAS,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IACA,cAAc,UAAU,UAAU;AAChC,aAAO,KAAK,gBAAgB,QAAQ,cAAc,QAAQ,EAAE,QAAQ,aAAa,mBAAmB,QAAQ,CAAC;AAAA,IAC/G;AAAA,IACA,SAAS,MAAM,SAAS,CAAC,GAAG;AAC1B,aAAO,aAAa,KAAK;AACzB,aAAOD,eAAc,KAAK,SAAS,iBAAiB,IAAI,IAAI;AAAA,QAC1D;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,cAAcC,QAAO;AACnB,YAAML,SAAQ,KAAK,SAAS,SAAS;AAAA,QACnC,OAAOK;AAAA,MACT,CAAC;AACD,UAAI,CAACL,OAAM,kBAAkB;AAC3B,cAAMK,MAAK;AAAA,MACb;AAAA,IACF;AAAA,IACA,IAAI,kBAAkB;AACpB,aAAO,KAAK,QAAQ,QAAQ;AAAA,IAC9B;AAAA,IACA,IAAI,kBAAkB;AACpB,aAAO,KAAK,QAAQ,QAAQ;AAAA,IAC9B;AAAA,EACF;AAEA,mBAAiB,uBAAwB,CAAAL,WAAS;AAChD,UAAM,EAAC,YAAwB,OAAc,IAAIA;AACjD,QAAI,WAAW,MAAM;AACnB,YAAM,SAAS,IAAI,iBAAiB,YAAY,MAAM;AACtD,aAAO,MAAM;AAAA,IACf;AAAA,EACF,CAAE;;;A7Zp4BF,SAAO,aAAa,kBAAAO;AAKpB,SAAO,eAAe,SAAU,KAAK;AACnC,QAAI,OAAO,QAAQ,MAAM,GAAG,EAAG,QAAO;AACtC,QAAIC,KAAI,KAAK,IAAI,GAAG;AACpB,QAAIA,MAAK,IAAK,QAAO,WAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,IAAK;AACvD,QAAIA,MAAK,IAAK,QAAO,WAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,IAAK;AACvD,QAAIA,MAAK,IAAK,QAAO,WAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,IAAK;AACvD,WAAO,WAAO,CAAC;AAAA,EACjB;AACA,SAAO,cAAc,SAAU,KAAK;AAClC,WAAO,aAAQ,OAAO,QAAQ,MAAM,GAAG,IAAI,IAAI,KAAK,eAAe,OAAO;AAAA,EAC5E;AAMA,SAAO,iBAAiB,SAAU,MAAM;AACtC,QAAIC,KAAI,KAAK;AACb,QAAI,KAAK,SAAS,eAAe,gBAAgB;AACjD,QAAI,QAAQ,CAAC;AACb,QAAI;AAAE,cAAQ,KAAK,MAAM,GAAG,aAAa,YAAY,CAAC;AAAA,IAAE,SAASC,IAAG;AAAE,cAAQ,CAAC;AAAA,IAAE;AACjF,QAAI,QAAS,MAAM,UAAU,MAAM,OAAOD,EAAC,KAAK,OAAQ,MAAM,OAAOA,EAAC,IAAI;AAC1E,QAAIE,MAAK,SAAU,KAAK;AAAE,aAAQ,OAAO,IAAIF,EAAC,KAAK,OAAQ,OAAO,IAAIA,EAAC,CAAC,IAAI;AAAA,IAAE;AAE9E,QAAI,MAAM,SAAUG,QAAO,MAAM,KAAK;AACpC,aAAO,2PAE+DA,SAAQ,oCAAoC,OAAO,wEACtD,OAAO,YAAY,GAAG,IAAI;AAAA,IAE/F;AAEA,QAAI,UAAUD,IAAG,MAAM,OAAO;AAC9B,QAAI,UAAUA,IAAG,MAAM,QAAQ;AAC/B,QAAI,UAAUA,IAAG,MAAM,OAAO;AAC9B,QAAI,SAASA,IAAG,MAAM,MAAM;AAC5B,QAAI,MAAMA,IAAG,MAAM,GAAG;AACtB,QAAI,cAAc,SAAS,IAAI,YAAY;AAE3C,WAAO,iKAC6E,QAAQ,WAC1F,IAAI,WAAW,WAAW,OAAO,IACjC,IAAI,WAAW,YAAY,OAAO,IAClC,IAAI,WAAW,WAAW,OAAO,IACjC,oEACA,IAAI,aAAa,UAAU,MAAM,IACjC,IAAI,WAAW,OAAO,GAAG,IACzB;AAAA,EACJ;",
  "names": ["it", "error", "V", "fn", "it", "it", "it", "it", "it", "it", "globalThis", "globalThis", "navigator", "userAgent", "globalThis", "userAgent", "Deno", "match", "version", "globalThis", "it", "error", "V", "P", "isObject", "fn", "globalThis", "error", "globalThis", "it", "id", "globalThis", "uid", "Symbol", "isObject", "globalThis", "isObject", "document", "it", "createElement", "O", "P", "error", "isObject", "O", "P", "error", "it", "globalThis", "WeakMap", "uid", "globalThis", "isObject", "TypeError", "WeakMap", "set", "it", "error", "O", "error", "x", "n", "index", "O", "index", "indexOf", "names", "O", "i", "O", "ownKeys", "it", "ownKeys", "i", "globalThis", "it", "error", "O", "O", "O", "index", "activeXDocument", "error", "O", "it", "error", "globalThis", "Symbol", "Symbol", "fn", "fn", "isArray", "noop", "isConstructor", "error", "isArray", "isConstructor", "isObject", "C", "O", "self", "index", "$", "globalThis", "uid", "RangeError", "TypeError", "O", "P", "V", "it", "names", "Symbol", "error", "$", "$", "isArray", "i", "j", "$", "hi", "it", "match", "$", "it", "$", "globalThis", "Symbol", "error", "isObject", "isObject", "error", "O", "it", "isObject", "isObject", "O", "error", "error", "C", "a", "b", "message", "error", "$", "globalThis", "O", "Error", "message", "RangeError", "ReferenceError", "TypeError", "O", "message", "F", "O", "it", "it", "error", "fn", "index", "error", "$", "message", "$", "message", "$", "at", "index", "O", "k", "it", "$", "isArray", "isObject", "O", "A", "n", "i", "k", "E", "O", "P", "start", "O", "to", "from", "$", "$", "fill", "O", "index", "$", "fill", "$", "$", "find", "$", "findIndex", "O", "self", "index", "$", "$", "isArray", "start", "$", "O", "A", "$", "O", "A", "$", "fn", "error", "isConstructor", "from", "O", "index", "error", "$", "from", "$", "$", "indexOf", "$", "isArray", "isObject", "$", "index", "error", "$", "O", "index", "$", "$", "map", "$", "isConstructor", "F", "index", "isArray", "error", "O", "$", "error", "O", "i", "O", "self", "index", "i", "globalThis", "userAgent", "$", "$", "$", "isArray", "$", "isArray", "isConstructor", "isObject", "start", "O", "k", "n", "$", "sort", "i", "j", "userAgent", "userAgent", "$", "index", "a", "b", "x", "y", "sort", "$", "start", "O", "A", "k", "from", "to", "O", "C", "A", "k", "$", "index", "globalThis", "$", "sort", "O", "A", "$", "start", "O", "k", "A", "$", "error", "O", "k", "to", "j", "O", "C", "index", "A", "k", "$", "index", "it", "it", "sign", "x", "n", "EPSILON", "n", "sign", "EPSILON", "x", "n", "s", "a", "x", "rt", "sign", "index", "c", "unpack", "globalThis", "Array", "RangeError", "fill", "index", "start", "set", "i", "ArrayBuffer", "DataView", "$", "globalThis", "ArrayBuffer", "globalThis", "isObject", "uid", "Int8Array", "Uint8ClampedArray", "TypeError", "isView", "it", "C", "error", "error2", "TypedArray", "$", "$", "ArrayBuffer", "DataView", "start", "index", "$", "globalThis", "ArrayBuffer", "TypeError", "O", "globalThis", "DataView", "O", "error", "it", "globalThis", "error", "globalThis", "clone", "globalThis", "error", "globalThis", "ArrayBuffer", "DataView", "a", "b", "i", "$", "$", "$", "$", "now", "$", "yi", "$", "n", "S", "sign", "$", "$", "O", "$", "hex", "index", "isObject", "C", "i", "F", "$", "isObject", "O", "P", "error", "$", "globalThis", "$", "globalThis", "it", "it", "error", "$", "drop", "$", "$", "$", "find", "$", "error", "$", "fn", "$", "from", "O", "map", "$", "map", "$", "$", "$", "$", "toArray", "globalThis", "isObject", "it", "$", "isObject", "uid", "id", "it", "enable", "i", "$", "globalThis", "isObject", "add", "set", "index", "define", "index", "set", "add", "Map", "$", "Map", "set", "it", "map", "k", "x", "n", "$", "x", "n", "$", "x", "n", "$", "x", "n", "$", "sign", "x", "n", "$", "x", "n", "x", "n", "$", "E", "x", "t", "$", "$", "$", "i", "$", "x", "y", "xn", "yn", "log10", "x", "$", "log10", "$", "x", "$", "$", "sign", "$", "E", "x", "n", "$", "x", "n", "a", "b", "$", "$", "globalThis", "TypeError", "it", "index", "Number", "n", "j", "$", "globalThis", "isFinite", "it", "$", "isObject", "it", "$", "$", "isNaN", "$", "$", "$", "globalThis", "Symbol", "parseFloat", "$", "parseFloat", "globalThis", "Symbol", "hex", "parseInt", "S", "$", "parseInt", "$", "log10", "round", "x", "f", "s", "m", "e", "c", "d", "l", "w", "n", "$", "x", "n", "x2", "c", "index", "c2", "s", "t", "sign", "e", "z", "j", "k", "$", "A", "B", "T", "index", "S", "j", "$", "$", "globalThis", "$", "P", "$", "$", "$", "__defineSetter__", "P", "O", "it", "i", "$", "O", "$", "isObject", "it", "$", "k", "v", "$", "it", "$", "ownKeys", "O", "index", "$", "$", "it", "$", "it", "k", "$", "is", "x", "y", "$", "is", "$", "$", "isObject", "it", "$", "isObject", "it", "$", "it", "$", "P", "O", "$", "P", "O", "$", "isObject", "it", "isObject", "O", "error", "$", "isObject", "it", "$", "$", "O", "$", "$", "isConstructor", "O", "C", "S", "userAgent", "globalThis", "createElement", "set", "Function", "String", "id", "fn", "event", "globalThis", "userAgent", "userAgent", "globalThis", "MutationObserver", "document", "Promise", "notify", "fn", "error", "a", "b", "error", "error", "globalThis", "globalThis", "resolve", "C", "resolve", "$", "globalThis", "isObject", "TypeError", "document", "it", "resolve", "error", "notify", "dispatchEvent", "event", "fn", "Promise", "C", "$", "C", "resolve", "index", "$", "$", "C", "$", "r", "isObject", "C", "x", "resolve", "$", "resolve", "x", "$", "C", "resolve", "index", "error", "$", "C", "resolve", "index", "error", "$", "C", "isFunction", "x", "e", "$", "globalThis", "Promise", "$", "$", "$", "isObject", "F", "$", "error", "$", "$", "isObject", "$", "$", "$", "$", "$", "ownKeys", "$", "error", "$", "isObject", "set", "V", "$", "error", "$", "globalThis", "isObject", "it", "R", "globalThis", "re", "globalThis", "re", "globalThis", "re", "globalThis", "index", "names", "RegExp", "error", "indexOf", "re", "match", "i", "$", "globalThis", "RegExp", "error", "O", "key", "$", "re", "S", "R", "R", "Set", "it", "fn", "Set", "set", "fn", "Set", "add", "set", "it", "set", "set", "it", "clone", "O", "e", "callback", "Set", "error", "set", "$", "Set", "add", "O", "e", "$", "O", "e", "$", "O", "e", "$", "O", "e", "$", "clone", "add", "O", "e", "$", "add", "clone", "O", "it", "$", "$", "at", "index", "S", "k", "S", "$", "it", "$", "$", "x", "elements", "i", "$", "$", "S", "i", "index", "O", "re", "S", "index", "R", "S", "match", "O", "S", "A", "n", "$", "R", "S", "match", "C", "O", "userAgent", "$", "$", "$", "elements", "i", "$", "m", "match", "n", "f", "it", "re", "_", "O", "S", "global", "i", "j", "$", "indexOf", "O", "O", "S", "re", "O", "S", "C", "lim", "p", "q", "A", "z", "e", "i", "$", "index", "$", "start", "$", "S", "i", "$", "$", "$", "$", "$", "S", "$", "$", "$", "$", "$", "$", "color", "$", "$", "$", "$", "$", "$", "$", "globalThis", "ArrayBuffer", "Int8Array", "it", "round", "it", "it", "from", "C", "O", "i", "$", "globalThis", "isObject", "RangeError", "ArrayBuffer", "DataView", "it", "index", "Int8Array", "Uint8Array", "Uint8ClampedArray", "at", "index", "O", "k", "start", "fill", "find", "findIndex", "indexOf", "globalThis", "Uint8Array", "map", "O", "index", "index", "globalThis", "RangeError", "Int8Array", "set", "index", "start", "C", "index", "globalThis", "index", "a", "b", "x", "y", "sort", "O", "C", "globalThis", "Int8Array", "sort", "O", "A", "globalThis", "Uint8Array", "error", "index", "O", "$", "unescape", "index", "isObject", "find", "findIndex", "id", "it", "index", "define", "set", "add", "globalThis", "isObject", "isArray", "WeakMap", "set", "WeakSet", "index", "$", "globalThis", "atob", "$", "globalThis", "btoa", "map", "globalThis", "error", "globalThis", "COLLECTION_NAME", "error", "$", "Error", "error", "DOMException", "message", "key", "$", "globalThis", "Error", "DOMException", "message", "error", "$", "globalThis", "globalThis", "Function", "version", "fn", "callback", "$", "globalThis", "$", "globalThis", "fn", "$", "globalThis", "self", "error", "$", "globalThis", "uid", "isConstructor", "isObject", "Object", "Array", "Date", "Error", "TypeError", "DOMException", "Map", "Set", "error", "error2", "map", "clone", "i", "DataView", "C", "v", "k", "value", "$", "globalThis", "setInterval", "$", "globalThis", "setTimeout", "k", "n", "i", "m", "q", "t", "$", "globalThis", "isObject", "TypeError", "encodeURIComponent", "start", "i", "find", "match", "it", "index", "URLSearchParams", "set", "sort", "a", "b", "callback", "fetch", "$", "globalThis", "URLSearchParams", "TypeError", "parseInt", "numbers", "index", "swap", "set", "i", "error", "URL", "$", "URL", "error", "$", "URL", "parse", "error", "$", "v", "k", "index", "index", "exports", "undefined", "define", "self", "Context", "fn", "resolve", "value", "error", "key", "i", "next", "global", "isArray", "isFunction", "extend", "merge", "i", "j", "n", "toDate", "matches", "defaultOptions", "hideLegend", "setTitle", "setMin", "setMax", "setStacked", "setXtitle", "setYtitle", "a", "b", "d", "isDate", "isNumber", "round", "option", "hex", "x", "s", "colors", "k", "color", "minTime", "maxTime", "defaultExport", "destroy", "d2", "callback", "config", "createDataTable", "r", "e", "event", "fn", "fn2", "p", "c", "error", "message", "$", "adapters", "Chart", "Chartkick", "LineChart", "PieChart", "ColumnChart", "BarChart", "AreaChart", "GeoChart", "ScatterChart", "BubbleChart", "Timeline", "e", "t", "o", "n", "i", "r", "a", "u", "c", "s", "f", "d", "l", "p", "m", "b", "v", "y", "g", "h", "w", "k", "x", "j", "O", "M", "S", "_", "consumer", "error", "event", "message", "extend", "consumer", "s", "consumer", "s", "subscription", "a", "global", "__assign", "t", "s", "i", "n", "p", "monthToStr", "clearNode", "getEventTarget", "event", "error", "monthSelectPlugin", "self", "index", "e", "a", "b", "_", "global", "__spreadArrays", "s", "i", "r", "k", "a", "j", "rangePlugin", "e", "d", "t", "e", "i", "a", "x", "s", "r", "v", "o", "n", "c", "l", "h", "u", "d", "g", "f", "p", "b", "m", "y", "w", "k", "A", "S", "C", "L", "P", "M", "I", "T", "z", "X", "E", "Y", "R", "F", "D", "H", "O", "N", "W", "B", "G", "V", "_", "U", "q", "Z", "$", "J", "Q", "K", "tt", "et", "it", "at", "st", "rt", "ot", "nt", "lt", "ht", "ct", "dt", "gt", "ut", "ft", "pt", "xt", "bt", "vt", "mt", "yt", "wt", "kt", "At", "St", "Ct", "Lt", "Pt", "Mt", "It", "Tt", "zt", "Xt", "Et", "Yt", "Rt", "Ht", "Ft", "Dt", "Ot", "j", "Nt", "Wt", "Bt", "Gt", "Vt", "jt", "_t", "Ut", "qt", "Zt", "$t", "Jt", "v", "l", "h", "v", "b", "a", "f", "h", "s", "l", "n", "k", "w", "i", "r", "g", "d", "c", "m", "j", "t", "color", "p", "noop", "uid", "id", "isNullOrUndef", "value", "isArray", "Array", "type", "Object", "prototype", "toString", "call", "slice", "isObject", "isNumberFinite", "Number", "isFinite", "finiteOrDefault", "defaultValue", "valueOrDefault", "toPercentage", "dimension", "endsWith", "parseFloat", "toDimension", "callback", "fn", "args", "thisArg", "apply", "each", "loopable", "reverse", "i", "len", "keys", "length", "_elementsEqual", "a0", "a1", "ilen", "v0", "v1", "datasetIndex", "index", "clone", "source", "map", "target", "create", "klen", "k", "isValidKey", "key", "indexOf", "_merger", "options", "tval", "sval", "merge", "sources", "merger", "current", "mergeIf", "_mergerIf", "hasOwnProperty", "keyResolvers", "v", "x", "o", "y", "_splitKey", "key", "parts", "split", "keys", "tmp", "part", "endsWith", "slice", "push", "_getKeyResolver", "obj", "k", "resolveObjectKey", "resolver", "_capitalize", "str", "charAt", "toUpperCase", "defined", "value", "isFunction", "setsEqual", "a", "b", "size", "item", "has", "_isClickEvent", "e", "type", "PI", "Math", "TAU", "PITAU", "INFINITY", "Number", "POSITIVE_INFINITY", "RAD_PER_DEG", "HALF_PI", "QUARTER_PI", "TWO_THIRDS_PI", "log10", "sign", "almostEquals", "epsilon", "abs", "niceNum", "range", "roundedRange", "round", "niceRange", "pow", "floor", "fraction", "niceFraction", "_factorize", "result", "sqrt", "i", "sort", "pop", "isNumber", "n", "isNaN", "parseFloat", "isFinite", "almostWhole", "rounded", "_setMinAndMaxByKey", "array", "target", "property", "ilen", "length", "min", "max", "toRadians", "degrees", "toDegrees", "radians", "_decimalPlaces", "isFiniteNumber", "p", "getAngleFromPoint", "centrePoint", "anglePoint", "distanceFromXCenter", "distanceFromYCenter", "radialDistanceFromCenter", "angle", "atan2", "distance", "distanceBetweenPoints", "pt1", "pt2", "_angleDiff", "_normalizeAngle", "_angleBetween", "start", "end", "sameAngleIsFullCircle", "s", "angleToStart", "angleToEnd", "startToAngle", "endToAngle", "_limitValue", "_int16Range", "_isBetween", "_lookup", "table", "cmp", "index", "hi", "lo", "mid", "_lookupByKey", "last", "ti", "_rlookupByKey", "_filterBetween", "values", "arrayEvents", "listenArrayEvents", "listener", "_chartjs", "listeners", "Object", "defineProperty", "configurable", "enumerable", "forEach", "method", "base", "args", "res", "apply", "object", "unlistenArrayEvents", "stub", "indexOf", "splice", "_arrayUnique", "items", "set", "Set", "Array", "from", "requestAnimFrame", "window", "callback", "requestAnimationFrame", "throttled", "fn", "thisArg", "argsToUse", "ticking", "args", "call", "apply", "debounce", "delay", "timeout", "clearTimeout", "setTimeout", "_toLeftRightCenter", "align", "_alignStartEnd", "start", "end", "_textX", "left", "right", "rtl", "check", "_getStartAndCountOfVisiblePoints", "meta", "points", "animationsDisabled", "pointCount", "length", "count", "_sorted", "iScale", "_parsed", "axis", "min", "max", "minDefined", "maxDefined", "getUserBounds", "_limitValue", "Math", "_lookupByKey", "lo", "getPixelForValue", "hi", "_scaleRangesChanged", "xScale", "yScale", "_scaleRanges", "newRanges", "xmin", "xmax", "ymin", "ymax", "changed", "Object", "assign", "atEdge", "t", "elasticIn", "s", "p", "pow", "sin", "TAU", "elasticOut", "effects", "linear", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInCubic", "easeOutCubic", "easeInOutCubic", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInSine", "cos", "HALF_PI", "easeOutSine", "easeInOutSine", "PI", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInCirc", "sqrt", "easeOutCirc", "easeInOutCirc", "easeInElastic", "easeOutElastic", "easeInOutElastic", "easeInBack", "easeOutBack", "easeInOutBack", "easeInBounce", "easeOutBounce", "m", "d", "easeInOutBounce", "isPatternOrGradient", "value", "type", "toString", "color", "Color", "getHoverColor", "saturate", "darken", "hexString", "numbers", "colors", "applyAnimationsDefaults", "defaults", "set", "undefined", "duration", "easing", "from", "loop", "to", "describe", "_fallback", "_indexable", "_scriptable", "name", "properties", "active", "animation", "resize", "show", "animations", "visible", "hide", "v", "applyLayoutsDefaults", "autoPadding", "padding", "top", "bottom", "intlCache", "Map", "getNumberFormat", "locale", "options", "cacheKey", "JSON", "stringify", "formatter", "get", "Intl", "NumberFormat", "formatNumber", "num", "format", "formatters", "values", "isArray", "numeric", "tickValue", "index", "ticks", "chart", "notation", "delta", "maxTick", "abs", "calculateDelta", "logDelta", "log10", "numDecimal", "isNaN", "floor", "minimumFractionDigits", "maximumFractionDigits", "logarithmic", "remain", "significand", "includes", "applyScaleDefaults", "display", "offset", "reverse", "beginAtZero", "bounds", "clip", "grace", "grid", "lineWidth", "drawOnChartArea", "drawTicks", "tickLength", "tickWidth", "_ctx", "tickColor", "border", "dash", "dashOffset", "width", "title", "text", "minRotation", "maxRotation", "mirror", "textStrokeWidth", "textStrokeColor", "autoSkip", "autoSkipPadding", "labelOffset", "Ticks", "minor", "major", "crossAlign", "showLabelBackdrop", "backdropColor", "backdropPadding", "route", "startsWith", "overrides", "create", "descriptors", "getScope", "node", "key", "keys", "split", "i", "n", "k", "root", "scope", "merge", "Defaults", "constructor", "_descriptors", "_appliers", "backgroundColor", "borderColor", "datasets", "devicePixelRatio", "context", "platform", "getDevicePixelRatio", "elements", "events", "font", "family", "size", "style", "lineHeight", "weight", "hover", "hoverBackgroundColor", "ctx", "hoverBorderColor", "hoverColor", "indexAxis", "interaction", "mode", "intersect", "includeInvisible", "maintainAspectRatio", "onHover", "onClick", "parsing", "plugins", "responsive", "scale", "scales", "showLine", "drawActiveElementsOnTop", "override", "targetScope", "targetName", "scopeObject", "targetScopeObject", "privateName", "defineProperties", "writable", "enumerable", "local", "target", "isObject", "valueOrDefault", "appliers", "forEach", "toFontString", "isNullOrUndef", "_measureText", "data", "gc", "longest", "string", "textWidth", "measureText", "push", "_longestText", "arrayOfThings", "cache", "garbageCollect", "save", "ilen", "j", "jlen", "thing", "nestedThing", "restore", "gcLen", "splice", "_alignPixel", "pixel", "currentDevicePixelRatio", "halfWidth", "round", "clearCanvas", "canvas", "getContext", "resetTransform", "clearRect", "height", "drawPoint", "x", "y", "drawPointLegend", "w", "xOffset", "yOffset", "cornerRadius", "xOffsetW", "yOffsetW", "pointStyle", "rotation", "radius", "rad", "RAD_PER_DEG", "translate", "rotate", "drawImage", "beginPath", "ellipse", "arc", "closePath", "moveTo", "TWO_THIRDS_PI", "lineTo", "QUARTER_PI", "SQRT1_2", "rect", "fill", "borderWidth", "stroke", "_isPointInArea", "point", "area", "margin", "clipArea", "unclipArea", "_steppedLineTo", "previous", "flip", "midpoint", "_bezierCurveTo", "bezierCurveTo", "cp1x", "cp2x", "cp1y", "cp2y", "setRenderOpts", "opts", "translation", "fillStyle", "textAlign", "textBaseline", "decorateText", "line", "strikethrough", "underline", "metrics", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "yDecoration", "strokeStyle", "decorationWidth", "drawBackdrop", "oldColor", "fillRect", "renderText", "lines", "strokeWidth", "strokeColor", "backdrop", "strokeText", "maxWidth", "fillText", "Number", "addRoundedRectPath", "h", "topLeft", "bottomLeft", "bottomRight", "topRight", "LINE_HEIGHT", "FONT_STYLE", "toLineHeight", "matches", "match", "numberOrZero", "_readValueToProps", "props", "ret", "objProps", "read", "prop", "toTRBL", "toTRBLCorners", "toPadding", "obj", "toFont", "fallback", "parseInt", "console", "warn", "resolve", "inputs", "info", "cacheable", "_addGrace", "minmax", "change", "toDimension", "keepZero", "add", "createContext", "parentContext", "_createResolver", "scopes", "prefixes", "rootScopes", "getTarget", "finalRootScopes", "_resolve", "Symbol", "toStringTag", "_cacheable", "_scopes", "_rootScopes", "_getTarget", "Proxy", "deleteProperty", "_keys", "_cached", "_resolveWithPrefixes", "getOwnPropertyDescriptor", "Reflect", "getPrototypeOf", "has", "getKeysFromAllScopes", "ownKeys", "storage", "_storage", "_attachContext", "proxy", "subProxy", "descriptorDefaults", "_proxy", "_context", "_subProxy", "_stack", "Set", "setContext", "receiver", "_resolveWithContext", "allKeys", "configurable", "scriptable", "indexable", "_allKeys", "isScriptable", "isFunction", "isIndexable", "readKey", "prefix", "_capitalize", "needsSubResolver", "prototype", "hasOwnProperty", "_resolveScriptable", "_resolveArray", "getValue", "Error", "Array", "join", "delete", "createSubResolver", "arr", "filter", "item", "resolver", "resolveFallback", "parent", "resolveObjectKey", "addScopes", "parentScopes", "parentFallback", "allScopes", "addScopesFromKey", "subGetTarget", "resolveKeysFromAllScopes", "_parseObjectDataRadialScale", "_parsing", "parsed", "r", "parse", "EPSILON", "getPoint", "skip", "getValueAxis", "splineCurve", "firstPoint", "middlePoint", "afterPoint", "current", "next", "d01", "distanceBetweenPoints", "d12", "s01", "s12", "fa", "fb", "monotoneAdjust", "deltaK", "mK", "pointsLen", "alphaK", "betaK", "tauK", "squaredMagnitude", "pointCurrent", "pointAfter", "almostEquals", "monotoneCompute", "valueAxis", "pointBefore", "iPixel", "vPixel", "splineCurveMonotone", "slopeDelta", "sign", "capControlPoint", "pt", "capBezierPoints", "inArea", "inAreaPrev", "inAreaNext", "_updateBezierControlPoints", "controlPoints", "spanGaps", "cubicInterpolationMode", "prev", "tension", "_isDomSupported", "document", "_getParentNode", "domNode", "parentNode", "host", "parseMaxStyle", "styleValue", "parentProperty", "valueInPixels", "indexOf", "getComputedStyle", "element", "ownerDocument", "defaultView", "getStyle", "el", "property", "getPropertyValue", "positions", "getPositionedStyle", "styles", "suffix", "result", "pos", "parseFloat", "useOffsetPos", "shadowRoot", "getCanvasPosition", "e", "touches", "source", "offsetX", "offsetY", "box", "getBoundingClientRect", "clientX", "clientY", "getRelativePosition", "event", "borderBox", "boxSizing", "paddings", "borders", "getContainerSize", "maxHeight", "container", "clientWidth", "clientHeight", "containerStyle", "containerBorder", "containerPadding", "INFINITY", "round1", "getMaximumSize", "bbWidth", "bbHeight", "aspectRatio", "margins", "containerSize", "maintainHeight", "retinaScale", "forceRatio", "forceStyle", "pixelRatio", "deviceHeight", "deviceWidth", "setTransform", "supportsEventListenerOptions", "passiveSupported", "passive", "addEventListener", "removeEventListener", "readUsedSize", "_pointInLine", "p1", "p2", "_steppedInterpolation", "_bezierInterpolation", "cp1", "cp2", "a", "b", "c", "getRightToLeftAdapter", "rectX", "setWidth", "xPlus", "leftForLtr", "itemWidth", "getLeftToRightAdapter", "_itemWidth", "getRtlAdapter", "overrideTextDirection", "direction", "original", "getPropertyPriority", "setProperty", "prevTextDirection", "restoreTextDirection", "propertyFn", "between", "_angleBetween", "compare", "_angleDiff", "normalize", "_normalizeAngle", "_isBetween", "normalizeSegment", "getSegment", "segment", "startBound", "endBound", "_boundSegment", "inside", "subStart", "prevValue", "startIsBefore", "endIsBefore", "shouldStart", "shouldStop", "_boundSegments", "segments", "sub", "findStartAndEnd", "solidSegments", "last", "cur", "stop", "_computeSegments", "segmentOptions", "_loop", "splitByStyles", "completeLoop", "_fullLoop", "doSplitByStyles", "chartContext", "_chart", "baseStyle", "readStyle", "_datasetIndex", "datasetIndex", "prevStyle", "addStyle", "l", "st", "dir", "p0", "p0DataIndex", "p1DataIndex", "styleChanged", "borderCapStyle", "borderDash", "borderDashOffset", "borderJoinStyle", "replacer", "Animator", "constructor", "_request", "_charts", "Map", "_running", "_lastDate", "undefined", "_notify", "chart", "anims", "date", "type", "callbacks", "listeners", "numSteps", "duration", "forEach", "fn", "initial", "currentStep", "Math", "min", "start", "_refresh", "requestAnimFrame", "call", "window", "_update", "Date", "now", "remaining", "running", "items", "length", "i", "draw", "item", "_active", "_total", "tick", "pop", "_getAnims", "charts", "get", "complete", "progress", "set", "listen", "event", "cb", "push", "add", "has", "reduce", "acc", "cur", "max", "_duration", "stop", "cancel", "remove", "delete", "transparent", "interpolators", "boolean", "from", "to", "factor", "color", "c0", "helpersColor", "c1", "valid", "mix", "hexString", "number", "Animation", "cfg", "target", "prop", "currentValue", "resolve", "_fn", "_easing", "effects", "easing", "linear", "_start", "floor", "delay", "_loop", "loop", "_target", "_prop", "_from", "_to", "_promises", "active", "update", "elapsed", "remain", "wait", "promises", "Promise", "res", "rej", "resolved", "method", "Animations", "config", "_chart", "_properties", "configure", "isObject", "animationOptions", "Object", "keys", "defaults", "animation", "animatedProps", "getOwnPropertyNames", "key", "option", "isArray", "properties", "_animateOptions", "values", "newOptions", "options", "resolveTargetOptions", "animations", "_createAnimations", "$shared", "awaitAll", "$animations", "then", "props", "charAt", "value", "size", "assign", "animator", "anim", "all", "scaleClip", "scale", "allowedOverflow", "opts", "reverse", "end", "defaultClip", "xScale", "yScale", "x", "y", "top", "right", "bottom", "left", "toClip", "t", "r", "b", "l", "disabled", "getSortedDatasetIndices", "filterVisible", "metasets", "_getSortedDatasetMetas", "ilen", "index", "applyStack", "stack", "dsIndex", "singleMode", "mode", "datasetIndex", "otherValue", "isFinite", "sign", "convertObjectDataToArray", "data", "adata", "Array", "isStacked", "meta", "stacked", "getStackKey", "indexScale", "valueScale", "id", "getUserBounds", "minDefined", "maxDefined", "Number", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "getOrCreateStack", "stacks", "stackKey", "indexValue", "subStack", "getLastIndexInStack", "vScale", "positive", "getMatchingVisibleMetas", "updateStacks", "controller", "parsed", "_cachedMeta", "_stacks", "iScale", "iAxis", "axis", "vAxis", "itemStacks", "_top", "_bottom", "visualValues", "_visualValues", "getFirstScaleId", "scales", "filter", "shift", "createDatasetContext", "parent", "createContext", "dataset", "createDataContext", "element", "dataIndex", "raw", "clearStacks", "_parsed", "isDirectUpdateMode", "cloneIfNotShared", "cached", "shared", "createStack", "canStack", "hidden", "_stacked", "DatasetController", "datasetElementType", "dataElementType", "_ctx", "ctx", "_cachedDataOpts", "getMeta", "_type", "_parsing", "_data", "_objectData", "_sharedOptions", "_drawStart", "_drawCount", "enableOptionSharing", "supportsDecimation", "$context", "_syncList", "initialize", "linkScales", "addElements", "fill", "isPluginEnabled", "console", "warn", "updateIndex", "getDataset", "chooseId", "xid", "xAxisID", "valueOrDefault", "yid", "yAxisID", "rid", "rAxisID", "indexAxis", "iid", "iAxisID", "vid", "vAxisID", "getScaleForId", "rScale", "datasets", "getDatasetMeta", "scaleID", "_getOtherScale", "reset", "_destroy", "unlistenArrayEvents", "_dataCheck", "isExtensible", "listenArrayEvents", "buildOrUpdateElements", "resetNewElements", "stackChanged", "oldStacked", "_resyncElements", "scopeKeys", "datasetScopeKeys", "scopes", "getOptionScopes", "createResolver", "getContext", "parsing", "parse", "count", "sorted", "_sorted", "prev", "parseArrayData", "parseObjectData", "parsePrimitiveData", "isNotInOrderComparedToPrev", "labels", "getLabels", "singleScale", "xAxisKey", "yAxisKey", "resolveObjectKey", "getParsed", "getDataElement", "updateRangeFromParsed", "range", "parsedValue", "NaN", "getMinMax", "otherScale", "otherMin", "otherMax", "_skip", "getAllParsedValues", "getMaxOverflow", "getLabelAndValue", "label", "getLabelForValue", "_clip", "clip", "elements", "area", "chartArea", "drawActiveElementsOnTop", "getStyle", "resolveDatasetElementOptions", "resolveDataElementOptions", "context", "_resolveElementOptions", "elementType", "cache", "cacheKey", "sharing", "defined", "datasetElementScopeKeys", "prefixes", "names", "resolveNamedOptions", "freeze", "_resolveAnimations", "transition", "datasetAnimationScopeKeys", "_cacheable", "getSharedOptions", "includeOptions", "sharedOptions", "_animationsDisabled", "_getSharedOptions", "firstOpts", "previouslySharedOptions", "updateSharedOptions", "updateElement", "_setStyle", "removeHoverStyle", "setHoverStyle", "_removeDatasetHoverStyle", "_setDatasetHoverStyle", "arg1", "arg2", "numMeta", "numData", "_insertElements", "_removeElements", "move", "arr", "updateElements", "removed", "splice", "_sync", "args", "_dataChanges", "_onDataPush", "arguments", "_onDataPop", "_onDataShift", "_onDataSplice", "newCount", "_onDataUnshift", "getAllScaleValues", "_cache", "$bar", "visibleMetas", "concat", "_arrayUnique", "sort", "a", "computeMinSampleSize", "_length", "curr", "updateMinAndPrev", "abs", "getPixelForValue", "ticks", "getPixelForTick", "computeFitCategoryTraits", "ruler", "stackCount", "thickness", "barThickness", "ratio", "isNullOrUndef", "categoryPercentage", "barPercentage", "chunk", "pixels", "computeFlexCategoryTraits", "next", "percent", "parseFloatBar", "entry", "startValue", "endValue", "barStart", "barEnd", "_custom", "parseValue", "parseArrayOrPrimitive", "isFloatBar", "custom", "barSign", "actualBase", "isHorizontal", "borderProps", "horizontal", "base", "setBorderSkipped", "edge", "borderSkipped", "enableBorderRadius", "parseEdge", "swap", "startEnd", "orig", "v1", "v2", "v", "setInflateAmount", "inflateAmount", "BarController", "grouped", "numbers", "overrides", "_index_", "offset", "grid", "_value_", "beginAtZero", "iAxisKey", "vAxisKey", "obj", "bars", "getBasePixel", "_getRuler", "vpixels", "head", "_calculateBarValuePixels", "ipixels", "_calculateBarIndexPixels", "center", "height", "width", "_getStacks", "last", "skipNull", "val", "isNaN", "indexOf", "_getStackCount", "_getStackIndex", "name", "_startPixel", "_endPixel", "baseValue", "minBarLength", "floating", "getDataVisibility", "startPixel", "getPixelForDecimal", "endPixel", "getValueForPixel", "halfGrid", "getLineWidthForValue", "maxBarThickness", "Infinity", "stackIndex", "rects", "BubbleController", "radius", "points", "point", "iPixel", "vPixel", "skip", "getRatioAndOffset", "rotation", "circumference", "cutout", "ratioX", "ratioY", "offsetX", "offsetY", "TAU", "startAngle", "endAngle", "startX", "cos", "startY", "sin", "endX", "endY", "calcMax", "angle", "_angleBetween", "calcMin", "maxX", "maxY", "HALF_PI", "minX", "PI", "minY", "DoughnutController", "animateRotate", "animateScale", "spacing", "descriptors", "_scriptable", "_indexable", "startsWith", "aspectRatio", "plugins", "legend", "generateLabels", "pointStyle", "map", "style", "text", "fillStyle", "backgroundColor", "strokeStyle", "borderColor", "fontColor", "lineWidth", "borderWidth", "onClick", "e", "legendItem", "toggleDataVisibility", "innerRadius", "outerRadius", "getter", "_getRotation", "toRadians", "_getCircumference", "_getRotationExtents", "isDatasetVisible", "arcs", "getMaxBorderWidth", "getMaxOffset", "maxSize", "toPercentage", "chartWeight", "_getRingWeight", "maxWidth", "maxHeight", "maxRadius", "toDimension", "radiusLength", "_getVisibleDatasetWeightTotal", "total", "calculateTotal", "_getRingWeightOffset", "_circumference", "calculateCircumference", "animationOpts", "centerX", "centerY", "arc", "metaData", "formatNumber", "locale", "borderAlign", "hoverBorderWidth", "hoverOffset", "ringWeightOffset", "weight", "LineController", "showLine", "spanGaps", "line", "_dataset", "animationsDisabled", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "_datasetIndex", "_decimated", "segment", "animated", "maxGapLength", "isNumber", "directUpdate", "pointsCount", "prevParsed", "nullData", "border", "firstPoint", "lastPoint", "updateControlPoints", "PolarAreaController", "angleLines", "display", "circular", "pointLabels", "_parseObjectDataRadialScale", "bind", "_updateRadius", "minSize", "cutoutPercentage", "getVisibleDatasetCount", "xCenter", "yCenter", "datasetStartAngle", "getIndexAngle", "defaultAngle", "countVisibleElements", "_computeAngle", "getDistanceFromCenterForValue", "PieController", "RadarController", "_fullLoop", "pointPosition", "getPointPositionForValue", "ScatterController", "interaction", "registry", "getElement", "abstract", "Error", "DateAdapterBase", "override", "members", "prototype", "init", "formats", "format", "diff", "startOf", "endOf", "_date", "binarySearch", "metaset", "intersect", "lookupMethod", "_reversePixels", "_rlookupByKey", "_lookupByKey", "el", "getRange", "lo", "hi", "evaluateInteractionItems", "position", "handler", "getSortedVisibleDatasetMetas", "j", "getDistanceMetricForAxis", "useX", "useY", "pt1", "pt2", "deltaX", "deltaY", "sqrt", "pow", "getIntersectItems", "useFinalPosition", "includeInvisible", "isPointInArea", "evaluationFunc", "_isPointInArea", "inRange", "getNearestRadialItems", "getProps", "getAngleFromPoint", "getNearestCartesianItems", "distanceMetric", "minDistance", "getCenterPoint", "pointInArea", "distance", "getNearestItems", "getAxisItems", "rangeMethod", "intersectsItem", "modes", "getRelativePosition", "nearest", "STATIC_POSITIONS", "filterByPosition", "array", "pos", "filterDynamicPositionByAxis", "box", "sortByWeight", "v0", "wrapBoxes", "boxes", "layoutBoxes", "stackWeight", "buildStacks", "layouts", "wrap", "includes", "_stack", "placed", "setLayoutDims", "params", "vBoxMaxWidth", "hBoxMaxHeight", "layout", "fullSize", "availableWidth", "availableHeight", "buildLayoutBoxes", "centerHorizontal", "centerVertical", "leftAndTop", "rightAndBottom", "vertical", "getCombinedMax", "maxPadding", "updateMaxPadding", "boxPadding", "updateDims", "getPadding", "newWidth", "outerWidth", "newHeight", "outerHeight", "widthChanged", "w", "heightChanged", "h", "same", "other", "handleMaxPadding", "updatePos", "change", "getMargins", "marginForPositions", "positions", "margin", "fitBoxes", "refitBoxes", "refit", "changed", "setBoxDims", "placeBoxes", "userPadding", "padding", "addBox", "_layers", "z", "removeBox", "layoutItem", "minPadding", "toPadding", "verticalBoxes", "horizontalBoxes", "each", "beforeLayout", "visibleVerticalBoxCount", "BasePlatform", "acquireContext", "canvas", "releaseContext", "addEventListener", "listener", "removeEventListener", "getDevicePixelRatio", "getMaximumSize", "isAttached", "updateConfig", "BasicPlatform", "EXPANDO_KEY", "EVENT_TYPES", "touchstart", "touchmove", "touchend", "pointerenter", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointerout", "isNullOrEmpty", "initCanvas", "renderHeight", "getAttribute", "renderWidth", "boxSizing", "displayWidth", "readUsedSize", "displayHeight", "eventListenerOptions", "supportsEventListenerOptions", "passive", "addListener", "node", "removeListener", "fromNativeEvent", "native", "nodeListContains", "nodeList", "contains", "createAttachObserver", "observer", "MutationObserver", "entries", "trigger", "addedNodes", "removedNodes", "observe", "document", "childList", "subtree", "createDetachObserver", "drpListeningCharts", "oldDevicePixelRatio", "onWindowResize", "dpr", "devicePixelRatio", "resize", "currentDevicePixelRatio", "listenDevicePixelRatioChanges", "unlistenDevicePixelRatioChanges", "createResizeObserver", "container", "_getParentNode", "throttled", "clientWidth", "ResizeObserver", "contentRect", "releaseObserver", "disconnect", "createProxyAndListen", "proxy", "DomPlatform", "removeAttribute", "setAttribute", "proxies", "$proxies", "handlers", "attach", "detach", "isConnected", "_detectPlatform", "_isDomSupported", "OffscreenCanvas", "Element", "defaultRoutes", "tooltipPosition", "hasValue", "final", "ret", "autoSkip", "tickOpts", "determinedMaxTicks", "determineMaxTicks", "ticksLimit", "maxTicksLimit", "majorIndices", "major", "enabled", "getMajorIndices", "numMajorIndices", "first", "newTicks", "skipMajors", "calculateSpacing", "avgMajorSpacing", "round", "tickLength", "_tickSize", "maxScale", "maxChart", "_maxLength", "evenMajorSpacing", "getEvenSpacing", "factors", "_factorize", "result", "ceil", "majorStart", "majorEnd", "len", "reverseAlign", "align", "offsetFromEdge", "getTicksLimit", "ticksLength", "sample", "numItems", "increment", "getPixelForGridLine", "offsetGridLines", "validIndex", "epsilon", "lineValue", "garbageCollect", "caches", "gc", "gcLen", "getTickMarkLength", "drawTicks", "getTitleHeight", "fallback", "font", "toFont", "lines", "lineHeight", "createScaleContext", "createTickContext", "titleAlign", "_toLeftRightCenter", "titleArgs", "titleX", "titleY", "_alignStartEnd", "positionAxisID", "Scale", "_margins", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight", "labelRotation", "_range", "_gridLineItems", "_labelItems", "_labelSizes", "_longestTextCache", "_userMax", "_userMin", "_suggestedMax", "_suggestedMin", "_ticksLength", "_borderValue", "_dataLimitsCached", "setContext", "suggestedMin", "suggestedMax", "finiteOrDefault", "metas", "getTicks", "xLabels", "yLabels", "getLabelItems", "_computeLabelItems", "beforeUpdate", "margins", "grace", "sampleSize", "beforeSetDimensions", "setDimensions", "afterSetDimensions", "beforeDataLimits", "determineDataLimits", "afterDataLimits", "_addGrace", "beforeBuildTicks", "buildTicks", "afterBuildTicks", "samplingEnabled", "_convertTicksToLabels", "beforeCalculateLabelRotation", "calculateLabelRotation", "afterCalculateLabelRotation", "source", "afterAutoSkip", "beforeFit", "fit", "afterFit", "afterUpdate", "reversePixels", "_alignToPixels", "alignToPixels", "_callHooks", "notifyPlugins", "beforeTickToLabelConversion", "generateTickLabels", "callback", "afterTickToLabelConversion", "numTicks", "minRotation", "maxRotation", "tickWidth", "maxLabelDiagonal", "_isVisible", "labelSizes", "_getLabelSizes", "maxLabelWidth", "widest", "maxLabelHeight", "highest", "_limitValue", "title", "toDegrees", "asin", "titleOpts", "gridOpts", "titleHeight", "tickPadding", "angleRadians", "labelHeight", "mirror", "labelWidth", "_calculatePadding", "_handleMargins", "isRotated", "labelsBelowTicks", "offsetLeft", "offsetRight", "isFullSize", "_computeLabelSizes", "widths", "heights", "widestLabelSize", "highestLabelSize", "jlen", "tickFont", "fontString", "nestedLabel", "_resolveTickFontOptions", "string", "_measureText", "valueAt", "idx", "pixel", "decimal", "_int16Range", "_alignPixel", "getDecimalForPixel", "getBaseValue", "optionTicks", "rot", "autoSkipPadding", "_computeGridLineItems", "tl", "borderOpts", "axisWidth", "axisHalfWidth", "alignBorderValue", "borderValue", "alignedLineValue", "tx1", "ty1", "tx2", "ty2", "x1", "y1", "x2", "y2", "limit", "step", "optsAtIndex", "optsAtIndexBorder", "lineColor", "borderDash", "dash", "borderDashOffset", "dashOffset", "tickColor", "tickBorderDash", "tickBorderDashOffset", "crossAlign", "tickAndPadding", "hTickAndPadding", "textAlign", "lineCount", "textOffset", "textBaseline", "_getXAxisLabelAlignment", "_getYAxisLabelAlignment", "labelOffset", "halfCount", "strokeColor", "textStrokeColor", "strokeWidth", "textStrokeWidth", "tickTextAlign", "showLabelBackdrop", "backdrop", "labelPadding", "backdropPadding", "backdropColor", "translation", "_computeLabelArea", "drawBackground", "save", "fillRect", "restore", "findIndex", "drawGrid", "drawLine", "p1", "p2", "setLineDash", "lineDashOffset", "beginPath", "moveTo", "lineTo", "stroke", "drawOnChartArea", "drawBorder", "lastLineWidth", "drawLabels", "clipArea", "renderTextOptions", "renderText", "unclipArea", "drawTitle", "tz", "gz", "bz", "axisID", "_maxDigits", "fontSize", "TypedRegistry", "scope", "create", "isForType", "isPrototypeOf", "register", "proto", "getPrototypeOf", "parentScope", "isIChartComponent", "registerDefaults", "unregister", "itemDefaults", "merge", "routeDefaults", "describe", "routes", "property", "propertyParts", "split", "sourceName", "sourceScope", "join", "parts", "targetName", "targetScope", "route", "Registry", "controllers", "_typedRegistries", "_each", "addControllers", "addPlugins", "addScales", "getController", "_get", "getPlugin", "getScale", "removeControllers", "removeElements", "removePlugins", "removeScales", "typedRegistry", "arg", "reg", "_getRegistryForType", "_exec", "itemReg", "component", "camelMethod", "_capitalize", "PluginService", "_init", "notify", "hook", "_createDescriptors", "_descriptors", "descriptor", "plugin", "callCallback", "cancelable", "invalidate", "_oldCache", "_notifyStateChanges", "allPlugins", "createDescriptors", "previousDescriptors", "some", "localIds", "local", "getOpts", "pluginOpts", "pluginScopeKeys", "scriptable", "indexable", "allKeys", "getIndexAxis", "datasetDefaults", "datasetOptions", "getAxisFromDefaultScaleID", "getDefaultScaleIDFromAxis", "idMatchesAxis", "axisFromPosition", "determineAxis", "scaleOptions", "toLowerCase", "getAxisFromDataset", "retrieveAxisFromDatasets", "boundDs", "d", "mergeScaleConfig", "chartDefaults", "configScales", "chartIndexAxis", "scaleConf", "error", "_proxy", "defaultId", "defaultScaleOptions", "mergeIf", "defaultID", "initOptions", "initData", "initConfig", "keyCache", "keysCached", "Set", "cachedKeys", "generate", "addIfFound", "Config", "_config", "_scopeCache", "_resolverCache", "platform", "clearCache", "clear", "datasetType", "additionalOptionScopes", "_cachedScopes", "mainScope", "resetCache", "keyLists", "chartOptionScopes", "resolver", "subPrefixes", "getResolver", "needContext", "isFunction", "subResolver", "_attachContext", "descriptorDefaults", "resolverCache", "_createResolver", "p", "hasFunction", "isScriptable", "isIndexable", "KNOWN_POSITIONS", "positionIsHorizontal", "compare2Level", "l1", "l2", "onAnimationsComplete", "onComplete", "onAnimationProgress", "onProgress", "getCanvas", "getElementById", "instances", "getChart", "c", "moveNumericKeys", "intKey", "determineLastEvent", "lastEvent", "inChartArea", "isClick", "getSizeForArea", "field", "getDatasetArea", "Chart", "version", "invalidatePlugins", "userConfig", "initialCanvas", "existingChart", "uid", "_options", "_aspectRatio", "_metasets", "_lastEvent", "_listeners", "_responsiveListeners", "_sortedMetasets", "_plugins", "_hiddenIndices", "attached", "_doResize", "debounce", "resizeDelay", "_initialize", "maintainAspectRatio", "responsive", "retinaScale", "bindEvents", "clearCanvas", "_resize", "_resizeBeforeDraw", "newSize", "newRatio", "onResize", "render", "ensureScalesHaveIDs", "scalesOptions", "axisOptions", "buildOrUpdateScales", "scaleOpts", "updated", "isRadial", "dposition", "dtype", "scaleType", "scaleClass", "hasUpdated", "_updateMetasets", "_destroyDatasetMeta", "slice", "_removeUnreferencedMetasets", "buildOrUpdateControllers", "newControllers", "order", "visible", "ControllerClass", "_resetElements", "animsDisabled", "_updateScales", "_checkEventBindings", "_updateHiddenIndices", "_minPadding", "autoPadding", "_updateLayout", "_updateDatasets", "_eventHandler", "_updateHoverStyles", "existingEvents", "newEvents", "events", "setsEqual", "unbindEvents", "changes", "_getUniformDataChanges", "datasetCount", "makeSet", "changeSet", "noArea", "_idx", "_updateDataset", "layers", "_drawDatasets", "_drawDataset", "useClip", "getElementsAtEventForMode", "Interaction", "setDatasetVisibility", "_updateVisibility", "hide", "show", "_stop", "destroy", "toBase64Image", "toDataURL", "bindUserEvents", "bindResponsiveEvents", "_add", "_remove", "detached", "updateHoverStyle", "prefix", "getActiveElements", "setActiveElements", "activeElements", "lastActive", "_elementsEqual", "pluginId", "replay", "hoverOptions", "hover", "deactivated", "activated", "eventFilter", "_handleEvent", "_getActiveElements", "_isClickEvent", "onHover", "clipArc", "pixelMargin", "angleMargin", "closePath", "toRadiusCorners", "_readValueToProps", "parseBorderRadius", "angleDelta", "o", "borderRadius", "halfThickness", "innerLimit", "computeOuterLimit", "outerArcLimit", "outerStart", "outerEnd", "innerStart", "innerEnd", "rThetaToXY", "theta", "pathArc", "innerR", "spacingOffset", "alpha", "noSpacingInnerRadius", "noSpacingOuterRadius", "avNogSpacingRadius", "adjustedAngle", "beta", "angleOffset", "outerStartAdjustedRadius", "outerEndAdjustedRadius", "outerStartAdjustedAngle", "outerEndAdjustedAngle", "innerStartAdjustedRadius", "innerEndAdjustedRadius", "innerStartAdjustedAngle", "innerEndAdjustedAngle", "outerMidAdjustedAngle", "pCenter", "p4", "innerMidAdjustedAngle", "p8", "outerStartX", "outerStartY", "outerEndX", "outerEndY", "drawArc", "fullCircles", "borderJoinStyle", "inner", "lineJoin", "ArcElement", "chartX", "chartY", "rAdjust", "betweenAngles", "withinRadius", "_isBetween", "halfAngle", "halfRadius", "translate", "fix", "radiusOffset", "setStyle", "lineCap", "borderCapStyle", "previous", "getLineMethod", "stepped", "_steppedLineTo", "tension", "cubicInterpolationMode", "_bezierCurveTo", "pathVars", "paramsStart", "paramsEnd", "segmentStart", "segmentEnd", "outside", "pathSegment", "lineMethod", "fastPathSegment", "avgX", "countX", "prevX", "lastY", "pointIndex", "drawX", "truncX", "_getSegmentMethod", "useFastPath", "_getInterpolationMethod", "_steppedInterpolation", "_bezierInterpolation", "_pointInLine", "strokePathWithCache", "path", "_path", "Path2D", "strokePathDirect", "segments", "segmentMethod", "usePath2D", "LineElement", "capBezierPoints", "_points", "_segments", "_pointsUpdated", "_updateBezierControlPoints", "_computeSegments", "interpolate", "_boundSegments", "_interpolate", "interpolated", "hitRadius", "PointElement", "hoverRadius", "mouseX", "mouseY", "inXRange", "inYRange", "drawPoint", "getBarBounds", "bar", "half", "skipOrLimit", "parseBorderWidth", "maxW", "maxH", "toTRBL", "toTRBLCorners", "maxR", "enableBorder", "topLeft", "topRight", "bottomLeft", "bottomRight", "boundingRects", "bounds", "outer", "skipX", "skipY", "skipBoth", "hasRadius", "addNormalRectPath", "rect", "inflateRect", "amount", "refRect", "BarElement", "addRectPath", "addRoundedRectPath", "BORDER_COLORS", "BACKGROUND_COLORS", "replace", "getBorderColor", "getBackgroundColor", "colorizeDefaultDataset", "colorizeDoughnutDataset", "colorizePolarAreaDataset", "getColorizer", "containsColorsDefinitions", "k", "containsColorsDefinition", "forceOverride", "_args", "chartOptions", "colorizer", "lttbDecimation", "samples", "decimated", "bucketWidth", "sampledIndex", "endIndex", "maxAreaPoint", "maxArea", "nextA", "avgY", "avgRangeStart", "avgRangeEnd", "avgRangeLength", "rangeOffs", "rangeTo", "pointAx", "pointAy", "minMaxDecimation", "minIndex", "maxIndex", "startIndex", "xMin", "xMax", "dx", "lastIndex", "intermediateIndex1", "intermediateIndex2", "cleanDecimatedDataset", "defineProperty", "configurable", "enumerable", "writable", "cleanDecimatedData", "getStartAndCountOfVisiblePointsSimplified", "pointCount", "algorithm", "beforeElementsUpdate", "xAxis", "threshold", "tpoints", "_findSegmentEnd", "_getBounds", "targetSegments", "tgt", "subBounds", "fillSources", "_boundSegment", "fillSource", "_getEdge", "_normalizeAngle", "_pointsFromSegments", "boundary", "linePoints", "_createBoundaryLine", "_shouldApplyFill", "_resolveTarget", "sources", "propagate", "visited", "_decodeFill", "parseFillOption", "parseFloat", "decodeTargetIndex", "firstCh", "_getTargetPixel", "_getTargetValue", "fillOption", "_buildStackLine", "sourcePoints", "linesBelow", "getLinesBelow", "addPointsBelow", "below", "unshift", "sourcePoint", "postponed", "findPoint", "pointValue", "firstValue", "lastValue", "simpleArc", "_getTarget", "getLineByIndex", "computeBoundary", "computeCircularBoundary", "computeLinearBoundary", "_drawfill", "lineOpts", "above", "doFill", "clipVertical", "clipY", "lineLoop", "src", "notShape", "clipBounds", "interpolatedLineTo", "targetLoop", "interpolatedPoint", "afterDatasetsUpdate", "$filler", "beforeDraw", "drawTime", "beforeDatasetsDraw", "beforeDatasetDraw", "getBoxSize", "labelOpts", "boxHeight", "boxWidth", "usePointStyle", "pointStyleWidth", "itemHeight", "itemsEqual", "Legend", "_added", "legendHitBoxes", "_hoveredItem", "doughnutMode", "legendItems", "columnSizes", "lineWidths", "buildLabels", "labelFont", "_computeTitleHeight", "_fitRows", "_fitCols", "hitboxes", "totalHeight", "row", "itemWidth", "measureText", "_itemHeight", "heightLimit", "totalWidth", "currentColWidth", "currentColHeight", "col", "calculateItemSize", "adjustHitBoxes", "rtl", "rtlHelper", "getRtlAdapter", "hitbox", "leftForLtr", "_draw", "defaultColor", "halfFontSize", "cursor", "drawLegendBox", "lineDash", "drawOptions", "SQRT2", "xPlus", "drawPointLegend", "yBoxTop", "xBoxLeft", "fillText", "strikethrough", "overrideTextDirection", "textDirection", "textWidth", "setWidth", "realX", "_textX", "fontLineHeight", "calculateLegendItemHeight", "restoreTextDirection", "titleFont", "titlePadding", "topPaddingPlusHalfFontSize", "_getLegendItemAt", "hitBox", "lh", "handleEvent", "isListened", "hoveredItem", "sameItem", "onLeave", "calculateItemWidth", "calculateItemHeight", "legendItemText", "_element", "afterEvent", "ci", "useBorderRadius", "Title", "_padding", "textSize", "_drawArgs", "fontOpts", "createTitle", "titleBlock", "WeakMap", "positioners", "average", "xSet", "xAverage", "eventPosition", "nearestElement", "distanceBetweenPoints", "tp", "pushOrConcat", "toPush", "apply", "splitNewlines", "str", "String", "createTooltipItem", "formattedValue", "getTooltipSize", "tooltip", "body", "footer", "bodyFont", "footerFont", "titleLineCount", "footerLineCount", "bodyLineItemCount", "combinedBodyLength", "bodyItem", "before", "after", "beforeBody", "afterBody", "titleSpacing", "titleMarginBottom", "bodyLineHeight", "displayColors", "bodySpacing", "footerMarginTop", "footerSpacing", "widthPadding", "maxLineWidth", "determineYAlign", "doesNotFitWithAlign", "xAlign", "caret", "caretSize", "caretPadding", "determineXAlign", "yAlign", "chartWidth", "determineAlignment", "alignX", "alignY", "paddingAndSize", "getBackgroundPoint", "alignment", "cornerRadius", "getAlignedX", "getBeforeAfterBodyLines", "createTooltipContext", "tooltipItems", "overrideCallbacks", "defaultCallbacks", "beforeTitle", "noop", "labelCount", "afterTitle", "beforeLabel", "tooltipItem", "labelColor", "labelTextColor", "bodyColor", "labelPointStyle", "afterLabel", "beforeFooter", "afterFooter", "invokeCallbackWithFallback", "Tooltip", "opacity", "_eventPosition", "_size", "_cachedAnimations", "_tooltipItems", "dataPoints", "caretX", "caretY", "labelColors", "labelPointStyles", "labelTextColors", "getTitle", "getBeforeBody", "getBody", "bodyItems", "scoped", "getAfterBody", "getFooter", "_createItems", "itemSort", "positionAndSize", "backgroundPoint", "external", "drawCaret", "tooltipPoint", "caretPosition", "getCaretPosition", "x3", "y3", "ptX", "ptY", "pt", "titleColor", "_drawColorBox", "colorX", "rtlColorX", "yOffSet", "colorY", "multiKeyBackground", "outerX", "innerX", "strokeRect", "drawBody", "bodyAlign", "xLinePadding", "fillLineOfText", "bodyAlignForCalculation", "textColor", "drawFooter", "footerAlign", "footerColor", "tooltipSize", "quadraticCurveTo", "_updateAnimationTarget", "animX", "animY", "_willRender", "hasTooltipContent", "globalAlpha", "positionChanged", "_positionChanged", "_ignoreReplayEvents", "afterInit", "afterDraw", "_fallback", "addIfString", "addedLabels", "findOrAddLabel", "lastIndexOf", "_getLabelForValue", "CategoryScale", "_startValue", "_valueRange", "_addedLabels", "added", "generateTicks", "generationOptions", "dataRange", "MIN_SPACING", "precision", "maxTicks", "maxDigits", "includeBounds", "unit", "maxSpaces", "rmin", "rmax", "countDefined", "minSpacing", "niceNum", "niceMin", "niceMax", "numSpaces", "almostWhole", "almostEquals", "decimalPlaces", "_decimalPlaces", "relativeLabelSize", "tickValue", "rad", "LinearScaleBase", "_endValue", "handleTickRangeOptions", "setMin", "setMax", "minSign", "maxSign", "getTickLimit", "stepSize", "computeTickLimit", "numericGeneratorOptions", "_setMinAndMaxByKey", "LinearScale", "Ticks", "formatters", "numeric", "log10Floor", "log10", "changeExponent", "m", "isMajor", "tickVal", "steps", "rangeExp", "rangeStep", "startExp", "minExp", "exp", "significand", "lastTick", "LogarithmicScale", "logarithmic", "_zero", "getTickBackdropHeight", "measureLabelSize", "_longestText", "determineLimits", "fitWithPointLabels", "limits", "valueCount", "_pointLabels", "pointLabelOpts", "additionalAngle", "centerPointLabels", "getPointLabelContext", "getPointPosition", "drawingArea", "plFont", "hLimits", "vLimits", "updateLimits", "setCenterPoint", "_pointLabelItems", "buildPointLabelItems", "createPointLabelItem", "itemOpts", "outerDistance", "extra", "pointLabelPosition", "yForAngle", "getTextAlignForAngle", "leftForTextAlign", "isNotOverlapped", "apexesInArea", "drawPointLabelBox", "backdropLeft", "backdropTop", "backdropWidth", "backdropHeight", "drawPointLabels", "pathRadiusLine", "drawRadiusLine", "gridLineOpts", "createPointLabelContext", "RadialLinearScale", "animate", "leftMovement", "rightMovement", "topMovement", "bottomMovement", "angleMultiplier", "scalingFactor", "getValueForDistanceFromCenter", "scaledDistance", "pointLabel", "distanceFromCenter", "getBasePosition", "getPointLabelPosition", "rotate", "INTERVALS", "millisecond", "common", "second", "minute", "hour", "day", "week", "month", "quarter", "year", "UNITS", "sorter", "input", "adapter", "_adapter", "parser", "isoWeekday", "_parseOpts", "determineUnitForAutoTicks", "minUnit", "capacity", "interval", "MAX_SAFE_INTEGER", "determineUnitForFormatting", "determineMajorUnit", "addTick", "time", "timestamps", "_lookup", "timestamp", "setMajorTicks", "majorUnit", "ticksFromTimestamps", "TimeScale", "adapters", "displayFormats", "_unit", "_majorUnit", "_offsets", "_normalized", "normalized", "_applyBounds", "_getLabelBounds", "getLabelTimestamps", "timeOpts", "_generate", "_filterBetween", "_getLabelCapacity", "initOffsets", "offsetAfterAutoskip", "getDecimalForValue", "minor", "weekday", "hasWeekday", "getDataTimestamps", "tooltipFormat", "datetime", "fmt", "_tickFormatFunction", "formatter", "minorFormat", "majorFormat", "offsets", "_getLabelSize", "ticksOpts", "tickLabelWidth", "cosRotation", "sinRotation", "tickFontSize", "exampleTime", "exampleLabel", "normalize", "table", "prevSource", "nextSource", "prevTarget", "nextTarget", "span", "TimeSeriesScale", "_table", "_minPos", "_tableRange", "_getTimestampsForTable", "buildLookupTable", "registerables", "defaultOptions", "sign", "round", "sign", "sign", "defaultOptions", "format", "index", "index", "defaultOptions", "defaultOptions", "sign", "formatters", "localize", "sign", "formatLong", "format", "defaultOptions", "formatters", "getDefaultOptions", "match", "match", "sign", "n", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "defaultOptions", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "match", "formattingTokensRegExp", "longFormattingTokensRegExp", "escapedStringRegExp", "doubleQuoteRegExp", "unescapedLatinCharacterRegExp", "parse", "defaultOptions", "getDefaultOptions", "cleanEscapedString", "a", "b", "index", "sign", "isLeapYearIndex", "parse", "Chartkick", "event", "application", "map", "error", "message", "matches", "_", "index", "match", "e", "callback", "fetch", "set", "callback", "matches", "match", "oldValue", "index", "_", "error", "descriptors", "constructor", "message", "a", "b", "application", "elements", "element", "c", "n", "k", "v", "resolve", "classes", "event", "_AnimatedNumber", "event", "AOS", "alert", "debounce", "callback", "_AutoSubmit", "HTMLElement", "message", "event", "FrameLoadingStyle", "location", "resolve", "interpolate", "match", "i", "_", "elements", "FetchMethod", "error", "FormSubmissionState", "FormEnctype", "cookie", "id", "x", "y", "callback", "clone", "index", "option", "TimingMetric", "VisitState", "defaultOptions", "SystemStatusCode", "session", "visit", "PageStage", "e", "Turbo", "element", "document", "c", "createConsumer", "m", "x", "event", "event", "index", "id", "error", "event", "event", "event", "event", "event", "event", "error", "event", "elements", "event", "index", "event", "matches", "index", "classes", "a", "b", "isObject", "extend", "CustomEvent", "callback", "id", "classes", "c", "e", "callback", "now", "getComputedStyle", "window", "matrix", "a", "isObject", "o", "extend", "to", "i", "duration", "document", "v", "window", "document", "userAgent", "support", "overrides", "on", "observerUpdate", "i", "destroy", "events", "self", "event", "index", "slide", "_", "v", "translate", "realIndex", "skip", "x", "y", "z", "minTranslate", "maxTranslate", "transitionEnd", "e", "duration", "t", "browser", "newIndex", "slideTo", "setTranslate", "c", "now", "id", "increment", "breakpoints", "extend", "a", "b", "defaults", "modules", "m", "on", "document", "slide", "index", "update", "from", "to", "i", "a", "b", "appendSlide", "prependSlide", "cache", "removeSlide", "removeAllSlides", "on", "document", "window", "event", "e", "i", "enable", "disable", "on", "window", "now", "e", "LINE_HEIGHT", "event", "positions", "events", "enable", "disable", "on", "update", "nextEl", "e", "destroy", "disable", "enable", "classes", "on", "e", "index", "update", "s", "i", "destroy", "disable", "enable", "on", "document", "setTranslate", "dragEl", "setTransition", "duration", "updateSize", "e", "events", "destroy", "disable", "enable", "on", "p", "x", "y", "rotate", "setTranslate", "elements", "setTransition", "duration", "on", "window", "e", "onTouchStart", "event", "onTouchMove", "onTouchEnd", "matrix", "enable", "disable", "Controller", "on", "x", "y", "binarySearch", "interpolate", "x2", "c", "setTranslate", "_t", "Swiper", "translate", "i", "setTransition", "duration", "e", "on", "notify", "message", "id", "e", "nextEl", "index", "document", "destroy", "History", "on", "window", "location", "index", "slide", "i", "destroy", "on", "document", "window", "index", "newIndex", "destroy", "on", "e", "start", "document", "on", "isObject", "update", "i", "document", "e", "duration", "onTouchStart", "translate", "onTouchMove", "now", "onTouchEnd", "j", "on", "fill", "slide", "i", "i", "index", "on", "setTranslate", "setTransition", "duration", "duration", "slide", "on", "setTranslate", "i", "setTransition", "duration", "on", "setTranslate", "browser", "r", "i", "round", "setTransition", "duration", "on", "setTranslate", "i", "rotate", "setTransition", "duration", "on", "setTranslate", "rotate", "translate", "r", "i", "setTransition", "duration", "on", "setTranslate", "i", "t", "r", "index", "setTransition", "duration", "on", "setTranslate", "i", "rotate", "setTransition", "duration", "Controller", "History", "_Carousel", "_Clipboard", "event", "event", "event", "e", "event", "event", "event", "elements", "event", "id", "message", "event", "event", "message", "event", "x", "event", "event", "id", "index", "event", "event", "event", "e", "event", "_e", "event", "e", "event", "t", "event", "p", "event", "isValid", "event", "_", "i", "a", "b", "parseDate", "index", "self", "event", "event", "resolve", "event", "match", "event", "index", "e", "i", "event", "event", "event", "event", "_", "i", "id", "event", "event", "i", "obj", "version", "event", "fn", "_", "i", "n", "index", "extend", "callback", "x", "y", "clone", "$", "ghostEl", "callback", "duration", "plugins", "defaults", "option", "p", "dispatchEvent", "rootEl", "cloneEl", "oldIndex", "newIndex", "oldDraggableIndex", "newDraggableIndex", "putSortable", "pluginEvent", "_detectDirection", "_dragElInRowColumn", "_detectNearestEmptySortable", "x", "y", "_prepareGroup", "to", "from", "dragEl", "_hideGhostForTarget", "_unhideGhostForTarget", "nearestEmptyInsertDetectEvent", "event", "i", "_checkOutsideTargetEl", "fn", "index", "dragStartFn", "e", "clone", "target", "after", "n", "id", "el", "extend", "version", "drop", "autoScroll", "onSpill", "event", "event", "event", "event", "i", "event", "e", "now", "m", "s", "event", "event", "defaults", "s", "debounce", "fn", "t", "toggleClass", "createElement", "e", "event", "error", "_", "defaults", "c", "i", "format", "match", "_a", "fn", "_i", "source", "t", "s", "i", "n", "p", "r", "k", "a", "j", "self", "defaults", "createElement", "destroy", "set", "yr", "fn", "e", "maxTime", "minTime", "event", "element", "debounce", "onResize", "triggerChange", "toggleClass", "m", "c", "d", "month", "_", "x", "formats", "b", "option", "format", "instances", "monthSelectPlugin", "rangePlugin", "event", "i", "e", "names", "c", "event", "event", "index", "attachmentSelector", "attachments", "preview", "presentation", "caption", "name", "size", "file", "attributes", "default", "tagName", "parse", "quote", "nestable", "heading1", "terminal", "breakOnReturn", "group", "code", "htmlAttributes", "text", "plaintext", "bulletList", "bullet", "listAttribute", "test", "element", "parentNode", "this", "numberList", "number", "attachmentGallery", "exclusive", "_element$tagName", "toLowerCase", "androidVersionMatch", "navigator", "userAgent", "match", "androidVersion", "parseInt", "browser$1", "composesExistingText", "recentAndroid", "samsungAndroid", "forcesObjectResizing", "supportsInputEvents", "InputEvent", "every", "prop", "prototype", "dompurify", "ADD_ATTR", "SAFE_FOR_XML", "RETURN_DOM", "lang$1", "attachFiles", "bold", "bullets", "byte", "bytes", "captionPlaceholder", "indent", "italic", "link", "numbers", "outdent", "redo", "remove", "strike", "undo", "unlink", "url", "urlPlaceholder", "GB", "KB", "MB", "PB", "TB", "sizes", "lang", "file_size_formatting", "prefix", "precision", "formatter", "concat", "base", "exp", "Math", "floor", "log", "withoutInsignificantZeros", "pow", "toFixed", "replace", "ZERO_WIDTH_SPACE", "NON_BREAKING_SPACE", "extend", "properties", "key", "value", "html", "document", "documentElement", "matches", "handleEvent", "eventName", "onElement", "matchingSelector", "withCallback", "inPhase", "preventDefault", "times", "arguments", "length", "undefined", "selector", "useCapture", "handler", "event", "destroy", "target", "findClosestElementFromNode", "call", "removeEventListener", "addEventListener", "triggerEvent", "bubbles", "cancelable", "createEvent", "initEvent", "dispatchEvent", "elementMatchesSelector", "nodeType", "node", "untilNode", "Node", "ELEMENT_NODE", "closest", "innerElementIsActive", "activeElement", "elementContainsNode", "findChildIndexOfNode", "_node", "childIndex", "previousSibling", "removeNode", "_node$parentNode", "removeChild", "walkTree", "tree", "onlyNodesOfType", "usingFilter", "expandEntityReferences", "whatToShow", "NodeFilter", "SHOW_ELEMENT", "SHOW_TEXT", "SHOW_COMMENT", "SHOW_ALL", "createTreeWalker", "makeElement", "tag", "options", "createElement", "editable", "contenteditable", "setAttribute", "style", "data", "dataset", "className", "split", "forEach", "classList", "add", "textContent", "childNodes", "childNode", "appendChild", "blockTagNames", "getBlockTagNames", "blockAttributes", "push", "nodeIsBlockContainer", "nodeIsBlockStartComment", "firstChild", "nodeIsBlockStart", "strict", "includes", "nodeIsCommentNode", "COMMENT_NODE", "nodeIsCursorTarget", "nodeIsTextNode", "trixCursorTarget", "nodeIsAttachmentElement", "nodeIsEmptyTextNode", "TEXT_NODE", "input", "level2Enabled", "getLevel", "browser", "pickFiles", "callback", "type", "multiple", "hidden", "id", "fileInputId", "files", "getElementById", "body", "click", "parser", "removeBlankTableCells", "tableCellSeparator", "tableRowSeparator", "text_attributes", "inheritable", "window", "getComputedStyle", "fontWeight", "fontStyle", "href", "groupTagName", "getAttribute", "frozen", "backgroundColor", "toolbar", "getDefaultHTML", "interval", "attachment", "attachmentCaption", "attachmentCaptionEditor", "attachmentMetadata", "attachmentMetadataContainer", "attachmentName", "attachmentProgress", "attachmentSize", "attachmentToolbar", "j", "BasicObject", "expression", "toMethod", "toProperty", "optional", "parseProxyMethodExpression", "subject", "object", "_this$toMethod", "_object", "apply", "proxyMethodExpressionPattern", "Error", "args", "Function", "RegExp", "UTF16String", "box", "fromUCS2String", "toString", "ucs2String", "ucs2decode", "codepoints", "ucs2encode", "constructor", "super", "ucs2Length", "offsetToUCS2Offset", "offset", "slice", "max", "offsetFromUCS2Offset", "ucs2Offset", "fromCodepoints", "charAt", "isEqualTo", "toJSON", "getCacheKey", "hasArrayFrom", "_Array$from", "Array", "from", "hasStringCodePointAt", "_$codePointAt", "codePointAt", "hasStringFromCodePoint", "_String$fromCodePoint", "String", "fromCodePoint", "string", "map", "char", "output", "counter", "charCodeAt", "extra", "array", "result", "fromCharCode", "join", "TrixObject", "jsonString", "fromJSON", "JSON", "hasSameConstructorAs", "inspect", "parts", "contents", "contentsForInspection", "toJSONString", "stringify", "toUTF16String", "arraysAreEqual", "a", "b", "index", "spliceArray", "_len", "_key", "splice", "RTL_PATTERN", "getDirection", "dir", "dirName", "textArea", "form", "supportsDirName", "FormData", "has", "error", "supportsDirSelector", "get", "trim", "allAttributeNames", "blockAttributeNames", "textAttributeNames", "listAttributeNames", "getAllAttributeNames", "getTextAttributeNames", "getBlockAttributeNames", "getBlockConfig", "attributeName", "config", "Object", "keys", "getTextConfig", "installDefaultCSSForTagName", "defaultCSS", "insertStyleElementForTagName", "nonce", "getCSPNonce", "head", "insertBefore", "getMetaElement", "content", "querySelector", "testTransferData", "dataTransferIsPlainText", "dataTransfer", "getData", "DOMParser", "parseFromString", "keyEventIsKeyboardCommand", "platform", "metaKey", "ctrlKey", "defer", "fn", "setTimeout", "copyObject", "objectsAreEqual", "normalizeRange", "range", "isArray", "copyValue", "rangeIsCollapsed", "start", "end", "rangeValuesAreEqual", "rangesAreEqual", "leftRange", "rightRange", "leftStart", "leftEnd", "rightStart", "rightEnd", "left", "right", "SelectionChangeObserver", "update", "bind", "selectionManagers", "started", "stop", "registerSelectionManager", "selectionManager", "unregisterSelectionManager", "filter", "sm", "notifySelectionManagersOfSelectionChange", "selectionDidChange", "reset", "selectionChangeObserver", "getDOMSelection", "selection", "getSelection", "rangeCount", "getDOMRange", "_getDOMSelection", "domRange", "getRangeAt", "domRangeIsPrivate", "setDOMRange", "removeAllRanges", "addRange", "nodeIsPrivate", "startContainer", "endContainer", "getPrototypeOf", "normalizeSpaces", "breakableWhitespacePattern", "squishBreakableWhitespace", "source", "utf16StringDifferences", "diffA", "utf16StringDifference", "utf16String", "diffB", "leftIndex", "rightIndexA", "rightIndexB", "Hash", "fromCommonAttributesOfObjects", "objects", "hash", "getKeys", "getKeysCommonToHash", "values", "copy", "merge", "unbox", "toArray", "isEmpty", "toObject", "keyToRemove", "sort", "ObjectGroup", "groupObjects", "ungroupedObjects", "depth", "asTree", "_object$canBeGrouped2", "_object$canBeGrouped", "_group$canBeGroupedWi", "_group", "canBeGrouped", "canBeGroupedWith", "getObjects", "getDepth", "ObjectMap", "find", "ElementStore", "elements", "getKey", "trixStoreKey", "Operation", "isPerforming", "performing", "hasPerformed", "performed", "hasSucceeded", "succeeded", "hasFailed", "getPromise", "promise", "Promise", "resolve", "reject", "perform", "release", "_this$promise", "_this$promise$cancel", "cancel", "proxyMethod", "ObjectView", "childViews", "rootView", "getNodes", "nodes", "createNodes", "cloneNode", "invalidate", "_this$parentView", "parentView", "invalidateViewForObject", "_this$findViewForObje", "findViewForObject", "findOrCreateCachedChildView", "viewClass", "view", "getCachedViewForObject", "recordChildView", "createChildView", "cacheViewForObject", "ObjectGroupView", "getAllChildViews", "views", "childView", "findElement", "findElementForObject", "getViewCache", "isViewCachingEnabled", "viewCache", "shouldCacheViews", "enableViewCaching", "disableViewCaching", "_this$getViewCache", "cache", "garbageCollectCachedViews", "objectKeys", "objectGroup", "getChildViews", "createContainerElement", "entries", "setPrototypeOf", "isFrozen", "getOwnPropertyDescriptor", "freeze", "seal", "create", "construct", "Reflect", "x", "fun", "thisValue", "Func", "arrayForEach", "unapply", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "arraySplice", "stringToLowerCase", "stringToString", "stringMatch", "stringReplace", "stringIndexOf", "indexOf", "stringTrim", "objectHasOwnProperty", "hasOwnProperty", "regExpTest", "typeErrorCreate", "func", "TypeError", "_len2", "_key2", "thisArg", "lastIndex", "addToSet", "set", "transformCaseFunc", "l", "lcElement", "cleanArray", "clone", "newObject", "property", "lookupGetter", "desc", "t", "e", "i", "n", "r", "o", "s", "c", "u", "h", "d", "g", "m", "p", "f", "v", "A", "y", "C", "E", "S", "R", "k", "T", "w", "L", "D", "N", "I", "O", "F", "P", "M", "B", "_", "W", "U", "V", "z", "q", "H", "J", "K", "G", "Y", "X", "$", "Z", "Q", "tt", "et", "it", "nt", "rt", "ot", "st", "at", "lt", "ct", "ut", "ht", "dt", "gt", "mt", "pt", "ft", "bt", "vt", "At", "yt", "xt", "Ct", "Et", "St", "Rt", "kt", "Tt", "wt", "Lt", "Dt", "Nt", "It", "Ot", "Ft", "Pt", "Mt", "Bt", "_t", "jt", "Wt", "Vt", "Ut", "zt", "qt", "DOMPurify", "addHook", "attrName", "forceKeepAttr", "DEFAULT_ALLOWED_ATTRIBUTES", "DEFAULT_FORBIDDEN_PROTOCOLS", "DEFAULT_FORBIDDEN_ELEMENTS", "HTMLSanitizer", "sanitizedElement", "sanitize", "sanitizedHtml", "getHTML", "outerHTML", "innerHTML", "sanitizer", "allowedAttributes", "forbiddenProtocols", "forbiddenElements", "purifyOptions", "createBodyElementForHTML", "sanitizeElements", "normalizeListElementNesting", "purifyConfig", "assign", "setConfig", "getBody", "walker", "nodesToRemove", "nextNode", "currentNode", "elementIsRemovable", "sanitizeElement", "hasAttribute", "protocol", "removeAttribute", "_ref", "querySelectorAll", "listElement", "previousElement", "previousElementSibling", "elementIsForbidden", "elementIsntSerializable", "doc", "implementation", "createHTMLDocument", "css", "AttachmentView", "uploadProgressDelegate", "attachmentPiece", "piece", "createContentNodes", "innerElement", "figure", "getClassName", "getHref", "tabindex", "hasContent", "setHTML", "getContent", "createCaptionElement", "isPending", "progressElement", "class", "getUploadProgress", "trixMutable", "createCursorTarget", "figcaption", "getCaption", "captionConfig", "getCaptionConfig", "getFilename", "getFormattedFilesize", "nameElement", "createTextNode", "sizeElement", "names", "getType", "extension", "getExtension", "trixAttachment", "trixContentType", "getContentType", "trixId", "trixAttributes", "trixSerialize", "htmlContainsTagName", "_config$attachments$t", "findProgressElement", "_this$findElement", "attachmentDidChangeUploadProgress", "div", "PreviewableAttachmentView", "previewDelegate", "image", "src", "refresh", "updateAttributesForImage", "getURL", "previewURL", "getPreviewURL", "serializedAttributes", "width", "getWidth", "height", "getHeight", "storeKey", "attachmentDidChangeAttributes", "PieceView", "getAttributes", "textConfig", "context", "createAttachmentNodes", "createStringNodes", "_element", "firstElementChild", "isPreviewable", "_this$textConfig", "iterable", "substring", "preserveSpaces", "styles", "pendingElement", "styleProperty", "isLast", "isFirst", "followsWhitespace", "TextView", "pieces", "getPieces", "endsWithWhitespace", "previousPiece", "BlockView", "block", "createComment", "_getBlockConfig", "getLastAttribute", "textView", "shouldAddExtraNewlineElement", "isRTL", "getBlockBreakPosition", "DocumentView", "render", "sync", "elementStore", "setDocument", "shadowElement", "getBlocks", "isSynced", "elementsHaveEqualHTML", "fragment", "createDocumentFragmentForSync", "lastChild", "didSync", "findStoredElements", "createDocumentFragment", "storedElement", "replaceChild", "otherElement", "ignoreSpaces", "Piece", "types", "pieceJSON", "copyWithAttributes", "getValue", "copyWithAdditionalAttributes", "copyWithoutAttribute", "attribute", "getAttributesHash", "hasSameStringValueAsPiece", "hasSameAttributesAsPiece", "isBlockBreak", "isSerializable", "getLength", "canBeConsolidatedWith", "_defineProperty", "ImagePreloadOperation", "Image", "onload", "naturalWidth", "naturalHeight", "onerror", "Attachment", "attributesForFile", "setFile", "filename", "filesize", "contentType", "attachmentJSON", "releaseFile", "didChangeAttributes", "setAttributes", "newAttributes", "_this$previewDelegate", "_this$previewDelegate2", "_this$delegate", "_this$delegate$attach", "delegate", "preloadURL", "previewablePattern", "getFilesize", "_this$getFilename$mat", "getFile", "preloadFile", "releasePreloadedFile", "uploadProgress", "setUploadProgress", "_this$uploadProgressD", "_this$uploadProgressD2", "preloadingURL", "setPreviewURL", "_this$previewDelegate3", "_this$previewDelegate4", "_this$delegate2", "_this$delegate2$attac", "attachmentDidChangePreviewURL", "preload", "fileObjectURL", "URL", "createObjectURL", "revokeObjectURL", "then", "catch", "AttachmentPiece", "ensureAttachmentExclusivelyHasAttribute", "removeProhibitedAttributes", "permittedAttributes", "_piece$attachment", "json", "toConsole", "registerType", "StringPiece", "consolidateWith", "splitAtOffset", "SplittableList", "eachObject", "insertObjectAtIndex", "insertSplittableListAtIndex", "splittableList", "insertSplittableListAtPosition", "position", "splitObjectAtPosition", "editObjectAtIndex", "replaceObjectAtIndex", "removeObjectAtIndex", "getObjectAtIndex", "getSplittableListInRange", "rightIndex", "splitObjectsAtRange", "selectSplittableList", "removeObjectsInRange", "transformObjectsInRange", "transform", "transformedObjects", "rightOuterIndex", "leftInnerIndex", "startOfRange", "endOfRange", "getObjectAtPosition", "findIndexAndOffsetAtPosition", "splitIndex", "splitOffset", "leftObject", "rightObject", "consolidate", "pendingObject", "_pendingObject$canBeC", "_pendingObject", "consolidateFromIndexToIndex", "startIndex", "endIndex", "objectsInRange", "consolidatedInRange", "currentPosition", "nextPosition", "findPositionAtIndexAndOffset", "currentIndex", "getEndPosition", "endPosition", "objectArraysAreEqual", "Text", "textJSON", "notEmpty", "pieceList", "copyWithPieceList", "copyUsingObjectMap", "objectMap", "appendText", "insertTextAtPosition", "removeTextAtRange", "replaceTextAtRange", "moveTextFromRangeToPosition", "getTextAtRange", "addAttributeAtRange", "addAttributesAtRange", "removeAttributeAtRange", "setAttributesAtRange", "getAttributesAtPosition", "_this$pieceList$getOb", "getCommonAttributes", "getCommonAttributesAtRange", "getExpandedRangeForAttributeAtOffset", "getStringAtRange", "getStringAtPosition", "startsWithString", "endsWithString", "getAttachmentPieces", "getAttachments", "getAttachmentAndPositionById", "attachmentId", "getAttachmentById", "getRangeOfAttachment", "attachmentAndPosition", "updateAttributesForAttachment", "_text$pieceList", "eachPiece", "getPieceAtPosition", "toSerializableText", "Block", "blockJSON", "applyBlockBreakToText", "copyWithText", "copyWithoutText", "copyWithoutAttributes", "mappedText", "addAttribute", "expandAttribute", "addHTMLAttribute", "removeLastValue", "removeLastAttribute", "getLastElement", "getAttributeLevel", "getAttributeAtLevel", "level", "hasAttributes", "getLastNestableAttribute", "getNestableAttributes", "getNestingLevel", "decreaseNestingLevel", "increaseNestingLevel", "getListItemAttributes", "isListItem", "isTerminalBlock", "_getBlockConfig2", "breaksOnReturn", "_getBlockConfig3", "findLineBreakInDirectionFromPosition", "direction", "newlineText", "textForStringWithAttributes", "getTextWithoutBlockBreak", "textEndsInBlockBreak", "otherBlock", "otherAttributes", "otherAttribute", "getListAttributeNames", "unmarkExistingInnerBlockBreaksInText", "addBlockBreakToText", "modified", "innerPieces", "lastPiece", "unmarkBlockBreakPiece", "blockBreakText", "blockBreak", "Document", "documentJSON", "textAttributes", "blocks", "blockList", "getBlockAtIndex", "consolidateBlocks", "copyUsingObjectsFromDocument", "sourceDocument", "copyWithBaseBlockAttributes", "replaceBlock", "oldBlock", "newBlock", "insertDocumentAtRange", "locationFromPosition", "getBlockAtPosition", "mergeDocumentAtRange", "formattedDocument", "startPosition", "startLocation", "baseBlockAttributes", "getBaseBlockAttributes", "trailingBlockAttributes", "leadingBlockAttributes", "blockCount", "getBlockCount", "firstBlock", "firstText", "insertTextAtRange", "leftPosition", "rightPosition", "leftLocation", "rightLocation", "locationRangeFromRange", "leftOffset", "leftBlock", "rightOffset", "rightBlock", "leftText", "rightText", "affectedBlockCount", "getDocumentAtRange", "movingRightward", "eachBlockAtRange", "textRange", "eachBlock", "getTextAtIndex", "removeAttributeForAttachment", "setHTMLAttributeAtPosition", "updatedBlock", "insertBlockBreakAtRange", "applyBlockAttributeAtRange", "expanded", "expandRangeToLineBreaksAndSplitBlocks", "blockConfig", "removeLastListAttributeAtRange", "exceptAttributeName", "converted", "convertLineBreaksToBlockBreaksInRange", "removeBlockAttributesAtRange", "removeLastTerminalAttributeAtRange", "consolidateBlocksAtRange", "lastAttributeName", "endLocation", "startBlock", "positionFromLocation", "endBlock", "_this$getBlockAtIndex", "getTextAtPosition", "getCharacterAtPosition", "getEditCount", "editCount", "getCommonAttributesAtPosition", "attributesForBlock", "commonAttributes", "attributesLeft", "inheritableAttributes", "getRangeOfCommonAttributeAtPosition", "startOffset", "endOffset", "blockIndex", "lastAttributeIndex", "min", "attachmentPieces", "getLocationRangeOfAttachment", "getAttachmentPieceForAttachment", "findRangesForBlockAttribute", "ranges", "findRangesForTextAttribute", "withValue", "location", "locationRangeFromPosition", "rangeFromLocationRange", "locationRange", "getTexts", "toSerializableDocument", "pieceForString", "parseTrixDataAttribute", "HTMLParser", "referenceElement", "blockElements", "processedElements", "getDocument", "createHiddenContainer", "containerElement", "nodeFilter", "processNode", "translateBlockElementMarginsToNewlines", "removeHiddenContainer", "display", "nextSibling", "isInsignificantTextNode", "appendBlockForTextNode", "processTextNode", "appendBlockForElement", "processElement", "currentBlockElement", "isBlockElement", "appendStringWithAttributes", "_this$currentBlock", "getBlockAttributes", "getBlockHTMLAttributes", "currentBlock", "appendBlockForAttributesWithElement", "elementIsBlockElement", "currentBlockContainsElement", "parentBlockElement", "findParentBlockElement", "appendEmptyBlock", "parentElement", "_node$previousSibling", "elementCanDisplayPreformattedText", "stringEndsWithWhitespace", "leftTrimBreakableWhitespace", "getTextAttributes", "appendAttachmentWithAttributes", "isExtraBR", "dimensions", "needsTableSeparator", "appendPiece", "appendStringToTextAtIndex", "prependStringToTextAtIndex", "unshift", "configAttr", "attributeInheritedFromBlock", "blockElement", "findBlockElementAncestors", "attrConfig", "_attrConfig$test", "reverse", "settings", "ancestors", "stringIsAllBreakableWhitespace", "nodeEndsWithNonWhitespace", "_element$previousSibl", "defaultMargin", "getMarginOfDefaultBlockElement", "margin", "getMarginOfBlockElementAtIndex", "top", "bottom", "getBlockElementMargin", "whiteSpace", "marginTop", "marginBottom", "FILTER_REJECT", "FILTER_ACCEPT", "unserializableAttributeNames", "serializedAttributesAttribute", "serializedAttributesSelector", "blockCommentPattern", "serializers", "serializable", "HTMLElement", "el", "ManagedAttachment", "attachmentManager", "requestRemovalOfAttachment", "AttachmentManager", "managedAttachments", "manageAttachment", "attachmentIsManaged", "attachmentManagerDidRequestRemovalOfAttachment", "unmanageAttachment", "managedAttachment", "LineBreakInsertion", "composition", "selectedRange", "getSelectedRange", "previousCharacter", "nextCharacter", "shouldInsertBlockBreak", "shouldBreakFormattedBlock", "shouldDecreaseListLevel", "shouldPrependListItem", "shouldRemoveLastBlockAttribute", "Composition", "currentAttributes", "revision", "_this$delegate$compos", "refreshAttachments", "compositionDidChangeDocument", "getSnapshot", "loadSnapshot", "_this$delegate2$compo", "_this$delegate3", "_this$delegate3$compo", "compositionWillLoadSnapshot", "setSelection", "compositionDidLoadSnapshot", "insertText", "updatePosition", "notifyDelegateOfInsertionAtRange", "insertBlock", "insertDocument", "insertString", "getCurrentTextAttributes", "insertBlockBreak", "insertLineBreak", "insertion", "decreaseListLevel", "removeLastBlockAttribute", "breakFormattedBlock", "insertHTML", "replaceHTML", "getLocationRange", "insertFile", "insertFiles", "_this$delegate4", "compositionShouldAcceptFile", "attachmentForFile", "insertAttachments", "insertAttachment", "attachmentText", "textForAttachmentWithAttributes", "shouldManageDeletingInDirection", "shouldManageMovingCursorInDirection", "deleteInDirection", "deletingIntoPreviousBlock", "selectionSpansBlocks", "selectionIsCollapsed", "canDecreaseBlockAttributeLevel", "getBlock", "decreaseBlockAttributeLevel", "getExpandedRangeInDirection", "getAttachmentAtRange", "editAttachment", "moveTextFromRange", "removeAttachment", "stopEditingAttachment", "removeCurrentAttribute", "insertPlaceholder", "placeholderPosition", "getPosition", "selectPlaceholder", "setSelectedRange", "PLACEHOLDER", "forgetPlaceholder", "hasCurrentAttribute", "toggleCurrentAttribute", "setCurrentAttribute", "canSetCurrentAttribute", "canSetCurrentBlockAttribute", "canSetCurrentTextAttribute", "getSelectedDocument", "setBlockAttribute", "setTextAttribute", "notifyDelegateOfCurrentAttributesChange", "setHTMLAtributeAtPosition", "allowedHTMLAttributes", "newDocument", "removeBlockAttribute", "updateCurrentAttributes", "removeTextAttribute", "canDecreaseNestingLevel", "_this$getBlock", "canIncreaseNestingLevel", "previousBlock", "getPreviousBlock", "_this$getBlock2", "_this$getBlock3", "attributeLevel", "ignoreLock", "getCurrentAttributes", "freezeSelection", "thawSelection", "hasFrozenSelection", "_this$delegate5", "compositionDidRequestChangingSelectionToLocationRange", "getSelectionManager", "setLocationRange", "targetLocationRange", "withTargetLocationRange", "withTargetRange", "withTargetDOMRange", "createLocationRangeFromDOMRange", "translateUTF16PositionFromOffset", "editingAttachment", "moveCursorInDirection", "canEditAttachment", "expandSelectionInDirection", "expandSelectionForEditing", "expandSelectionAroundCommonAttribute", "selectionContainsAttachments", "_this$getSelectedAtta", "getSelectedAttachments", "selectionIsInCursorTarget", "positionIsCursorTarget", "locationIsCursorTarget", "positionIsBlockBreak", "_this$document$getPie", "_this$getSelectedDocu", "added", "removed", "oldArray", "newArray", "existingValues", "Set", "currentValues", "_this$delegate6", "_this$delegate6$compo", "compositionDidRemoveAttachment", "_this$delegate7", "_this$delegate7$compo", "compositionDidAddAttachment", "_this$delegate8", "_this$delegate8$compo", "compositionDidEditAttachment", "_this$delegate9", "_this$delegate9$compo", "compositionDidChangeAttachmentPreviewURL", "_this$delegate10", "_this$delegate10$comp", "compositionDidStartEditingAttachment", "_this$delegate11", "_this$delegate11$comp", "compositionDidStopEditingAttachment", "_this$delegate12", "_this$delegate12$comp", "compositionDidChangeCurrentAttributes", "_this$delegate13", "_this$delegate13$comp", "compositionDidPerformInsertionAtRange", "utf16string", "utf16position", "UndoManager", "undoEntries", "redoEntries", "recordUndoEntry", "description", "consolidatable", "previousEntry", "entryHasDescriptionAndContext", "undoEntry", "createEntry", "redoEntry", "snapshot", "canUndo", "canRedo", "entry", "BLOCK_ATTRIBUTE_NAME", "Filter", "applyBlockAttribute", "findRangesOfBlocks", "findRangesOfPieces", "moveSelectedRangeForward", "attachmentGalleryFilter", "DEFAULT_FILTERS", "Editor", "undoManager", "filters", "loadDocument", "loadHTML", "loadJSON", "getClientRectAtPosition", "getClientRectAtLocationRange", "activateAttribute", "attributeIsActive", "canActivateAttribute", "deactivateAttribute", "LocationMapper", "findLocationFromContainerAndOffset", "container", "foundBlock", "attachmentElement", "findAttachmentElementParentForNode", "rejectAttachmentContents", "nodeLength", "findContainerAndOffsetFromLocation", "nodeOffset", "findNodeAndOffsetFromLocation", "getSignificantNodesForIndex", "acceptSignificantNodes", "recordingNodes", "rejectEmptyTextNodes", "PointMapper", "createDOMRangeFromPoint", "caretPositionFromPoint", "offsetNode", "createRange", "setStart", "caretRangeFromPoint", "createTextRange", "originalDOMRange", "moveToPoint", "select", "getClientRectsForDOMRange", "getClientRects", "SelectionManager", "didMouseDown", "locationMapper", "pointMapper", "lockCount", "currentLocationRange", "lockedLocationRange", "createDOMRangeFromLocationRange", "updateCurrentLocationRange", "setLocationRangeFromPointRange", "pointRange", "getLocationAtPoint", "lock", "unlock", "clearSelection", "_getDOMRange", "collapsed", "selectionIsExpanded", "domRangeWithinElement", "pauseTemporarily", "resumeHandlers", "paused", "resume", "clearTimeout", "resumeTimeout", "_this$delegate$locati", "locationRangeDidChange", "rangeStart", "rangeEnd", "setEnd", "point", "_this$createLocationR", "keyNames", "undoable", "commands", "do", "undos", "AttachmentEditorController", "title", "trixAction", "didClickToolbar", "didClickActionButton", "textarea", "placeholder", "textareaClone", "tabIndex", "autoresize", "scrollHeight", "didInputCaption", "didKeyDownCaption", "didChangeCaption", "didBlurCaption", "editingFigcaption", "editCaption", "focus", "install", "makeElementMutable", "addToolbar", "installCaptionEditor", "uninstall", "savePendingCaption", "didUninstallAttachmentEditor", "pendingCaption", "_this$delegate3$attac", "attachmentEditorDidRequestUpdatingAttributesForAttachment", "attachmentEditorDidRequestRemovingAttributeForAttachment", "stopPropagation", "attachmentEditorDidRequestRemovalOfAttachment", "_this$delegate5$attac", "keyCode", "attachmentEditorDidRequestDeselectingAttachment", "CompositionController", "didFocus", "didBlur", "didClickAttachment", "documentView", "_this$blurPromise", "focused", "compositionControllerDidFocus", "blurPromise", "compositionControllerDidBlur", "findAttachmentForElement", "compositionControllerDidSelectAttachment", "getSerializableElement", "isEditingAttachment", "_this$delegate4$compo", "_this$delegate5$compo", "canSyncDocumentView", "compositionControllerWillSyncDocumentView", "compositionControllerDidSyncDocumentView", "compositionControllerDidRender", "rerenderViewForObject", "refreshViewCache", "attachmentEditor", "installAttachmentEditorForAttachment", "_this$attachmentEdito", "uninstallAttachmentEditor", "_this$attachmentEdito2", "compositionControllerWillUpdateAttachment", "compositionControllerDidRequestRemovalOfAttachment", "compositionControllerDidRequestDeselectingAttachment", "Controller", "mutableAttributeName", "mutableSelector", "childList", "characterData", "characterDataOldValue", "subtree", "MutationObserver", "didMutate", "observer", "observe", "disconnect", "mutations", "_this$delegate$elemen", "findSignificantMutations", "elementDidMutate", "getMutationSummary", "mutation", "mutationIsSignificant", "nodeIsMutable", "nodesModifiedByMutation", "nodeIsSignificant", "addedNodes", "removedNodes", "getTextMutationSummary", "additions", "deletions", "getTextChangesFromCharacterData", "textChanges", "getTextChangesFromChildList", "addition", "summary", "textAdded", "deleted", "textDeleted", "getMutationsByType", "textRemoved", "getTextForNodes", "characterMutations", "startMutation", "endMutation", "summarized", "oldString", "newString", "oldValue", "FileVerificationOperation", "reader", "FileReader", "abort", "readAsArrayBuffer", "FlakyAndroidKeyboardDetector", "shouldIgnore", "previousEvent", "checkSamsungKeyboardBuggyModeStart", "checkSamsungKeyboardBuggyModeEnd", "buggyMode", "insertingLongTextAfterUnidentifiedChar", "differsInWhitespace", "innerText", "inputType", "_this$event$data", "isBeforeInputInsertText", "previousEventWasUnidentifiedKeydown", "_this$previousEvent", "_this$previousEvent2", "text1", "text2", "normalize", "whiteSpaceNormalizerRegexp", "InputController", "mutationObserver", "flakyKeyboardDetector", "events", "handlerFor", "mutationSummary", "editorWillSyncDocumentView", "editorDidSyncDocumentView", "requestRender", "_this$delegate$inputC", "inputControllerDidRequestRender", "requestReparse", "_this$delegate2$input", "inputControllerDidRequestReparse", "operations", "all", "handleInput", "_this$responder", "inputControllerWillAttachFiles", "responder", "defaultPrevented", "inputControllerWillHandleInput", "inputControllerDidHandleInput", "createLinkHTML", "pastedFileCount", "Level0InputController", "resetInputSummary", "setInputSummary", "inputSummary", "isComposing", "inputControllerDidAllowUnhandledInput", "mutationIsExpected", "preferDocument", "mutationAdditionMatchesSummary", "mutationDeletionMatchesSummary", "didDelete", "unexpectedNewlineAddition", "unexpectedNewlineDeletion", "_this$compositionInpu", "textChanged", "composedEmptyString", "compositionInput", "getEndData", "getCompositionInput", "CompositionInput", "isEnded", "_this$responder2", "serializeSelectionToDataTransfer", "_this$responder3", "setData", "canAcceptDataTransfer", "Files", "getPastedHTMLUsingHiddenElement", "pageXOffset", "pageYOffset", "opacity", "requestAnimationFrame", "keydown", "didInput", "keyName", "_context2", "modifier", "_context", "character", "inputControllerDidReceiveKeyboardCommand", "keypress", "altKey", "stringFromKeyEvent", "_this$responder9", "inputControllerWillPerformTyping", "textInput", "toUpperCase", "_this$responder10", "dragenter", "dragstart", "_this$delegate5$input", "draggedRange", "inputControllerDidStartDrag", "dragover", "draggingPoint", "clientX", "clientY", "_this$delegate6$input", "inputControllerDidReceiveDragOverPoint", "dragend", "_this$delegate7$input", "inputControllerDidCancelDrag", "drop", "_event$dataTransfer", "_this$responder11", "_this$responder12", "inputControllerWillMoveText", "_this$responder13", "fromJSONString", "cut", "_this$responder14", "clipboardData", "inputControllerWillCutText", "_this$responder15", "paste", "clipboard", "testClipboardData", "pasteEventIsCrippledSafariHTMLPaste", "_this$responder16", "inputControllerWillPaste", "inputControllerDidPaste", "_this$responder17", "_this$delegate14", "_this$responder18", "_this$delegate15", "_this$delegate16", "_this$responder19", "_this$delegate17", "_clipboard$items", "_clipboard$items$getA", "items", "getAsFile", "_this$delegate18", "_this$responder20", "_this$delegate19", "extensionForFile", "compositionstart", "compositionupdate", "compositionend", "beforeinput", "backspace", "_this$delegate20", "delete", "_this$delegate21", "return", "_this$delegate22", "_this$responder21", "tab", "_this$responder22", "_this$responder23", "_this$responder24", "_this$responder25", "control", "_this$delegate23", "_this$delegate24", "_this$delegate25", "_this$responder26", "shift", "_this$delegate26", "_this$responder27", "_this$responder28", "_this$responder29", "alt", "_this$delegate27", "meta", "_this$delegate28", "_file$type", "which", "charCode", "hasPasteboardFlavor", "hasReadableDynamicData", "isExternalHTMLPaste", "isExternalRichTextPaste", "inputController", "isSignificant", "_this$responder5", "_this$responder4", "canApplyToDocument", "_this$responder6", "_this$responder7", "_this$responder8", "_this$data$start", "_this$data$end", "Level2InputController", "scheduledRender", "composing", "reparse", "scheduleRender", "_this$afterRender", "cancelAnimationFrame", "afterRender", "toggleAttributeIfSupported", "inputControllerWillPerformFormatting", "activateAttributeIfSupported", "getTargetDOMRange", "minLength", "_this$event$getTarget", "_this$event", "targetRanges", "getTargetRanges", "staticRangeToRange", "withEvent", "command", "keyboardCommandFromKeyEvent", "shiftKey", "_event$clipboardData", "pasteEventHasFilesOnly", "pasteEventHasPlainTextOnly", "inputTypes", "immmediateRender", "inputEvent", "dragging", "pointFromEvent", "dragEventHasFiles", "ArrowLeft", "ArrowRight", "Backspace", "Tab", "deleteByComposition", "deleteByCut", "deleteByDrag", "deleteByDragRange", "deleteCompositionText", "deleteContent", "deleteContentBackward", "deleteContentForward", "deleteEntireSoftLine", "deleteHardLineBackward", "deleteHardLineForward", "deleteSoftLineBackward", "deleteSoftLineForward", "deleteWordBackward", "deleteWordForward", "formatBackColor", "formatBold", "formatFontColor", "formatFontName", "formatIndent", "formatItalic", "formatJustifyCenter", "formatJustifyFull", "formatJustifyLeft", "formatJustifyRight", "formatOutdent", "formatRemove", "_this$responder30", "formatSetBlockTextDirection", "formatSetInlineTextDirection", "formatStrikeThrough", "formatSubscript", "formatSuperscript", "formatUnderline", "historyRedo", "inputControllerWillPerformRedo", "historyUndo", "inputControllerWillPerformUndo", "insertCompositionText", "insertFromComposition", "insertFromDrop", "_this$responder31", "insertFromPaste", "_this$responder32", "_this$responder33", "processableFilePaste", "_this$responder34", "_this$responder35", "insertFromYank", "insertLink", "insertOrderedList", "insertParagraph", "_this$responder36", "insertReplacementText", "replacement", "_this$event$dataTrans", "insertTranspose", "insertUnorderedList", "staticRange", "_event$dataTransfer$f", "attributeButtonSelector", "actionButtonSelector", "toolbarButtonSelector", "dialogSelector", "activeDialogSelector", "dialogButtonSelector", "dialogInputSelector", "getInputForDialog", "getAttributeName", "getActionName", "ToolbarController", "didClickAttributeButton", "didClickDialogButton", "didKeyDownDialogInput", "actions", "resetDialogInputs", "toolbarDidClickButton", "actionName", "getDialog", "toggleDialog", "toolbarDidInvokeAction", "toolbarDidToggleAttribute", "refreshAttributeButtons", "dialogElement", "dialog", "hideDialog", "updateActions", "refreshActionButtons", "eachActionButton", "disabled", "updateAttributes", "eachAttributeButton", "dialogIsVisible", "applyKeyboardCommand", "keyString", "button", "buttonKeys", "dialogName", "showDialog", "toolbarWillShowDialog", "disabledInput", "toolbarDidShowDialog", "willValidate", "setCustomValidity", "checkValidity", "isSafeAttribute", "toolbarDidUpdateAttribute", "isValidAttribute", "toolbarDidRemoveAttribute", "toolbarDidHideDialog", "EditorController", "editorElement", "compositionController", "toolbarController", "toolbarElement", "editor", "notifyEditorElement", "handlingInput", "updateCurrentActions", "pasting", "pastedRange", "attachmentLocationRange", "loadingSnapshot", "isFocused", "requestedLocationRange", "compositionRevisionWhenLocationRangeRequested", "renderedCompositionRevision", "runEditorFilters", "isFocusedInvisibly", "requestedRender", "recordTypingUndoEntry", "recordFormattingUndoEntry", "locationRangeBeforeDrag", "invokingElement", "invokeAction", "selectionFrozen", "canInvokeAction", "actionIsExternal", "_this$actions$actionN", "_this$actions$actionN2", "getCurrentActions", "currentActions", "snapshotsAreEqual", "updateInputElement", "serializer", "setFormValue", "message", "documentChangedSinceLastRender", "notify", "getUndoContext", "getLocationContext", "getTimeContext", "Date", "getTime", "_this$editorElement$o", "ownerDocument", "TrixToolbarElement", "connectedCallback", "makeEditable", "configureContentEditable", "disableObjectResizing", "setDefaultParagraphSeparator", "_document$queryComman", "_document", "queryCommandSupported", "execCommand", "_document$queryComman2", "_document2", "cursorTargetStyles", "_internals", "WeakMap", "_validate", "WeakSet", "ElementInternalsDelegate", "_classPrivateFieldInitSpec", "writable", "_classPrivateFieldSet", "attachInternals", "_classPrivateMethodGet", "_validate2", "disconnectedCallback", "labels", "_classPrivateFieldGet", "_this$element$inputEl", "inputElement", "toggleAttribute", "required", "validity", "validationMessage", "reportValidity", "customValidationMessage", "valueMissing", "customError", "setValidity", "_focusHandler", "_resetBubbled", "_clickBubbled", "LegacyDelegate", "contains", "label", "texts", "_classPrivateFieldGet2", "console", "warn", "_delegate", "TrixEditorElement", "formAssociated", "localName", "_this$ownerDocument", "toolbarId", "internalToolbar", "_this$inputElement", "_this$ownerDocument2", "inputId", "nextElementSibling", "_this$editorControlle", "editorController", "_this$inputElement2", "_this$inputElement3", "defaultValue", "_this$editor", "attributeChangedCallback", "newValue", "isConnected", "reconnect", "_this$editorControlle2", "removeInternalToolbar", "_this$internalToolbar", "formDisabledCallback", "formResetCallback", "Trix", "VERSION", "version", "core", "models", "controllers", "observers", "customElements", "define", "x", "k", "a", "b", "c", "d", "s", "i", "n", "hi", "j", "hex", "from", "to", "SparkMD5", "callback", "event", "start", "elements", "toArray", "dispatchEvent", "error", "controllers", "ApexCharts", "a", "i", "e", "at", "color"]
}
